Está en la página 1de 3214

Manual de PHP

Mehdi Achour
Friedhelm Betz
Antony Dovgal
Nuno Lopes
Philip Olson
Georg Richter
Damien eguy
!a"u# $rana
% otros muchos
Editado por
Ga#or &o'tsy
Ra(ael Mart)nez
Angela Pardo
Federico Finos
Pa#lo Daniel Rigazzi
Ro#ert *nchez
Leonardo Boshell
!avier +guiluz Perez
!avier ,ac-n .glesias
+nri/ue Garcia Briones
0123020334
5opyright 6 033720338 por el Grupo de documentaci-n de P&P
Copyright
6 5opyright 199: 2 0338 por el Grupo de documentaci-n de P&P; +ste manual puede ser
distri#uido solamente #a'o los t<rminos y condiciones de(inidos en la =Licencia de Pu#licaci-n
A#ierta= >Open Pu#lication License? version 1;3 - posterior; @na copia de la Licencia de
Pu#licaci-n A#ierta es distri#uida con este manualA la Bltima versi-n se encuentra disponi#le en
httpCDDEEE;opencontent;orgDopenpu#D;
La distri#uci-n de versiones modi(icadas de este documento est* prohi#ida sin el permiso eFpl)cito
del titular de este copyright;
La distri#uci-n de la documentaci-n - cual/uier derivado de la mismaA en cual/uier tipo de (ormato
escritoA est* prohi#ido a menos /ue se o#tenga permiso del titular de este copyright;
i estais interesados en redistri#uir o pu#licar este documento en parte o completoA y teneis
preguntas so#re elloA ponerse en contacto con los titulares de los derechos en doc2
licenseGlists;php;net; +sta direccion pertenece a una lista de correo y se archivaA siendo el acceso
pu#lico;
La secci-n H+Ftendiendo P&P 8;3H de este manual es copyright 6 0333 por Iend ,echnologiesA Ltd;
+sta secci-n puede ser distri#uida solamente #a'o los t<rminos y condiciones de la =Licencia de
Pu#licaci-n A#ierta=A versi-n 1;3 - posterior >la Bltima versi-n se encuentra disponi#le en
httpCDDEEE;opencontent;orgDopenpu#D?;
Tabla de contenidos
Pre(acio
Autores y cola#oradores
.; 5onceptos #*sicos
1; .ntroducci-n
0; @na eFplicaci-n sencilla
..; .nstalaci-n y con(iguraci-n
7; 5onsideraciones generales de instalaci-n
8; .nstallation on @niF systems
4; .nstallation on Mac O J
K; .nstallation on LindoEs systems
:; .nstallation o( P+5L eFtensions
M; Pro#lemasN
9; 5on(iguraci-n del comportamiento de P&P
...; Re(erencia del lengua'e
13; intaFis #*sica
11; ,ipos
10; $aria#les
17; 5onstantes
18; +Fpresiones
14; Operadores
1K; +structuras de 5ontrol
1:; Funciones
1M; 5lases y O#'etos >P&P 8?
19; 5lases y O#'etos >P&P 4?
03; +Fcepciones
01; +Fplicando las Re(erencias
.$; eguridad
00; .ntroducci-n
07; 5onsideraciones generales
08; .nstalaci-n como un #inario 5G.
04; .nstalaci-n como m-dulo de Apache
0K; eguridad del sistema de archivos
0:; eguridad de Bases de Datos
0M; Reporte de +rrores
09; @so de Register Glo#als
73; Datos +nviados por el @suario
71; Magic Ouotes
70; Ocultando P&P
77; Mantenerse al D)a
$; 5aracter)sticas
78; Autenti(icaci-n &,,P con P&P
74; 5oo"ies
7K; essions
7:; Mane'o de JForms
7M; Mane'o de env)o de archivos
79; @sando archivos remotos
83; Mane'ando coneFiones
81; 5oneFiones persistentes a #ases de datos
80; Modo eguro >a(e Mode?
87; @sando P&P desde la l)nea de comando
$.; Re(erencia de (unciones
.; Funciones espec)(icas de Apache
..; Advanced P&P de#ugger
...; Funciones de matrices
.$; Funciones Aspell PdeprecatedQ
$; Funciones matem*ticas de precisi-n ar#itraria B5Math
$.; P&P #ytecode 5ompiler
$..; Funciones de compresi-n Bzip0
$...; Funciones de calendario
.J; Funciones del AP. de 55$
J; 5lass"it Functions
J.; Funciones de 5lasesDO#'etos
J..; Funciones 5OM y ;Net >LindoEs?
J...; Funciones 5li#PDF
J.$; 5rac" Functions
J$; Funciones de ,ipo de 5aracter
J$.; Funciones 5@RL >5lient @RL Li#rary?
J$..; Funciones de pago electr-nico
J$...; 5yrus .MAP administration Functions
J.J; Funciones de Fecha y &ora
JJ; Funciones de la capa de a#straccion de #ases de datos >d#m2style?
JJ.; Funciones para dBase
JJ..; Funciones DBM Functions Po#soletasQ
JJ...; DBRR Functions
JJ.$; d#F Functions
JJ$; Funciones de acceso directo a +D
JJ$.; Funciones de Directorio
JJ$..; DOM Functions
JJ$...; Funciones DOM JML
JJ.J; ;N+, Functions
JJJ; Funciones de Gesti-n de +rrores y Registros
JJJ.; Funciones de +'ecuci-n de Programas
JJJ..; +Fi( Functions
JJJ...; File Alteration Monitor Functions
JJJ.$; FrontBase Functions
JJJ$; Funciones del Formato de Datos de Formulario
JJJ$.; Funciones (ilePro
JJJ$..; Funciones del istema de Archivos
JJJ$...; FriBiDi Functions
JJJ.J; Funciones F,P
JL; Funciones de Gesti-n de Funciones
JL.; GetteFt
JL..; GMP Functions
JL...; Funciones &,,P
JL.$; Funciones para &yperEave
JL$; &yperEave AP. Functions
JL$.; Funciones .nterBase
JL$..; Funciones .5AP Po#soletasQ
JL$...; Funciones iconv
JL.J; .D7 Functions
L; Funciones de .n(ormiF
L.; .. Administration Functions
L..; Funciones para im*genes
L...; Funciones .MAPA POP7 y NN,P
L.$; Opciones e .n(ormaci-n de P&P
L$; .ngres .. (unctions
L$.; .R5 GateEay Functions
L$..; .ntegraci-n de !ava y P&P
L$...; Funciones LDAP
L.J; li#Fml Functions
LJ; LIF Functions
LJ.; Funciones de 5orreo
LJ..; Funciones mailparse
LJ...; Funciones matem*ticas
LJ.$; MaFDB P&P +Ftension
LJ$; Multi#yte tring Functions
LJ$.; M5AL (unctions
LJ$..; Funciones de 5i(rado Mcrypt
LJ$...; M5$+ Payment Functions
LJ.J; Memcache Functions
LJJ; Funciones Mhash
LJJ.; Funciones Mimetype
LJJ..; Ming (unctions (or Flash
LJJ...; Funciones de Miscel*nea
LJJ.$; mnoGoearch Functions
LJJ$; MohaE" o(tEare ession &andler Functions
LJJ$.; Funciones mOL
LJJ$..; Funciones de Microso(t OL erver
LJJ$...; muscat Functions
LJJ.J; Funciones MyOL
LJJJ; +Ftensi-n me'orada de MyOL
LJJJ.; Funciones de 5ontrol de Pantalla con ,erminal Ncurses
LJJJ..; Funciones de Red
LJJJ...; N. (unciona
LJJJ.$; Lotus Notes Functions
LJJJ$; NAP.2speci(ic Functions
LJJJ$.; O#'ect AggregationD5omposition Functions
LJJJ$..; Funciones de Oracle M
LJJJ$...; OpenAL Audio Bindings
LJJJ.J; OpenL Functions
J5; Funciones Oracle
J5.; Funciones de 5ontrol de alida
J5..; O#'ect property and method call overloading
J5...; Ovrimos OL (unctions
J5.$; Parse"it Functions
J5$; Funciones de 5ontrol de Procesos
J5$.; Funciones de +Fpresiones Regulares >5ompati#les con Perl?
J5$..; Funciones PDF
J5$...; PDO Functions
J5.J; $erisign Pay(loE Pro (unctions
5; Funciones PostgreOL
5.; Funciones PO.J
5..; Printer Functions
5...; Pspell Functions
5.$; /tdom Functions
5$; Rar Functions
5$.; GN@ Readline
5$..; Funciones GN@ Recode
5$...; Funciones de +Fpresiones Regulares >PO.J +Ftendido?
5.J; Funciones em*(oro y de memoria compartida
5J; +AM data#ase (unctions
5J.; Funciones para el mane'o de sesiones
5J..; Funciones de Memoria 5ompartida
5J...; impleJML (unctions
5J.$; Funciones NMP
5J$; OAP Functions
5J$.; Funciones de oc"et
5J$..; tandard P&P Li#rary >PL? Functions
5J$...; OLite Functions
5J.J; ecure hell0 Functions
5JJ; Funciones de ecuencias
5JJ.; Funciones de 5adenas
5JJ..; hoc"Eave Flash (unctions
5JJ...; Funciones de y#ase
5JJ.$; ,5P Lrappers Functions
5JJ$; ,idy Functions
5JJ$.; ,o"enizer Functions
5JJ$..; ODB5 (unctions
5JJ$...; Funciones de @RL
5JJ.J; Funciones de $aria#les
5JJJ; vpopmail Functions
5JJJ.; L70api Functions
5JJJ..; Funciones LDDJ
5JJJ...; Fattr Functions
5JJJ.$; Fdi(( Functions
5JJJ$; Funciones de int<rprete JML
5JJJ$.; JML2RP5 Functions
5JJJ$..; JL (unctions
5JJJ$...; JL, (unctions
5JJJ.J; %AI
5JL; Funciones de mane'o de archivos Iip >s-lo lectura?
5JL.; Funciones de 5ompresi-n Ili#
$..; Iend AP.
88; OvervieE
84; +Ftension Possi#ilities
8K; ource Layout
8:; P&PHs Automatic Build ystem
8M; 5reating +Ftensions
89; @sing +Ftensions
43; ,rou#leshooting
41; ource Discussion
40; Accepting Arguments
47; 5reating $aria#les
48; Duplicating $aria#le 5ontentsC ,he 5opy 5onstructor
44; Returning $alues
4K; Printing .n(ormation
4:; tartup and hutdoEn Functions
4M; 5alling @ser Functions
49; .nitialization File upport
K3; Lhere to Go (rom &ere
K1; Re(erenceC ome 5on(iguration Macros
K0; AP. Macros
$...; P&P AP.C .nter(aces para autores de eFtensiones
K7; AP. de ecuencia para Autores de +Ftensiones P&P
.J; FAOC Preguntas (recuentes
K8; General .n(ormation
K4; Listas de correo
KK; O#tenci-n de P&P
K:; Data#ase issues
KM; .nstalaci-n
K9; Build Pro#lems
:3; @so de P&P
:1; P&P and &,ML
:0; P&P and 5OM
:7; P&P y otros lengua'es
:8; Migraci-n de P&P 0 a P&P 7
:4; Migraci-n de P&P 7 a P&P 8
:K; Migrating (rom P&P 8 to P&P 4
::; Preguntas $arias
J; Ap<ndices
A; &istoria de P&P y proyectos relacionados
B; Migraci-n desde P&P 8 a P&P 4
5; Migraci-n de P&P 7 a P&P 8
D; Migraci-n desde P&PDF. 0 hacia P&P 7
+; Depuraci-n en P&P
F; +Ftensi-n de P&P 7
G; Opciones de con(iguraci-n
&; Directivas de php.ini
.; Lista de alias de (unciones
!; Lista de Pala#ras Reservadas
S; Lista de ,ipos de Recurso
L; Lista de ProtocolosD+nvolturas oportadas
M; Lista de Filtros Disponi#les
N; Lista de ,ransportes de oc"ets oportados
O; ,a#las de comparaci-n de tipos P&P
P; Lista de .denti(icadores >to"ens? del Analizador
O; o#re el manual
R; Open Pu#lication License
; Tndice de (unciones
,; Material /ue (alta
Prefacio
P&PA acr-nimo de =P&PC &yperteFt Preprocessor=A es un lengua'e =Open ource=
interpretado de alto nivelA especialmente pensado para desarrollos Ee# y el cual puede
ser em#e#ido en p*ginas &,ML; La mayor)a de su sintaFis es similar a 5A !ava y Perl y
es (*cil de aprender; La meta de este lengua'e es permitir escri#ir a los creadores de
p*ginas Ee#A p*ginas din*micas de una manera r*pida y (*cilA aun/ue se pueda hacer
mucho m*s con P&P;
+ste manual contiene principalmente una re(erencia de (unciones P&PA tam#ien contiene una
re(erencia del lengua'eA eFplicaciones de caracteristicas importantes de P&P y alguna in(ormaci-n
suplementaria;
+ste manual se puede conseguir en di(erentes (ormatos en httpCDDEEE;php;netDdocs;php; M*s
in(ormaci-n so#re como este manual es desarrollado puede encontrarse en el ap<ndice Ho#re este
manualH; i estais interesados en la &istoria de P&PA visitar el cap)tulo correspondiente;
Autores y colaboradores
Actualmente presentamos a los cola#oradores mas activos en la portada del manual; +sto no /uiere
decir /ue no eFistan mas cola#oradores /ue tam#ien tra#a'an en el manual o /ue hayan ayudado de
manera activa en un pasado; +Fisten tam#ien muchas personas /ue ayudan con sus notas de
usuarios a los cuales le estamos in(initamente agradecidos; ,odas las listas estan en orden
al(a#etico;
Autores y editores
Los siguientes cola#oradores han ayudado - ayudan de manera muy activa en la creaci-n de
contenidos para el manualC !ouni AhtoA AleFander Aul#achA Daniel Bec"hamA tig Ba""enA !esus
M; 5astagnettoA Ron 5hmaraA !ohn 5oggeshallA imone 5ortesiA Mar"us FischerA Lez FurlongA
ara GolemonA Rui &iro"aEaA Brad &ouseA Moriyoshi SoizumiA Rasmus Lerdor(A AndreE
LindemanA tanislav MalyshevA Ra(ael MartinezA %asuo Ohga"iA Deric" RethansA ander Roo#olA
+gon chmidA ,homas choe(#ec"A ascha chumannA Lars ,or#en LilsonA !im LinsteadA !eroen
van Lol((elaarA y Andrei Imievs"i;
Los siguientes cola#oradores han ayudado de manera muy activa en la ela#oraci-n del manualC tig
Ba""enA &artmut &olzgrae(eA y +gon chmid;
Encargados de mantenimiento de las Notas de usuarios
+ncargados de mantenimiento m*s activosC Mehdi AchourA Friedhelm BetzA $incent GeversA Aidan
ListerA Nuno LopesA y ,om ommer;
+stas persones han ayudado mucho en el pasaso en el mantenimiento de las Notas de usuariosC
Daniel Bec"hamA $ictor BoivieA !esus M; 5astagnettoA Nicolas 5haillanA Ron 5hmaraA !ames 5oFA
ara GolemonA Ia" GreantA za#olcs &eiligA Oliver &inc"elA &artmut &olzgrae(eA Rasmus Lerdor(A
AndreE LindemanA MaFim Malets"yA !ames MooreA e#astian Pic"lumA Deric" RethansA ander
Roo#olA Damien eguyA !ason heetsA !ani ,as"inenA %asuo Ohga"iA Philip OlsonA Lars ,or#en
LilsonA !im LinsteadA !ared LylesA y !eroen van Lol((elaar;
I. Conceptos bsicos
Tabla de contenidos
1; .ntroducci-n
0; @na eFplicaci-n sencilla
Captulo !. Introducci"n
#$u% es PHP&
P&P >acr-nimo de =P&PC &yperteFt Preprocessor=? es un lengua'e de =c-digo a#ierto= interpretadoA
de alto nivelA em#e#ido en p*ginas &,ML y e'ecutado en el servidor;
@na respuesta corta y concisaA peroA U/u< signi(ica realmenteN @n e'emplo nos aclarar* las cosasC
E'emplo !(!. )n e'emplo introductorio
<html>
<head>
<title>Ejemplo</title>
</head>
<body>
<?php
echo "Hola, &iexcl;soy un script H!";
?>
</body>
</html>
Puede apreciarse /ue no es lo mismo /ue un script escrito en otro lengua'e de programaci-n como
Perl o 5 22 +n vez de escri#ir un programa con muchos comandos para crear una salida en &,MLA
escri#imos el c-digo &,ML con cierto c-digo P&P em#e#ido >incluido? en el mismoA /ue producir*
cierta salida >en nuestro e'emploA producir* un teFto?; +l c-digo P&P se incluye entre eti/uetas
especiales de comienzo y (inal /ue nos permitir*n entrar y salir del modo P&P;
Lo /ue distingue a P&P de la tecnolog)a !avascriptA la cual se e'ecuta en la m*/uina clienteA es /ue
el c-digo P&P es e'ecutado en el servidor; i tuvi<semos un script similar al de nuestro e'emplo en
nuestro servidorA el cliente solamente reci#ir)a el resultado de su e'ecuci-n en el servidorA sin
ninguna posi#ilidad de determinar /u< c-digo ha producido el resultado reci#ido; +l servidor Ee#
puede ser incluso con(igurado para /ue procese todos los archivos &,ML con P&P;
Lo me'or de usar P&P es /ue es eFtremadamente simple para el principianteA pero a su vezA o(rece
muchas caracter)sticas avanzadas para los programadores pro(esionales; No sienta miedo de leer la
larga lista de caracter)sticas de P&PA en poco tiempo podr* empezar a escri#ir sus primeros scripts;
Aun/ue el desarrollo de P&P est* concentrado en la programaci-n de scripts en el lado del servidorA
se puede utilizar para muchas otras cosas; iga leyendo y descu#ra m*s so#re P&P en la secci-n
UOu< se puede hacer con P&PN;
#$u% se puede hacer con PHP&
P&P puede hacer cual/uier cosa /ue se pueda hacer con un script 5G.A como procesar la
in(ormaci-n de (ormulariosA generar p*ginas con contenidos din*micosA o enviar y reci#ir coo"ies;
% esto no es todoA se puede hacer mucho m*s;
+Fisten tres campos en los /ue se usan scripts escritos en P&P;
cripts del lado del servidor; +ste es el campo m*s tradicional y el principal (oco de tra#a'o;
e necesitan tres cosas para /ue esto (uncione; +l int<rprete P&P >5G. - m-dulo?A un
servidor Ee# y un navegador; +s necesario correr el servidor Ee# con P&P instalado; +l
resultado del programa P&P se puede o#tener a trav<s del navegadorA conect*ndose con el
servidor Ee#; 5onsultar la secci-n .nstrucciones de instalaci-n para m*s in(ormaci-n;
cripts en la l)nea de comandos; Puede crear un script P&P y correrlo sin ningBn servidor
Ee# o navegador; olamente necesita el int<rprete P&P para usarlo de esta manera; +ste tipo
de uso es ideal para scripts e'ecutados regularmente desde cron >en VniF o LinuF? o el
Plani(icador de tareas >en LindoEs?; +stos scripts tam#i<n pueden ser usados para tareas
simples de procesamiento de teFto; 5onsultar la secci-n @sos de P&P en la l)nea de
comandos para m*s in(ormaci-n;
+scri#ir aplicaciones de inter(az gr*(ica; Pro#a#lemente P&P no sea el lengua'e m*s
apropiado para escri#ir aplicaciones gr*(icasA pero si conoce #ien P&PA y /uisiera utilizar
algunas caracter)sticas avanzadas en programas clientesA puede utilizar P&P2G,S para
escri#ir dichos programas; ,am#i<n es posi#le escri#ir aplicaciones independientes de una
plata(orma; P&P2G,S es una eFtensi-n de P&PA no disponi#le en la distri#uci-n principal;
i est* interesado en P&P2G,SA puedes visitar las p*ginas Ee# del proyecto;
P&P puede ser utilizado en cual/uiera de los principales sistemas operativos del mercadoA
incluyendo LinuFA muchas variantes @niF >incluyendo &P2@JA olaris y OpenBD?A Microso(t
LindoEsA Mac O JA R.5 O y pro#a#lemente alguno m*s; P&P soporta la mayor)a de servidores
Ee# de hoy en d)aA incluyendo ApacheA Microso(t .nternet .n(ormation erverA Personal Le#
erverA Netscape e iPlanetA Oreilly Le#site Pro serverA 5audiumA JitamiA Omni&,,Pd y muchos
otros; P&P tiene m-dulos disponi#les para la mayor)a de los servidoresA para a/uellos otros /ue
soporten el est*ndar 5G.A P&P puede usarse como procesador 5G.;
De modo /ueA con P&P tiene la li#ertad de elegir el sistema operativo y el servidor de su gusto;
,am#i<n tiene la posi#ilidad de usar programaci-n procedimental o programaci-n orientada a
o#'etos; Aun/ue no todas las caracter)sticas est*ndar de la programaci-n orientada a o#'etos est*n
implementadas en la versi-n actual de P&PA muchas #i#liotecas y aplicaciones grandes >incluyendo
la #i#lioteca P+AR? est*n escritas )ntegramente usando programaci-n orientada a o#'etos;
5on P&P no se encuentra limitado a resultados en &,ML; +ntre las ha#ilidades de P&P se incluyenC
creaci-n de im*genesA archivos PDF y pel)culas Flash >usando li#sE( y Ming? so#re la marcha;
,am#i< puede presentar otros resultadosA como J&,M y archivos JML; P&P puede autogenerar
<stos archivos y almacenarlos en el sistema de archivos en vez de presentarlos en la pantalla;
Ouiz*s la caracter)stica m*s potente y destaca#le de P&P es su soporte para una gran cantidad de
#ases de datos; +scri#ir un inter(az v)a Ee# para una #ase de datos es una tarea simple con P&P; Las
siguientes #ases de datos est*n soportadas actualmenteC
Ada#as D .ngres Oracle >O5.: and O5.M?
dBase .nterBase Ovrimos
+mpress FrontBase PostgreOL
FilePro >read2
only?
mOL olid
&yperEave Direct M2OL y#ase
.BM DB0 MyOL $elocis
.n(ormiF ODB5 @niF d#m
,am#i<n contamos con una eFtensi-n DBJ de a#stracci-n de #ase de datos /ue permite usar de
(orma transparente cual/uier #ase de datos soportada por la eFtensi-n; AdicionalmenteA P&P
soporta ODB5 >el +st*ndar A#ierto de 5oneFi-n con Bases de Datos?A asi /ue puede conectarse a
cual/uier #ase de datos /ue soporte tal est*ndar;
P&P tam#i<n cuenta con soporte para comunicarse con otros servicios usando protocolos tales como
LDAPA .MAPA NMPA NN,PA POP7A &,,PA 5OM >en LindoEs? y muchos otros; ,am#i<n se
pueden crear soc"ets puros; P&P soporta LDDJ para el intercam#io de datos entre lengua'es de
programaci-n en Ee#; % ha#lando de interconeFi-nA P&P puede utilizar o#'etos !ava de (orma
transparente como o#'etos P&P % la eFtensi-n de 5ORBA puede ser utilizada para acceder a
o#'etos remotos;
P&P tiene unas caracter)sticas muy Btiles para el procesamiento de teFtoA desde eFpresiones
regulares PO.J eFtendidas o tipo Perl hasta procesadores de documentos JML; Para procesar y
acceder a documentos JMLA soportamos los est*ndares AJ y DOM; Puede utilizar la eFtensi-n
JL, para trans(ormar documentos JML;
i usa P&P en el campo del comercio electr-nicoA encontrar* muy Btiles las (unciones 5y#ercashA
5y#erM@,A $eriign Pay(loE Pro y 55$ para sus programas de pago;
Para terminarA contamos con muchas otras eFtensiones muy interesantesA las (unciones del motor de
#Bs/uedas mnoGoearchA (unciones para pasarelas de .R5A utilidades de compresi-n >gzipA #z0?AA
conversi-n de calendariosA traducci-n ;;;;;
5omo puede apreciarA esta p*gina no es su(iciente para enumerar todas las caracter)sticas y
#ene(icios /ue P&P o(rece; 5onsulte las secciones .nstalaci-n de P&P y Re(erencia de las (unciones
para una eFplicaci-n de las eFtensiones mencionadas a/u);
Captulo *. )na e+plicaci"n sencilla
A continuaci-nA le introduciremos a P&P en un pe/ueWo y sencillo manual; +ste documento eFplica
c-mo crear p*ginas Ee# din*micas para .nternet con P&PA aun/ue P&P no solamente est* diseWado
para la creaci-n de <stas; 5onsulte la secci-n titulada UOu< se puede hacer con P&PN para m*s
in(ormaci-n;
Las p*ginas Ee# /ue utilizan P&P son tratadas como p*ginas de &,ML comunes y corrientesA y
puede crearlas y editarlas de la misma manera /ue lo hace con documentos normales de &,ML;
#$u% necesito&
+n este manual vamos a asumir /ue usted cuenta con un servidor /ue soporta P&P y /ue todos los
archivos con la eFtensi-n .php son mane'ados por P&P; +n la mayor)a de servidoresA <sta es la
eFtensi-n /ue toman los archivos P&P por de(ectoA pero pregunte al administrador de su servidor
para estar seguro; i su servidor soporta P&PA entonces no necesita hacer nadaA solamente crear sus
archivos .php y guardarlos en su directorio Ee#A y el servidorA como por arte de magiaA los
analizar* para usted; No hay necesidad de compilar nadaA tampoco tiene necesidad de instalar otras
herramientas; M)relo de esta maneraA estos archivos de P&P son tan simples como archivos de
&,ML con una nueva (amilia de eti/uetas /ue le permiten una gran cantidad de cosas; La mayor)a
de las compaW)as de hospeda'e de p*ginas Ee# o(recen el soporte /ue necesita para usar P&PA pero
si por alguna raz-n ellos no lo hacenA considere leer la secci-n titulada Recursos P&P para mas
in(ormaci-n acerca de compaW)as de hospeda'e /ue soportan P&P
Digamos /ue usted tiene limitado acceso a internet y se encuentra programando localmente; +n este
casoA /uerr* instalar un servidor de Ee# como ApacheA y P&P; Lo m*s seguro es /ue tam#i<n /uiera
instalar una #ase de datos como MyOL; Puede instalar estos productos individualmente o
simplemente localizar un pa/uete pre2con(igurado /ue autom*ticamente instale todos estos
productos con solamente unos movimientos de su rat-n; +s muy (*cil instalar un servidor Ee# con
soporte para P&P en cual/uier sistemas operativoA incluyendo LinuF y LindoEs; +n LinuFA rpm(ind
y PBone le ayudar*n a encontrar un RPM;
,u primera pgina con PHP
5omienze por crear un archivo llamado hola.php y colocarle en el =directorio ra)z=
>DOCUMENT_ROOT? con el siguiente contenidoC
E'emplo *(!. Nuestro primer script PHP- hola.php
<html>
<head>
<title>Ejemplo de H</title>
</head>
<body>
<?php echo "<p>Hola "undo</p>"; ?>
</body>
</html>
@tilice su navegador Ee# para acceder al archivoA con la @RL terminando en =Dhola;php=; i est*
programando localmente este @RL lucir* algo como http://localhost/hola.php o
http://127.0.0.1/hola.php pero esto depende de la con(iguraci-n de su servidor Ee#; Aun/ue este
tema est* (uera del alcance de este tutorialA tam#i<n puede ver las directivas DocumentRoot y
SererName en la con(iguraci-n de su servidor >en ApacheA esto es httpd.con#?; i todo est*
con(igurado correctamenteA el archivo ser* analizado por P&P y el siguiente contenido aparecer* en
su navegadorC
<html>
<head>
<title>Ejemplo de H</title>
</head>
<body>
<p>Hola "undo</p>
</body>
</html>
Note /ue esto no es como los scripts de 5G.; +l archivo no necesita ninguna clase especial de
permisos para ser e'ecutado; Piense en ellos como si (ueran archivos &,ML con un con'unto muy
especial de eti/uetas disponi#lesA y /ue hacen muchas cosas interesantes;
+ste programa es eFtremadamente simpleA y no necesita usar P&P para crear una p*gina como <sta;
,odo lo /ue hace es mostrarC !ola Mun#o usando la sentencia echo./;
i ha intentado usar este e'emploA y no produ'o ningBn resultadoA preguntando si desea#a descargar
el archivoA o mostr- todo el archivo como teFtoA lo m*s seguro es /ue P&P no se encuentra
ha#ilitado en su servidor; P)dale a su administrador /ue active esta (unci-n por ustedA o use el
cap)tulo titulado .nstalaci-n en el manual; i est* tra#a'ando localmenteA lea tam#i<n el cap)tulo
dedicado a la instalaci-nA y asegBrese de /ue todo est< con(igurado apropiadamente; i el pro#lema
continBaA por (avor use una de las muchas opciones para o#tener ayuda con P&P;
+l o#'etivo de este e'emplo es demostrar c-mo puede usar las eti/uetas P&P; +n este e'emplo
usamos $%php para indicar el inicio de la eti/ueta P&P; Despu<s indicamos la sentencia y
a#andonamos el modo P&P usando %&; Puede salir de P&P y regresar cuantas veces lo desee
usando este m<todo; Para m*s in(ormaci-nA puede leer la secci-n en el manual titulada intaFis
#*sica de P&P;
)na nota acerca de editores de te+to- &ay muchos editores de teFto y +ntornos
.ntegrados de Desarrollo >.D+ por sus siglas en .ngl<s? /ue puede usar para crearA editarA
y organizar archivos P&P; Puede encontrar una lista parcial de <stos en Lista de editores
de P&P; i desea recomendar un editorA por (avor visite la p*gina mencionada
anteriormenteA y comuni/ue su recomendaci-n a las personas encargadas del
mantenimiento para /ue lo incluyan en la lista; 5ontar con un editor /ue resalte la
sintaFis de P&P puede ser de mucha ayuda;
)na nota acerca de los procesadores de palabras- Los procesadores de pala#ras como
=tarO((ice=A =Microso(t Eord= y =A#iEord= no son #uenas opciones para editar
archivos de P&P; i desea usar uno de <stos programas para pro#ar sus scriptsA primero
de#e asegurarse de guardar el documento en (ormato de =,eFto= puroA o P&P no ser*
capaz de e'ecutar el script;
)na nota acerca del 01loc de Notas de 2indo3s0- i desea escri#ir sus archivos
P&P usando el =Bloc de Notas de LindoEs= o en algBn otro editor de teFto para
LindoEs necesita asegurarse de /ue sus archivos sean guardados con la eFtensi-n ;php
>la mayor)a de editores de teFto en LindoEs autom*ticamente tratar*n de aWadir la
eFtensi-n ;tFt a los archivos a menos /ue tome los siguientes pasos para prevenirlo?;
5uando guarde sus archivos y el programa le pregunte /u< nom#re le desea dar al
archivoA use comillas para indicar el nom#re >es decirA =hola.php=?; @na alternativa
esA en la lista de opciones =Archivos de ,eFto V;tFt=A seleccionar la opci-n =,odos los
archivos V;V=; A/u) puede escri#ir el nom#re del archivo sin las comillas;
Ahora /ue ha creado un pe/ueWo script de P&P /ue (unciona correctamenteA es hora de tra#a'ar con
el script de P&P m*s (amosoX vamos a hacer una llamada a la (unci-n phpinfo./ para o#tener
in(ormaci-n acerca de su sistema y con(iguraci-n como las varia#les prede(inidas disponi#lesA los
m-dulos utilizados por P&PA y las di(erentes opciones de con(iguraci-n; ,omemos unos segundos
para revisar esta in(ormaci-n;
Algo 4til
&agamos ahora algo /ue puede ser m*s Btil; $amos a che/uear /u< clase de navegador Ee# utiliza;
Para hacerloA vamos a consultar la in(ormaci-n /ue el navegador nos env)a como parte de su
petici-n &,,P; +sta in(ormaci-n es guardada en una varia#le; Las varia#les siempre comienzan con
un signo de d-lar >=Y=? en P&P; La varia#le /ue vamos a utilizar en esta situaci-n es '_SER(ER
)*!TT+_USER_,-ENT*.;
Nota- YZ+R$+R es una varia#le reservada por P&P /ue contiene toda la in(ormaci-n
del servidor Ee#; +s conocida como Autoglo#al >o uperglo#al?; 5onsulte el manual en
su secci-n titulada Autoglo#ales para mas in(ormaci-n; [stas son varia#les especiales
/ue (ueron introducidas en la versi-n 8;1;3 de P&P; Antes pod)amos usar las matrices
'!TT+_/_(,RSA tales como '!TT+_SER(ER_(,RS; Aun/ue <stas han sido marcadas
como o#soletasA tales matrices todav)a eFisten; >,am#i<n puede echar un vistazo a las
notas relacionadas con el c-digo antiguo;?
Para poder ver esta varia#le solo necesitaC
E'emplo *(*. Impresi"n de una 5ariable .elemento de la matri6/
<?php echo $%&E'(E')"H**%+&E'%,-E.*"/; ?>
@n e'emplo de los resultados de este programa ser)aC
"o0illa/1.2 3compatible; "&4E 5.26; 7indo8s .* 5.29
&ay muchos tipos de varia#les en P&P; +n el e'emplo anterior imprimimos una matriz; Las matrices
pueden ser muy Btiles;
'_SER(ER es simplemente una varia#le /ue se encuentra disponi#le autom*ticamente para usted en
P&P; Puede encontrar una lista en la secci-n titulada $aria#les Reservadas del manualA o puede
generar una lista completa creando un archivo como el presentado a continuaci-nC
E'emplo *(7. Consultar todas las 5ariables predefinidas con phpinfo./
<?php phpin#o39; ?>
i a#re este archivo con su navegadorA puede ver una p*gina con in(ormaci-n acerca de P&PA 'unto
a una lista de todas las varia#les /ue puede usar;
Puede usar m*s de un declaraci-n P&P dentro de una eti/ueta P&PA y crear pe/ueWos segmentos de
c-digo /ue pueden hacer m*s /ue un =echo=; Por e'emploA si /uisi<ramos detectar el uso de
=.nternet +Fplorer=A har)amos algo as)C
E'emplo *(8. E'emplos de uso de estructuras de control y funciones
<?php
i# 3strstr3$%&E'(E')"H**%+&E'%,-E.*"/, ""&4E"99 :
echo "Est&aacute; usando 4nternet Explorer<br />";
;
?>
@n e'emplo de los resultado del script puede serC
Est&aacute; usando 4nternet Explorer<br />
A continuaci-n introduciremos un par de conceptos nuevos; ,enemos una declaraci-n =i(=; i est*
(amiliarizado con la sintaFis #*sica del lengua'e =5=A esto se vera l-gicoA Pero si no entiende =5=A u
otros lengua'es de programaci-n donde encuentra la sintaFis usada anteriormenteA pro#a#lemente
de#er)a conseguir un li#ro /ue le introduzca me'or a P&PA y lea los primeros cap)tulosA o tam#i<n
puede ver la parte del manual titulada Re(erencia del lengua'e; Puedes encontrar una lista de li#ros
so#re P&P en httpCDDEEE;php;netD#oo"s;php;
+l segundo concepto /ue introducimos (ue la (unci-n llamada strstr./; strstr./ es una (unci-n
integrada de P&P /ue #usca un cadena dentro de otra cadena m*s larga; +n el caso anterior estamos
#uscando *MS0E* dentro de '_SER(ER)*!TT+_USER_,-ENT*.; i la cadena (ue encontradaA la
(unci-n devolver* verdadero >=TRUE=?A la declaraci-n =i(= se evalBa a verdadero >=TRUE=? y el
c-digo adentro de las llaves \] es e'ecutado; De otra manera no resulta e'ecutado; ,-mese la
li#ertad de crear e'emplos similares usando =i(=A =else= >=de otra manera=?A y otras (unciones como
strtoupper./ y strlen./; 5ada p*gina del manual contiene e'emplos /ue puede usar; i no est*
seguro so#re el modo de uso <stas (uncionesA es recomenda#le /ue lea las p*ginas del manual
tituladas 5-mo leer una de(inici-n de (unci-n y la secci-n relacionada a Funciones en P&P
Podemos continuar y demostrar c-mo puede saltar adentro y a(uera del modo P&P en el medio de
un #lo/ue de c-digo;
E'emplo *(9. Me6cla de los modos HTM: y PHP
<?php
i# 3strstr3$%&E'(E')"H**%+&E'%,-E.*"/, ""&4E"99 :
?>
<h<>strstr debe haber de=uelto =erdadero</h<>
<center><b>Est&aacute; usando 4nternet Explorer</b></center>
<?php
; else :
?>
<h<>strstr debi&oacute; de=ol=er #also</h<>
<center><b>.o est&aacute; usando 4nternet Explorer</b></center>
<?php
;
?>
@n e'emplo de los resultados de este script puede serC
<h<>strstr debe haber de=uelto =erdadero </h<>
<center><b>Est&aacute; usando 4nternet Explorer</b></center>
+n vez de usar una sentencia P&P =echo= para demostrar algoA saltamos (uera del c-digo P&P y
escri#imos &,ML puro; +ste es un punto muy importante y potente /ue de#emos o#servar a/u)A y
es /ue la (luidez l-gica del script est* intacta; -lamente las partes donde hay &,ML ser*n enviadas
a su navegador dependiendo de los resultados /ue strstr./ devuelve >si (ue verdadero PTRUEQA o
(also PFALSEQ?; +n otras pala#rasA si la cadena MS0E (ue encontrada o no;
)so de ;ormularios HTM:
Otra de las caracter)sticas de P&P es /ue gestiona (ormularios de &,ML; +l concepto #*sico /ue es
importante entender es /ue cual/uier elemento de los (ormularios estar* disponi#le
autom*ticamente en su c-digo P&P; Por (avor re(i<rase a la secci-n titulada $aria#les (uera de P&P
en el manual para m*s in(ormaci-n y e'emplos so#re c-mo usar (ormularios &,ML con P&P;
O#servemos un e'emploC
E'emplo *(<. )n formulario HTM: sencillo
<#orm action>"accion.php" method>"?&*">
&u nombre@ <input type>"text" name>"nombre" />
&u edad@ <input type>"text" name>"edad" />
<input type>"submit">
</#orm>
No hay nada especial en este (ormularoA es &,ML limpio sin ninguna clase de eti/uetas
desconocidas; 5uando el cliente llena <ste (ormulario y oprime el #ot-n eti/uetado =u#mit=A una
p*gina titulada accion.php es llamada; +n este archivo encontrar* algo as)C
E'emplo *(=. Procesamiento de informaci"n de nuestro formulario HTM:
Hola <?php echo $%?&*)"nombre"/; ?>.
*iene <?php echo $%?&*)"edad"/; ?> a&ntilde;os
@n e'emplo del resultado de este script podr)a serC
Hola AosB.
*iene CC aDos
+s aparentemente o#vio lo /ue hace; No hay mucho m*s /ue decir al respecto; Las varia#les
'_+OST)*nom1re*. y '_+OST)*e#a#*. son de(inidas autom*ticamente por P&P; &ace un
momento usamos la varia#le autoglo#al '_SER(ERA ahora hemos introducido autoglo#al YZPO,A
/ue contiene toda la in(ormaci-n enviada por el m<todo PO,; F)'ese en el atri#uto metho# en
nuestro (ormularioX es PO,; i hu#i<ramos usado -ETA entonces nuestra in(ormaci-n estar)a en la
varia#le autoglo#al YZG+,; ,am#i<n puede utilizar la autoglo#al YZR+O@+, si no le importa el
origen de la petici-n; [sta varia#le contiene una mezcla de in(ormaci-n G+,A PO, y 5OOS.+;
,am#i<n puede ver la (unci-n import>re?uest>5ariables./;
)se de c"digo antiguo con nue5as 5ersiones de PHP
Ahora /ue P&P ha crecido y se ha convertido en un lengua'e popularA hay muchos m*s recursos /ue
contienen c-digo /ue puede reusar en sus propios programas; Por lo generalA las personas /ue se
encargan del desarrollo de P&P tratan de /ue el lengua'e sea compati#le con versiones anterioresA
para /ue los programas escritos con versiones antiguas continBen (uncionando cuando instale una
nueva versi-n de P&P; +n un mundo per(ectoA nunca necesitar)a modi(icar su c-digo para hacerlo
(uncionar con versiones nuevas del lengua'eX peroA como todos sa#emosA este no es un mundo
per(ectoA y usualmente son necesarios los cam#ios en su c-digo;
Dos de los cam#ios mas importantes /ue a(ectan el c-digo vie'o sonC
La desaparici-n de las matrices '!TT+_/_(,RS >/ue usualmente son usadas como glo#ales
al interior de una (unci-n o m<todo?; Las siguientes matrices autoglo#ales (ueron
introducidas en la versi-n 8;1;3 de P&P; +stas sonC '_-ETA '_+OSTA '_COO20EA
'_SER(ERA '_304ESA '_EN(A '_RE5UESTA y '_SESS0ON; Las antiguas '!TT+_/_(,RSA
como Y&,,PZPO,Z$ARA todav)a eFistenA y han eFistido desde P&P 7;
Las varia#les eFternas /ue ya no son registradas autom*ticamente; +n otras pala#rasA a partir
de P&P 8;0;3A la directiva P&P registerZglo#als est* #esha16l6ta#a >su valor es o((? en
php.ini; +l m<todo pre(erido para o#tener acceso a <stos valores es por medio de las
=matrices autoglo#ales= mencionados anteriormente; Los scriptsA li#ros y tutoriales antiguos
pueden asumir /ue <sta directiva es de(inida autom*ticamente como =on=; i es as)A puede
usarA por e'emploA '6# desde la @RL http://777.e8ample.com/9oo.php%6#:;2; Por otra parteA
no importa si el valor de la directiva es =on= u =o((=A '_-ET)<6#<. est* siempre disponi#le;
Para m*s detalles relacionados con estos cam#iosA puede ver la secci-n so#re varia#les prede(inidas;
#@ ahora ?u%&
5on lo /ue hemos vistoA puede entender la mayor parte del manualA y tam#i<n los e'emplos /ue
est*n disponi#les en los archivos; ,am#i<n puede encontrar otros e'emplos en los di(erentes sitios
de php;net en la secci-n de enlacesC httpCDDEEE;php;netDlin"s;php;
Para ver una presentaci-n /ue muestra m*s acerca de lo /ue puede hacer P&PA visite los di(erentes
sitios con material relacionado a las con(erencias realizadasC httpCDDcon(;php;netD y
httpCDDtal"s;php;netD;
II. Instalaci"n y configuraci"n
Tabla de contenidos
7; 5onsideraciones generales de instalaci-n
8; .nstallation on @niF systems
4; .nstallation on Mac O J
K; .nstallation on LindoEs systems
:; .nstallation o( P+5L eFtensions
M; Pro#lemasN
9; 5on(iguraci-n del comportamiento de P&P
Captulo 7. Consideraciones generales de
instalaci"n
Antes de instalar P&PA necesitais sa#er por/ue /uereis utilizarlo; +Fisten tres campos principales en
donde P&P se puede usarA tal y como se descri#e en la secci-n Ou< se puede hacer con P&PNC
cripts en la parte del servidor
cripts en linea de comandos
Aplicaciones gr*(icas clientes
+l primero es el m*s tradicional y el principal campo de tra#a'o; e necesitan tres cosas para /ue
(uncione; +l analizador P&P >5G. - m-dulo?A un servidor Ee# y un navegador; Dependiendo de la
versi-n de sistema operativo /ue utiliceisA pro#a#lemente tengais un servidor Ee# >p;e'C Apache en
LinuF y MacO J - .. en LindoEs?; ,am#i<n se puede al/uilar espacio Ee# en una empresa /ue
o(rezca este servicio; De esta manera no se necesita instalar nadaA solamente escri#ir los scripts
P&PA su#irlos al espacio al/uilado y ver el resultado en vuestro navegador;
,eneis dos maneras de utilizar P&PA si instalais vosotros el servidor y P&P; +Fisten m-dulos
directos >tam#i<n llamados AP.? para muchos servidores Ee#A como ApacheA Microso(t .nternet
.n(ormation erverA Netscape e iPlanet; Muchos otros servidores soportan .AP.A
>p;e';COmni&,,Pd?; i P&P no soporta un m-dulo para tu servidor Ee#A siempre se puede usar
como #inario 5G.; +sto signi(ica /ue el servidor se con(igura para usar el e'ecuta#le para linea de
comandos de P&P en el procesado de peticiones de (icheros P&P;
i estais interesados en usar P&P desde la linea de comandos >p;e';C para generar imagenes o((line -
procesar (icheros de teFtosA etc? necesitais el e'ecuta#le para linea de comandos; Para m*s
in(ormaci-nA lea la secci-n @sando P&P desde la l)nea de comandos; +n este caso no se necesita ni
servidor Ee#A ni navegador;
5on P&P tam#ien se puede escri#ir aplicaciones gr*(icas usando la eFtensi-n P&P2G,S; +sta es
una (orma totalmente distinta de utilizar P&P /ue cuando se utiliza para escri#ir p*ginas Ee#A ya
/ue no se genera c-digo &,ML sino /ue se tra#a'a con ventanas y o#'etos dentro de las mismas;
Para m*s in(ormaci-n so#re P&P2G,SA visitar las p*ginas dedicadas a esta eFtensi-n; P&P2G,S no
se incluye en la distri#uci-n o(icial de P&P;
A partir de ahoraA esta secci-n tratar* so#re la con(iguraci-n de P&P con servidores Ee#A en @niF y
LindoEsA tanto como m-duloA como #inario 5G.;
P&PA el c-digo (uente y distri#uciones #inarias para LindoEs se pueden encontrar en
httpCDDEEE;php;netD; Recomendamos utilizar un servidor espe'o cerca de donde esteis para #a'aros
la versi-n de P&P /ue /uerais;
Captulo 8. Installation on )ni+ systems
,his section Eill guide you through the general con(iguration and installation o( P&P on @niF
systems; Be sure to investigate any sections speci(ic to your plat(orm or Ee# server #e(ore you #egin
the process;
As our manual outlines in the General .nstallation 5onsiderations sectionA Ee are mainly dealing
Eith Ee# centric setups o( P&P in this sectionA although Ee Eill cover setting up P&P (or command
line usage as Eell;
,here are several Eays to install P&P (or the @niF plat(ormA either Eith a compile and con(igure
processA or through various pre2pac"aged methods; ,his documentation is mainly (ocused around
the process o( compiling and con(iguring P&P; Many @niF li"e systems have some sort o( pac"age
installation system; ,his can assist in setting up a standard con(igurationA #ut i( you need to have a
di((erent set o( (eatures >such as a secure serverA or a di((erent data#ase driver?A you may need to
#uild P&P andDor your Ee#server; .( you are un(amiliar Eith #uilding and compiling your oEn
so(tEareA it is Eorth chec"ing to see Ehether some#ody has already #uilt a pac"aged version o( P&P
Eith the (eatures you need;
Prere/uisite "noEledge and so(tEare (or compilingC
Basic @niF s"ills >#eing a#le to operate =ma"e= and a 5 compiler?
An AN. 5 compiler
(leFC $ersion 0;4;8
#isonC $ersion 1;0M >pre(erred?A 1;74A or 1;:4
A Ee# server
Any module speci(ic components >such as gdA pd( li#sA etc;?
,he initial P&P setup and con(iguration process is controlled #y the use o( the commandline options
o( the configure script; %ou could get a list o( all availa#le options along Eith short eFplanations
running .Aconfigure ((help; Our manual documents the di((erent options separately; %ou Eill (ind
the core options in the appendiFA Ehile the di((erent eFtension speci(ic options are desci#ed on the
re(erence pages;
Lhen P&P is con(iguredA you are ready to #uild the module andDor eFecuta#les; ,he command
maBe should ta"e care o( this; .( it (ails and you canHt (igure out EhyA see the Pro#lems section;
Apache !.7.+ on )ni+ systems
,his section contains notes and hints speci(ic to Apache installs o( P&P on @niF plat(orms; Le also
have instructions and notes (or Apache 0 on a separate page;
%ou can select arguments to add to the configure on line 13 #eloE (rom the list o( core con(igure
options and (rom eFtension speci(ic options descri#ed at the respective places in the manual; ,he
version num#ers have #een omitted hereA to ensure the instructions are not incorrect; %ou Eill need
to replace the HFFFH here Eith the correct values (rom your (iles;
E'emplo 8(!. Installation Instructions .Apache ,hared Module Cersion/ for PHP
6. Eun0ip apache%xxx.tar.E0
C. tar Fx=# apache%xxx.tar
<. Eun0ip phpFxxx.tar.E0
1. tar Fx=# phpFxxx.tar
5. cd apache%xxx
G. ./con#iEure FFpre#ix>/888 FFenableFmodule>so
H. maIe
J. maIe install
K. cd ../phpFxxx
62. .o8, con#iEure your H. *his is 8here you customi0e your H
8ith =arious options, liIe 8hich extensions 8ill be enabled. Lo a
./con#iEure FFhelp #or a list o# a=ailable options. 4n our example
8eMll do a simple con#iEure 8ith ,pache 6 and "y&NO support. Pour
path to apxs may di##er #rom our example.
./con#iEure FF8ithFmysQl FF8ithFapxs>/888/bin/apxs
66. maIe
6C. maIe install
4# you decide to chanEe your con#iEure options a#ter installation,
you only need to repeat the last three steps. Pou only need to
restart apache #or the ne8 module to taIe e##ect. , recompile o#
,pache is not needed.

.ote that unless told other8ise, MmaIe installM 8ill also install E,',
=arious H tools such as phpi0e, install the H RO4, and more.
6<. &etup your php.ini #ile@
cp php.iniFdist /usr/local/lib/php.ini
Pou may edit your .ini #ile to set H options. 4# you pre#er your
php.ini in another location, use FF8ithFcon#iEF#ileFpath>/some/path in
step 62.

4# you instead choose php.iniFrecommended, be certain to read the list
o# chanEes 8ithin, as they a##ect ho8 H beha=es.
61. Edit your httpd.con# to load the H module. *he path on the riEht hand
side o# the Ooad"odule statement must point to the path o# the H
module on your system. *he maIe install #rom abo=e may ha=e already
added this #or you, but be sure to checI.

Sor H 1@

Ooad"odule php1%module libexec/libphp1.so
Sor H 5@

Ooad"odule php5%module libexec/libphp5.so

65. ,nd in the ,dd"odule section o# httpd.con#, some8here under the
Rlear"oduleOist, add this@

Sor H 1@

,dd"odule mod%php1.c

Sor H 5@

,dd"odule mod%php5.c
6G. *ell ,pache to parse certain extensions as H. Sor example,
letMs ha=e ,pache parse the .php extension as H. Pou could
ha=e any extension3s9 parse as H by simply addinE more, 8ith
each separated by a space. 7eMll add .phtml to demonstrate.
,dd*ype application/xFhttpdFphp .php .phtml
4tMs also common to setup the .phps extension to sho8 hiEhliEhted H
AlternativelyA to install P&P as a static o#'ectC
E'emplo 8(*. Installation Instructions .,tatic Module Installation for Apache/ for PHP
6. Eun0ip Fc apache%6.<.x.tar.E0 T tar x# F
C. cd apache%6.<.x
<. ./con#iEure
1. cd ..
5. Eun0ip Fc phpF1.x.y.tar.E0 T tar x# F
G. cd phpF1.x.y
H. ./con#iEure FF8ithFmysQl FF8ithFapache>../apache%6.<.x
J. maIe
K. maIe install
62. cd ../apache%6.<.x
66. ./con#iEure FFpre#ix>/888 FFacti=ateFmodule>src/modules/php1/libphp1.a
3*he abo=e line is correct! Pes, 8e Ino8 libphp1.a does not exist at this
staEe. 4t isnMt supposed to. 4t 8ill be created.9
6C. maIe
3you should no8 ha=e an httpd binary 8hich you can copy to your ,pache bin dir i#
is is your #irst install then you need to "maIe install" as 8ell9
6<. cd ../phpF1.x.y
61. cp php.iniFdist /usr/local/lib/php.ini
65. Pou can edit /usr/local/lib/php.ini #ile to set H options.
Edit your httpd.con# or srm.con# #ile and add@
,dd*ype application/xFhttpdFphp .php
Depending on your Apache install and @niF variantA there are many possi#le Eays to stop and
restart the server; BeloE are some typical lines used in restarting the serverA (or di((erent
apacheDuniF installations; %ou should replace /path/to/ Eith the path to these applications on your
systems;
E'emplo 8(7. E+ample commands for restarting Apache
6. &e=eral Oinux and &ys( =ariants@
/etc/rc.d/init.d/httpd restart
C. +sinE apachectl scripts@
/path/to/apachectl stop
/path/to/apachectl start
<. httpdctl and httpsdctl 3+sinE ?pen&&O9, similar to apachectl@
/path/to/httpsdctl stop
/path/to/httpsdctl start
1. +sinE mod%ssl, or another &&O ser=er, you may 8ant to manually
stop and start@
/path/to/apachectl stop
/path/to/apachectl startssl
,he locations o( the apachectl and http>s?dctl #inaries o(ten vary; .( your system has locate or
7here6s or 7h6ch commandsA these can assist you in (inding your server control programs;
Di((erent eFamples o( compiling P&P (or apache are as (olloEsC
./con#iEure FF8ithFapxs FF8ithFpEsQl
,his Eill create a libphp1.so shared li#rary that is loaded into Apache using a LoadModule line
in ApacheHs httpd.con# (ile; ,he PostgreOL support is em#edded into this libphp1.so
li#rary;
./con#iEure FF8ithFapxs FF8ithFpEsQl>shared
,his Eill create a libphp1.so shared li#rary (or ApacheA #ut it Eill also create a pEsQl.so
shared li#rary that is loaded into P&P either #y using the eFtension directive in php.ini (ile or #y
loading it eFplicitly in a script using the dl./ (unction;
./con#iEure FF8ithFapache>/path/to/apache%source FF8ithFpEsQl
,his Eill create a libmodphp1.a li#raryA a mod%php1.c and some accompanying (iles and
copy this into the src/mo#ules/php; directory in the Apache source tree; ,hen you compile Apache
using ==act6ate=mo#ule:src/mo#ules/php;/l61php;.a and the Apache #uild system Eill create
libphp1.a and lin" it statically into the httpd #inary; ,he PostgreOL support is included
directly into this httpd #inaryA so the (inal result here is a single httpd #inary that includes all o(
Apache and all o( P&P;
./con#iEure FF8ithFapache>/path/to/apache%source FF8ithFpEsQl>shared
ame as #e(oreA eFcept instead o( including PostgreOL support directly into the (inal httpd you
Eill get a pEsQl.so shared li#rary that you can load into P&P (rom either the php.ini (ile or
directly using dl./;
Lhen choosing to #uild P&P in di((erent EaysA you should consider the advantages and draE#ac"s
o( each method; Building as a shared o#'ect Eill mean that you can compile apache separatelyA and
donHt have to recompile everything as you add toA or changeA P&P; Building P&P into apache >static
method? means that P&P Eill load and run (aster; For more in(ormationA see the Apache Ee#page
on DO support;
Nota- ApacheHs de(ault httpd.con# currently ships Eith a section that loo"s li"e thisC
+ser nobody
-roup "UF6"
@nless you change that to =Group nogroup= or something li"e that >=Group daemon= is
also very common? P&P Eill not #e a#le to open (iles;
Nota- Ma"e sure you speci(y the installed version o( apFs Ehen using ==76th=
ap8s:/path/to/ap8s; %ou must NO, use the apFs version that is in the apache sources
#ut the one that is actually installed on your system;
Apache *.D on )ni+ systems
,his section contains notes and hints speci(ic to Apache 0;3 installs o( P&P on @niF systems;
A5iso
No usar Apache 0;3 y P&P en un sistema en produccionA tanto en @niF como en LindoEs;
5onsultar la FAO
%ou are highly encouraged to ta"e a loo" at the Apache Documentation to get a #asic understanding
o( the Apache 0;3 erver;
PHP and Apache *.D.+ compatibility notes- ,he (olloEing versions o( P&P are "noEn
to Eor" Eith the most recent version o( Apache 0;3;FC
P&P 8;7;3 or later availa#le at httpCDDEEE;php;netDdoEnloads;php;
the latest sta#le development version; Get the source code
httpCDDsnaps;php;netDphp82latest;tar;gz or doEnload #inaries (or LindoEs
httpCDDsnaps;php;netDEin70Dphp82Ein702latest;zip;
a prerelease version doEnloada#le (rom httpCDD/a;php;netD;
you have alEays the option to o#tain P&P through anonymous 5$;
,hese versions o( P&P are compati#le to Apache 0;3;83 and later;
Apache 0;3 S,+02support started Eith P&P 8;0;3; P&P 8;0;7 Eor"s Eith Apache 0;3;79A
donHt use any other version o( Apache Eith P&P 8;0;7; &oEeverA the recommended
setup is to use P&P 8;7;3 or later Eith the most recent version o( Apache0;
All mentioned versions o( P&P Eill Eor" still Eith Apache 1;7;F;
DoEnload the most recent version o( Apache 0;3 and a (itting P&P version (rom the a#ove
mentioned places; ,his /uic" guide covers only the #asics to get started Eith Apache 0;3 and P&P;
For more in(ormation read the Apache Documentation; ,he version num#ers have #een omitted
hereA to ensure the instructions are not incorrect; %ou Eill need to replace the HNNH here Eith the
correct values (rom your (iles;
E'emplo 8(8. Installation Instructions .Apache * ,hared Module Cersion/
6. E0ip Fd httpdFC%2%...tar.E0
C. tar x=# httpdFC%2%...tar
<. Eun0ip phpF...tar.E0
1. tar Fx=# phpF...tar
5. cd httpdFC%2%..
G. ./con#iEure FFenableFso
H. maIe
J. maIe install
.o8 you ha=e ,pache C.2... a=ailable under /usr/local/apacheC,
con#iEured 8ith loadable module support and the standard "" pre#orI.
*o test the installation use your normal procedure #or startinE
the ,pache ser=er, e.E.@
/usr/local/apacheC/bin/apachectl start
and stop the ser=er to Eo on 8ith the con#iEuration #or H@
/usr/local/apacheC/bin/apachectl stop.
K. cd ../phpF..
62. .o8, con#iEure your H. *his is 8here you customi0e your H
8ith =arious options, liIe 8hich extensions 8ill be enabled. Lo a
./con#iEure FFhelp #or a list o# a=ailable options. 4n our example
8eMll do a simple con#iEure 8ith ,pache C and "y&NO support. Pour
path to apxs may di##er, in #act, the binary may e=en be named apxsC on
your system.

./con#iEure FF8ithFapxsC>/usr/local/apacheC/bin/apxs FF8ithFmysQl
66. maIe
6C. maIe install
4# you decide to chanEe your con#iEure options a#ter installation,
you only need to repeat the last three steps. Pou only need to
restart apache #or the ne8 module to taIe e##ect. , recompile o#
,pache is not needed.

.ote that unless told other8ise, MmaIe installM 8ill also install E,',
=arious H tools such as phpi0e, install the H RO4, and more.

6<. &etup your php.ini

cp php.iniFdist /usr/local/lib/php.ini

Pou may edit your .ini #ile to set H options. 4# you pre#er ha=inE
php.ini in another location, use FF8ithFcon#iEF#ileFpath>/some/path in
step 62.

4# you instead choose php.iniFrecommended, be certain to read the list
o# chanEes 8ithin, as they a##ect ho8 H beha=es.
61. Edit your httpd.con# to load the H module. *he path on the riEht hand
side o# the Ooad"odule statement must point to the path o# the H
module on your system. *he maIe install #rom abo=e may ha=e already
added this #or you, but be sure to checI.
Sor H 1@

Ooad"odule php1%module libexec/libphp1.so

Sor H 5@

Ooad"odule php5%module libexec/libphp5.so

65. *ell ,pache to parse certain extensions as H. Sor example,
letMs ha=e ,pache parse the .php extension as H. Pou could
ha=e any extension3s9 parse as H by simply addinE more, 8ith
each separated by a space. 7eMll add .phtml to demonstrate.

,dd*ype application/xFhttpdFphp .php .phtml

4tMs also common to setup the .phps extension to sho8 hiEhliEhted H
source, this can be done 8ith@
FolloEing the steps a#ove you Eill have a running Apache 0;3 Eith support (or P&P as S,+0
module; O( course there are many more con(iguration options availa#le (or #othA Apache and P&P;
For more in(ormation use .Aconfigure ((help in the corresponding source tree; .n case you Eish to
#uild a multithreaded version o( Apache 0;3 you must overErite the standard MPM2Module
pre#orI either Eith 8orIer or perchild; ,o do so append to your con(igure line in step K
a#ove either the option ==76th=mpm:7or>er or ==76th=mpm:perch6l#; ,a"e care a#out the
conse/uences and understand Ehat you are doing; For more in(ormation read the Apache
documentation a#out the MPM2Modules;
Nota- .( you Eant to use content negotiationA read related FAO;
Nota- ,o #uild a multithreaded version o( Apache your system must support threads;
,his also implies to #uild P&P Eith eFperimental Iend ,hread a(ety >I,?; ,here(ore
not all eFtensions might #e availa#le; ,he recommended setup is to #uild Apache Eith
the standard pre#orI MPM2Module;
Caudium
P&P 8 can #e #uilt as a Pi"e module (or the 5audium Ee#server; Note that this is not supported
Eith P&P 7; FolloE the simple instructions #eloE to install P&P 8 (or 5audium;
E'emplo 8(9. Caudium Installation Instructions
6. "aIe sure you ha=e Raudium installed prior to attemptinE to
install H 1. Sor H 1 to 8orI correctly, you 8ill need iIe
H.2.CGJ or ne8er. Sor the saIe o# this example 8e assume that
Raudium is installed in /opt/caudium/ser=er/.
C. RhanEe directory to phpFx.y.0 38here x.y.0 is the =ersion number9.
<. ./con#iEure FF8ithFcaudium>/opt/caudium/ser=er
1. maIe
5. maIe install
G. 'estart Raudium i# itMs currently runninE.
H. OoE into the Eraphical con#iEuration inter#ace and Eo to the
=irtual ser=er 8here you 8ant to add H 1 support.
J. RlicI ,dd "odule and locate and then add the H 1 &cript &upport module.
K. 4# the documentation says that the MH 1 interpreter isnMt
a=ailableM, maIe sure that you restarted the ser=er. 4# you did
checI /opt/caudium/loEs/debuE/de#ault.6 #or any errors related to
<#ilename>H1.so</#ilename>. ,lso maIe sure that
<#ilename>caudium/ser=er/lib/)piIeF=ersion//H1.so</#ilename>
is present.
62. Ron#iEure the H &cript &upport module i# needed.
%ou can o( course compile your 5audium module Eith support (or the various eFtensions availa#le
in P&P 8; ee the re(erence pages (or eFtension speci(ic con(igure options;
Nota- Lhen compiling P&P 8 Eith MyOL support you must ma"e sure that the
normal MyOL client code is used; OtherEise there might #e con(licts i( your Pi"e
already has MyOL support; %ou do this #y speci(ying a MyOL install directory the ==
76th=m?s@l option;
fhttpd related notes
,o #uild P&P as an (httpd moduleA ansEer =yes= to =Build as an (httpd moduleN= >the 22Eith2
(httpd^D0R option to con(igure? and speci(y the (httpd source #ase directory; ,he de(ault directory
is /usr/local/src/#httpd; .( you are running (httpdA #uilding P&P as a module Eill give
#etter per(ormanceA more control and remote eFecution capa#ility;
Nota- upport (or (httpd is no longer availa#le as o( P&P 8;7;3;
,unE iPlanet and Netscape ser5ers on ,un ,olaris
,his section contains notes and hints speci(ic to un !ava ystem Le# erverA un ON+ Le#
erverA iPlanet and Netscape server installs o( P&P on un olaris;
From P&P 8;7;7 on you can use P&P scripts Eith the NAP. module to generate custom directory
listings and error pages; Additional (unctions (or Apache compati#ility are also availa#le; For
support in current Ee#servers read the note a#out su#re/uests;
%ou can (ind more in(ormation a#out setting up P&P (or the Netscape +nterprise erver >N+?
hereC httpCDD#enoit;noss;(ree;(rDphpDinstall2php8;html
,o #uild P&P Eith un !LDun ON+ LDiPlanetDNetscape Ee#serversA enter the proper install
directory (or the 22Eith2nsapi^PD.RQ option; ,he de(ault directory is usually /
opt/netscape/suitespot/; Please also read /phpFxxxF
=ersion/sapi/nsapi/nsapiFreadme.txt;
1; .nstall the (olloEing pac"ages (rom httpCDDEEE;sun(reeEare;comD or another doEnload siteC
autocon#FC.6<
automaIeF6.1
bisonF6%C5FsolCGFsparcFlocal
#lexFC%5%1aFsolCGFsparcFlocal
EccFC%K5%CFsolCGFsparcFlocal
E0ipF6.C.1FsolCGFsparcFlocal
m1F6%1FsolCGFsparcFlocal
maIeF<%HG%6FsolCGFsparcFlocal
mysQlF<.C<.C1Fbeta >i( you Eant mys/l support?
perlF5%225%2<FsolCGFsparcFlocal
tarF6.6< >GN@ tar?
0; Ma"e sure your path includes the proper directories
+,T!:.:/usr/local/16n:/usr/s16n:/usr/16n:/usr/ccs/16n and ma"e it availa#le to your system
export ,*H;
7; Eun0ip phpFx.x.x.tar.E0 >i( you have a ;gz distA otherEise go to 8?;
8; tar x=# phpFx.x.x.tar
4; 5hange to your eFtracted P&P directoryC cd ../phpFx.x.x
K; For the (olloEing stepA ma"e sure /opt/netscape/suitespot/ is Ehere your netscape
server is installed; OtherEiseA change to the correct path and runC
./con#iEure FF8ithFmysQl>/usr/local/mysQl V
FF8ithFnsapi>/opt/netscape/suitespot/ V
FFenableFlibEcc
:; Run maBe (olloEed #y maBe install;
A(ter per(orming the #ase install and reading the appropriate readme (ileA you may need to per(orm
some additional con(iguration steps;
Configuration Instructions for ,unAiPlanetANetscape. Firstly you may need to add some paths to
the 4D_40AR,RB_+,T! environment (or the server to (ind all the shared li#s; ,his can #est done in
the start script (or your Ee#server; ,he start script is o(ten located inC /
path/to/ser=er/httpsFser=ername/start; %ou may also need to edit the
con(iguration (iles that are located inC /path/to/ser=er/httpsFser=ername/con#iE/;
1; Add the (olloEing line to mime.types >you can do that #y the administration server?C
type>maEnusFinternal/xFhttpdFphp exts>php
0; +dit maEnus.con# >(or servers _^ K? or obj.con# >(or servers ` K? and add the (olloEingA
shli# Eill vary depending on your systemA it Eill #e something li"e /
opt/netscape/suitespot/bin/libphp1.so; %ou should place the (olloEing lines
a(ter m6me t?pes 6n6t;
4nit #n>"loadFmodules" #uncs>"php1%init,php1%execute,php1%auth%trans" shlib>"/opt/netscape/suitespot/bin/libphp1.so"
4nit #n>"php1%init" Oate4nit>"yes" error&trinE>"Sailed to initiali0e H!" )php%ini>"/path/to/php.ini"/
>P&P _^ 8;7;7? ,he php_6n6 parameter is optional #ut Eith it you can place your php.ini in
your Ee#server con(ig directory;
7; 5on(igure the de(ault o#'ect in obj.con# >(or virtual server classes Pversion K;3RQ in their
=ser=er.obj.con#?C
<?bject name>"de#ault">
.
.
.
.U.?*E this next line should happen a#ter all M?bject*ypeM and be#ore all M,ddOoEM lines
&er=ice #n>"php1%execute" type>"maEnusFinternal/xFhttpdFphp" )iniIey>=alue iniIey>=alue .../
.
.
</?bject>
>P&P _^ 8;7;7? As additional parameters you can add some special php.ini2valuesA (or
eFample you can set a #ocroot:*/path/to/#ocroot* speci(ic to the conteFt php;_e8ecute is called;
For #oolean ini2"eys please use 3D1 as valueA not *On*C*O99*C... >this Eill not Eor" correctly?A e;g;
Dl61.output_compress6on:1 instead o( Dl61.output_compress6on:*On*
8; ,his is only needed i( you Eant to con(igure a directory that only consists o( P&P scripts >same
li"e a cEiFbin directory?C
<?bject name>"xFhttpdFphp">
?bject*ype #n>"#orceFtype" type>"maEnusFinternal/xFhttpdFphp"
&er=ice #n>php1%execute )iniIey>=alue iniIey>=alue .../
</?bject>
A(ter that you can con(igure a directory in the Administration server and assign it the style 8=
http#=php; All (iles in it Eill get eFecuted as P&P; ,his is nice to hide P&P usage #y renaming
(iles to .html;
4; etup o( authenticationC P&P authentication cannot #e used Eith any other authentication; ALL
A@,&+N,.5A,.ON . PA+D ,O %O@R P&P 5R.P,; ,o con(igure P&P Authentication
(or the entire serverA add the (olloEing line to your de(ault o#'ectC
<?bject name>"de#ault">
,uth*rans #n>php1%auth%trans
.
.
.
</?bject>
K; ,o use P&P Authentication on a single directoryA add the (olloEingC
<?bject ppath>"d@VpathVtoVauthenticatedVdirVW">
,uth*rans #n>php1%auth%trans
</?bject>
Nota- ,he stac"size that P&P uses depends on the con(iguration o( the Ee#server; .(
you get crashes Eith very large P&P scriptsA it is recommended to raise it Eith the
Admin erver >in the section =MAGN@ +D.,OR=?;
CFI en5ironment and recommended modifications in php.ini
.mportant Ehen Eriting P&P scripts is the (act that un !LDun ON+ LDiPlanetDNetscape is a
multithreaded Ee# server; Because o( that all re/uests are running in the same process space >the
space o( the Ee#server itsel(? and this space has only one environment; .( you Eant to get 5G.
varia#les li"e +,T!_0N3OA !TT+_!OST etc; it is not the correct Eay to try this in the old P&P 7;F
Eay Eith geten5./ or a similar Eay >register glo#als to environmentA '_EN(?; %ou Eould only get
the environment o( the running Ee#server Eithout any valid 5G. varia#lesa
Nota- Lhy are there >invalid? 5G. varia#les in the environmentN
AnsEerC ,his is #ecause you started the Ee#server process (rom the admin server Ehich
runs the startup script o( the Ee#serverA you Eanted to startA as a 5G. script >a 5G.
script inside o( the admin servera?; ,his is Ehy the environment o( the started Ee#server
has some 5G. environment varia#les in it; %ou can test this #y starting the Ee#server
not (rom the administration server; @se the command line as root user and start it
manually 2 you Eill see there are no 5G.2li"e environment varia#les;
imply change your scripts to get 5G. varia#les in the correct Eay (or P&P 8;F #y using the
superglo#al '_SER(ER; .( you have older scripts Ehich use '!TT+_!OSTA etc;A you should turn on
reE6ster_Elo1als in php.ini and change the varia#le order too >importantC remove *E* (rom itA
#ecause you do not need the environment here?C
=ariables%order > "-R&"
reEister%Elobals > ?n
,pecial use for error pages or self(made directory listings .PHP GH 8.7.7/
%ou can use P&P to generate the error pages (or *;0; Not 3oun#* or similar; Add the (olloEing line
to the o#'ect in obj.con# (or every error page you Eant to overEriteC
Error #n>"php1%execute" code>XXX script>"/path/to/script.php" )iniIey>=alue iniIey>=alue.../
Ehere FFF is the &,,P error code; Please delete any other Error directives Ehich could inter(ere
Eith yours; .( you Eant to place a page (or all errors that could eFistA leave the co#e parameter out;
%our script can get the &,,P status code Eith '_SER(ER)<ERROR_TB+E<.;
Another possi#ility is to generate sel(2made directory listings; !ust create a P&P script Ehich
displays a directory listing and replace the corresponding de(ault ervice line (or t?pe:*maEnus=
6nternal/#6rector?* in obj.con# Eith the (olloEingC
&er=ice #n>"php1%execute" type>"maEnusFinternal/directory" script>"/path/to/script.php" )iniIey>=alue iniIey>=alue.../
For #oth error and directory listing pages the original @R. and translated @R. are in the varia#les
'_SER(ER)<+,T!_0N3O<. and '_SER(ER)<+,T!_TR,NS4,TED<.;
Note about nsapi>5irtual./ and subre?uests .PHP GH 8.7.7/
,he NAP. module noE supports the nsapi>5irtual./ (unction >aliasC 5irtual./? to ma"e
su#re/uests on the Ee#server and insert the result in the Ee#page; ,his (unction uses some
undocumented (eatures (rom the NAP. li#rary; On @niF the module automatically loo"s (or the
needed (unctions and uses them i( availa#le; .( notA nsapi>5irtual./ is disa#led;
Nota- But #e EarnedC upport (or nsapi>5irtual./ is +JP+R.M+N,ALaaa
CFI and commandline setups
,he de(ault is to #uild P&P as a 5G. program; ,his creates a commandline interpreterA Ehich can #e
used (or 5G. processingA or (or non2Ee#2related P&P scripting; .( you are running a Ee# server P&P
has module support (orA you should generally go (or that solution (or per(ormance reasons;
&oEeverA the 5G. version ena#les users to run di((erent P&P2ena#led pages under di((erent user2
ids;
A5iso
Al usar el modo 5G.A vuestro servidor esta eFpuesto a di(erentes ata/ues; Por (avorA leer la secci-n
eguridad con 5G. para aprender como de(enderse de estos ata/ues;
As o( P&P 8;7;3A some important additions have happened to P&P; A neE AP. named 5L. also
eFists and it has the same name as the 5G. #inary; Lhat is installed at G+RE30FH/16n/php depends
on your con(igure line and this is descri#ed in detail in the manual section named @sing P&P (rom
the command line; For (urther details please read that section o( the manual;
Testing
.( you have #uilt P&P as a 5G. programA you may test your #uild #y typing maBe test; .t is alEays a
good idea to test your #uild; ,his Eay you may catch a pro#lem Eith P&P on your plat(orm early
instead o( having to struggle Eith it later;
1enchmarBing
.( you have #uilt P&P 7 as a 5G. programA you may #enchmar" your #uild #y typing maBe bench;
Note that i( sa(e mode is on #y de(aultA the #enchmar" may not #e a#le to (inish i( it ta"es longer
then the 73 seconds alloEed; ,his is #ecause the set>time>limit./ can not #e used in sa(e mode; @se
the maFZeFecutionZtime con(iguration setting to control this time (or your oEn scripts; maBe bench
ignores the con(iguration (ile;
Nota- maBe bench is only availa#le (or P&P 7;
)sing Cariables
ome server supplied environment varia#les are not de(ined in the current 5G.D1;1 speci(ication;
Only the (olloEing varia#les are de(ined thereC ,UT!_TB+EA CONTENT_4EN-T!A
CONTENT_TB+EA -,TEI,B_0NTER3,CEA +,T!_0N3OA +,T!_TR,NS4,TEDA
5UERB_STR0N-A REMOTE_,DDRA REMOTE_!OSTA REMOTE_0DENTA REMOTE_USERA
RE5UEST_MET!ODA SCR0+T_N,MEA SER(ER_N,MEA SER(ER_+ORTA
SER(ER_+ROTOCO4A and SER(ER_SO3TI,RE; +verything else should #e treated as Hvendor
eFtensionsH;
HP()I specific installation notes
,his section contains notes and hints speci(ic to installing P&P on &P2@J systems; >5ontri#uted #y
paulZmc"ay at clearEater2it dot co dot u"?;
Nota- ,hese tips Eere Eritten (or P&P 8;3;8 and Apache 1;7;9;
1; %ou need gzipA doEnload a #inary distri#ution (rom
http@//hpux.connect.orE.uI/#tp/hpux/-nu/E0ipF6.C.1a/E0ipF6.C.1aF
sdF62.C2.depot.Y uncompress the (ile and install using sEinstall;
0; %ou need gccA doEnload a #inary distri#ution (rom
http@//EateIeep.cs.utah.edu/#tp/hpux/-nu/EccFC.K5.C/EccFC.K5.CF
sdF62.C2.depot.E0; uncompress this (ile and install gcc using sEinstall;
7; %ou need the GN@ #inutilsA you can doEnload a #inary distri#ution (rom
http@//hpux.connect.orE.uI/#tp/hpux/-nu/binutilsFC.K.6/binutilsF
C.K.6FsdF62.C2.depot.E0; uncompress this (ile and install #inutils using sEinstall;
8; %ou noE need #isonA you can doEnload a #inary distri#ution (rom
http@//hpux.connect.orE.uI/#tp/hpux/-nu/bisonF6.CJ/bisonF6.CJF
sdF62.C2.depot.E0A install as a#ove;
4; %ou noE need (leFA you need to doEnload the source (rom one o( the httpCDDEEE;gnu;org
mirrors; .t is in the non2gnu directory o( the (tp site; DoEnload the (ileA gun6ipA then tar (+5f it;
Go into the neEly created (leF directory and run .AconfigureA (olloEed #y maBeA and then maBe
install;
.( you have errors hereA itHs pro#a#ly #ecause gcc etc; are not in your PA,& so add them to your
PA,&;
K; DoEnload the P&P and apache sources;
:; gun6ip and tar (+5f them; Le need to hac" a couple o( (iles so that they can compile OS;
M; Firstly the con(igure (ile needs to #e hac"ed #ecause it seems to lose trac" o( the (act that you are
a hpuF machineA there Eill #e a #etter Eay o( doing this #ut a cheap and cheer(ul hac" is to put
lt_tarEet:hpu810.20 on line 8:0MK o( the con(igure script;
9; NeFtA the Apache GuessO (ile needs to #e hac"ed; @nder apache%6.<.K/src/helpers
change line M9 (rom echo *hp'G!+UFM,C!H=hpu8'G!+UF(ERH*J e86t 0 toC echo *hp'
G!+UFM,C!H=hp=hpu8'G!+UF(ERH*J e86t 0
13;%ou cannot install P&P as a shared o#'ect under &P2@J so you must compile it as a staticA 'ust
(olloE the instructions at the Apache page;
11;P&P and Apache should have compiled OSA #ut Apache EonHt start; you need to create a neE
user (or ApacheA e;g; EEEA or apache; %ou then change lines 040 and 047 o( the
con#/httpd.con# in Apache so that instead o(
+ser nobody
-roup noEroup
you have something li"e
+ser 888
-roup sys
,his is #ecause you canHt run Apache as no#ody under hp2uF; Apache and P&P should then Eor";
Jpen1,K installation notes
,his section contains notes and hints speci(ic to installing P&P on OpenBD 7;K;
)sing 1inary PacBages
@sing #inary pac"ages to install P&P on OpenBD is the recommended and simplest method; ,he
core pac"age has #een separated (rom the various modulesA and each can #e installed and removed
independently (rom the others; ,he (iles you need can #e (ound on your OpenBD 5D or on the
F,P site;
,he main pac"age you need to install is php1FcoreF1.<.J.tE0A Ehich contains the #asic
engine >plus getteFt and iconv?; NeFtA ta"e a loo" at the module pac"agesA such as php1FmysQlF
1.<.J.tE0 or php1FimapF1.<.J.tE0; %ou need to use the php+s command to activate and
deactivate these modules in your php.ini;
E'emplo 8(<. Jpen1,K PacBage Install E+ample
U pIE%add php1FcoreF1.<.J.tE0
U /usr/local/sbin/phpxs Fs
U cp /usr/local/share/doc/php1/php.iniFrecommended /=ar/888/con#/php.ini
3add in mysQl9
U pIE%add php1FmysQlF1.<.J.tE0
U /usr/local/sbin/phpxs Fa mysQl
3add in imap9
U pIE%add php1FimapF1.<.J.tE0
U /usr/local/sbin/phpxs Fa imap
3remo=e mysQl as a test9
U pIE%delete php1FmysQlF1.<.J
U /usr/local/sbin/phpxs Fr mysQl
3install the E,' libraries9
U pIE%add php1FpearF1.<.J.tE0
Read the pac"ages>:? manual page (or more in(ormation a#out #inary pac"ages on OpenBD;
)sing Ports
%ou can also compile up P&P (rom source using the ports tree; &oEeverA this is only recommended
(or users (amiliar Eith OpenBD; ,he P&P 8 port is split into tEo su#2directoriesC core and
eFtensions; ,he eFtensions directory generates su#2pac"ages (or all o( the supported P&P modules;
.( you (ind you do not Eant to create some o( these modulesA use the no>L FLA$OR; For eFampleA
to s"ip #uilding the imap moduleA set the FLA$OR to no>imap;
Common Problems
,he de(ault install o( Apache runs inside a chroot>0? 'ailA Ehich Eill restrict P&P scripts to
accessing (iles under /=ar/888; %ou Eill there(ore need to create a /=ar/888/tmp
directory (or P&P session (iles to #e storedA or use an alternative session #ac"end; .n
additionA data#ase soc"ets need to #e placed inside the 'ail or listen on the localhost
inter(ace; .( you use netEor" (unctionsA some (iles (rom /etc such as /
etc/resol=.con# and /etc/ser=ices Eill need to #e moved into /
=ar/888/etc; ,he OpenBD P+AR pac"age automatically installs into the correct chroot
directoriesA so no special modi(ication is needed there; More in(ormation on the OpenBD
Apache is availa#le in the OpenBD FAO;
,he OpenBD 7;K pac"age (or the gd eFtension re/uires JFreeMK to #e installed; .( you do
not Eish to use some o( the (ont (eatures that re/uire J11A install the php1FEdF1.<.JF
no%x66.tE0 pac"age instead;
Jlder Meleases
Older releases o( OpenBD used the FLA$OR system to compile up a statically lin"ed P&P;
ince it is hard to generate #inary pac"ages using this methodA it is noE deprecated; %ou can still
use the old sta#le ports trees i( you EishA #ut they are unsupported #y the OpenBD team; .( you
have any comments a#out thisA the current maintainer (or the port is Anil Madhavapeddy >avsm at
open#sd dot org?;
,olaris specific installation tips
,his section contains notes and hints speci(ic to installing P&P on olaris systems;
Me?uired soft3are
olaris installs o(ten lac" 5 compilers and their related tools; Read this FAO (or in(ormation on
Ehy using GN@ versions (or some o( these tools is necessary; ,he re/uired so(tEare is as (olloEsC
gcc >recommendedA other 5 compilers may Eor"?
ma"e
(leF
#ison
m8
autocon(
automa"e
perl
gzip
tar
GN@ sed
.n additionA you Eill need to install >and possi#ly compile? any additional so(tEare speci(ic to your
con(igurationA such as Oracle or MyOL;
)sing PacBages
%ou can simpli(y the olaris install process #y using p"gadd to install most o( your needed
components;
Fentoo installation notes
,his section contains notes and hints speci(ic to installing P&P on Gentoo LinuF;
)sing Portage .emerge/
Lhile you can 'ust doEnload the P&P source and compile it yoursel(A using GentooHs pac"aging
system is the simplest and cleanest method o( installing P&P; .( you are not (amiliar Eith #uilding
so(tEare on LinuFA this is the Eay to go;
.( you have #uilt your Gentoo system so (arA you are pro#a#ly used to Portage already; .nstalling
Apache and P&P is no di((erent than the other system tools;
,he (irst decision you need to ma"e is Ehether you Eant to install Apache 1;7;F or Apache 0;F;
Lhile #oth can #e used Eith P&PA the steps given #eloE Eill use Apache 1;7;F; Another thing to
consider is Ehether your local Portage tree is up to date; .( you have not updated it recentlyA you
need to run emerge sync #e(ore anything else; ,his EayA you Eill #e using the most recent sta#le
version o( Apache and P&P;
NoE that everything is in placeA you can use the (olloEing eFample to install Apache and P&PC
E'emplo 8(=. Fentoo Install E+ample 3ith Apache !.7
U emerEe V<apacheFC
U +&E>"FW" emerEe php mod%php
U ebuild /=ar/db/pIE/de=Fphp/mod%phpF<your H =ersion>/mod%phpF<your H =ersion>.ebuild con#iE
U nano /etc/con#.d/apache
,dd "FL H1" to ,,RHE%?*&

U rcFupdate add apache de#ault
U /etc/init.d/apache start
%ou can read more a#out emerge in the eFcellent Portage Manual provided on the Gentoo Ee#site;
.( you need to use Apache 0A you can simply use emerge apache in the last eFample;
1etter control on configuration
.n the last sectionA P&P Eas emerged Eithout any activated modules; As o( this EritingA the only
module activated #y de(ault Eith Portage is JML Ehich is needed #y P+AR; ,his may not #e Ehat
you Eant and you Eill soon discover that you need more activated modulesA li"e MyOLA getteFtA
GDA etc;
Lhen you compile P&P (rom source yoursel(A you need to activate modules via the configure
command; Lith GentooA you can simply provide @+ (lags Ehich Eill #e passed to the con(igure
script automatically; ,o see Ehich @+ (lags to use Eith emergeA you can tryC
E'emplo 8(N. Fetting the list of 5alid ),E flags
U +&E>"FW" emerEe Fp= php
)ebuild . / de=Fphp/phpF1.<.GFr6 FX FberIdb Fcrypt Fcurl FdebuE Fdoc
F#d#tI F#irebird F#lash F#reetds FEd FEdFexternal FEdbm FEmp Fhardenedphp
Fimap Fin#ormix Fip=G Fja=a FjpeE FIerberos Fldap Fmcal Fmemlimit FmssQl
FmysQl Fncurses Fnls FociJ Fodbc Fpam Fpd#lib FpnE FpostEres FQt Freadline
Fsnmp Fspell Fssl Fti## Ftruetype FxmlC Fya0 <,JHG IZ
As you can see (rom the last outputA P&P considers a lot o( @+ (lags; Loo" at them closely and
choose Ehat you need; .( you choose a (lag and you do not have the proper li#rariesA Portage Eill
compile them (or you; .t is a good idea to use emerge (p5 again to see Ehat Portage Eill compile in
accordance to your @+ (lags; As an eFampleA i( you do not have J installed and you choose to
include J in the @+ (lagsA Portage Eill compile J prior to P&PA Ehich can ta"e a couple o( hours;
.( you choose to compile P&P Eith MyOLA c@RL and GD supportA the command Eill loo"
something li"e thisC
E'emplo 8(O. Install PHP 3ith ),E flags
U +&E>"FW curl mysQl Ed" emerEe php mod%php
As in the last eFampleA do not (orget to emerge php as Eell as modZphp; php is responsi#le (or the
command line version o( P&P as modZphp is (or the Apache module version o( P&P;
Common Problems
.( you see the P&P source instead o( the result the script should produceA you have pro#a#ly
(orgot to edit /etc/con#.d/apache; Apache needs to #e started Eith the 2D P&P8 (lag;
,o see i( the (lag is presentA you should #e a#le to see it Ehen using ps a+ P grep apache
Ehile Apache is running;
Due to slotting pro#lemsA you might end up Eith more than one version o( P&P installed on
your system; .( this is the caseA you need to unmerge the old versions manually #y using
emerge unmerge mod>php(Qold 5ersionG;
.( you cannot emerge P&P #ecause o( !avaA try putting (L in (ront o( your @+ (lags li"e in
the a#ove eFamples;
.( you are having pro#lems con(iguring Apache and P&PA you can alEays search the Gentoo
Forums; ,ry searching Eith the "eyEords =Apache P&P=;
Captulo 9. Installation on Mac J, I
,his section contains notes and hints speci(ic to installing P&P on Mac O J; ,here are tEo slightly
di((erent versions o( Mac O JA 5lient and erverA our manual deals Eith installing P&P on #oth
systems; Note that P&P is not availa#le (or MacO 9 and earlier versions;
)sing PacBages
,here are a (eE pre2pac"aged and pre2compiled versions o( P&P (or Mac O J; ,his can help in
setting up a standard con(igurationA #ut i( you need to have a di((erent set o( (eatures >such as a
secure serverA or a di((erent data#ase driver?A you may need to #uild P&P andDor your Ee# server
yoursel(; .( you are un(amiliar Eith #uilding and compiling your oEn so(tEareA itHs Eorth chec"ing
Ehether some#ody has already #uilt a pac"aged version o( P&P Eith the (eatures you need;
Compiling for J, I ,er5er
Mac J, I ,er5er install.
1; Get the latest distri#utions o( Apache and P&P;
0; @ntar themA and run the configure program on Apache li"e so;
./con#iEure FFexecFpre#ix>/usr V
FFlocalstatedir>/=ar V
FFmandir>/usr/share/man V
FFlibexecdir>/&ystem/Oibrary/,pache/"odules V
FFiconsdir>/&ystem/Oibrary/,pache/4cons V
FFincludedir>/&ystem/Oibrary/Srame8orIs/,pache.#rame8orI/(ersions/6.</Headers V
FFenableFshared>max V
FFenableFmodule>most V
FFtarEet>apache
7; .( you Eant the compiler to do some optimizationA you may also Eant to add this lineC
seten= ?*4">F?C
8; NeFtA go to the P&P 8 source directory and con(igure it;
./con#iEure FFpre#ix>/usr V
FFsyscon#dir>/etc V
FFlocalstatedir>/=ar V
FFmandir>/usr/share/man V
FF8ithFxml V
FF8ithFapache>/src/apache%6.<.6C
.( you have any other additions >MyOLA GDA etc;?A #e sure to add them here; For the ==76th=
apache stringA put in the path to your apache source directoryA (or eFample /
src/apache%6.<.6C;
4; ,ype maBe and maBe install; ,his Eill add a directory to your Apache source directory under
src/modules/php1;
K; NoEA recon(igure Apache to #uild in P&P 8;
./con#iEure FFexecFpre#ix>/usr V
FFlocalstatedir>/=ar V
FFmandir>/usr/share/man V
FFlibexecdir>/&ystem/Oibrary/,pache/"odules V
FFiconsdir>/&ystem/Oibrary/,pache/4cons V
FFincludedir>/&ystem/Oibrary/Srame8orIs/,pache.#rame8orI/(ersions/6.</Headers V
FFenableFshared>max V
FFenableFmodule>most V
FFtarEet>apache V
FFacti=ateFmodule>src/modules/php1/libphp1.a
%ou may get a message telling you that libmodphp1.a is out o( date; .( soA go to the
src/modules/php1 directory inside your Apache source directory and run this commandC
ranlib libmodphp8.a; ,hen go #ac" to the root o( the Apache source directory and run the a#ove
configure command again; ,hatHll #ring the lin" ta#le up to date; Run maBe and maBe install
again;
:; 5opy and rename the php.iniFdist (ile to your bin directory (rom your P&P 8 source
directoryC cp php.iniFdist /usr/local/bin/php.ini or >i( your donHt have a local
directory? cp php.iniFdist /usr/bin/php.ini;
Compiling for MacJ, I Client
,he (olloEing instructions Eill help you install a P&P module (or the Apache Ee# server included
in MacO J; ,his version includes support (or the MyOL and PostgreOL data#ases; ,hese
instructions are graciously provided #y Marc Liyanage;
A5iso
Be care(ul Ehen you do thisA you could screE up your Apache Ee# servera
Do this to installC
1; Open a terminal EindoE;
0; ,ype 8Eet
http@//888.diax.ch/users/liyanaEe/so#t8are/macosx/libphp1.so.E0A
Eait (or the doEnload to (inish;
7; ,ype Eun0ip libphp1.so.E0;
8; ,ype sudo apxs Fi Fa Fn php1 libphp1.so
4; NoE type sudo open Fa *extEdit /etc/httpd/httpd.con#; ,eFt+dit Eill open
Eith the Ee# server con(iguration (ile; Locate these tEo lines toEards the end o( the (ileC >@se
the Find command?
U,dd*ype application/xFhttpdFphp .php
U,dd*ype application/xFhttpdFphpFsource .phps
Remove the tEo hash mar"s >K?A then save the (ile and /uit ,eFt+dit;
K; FinallyA type sudo apachectl Erace#ul to restart the Ee# server;
P&P should noE #e up and running; %ou can test it #y dropping a (ile into your &ites (older
Ehich is called test.php; .nto that (ileA Erite this lineC $%php php6n9oLM %&;
NoE open up 127.0.0.1/N?our_username/test.php in your Ee# #roEser; %ou should see a status
ta#le Eith in(ormation a#out the P&P module;
Captulo <. Installation on 2indo3s systems
,his section applies to LindoEs 9MDMe and LindoEs N,D0333DJPD0337; P&P Eill not Eor" on 1K
#it plat(orms such as LindoEs 7;1 and sometimes Ee re(er to the supported LindoEs plat(orms as
Lin70; LindoEs 94 is no longer supported as o( P&P 8;7;3;
,here are tEo main Eays to install P&P (or LindoEsC either manually or #y using the installer;
.( you have Microso(t $isual tudioA you can also #uild P&P (rom the original source code;
Once you have P&P installed on your LindoEs systemA you may also Eant to load various
eFtensions (or added (unctionality;
A5iso
,here are several all2in2one installers over the .nternetA #ut none o( those are endorsed #y P&P;netA
as Ee #elieve that the manual installation is the #est choice to have your system secure and
optimised;
2indo3s Installer
,he LindoEs P&P installer is availa#le (rom the doEnloads page at
httpCDDEEE;php;netDdoEnloads;php; ,his installs the C-0 ers6on o( P&P and (or ..A PLA and
JitamiA it con(igures the Ee# server as Eell; ,he installer does not include any eFtra eFternal P&P
eFtensions >phpZV;dll? as youHll only (ind those in the LindoEs Iip Pac"age and P+5L doEnloads;
Nota- Lhile the LindoEs installer is an easy Eay to ma"e P&P Eor"A it is restricted in
many aspects asA (or eFampleA the automatic setup o( eFtensions is not supported; @se o(
the installer isnHt the pre(erred method (or installing P&P;
FirstA install your selected &,,P >Ee#? server on your systemA and ma"e sure that it Eor"s;
Run the eFecuta#le installer and (olloE the instructions provided #y the installation Eizard; ,Eo
types o( installation are supported 2 standardA Ehich provides sensi#le de(aults (or all the settings it
canA and advancedA Ehich as"s /uestions as it goes along;
,he installation Eizard gathers enough in(ormation to set up the php.ini (ileA and con(igure
certain Ee# servers to use P&P; One o( the Ee# servers the P&P installer does not con(igure (or is
ApacheA so youHll need to con(igure it manually;
Once the installation has completedA the installer Eill in(orm you i( you need to restart your systemA
restart the serverA or 'ust start using P&P;
A5iso
Be aEareA that this setup o( P&P is not secure; .( you Eould li"e to have a secure P&P setupA youHd
#etter go on the manual EayA and set every option care(ully; ,his automatically Eor"ing setup
gives you an instantly Eor"ing P&P installationA #ut it is not meant to #e used on online servers;
Manual Installation ,teps
,his install guide Eill help you manually install and con(igure P&P Eith a Ee# server on Microso(t
LindoEs; ,o get started youHll need to doEnload the zip #inary distri#ution (rom the doEnloads
page at httpCDDEEE;php;netDdoEnloads;php;
Although there are many all2in2one installation "itsA and Ee also distri#ute a P&P installer (or
Microso(t LindoEsA Ee recommend you ta"e the time to setup P&P yoursel( as this Eill provide
you Eith a #etter understanding o( the systemA and ena#les you to install P&P eFtensions easily
Ehen needed;
)pgrading from a pre5ious PHP 5ersion- Previous editions o( the manual suggest
moving various ini and DLL (iles into your %,+M >i;e; R@V74.L?7&? (older and
Ehile this simpli(ies the installation procedure it ma"es upgrading di((icult; Le advise
you remove all o( these (iles >li"e php.ini and P&P related DLLs (rom the LindoEs
%,+M (older? #e(ore moving on Eith a neE P&P installation; Be sure to #ac"up
these (iles as you might #rea" the entire system; ,he old php.ini might #e use(ul in
setting up the neE P&P as Eell; And as youHll soon learnA the pre(erred method (or
installing P&P is to "eep all P&P related (iles in one directory and have this directory
availa#le to your systems PA,&;
MKAC re?uirements- .( you use Microso(t I6n#o7s OP/NT; doEnload the latest
version o( the Microso(t Data Access 5omponents >MDA5? (or your plat(orm; MDA5
is availa#le at httpCDDmsdn;microso(t;comDdataD; ,his re/uirement eFists #ecause ODB5
is #uilt into the distri#uted LindoEs #inaries;
,he (olloEing steps should #e completed on all installations #e(ore any server speci(ic instructions
are per(ormedC
+Ftract the distri#ution (ile into a directory o( your choice; .( you are installing P&P 8A eFtract to
R@VA as the zip (ile eFpands to a (oldername li"e phpF1.<.HF7in<C; .( you are installing P&P 4A
eFtract to R@Vphp as the zip (ile doesnHt eFpand as in P&P 8; %ou may choose a di((erent location
#ut do not have spaces in the path >li"e R@VroEram SilesVH? as some Ee# servers Eill
crash i( you do;
,he directory structure eFtracted (rom the zip is di((erent (or P&P versions 8 and 4 and loo" li"e as
(olloEsC
E'emplo <(!. PHP 8 pacBage structure
c@Vphp
T
[FFcli
T T
T TFphp.exe FF RO4 executable F ?.OP #or commandline scriptinE
T
[FFdlls FF support LOOs reQuired by some extensions
T T
T TFexpat.dll
T T
T TF#d#tI.dll
T T
T TF...
T
[FFextensions FF extension LOOs #or H
T T
T TFphp%b0C.dll
T T
T TFphp%cpd#.dll
T T
T TF..
T
[FFmibs FF support #iles #or &."
T
[FFopenssl FF support #iles #or ?penssl
T
[FFpd#Frelated FF support #iles #or LS
T
[FFsapi FF &,4 3ser=er module support9 LOOs
T T
T TFphp1acti=escript.dll
T T
T TFphp1apache.dll
T T
T TFphp1apacheC.dll
T T
T TF..
T
[FFE,' FF initial copy o# E,'
T
T
TFEoFpear.bat FF E,' setup script
T
TF..
T
TFphp.exe FF R-4 executable
T
TF..
T
TFphp.iniFdist FF de#ault php.ini settinEs
T
TFphp.iniFrecommended FF recommended php.ini settinEs
T
TFphp1ts.dll FF core H LOO
T
TF...
OrC
E'emplo <(*. PHP 9 pacBage structure
c@Vphp
T
[FFde=
T T
T TFphp5ts.lib
T
[FFext FF extension LOOs #or H
T T
T TFphp%b0C.dll
T T
T TFphp%cpd#.dll
T T
T TF..
T
[FFextras
T T
T [FFmibs FF support #iles #or &."
T T
T [FFopenssl FF support #iles #or ?penssl
T T
T [FFpd#Frelated FF support #iles #or LS
T T
T TFmime.maEic
T
[FFpear FF initial copy o# E,'
T
T
TFEoFpear.bat FF E,' setup script
T
TF#d#tI.dll
T
TF..
T
TFphpFcEi.exe FF R-4 executable
T
TFphpF8in.exe FF executes scripts 8ithout an opened command prompt
T
TFphp.exe FF RO4 executable F ?.OP #or command line scriptinE
T
TF..
T
TFphp.iniFdist FF de#ault php.ini settinEs
T
TFphp.iniFrecommended FF recommended php.ini settinEs
T
TFphp5acti=escript.dll
T
TFphp5apache.dll
T
TFphp5apacheC.dll
T
TF..
T
TFphp5ts.dll FF core H LOO
T
TF...
Notice the di((erences and similarities; Both P&P 8 and P&P 4 have a 5G. eFecuta#leA a 5L.
eFecuta#leA and server modulesA #ut they are located in di((erent (olders andDor have di((erent
names; Lhile P&P 8 pac"ages have the server modules in the sapi (olderA P&P 4 distri#utions
have no such directory and instead theyHre in the P&P (older root; ,he supporting DLLs (or the P&P
4 eFtensions are also not in a seperate directory;
Nota- .n P&P 8A you should move all (iles located in the dll and sapi (olders to the
main (older >e;g; R@Vphp?;
&ere is a list o( server modules shipped Eith P&P 8 and P&P 4C
sapi/php1acti=escript.dll 3php5acti=escript.dll9 2 Activecript
engineA alloEing you to em#ed P&P in your LindoEs applications;
sapi/php1apache.dll 3php5apache.dll9 2 Apache 1;7;F module;
sapi/php1apacheC.dll 3php5apacheC.dll9 2 Apache 0;3;F module;
sapi/php1isapi.dll 3php5isapi.dll9 2 .AP. Module (or .AP. compliant
Ee# servers li"e .. 8;3DPL 8;3 or neEer;
sapi/php1nsapi.dll 3php5nsapi.dll9 2 unDiPlanetDNetscape server module;
sapi/php1pi<8eb.dll 3no Dalent in H 59 2 Pi7Le# server module;
erver modules provide signi(icantly #etter per(ormance and additional (unctionality compared to
the 5G. #inary; ,he 5L. version is designed to let you use P&P (or command line scripting; More
in(ormation a#out 5L. is availa#le in the chapter a#out using P&P (rom the command line;
A5iso
,he AP. modules have #een signi(icantly improved as o( the 8;1 releaseA hoEeverA in older
systems you may encounter server errors or other server modules (ailingA such as AP;
,he 5G. and 5L. #inariesA and the Ee# server modules all re/uire the php1ts.dll
>php5ts.dll? (ile to #e availa#le to them; %ou have to ma"e sure that this (ile can #e (ound #y
your P&P installation; ,he search order (or this DLL is as (olloEsC
,he same directory (rom Ehere php.exe is calledA or in case you use a AP. moduleA the
Ee# serverHs directory >e;g; R@VroEram SilesV,pache -roupV,pacheCVbin?;
Any directory in your LindoEs +,T! environment varia#le;
,o ma"e php1ts.dll D php5ts.dll availa#le you have three optionsC copy the (ile to the
LindoEs system directoryA copy the (ile to the Ee# serverHs directoryA or add your P&P directoryA
R@Vphp to the +,T!; For #etter maintenanceA Ee advise you to (olloE the last optionA add
R@Vphp to the +,T!A #ecause it Eill #e simpler to upgrade P&P in the (uture; Read more a#out
hoE to add your P&P directory to +,T! in the corresponding FAO entry;
,he neFt step is to set up a valid con(iguration (ile (or P&PA php.ini; ,here are tEo ini (iles
distri#uted in the zip (ileA php.iniFdist and php.iniFrecommended; Le advise you to use
php.iniFrecommendedA #ecause Ee optimized the de(ault settings in this (ile (or per(ormanceA
and security; Read this Eell documented (ile care(ully #ecause it has changes (rom php.iniF
dist that Eill drastically a((ect your setup; ome eFamples are displayZerrors #eing o99 and
magicZ/uotesZgpc #eing o99; .n addition to reading theseA study the ini settings and set every
element manually yoursel(; .( you Eould li"e to achieve the #est securityA then this is the Eay (or
youA although P&P Eor"s (ine Eith these de(ault ini (iles; 5opy your chosen ini2(ile to a directory
that P&P is a#le to (ind and rename it to php.ini; P&P searches (or php.ini in the (olloEing
locations >in order?C
P&P.niDir directive >Apache 0 module only?
!2EB_4OC,4_M,C!0NEQSO3TI,REQ+!+Q0n636le+ath
,he +!+RC environment varia#le
Directory o( P&P >(or 5L.?A or the Ee# serverHs directory >(or AP. modules?
LindoEs directory >R@V8indo8s or R@V8innt?
.( you are running Apache 0A the simpler option is to use the P&P.niDir directive >read the
installation on Apache 0 page?A otherEise your #est option is to set the +!+RC environment
varia#le; ,his process is eFplained in the (olloEing FAO entry;
Nota- .( youHre using N,F on LindoEs N,A 0333A JP or 0337A ma"e sure that the user
running the Ee# server has read permissions to your php.ini >e;g; ma"e it reada#le #y
+veryone?;
,he (olloEing steps are optionalC
+dit your neE php.ini (ile; .( you plan to use Omni&,,PdA do not (olloE the neFt step;
et the docZroot to point to your Ee# servers documentZroot; For eFampleC
doc%root > c@VinetpubV888root // #or 44&/7&
doc%root > c@VapacheVhtdocs // #or ,pache
5hoose the eFtensions you Eould li"e to load Ehen P&P starts; ee the section a#out
LindoEs eFtensionsA a#out hoE to set up oneA and Ehat is already #uilt in; Note that on a
neE installation it is advisa#le to (irst get P&P Eor"ing and tested Eithout any eFtensions
#e(ore ena#ling them in php.ini;
On PL and ..A you can set the #roEscap con(iguration setting to point toC
c@V8indo8sVsystemVinetsr=Vbro8scap.ini on LindoEs 9FDMeA
c@V8inntVsystem<CVinetsr=Vbro8scap.ini on N,D0333A and
c@V8indo8sVsystem<CVinetsr=Vbro8scap.ini on JP; For an up2to2date
bro8scap.iniA read the (olloEing FAO;
P&P is noE setup on your system; ,he neFt step is to choose a Ee# serverA and ena#le it to run P&P;
5hoose a Ee#server (rom the ta#le o( contents;
Acti5e,cript
,his section contains notes speci(ic to the Activecript installation;
Activecript is a EindoEs only AP. that ena#les you to use P&P script in any Activecript
compliant hostA li"e LindoEs cript &ostA APDAP;N+,A LindoEs cript 5omponents or
Microso(t criptlet control;
As o( P&P 4;3;1A Activecript has #een moved to the P+5L repository; Podeis descargar esta DLL
de las eFtensiones P+5L desde la pagina P&P DoEnloads o desde httpCDDsnaps;php;netD;
Nota- %ou should read the manual installation steps (irsta
A(ter installing P&PA you should doEnload the Activecript DLL >php5acti=escript.dll?
and place it in the main P&P (older >e;g; R@Vphp?;
A(ter having all the (iles neededA you must register the DLL on your system; ,o achieve thisA open a
5ommand Prompt EindoE >located in the tart Menu?; ,hen go to your P&P directory #y typing
something li"e c# C:Qphp; ,o register the DLL 'ust type reEsrR2 phpSact6escr6pt.#ll;
,o test i( Activecript is Eor"ingA create a neE (ileA named test.7s9 >the eFtension is very important?
and typeC
<job id>"test">

<script lanEuaEe>"H&cript">
$7&criptF>Echo3"Hello 7orld!"9;
</script>

</job>
ave and dou#le2clic" on the (ile; .( you receive a little EindoE saying =&ello Lorlda= youHre done;
Nota- Activecript doesnHt use the de(ault php.ini (ile; .nsteadA it Eill loo" only in
the same directory as the ;eFe that caused it to load; %ou should create phpF
acti=escript.ini and place it in that (olderA i( you Eish to load eFtensionsA etc;
Microsoft II, A P2,
,his section contains notes and hints speci(ic to .. >Microso(t .nternet .n(ormation erver?; Le
have included installation instructions (or PLD.. 7A PL 8 or neEer and .. 8 or neEer versions;
Important for CFI users- Read the (a/ on cgi;(orceZredirect (or important details; ,his
directive needs to #e set to 0;
A5iso
Al usar el modo 5G.A vuestro servidor esta eFpuesto a di(erentes ata/ues; Por (avorA leer la secci-n
eguridad con 5G. para aprender como de(enderse de estos ata/ues;
2indo3s and P2,AII, 7
,he recommended method (or con(iguring these servers is to use the R+G (ile included Eith the
distri#ution >p8sFphp1cEi.reE in the AP. (older (or P&P 8A or p8sFphp5cEi.reE in the
main (older (or P&P 4?; %ou may Eant to edit this (ile and ma"e sure the eFtensions and P&P install
directories match your con(iguration; Or you can (olloE the steps #eloE to do it manually;
A5iso
,hese steps involve Eor"ing directly Eith the LindoEs registry; One error here can leave your
system in an unsta#le state; Le highly recommend that you #ac" up your registry (irst; ,he P&P
Development team Eill not #e held responsi#le i( you damage your registry;
Run Regedit;
Navigate toC !2EB_4OC,4_M,C!0NE /S?stem /CurrentControlSet /Ser6ces /IRSc /
+arameters /Scr6ptMap;
On the edit menu selectC Ne7=&Str6nE (alue;
,ype in the eFtension you Eish to use (or your php scripts; For eFample .php
Dou#le clic" on the neE string value and enter the path to php.exe in the value data (ield;
eFC R@VphpVphp.exe (or P&P 8A or R@VphpVphpFcEi.exe (or P&P 4;
Repeat these steps (or each eFtension you Eish to associate Eith P&P scripts;
,he (olloEing steps do not a((ect the Ee# server installation and only apply i( you Eant your P&P
scripts to #e eFecuted Ehen they are run (rom the command line >eF; run
R@VmyscriptsVtest.php? or #y dou#le clic"ing on them in a directory vieEer EindoE; %ou
may Eish to s"ip these steps as you might pre(er the P&P (iles to load into a teFt editor Ehen you
dou#le clic" on them;
Navigate toC !2EB_C4,SSES_ROOT
On the edit menu selectC Ne7=&2e?;
Name the "ey to the eFtension you setup in the previous section; eFC .php
&ighlight the neE "ey and in the right side paneA dou#le clic" the =de(ault value= and enter
php96le;
Repeat the last step (or each eFtension you set up in the previous section;
NoE create another Ne7=&2e? under !2EB_C4,SSES_ROOT and name it php96le;
&ighlight the neE "ey php96le and in the right side paneA dou#le clic" the =de(ault value= and
enter +!+ Scr6pt;
Right clic" on the php96le "ey and select Ne7=&2e?A name it Shell;
Right clic" on the Shell "ey and select Ne7=&2e?A name it open;
Right clic" on the open "ey and select Ne7=&2e?A name it comman#;
&ighlight the neE "ey comman# and in the right side paneA dou#le clic" the =de(ault value=
and enter the path to php.exe; eFC c:QphpQphp.e8e =@ T1; >donHt (orget the T1?;
+Fit Regedit;
.( using PL on LindoEsA re#oot to reload the registry;
PL and .. 7 users noE have a (ully operational system; .. 7 users can use a ni(ty tool (rom
teven Genusa to con(igure their script maps;
2indo3s and P2, 8 or ne3er
Lhen installing P&P on LindoEs Eith PL 8 or neEer versionA you have tEo options; One to set
up the P&P 5G. #inaryA the other is to use the .AP. module DLL;
.( you choose the 5G. #inaryA do the (olloEingC
+dit the enclosed p8sFphp1cEi.reE D p8sFphp5cEi.reE (ile >loo" into the AP.
(older (or P&P 8A or in the main (older (or P&P 4? to re(lect the location o( your php.exe D
phpFcEi.exe; Bac"slashes should #e escapedA (or eFampleC
)!2EB_4OC,4_M,C!0NEQSBSTEMQCurrentControlSetQSer6cesQ7RscQparametersQScr6pt
Map. *.php*:*C:QQphpQQphp.e8e* >change to C:QQphpQQphp=cE6.e8e i( you are using P&P 4?
NoE merge this registery (ile into your systemX you may do this #y dou#le2clic"ing it;
.n the PL ManagerA right clic" on a given directory you Eant to add P&P support toA and
select Properties; 5hec" the H+FecuteH chec"#oFA and con(irm;
.( you choose the .AP. moduleA do the (olloEingC
+dit the enclosed p8sFphp1isapi.reE D p8sFphp5isapi.reE (ile >loo" into the
AP. (older (or P&P 8A or in the main (older (or P&P 4? to re(lect the location o( your
php1isapi.dll D php5isapi.dll; Bac"slashes should #e escapedA (or eFampleC
)!2EB_4OC,4_M,C!0NEQSBSTEMQCurrentControlSetQSer6cesQ7RscQparametersQScr6pt
Map. *.php*:*C:QQphpQQsap6QQphp;6sap6.#ll* >or C:QQphpQQphpS6sap6.#ll (or P&P 4? NoE
merge this registery (ile into your systemX you may do this #y dou#le2clic"ing it;
.n the PL ManagerA right clic" on a given directory you Eant to add P&P support toA and
select Properties; 5hec" the H+FecuteH chec"#oFA and con(irm;
2indo3s NTA*DDDAIP and II, 8 or ne3er
,o install P&P on an N,D0333DJP erver running .. 8 or neEerA (olloE these instructions; %ou
have tEo options to set up P&PA using the 5G. #inary >php.exe in P&P 8A or phpFcEi.exe in
P&P 4? or Eith the .AP. module;
.n either caseA you need to start the Microso(t Management 5onsole >may appear as H.nternet
ervices ManagerHA either in your LindoEs N, 8;3 Option Pac" #ranch or the 5ontrol
Panel^_Administrative ,ools under LindoEs 0333DJP?; ,hen right clic" on your Le# server node
>this Eill most pro#a#ly appear as HDe(ault Le# erverH?A and select HPropertiesH;
.( you Eant to use the 5G. #inaryA do the (olloEingC
@nder H&ome DirectoryHA H$irtual DirectoryHA or HDirectoryHA clic" on the H5on(igurationH
#uttonA and then enter the App Mappings ta#;
5lic" AddA and in the +Fecuta#le #oFA typeC C:QphpQphp.e8e (or P&P 8 or C:QphpQphp=
cE6.e8e (or P&P 4 >assuming that you have unziped P&P in c@VphpV?;
.n the +Ftension #oFA type the (ile name eFtension you Eant associated Eith P&P scripts;
Leave HMethod eFclusionsH #lan"A and chec" the Hcript engineH chec"#oF; %ou may also li"e
to chec" the Hchec" that (ile eFistsH #oF 2 (or a small per(ormance penaltyA .. >or PL? Eill
chec" that the script (ile eFists and sort out authentication #e(ore (iring up P&P; ,his means
that you Eill get sensi#le 838 style error messages instead o( 5G. errors complaining that
P&P did not output any data;
%ou must start over (rom the previous step (or each eFtension you Eant associated Eith P&P
scripts; .php and .phtml are commonA although .phpR may #e re/uired (or legacy
applications;
et up the appropriate security; >,his is done in .nternet ervice Manager?A and i( your N,
erver uses N,F (ile systemA add eFecute rights (or .Z@RZ to the directory that contains
php.exe D phpFcEi.exe;
,o use the .AP. moduleA do the (olloEingC
.( you donHt Eant to per(orm &,,P Authentication using P&PA you can >and should? s"ip this
step; @nder .AP. FiltersA add a neE .AP. (ilter; @se P&P as the (ilter nameA and supply a
path to the php1isapi.dll D php5isapi.dll;
@nder H&ome DirectoryHA clic" on the H5on(igurationH #utton; Add a neE entry to the
Application Mappings; @se the path to the php1isapi.dll D php5isapi.dll as the
+Fecuta#leA supply .php as the eFtensionA leave HMethod eFclusionsH #lan"A and chec" the
Hcript engineH chec"#oF;
top .. completely >N+, ,OP iisadmin?
tart .. again >N+, ,AR, E7svc?
.( you eFperience 133b 5P@ usage a(ter some timeA turn o(( the .. setting Cache 0S,+0
,ppl6cat6on;
Apache !.7.+ on Microsoft 2indo3s
,his section contains notes and hints speci(ic to Apache 1;7;F installs o( P&P on Microso(t
LindoEs systems; ,here are also instructions and notes (or Apache 0 on a separate page;
Nota- Please read the manual installation steps (irsta
,here are tEo Eays to set up P&P to Eor" Eith Apache 1;7;F on LindoEs; One is to use the 5G.
#inary >php.exe (or P&P 8 and phpFcEi.exe (or P&P 4?A the other is to use the Apache
Module DLL; .n either case you need to edit your httpd.con# to con(igure Apache to Eor" Eith
P&PA and then restart the server;
.t is Eorth noting here that noE the AP. module has #een made more sta#le under LindoEsA Ee
recommend itHs use a#ove the 5G. #inaryA since it is more transparent and secure;
Although there can #e a (eE variations o( con(iguring P&P under ApacheA these are simple enough
to #e used #y the neEcomer; Please consult the Apache Documentation (or (urther con(iguration
directives;
A(ter changing the con(iguration (ileA remem#er to restart the serverA (or eFampleA NET ,TJP
APACHE (olloEed #y NET ,TAMT APACHEA i( you run Apache as a LindoEs erviceA or use
your regular shortcuts;
Nota- Recordar /ue cuando utiliceis valores de PA,& en LindoEs con #arras
invertidas tal como c@VdirectoryV#ile.extA estas de#en de ser convertidas a
#arras inclinadasA c@/directory/#ile.ext;
Installing as an Apache module
%ou should add the (olloEing lines to your Apache httpd.con# (ileC
E'emplo <(7. PHP as an Apache !.7.+ module
,his assumes P&P is installed to c@Vphp; Ad'ust the path i( this is not the case;
For P&P 8C
U ,dd to the end o# the Ooad"odule section
Ooad"odule php1%module "c@/php/php1apache.dll"
U ,dd to the end o# the ,dd"odule section
,dd"odule mod%php1.c
For P&P 4C
U ,dd to the end o# the Ooad"odule section
Ooad"odule php5%module "c@/php/php5apache.dll"
U ,dd to the end o# the ,dd"odule section
,dd"odule mod%php5.c
For #othC
U ,dd this line inside the <4#"odule mod%mime.c> conditional brace
,dd*ype application/xFhttpdFphp .php
U Sor syntax hiEhliEhted .phps #iles, also add
,dd*ype application/xFhttpdFphpFsource .phps
Installing as a CFI binary
.( you unzipped the P&P pac"age to R@VphpV as descri#ed in the Manual .nstallation teps
sectionA you need to insert these lines to your Apache con(iguration (ile to set up the 5G. #inaryC
E'emplo <(8. PHP and Apache !.7.+ as CFI
&cript,lias /php/ "c@/php/"
,dd*ype application/xFhttpdFphp .php
U Sor H 1
,ction application/xFhttpdFphp "/php/php.exe"
U Sor H 5
,ction application/xFhttpdFphp "/php/phpFcEi.exe"
U speci#y the directory 8here php.ini is
&etEn= H'R R@/php
Note that the second line in the list a#ove can #e (ound in the actual versions o( httpd.con#A #ut
it is commented out; Remem#er also to su#stitute the c@/php/ (or your actual path to P&P;
A5iso
Al usar el modo 5G.A vuestro servidor esta eFpuesto a di(erentes ata/ues; Por (avorA leer la secci-n
eguridad con 5G. para aprender como de(enderse de estos ata/ues;
.( you Eould li"e to present P&P source (iles syntaF highlightedA there is no such convenient option
as Eith the module version o( P&P; .( you chose to con(igure Apache to use P&P as a 5G. #inaryA
you Eill need to use the highlight>file./ (unction; ,o do this simply create a P&P script (ile and add
this codeC $%php h6Ehl6Eht_96leL<some_php_scr6pt.php<MJ %&;
Apache *.D.+ on Microsoft 2indo3s
,his section contains notes and hints speci(ic to Apache 0;3;F installs o( P&P on Microso(t
LindoEs systems; Le also have instructions and notes (or Apache 1;7;F users on a separate page;
Nota- %ou should read the manual installation steps (irsta
A5iso
No usar Apache 0;3 y P&P en un sistema en produccionA tanto en @niF como en LindoEs;
5onsultar la FAO
%ou are highly encouraged to ta"e a loo" at the Apache Documentation to get a #asic understanding
o( the Apache 0;3;F erver; Also consider to read the LindoEs speci(ic notes (or Apache 0;3;F
#e(ore reading on here;
PHP and Apache *.D.+ compatibility notes- ,he (olloEing versions o( P&P are "noEn
to Eor" Eith the most recent version o( Apache 0;3;FC
P&P 8;7;3 or later availa#le at httpCDDEEE;php;netDdoEnloads;php;
the latest sta#le development version; Get the source code
httpCDDsnaps;php;netDphp82latest;tar;gz or doEnload #inaries (or LindoEs
httpCDDsnaps;php;netDEin70Dphp82Ein702latest;zip;
a prerelease version doEnloada#le (rom httpCDD/a;php;netD;
you have alEays the option to o#tain P&P through anonymous 5$;
,hese versions o( P&P are compati#le to Apache 0;3;83 and later;
Apache 0;3 S,+02support started Eith P&P 8;0;3; P&P 8;0;7 Eor"s Eith Apache 0;3;79A
donHt use any other version o( Apache Eith P&P 8;0;7; &oEeverA the recommended
setup is to use P&P 8;7;3 or later Eith the most recent version o( Apache0;
All mentioned versions o( P&P Eill Eor" still Eith Apache 1;7;F;
A5iso
Apache 0;3;F is designed to run on LindoEs N, 8;3A LindoEs 0333 or LindoEs JP; At this
timeA support (or LindoEs 9F is incomplete; Apache 0;3;F is not eFpected to Eor" on those
plat(orms at this time;
DoEnload the most recent version o( Apache 0;3;F and a (itting P&P version; FolloE the Manual
.nstallation teps and come #ac" to go on Eith the integration o( P&P and Apache;
,here are tEo Eays to set up P&P to Eor" Eith Apache 0;3;F on LindoEs; One is to use the 5G.
#inary the other is to use the Apache module DLL; .n either case you need to edit your
httpd.con# to con(igure Apache to Eor" Eith P&P and then restart the server;
Nota- Recordar /ue cuando utiliceis valores de PA,& en LindoEs con #arras
invertidas tal como c@VdirectoryV#ile.extA estas de#en de ser convertidas a
#arras inclinadasA c@/directory/#ile.ext;
Installing as a CFI binary
%ou need to insert these three lines to your Apache httpd.con# con(iguration (ile to set up the
5G. #inaryC
E'emplo <(9. PHP and Apache *.D as CFI
&cript,lias /php/ "c@/php/"
,dd*ype application/xFhttpdFphp .php
U Sor H 1
,ction application/xFhttpdFphp "/php/php.exe"
U Sor H 5
,ction application/xFhttpdFphp "/php/phpFcEi.exe"
A5iso
Al usar el modo 5G.A vuestro servidor esta eFpuesto a di(erentes ata/ues; Por (avorA leer la secci-n
eguridad con 5G. para aprender como de(enderse de estos ata/ues;
Installing as an Apache module
%ou need to insert these tEo lines to your Apache httpd.con# con(iguration (ile to set up the
P&P module (or Apache 0;3C
E'emplo <(<. PHP and Apache *.D as Module
U Sor H 1 do somethinE liIe this@
Ooad"odule php1%module "c@/php/php1apacheC.dll"
,dd*ype application/xFhttpdFphp .php
U Sor H 5 do somethinE liIe this@
Ooad"odule php5%module "c@/php/php5apacheC.dll"
,dd*ype application/xFhttpdFphp .php
U con#iEure the path to php.ini
H4niLir "R@/php"
Nota- Remem#er to su#stitute the c@/php/ (or your actual path to P&P in the a#ove
eFamples; ,a"e care to use either php1apacheC.dll or php5apacheC.dll in
your LoadModule directive and not php1apache.dll or php5apache.dll as the
latter ones are designed to run Eith Apache 1;7;F;
Nota- .( you Eant to use content negotiationA read related FAO;
A5iso
DonHt miF up your installation Eith DLL (iles (rom #699erent +!+ ers6ons; %ou have the only
choice to use the DLLHs and eFtensions that ship Eith your doEnloaded P&P version;
,unE iPlanet and Netscape ser5ers on Microsoft 2indo3s
,his section contains notes and hints speci(ic to un !ava ystem Le# erverA un ON+ Le#
erverA iPlanet and Netscape server installs o( P&P on LindoEs;
From P&P 8;7;7 on you can use P&P scripts Eith the NAP. module to generate custom directory
listings and error pages; Additional (unctions (or Apache compati#ility are also availa#le; For
support in current Ee#servers read the note a#out su#re/uests;
CFI setup on ,unE iPlanet and Netscape ser5ers
,o install P&P as a 5G. handlerA do the (olloEingC
5opy php1ts.dll to your systemroot >the directory Ehere you installed LindoEs?
Ma"e a (ile association (rom the command line; ,ype the (olloEing tEo linesC
assoc .php>H&cript
#type H&cript>c@VphpVphp.exe \6 \W
.n the Netscape +nterprise Administration erver create a dummy shellcgi directory and
remove it 'ust a(ter >this step creates 4 important lines in o#';con( and alloE the Ee# server
to handle shellcgi scripts?;
.n the Netscape +nterprise Administration erver create a neE mime type >5ategoryC typeA
5ontent2,ypeC magnus2internalDshellcgiA File u((iFCphp?;
Do it (or each Ee# server instance you Eant P&P to run
More details a#out setting up P&P as a 5G. eFecuta#le can #e (ound hereC
httpCDD#enoit;noss;(ree;(rDphpDinstall2php;html
N,API setup on ,unE iPlanet and Netscape ser5ers
,o install P&P Eith NAP.A do the (olloEingC
5opy php1ts.dll to your systemroot >the directory Ehere you installed LindoEs?
Ma"e a (ile association (rom the command line; ,ype the (olloEing tEo linesC
assoc .php>H&cript
#type H&cript>c@VphpVphp.exe \6 \W
.n the Netscape +nterprise Administration erver create a neE mime type >5ategoryC typeA
5ontent2,ypeC magnus2internalDF2httpd2phpA File u((iFC php?;
+dit maEnus.con# >(or servers _^ K? or obj.con# >(or servers ` K? and add the
(olloEingC %ou should place the lines a(ter m6me t?pes 6n6t;
4nit #n>"loadFmodules" #uncs>"php1%init,php1%execute,php1%auth%trans" shlib>"c@/php/sapi/php1nsapi.dll"
4nit #n>"php1%init" Oate4nit>"yes" error&trinE>"Sailed to initialise H!" )php%ini>"c@/path/to/php.ini"/
>P&P _^ 8;7;7? ,he php_6n6 parameter is optional #ut Eith it you can place your php.ini
in your Ee#server con(ig directory;
5on(igure the de(ault o#'ect in obj.con# >(or virtual server classes Pun Le# erver K;3RQ
in their =ser=er.obj.con#?C .n the $O1Uect name:*#e9ault*& sectionA place this line
necessarily a(ter all HO#'ect,ypeH and #e(ore all HAddLogH linesC
&er=ice #n>"php1%execute" type>"maEnusFinternal/xFhttpdFphp" )iniIey>=alue iniIey>=alue .../
>P&P _^ 8;7;7? As additional parameters you can add some special php.ini2valuesA (or
eFample you can set a #ocroot:*/path/to/#ocroot* speci(ic to the conteFt php;_e8ecute is
called; For #oolean ini2"eys please use 3D1 as valueA not *On*C*O99*C... >this Eill not Eor"
correctly?A e;g; Dl61.output_compress6on:1 instead o( Dl61.output_compress6on:*On*
,his is only needed i( you Eant to con(igure a directory that only consists o( P&P scripts
>same li"e a cgi2#in directory?C
<?bject name>"xFhttpdFphp">
?bject*ype #n>"#orceFtype" type>"maEnusFinternal/xFhttpdFphp"
&er=ice #n>php1%execute )iniIey>=alue iniIey>=alue .../
</?bject>
A(ter that you can con(igure a directory in the Administration server and assign it the style 8=
http#=php; All (iles in it Eill get eFecuted as P&P; ,his is nice to hide P&P usage #y
renaming (iles to .html;
Restart your Ee# service and apply changes
Do it (or each Ee# server instance you Eant P&P to run
Nota- More details a#out setting up P&P as an NAP. (ilter can #e (ound hereC
httpCDD#enoit;noss;(ree;(rDphpDinstall2php8;html
Nota- ,he stac"size that P&P uses depends on the con(iguration o( the Ee#server; .(
you get crashes Eith very large P&P scriptsA it is recommended to raise it Eith the
Admin erver >in the section =MAGN@ +D.,OR=?;
CFI en5ironment and recommended modifications in php.ini
.mportant Ehen Eriting P&P scripts is the (act that un !LDun ON+ LDiPlanetDNetscape is a
multithreaded Ee# server; Because o( that all re/uests are running in the same process space >the
space o( the Ee#server itsel(? and this space has only one environment; .( you Eant to get 5G.
varia#les li"e +,T!_0N3OA !TT+_!OST etc; it is not the correct Eay to try this in the old P&P 7;F
Eay Eith geten5./ or a similar Eay >register glo#als to environmentA '_EN(?; %ou Eould only get
the environment o( the running Ee#server Eithout any valid 5G. varia#lesa
Nota- Lhy are there >invalid? 5G. varia#les in the environmentN
AnsEerC ,his is #ecause you started the Ee#server process (rom the admin server Ehich
runs the startup script o( the Ee#serverA you Eanted to startA as a 5G. script >a 5G.
script inside o( the admin servera?; ,his is Ehy the environment o( the started Ee#server
has some 5G. environment varia#les in it; %ou can test this #y starting the Ee#server
not (rom the administration server; @se the command line as root user and start it
manually 2 you Eill see there are no 5G.2li"e environment varia#les;
imply change your scripts to get 5G. varia#les in the correct Eay (or P&P 8;F #y using the
superglo#al '_SER(ER; .( you have older scripts Ehich use '!TT+_!OSTA etc;A you should turn on
reE6ster_Elo1als in php.ini and change the varia#le order too >importantC remove *E* (rom itA
#ecause you do not need the environment here?C
=ariables%order > "-R&"
reEister%Elobals > ?n
,pecial use for error pages or self(made directory listings .PHP GH 8.7.7/
%ou can use P&P to generate the error pages (or *;0; Not 3oun#* or similar; Add the (olloEing line
to the o#'ect in obj.con# (or every error page you Eant to overEriteC
Error #n>"php1%execute" code>XXX script>"/path/to/script.php" )iniIey>=alue iniIey>=alue.../
Ehere FFF is the &,,P error code; Please delete any other Error directives Ehich could inter(ere
Eith yours; .( you Eant to place a page (or all errors that could eFistA leave the co#e parameter out;
%our script can get the &,,P status code Eith '_SER(ER)<ERROR_TB+E<.;
Another possi#ility is to generate sel(2made directory listings; !ust create a P&P script Ehich
displays a directory listing and replace the corresponding de(ault ervice line (or t?pe:*maEnus=
6nternal/#6rector?* in obj.con# Eith the (olloEingC
&er=ice #n>"php1%execute" type>"maEnusFinternal/directory" script>"/path/to/script.php" )iniIey>=alue iniIey>=alue.../
For #oth error and directory listing pages the original @R. and translated @R. are in the varia#les
'_SER(ER)<+,T!_0N3O<. and '_SER(ER)<+,T!_TR,NS4,TED<.;
Note about nsapi>5irtual./ and subre?uests .PHP GH 8.7.7/
,he NAP. module noE supports the nsapi>5irtual./ (unction >aliasC 5irtual./? to ma"e
su#re/uests on the Ee#server and insert the result in the Ee#page; ,he pro#lem isA that this (unction
uses some undocumented (eatures (rom the NAP. li#rary;
@nder @niF this is not a pro#lemA #ecause the module automatically loo"s (or the needed (unctions
and uses them i( availa#le; .( notA nsapi>5irtual./ is disa#led;
@nder LindoEs limitations in the DLL handling need the use o( a automatic detection o( the most
recent nsFhttpdXX.dll (ile; ,his is tested (or servers till version K;1; .( a neEer version o( the
un server is usedA the detection (ails and nsapi>5irtual./ is disa#led;
.( this is the caseA try the (olloEingC Add the (olloEing parameter to php;_6n6t in
maEnus.con#Dobj.con#C
4nit #n>php1%init ... ser=er%lib>"nsFhttpdXX.dll"
Ehere FF is the correct DLL version num#er; ,o get itA loo" in the server2root (or the correct DLL
name; ,he DLL Eith the #iggest (ilesize is the right one;
%ou can chec" the status #y using the phpinfo./ (unction;
Nota- But #e EarnedC upport (or nsapi>5irtual./ is +JP+R.M+N,ALaaa
JmniHTTPd ,er5er
,his section contains notes and hints speci(ic to Omni&,,Pd on LindoEs;
Nota- %ou should read the manual installation steps (irsta
A5iso
Al usar el modo 5G.A vuestro servidor esta eFpuesto a di(erentes ata/ues; Por (avorA leer la secci-n
eguridad con 5G. para aprender como de(enderse de estos ata/ues;
%ou need to complete the (olloEing steps to ma"e P&P Eor" Eith Omni&,,Pd; ,his is a 5G.
eFecuta#le setup; AP. is supported #y Omni&,,PdA #ut some tests have shoEn that it is not so
sta#le to use P&P as an .AP. module;
Important for CFI users- Read the (a/ on cgi;(orceZredirect (or important details; ,his
directive needs to #e set to 0;
1; .nstall Omni&,,Pd server;
0; Right clic" on the #lue Omni&,,Pd icon in the system tray and select +ropert6es
7; 5lic" on Ie1 Serer -lo1al Sett6nEs
8; On the H+FternalH ta#A enterC 6rtual : .php V actual : c:QphpQphp.e8e >use phpFcEi.exe i(
installing P&P 4?A and use the Add #utton;
4; On the M6me ta#A enterC 6rtual : 777serer/st#cE6 V actual : .phpA and use the Add #utton;
K; 5lic" O2
Repeat steps 0 2 K (or each eFtension you Eant to associate Eith P&P;
Nota- ome Omni&,,Pd pac"ages come Eith #uilt in P&P support; %ou can choose at
setup time to do a custom setupA and unchec" the P&P component; Le recommend you
to use the latest P&P #inaries; ome Omni&,,Pd servers come Eith P&P 8 #eta
distri#utionsA so you should choose not to set up the #uilt in supportA #ut install your
oEn; .( the server is already on your machineA use the Replace #utton in tep 8 and 4 to
set the neEA correct in(ormation;
,ambar ,er5er on Microsoft 2indo3s
,his section contains notes and hints speci(ic to the am#ar erver (or LindoEs;
Nota- %ou should read the manual installation steps (irsta
,his list descri#es hoE to set up the .AP. module to Eor" Eith the am#ar server on LindoEs;
Find the (ile called mappinEs.ini >in the con(ig directory? in the am#ar install
directory;
Open mappinEs.ini and add the (olloEing line under )0S,+0.C
E'emplo <(=. I,API configuration of ,ambar
U#or H 1
W.php > c@VphpVphp1isapi.dll
U#or H 5
W.php > c@VphpVphp5isapi.dll
>,his line assumes that P&P Eas installed in c@Vphp;?
NoE restart the am#ar server (or the changes to ta"e e((ect;
Iitami on Microsoft 2indo3s
,his section contains notes and hints speci(ic to Jitami on LindoEs;
Nota- %ou should read the manual installation steps (irsta
,his list descri#es hoE to set up the P&P 5G. #inary to Eor" Eith Jitami on LindoEs;
Important for CFI users- Read the (a/ on cgi;(orceZredirect (or important details; ,his
directive needs to #e set to 0; .( you Eant to use '_SER(ER)<+!+_SE43<. you have to
ena#le the cgi;(iFZpathin(o directive;
A5iso
Al usar el modo 5G.A vuestro servidor esta eFpuesto a di(erentes ata/ues; Por (avorA leer la secci-n
eguridad con 5G. para aprender como de(enderse de estos ata/ues;
Ma"e sure the Ee#server is runningA and point your #roEser to Fitamis admin console
>usually http://127.0.0.1/a#m6n?A and clic" on 5on(iguration;
Navigate to the FiltersA and put the eFtension Ehich P&P should parse >i;e; ;php? into the
(ield File eFtensions >;FFF?;
.n Filter command or script put the path and name o( your P&P 5G. eFecuta#le i;e;
R@VphpVphp.exe (or P&P 8A or R@VphpVphpFcEi.exe (or P&P 4;
Press the HaveH icon;
Restart the server to re(lect changes;
1uilding from source
Be(ore getting startedA it is EorthEhile ansEering the /uestionC =Lhy is #uilding on LindoEs so
hardN= ,Eo reasons come to mindC
1; LindoEs does not >yet? en'oy a large community o( developers Eho are Eilling to (reely share
their source; As a direct resultA the necessary investment in in(rastructure re/uired to support
such development hasnHt #een made; By and largeA Ehat is availa#le has #een made possi#le #y
the porting o( necessary utilities (rom @niF; DonHt #e surprised i( some o( this heritage shoEs
through (rom time to time;
0; Pretty much all o( the instructions that (olloE are o( the =set and (orget= variety; o sit #ac" and
try (olloE the instructions #eloE as (aith(ully as you can;
Me?uirimientos
,o compile and #uild P&P you need a Microso(t Development +nvironment; Microso(t $isual 5RR
K;3 is recommended; ,o eFtract the doEnloaded (iles you need a eFtraction utility >e;g;C Linzip?; .(
you donHt already have an unzip utilityA you can get a (ree version (rom .n(oIip;
Be(ore you get startedA you have to doEnload;;;
;;the Ein70 #uildtools (rom the P&P site at httpCDDEEE;php;netDeFtraDEin70#uild;zip;
;;the source code (or the DN name resolver used #y P&P (rom
httpCDDEEE;php;netDeFtraD#indli#ZE70;zip; ,his is a replacement (or the resol=.lib
li#rary included in 8in<Cbuild.0ip;
.( you plan to compile P&P as a Apache module you Eill also need the Apache sources;
FinallyA you are going to need the source to P&P itsel(; %ou can get the latest development version
using anonymous 5$A a snapshot or the most recent released source tar#all;
Putting it all together
A(ter doEnloading the re/uired pac"ages you have to eFtract them in a proper place;
5reate a Eor"ing directory Ehere all (iles end up a(ter eFtractingA e;gC R@V8orI;
5reate the directory 8in<Cbuild under your Eor"ing directory >R@V8orI? and unzip
8in<Cbuild.0ip into it;
5reate the directory bindlib%8<C under your Eor"ing directory >R@V8orI? and unzip
bindlib%8<C.0ip into it;
+Ftract the doEnloaded P&P source code into your Eor"ing directory >R@V8orI?;
FolloEing this steps your directory structure loo"s li"e thisC
[FFc@V8orI
T T
T [FFbindlib%8<C
T T T
T T [FFarpa
T T T
T T [FFcon#
T T T
T T [FF...
T T
T [FFphpF1.x.x
T T T
T T [FFbuild
T T T
T T [FF...
T T T
T T [FF8in<C
T T T
T T [FF...
T T
T [FF8in<Cbuild
T T T
T T [FFbin
T T T
T T [FFinclude
T T T
T T [FFlib
5reate the directories c@VusrVlocalVlib; 5opy bison.simple (rom
c@V8orIV8in<CbuildVbin to c@VusrVlocalVlib;
Nota- 5ygEin users may omit the last step; A properly installed 5ygEin environment
provides the mandatory (iles bison.simple and bison.exe;
Configure MCC RR
,he neFt step is to con(igure M$5 RR to prepare (or compiling; Launch Microso(t $isual 5RRA and
(rom the menu select ,ools ^_ Options; .n the dialogA select the directories ta#; e/uentially change
the dropdoEn to +Fecuta#lesA .ncludesA and Li#rary (iles; %our entries should loo" li"e thisC
+Fecuta#le (ilesC c@V8orIV8in<CbuildVbinA 5ygEin usersC cyE8inVbin
.nclude (ilesC c@V8orIV8in<CbuildVinclude
Li#rary (ilesC c@V8orIV8in<CbuildVlib
1uild resol5.lib
%ou must #uild the resol=.lib li#rary; Decide Ehether you Eant to have de#ug sym#ols
availa#le >#indli# 2 Lin70 De#ug? or not >#indli# 2 Lin70 Release?; Build the appropriate
con(igurationC
For G@. usersA launch $5RRA and then select File ^_ Open Lor"spaceA navigate to
c@V8orIVbindlib%8<C and select bindlib.ds8; ,hen select Build^_et Active
5on(iguration and select the desired con(iguration; Finally select Build^_Re#uild All;
For command line usersA ma"e sure that you either have the 5RR environment varia#les
registeredA or have run 5c5ars.batA and then eFecute one o( the (olloEing commandsC
msde= bindlib.dsp /",]E "bindlib F 7in<C LebuE"
msde= bindlib.dsp /",]E "bindlib F 7in<C 'elease"
At this pointA you should have a usa#le resol=.lib in either your
c@V8orIVbindlib%8<CVLebuE or 'elease su#directories; 5opy this (ile into your
c@V8orIV8in<CbuildVlib directory over the (ile #y the same name (ound in there;
Compiling
,he #est Eay to get started is to #uild the 5G. version;
For G@. usersA launch $5RRA and then select File ^_ Open Lor"space and select
c@V8orIVphpF1.x.xV8in<CVphp1ts.ds8 ; ,hen select Build^_et Active
5on(iguration and select the desired con(igurationA either php;ts = I6nR2 De1uE_TS or
php;ts = I6nR2 Release_TS; Finally select Build^_Re#uild All;
For command line usersA ma"e sure that you either have the 5RR environment varia#les
registeredA or have run 5c5ars.batA and then eFecute one o( the (olloEing commands (rom
the c@V8orIVphpF1.x.xV8in<C directoryC
msde= php1ts.dsp /",]E "php1ts F 7in<C LebuE%*&"
msde= php1ts.dsp /",]E "php1ts F 7in<C 'elease%*&"
At this pointA you should have a usa#le php.exe in either your c@V8orIVphpF
1.x.x.VLebuE%*& or 'elease%*& su#directories;
.t is possi#le to do minor customization to the #uild process #y editing the
main/con#iE.8in<C.h (ile; For eFample you can change the de(ault location o( php.iniA the
#uilt2in eFtensionsA and the de(ault location (or your eFtensions;
NeFt you may Eant to #uild the 5L. version Ehich is designed to use P&P (rom the command line;
,he steps are the same as (or #uilding the 5G. versionA eFcept you have to select the php;ts_cl6 =
I6nR2 De1uE_TS or php;ts_cl6 = I6nR2 Release_TS pro'ect (ile; A(ter a success(ul compiling run
you Eill (ind the php.exe in either the directory 'elease%*&VcliV or LebuE%*&VcliV;
Nota- .( you Eant to use P+AR and the com(orta#le command line installerA the 5L.2
AP. is mandatory; For more in(ormation a#out P+AR and the installer read the
documentation at the P+AR Ee#site;
.n order to #uild the AP. module >php1isapi.dll? (or integrating P&P Eith Microso(t ..A set
your active con(iguration to php1isapiF8hate=erFcon#iE and #uild the desired dll;
Installation of e+tensions on 2indo3s
A(ter installing P&P and a Ee#server on LindoEsA you Eill pro#a#ly Eant to install some
eFtensions (or added (unctionality; %ou can choose Ehich eFtensions you Eould li"e to load Ehen
P&P starts #y modi(ying your php.ini; %ou can also load a module dynamically in your script
using dl./;
,he DLLs (or P&P eFtensions are pre(iFed Eith php_;
Nota- .n P&P 8;7;1 B5MathA 5alendarA 5OMA 5typeA F,PA MyOLA ODB5A OverloadA
P5R+A essionA ,o"enizerA LDDJA JML and Ili# support is 1u6lt 6n; %ou donHt need to
load any additional eFtensions in order to use these (unctions; ee your distri#utions
'E,L"E.txt or install.txt or this ta#le (or a list o( #uilt in modules;
,he de(ault location P&P searches (or eFtensions is c@Vphp1Vextensions in P&P 8 and
c@Vphp5 in P&P 4; ,o change this setting to re(lect your setup o( P&P edit your php.ini (ileC
%ou Eill need to change the eFtensionZdir setting to point to the directory Ehere your
eFtensions livesA or Ehere you have placed your php%W.dll (iles; Please do not (orget the
last #ac"slash; For eFampleC
extension%dir > c@/php/extensions/
+na#le the eFtension>s? in php.ini you Eant to use #y uncommenting the
e8tens6on:php_/.#ll lines in php.ini; ,his is done #y deleting the leading X (orm the
eFtension you Eant to load;
E'emplo <(N. Enable 16ip* e+tension for PHP(2indo3s
// chanEe the #ollo8inE line #rom ...
;extension>php%b0C.dll
// ... to
extension>php%b0C.dll
ome o( the eFtensions need eFtra DLLs to Eor"; 5ouple o( them can #e (ound in the
distri#ution pac"ageA in the R@VphpVdllsV (older in P&P 8 or in the main (older in P&P
4A #ut someA (or eFample Oracle >php%ociJ.dll? re/uire DLLs Ehich are not #undled
Eith the distri#ution pac"age; .( you are installing P&P 8A copy the #undled DLLs (rom
R@VphpVdlls (older to the main R@Vphp (older; DonHt (orget to include R@Vphp in the
system +,T! >this process is eFplained in a separate FAO entry?;
ome o( these DLLs are not #undled Eith the P&P distri#ution; ee each eFtensions
documentation page (or details; AlsoA read the manual section titled .nstallation o( P+5L
eFtensions (or details on P+5L; An increasingly large num#er o( P&P eFtensions are (ound
in P+5LA and these eFtensions re/uire a separate doEnload;
Nota- .( you are running a server module version o( P&P remem#er to restart your
Ee#server to re(lect your changes to php.ini;
,he (olloEing ta#le descri#es some o( the eFtensions availa#le and re/uired additional dlls;
Tabla <(!. PHP E+tensions
E+tension Kescription Notes
phpZ#z0;dll
#zip0 compression
(unctions
None
phpZcalendar;dl
l
5alendar conversion
(unctions
Built in since P&P 8;3;7
phpZcpd(;dll 5li#PDF (unctions None
phpZcrac";dll 5rac" (unctions None
phpZctype;dll ctype (amily (unctions Built in since P&P 8;7;3
phpZcurl;dll
5@RLA 5lient @RL
li#rary (unctions
Re/uiresC libeay<C.dllA ssleay<C.dll
>#undled?
phpZcy#ercash;
dll
5y#ercash payment
(unctions
P&P `^ 8;0;3
phpZd#;dll DBM (unctions Deprecated; @se DBA instead >php%dba.dll?
phpZd#a;dll
DBAC DataBase >d#m2
style? A#straction layer
(unctions
None
phpZd#ase;dll dBase (unctions None
phpZd#F;dll d#F (unctions
phpZdomFml;dl
l
DOM JML (unctions
P&P `^ 8;0;3 re/uiresC libxmlC.dll >#undled? P&P
_^ 8;7;3 re/uiresC icon=.dll >#undled?
phpZdotnet;dll ;N+, (unctions P&P `^ 8;1;1
phpZeFi(;dll +J.F (unctions
phpZm#string;dll; AndA php%exi#.dll must #e
loaded a9ter php%mbstrinE.dll in php.ini;
phpZ(#s/l;dll FrontBase (unctions P&P `^ 8;0;3
phpZ(d(;dll
FDFC Forms Data
Format (unctions;
Re/uiresC #d#tI.dll >#undled?
phpZ(ilepro;dll (ilePro (unctions Read2only access
phpZ(tp;dll F,P (unctions Built2in since P&P 8;3;7
phpZgd;dll
GD li#rary image
(unctions
Removed in P&P 8;7;0; Also note that truecolor
(unctions are not availa#le in GD1A insteadA use
php%EdC.dll;
phpZgd0;dll
GD li#rary image
(unctions
GD0
phpZgetteFt;dll GetteFt (unctions
P&P `^ 8;0;3 re/uires Enu%Eettext.dll
>#undled?A P&P _^ 8;0;7 re/uires libintlF6.dllA
icon=.dll >#undled?;
phpZhyperEave
;dll
&yperLave (unctions None
E+tension Kescription Notes
phpZiconv;dll
.5ON$ characterset
conversion
Re/uiresC icon=F6.<.dll >#undled?A P&P _^8;0;1
icon=.dll
phpZi(F;dll .n(ormiF (unctions Re/uiresC .n(ormiF li#raries
phpZiis(unc;dll
.. management
(unctions
None
phpZimap;dll
.MAP POP7 and NN,P
(unctions
None
phpZingres;dll .ngres .. (unctions Re/uiresC .ngres .. li#raries
phpZinter#ase;d
ll
.nterBase (unctions Re/uiresC Eds<C.dll >#undled?
phpZ'ava;dll !ava (unctions P&P `^ 8;3;K re/uiresC j=m.dll >#undled?
phpZldap;dll LDAP (unctions
P&P `^ 8;0;3 re/uires libsasl.dll >#undled?A P&P
_^ 8;7;3 re/uires libeay<C.dllA ssleay<C.dll
>#undled?
phpZm#string;d
ll
Multi2Byte tring
(unctions
None
phpZmcrypt;dll
Mcrypt +ncryption
(unctions
Re/uiresC libmcrypt.dll
phpZmhash;dll Mhash (unctions P&P _^ 8;7;3 re/uiresC libmhash.dll >#undled?
phpZmimeZma
gic;dll
Mimetype (unctions Re/uiresC maEic.mime >#undled?
phpZming;dll
Ming (unctions (or
Flash
None
phpZms/l;dll mOL (unctions Re/uiresC msQl.dll >#undled?
phpZmss/l;dll MOL (unctions Re/uiresC nt8dblib.dll >#undled?
phpZmys/l;dll MyOL (unctions P&P _^ 4;3;3A re/uires libmysQl.dll >#undled?
phpZmys/li;dll MyOLi (unctions
P&P _^ 4;3;3A re/uires libmysQl.dll
>libmysQli.dll in P&P `^ 4;3;0? >#undled?
phpZociM;dll Oracle M (unctions Re/uiresC Oracle M;1R client li#raries
phpZopenssl;dll OpenL (unctions Re/uiresC libeay<C.dll >#undled?
phpZoracle;dll Oracle (unctions Re/uiresC Oracle : client li#raries
phpZoverload;d
ll
O#'ect overloading
(unctions
Built in since P&P 8;7;3
phpZpd(;dll PDF (unctions None
phpZpgs/l;dll PostgreOL (unctions None
phpZprinter;dll Printer (unctions None
phpZshmop;dll
hared Memory
(unctions
None
phpZsnmp;dll
NMP get and Eal"
(unctions
N, onlya
phpZsoap;dll OAP (unctions P&P _^ 4;3;3
phpZsoc"ets;dll oc"et (unctions None
E+tension Kescription Notes
phpZsy#aseZct;
dll
y#ase (unctions Re/uiresC y#ase client li#raries
phpZtidy;dll ,idy (unctions P&P _^ 4;3;3
phpZto"enizer;
dll
,o"enizer (unctions Built in since P&P 8;7;3
phpZE70api;dll L70api (unctions None
phpZFmlrpc;dll JML2RP5 (unctions P&P _^ 8;0;1 re/uiresC icon=.dll >#undled?
phpZFslt;dll JL, (unctions
P&P `^ 8;0;3 re/uires sablot.dllA expat.dll
>#undled?; P&P _^ 8;0;1 re/uires sablot.dllA
expat.dllA icon=.dll >#undled?;
phpZyaz;dll %AI (unctions Re/uiresC ya0.dll >#undled?
phpZzip;dll Iip File (unctions Read only access
phpZzli#;dll
ILi# compression
(unctions
Built in since P&P 8;7;3
Captulo =. Installation of PEC: e+tensions
Introduction to PEC: Installations
P&P eFtensions may #e installed in a variety o( Eays; P+5L is a repository o( P&P eFtensions
living Eithin the P+AR structureA and the (olloEing demonstrates hoE to install these eFtensions;
,hese instructions assume /?our/phpsrc#6r/ is the path to the P&P sourceA and e8tname is the name
o( the P+5L eFtension; Ad'ust accordingly; ,hese instructions also assume a (amiliarity Eith the
pear command;
hared eFtensions may #e installed #y including them inside o( php.ini using the eFtension P&P
directive; ee also the eFtensionsZdir directiveA and dl./; ,he installation methods descri#ed #eloE
do not automatically con(igure P&P to include these eFtensionsA this step must #e done manually;
Lhen #uilding P&P modulesA itHs important to have the appropriate versions o( the re/uired tools
>autocon(A automa"eA li#toolA etc;? ee the Anonymous 5$ .nstructions (or details on the re/uired
toolsA and re/uired versions;
Ko3nloading PEC: e+tensions
,here are several options (or doEnloading P+5L eFtensionsA such asC
httpCDDpecl;php;net
Listed here is in(ormation li"e the 5hangeLogA release in(ormationA re/uirementsA revisionsA
etc; Although not every P+5L eFtension has a Ee#pageA most do;
pear #o7nloa# e8tname
,he pear command may also #e used to doEnload source (iles; peci(ic revisions may also
#e speci(ied;
5$
All P+5L (iles reside in 5$; A Ee#2#ased vieE may #e seen at httpCDDcvs;php;netDpeclD; ,o
doEnload straight (rom 5$A consider the (olloEing Ehere php96 is the passEord (or user
csrea#C
$ c=s Fd@pser=er@c=sread^c=s.php.net@/repository loEin
$ c=s Fd@pser=er@c=sread^c=s.php.net@/repository co pecl/extname
LindoEs doEnloads
LindoEs users may (ind compiled P+5L #inaries #y doEnloading the Collect6on o9 +EC4
mo#ules (rom the P&P DoEnloads pageA and #y retrieving a P+5L napshot; ,o compile
P&P under LindoEsA read the Lin70 Build R+ADM+;
PEC: for 2indo3s users
Li"e Eith any other P&P eFtension DLLA to install move the P+5L eFtension DLLs into the
eFtensionZdir (older and include them Eithin php.ini; For eFampleC
extension>php%extname.dll
A(ter doing thisA restart the Ee# server;
Compiling shared PEC: e+tensions 3ith PEAM
P+AR ma"es it easy to create shared P&P eFtensions; @sing the pear commandA do the (olloEingC
$ pear install extname
,hat Eill doEnload the source (or e8tnameA and compile it on the system; ,his results in an
extname.so (ile that may then #e included in php.ini
.n case the systems pre9erre#_state is set higher than an availa#le e8tname versionA li"e itHs set to
sta#le and the eFtension is still in #etaA either alter the pre9erre#_state via pear con96E=set or speci(y
a speci(ic version o( the P+5L eFtension; For eFampleC
$ pear install extnameF2.6.6
RegardlessA pear Eill copy this extname.so into the eFtensions directory; Ad'ust php.ini
accordingly;
Compiling shared PEC: e+tensions 3ith phpi6e
.( using pear is not an optionA li"e (or #uilding shared P+5L eFtensions (rom 5$A or (or unreleased
P+5L pac"agesA then creating a shared eFtension may also #e done #y manually using the php6De
command; ,he pear command essentially does this #ut it may also #e done manually; Assuming the
source (ile is named extname.tE0A and that it Eas doEnloaded into the current directoryA
consider the (olloEingC
$ pear do8nload extname
$ E0ip Fd < extname.tE0 T tar Fx=# F
$ cd extname
$ phpi0e
$ ./con#iEure && maIe
@pon successA this Eill create extname.so and put it into the modules/ andDor .libs/
directory Eithin the extname/ source; Move this shared eFtension >extname.so? into the P&P
eFtensions directoryA and ad'ust php.ini accordingly;
Compiling PEC: e+tensions statically into PHP
,o statically include the eFtension Eithin the P&P #uildA put the eFtensions source into the ext/
directory (ound in the P&P source; For eFampleC
$ cd /your/phpsrcdir/ext
$ pear do8nload extname
$ E0ip Fd < extname.tE0 T tar Fx=# F
$ m= extnameFx.x.x extname
$ rm pacIaEe.xml
,his Eill result in the (olloEing directoryC
/your/phpsrcdir/ext/extname
From hereA #uild P&P as normalC
$ cd /your/phpsrcdir
$ ./buildcon#
$ ./con#iEure FFhelp
$ ./con#iEure FF8ithFextname FFenableFsomeotherext FF8ithF#oobar
$ maIe
$ maIe install
Lhether ==ena1le=e8tname or ==76th=e8tname is used depends on the eFtension; ,ypically an
eFtension that does not re/uire eFternal li#raries uses ==ena1le; ,o #e sureA run the (olloEing a(ter
#uildcon(C
$ ./con#iEure FFhelp T Erep extname
Captulo N. Problemas&
:ee la ;A$
Algunos pro#lemas son m*s comunes /ue otros; Los m*s comunes se pueden consultar en la FAO
de P&P en este manual;
Jtros problemas
i todavia teneis el mismo pro#lemaA alguien en la lista de correos so#re instalaci-n de P&PA puede
ayudaros; PrimeroA compro#ar en los archivos de la lista si vuestro pro#lema ya ha sido contestado;
Los archivos se encuentran disponi#les en las p*gina de soporte httpCDDEEE;php;netDsupport;php;
Para su#scri#irse a esta lista de correos mandar un correo vac)o a php2install2
su#scri#eGlists;php;net; La direcci-n de la lista es php=6nstallWl6sts.php.net;
i /uereis conseguir ayuda en la lista de correoA intentar descri#ir lo m*s detalladamente posi#le
vuestro pro#lemaA los datos so#re vuestro sistema >sistema operativo /ue utilizaisA versi-n de P&PA
servidor Ee#A si usais P&P como #inario 5G. - como m-duloA sa(e modeA etc;;;? y a ser posi#le
c-digo su(iciente para poder reproducir vuestro pro#lema;
Informes sobre 1ugs
i creeis /ue ha#eis encontrado un #ug >error de programaci-n? en P&PA mandarnos un in(orme;
Pro#a#lemente los desarrolladores de P&P no lo conozcan y si no in(ormais so#re el mismo no
podr* arreglarse; Podeis in(ormar so#re #ugs a traves del sistema de seguimiento de #ugs en
httpCDD#ugs;php;netD; No mandar in(ormes a la lista de correos - en mensa'es privados a los
desarrolladores; +l sistema de seguimiento tam#ien se puede utilizar para pedir nuevas
caracteristicas en versiones (uturas;
Lea 5omo in(ormar so#re un #ug antes de mandar un in(orme;
Captulo O. Configuraci"n del comportamiento
de PHP
El archi5o de configuraci"n
+l archivo de con(iguraci-n >llamado php<.ini en P&P 7A y simplemente php.ini a partir de
P&P 8? es le)do cuando arranca P&P; Para las versiones de P&P como m-dulo de servidor esto s-lo
ocurre una vez al arrancar el servidor Ee#; Para la versi-n 5G. y 5L.A esto ocurre en cada llamada;
La localizaci-n por de(ecto de php.ini es de(inida en tiempo de compilaci-n >5onsultar la FAO?A
pero puede ser cam#iada en la versi-n 5G. y 5L. con la opci-n de la linea de comandos =cA
consultar el c*pitulo so#re como usar P&P desde la linea de comandos; ,am#i<n se puede de(inir la
varia#le de entorno +!+RC con un =path= adicional para la #Bs/ueda del archivo php.ini
i phpF&,4.ini eFiste es usado en vez de php.ini;
Nota- +l servidor Ee# Apache cam#ia al directorio raiz al arrancarA por ello P&P
intentar* leer el archivo php.ini en el directorio raizA si eFiste;
Las directivas php.ini gestionadas por eFtensiones est*n documentadas en cada una de las
p*ginas de las eFtensiones respectivamente; La lista de directivas de nBcleo se encuentra disponi#le
en el ap<ndice;La mayoria de directivas P&P estan listadas en ini>set./ con los respectivos permisos
y enlaces a la documentacion; Para o#tener una lista completa de todas las directivas disponi#les en
su versi-n de P&PA por (avor lea su archivo php.iniA el cual de#e estar #ien documentado;
AlternativamenteA puede encontrar Btil la Bltima versi-n del archivo php.ini desde 5$;
E'emplo O(!. E'emplo php.ini
; any text on a line a#ter an unQuoted semicolon 3;9 is iEnored
)php/ ; section marIers 3text 8ithin sQuare bracIets9 are also iEnored
; Zoolean =alues can be set to either@
; true, on, yes
; or #alse, o##, no, none
reEister%Elobals > o##
tracI%errors > yes
; you can enclose strinEs in doubleFQuotes
include%path > ".@/usr/local/lib/php"
; bacIslashes are treated the same as any other character
include%path > ".;c@VphpVlib"
Como cambiar los 5alores de la configuraci"n
E'ecuci"n de PHP como un m"dulo de Apache
5uando se usa P&P como un m-dulo de ApacheA se pueden cam#iar valores de la con(iguraci-n
usando directivas en los archivos de con(iguraci-n de apacheA httpd.con# y .htaccess;
Necesitar* de los privilegios =AlloEOverride Options= o =AlloEOverride All= para hacerlo;
5on P&P 8 y P&P 4A hay varias directivas Apache /ue permiten cam#iar la con(iguraci-n de P&P
desde los archivos de con(iguraci-n de apache; Para o#tener una lista de /ue directivas son del tipo
PHP_INI_ALLA PHP_INI_PERDIRA - PHP_INI_SYSTEMA consultar la lista /ue se encuentra
en la documentaci-n de la (unci-n ini>set./;
Nota- 5on P&P 7A eFisten directivas /ue corresponden a cada par*metro de
con(iguraci-n en php<.iniA con el pre(i'o =php7Z=;
phpZvalue nom1re alor
Asigna el valor de la directiva especi(icada; Puede ser usado solamente con directivas del tipo
PHP_INI_ALL y PHP_INI_PERDIR; Para #orrar un valor previoA asignar none como valor
Nota- No use phpZvalue para de(inir valores #ooleanos; De#er)a usarse phpZ(lag
en su lugar >vea m*s a#a'o?;
phpZ(lag nom1re onVo99
@sado para asignar una directiva de con(iguraci-n #ooleana; Puede ser usado solamente con
directivas del tipo PHP_INI_ALL y PHP_INI_PERDIR;
phpZadminZvalue nom1re alor
Asigna el valor de la directiva especi(icada; +sto no pue#e usarse en archivos .htaccess;
,odo tipo de directiva asignada con phpZadminZvalue no puede ser cam#iada con .
htaccess - directivas =virtualhost=; Para #orrar un valor previoA asignar none como valor;
phpZadminZ(lag nom1re onVo99
@sado para asignar una directiva de con(iguraci-n #ooleana; +sto no pue#e usarse en archivos
.htaccess; ,odo tipo de directiva asignada con phpZadminZ(lag no puede ser cam#iada
con .htaccess - directivas;
E'emplo O(*. E'emplo de configuraci"n de Apache
<4#"odule mod%php5.c>
php%=alue include%path ".@/usr/local/lib/php"
php%admin%#laE sa#e%mode on
</4#"odule>
<4#"odule mod%php1.c>
php%=alue include%path ".@/usr/local/lib/php"
php%admin%#laE sa#e%mode on
</4#"odule>
<4#"odule mod%php<.c>
php<%include%path ".@/usr/local/lib/php"
php<%sa#e%mode on
</4#"odule>
Atenci"n
Las 5onstantes en P&P no eFisten (uera de P&P; Por e'emploA en httpd.con# no se pueden
usar constantes P&P tales como E_ALL - E_NOTICE para de(inir la directiva errorZreportingA ya
/ue no tendr* ningBn signi(icado y ser* evaluada como 0; @sar los valores asociados de =#itmas"=
en su lugar; +stas constantes pueden ser usadas en php.ini
Modificaci"n de la configuraci"n de PHP usando el registro de 2indo3s
5uando se usa P&P en LindoEsA se pueden cam#iar los valores de con(iguraci-n para cada
directorio por medio de los registros de LindoEs; Los valores de con(iguraci-n se guardan en la
llave de registro !24MQSO3TI,REQ+!+Q+er D6rector? (aluesA en las su#llaves correspondientes
al PA,&; Por e'emploA los valores de con(iguracion del directorio c:Q6netpu1Q777root se guardar*n
en !24MQSO3TI,REQ+!+Q(alores +or D6rector6oQcQ6netpu1Q777root; La con(iguraci-n de un
directorio es v*lida para todos los scripts e'ecutados en el mismo y sus su#directorios; Los valores
en la llave de#en de de(inirse con el nom#re de la directiva de con(iguraci-n de P&P y el valor tipo
cadena; Las constantes P&P en los valores no son analizadas;
Jtras interfaces con PHP
.ndependientemente del modo en /ue e'ecute P&PA es posi#le cam#iar ciertos valores en tiempo de
e'ecuci-n usando ini>set./; $ea la documentaci-n en la p*gina so#re ini>set./ para m*s
in(ormaci-n;
i est* interesado en una lista completa de par*metros de con(iguraci-n en su sistema con sus
valores actualesA puede e'ecutar la (unci-n phpinfo./A y revisar la p*gina resultante; ,am#i<n puede
acceder a los valores de directivas de con(iguraci-n individuales en tiempo de e'ecuci-n usando
ini>get./ o get>cfg>5ar./;
III. Meferencia del lengua'e
Tabla de contenidos
13; intaFis #*sica
11; ,ipos
10; $aria#les
17; 5onstantes
18; +Fpresiones
14; Operadores
1K; +structuras de 5ontrol
1:; Funciones
1M; 5lases y O#'etos >P&P 8?
19; 5lases y O#'etos >P&P 4?
03; +Fcepciones
01; +Fplicando las Re(erencias
Captulo !D. ,inta+is bsica
,aliendo de HTM:
Para interpretar un archivoA php s)mplemente interpreta el teFto del archivo hasta /ue encuentra uno
de los car*cteres especiales /ue delimitan el inicio de c-digo P&P; +l int<rprete e'ecuta entonces
todo el c-digo /ue encuentraA hasta /ue encuentra una eti/ueta de (in de c-digoA /ue le dice al
int<rprete /ue siga ignorando el c-digo siguiente; +ste mecanismo permite em#e#er c-digo P&P
dentro de &,MLC todo lo /ue est* (uera de las eti/uetas P&P se de'a tal como est*A mientras /ue el
resto se interpreta como c-digo;
&ay cuatro con'untos de eti/uetas /ue pueden ser usadas para denotar #lo/ues de c-digo P&P; De
estas cuatroA s-lo 0 >`Nphp; ; ;N_ y `script language^=php=_; ; ;`Dscript_? est*n siempre disponi#lesX
el resto pueden ser con(iguradas en el (ichero de php.ini para ser o no aceptadas por el int<rprete;
Mientras /ue el (ormato corto de eti/uetas >short2(orm tags? y el estilo AP >AP2style tags? pueden
ser convenientesA no son porta#les como la versi-n de (ormato largo de eti/uetas; Adem*sA si se
pretende em#e#er c-digo P&P en JML o J&,MLA ser* o#ligatorio el uso del (ormato `Nphp; ; ;N_
para la compati#ilidad con JML;
Las eti/uetas soportadas por P&P sonC
E'emplo !D(!. ;ormas de escapar de HTM:
6. <?php echo3"si Quieres ser=ir documentos XH*"O o X"O, ha0 como aQu&iacute;Vn"9; ?>
C. <? echo 3"esta es la m&aacute;s simple, una instrucci&oacute;n de procesado &-"O Vn"9; ?>
<?> expression ?> Esto es una abre=iatura de "<? echo expression ?>"
<. <script lanEuaEe>"php">
echo 3"muchos editores 3como SrontaEe9 no
aceptan instrucciones de procesado"9;
</script>
1. <\ echo 3"?pcionalmente, puedes usar las etiQuetas ,&"9; \>
<\> $=ariable; U Esto es una abre=iatura de "<\ echo . . ." \>
+l m<todo primeroA `Nphp; ; ;N_A es el m*s convenienteA ya /ue permite el uso de P&P en c-digo
JML como J&,ML;
+l m<todo segundo no siempre est* disponi#le; +l (ormato corto de eti/uetas est* disponi#le con la
(unci-n short>tags./ >s-lo P&P 7?A activando el par*metro del (ichero de con(iguraci-n de P&P
shortZopenZtagA o compilando P&P con la opci-n 22ena#le2short2tags del comando configure;
Aun/ue est< activa por de(ecto en php;ini2distA se desaconse'a el uso del (ormato de eti/uetas corto;
+l m<todo cuarto s-lo est* disponi#le si se han activado las eti/uetas AP en el (ichero de
con(iguraci-nC aspZtags;
Nota- +l soporte de eti/uetas AP se aWadi- en la versi-n 7;3;8;
Nota- No se de#e usar el (ormato corto de eti/uetas cuando se desarrollen aplicaciones
o #i#liotecas con intenci-n de redistri#uirlasA o cuando se desarrolle para servidores /ue
no est*n #a'o nuestro controlA por/ue puede ser /ue el (ormato corto de eti/uetas no est<
soportado en el servidor; Para generar c-digo porta#le y redistri#u)#leA asegBrate de no
usar el (ormato corto de eti/uetas;
La eti/ueta de (in de #lo/ue incluir* tras ella la siguiente l)nea si hay alguna presente; Adem*sA la
eti/ueta de (in de #lo/ue lleva impl)cito el punto y comaX no necesitas por lo tanto aWadir el punto y
coma (inal de la Bltima l)nea del #lo/ue P&P;
P&P permite estructurar #lo/ues comoC
E'emplo !D(*. M%todos a5an6ados de escape
<?php
i# 3$expression9 :
?>
<stronE>*his is true.</stronE>
<?php
; else :
?>
<stronE>*his is #alse.</stronE>
<?php
;
?>
+ste e'emplo realiza lo esperadoA ya /ue cuando P&P encuentra las eti/uetas N_ de (in de #lo/ueA
empieza a escri#ir lo /ue encuentra tal cual hasta /ue encuentra otra eti/ueta de inicio de #lo/ue; +l
e'emplo anterior esA por supuestoA inventado; Para escri#ir #lo/ues grandes de teFto generamente es
m*s e(iciente separalos del c-digo P&P /ue enviar todo el teFto mediante las (unciones echo./A
print./ o similares;
,eparaci"n de instrucciones
Las separaci-n de instrucciones se hace de la misma manera /ue en 5 o Perl 2 terminando cada
declaraci-n con un punto y coma;
La eti/ueta de (in de #lo/ue >N_? implica el (in de la declaraci-nA por lo tanto lo siguiente es WalenteC
<?php
echo "*his is a test";
?>
<?php echo "*his is a test" ?>
Comentarios
P&P soporta el estilo de comentarios de H5HA H5RRH y de la inter(az de comandos de @niF; Por
e'emploC
<?php
echo "*his is a test"; // *his is a oneFline c[[ style comment
/W *his is a multi line comment
yet another line o# comment W/
echo "*his is yet another test";
echo "?ne Sinal *est"; U *his is shellFstyle style comment
?>
Los estilos de comentarios de una linea actualmente s-lo comentan hasta el (inal de la linea o el
#lo/ue actual de c-digo P&PA lo primero /ue ocurra;
<h6>*his is an <?php U echo "simple";?> example.</h6>
<p>*he header abo=e 8ill say M*his is an exampleM.
&ay /ue tener cuidado con no anidar comentarios de estilo H5HA algo /ue puede ocurrir al comentar
#lo/ues largos de c-digo;
<?php
/W
echo "*his is a test"; /W *his comment 8ill cause a problem W/
W/
?>
Los estilos de comentarios de una linea actualmente s-lo comentan hasta el (inal de la linea o del
#lo/ue actual de c-digo P&PA lo primero /ue ocurra; +sto implica /ue el c-digo &,ML tras DD N_
ser*a impresoC N_ sale del modo P&PA retornando al modo &,MLA el comentario DD no le in(luye;
Captulo !!. Tipos
Introducci"n
P&P soporta ocho tipos primitivos;
5uatro tipos escalaresC
boolean
integer
float >nBmero de punto2(lotanteA tam#i<n conocido como HdoubleH?
string
Dos tipos compuestosC
array
ob'ect
% (inalmente dos tipos especialesC
resource
N)::
+ste manual introduce tam#i<n algunos pseudo2tipos por razones de legi#ilidadC
miFed
num#er
call#ac"
,am#i<n puede encontrar algunas re(erencias al tipo =dou#le=; 5onsidere al tipo dou#le como el
mismo /ue (loatA los dos nom#res eFisten solo por razones hist-ricas;
+l tipo de una varia#le usualmente no es declarado por el programadorX en cam#ioA es decidido en
tiempo de compilaci-n por P&P dependiendo del conteFto en el /ue es usado la varia#le;
Nota- i desea che/uear el tipo y valor de una cierta eFpresi-nA use 5ar>dump./;
Nota- i tan solo desea una representaci-n legi#le para humanos del tipo para
prop-sitos de depuraci-nA use gettype./; Para che/uear por un cierto tipoA no use
gettype./X en su lugar utilice las (unciones 6s_t6po; Algunos e'emplosC
<?php
$bool > *'+E; // un =alor booleano
$str > "#oo"; // una cadena
$int > 6C; // un entero
echo Eettype3$bool9; // imprime "boolean"
echo Eettype3$str9; // imprime "strinE"
// &i este =alor es un entere, incrementarlo en cuatro
i# 3is%int3$int99 :
$int [> 1;
;
// &i $bool es una cadena, imprimirla
// 3no imprime nada9
i# 3is%strinE3$bool99 :
echo "Radena@ $bool";
;
?>
i /uisiera (orzar la conversi-n de una varia#le a cierto tipoA puede moldear la varia#leA o usar la
(unci-n settype./ so#re ella;
Note /ue una varia#le puede ser evaluada con valores di(erentes en ciertas situacionesA dependiendo
del tipo /ue posee en cada momento; Para m*s in(ormaci-nA vea la secci-n so#re Manipulaci-n de
,ipos; AsimismoA puede encontrarse interesado en consultar las ta#las de comparaci-n de tiposA ya
/ue <stas muestran e'emplos de las varias comparaciones relacionadas con tipos;
1ooleanos
+ste es el tipo m*s simple; @n boolean eFpresa un valor de verdad; Puede ser TRUE or FALSE;
Nota- +l tipo #ooleano (ue introducido en P&P 8;
,inta+is
Para especi(icar un literal #ooleanoA use alguna de las pala#ras clave TRUE o FALSE; Am#as son
insensi#les a mayBsculas y minBsculas;
<?php
$#oo > *rue; // asiEnar el =alor *'+E a $#oo
?>
@sualmente se usa algBn tipo de operador /ue deuelve un valor booleanA y luego <ste es pasado a
una estructura de control;
<?php
// >> es un operador Que prueba por
// iEualdad y de=uel=e un booleano
i# 3$accion >> "mostrar%=ersion"9 :
echo "Oa =ersi&oacute;n es 6.C<";
;
// esto no es necesario...
i# 3$mostrar%separadores >> *'+E9 :
echo "<hr>Vn";
;
// ...porQue se puede escribir simplemente
i# 3$mostrar%separadores9 :
echo "<hr>Vn";
;
?>
Con5ersi"n a booleano
Para convertir eFpl)citamente un valor a booleanA use el moldeamiento L1oolM o L1ooleanM; in
em#argoA en la mayor)a de casos no es necesario usar el moldeamientoA ya /ue un valor ser*
convertido autom*ticamente si un operadorA (unci-n o estructura de control re/uiere un argumento
tipo boolean;
$ea tam#i<n Manipulaci-n de ,ipos;
5uando se realizan conversiones a booleanA los siguientes valores son considerados FALSEC
el #oolean FALSE mismo
el integer 3 >cero?
el (loat 3;3 >cero?
el valor string vac)oA y el string =3=
un array con cero elementos
un o#'ect con cero varia#les miem#ro
el tipo especial N@LL >incluyendo varia#les no de(inidas?
5ual/uier otro valor es considerado TRUE >incluyendo cual/uier resource?;
A5iso
cdef=1 es considerado TRUEA como cual/uier otro nBmero di(erente a cero >ya sea negativo o
positivo?a
<?php
=ar%dump33bool9 ""9; // bool3#alse9
=ar%dump33bool9 69; // bool3true9
=ar%dump33bool9 FC9; // bool3true9
=ar%dump33bool9 "#oo"9; // bool3true9
=ar%dump33bool9 C.<e59; // bool3true9
=ar%dump33bool9 array36C99; // bool3true9
=ar%dump33bool9 array399; // bool3#alse9
=ar%dump33bool9 "#alse"9; // bool3true9
?>
Enteros
@n integer es un nBmero del con'unto I ^ \;;;A 20A 21A 3A 1A 0A ;;;];
$ea tam#i<nC +ntero de longitud ar#itraria D GMPA NBmeros de punto (lotanteA y Precisi-n
ar#itraria D B5Math
,inta+is
Los enteros pueden ser especi(icados en notaci-n decimal >#ase213?A heFadecimal >#ase21K? u octal
>#ase2M?A opcionalmente precedidos por un signo >2 o R?;
i usa la notaci-n octalA de#e preceder el nBmero con un 0 >cero?A para usar la notaci-n
heFadecimalA preceda el nBmero con 08;
E'emplo !!(!. :iterales tipo entero
<?php
$a > 6C<1; // numero decimal
$a > F6C<; // un numero neEati=o
$a > 26C<; // numero octal 3Dalente al J< decimal9
$a > 2x6,; // numero hexadecimal 3Dalente al CG decimal9
?>
FormalmenteA la posi#le estructura para literales enteros esC
decimal @ )6FK/)2FK/W
T 2
hexadecimal @ 2)xX/)2FKaF#,FS/[
octal @ 2)2FH/[
inteEer @ )[F/?decimal
T )[F/?hexadecimal
T )[F/?octal
+l tamaWo de un entero es dependiente de la plata(ormaA aun/ue un valor m*Fimo de
aproFimadamente dos #illones es el valor usual >lo /ue es un valor de 70 #its con signo?; P&P no
soporta enteros sin signo;
A5iso
i un d)gito inv*lido es pasado a un entero octal >p;e'; M o 9?A el resto del nBmero es ignorado;
E'emplo !!(*. Curiosidad de 5alores octales
<?php
=ar%dump3262K29; // 262 octal > J decimal
?>
Kesbordamiento de enteros
i especi(ica un nBmero m*s all* de los l)mites del tipo integerA ser* interpretado en su lugar como
un float; AsimismoA si realiza una operaci-n /ue resulta en un nBmero m*s all* de los l)mites del
tipo integerA un float es retornado en su lugar;
<?php
$numero%Erande > C61H1J<G1H;
=ar%dump3$numero%Erande9;
// output@ int3C61H1J<G1H9
$numero%Erande > C61H1J<G1J;
=ar%dump3$numero%Erande9;
// output@ #loat3C61H1J<G1J9
// esto tambien ocurre con los enteros indicados como hexadecimales@
=ar%dump3 2xJ2222222 9;
// output@ #loat3C61H1J<G1J9
$millon > 6222222;
$numero%Erande > 52222 W $millon;
=ar%dump3$numero%Erande9;
// output@ #loat3522222222229
?>
A5iso
Desa(ortunadamenteA ha#)a un (allo en P&P /ue provoca#a /ue esto no siempre (uncionara
correctamente cuando se presenta#an nBmeros negativos; Por e'emploC cuando hace =S0000 /
'm6llonA el resultado ser* =;2O;OX72P; in em#argoA cuando am#os operandos son positivos no se
presenta ningBn pro#lema;
+ste pro#lema (ue resuelto en P&P 8;1;3;
No hay un operador de divisi-n de enteros en P&P; 1/2 produce el float 0.S; Puede moldear el valor
a un entero para asegurarse de redondearlo hacia a#a'oA o puede usar la (unci-n round./;
<?php
=ar%dump3C5/H9; // #loat3<.5H61CJ5H61CJG9
=ar%dump33int9 3C5/H99; // int3<9
=ar%dump3round3C5/H99; // #loat319
?>
Con5ersi"n a entero
Para convertir eFpl)citamente un valor a integerA use alguno de los moldeamientos L6ntM o L6nteEerM;
in em#argoA en la mayor)a de casos no necesita usar el moldeamientoA ya /ue un valor ser*
convertido autom*ticamente si un operadorA (unci-n o estructura de control re/uiere un argumento
tipo integer; ,am#i<n puede convertir un valor a entero con la (unci-n int5al./;
$ea tam#i<n Manipulaci-n de ,ipos;
Kesde booleans
FALSE producir* 0 >cero?A y TRUE producir* 1 >uno?;
Kesde n4meros de punto flotante
5uando se realizan conversiones desde un (lotante a un enteroA el nBmero ser* redondeado hac6a
cero;
i el (lotante se encuentra m*s all* de los l)mites del entero >usualmente Y/= 2.1SeYO : 2ZR1?A el
resultado es inde(inidoA ya /ue el (lotante no tiene su(iciente precisi-n para dar un resultado entero
eFacto; No se producir* una advertenciaA cdefni si/uiera una noticia en este casoa
A5iso
Nunca moldee una (racci-n desconocida a integerA ya /ue esto en ocasiones produce resultados
inesperados;
<?php
echo 3int9 3 32.6[2.H9 W 62 9; // imprime H!
?>
Para m*s in(ormaci-nA consulte la advertencia so#re precisi-n2(lotante;
Kesde cadenas
$ea 5onversi-n de cadenas a nBmeros
Kesde otros tipos
Atenci"n
+l comportamiento de convertir desde entero no es de(inido para otros tipos; ActualmenteA el
comportamiento es el mismo /ue si el valor (uera antes convertido a #ooleano; in em#argoA no
con()e en este comportamienteA ya /ue puede ser modi(icado sin aviso;
N4meros de punto flotante
Los nBmeros de punto (lotante >tam#i<n conocidos como =(lotantes=A =do#les= o =nBmeros reales=?
pueden ser especi(icados usando cual/uiera de las siguientes sintaFisC
<?php
$a > 6.C<1;
$b > 6.Ce<;
$c > HEF62;
?>
FormalmenteC
O.+" )2FK/[
L.+" 3)2FK/W)V./:O.+";9 T 3:O.+";)V./)2FK/W9
EX?.E.*%L.+" 3 3:O.+"; T :L.+";9 )eE/)[F/? :O.+";9
+l tamaWo de un (lotante depende de la plata(ormaA aun/ue un valor comBn consiste en un m*Fimo
de g1;Me73M con una precisi-n de aproFimadamente 18 d)gitos decimales >lo /ue es un valor de K8
#its en (ormato .+++?;
Precisi"n del punto flotante
+s #astante comBn /ue algunas (racciones decimales simples como 0.1 o 0.7 no puedan ser
convertidas a su representaci-n #inaria interna sin perder un poco de precisi-n; +sto puede llevar a
resultados con(usosC por e'emploA 9loorLL0.1Y0.7M/10M usualmente devolver* 7 en lugar del
esperado P ya /ue el resultado de la representaci-n interna es en realidad algo como
7.OOOOOOOOOO...;
+sto se encuentra relacionado al hecho de /ue es imposi#le eFpresar de (orma eFacta algunas
(racciones en notaci-n decimal con un nBmero (inito de d)gitos; Por e'emploA 1/R en (orma
decimal se convierte en 0.RRRRRRR. . .;
As) /ue nunca con()e en resultados de nBmeros (lotantes hasta el Bltimo d)gitoA y nunca compare
nBmeros de punto (lotante para conocer si son Walentes; i realmente necesita una me'or precisi-nA
es #uena idea /ue use las (unciones matem*ticas de precisi-n ar#itraria o las (unciones gmp en su
lugar;
Con5ersi"n a flotante
Para m*s in(ormaci-n so#re cu*ndo y c-mo son convertidas las cadenas a (lotantesA vea la secci-n
titulada 5onversi-n de cadenas a nBmeros; Para valores de otros tiposA la conversi-n es la misma
/ue si el valor hu#iese sido convertido a entero y luego a (lotante; $ea la secci-n 5onversi-n a
entero para m*s in(ormaci-n;
Cadenas
@n valor string es una serie de caracteres; +n P&PA un caracter es lo mismo /ue un #yteA es decirA
hay eFactamente 04K tipos de caracteres di(erentes; +sto implica tam#i<n /ue P&P no tiene soporte
nativo de @nicode; $ea utfN>encode./ y utfN>decode./ para conocer so#re el soporte @nicode;
Nota- +l /ue una cadena se haga muy grande no es un pro#lema; P&P no impone l)mite
pr*ctico alguno so#re el tamaWo de las cadenasA as) /ue no hay ninguna raz-n para
preocuparse so#re las cadenas largas;
,inta+is
@n literal de cadena puede especi(icarse en tres (ormas di(erentes;
comillas simples
comillas do#les
sintaFis heredoc
Comillas simples
La (orma m*s simple de especi(icar una cadena sencilla es rodearla de comillas simples >el caracter
<?;
Para especi(icar una comilla sencilla literalA necesita escaparla con una #arra invertida >Q?A como en
muchos otros lengua'es; i una #arra invertida necesita aparecer antes de una comilla sencilla o al
(inal de la cadenaA necesitar* do#larla; Note /ue si intenta escapar cual/uier otro caracterA fla #arra
invertida ser* impresa tam#i<na De modo /ueA por lo generalA no hay necesidad de escapar la #arra
invertida misma;
Nota- +n P&P 7A se generar* una advertencia de nivel E_NOT0CE cuando esto ocurra;
Nota- A di(erencia de las otras dos sintaFisA las varia#les y secuencias de escape para
caracteres especiales no ser*n eFpandidas cuando ocurren al interior de cadenas entre
comillas sencillas;
<?php
echo Mesta es una cadena simpleM;
echo M*ambi&eacute;n puede tener saltos de l&iacute;nea embebidos
en las cadenas de esta #orma, ya Que
es =&aacute;lidoM;
// 4mprime@ ,rnold dijo una =e0@ "4Mll be bacI"
echo M,rnold dijo una =e0@ "4VMll be bacI"M;
// 4mprime@ Ha eliminado R@VW.W?
echo MHa eliminado R@VVW.W?M;
// 4mprime@ Ha eliminado R@VW.W?
echo MHa eliminado R@VW.W?M;
// 4mprime@ Esto no =a a expandirse@ Vn una nue=a linea
echo MEsto no =a a expandirse@ Vn una nue=a lineaM;
// 4mprime@ Oas =ariables no se $expanden $tampoco
echo MOas =ariables no se $expanden $tampocoM;
?>
Comillas dobles
i la cadena se encuentra rodeada de comillas do#les >=?A P&P entiende m*s secuencias de escape
para caracteres especialesC
Tabla !!(!. Caracteres escapados
secuencia significado
Qn alimentaci-n de l)nea >LF o 3F3A >13? en A5..?
Qr retorno de carro >5R o 3F3D >17? en A5..?
Qt ta#ulaci-n horizontal >&, o 3F39 >9? en A5..?
QQ #arra invertida
Q' signo de d-lar
Q* comilla2do#le
Q)0=7.G1CRH
la secuencia de caracteres /ue coincide con la eFpresi-n regular es un caracter
en notaci-n octal
Q8)0=O,=3a=9.
G1C2H
la secuencia de caracteres /ue coincide con la eFpresi-n regular es un caracter
en notaci-n heFadecimal
NuevamenteA si intenta escapar cual/uier otro caracterA fla #arra invertida ser* impresa tam#i<na
Pero la caracter)stica m*s importante de las cadenas entre comillas do#les es el hecho de /ue los
nom#res de varia#les ser*n eFpandidos; $ea procesamiento de cadenas para m*s detalles;
Heredoc
Otra (orma de delimitar cadenas es mediante el uso de la sintaFis heredoc >=```=?; De#e indicarse
un identi(icador despu<s de la secuencia $$$A luego la cadenaA y luego el mismo identi(icador para
cerrar la cita;
+l identi(icador de cierre #e1e comenzar en la primera columna de la l)nea; AsimismoA el
identi(icador usado de#e seguir las mismas reglas /ue cual/uier otra eti/ueta en P&PC de#e contener
solo caracteres al(anum<ricos y de su#rayadoA y de#e iniciar con un caracter no2d)gito o de
su#rayado;
A5iso
+s muy importante notar /ue la l)nea con el identi(icador de cierre no contenga otros caracteresA
eFcepto @u6D[s por un punto2y2coma >J?; +sto /uiere decir en especial /ue el identi(icador no #e1e
usar sanEr\aA y no de#e ha#er espacios o ta#uladores antes o despu<s del punto2y2coma; +s
importante tam#i<n notar /ue el primer caracter antes del identi(icador de cierre de#e ser un salto
de l)neaA tal y como lo de(ina su sistema operativo; +sto /uiere decir Qr en MacintoshA por e'emplo;
i esta regla es rota y el identi(icador de cierre no es =limpio=A entonces no se considera un
identi(icador de cierre y P&P continuar* en #usca de uno; iA en tal casoA no se encuentra un
identi(icador de cierre apropiadoA entonces un error del analizador sint*ctico resultar* con el
nBmero de l)nea apuntando al (inal del script;
+l teFto heredoc se comporta tal como una cadena entre comillas do#lesA sin las comillas do#les;
+sto /uiere decir /ue no necesita escapar tales comillas en sus #lo/ues heredocA pero aun puede usar
los c-digos de escape listados anteriormente; Las varia#les son eFpandidasA aun/ue de#e tenerse el
mismo cuidado cuando se eFpresen varia#les comple'as al interior de un segmento heredocA al igual
/ue con otras cadenas;
E'emplo !!(7. E'emplo de uso de una cadena heredoc
<?php
$cadena > <<<S4.
Ejemplo de una cadena
Que se extiende por =arias l&iacute;neas
usando la sintaxis heredoc.
S4.;
/W +n ejemplo mas complejo, con =ariables. W/
class #oo
:
=ar $#oo;
=ar $bar;
#unction #oo39
:
$thisF>#oo > MSooM;
$thisF>bar > array3MZar6M, MZarCM, MZar<M9;
;
;
$#oo > ne8 #oo39;
$nombre > M"i.ombreM;
echo <<<S4.
"i nombre es "$nombre". Estoy imprimiendo alEo de $#ooF>#oo.
,hora, estoy imprimiendo alEo de :$#ooF>bar)6/;.
Esto deber&iacute;a imprimir una letra M,M may&uacute;scula@ Vx16
S4.;
?>
Nota- +l soporte heredoc (ue agregado en P&P 8;
Procesamiento de 5ariables
5uando una cadena es especi(icada en comillas do#les o al interior de un #lo/ue heredocA las
varia#les son interpretadas en su interior;
+Fisten dos tipos de sintaFisC una simple y una comple'a; La sintaFis simple es la m*s comBn y
conveniente; +sta o(rece una (orma de interpretar una varia#leA un valor arrayA o una propiedad de
un ob'ect;
La sintaFis comple'a (ue introducida en P&P 8A y puede reconocerse por las llaves /ue rodean la
eFpresi-n;
,inta+is simple
i un signo de d-lar >'? es encontradoA el analizador sint*ctico tomar* am#iciosamente tantos
leFemas como le sea posi#le para (ormar un nom#re de varia#le v*lido; Rodee el nom#re de la
varia#le de llaves si desea especi(icar eFpl)citamente el (inal del nom#re;
<?php
$cer=e0a > MHeineIenM;
echo "El sabor de =arias $cer=e0aMs es excelente"; // #unciona, "M" no es un caracter =alido para nombres de =ariables
echo "*om&oacute; alEunas $cer=e0as"; // no #unciona, MsM es un caracter =alido para nombres de =ariables
echo "*om&oacute; alEunas $:cer=e0a;s"; // #unciona
echo "*om&oacute; alEunas :$cer=e0a;s"; // #unciona
?>
De (orma similarA puede hacer /ue un )ndice de un array o una propiedad de un ob'ect sean
interpretados; +n el caso de los )ndices de matricesA el corchete cuadrado de cierre >.? marca el (inal
del )ndice; Para las propiedades de o#'etosA se aplican las mismas reglas de las varia#les simplesA
aun/ue con las propiedades de o#'etos no eFiste un truco como el /ue eFiste con las varia#les;
<?php
// Estos ejemplos son especi#icos al uso de matrices al interior de
// cadenas. Ruando se encuentre por #uera de una cadena, siempre rodee
// de comillas las cla=es tipo cadena de su matri0, y no use
// :lla=es; por #uera de cadenas tampoco.
// "ostremos todos los errores
error%reportinE3E%,OO9;
$#rutas > array3M#resaM >> MrojaM, MbananoM >> MamarilloM9;
// Sunciona pero note Que esto trabaja de #orma di#erente por #uera de
// cadenas entre comillas
echo "+n banano es $#rutas)banano/.";
// Sunciona
echo "+n banano es :$#rutas)MbananoM/;.";
// Sunciona, pero H musca una constante llamada banano primero, como
// se describe mas adelante.
echo "+n banano es :$#rutas)banano/;.";
// .o #unciona, use lla=es. Esto resulta en un error de analisis sintactico.
echo "+n banano es $#rutas)MbananoM/.";
// Sunciona
echo "+n banano es " . $#rutas)MbananoM/ . ".";
// Sunciona
echo "Este cuadro tiene $cuadroF>ancho metros de ancho.";
// .o #unciona. ara una solucion, =ea la sintaxis compleja.
echo "Este cuadro tiene $cuadroF>ancho22 cent&iacute;metros de ancho.";
?>
Para cual/uier cosa m*s so(isticadaA de#er)a usarse la sintaFis comple'a;
,inta+is comple'a .lla5es/
+sta no es llamada comple'a por/ue la sintaFis sea comple'aA sino por/ue es posi#le incluir
eFpresiones comple'as de esta (orma;
De hechoA de esta (orma puede incluir cual/uier valor /ue sea parte del espacio de nom#res al
interior de cadenas; implemente escri#a la eFpresi-n en la misma (orma /ue lo har)a si se
encontrara por (uera de una cadenaA y luego la u#ica entre \ y ]; %a /ue no es posi#le escapar H\HA
esta sintaFis ser* reconocida Bnicamente cuando el caracter Y se encuentra inmediatamente despu<s
de \; >@se =\hY= o =h\Y= para o#tener una secuencia literal =\Y=?; Algunos e'emplos para aclarar el
asuntoC
<?php
// "ostremos todos los errores
error%reportinE3E%,OO9;
$Eenial > M#ant&aacute;sticoM;
// .o #unciona, imprime@ Esto es : #ant&aacute;stico;
echo "Esto es : $Eenial;";
// Sunciona, imprime@ Esto es #ant&aacute;stico
echo "Esto es :$Eenial;";
echo "Esto es $:Eenial;";
// Sunciona
echo "Este cuadro tiene :$cuadroF>ancho;22 cent&iacute;metros de ancho.";
// Sunciona
echo "Esto #unciona@ :$matri0)1/)</;";
// Esto esta mal por la misma ra0on por la Que $#oo)bar/ esta mal por
// #uera de una cadena. En otras palabras, aun #unciona pero ya Que
// H busca primero una constante llamada #oo, Eenera un error de
// ni=el E%.?*4RE 3constante inde#inida9.
echo "Esto esta mal@ :$matri0)#oo/)</;";
// Sunciona. Ruando se usan matrices multiFdimensionales, use siempre
// lla=es alrededor de las matrices al interior de cadenas
echo "Esto #unciona@ :$matri0)M#ooM/)</;";
// Sunciona.
echo "Esto #unciona@ " . $arr)M#ooM/)</;
echo "uede incluso escribir :$objF>=alores)</F>nombre;";
echo "Este es el =alor de la =ariable llamada $nombre@ :$:$nombre;;";
?>
Acceso a cadenas y modificaci"n por caracter
Los caracteres al interior de una cadena pueden ser consultados y modi(icados al especi(icar el
desplazamientoA comenzando en ceroA del caracter deseado despu<s de la cadena entre llaves;
Nota- Para e(ectos de compati#ilidad con versiones anterioresA aun puede usar corchetes
tipo matriz para el mismo prop-sito; in em#argoA esta sintaFis es o#soleta a partir de
P&P 8;
E'emplo !!(8. Algunos e'emplos de cadenas
<?php
// ?btener el primer caracter de una cadena
$cadena > MEsta es una prueba.M;
$primer > $cadena:2;;
// ?btener el tercer caracter de una cadena
$tercer > $cadena:C;;
// ?btener el ultimo caracter de una cadena.
$cadena > MEsta es tambien una prueba.M;
$ultimo > $cadena:strlen3$cadena9F6;;
// "odi#icar el ultimo caracter de una cadena
$cadena > M?bser=e el marM;
$cadena:strlen3$cadena9F6; > MlM;

?>
;unciones y operadores 4tiles
Las cadenas pueden ser concatenadas usando el operador H;H >punto?; Note /ue el operador HRH
>adici-n? no (unciona para este prop-sito; Por (avor re(i<rase a la secci-n Operadores de cadena
para m*s in(ormaci-n;
+Fisten #astantes (unciones Btiles para la modi(icaci-n de cadenas;
$ea la secci-n de (unciones de cadena para consultar (unciones de uso generalA o las (unciones de
eFpresiones regulares para #Bs/uedas y reemplazos avanzados >en dos sa#oresC Perl y PO.J
eFtendido?;
+Fisten tam#i<n (unciones para cadenas tipo @RLA y (unciones para encriptarDdesci(rar cadenas
>mcrypt y mhash?;
FinalmenteA si aun no ha encontrado lo /ue #uscaA vea tam#i<n las (unciones de tipo de caracter;
Con5ersi"n a cadena
+s posi#le convertir un valor a una cadena usando el moldeamiento Lstr6nEMA o la (unci-n str5al./;
La conversi-n a cadena se realiza autom*ticamente para usted en el conteFto de una eFpresi-n
cuando se necesita una cadena; +sto ocurre cuando usa las (unciones echo./ o print./A o cuando
compara el valor de una varia#le con una cadena; +l contenido de las secciones del manual so#re
,ipos y Manipulaci-n de ,ipos ayudan a aclarar este hecho; $ea tam#i<n settype./;
@n valor boolean TRUE es convertido a la cadena *1*A el valor FALSE se representa como ** >una
cadena vac)a?; De esta (ormaA usted puede convertir de ida y vuelta entre valores #ooleanos y de
cadena;
@n nBmero integer o de punto (lotante >float? es convertido a una cadena /ue representa el nBmero
con sus d)gitos >incluyendo la parte del eFponente para los nBmeros de punto (lotante?;
Las matrices son siempre convertidas a la cadena *,rra?*A de modo /ue no puede volcar los
contenidos de un valor array con echo./ o print./ para ver lo /ue se encuentra en su interior; Para
ver un elementoA usted tendr)a /ue hacer algo como echo 'arr)<9oo<.; $ea m*s adelante algunos
conse'os so#re el volcadoDvista del contenido completo;
Los o#'etos son convertidos siempre a la cadena *O1Uect*; i /uisiera imprimir los valores de
varia#les miem#ro de un ob'ect para e(ectos de depuraci-nA lea los par*gra(os siguientes; i /uiere
conocer el nom#re de clase del cual un o#'eto dado es instanciaA use get>class./;
Los recursos son siempre convertidos a cadenas con la estructura *Resource 6# K1* en donde 1 es el
nBmero Bnico del valor resource asignado por P&P durante tiempo de e'ecuci-n; i /uisiera
o#tener el tipo del recursoA use get>resource>type./;
NULL se convierte siempre a una cadena vac)a;
5omo puede apreciarA el imprimir matricesA o#'etos o recursos no le o(roce in(ormaci-n Btil so#re
los valores mismos; 5onsulte las (unciones print>r./ y 5ar>dump./ para conocer me'ores (ormas
de imprimir valores para depuraci-n;
,am#i<n puede convertir valores P&P a cadenas y almacenarlas permanentemente; +ste m<todo es
conocido como seriaci-nA y puede ser e(ectuado con la (unci-n seriali6e./; ,am#i<n puede seriar
valores P&P a estructuras JMLA si cuenta con soporte LDDJ en su con(iguraci-n de P&P;
Con5ersi"n de cadenas a n4meros
5uando una cadena es evaluada como un valor num<ricoA el valor resultante y su tipo son
determinados como sigue;
La cadena ser* evaluada como un float si contiene cual/uier caracter entre H;HA HeHA o H+H; De otra
(ormaA evaluar* como un entero;
+l valor es dado por la porci-n inicial de la cadena; i la cadena comienza con datos num<ricos
v*lidosA <stos ser*n el valor usado; De lo contrarioA el valor ser* 3 >cero?; @n signo opcional es
considerado un dato num<rico v*lidoA seguido por uno o m*s d)gitos >/ue pueden contener un punto
decimal?A seguidos por un eFponente opcional; +l eFponente es una HeH o H+H seguida de uno o m*s
d)gitos;
<?php
$#oo > 6 [ "62.5"; // $#oo es #lotante 366.59
$#oo > 6 [ "F6.<e<"; // $#oo es #lotante 3F6CKK9
$#oo > 6 [ "bobF6.<e<"; // $#oo es entero 369
$#oo > 6 [ "bob<"; // $#oo es entero 369
$#oo > 6 [ "62 Rerditos"; // $#oo es entero 3669
$#oo > 1 [ "62.C Rerditos"; // $#oo es #lotante 361.C9
$#oo > "62.2 cerdos " [ 6; // $#oo es #lotante 3669
$#oo > "62.2 cerdos " [ 6.2; // $#oo es #lotante 3669
?>
Para m*s in(ormaci-n so#re esta conversi-nA vea la p*gina del manual @niF so#re strtod>7?;
i /uisiera pro#ar cual/uiera de los e'emplos presentados en esta secci-nA puede cortar y pegar los
e'emplos e insertar la siguiente l)nea para veri(icar por s) mismo lo /ue est* sucediendoC
<?php
echo "V$#oo>>$#oo; tipo es " . Eettype 3$#oo9 . "<br />Vn";
?>
No espere o#tener el c-digo de un caractar convirti<ndolo a un entero >como lo har)a en 5A por
e'emplo?; @se las (unciones ord./ y chr./ para convertir entre c-digos de caracter y caracteres;
Matrices
@na matriz en P&P es en realidad un mapa ordenado; @n mapa es un tipo de datos /ue asocia
alores con claes; +ste tipo es optimizado en varias (ormasA de modo /ue puede usarlo como una
matriz realA o una lista >vector?A ta#la asociativa >caso particular de implementaci-n de un mapa?A
diccionarioA colecci-nA pilaA cola y pro#a#lemente m*s; %a /ue puede tener otra matriz P&P como
valorA es realmente (*cil simular *r#oles;
@na eFplicaci-n so#re tales estructuras de datos se encuentra por (uera del prop-sito de este manualA
pero encontrar* al menos un e'emplo de cada uno de ellos; Para m*s in(ormaci-nA le re(erimos a
literatura eFterna so#re este amplio tema;
,inta+is
Especificaci"n con array./
@n array puede ser creado por la construcci-n de lengua'e array./; [sta toma un cierto nBmero de
pare'as clae :& alor separadas con coma;
array3 )cla=e >>/ =alor
, ...
9
// cla=e puede ser un integer o string
// =alor puede ser cualQuier =alor
<?php
$matri0 > array3"#oo" >> "bar", 6C >> true9;
echo $matri0)"#oo"/; // bar
echo $matri0)6C/; // 6
?>
@na clae puede ser un 6nteEer o un string; i una clave es la representaci-n est*ndar de un integerA
ser* interpretada como tal >es decirA *P* ser* interpretado como PA mientras /ue *0P* ser*
interpretado como *0P*?; No eFisten tipos di(erentes para matrices indeFadas y asociativas en P&PX
s-lo eFiste un tipo de matrizA el cual puede contener )ndices tipo entero o cadena;
@n valor puede ser de cual/uier tipo en P&P;
<?php
$matri0 > array3"unamatri0" >> array3G >> 5, 6< >> K, "a" >> 1C99;
echo $matri0)"unamatri0"/)G/; // 5
echo $matri0)"unamatri0"/)6</; // K
echo $matri0)"unamatri0"/)"a"/; // 1C
?>
i no especi(ica una clave para un valor dadoA entonces es usado el m*Fimo de los )ndices enterosA y
la nueva clave ser* ese valor m*Fimo R 1; i especi(ica una clave /ue ya tiene un valor asignadoA
<se valor ser* so#rescrito;
<?php
// Esta matri0 es la misma Que ...
array35 >> 1<, <C, 5G, "b" >> 6C9;
// ...esta matri0
array35 >> 1<, G >> <C, H >> 5G, "b" >> 6C9;
?>
A5iso
A partir de P&P 8;7;3A el comportamiento de generaci-n de )ndices descrito ha cam#iado; AhoraA
si agrega un elemento a una matriz cuya clave m*Fima actual es un valor negativoA entonces la
siguiente clave creada ser* cero >0?; AnteriormenteA el nuevo )ndice hu#iera sido esta#lecido a la
clave mayor eFistente R 1A al igual /ue con los )ndices positivos;
Al usar TRUE como claveA el valor ser* evaluado al integer 1; Al usar FALSE como claveA el valor
ser* evaluado al integer 0; Al usar NU44 como claveA el valor ser* evaluado a una cadena vac)a; +l
uso de una cadena vac)a como clave crear* >o reemplazar*? una clave con la cadena vac)a y su valorX
no es lo mismo /ue usar corchetes vac)os;
No es posi#le usar matrices u o#'etos como claves; Al hacerlo se producir* una advertenciaC 0lleEal
o99set t?pe;
Creaci"nAmodificaci"n con sinta+is de corchetes cuadrados
+s posi#le modi(icar una matriz eFistente al de(inir valores eFpl)citamente en ella;
+sto es posi#le al asignar valores a la matriz al mismo tiempo /ue se especi(ica la clave entre
corchetes; ,am#i<n es posi#le omitir la claveA agregar una pare'a vac)a de corchetes >=).=? al
nom#re de la varia#le en ese caso;
$matri0)cla=e/ > =alor;
$matri0)/ > =alor;
// cla=e puede ser un integer o string
// =alor puede ser cualQuier =alor
i 'matr6D no eFiste aunA <sta ser* creada; De modo /ue esta es tam#i<n una (orma alternativa de
especi(icar una matriz; Para modi(icar un cierto valorA simplemente asigne un nuevo valor a un
elemento especi(icado con su clave; i desea remover una pare'a claveDvalorA necesita eliminarla
mediante unset./;
<?php
$matri0 > array35 >> 6, 6C >> C9;
$matri0)/ > 5G; // Esto es iEual Que $matri0)6</ > 5G;
// en este punto del script
$matri0)"x"/ > 1C; // Esto aEreEa un nue=o elemento a la
// matri0 con la cla=e "x"

unset3$matri0)5/9; // Esto elimina el elemento de la matri0
unset3$matri09; // Esto elimina la matri0 completa
?>
Nota- 5omo se menciona anteriormenteA si provee los corchetes sin ninguna clave
especi(icadaA entonces se toma el m*Fimo de los )ndices enteros eFistentesA y la nueva
clave ser* ese valor m*Fimo R 1; i no eFisten )ndices enteros aunA la clave ser* 0
>cero?; i especi(ica una clave /ue ya ten)a un valor asignadoA el valor ser* reemplazado;
A5iso
A partir de P&P 8;7;3A el comportamiento de generaci-n de )ndices descrito ha cam#iado; AhoraA
si agrega un elemento al (inal de una matriz en la /ue la clave m*Fima actual es negativaA la
siguiente clave creada ser* cero >0?; AnteriormenteA el nuevo )ndice hu#iera sido de(inido como la
mayor clave R 1A al igual /ue ocurre con los )ndices positivos;
Note /ue la clave entera m*Fima usada para este caso no neces6ta e86st6r actualmente en
la matr6D; ,an solo de#e ha#er eFistido en la matriz en algBn punto desde /ue la matriz
haya sido re2indeFada; +l siguiente e'emplo ilustra este casoC
<?php
// Rrear una matri0 simple.
$matri0 > array36, C, <, 1, 59;
print%r3$matri09;
// ,hora eliminar cada item, pero dejar la matri0 misma intacta@
#oreach 3$matri0 as $i >> $=alor9 :
unset3$matri0)$i/9;
;
print%r3$matri09;
// ,EreEar un item 3note Que la nue=a cla=e es 5, en luEar de 2 como
// podria esperarse9.
$matri0)/ > G;
print%r3$matri09;
// 'eFindexar@
$matri0 > array%=alues3$matri09;
$matri0)/ > H;
print%r3$matri09;
?>
+l anterior e'emplo producir)a la siguiente salidaC
,rray
3
)2/ >> 6
)6/ >> C
)C/ >> <
)</ >> 1
)1/ >> 5
9
,rray
3
9
,rray
3
)5/ >> G
9
,rray
3
)2/ >> G
)6/ >> H
9
;unciones 4tiles
+Fiste un #uen nBmero de (unciones Btiles para tra#a'ar con matrices; 5onsulte la secci-n (unciones
de matrices;
Nota- La (unci-n unset./ le permite remover la de(inici-n de claves de una matriz;
,enga en cuenta /ue la matriz NO es re2indeFada; i s-lo usa =)ndices enteros comunes=
>comenzando desde ceroA incrementando en uno?A puede conseguir el e(ecto de re2
indeFaci-n usando array>5alues./;
<?php
$a > array36 >> MunoM, C >> MdosM, < >> MtresM9;
unset3$a)C/9;
/W producira una matri0 Que hubiera sido de#inida como
$a > array36 >> MunoM, < >> MtresM9;
y .?
$a > array36 >> MunoM, C >>MtresM9;
W/
$b > array%=alues3$a9;
// ,hora $b es array32 >> MunoM, 6 >>MtresM9
?>
La estructura de control (oreach eFiste espec)(icamente para las matrices; [sta provee una manera
(*cil de recorrer una matriz;
Mecomendaciones sobre matrices y cosas a e5itar
#Por?u% es incorrecto $foo[bar]&
iempre de#en usarse comillas alrededor de un )ndice de matriz tipo cadena literal; Por e'emploA use
Y(ooPH#arHQ y no Y(ooP#arQ; UPero /u< est* mal en Y(ooP#arQN +s posi#le /ue haya visto la siguiente
sintaFis en scripts vie'osC
<?php
$#oo)bar/ > MenemiEoM;
echo $#oo)bar/;
// etc
?>
+sto est* malA pero (unciona; +ntoncesA Upor/u< est* malN La raz-n es /ue este c-digo tiene una
constante inde(inida >#ar? en lugar de una cadena >H#arH 2 note las comillas?A y puede /ue en el (uturo
P&P de(ina constantes /ueA desa(ortunadamente para su c-digoA tengan el mismo nom#re; Funciona
por/ue P&P autom*ticamente convierte una ca#ena pura >una cadena sin comillas /ue no
corresponda con s)m#olo conocido alguno? en una cadena /ue contiene la cadena pura; Por e'emploA
si no se ha de(inido una constante llamada arA entonces P&P reemplazar* su valor por la cadena
<1ar< y usar* <sta Bltima;
Nota- +sto no /uiere decir /ue s6empre haya /ue usar comillas en la clave; No /uerr*
usar comillas con claves /ue sean constantes o varia#lesA ya /ue en tal caso P&P no
podr* interpretar sus valores;
<?php
error%reportinE3E%,OO9;
ini%set3Mdisplay%errorsM, true9;
ini%set3Mhtml%errorsM, #alse9;
// "atri0 simple@
$matri0 > array36, C9;
$conteo > count3$matri09;
#or 3$i > 2; $i < $conteo; $i[[9 :
echo "Vn'e=isando $i@ Vn";
echo ""al@ " . $matri0)M$iM/ . "Vn";
echo "Zien@ " . $matri0)$i/ . "Vn";
echo ""al@ :$matri0)M$iM/;Vn";
echo "Zien@ :$matri0)$i/;Vn";
;
?>
Nota- La salida del anterior (ragmento esC
'e=isando 2@
.otice@ +nde#ined index@ $i in /path/to/script.html on line K
"al@
Zien@ 6
.otice@ +nde#ined index@ $i in /path/to/script.html on line 66
"al@
Zien@ 6
'e=isando 6@
.otice@ +nde#ined index@ $i in /path/to/script.html on line K
"al@
Zien@ C
.otice@ +nde#ined index@ $i in /path/to/script.html on line 66
"al@
Zien@ C
M*s e'emplos para demostrar este hechoC
<?php
// "ostrar todos los errores
error%reportinE3E%,OO9;
$matri0 > array3M#rutaM >> Mman0anaM, M=eEetalM >> M0anahoriaM9;
// Rorrecto
print $matri0)M#rutaM/; // man0ana
print $matri0)M=eEetalM/; // 0anahoria
// 4ncorrecto. Esto #unciona pero tambi&eacute;n Eenera un error de H de
// ni=el E%.?*4RE ya Que no hay de#inida una constante llamada #ruta
//
// .otice@ +se o# unde#ined constant #ruta F assumed M#rutaM in...
print $matri0)#ruta/; // man0ana
// Le#inamos una constante para demostrar lo Que pasa. ,siEnaremos el
// =alor M=eEetalM a una constante llamada #ruta.
de#ine3M#rutaM, M=eEetalM9;
// .ote la di#erencia ahora
print $matri0)M#rutaM/; // man0ana
print $matri0)#ruta/; // 0anahoria
// Oo siEuiente esta bien ya Que se encuentra al interior de una
// cadena. Oas constantes no son procesadas al interior de
// cadenas, asi Que no se produce un error E%.?*4RE aQui
print "Hola $matri0)#ruta/"; // Hola man0ana
// Ron una excepcion, los corchetes Que rodean las matrices al
// interior de cadenas permiten el uso de constantes
print "Hola :$matri0)#ruta/;"; // Hola 0anahoria
print "Hola :$matri0)M#rutaM/;"; // Hola man0ana
// Esto no #unciona, resulta en un error de interprete como@
// arse error@ parse error, expectinE *%&*'4.-M or *%(,'4,ZOEM or *%.+"%&*'4.-M
// Esto se aplica tambien al uso de autoElobales en cadenas, por supuesto
print "Hola $matri0)M#rutaM/";
print "Hola $%-E*)M#ooM/";
// Oa concatenacion es otra opcion
print "Hola " . $matri0)M#rutaM/; // Hola man0ana
?>
5uando ha#ilita error>reporting./ para mostrar errores de nivel E_NOTICE >como por e'emplo
de(iniendo el valor E_ALL? ver* estos errores; Por de(ectoA errorZreporting se encuentra
con(igurado para no mostrarlos;
,al y como se indica en la secci-n de sintaFisA de#e eFistir una eFpresi-n entre los corchetes
cuadrados >H)H y H.H?; +so /uiere decir /ue puede escri#ir cosas como estaC
<?php
echo $matri0)alEuna%#uncion3$bar9/;
?>
+ste es un e'emplo del uso de un valor devuelto por una (unci-n como )ndice de matriz; P&P
tam#i<n conoce las constantesA tal y como ha podido apreciar a/uellas E_/ antes;
<?php
$descripciones%de%error)E%E''?'/ > "+n error #atal ha ocurrido";
$descripciones%de%error)E%7,'.4.-/ > "H produjo una ad=ertencia";
$descripciones%de%error)E%.?*4RE/ > "Esta es una noticia in#ormal";
?>
Note /ue E_ERROR es tam#i<n un identi(icador v*lidoA asi como 1ar en el primer e'emplo; Pero el
Bltimo e'emplo es Walente a escri#irC
<?php
$descripciones%de%error)6/ > "+n error #atal ha ocurrido";
$descripciones%de%error)C/ > "H produjo una ad=ertencia";
$descripciones%de%error)J/ > "Esta es una noticia in#ormal";
?>
ya /ue E_ERROR es igual a 1A etc;
,al y como lo hemos eFplicado en los anteriores e'emplosA '9oo)1ar. aun (unciona pero est* mal;
FuncionaA por/ue de#ido a su sintaFisA se espera /ue 1ar sea una eFpresi-n constante; in em#argoA
en este caso no eFiste una constante con el nom#re 1ar; P&P asume ahora /ue usted /uiso decir 1ar
literalmenteA como la cadena *1ar*A pero /ue olvid- escri#ir las comillas;
#Entonces por?u% est mal&
+n algBn momento en el (uturoA el e/uipo de P&P puede /uerer usar otra constante o pala#ra claveA
o puede /ue usted introduzca otra constante en su aplicaci-nA y entonces se ve en pro#lemas; Por
e'emploA en este momento no puede usar las pala#ras empt? y #e9ault de esta (ormaA ya /ue son
pala#ras clave reservadas especiales;
Nota- ReiterandoA al interior de un valor string entre comillas do#lesA es v*lido no
rodear los )ndices de matriz con comillasA as) /ue *'9oo)1ar.* es v*lido; 5onsulte los
e'emplos anteriores para m*s detalles so#re el por/u<A asi como la secci-n so#re
procesamiento de varia#les en cadenas;
Con5ersi"n a matri6
Para cual/uiera de los tiposC integerA floatA stringA boolean y resourceA si convierte un valor a un
arrayA o#tiene una matriz con un elemento >con )ndice 3?A el cual es el valor escalar con el /ue
inici-;
i convierte un ob'ect a una matrizA o#tiene las propiedades >varia#les miem#ro? de ese o#'eto
como los elementos de la matriz; Las claves son los nom#res de las varia#les miem#ro;
i convierte un valor NULL a matrizA o#tiene una matriz vac)a;
Comparaci"n
+s posi#le comparar matrices con array>diff./ y mediante operadores de matriz;
E'emplos
+l tipo matriz en P&P es #astante vers*tilA as) /ue a/u) se presentan algunos e'emplos /ue
demuestran el poder completo de las matrices;
<?php
// esto
$a > array3 McolorM >> MrojoM,
MsaborM >> MdulceM,
M#ormaM >> MredondaM,
MnombreM >> Mman0anaM,
1 // la cla=e sera 2
9;
// es completamente Dalente con
$a)McolorM/ > MrojoM;
$a)MsaborM/ > MdulceM;
$a)M#ormaM/ > MredondaM;
$a)MnombreM/ > Mman0anaM;
$a)/ > 1; // la cla=e sera 2
$b)/ > MaM;
$b)/ > MbM;
$b)/ > McM;
// resultara en la matri0 array32 >> MaM , 6 >> MbM , C >> McM9,
// o simplemente array3MaM, MbM, McM9
?>
E'emplo !!(9. )so de array./
<?php
// ,rray como mapa de propiedades
$mapa > array3 M=ersionM >> 1,
M&?M >> MOinuxM,
Midioma >> MinElesM,
MetiQuetas%cortasM >> true
9;

// cla=es estrictamente numericas
$matri0 > array3 H,
J,
2,
65G,
F62
9;
// esto es lo mismo Que array32 >> H, 6 >> J, ...9
$cambios > array3 62, // cla=e > 2
5 >> G,
< >> H,
MaM >> 1,
66, // cla=e > G 3el indice entero maximo era 59
MJM >> C, // cla=e > J 3entero!9
M2CM >> HH, // cla=e > M2CM
2 >> 6C // el =alor 62 sera reempla0ado por 6C
9;

// matri0 =acia
$=acio > array39;
?>
E'emplo !!(<. Colecci"n
<?php
$colores > array3MrojoM, Ma0ulM, M=erdeM, MamarilloM9;
#oreach 3$colores as $color9 :
echo "&iQuest;Oe Eusta el $color?Vn";
;
?>
+sto producir* la salidaC
&iQuest;Oe Eusta el rojo?
&iQuest;Oe Eusta el a0ul?
&iQuest;Oe Eusta el =erde?
&iQuest;Oe Eusta el amarillo?
Note /ue actualmente no es posi#le cam#iar los valores de la matriz directamente en un ciclo de ese
tipo; @na soluci-n parcial es la siguienteC
E'emplo !!(=. Colecci"n
<?php
#oreach 3$colores as $cla=e >> $color9 :
// no #unciona@
//$color > strtoupper3$color9;

// #unciona@
$colores)$cla=e/ > strtoupper3$color9;
;
print%r3$colores9;
?>
+sto genera la salidaC
,rray
3
)2/ >> '?A?
)6/ >> ,Y+O
)C/ >> (E'LE
)</ >> ,",'4OO?
9
+ste e'emplo crea una matriz con #ase uno;
E'emplo !!(N. Sndice con base !
<?php
$primercuarto > array36 >> MEneroM, MSebreroM, M"ar0oM9;
print%r3$primercuarto9;
?>
+sto imprimeC
,rray
3
)6/ >> MEneroM
)C/ >> MSebreroM
)</ >> M"ar0oM
9
E'emplo !!(O. :lenado de una matri6
<?php
// llenar una matri0 con todos los items de un directorio
$Eestor > opendir3M.M9;
8hile 3#alse !>> 3$archi=o > readdir3$Eestor999 :
$archi=os)/ > $archi=o;
;
closedir3$Eestor9;
?>
Las matrices son ordenadas; Puede tam#i<n cam#iar el orden usando varias (unciones de
ordenamiento; $ea la secci-n so#re (unciones de matrices para m*s in(ormaci-n; Puede contar el
nBmero de items en una matriz usando la (unci-n count./;
E'emplo !!(!D. Jrdenamiento de una matri6
<?php
sort3$archi=os9;
print%r3$archi=os9;
?>
Dado /ue el valor de una matriz puede ser cual/uier cosaA tam#i<n puede ser otra matriz; De esta
(orma es posi#le crear matrices recursivas y multi2dimensionales;
E'emplo !!(!!. Matrices recursi5as y multi(dimensionales
<?php
$#rutas > array 3 "#rutas" >> array 3 "a" >> "naranja",
"b" >> "banano",
"c" >> "man0ana"
9,
"numeros" >> array 3 6,
C,
<,
1,
5,
G
9,
"hoyos" >> array 3 "primero",
5 >> "seEundo",
"tercero"
9
9;
// ,lEunos ejemplos Que hacen re#erencia a los =alores de la matri0 anterior
echo $#rutas)"hoyos"/)5/; // imprime "seEundo"
echo $#rutas)"#rutas"/)"a"/; // imprime "naranja"
unset3$#rutas)"hoyos"/)2/9; // elimina "primero"
// Rrear una nue=a matri0 multiFdimensional
$juEos)"man0ana"/)"=erde"/ > "bien";
?>
De#e advertir /ue la asignaci-n de matrices siempre involucra la copia de valores; Necesita usar el
operador de re(erencia para copiar una matriz por re(erencia;
<?php
$matri06 > array3C, <9;
$matri0C > $matri06;
$matri0C)/ > 1; // $matri0C cambia,
// $matri06 siEue siendo array3C, <9

$matri0< > &$matri06;
$matri0<)/ > 1; // ahora $matri06 y $matri0< son iEuales
?>
Jb'etos
Iniciali6aci"n de Jb'etos
Para inicializar un o#'etoA use la sentencia ne7A lo /ue instancia el o#'eto a una varia#le;
<?php
class #oo
:
#unction hacer%#oo39
:
echo "Haciendo #oo.";
;
;
$bar > ne8 #oo;
$barF>hacer%#oo39;
?>
Para una discusi-n completaA por (avor re(i<rase a la secci-n 5lases y O#'etos;
Con5ersi"n a ob'eto
i un o#'eto es convertido a un o#'etoA <ste no es modi(icado; i un valor de cual/uier otro tipo es
convertido a o#'etoA una nueva instancia de la clase st#Class es creada; i el valor era nuloA la nueva
instancia ser* vac)a; Para cual/uier otro valorA una varia#le miem#ro llamada scalar contendr* el
valor;
<?php
$obj > 3object9 MciaoM;
echo $objF>scalar; // imprime MciaoM
?>
Mecurso
@n recurso es una varia#le especialA /ue contiene una re(erencia a un recurso eFterno; Los recursos
son creados y usados por (unciones especiales; $ea el ap<ndice para un listado de todas estas
(unciones y los tipos de recurso correspondientes;
Nota- +l tipo recurso (ue introducido en P&P 8
Con5ersi"n a un recurso
Dado /ue los tipos de recurso contienen gestores especiales a archivos a#iertosA coneFiones con
#ases de datosA *reas de pintura de im*genes y cosas por el estiloA no es posi#le convertir cual/uier
valor a un recurso;
:iberaci"n de recursos
Gracias al sistema de conteo de re(erencias introducido con el Motor Iend de P&P 8A se detecta
autom*ticamente cuando un recurso ya no es re(erenciado >tal como en !ava?; 5uando este es el
casoA todos los recursos /ue (ueron usados para <ste recurso se li#eran por el recolector de #asura;
Por esta raz-nA rara vez se necesita li#erar la memoria manualmente mediante el uso de alguna
(unci-n (reeZresult;
Nota- Los enlaces persistentes con #ases de datos son especialesA ellos no son destruidos
por el recolector de #asura; $ea tam#i<n la secci-n so#re coneFiones persistentes;
N)::
+l valor especial NULL representa /ue una varia#le no tiene valor; NULL es el Bnico valor posi#le
del tipo N)::;
Nota- +l tipo null se introdu'o en P&P 8
@na varia#le es considerada como NULL si
se ha asignado la constante NULL a la varia#le;
no ha sido de(inida con valor alguno;
ha sido eliminada con unset./;
,inta+is
+Fiste un solo valor de tipo NULLA y ese es la pala#ra clave NULLA insensi#le a mayBsculas y
minBsculas;
<?php
$=ar > .+OO;
?>
$ea tam#i<n is>null./ y unset./;
Pseudo(tipos usados en esta documentaci"n
mi+ed
m68e# indica /ue un par*metro puede aceptar mBltiples tipos >pero no necesariamente todos?;
gettype./ por e'emplo aceptar* todos los tipos P&PA mientras /ue str>replace./ aceptar* cadenas y
matrices;
number
num1er indica /ue un par*metro puede ser integer o float;
callbacB
Algunas (unciones como call>user>func./ o usort./ aceptan llamadas de retorno de(inidas por el
usuario como un par*metro; Las (unciones tipo llamada de retorno no s-lo pueden ser (unciones
simplesA tam#i<n pueden ser m<todos de o#'etos incluyendo m<todos est*ticos de clase;
@na (unci-n de P&P es simplemente pasada usando su nom#re como una cadena; Puede pasar
cual/uier (unci-n incorporada o de(inida por el usuario con la eFcepci-n de array./A echo./A empty
./A e5al./A e+it./A isset./A list./A print./ y unset./;
@n m<todo de un o#'eto instanciado es pasado como una matriz /ue contiene un o#'eto como el
elemento con el )ndice 3 y un nom#re de m<todo como el elemento con )ndice 1;
Los m<todos est*ticos de clase pueden ser pasados tam#i<n sin instanciar un o#'eto de esa clase al
pasar el nom#re de clase en lugar de un o#'eto como el elemento con )ndice 3;
E'emplo !!(!*. E'emplos de funciones tipo llamada de retorno
<?php
// ejemplo simple de una llamada de retorno
#unction mi%llamada%de%retorno39 :
echo M&iexcl;Hola mundo!M;
;
call%user%#unc3Mmi%llamada%de%retornoM9;
// ejemplos de un m&eacute;todo como llamada de retorno
class "iRlase :
#unction mi"etodoLe'etorno39 :
echo M&iexcl;Hola "undo!M;
;
;
// llamada de metodo estatico de clase sin instanciar un objeto
call%user%#unc3array3M"iRlaseM, Mmi"etodoLe'etornoM99;
// llamada a un metodo de objeto
$obj > ne8 "iRlase39;
call%user%#unc3array3&$obj, Mmi"etodoLe'etornoM99;
?>
Manipulaci"n de Tipos
P&P no re/uiere >o soporta? la de(inici-n eFpl)cita de tipos en la declaraci-n de varia#lesX el tipo de
una varia#le es determinado por el conteFto en el /ue la varia#le es usada; Lo /ue /uiere decir /ue
si asigna un valor de cadena a la varia#le 'arA 'ar se convierte en una cadena; i luego asigna un
valor entero a 'arA <sta se convierte en entera;
@n e'emplo de la conversi-n autom*tica de tipos de P&P es el operador de adici-n HRH; i cual/uiera
de los operandos es un (lotanteA entonces todos los operandos son evaluados como (lotantesA y el
resultado ser* un (lotante; De otro modoA los operandos ser*n interpretados como enterosA y el
resultado ser* tam#i<n un entero; Note /ue este NO modi(ica los tipos de los operandos mismosX el
Bnico cam#io est* en la (orma como los operandos son evaluados;
<?php
$#oo > "2"; // $#oo es una cadena 3,&R44 1J9
$#oo [> C; // $#oo es ahora un entero 3C9
$#oo > $#oo [ 6.<; // $#oo es ahora un #lotante 3<.<9
$#oo > 5 [ "62 Rerditos"; // $#oo es entero 3659
$#oo > 5 [ "62 Rerdos"; // $#oo es entero 3659
?>
i los dos Bltimos e'emplos lucen eFtraWosA consulte 5onversi-n de cadenas a nBmeros;
i desea (orzar /ue una varia#le sea evaluada como un cierto tipoA consulte la secci-n so#re
Moldeamiento de tipos; i desea cam#iar el tipo de una varia#leA vea settype./;
i /uisiera pro#ar cual/uiera de los e'emplos en esta secci-nA puede usar la (unci-n 5ar>dump./;
Nota- +l comportamiento de una conversi-n autom*tica a matriz no se encuentra
de(inido en el momento;
<?php
$a > "6"; // $a es una cadena
$a)2/ > "#"; // Nue hay de las posiciones de cadena? Nue sucede?
?>
%a /ue P&P >por razones hist-ricas? soporta el uso de )ndices en cadenas mediante
desplazamientos de posici-n usando la misma sintaFis /ue la indeFaci-n de matricesA el
e'emplo anterior lleva a un pro#lemaC Ude#er)a Ya convertirse en una matriz con un
primer elemento =(=A o de#er)a =(= convertirse en el primer caracter de la cadena YaN
Las versiones recientes de P&P interpretan la segunda asignaci-n como una
identi(icaci-n de desplazamiento de cadenaA as) /ue Ya se convierte en =(=A sin em#argo
el resultado de esta conversi-n autom*tica de#e considerarse inde(inido; P&P 8
introdu'o la nueva sintaFis de llaves para acceder a los caracteres de una cadenaA use
esta sintaFis en lugar de la /ue (ue presentada anteriormenteC
<?php
$a > "abc"; // $a es una cadena
$a:6; > "#"; // $a es ahora "a#c"
?>
$ea la secci-n llamada Acceso a cadenas por caracter para m*s in(ormaci-n;
Moldeamiento de Tipos
+l moldeamiento de tipos en P&P (unciona de (orma muy similar a como ocurre en 5C el nom#re
del tipo deseado es escrito entre par<ntesis antes de la varia#le /ue de#e ser moldeada;
<?php
$#oo > 62; // $#oo es un entero
$bar > 3boolean9 $#oo; // $bar es un booleano
?>
Los moldeamiontos permitidos sonC
>int?A >integer? 2 moldeamiento a entero
>#ool?A >#oolean? 2 moldeamiento a #ooleano
>(loat?A >dou#le?A >real? 2 moldeamiento a (lotante
>string? 2 moldeamiento a cadena
>array? 2 moldeamiento a matriz
>o#'ect? 2 moldeamiento a o#'eto
Note /ue las ta#ulaciones y los espacios son permitidos al interior de los par<ntesisA as) /ue las
siguientes eFpresiones son (uncionalmente WalentesC
<?php
$#oo > 3int9 $bar;
$#oo > 3 int 9 $bar;
?>
Nota- +n lugar de moldear una varia#le a cadenaA puede tam#i<n rodear la varia#le de
comillas do#les;
<?php
$#oo > 62; // $#oo es un entero
$cad > "$#oo"; // $cad es una cadena
$#st > 3strinE9 $#oo; // $#st es tambien una cadena
// Esto imprime "son lo mismo"
i# 3$#st >>> $cad9 :
echo "son lo mismo";
;
?>
Puede /ue no sea o#vio /u< sucede eFactamente cuando se moldea entre ciertos tipos; Para m*s
in(ormaci-nA consulte las seccionesC
5onversi-n a #ooleano
5onversi-n a entero
5onversi-n a (lotante
5onversi-n a cadena
5onversi-n a matriz
5onversi-n a o#'eto
5onversi-n a un recurso
Las ta#las de comparaci-n de tipos
Captulo !*. Cariables
Conceptos 1sicos
+n P&P las varia#les se representan como un signo de d-lar seguido por el nom#re de la varia#le; +l
nom#re de la varia#le es sensi#le a minBsculas y mayBsculas;
Los nom#res de varia#les siguen las mismas reglas /ue otras eti/uetas en P&P; @n nom#re de
varia#le valido tiene /ue empezar con una letra o una raya >underscore?A seguido de cual/uier
nBmero de letrasA nBmeros y rayas; 5omo eFpresi-n regular se podria eFpresar comoC HPa2zA2IZhF:(2
hF((QPa2zA2I329ZhF:(2hF((QVH
Nota- +n nuestro casoA una letra es a2zA A2IA y los caracteres A5.. del 10: al 044
>3F:(23F((?;
<?php
$=ar > "Zob";
$(ar > "Aoe";
echo "$=ar, $(ar"; // outputs "Zob, Aoe"
$1site > Mnot yetM; // in=alid; starts 8ith a number
$%1site > Mnot yetM; // =alid; starts 8ith an underscore
$t_`abyte > MmansiIIaM; // =alid; M_`abM is ,&R44 CCJ 3Extendido9
?>
+n P&P7A las varia#les siempre se asignan por valor; +sto signi(ica /ue cuando se asigna una
eFpresi-n a una varia#leA el valor )ntegro de la eFpresi-n original se copia en la varia#le de destino;
+sto /uiere decir /ueA por e'emploA despu<s e asignar el valor de una varia#le a otraA los cam#ios
/ue se e(ectBen a una de esas varia#les no a(ectar* a la otra; Para m*s in(ormaci-n so#re este tipo de
asignaci-nA vea +Fpresiones;
P&P8 o(rece otra (orma de asignar valores a las varia#lesC as6Enar por re9erenc6a; +sto signi(ica /ue
la nueva varia#le simplemente re(erencia >en otras pala#rasA =se convierte en un alias de= - =apunta
a=? la varia#le original; Los cam#ios a la nueva varia#le a(ectan a la originalA y viceversa; +sto
tam#i<n signi(ica /ue no se produce una copia de valoresX por tantoA la asignaci-n ocurre m*s
r*pidamente; De cual/uier (ormaA cual/uier incremento de velocidad se notar* s-lo en los #ucles
cr)ticos cuando se asignen grandes matrices u o#'etos;
Para asignar por re(erenciaA simplemente se antepone un ampersandsigno =i= al comienzo de la
varia#le cuyo valor se est* asignando >la varia#le (uente?; Por e'emploA el siguiente trozo de c-digo
produce la salida HMi nom#re es Bo#H dos vecesC
<?php
$#oo > MZobM; // ,siEna el =alor MZobM a $#oo
$bar > &amp;$#oo; // 'e#erencia $#oo =&iacute;a $bar.
$bar > ""i nombre es $bar"; // "odi#ica $bar...
echo $#oo; // $#oo tambi&eacute;n se modi#ica.
echo $bar;
?>
Algo importante a tener en cuenta es /ue s-lo las varia#les con nom#re pueden ser asignadas por
re(erencia;
<?php
$#oo > C5;
$bar > &amp;$#oo; // Esta es una asiEnaci&oacute;n =&aacute;lida.
$bar > &amp;3C1 W H9; // 4n=&aacute;lida; re#erencia una expresi&oacute;n sin nombre.
#unction test39 :
return C5;
;
$bar > &amp;test39; // 4n=&aacute;lida.
?>
Cariables predefinidas
P&P proporciona una gran cantidad de varia#les prede(inidas a cual/uier script /ue se e'ecute; De
todas (ormasA muchas de esas varia#les no pueden estar completamente documentadas ya /ue
dependen de so#re /u< servidor se est< e'ecutandoA la versi-n y con(iguraci-n de dicho servidorA y
otros (actores; Algunas de estas varia#les no estar*n disponi#les cuando se e'ecute P&P desde la
l)nea de comandos;Para o#tener una lista de estas varia#les podeis consultar la secci-n $aria#les
prede(inidas reservadas;
A5iso
A partir de P&P 8;0;3A el valor por de(ecto de la directiva P&P registerZglo#als es o99
>desactivada?; +ste es un cam#io importante en P&P; ,eniendo registerZglo#als o99 a(ecta el
con'unto de varia#les prede(inidas disponi#les en el sistema; Por e'emploA para o#tener
DOCUMENT_ROOT se usar* '_SER(ER)<DOCUMENT_ROOT<. en vez de
'DOCUMENT_ROOT - '_-ET)<6#<. de la @RL http://777.e8ample.com/test.php%6#:R en vez
de '6# - '_EN()<!OME<. en vez de '!OME;
Para m*s in(ormaci-n so#re este cam#ioA podeis consultar el apartado de con(iguraci-n so#re
registerZglo#alsA el cap)tulo so#re seguridad @sando =Register Glo#als= A asi como los anuncios de
lanzamiento de P&P 8;1;3 y 8;0;3
+l uso de las varia#les reservadas prede(inidas en P&PA como matrices superglo#ales es
recomenda#le;
A partir de P&P 8;1;3A P&P o(rece un con'unto adicional de matrices prede(inidasA conteniendo
varia#les del servidor Ee#A el entorno y entradas del usuario; +stas nuevas matrices son un poco
especiales por/ue son autom*ticamente glo#ales; Por esta raz-nA son conocidas a menudo como
=autoglo#ales= - =superglo#ales=; Las superglo#ales se mencionan m*s a#a'oX sin em#argo para una
lista de sus contenidos y m*s in(ormaci-n so#re varia#les prede(inidas en P&PA consultar la secci-n
$aria#les prede(inidas reservadas; Podreis ver como las varia#les prede(inidas antiguas
>'!TT+_/_(,RS? todav)a eFisten; A partir de P&P 4;3;3A las matrices de tipo =long= de varia#les
prede(inidasA se pueden desactivar con la directiva registerZlongZarrays;
Cariables 5ariables- Las superglo#ales no pueden usarse como varia#les varia#les;
i ciertas varia#les no son de(inidas en varia#lesZorderA las matrices P&P prede(inidas asociadas a
estasA estar*n vacias;
PHP superglobales
YGLOBAL
5ontiene una re(erencia a cada varia#le disponi#le en el espectro de las varia#les del script;
Las llaves de esta matriz son los nom#res de las varia#les glo#ales; '-4OA,4S eFiste dese
P&P 7;
YZ+R$+R
$aria#les de(inidas por el servidor Ee# - directamente relacionadas con el entorno en don el
script se esta e'ecutando; An*loga a la antigua matriz '!TT+_SER(ER_(,RS >la cual est*
todav)a disponi#leA aun/ue no se use?;
YZG+,
$aria#les proporcionadas al script por medio de &,,P G+,; An*loga a la antigua matriz
'!TT+_-ET_(,RS >la cual est* todav)a disponi#leA aun/ue no se use?;
YZPO,
$aria#les proporcionadas al script por medio de &,,P PO,; An*loga a la antigua matriz
'!TT+_+OST_(,RS >la cual est* todav)a disponi#leA aun/ue no se use?;
YZ5OOS.+
$aria#les proporcionadas al script por medio de &,,P coo"ies; An*loga a la antigua matriz
'!TT+_COO20E_(,RS >la cual est* todav)a disponi#leA aun/ue no se use?;
YZF.L+
$aria#les proporcionadas al script por medio de la su#ida de (icheros via &,,P ; An*loga a la
antigua matriz '!TT+_+OST_304ES >la cual est* todav)a disponi#leA aun/ue no se use?; $ea
tam#i<n u#iendo (icheros por m<todo PO, para m*s in(ormaci-n;
YZ+N$
$aria#les proporcionadas al script por medio del entorno; An*loga a la antigua matriz
'!TT+_EN(_(,RS >la cual est* todav)a disponi#leA aun/ue no se use?;
YZR+O@+,
$aria#les proporcionadas al script por medio de cua/uier mecanismo de entrada del usuario y
por lo tanto no se puede con(iar en ellas; La presencia y el orden en /ue aparecen las varia#les
en esta matriz es de(inido por la directiva de con(iguraci-n varia#lesZorder; +sta matriz no
tiene un an*logo en versiones anteriores a P&P 8;1;3; $ea tam#i<n
import>re?uest>5ariables./;
Nota- 5uando se utiliza la linea de comandosA arE y arEc no son incluidas a/u)X
estas varia#les se podr*n encontrar en la matriz
YZ+.ON
$aria#les registradas en la sesi-n del script; An*loga a la antigua matriz
'!TT+_SESS0ON_(,RS >la cual est* todav)a disponi#leA aun/ue no se use?; $ea tam#i<n la
secci-n Funciones para el mane'o de sessiones para m*s in(ormaci-n;
Tmbito de las 5ariables
+l *m#ito de una varia#le es el conteFto dentro del /ue la varia#le est* de(inida; La mayor parte de
las varia#les P&P s-lo tienen un *m#ito simple; +ste *m#ito simple tam#i<n a#arca los (icheros
incluidos y los re/ueridos; Por e'emploC
<?php
$a > 6;
include "b.inc";
?>
A/u)A la varia#le 'a dentro del script incluido b.inc; De todas (ormasA dentro de las (unciones
de(inidas por el usuario aparece un *m#ito local a la (unci-n; 5ual/uier varia#les /ue se use dentro
de una (unci-n est*A por de(ectoA limitada al *m#ito local de la (unci-n; Por e'emploC
<?php
$a > 6; /W Elobal scope W/
#unction *est39
:
echo $a; /W re#erence to local scope =ariable W/
;
*est39;
?>
+ste script no producir* salidaA ya /ue la orden echo utiliza una versi-n local de la varia#le 'aA a la
/ue no se ha asignado ningBn valor en su *m#ito; Puede /ue usted note /ue hay una pe/ueWa
di(erencia con el lengua'e 5A en el /ue las varia#les glo#ales est*n disponi#les autom*ticamente
dentro de la (unci-n a menos /ue sean eFpresamente so#reescritas por una de(inici-n local; +sto
puede causar algunos pro#lemasA ya /ue la gente puede cam#iar varia#les glo#ales
inadvertidamente; +n P&PA las varia#les glo#ales de#en ser declaradas glo#ales dentro de la (unci-n
si van a ser utilizadas dentro de dicha (unci-n; $eamos un e'emploC
<?php
$a > 6;
$b > C;
#unction &um39
:
Elobal $a, $b;
$b > $a [ $b;
;
&um39;
echo $b;
?>
+l script anterior producir* la salida =7=; Al declarar 'a y '1 glo#ales dentro de la (unci-nA todas las
re(erencias a tales varia#les se re(erir*n a la versi-n glo#al; No hay l)mite al nBmero de varia#les
glo#ales /ue se pueden manipular dentro de una (unci-n;
@n segundo m<todo para acceder a las varia#les desde un *m#ito glo#al es usando la matriz
'-4OA,4S; +l e'emplo anterior se puede reescri#ir as)C
<?php
$a > 6;
$b > C;
#unction &um39
:
$-O?Z,O&)"b"/ > $-O?Z,O&)"a"/ [ $-O?Z,O&)"b"/;
;
&um39;
echo $b;
?>
La matriz '-4OA,4S es una matriz asociativa con el nom#re de la varia#le glo#al como clave y los
contenidos de dicha varia#le como el valor del elemento de la matriz; '-4OA,4S eFiste en
cual/uier *m#itoA esto pasa por/ue YGLOBAL es una superglo#al; A/ui teneis un e'emplo /ue
demuestra el poder de las superglo#alesC
<?php
#unction test%Elobal39
:
// "ost prede#ined =ariables arenMt "super" and reQuire
// MElobalM to be a=ailable to the #unctions local scope.
Elobal $H**%?&*%(,'&;

print $H**%?&*%(,'&)MnameM/;

// &uperElobals are a=ailable in any scope and do
// not reQuire MElobalM. &uperElobals are a=ailable
// as o# H 1.6.2
print $%?&*)MnameM/;
;
?>
Otra caracter)stica importante del *m#ito de las varia#les es la varia#le stat6c; @na varia#le est*tica
eFiste s-lo en el *m#ito local de la (unci-nA pero no pierde su valor cuando la e'ecuci-n del
programa a#andona este *m#ito; 5onsideremos el siguiente e'emploC
<?php
#unction *est 39
:
$a > 2;
echo $a;
$a[[;
;
?>
+sta (unci-n tiene poca utilidad ya /ue cada vez /ue es llamada asigna a 'a el valor 0 y representa
un =3=; La sentencia 'aRRA /ue incrementa la varia#leA no sirve para nadaA ya /ue en cuanto la
(unci-n termina la varia#le 'a desaparece; Para hacer una (unci-n Btil para contarA /ue no pierda la
pista del valor actual del conteoA la varia#le 'a de#e declararse como est*ticaC
<?php
#unction *est39
:
static $a > 2;
echo $a;
$a[[;
;
?>
AhoraA cada vez /ue se llame a la (unci-n ,est>?A se representar* el valor de 'a y se incrementar*;
Las varia#les est*ticas tam#i<n proporcionan una (orma de mane'ar (unciones recursivas; @na
(unci-n recursiva es la /ue se llama a s) misma; e de#e tener cuidado al escri#ir una (unci-n
recursivaA ya /ue puede ocurrir /ue se llame a s) misma inde(inidamente; &ay /ue asegurarse de
implementar una (orma adecuada de terminar la recursi-n; La siguiente (unci-n cuenta
recursivamente hasta 13A usando la varia#le est*tica 'count para sa#er cu*ndo pararC
<?php
#unction *est39
:
static $count > 2;
$count[[;
echo $count;
i# 3$count < 629 :
*est 39;
;
$countFF;
;
?>
+n motor Iend 1A utilizado por +!+;A implementa los modi(icadores stat6c y Elo1al para varia#les
en t<rminos de re(erencias; Por e'emploA una varia#le glo#al verdadera importada dentro del *m#ito
de una (unci-n con Elo1alA crea una re(erencia a la varia#le glo#al; +sto puede ser causa de un
comportamiento inesperadoA tal y como podemos compro#ar en el siguiente e'emploC
<?php
#unction test%Elobal%re#39 :
Elobal $obj;
$obj > &ne8 stdclass;
;
#unction test%Elobal%nore#39 :
Elobal $obj;
$obj > ne8 stdclass;
;
test%Elobal%re#39;
=ar%dump3$obj9;
test%Elobal%nore#39;
=ar%dump3$obj9;
?>
Al e'ecutar este e'emplo o#tendremos la siguiente salidaC
.+OO
object3stdRlass9329 :
;
@n comportamiento similar se aplica a stat6c; Re(erencias no son guardadas est*ticamente;
<?php
#unction &Eet%instance%re#39 :
static $obj;
echo "&tatic object@ ";
=ar%dump3$obj9;
i# 3!isset3$obj99 :
// ,ssiEn a re#erence to the static =ariable
$obj > &ne8 stdclass;
;
$objF>property[[;
return $obj;
;
#unction &Eet%instance%nore#39 :
static $obj;
echo "&tatic object@ ";
=ar%dump3$obj9;
i# 3!isset3$obj99 :
// ,ssiEn the object to the static =ariable
$obj > ne8 stdclass;
;
$objF>property[[;
return $obj;
;
$obj6 > Eet%instance%re#39;
$still%obj6 > Eet%instance%re#39;
echo "Vn";
$objC > Eet%instance%nore#39;
$still%objC > Eet%instance%nore#39;
?>
Al e'ecutar este e'emplo o#tendremos la siguiente salidaC
&tatic object@ .+OO
&tatic object@ .+OO
&tatic object@ .+OO
&tatic object@ object3stdRlass9369 :
)"property"/>>
int369
;
+ste e'emplo demuestra /ue al asignar una re(erencia a una varia#le est*ticaA esta no es recor#a#a
cuando se invoca la (uncion ]Eet_6nstance_re9LM por segunda vez;
Cariables 5ariables
A veces es conveniente tener nom#res de varia#les varia#les; Dicho de otro modoA son nom#res de
varia#les /ue se pueden esta#lecer y usar din*micamente; @na varia#le normal se esta#lece con una
sentencia comoC
<?php
$a > "hello";
?>
@na varia#le varia#le toma el valor de una varia#le y lo trata como el nom#re de una varia#le; +n el
e'emplo anteriorA helloA se puede usar como el nom#re de una varia#le utilizando dos signos de
d-lar; p;e';
<?php
$$a > "8orld";
?>
+n este momento se han de(inido y almacenado dos varia#les en el *r#ol de s)m#olos de P&PC 'aA
/ue contiene =hello=A y 'helloA /ue contiene =Eorld=; +s m*sA esta sentenciaC
<?php
echo "$a $:$a;";
?>
produce el mismo resultado /ueC
<?php
echo "$a $hello";
?>
p;e'; am#as producen el resultadoC hello 7orl#;
Para usar varia#les varia#les con matricesA hay /ue resolver un pro#lema de am#igjedad; i se
escri#e ''a)1. el int<rprete necesita sa#er si nos re(erimos a utilizar 'a)1. como una varia#leA o si
se pretend)a utilizar ''a como varia#le y el )ndice P1Q como )ndice de dicha varia#le; La sintaFis
para resolver esta am#igjedad esC 'G'a)1.H para el primer caso y Y\Ya]P1Q para el segundo;
A5iso
,ener en cuenta /ue varia#les varia#les no pueden usarse con Matrices superglo#ales; +sto
signi(ica /ue no se pueden hacer cosas como 'G'_-ETH; i #uscais un m<todo para mane'ar la
disponi#ilidad de superglo#ales y las antiguas !TT+_/_(,RSA podeis intentar re(eriros a ellas;
Cariables e+ternas a PHP
;ormularios HTM: .FET y PJ,T/
5uando se env)a un (ormulario a un script P&PA las varia#les de dicho (ormulario pasan a estar
autom*ticamente disponi#les en el script gracias a P&P; Por e'emploA consideremos el siguiente
(ormularioC
E'emplo !*(!. Cariables de formulario simples
<#orm action>"#oo.php" method>"?&*">
.ame@ <input type>"text" name>"username"><br>
Email@ <input type>"text" name>"email"><br>
<input type>"submit" name>"submit" =alue>"&ubmit me!">
</#orm>
Dependiendo de tu con(iguraci-n y pre(erencias personalesA eFisten muchas maneras de acceder a
los datos de tus (ormularios &,ML; Algunos e'emplosC
E'emplo !*(*. Accediendo datos de un formulario simple HTM: PJ,T
<?php
// ,=ailable since H 1.6.2
print $%?&*)MusernameM/;
print $%'EN+E&*)MusernameM/;
import%reQuest%=ariables3MpM, Mp%M9;
print $p%username;
// ,=ailable since H <. ,s o# H 5.2.2, these lonE prede#ined
// =ariables can be disabled 8ith the reEister%lonE%arrays directi=e.
print $H**%?&*%(,'&)MusernameM/;
// ,=ailable i# the H directi=e reEister%Elobals > on. ,s o#
// H 1.C.2 the de#ault =alue o# reEister%Elobals > o##.
// +sinE/relyinE on this method is not pre#erred.
print $username;
?>
@sando un (ormulario G+, es similar eFcepto en el uso de varia#les prede(inidasA /ue en este caso
ser*n del tipo G+,; G+, tam#i<n se usa con O@+R%Z,R.NG >la in(ormaci-n despues del
s)m#olo HNH en una @RL?; Por e'emplo http://777.e8ample.com/test.php%6#:R contiene datos G+,
/ue son accesi#les con '_-ET)<6#<.; $ea tam#i<n YZR+O@+, y import>re?uest>5ariables./;
Nota- Matrices superglo#alesA como '_+OST y'_-ETA est*n disponi#les desde P&P
8;1;3;
5omo hemos dichoA antes de P&P 8;0;3A el valor por de(ecto de registerZglo#als era on >activado?;
%A en P&P 7 est#a siempre activado; La comunidad P&P anima a no con(iar en esta directiva ya /ue
es pre(eri#le asumir /ue tiene el valor o99 >desactivada? y programar teniendo en cuenta esto;
Nota- La directiva de con(iguraci-n magicZ/uotesZgpc a(ecta a valores GetA Post y
5oo"ieA i esta activada >on? el valor >.tHs =P&Pa=? sera convertido automaticamente a
>.thHs h=P&Pah=?; =+scaping= es necesario en inserciones a #ases de datos; $ea tam#i<n
addslashes./A stripslashes./ y magicZ/uotesZsy#ase;
P&P tam#ien entiende matrices en el conteFto de varia#les de (ormularios; >vea la (a/ relacionada?;
e puedeA por e'emploA agrupar 'untas varia#les relacionadas - usar esta caracter)stica para o#tener
valores de una entrada =select0 mBltiple; Por e'emploA vamos a mandar un (ormulario asi mismo y a
presentar los datos cuando se reci#anC
E'emplo !*(7. Cariables de formulario ms comple'as
<?php
i# 3$H**%?&*%(,'&)MactionM/ >> MsubmittedM9 :
print M<pre>M;
print%r3$H**%?&*%(,'&9;
print M<a hre#>"M. $H**%&E'(E'%(,'&)MH%&EOSM/ .M">lease try aEain</a>M;
print M</pre>M;
; else :
?>
<#orm action>"<?php echo $H**%&E'(E'%(,'&)MH%&EOSM/; ?>" method>"?&*">
.ame@ <input type>"text" name>"personal)name/"><br>
Email@ <input type>"text" name>"personal)email/"><br>
Zeer@ <br>
<select multiple name>"beer)/">
<option =alue>"8arthoE">7arthoE</option>
<option =alue>"Euinness">-uinness</option>
<option =alue>"stuttEarter">&tuttEarter &ch8abenbr_`abu</option>
</select><br>
<input type>"hidden" name>"action" =alue>"submitted">
<input type>"submit" name>"submit" =alue>"submit me!">
</#orm>
<?php
;
?>
en P&P 7A el uso de matrices de varia#les de (ormularios est* limitado a matrices unidimensionales;
+n P&P 8A no eFiste esta restricci-n;
IMAFE ,)1MIT 5ariable names
5uando mandamos un (ormularioA es posi#le usar una imagen en vez del #ot-n estandar de
=mandar=C
<input type>"imaEe" src>"imaEe.Ei#" name>"sub">
5uando el usuario hace clic" en cual/uier parte de la imagenA el (ormulario /ue la acompaWa se
transmitir* al servidor con dos varia#les adicionalesA su#ZF y su#Zy; +stas contienen las
coordenadas del clic" del usuario dentro de la imagen; Los m*s eFperimentados puede notar /ue los
nom#res de varia#le enviados por el navegador contienen un gui-n en vez de un su#rayado >gui-n
#a'o?A pero P&P convierte el gui-n en su#rayado autom*ticamente;
CooBies HTTP
P&P soporta coo"ies de &,,P de (orma transparente tal y como est*n de(inidas en en las NetscapeHs
pec; Las coo"ies son un mecanismo para almacenar datos en el navegador y as) rastrear o
identi(icar a usuarios /ue vuelven; e pueden crear coo"ies usando la (unci-n ,etCooBie./; Las
coo"ies son parte de la ca#ecera &,,PA as) /ue se de#e llamar a la (unci-n et5oo"ie antes de /ue
se env)e cual/uier salida al navegador; +s la misma restricci-n /ue para la (unci-n header./; Los
datos de una coo"ie estan disponi#les en la matriz con datos de coo"ies apropiadaA tal como
'_COO20EA '!TT+_COO20E_(,RS y tam#i<n en '_RE5UEST; vea la (unci-n setcooBie./ para
m*s detalles y e'emplos;
i se /uieren asignar mBltiples valores a una sola coo"ieA #asta con aWadir ). al nom#re de la coo"ie
para de(inirla como una matriz; Por e'emploC
<?php
setcooIie3""yRooIie)#oo/", "*estinE 6", time39[<G229;
setcooIie3""yRooIie)bar/", "*estinE C", time39[<G229;
?>
+sto creara dos coo"ies separadas aun/ue My5oo"ie ser* una matriz simple en el script; i se
/uiere de(inir una sola coo"ie con valores multiplesA considerar primero el uso de la (unci-n
seriali6e./ - e+plode./ en el valor;
N-tese /ue una coo"ie reemplazar* a una coo"ie anterior /ue tuviese el mismo nom#re en el
navegador a menos /ue el camino >path? o el dominio (uesen di(erentes; As)A para una aplicaci-n de
carro de la compra se podr)a /uerer mantener un contador e ir pas*ndolo; P;e';
E'emplo !*(8. E'emplo ,etCooBie
<?php
$count[[;
setcooIie3"count", $count, time39[<G229;
setcooIie3"Rart)$count/", $item, time39[<G229;
?>
Puntos en los nombres de 5ariables de entrada
,)picamenteA P&P no altera los nom#res de las varia#les cuando se pasan a un script; De todas
(ormasA hay /ue notar /ue el punto no es un car*cter v*lido en el nom#re de una varia#le P&P; Por
esta raz-nC
<?php
$=arname.ext; /W nombre de =ariable in=alido W/
?>
Lo /ue el int<rprete ve es el nom#re de una varia#le YvarnameA seguido por el operador de
concatenaci-nA y seguido por la prue#a >es decirA una cadena sin entrecomillar /ue no coincide con
ninguna pala#ra clave o reservada conocida? HeFtH; O#viamenteA no se pretend)a /ue (uese este el
resultado;
Por esta raz-nA es importante hacer notar /ue P&P reemplazar* autom*ticamente cual/uier punto en
los nom#res de varia#les de entrada por guiones #a'os >su#rayados?;
Keterminando los tipos de 5ariables
Dado /ue P&P determina los tipos de las varia#les y los convierte >generalmente? segBn lo necesitaA
no siempre resulta o#vio de /u< tipo es una varia#le dada en un momento concreto; P&P incluye
varias (unciones /ue descu#ren de /u< tipo es una varia#leC gettype./A is>array./A is>float./A is>int
./A is>ob'ect./A y is>string./; $ea tam#i<n el cap)tulo so#re ,ipos;
Captulo !7. Constantes
@na constante es un identi(icador para eFpresar un valor simple; 5omo el nom#re sugiereA este valor
no puede variar durante la e'ecuci-n del script; >Las constantes especiales __FILE__ y
__LINE__ son una eFcepci-n a estoA ya /ue actualmente no lo soin?; @na constante es sensi#le a
mayBsculas por de(ecto; Por convenci-nA los identi(icadores de constantes suelen declararse en
mayBsculas
+l nom#re de una constante sigue las mismas reglas /ue cual/uier eti/ueta en P&P; @n nom#re de
constante v*lido empieza con una letra o un caracter de su#rayadoA seguido por cual/uier nBmero de
letrasA nBmerosA o su#rayados; e podr)an eFpresar mediante la siguiente eFpresi-n regularC )a=D,=
^_Q879=Q899.)a=D,=^0=O_Q879=Q899./
Nota- Para nuestros prop-sitos A entenderemos como letra los car*cteres a2zA A2IA y los
A5.. del 10: hasta el 044 >3F:(23F((?;
+l alcanze de una constante es glo#alA +s decirA es posi#le acceder a ellas sin preocuparse por el
*m#ito de alcance;
,inta+is
e puede de(inir una constante usando la (unci-n define./; @na vez de(inidaA no puede ser
modi(icada ni eliminada ;
olo se puede de(inir como constantes valores escalares >booleanA integerA float y string ?;
Para o#tener el valor de una constante solo es necesario especi(icar su nom#re; A di(erencia de las
varia#lesA no se tiene /ue especi(icar el pre(i'o '; ,am#ien se puede utilizar la (unci-n constant./A
para o#tener el valor de una constanteA en el caso de /ue /ueramos eFpresarla de (orma din*mica
@sa la (unci-n get>defined>constants./ parar o#tener una lista de todas las constantes de(inidas;
Nota- Las contantes y las varia#les >glo#ales? se encuentran en un espacio de nom#res
distinto; +sto implica /ue por e'emplo TRUE y 'TRUE son di(erentes;
i usas una constante todavia no de(inidaA P&P asume /ue est*s re(iri<ndote al nom#re de la
constante en si; e lanzar* un aviso si esto sucede; @sa la (unci-n defined./ para compro#ar la
eFistencia de dicha constante;
+stas son las di(erencias entre constantes y varia#lesC
Las constantes no son precedidas por un s)m#olo de dolar >'?
Las contantes solo pueden ser de(inidas usando la funci"n./ de(ine A nunca por simple
asignaci-n
Las constantes pueden ser de(inidas y accedidas sin tener en cuenta las reglas de alcanze del
*m#ito;
Las constantes no pueden ser rede(inidas o eliminadas despues de esta#lecerseX y
Las constantes solo puede al#ergar valores escalares
E'emplo !7(!. Kefiniendo constantes
<?php
de#ine3"R?.&*,.*", "Hello 8orld."9;
echo R?.&*,.*; // outputs "Hello 8orld."
echo Ronstant; // outputs "Ronstant" and issues a notice.
?>
Constantes predefinidas
P&P o(rece un largo nBmero de constantes prede(inidas a cual/uier script en e'ecuci-n; Muchas de
estas constantesA sin em#argoA son creadas por di(erentes eFtensionesA y solo estar*n presentes si
dichas eFtensiones est*n disponi#lesA #ien por carga din*mica o por/ue has sido compiladas;
e puede encontrar una lista de constantes prede(inidas en la seccion 5onstantes prede(inidas;
Captulo !8. E+presiones
Las eFpresiones son la piedra angular de P&P; +n P&PA casi cual/uier cosa /ue escri#es es una
eFpresi-n; La (orma m*s simple y a'ustada de de(inir una eFpresi-n es =cual/uier cosa /ue tiene un
valor=;
Las (ormas m*s #*sicas de eFpresiones son las constantes y las varia#les; 5uando escri#es =Ya ^ 4=A
est*s asignando H4H a Ya; H4HA o#viamenteA tiene el valor 4 -A en otras pala#ras H4H es una eFpresi-n con
el valor 4 >en este casoA H4H es una constante entera?;
Despu<s de esta asignaci-nA se espera /ue el valor de Ya sea 4 tam#i<nA de manera /ue si escri#es Y#
^ YaA se espera tam#i<n /ue se comporte igual /ue si escri#ieses Y# ^ 4; +n otras pala#rasA Ya es una
eFpresi-n tam#i<n con el valor 4; i todo va #ienA eso es eFactamente lo /ue pasar*;
Las (unciones son un e'emplo algo m*s comple'o de eFpresiones; Por e'emploA considera la
siguiente (unci-nC
<?php
#unction #oo 39 :
return 5;
;
?>
uponiendo /ue est<s (amiliarizado con el concepto de (unciones >si no lo est*s <chale un vistazo al
cap)tulo so#re (unciones?A asumir*s /ue teclear 'c : 9ooLM es esencialmente lo mismo /ue escri#ir
'c : SA y has acertado; Las (unciones son eFpresiones /ue valen el valor /ue retornan; 5omo (oo>?
devuelve 4A el valor de la eFpresi-n H(oo>?H es 4; Normalmente las (unciones no devuelven un valor
(i'oA sino /ue suele ser calculado;
Desde luegoA los valores en P&P no se limitan a enterosA y lo m*s normal es /ue no lo sean; P&P
soporta tres tipos escalaresC enterosA punto (lotante y cadenas >los tipos escalares son a/uellos cuyos
valores no pueden HdividirseH en partes menoresA no como los arraysA por e'emplo?; P&P tam#i<n
soporta dos tipos compuestos >no escalares?C arrays y o#'etos; e puede asignar cada uno de estos
tipos de valor a varia#les o #ien retornarse de (uncionesA sin ningBn tipo de limitaci-n;
&asta a/u)A los usuarios de P&PDF. 0 no de#er)an ha#er notado ningBn cam#io; in em#argoA P&P
lleva las eFpresiones mucho m*s all*A al igual /ue otros lengua'es; P&P es un lengua'e orientado a
eFpresionesA en el sentido de /ue casi todo es una eFpresi-n; 5onsidera el e'emplo anterior HYa ^ 4H;
+s sencillo ver /ue hay dos valores involucradosA el valor de la constante entera H4HA y el valor de Ya
/ue est* siendo actualizado tam#i<n a 4; Pero la verdad es /ue hay un valor adicional implicado
a/u)A y es el valor de la propia asignaci-n; La asignaci-n misma se evalBa al valor asignadoA en este
caso 4; +n la pr*cticaA /uiere decir /ue HYa ^ 4HA independientemente de lo /ue haceA es una
eFpresi-n con el valor 4; De esta maneraA escri#ir algo como HY# ^ >Ya ^ 4?H es como escri#ir HYa ^ 4X
Y# ^ 4XH >un punto y coma marca el (inal de una instrucci-n?; 5omo las asignaciones se evalBan de
derecha a iz/uierdaA puedes escri#ir tam#i<n HY# ^ Ya ^ 4H;
Otro #uen e'emplo de orientaci-n a eFpresiones es el pre y post incremento y decremento; Los
usuarios de P&PDF. 0 y los de otros muchos lengua'es les sonar* la notaci-n varia#leRR y varia#le22;
+sto son las operaciones de incremento y decremento; +n P&PDF. 0A la instrucci-n HYaRRH no tiene
valor >no es una eFpresi-n?A y no puedes asignarla o usarla de ningBn otro modo; P&P me'ora las
caracter)sticas del incrementoDdecremento haci<ndolos tam#i<n eFpresionesA como en 5; +n P&PA
como en 5A hay dos tipos de incremento 2 pre2incremento y post2incremento; Am#osA en esenciaA
incrementan la varia#le y el e(ecto en la varia#le es id<ntico; La di(erencia radica en el valor de la
propia eFpresion incremento; +l preincremento A escrito HRRYvaria#leHA se evalBa al valor
incrementado >P&P incrementa la varia#le antes de leer su valorA de ah) el nom#re HpreincrementoH?;
+l postincrementoA escrito HYvaria#leRRHA se evalBa al valor original de Yvaria#le antes de realizar el
incremento >P&P incrementa la varia#le despu<s de leer su valorA de ah) el nom#re
HpostincrementoH?;
@n tipo muy corriente de eFpresiones son las eFpresiones de comparaci-n; +stas eFpresiones se
evalBan a 3 o 1A signi(icando FALO >FALSE? o $+RDAD+RO >TRUE?A respectivamente; P&P
soporta _ >mayor /ue?A _^ >mayor o igual /ue?A ^^ >igual /ue?A a^ >distinto?A ` >menor /ue? y `^
>menor o igual /ue?; +stas eFpresiones se usan (recuentemente dentro de la e'ecuci-n condicional
como la instrucci-n 69;
+l Bltimo tipo de eFpresiones /ue trataremosA es la com#inaci-n operador2asignaci-n; %a sa#es /ue
si /uieres incrementar Ya en 1A #asta con escri#ir HYaRRH o RRYaH; Pero /u< pasa si /uieres aWadir m*s
de 1A por e'emplo 7N Podr)as escri#ir HYaRRH mBltiples vecesA pero no es una (orma de hacerlo ni
e(iciente ni c-moda; @na pr*ctica mucho m*s corriente es escri#ir HYa ^ Ya R 7H; HYa R 7H se evalBa al
valor de Ya m*s 7A y se asigna de nuevo a YaA lo /ue resulta en incrementar Ya en 7; +n P&PA como
en otros lengua'es como 5A puedes escri#ir esto de una (orma m*s concisaA /ue con el tiempo ser*
m*s clara y tam#i<n (*cil de entender; AWadir 7 al valor actual de Ya se puede escri#ir como HYa R^
7H; +sto /uiere decir eFactamente =toma el valor de YaA sBmale 7A y as)gnalo otra vez a Ya=; Adem*s
de ser m*s corto y claroA tam#i<n resulta en una e'ecuci-n m*s r*pida; +l valor de HYa R^ 7HA como el
valor de una asignaci-n normal y corrienteA es el valor asignado; ,en en cuenta /ue NO es 7A sino el
valor com#inado de Ya m*s 7 ><se es el valor asignado a Ya?; 5ual/uier operaci-n #inaria puede ser
usada en (orma de operador2asignaci-nA por e'emplo HYa 2^ 4H >restar 4 del valor de Ya?A HY# V^ :H
>multiplicar el valor de Y# por :?A etc;
&ay otra eFpresi-n /ue puede parecer eFtraWa si no la has visto en otros lenguaesA el operador
condicional ternarioC
<?php
$#irst ? $second @ $third
?>
i el valor de la primera su#eFpresi-n es verdadero >distinto de cero?A entonces se evalBa la segunda
su#eFpresi-nA si noA se evalBa la tercera y <se es el valor;
+l siguiente e'emplo te ayudar* a comprender un poco me'or el pre y post incremento y las
eFpresiones en generalC
<?php
#unction double3$i9 :
return $iWC;
;
$b > $a > 5; /W asiEnar el =alor cinco a las =ariables $a y $b W/
$c > $a[[; /W postincremento, asiEnar el =alor oriEinal de $a 359 a $c W/
$e > $d > [[$b; /W preincremento, asiEnar el =alor incrementado de $b 3G9 a
$d y a $e W/
/W en este punto, tanto $d como $e son iEuales a G W/
$# > double3$d[[9; /W asiEnar el doble del =alor de $d antes
del incremento, CWG > 6C a $# W/
$E > double3[[$e9; /W asiEnar el doble del =alor de $e despu&eacute;s
del incremento, CWH > 61 a $E W/
$h > $E [> 62; /W primero, $E es incrementado en 62 y termina =aliendo C1.
despu&eacute;s el =alor de la asiEnaci&oacute;n 3C19 se asiEna a $h,
y $h tambi&eacute;n acaba =aliendo C1. W/
?>
Al principio del cap)tulo hemos dicho /ue descri#ir)amos los distintos tipos de instrucciones yA
como prometimosA las eFpresiones pueden ser instrucciones; in em#argoA no todas las eFpresiones
son instrucciones; +n este casoA una instrucci-n tiene la (orma HeFprH HXHA es decirA una eFpresi-n
seguida de un punto y coma; +n HY#^Ya^4XHA Ya^4 es una eFpresi-n v*lidaA pero no es una
instrucci-n en s) misma; Por otro lado HY#^Ya^4CH s) es una instrucci-n v*lida;
@na Bltima cosa /ue vale la pena mencionarA es el valor #ooleano de las eFpresiones; +n muchas
ocasionesA principalmente en condicionales y #uclesA no est*s interesado en el valor eFacto de la
eFpresi-nA sino Bnicamente si es TRUE - FALSE Las constantes TRUE y FALSE son los dos
posi#les valores #ooleanos; 5uando es necesarioA una eFpresi-n se puede trans(ormar
autom*ticamente al tipo #ooleano; 5onsultar la secci-n so#re type2casting para o#tener detalles de
como se hace;
P&P #rinda una completa y potente implementaci-n de eFpresionesA y documentarla enteramente
est* m*s all* del o#'etivo de este manual; Los e'emplos anterioresA de#er)an darte una #uena idea de
/u< son las eFpresiones y c-mo construir eFpresiones Btiles; A lo largo del resto del manualA
escri#iremos e8pr para indicar una eFpresi-n P&P v*lida;
Captulo !9. Jperadores
@n operador es algo a lo /ue usted entrega uno o m*s valores >o eFpresionesA en 'erga de
programaci-n? y produce otro valor >de modo /ue la construcci-n misma se convierte en una
eFpresi-n?; As) /ue puede pensar so#re las (unciones o construcciones /ue devuelven un valor
>como print? como operadoresA y en a/uellas /ue no devuelven nada >como echo? como cual/uier
otra cosa;
+Fisten tres tipos de operadores; +n primer lugar se encuentra el operador unarioA el cual opera
so#re un Bnico valorA por e'emplo a >el operador de negaci-n? o RR >el operador de incremento?; +l
segundo grupo se conoce como operadores #inariosX <ste grupo contiene la mayor)a de operadores
/ue soporta P&PA y una lista se encuentra disponi#le m*s adelante en la secci-n Precedencia de
Operadores;
+l tercer grupo consiste del operador ternarioC NC; [ste de#e ser usado para seleccionar entre dos
eFpresionesA en #ase a una terceraA en lugar de seleccionar dos sentencias o rutas de e'ecuci-n;
Rodear las eFpresiones ternarias con par<ntesis es una muy #uena idea;
Precedencia de Jperadores
La precedencia de un operador indica /u< tan =cerca= se agrupan dos eFpresiones; Por e'emploA en la
eFpresi-n 1 Y S / RA la respuesta es 1X y no 1PA ya /ue el operador de multiplicaci-n >=V=? tiene una
mayor precedencia /ue el operador de adici-n >=R=?; Los par<ntesis pueden ser usados para marcar
la precedenciaA si resulta necesario; Por e'emploC L1 Y SM / R evalBa a 1P; i la precedencia de los
operadores es la mismaA se utiliza una asociaci-n de iz/uierda a derecha;
La siguiente ta#la lista la precedencia de los operadoresA con a/uellos de mayor precedencia listados
al comienzo de la ta#la; Los operadores en la misma l)nea tienen la misma precedenciaA en cuyo
caso su asociatividad decide el orden para evaluarlos;
Tabla !9(!. Precedencia de Jperadores
Asociati5ida
d
Jperadores
no2asociativo neE
derecha P
no2
asociativos
RR 22
no2
asociativos
a g 2 >int? >(loat? >string? >array? >o#'ect?
G
iz/uierda V D b
iz/uierda R 2 ;
iz/uierda `` __
no2
asociativos
` `^ _ _^
no2
asociativos
^^ a^ ^^^ a^^
iz/uierda i
iz/uierda k
iz/uierda l
iz/uierda ii
iz/uierda ll
iz/uierda N C
derecha ^ R^ 2^ V^ D^ ;^ b^ i^ l^ k^ ``^ __^
iz/uierda and
iz/uierda For
iz/uierda or
iz/uierda A
La asociatividad de iz/uierda /uiere decir /ue la eFpresi-n es evaluada desde la iz/uierda a la
derechaA la asociatividad de derecha /uiere decir lo contrario;
E'emplo !9(!. Asociati5idad
<?php
$a > < W < \ 5; // 3< W <9 \ 5 > 1
$a > true ? 2 @ true ? 6 @ C; // 3true ? 2 @ true9 ? 6 @ C > C
$a > 6;
$b > C;
$a > $b [> <; // $a > 3$b [> <9 F> $a > 5, $b > 5
?>
@se par<ntesis para incrementar la legi#ilidad del c-digo;
Nota- Aun/ue _ tiene una mayor precedencia /ue :A P&P permitir* aun eFpresionas
similares a la siguienteC 69 L_'a : 9ooLMMA en cuyo caso la salida de 9ooLM va a dar a 'a;
Jperadores de Aritm%tica
URecuerda la aritm<tica #*sica del colegioN [stos operadores (uncionan tal como a/u<llos;
Tabla !9(*. Jperadores de Aritm%tica
E'empl
o
Nombre Mesultado
2Ya Negaci-n +l opuesto de Ya;
Ya R Y# Adici-n uma de Ya y Y#;
Ya 2 Y# u#stracci-n Di(erencia entre Ya y Y#;
Ya V Y#
Multiplicaci
-n
Producto de Ya y Y#;
Ya D Y# Divisi-n 5ociente de Ya y Y#;
Ya b Y# M-dulo
Resto de Ya dividido por
Y#;
+l operador de divisi-n >=D=? devuelve un valor (lotante en todos los casosA incluso si los dos
operandos son enteros >o cadenas /ue son convertidas a enteros?;
Nota- +l resto de 'a T '1 es negativo para valores negativos de 'a;
$ea tam#i<n la p*gina del manual so#re Funciones matem*ticas;
Jperadores de Asignaci"n
+l operador #*sico de asignaci-n es =^=; A primera vistaA usted podr)a pensar en <l como =es igual
a=; No lo haga; Lo /ue /uiere decir en realidad es /ue el operando de la iz/uierda reci#e el valor de
la eFpresi-n a la derecha >es decirA =se de(ine a=?;
+l valor de una eFpresi-n de asignaci-n es el valor /ue se asigna; +s decirA el valor de =Ya ^ 7= es 7;
+sto le permite hacer una /ue otra cosa curiosaC
<?php
$a > 3$b > 19 [ 5; // $a es iEual a K ahora, y $b ha sido de#inido a 1.
?>
+n con'unto con el operador #*sico de asignaci-nA eFisten =operadores com#inados= para todas las
operaciones de aritm<tica #inaria y de cadenasA /ue le permiten usar un valor en una eFpresi-n y
luego de(inir su valor como el resultado de esa eFpresi-n; Por e'emploC
<?php
$a > <;
$a [> 5; // de#ine $a como J, como si hubiesemos dicho@ $a > $a [ 5;
$b > "&iexcl;Hola ";
$b .> "a todos!"; // de#ine $b como "&iexcl;Hola a todos!", tal como $b > $b . "a todos!";
?>
Note /ue la asignaci-n copia la varia#le original en la nueva >asignaci-n por valor?A de modo /ue
cual/uier cam#io a una no a(ecta a la otra; +sto puede resultar de importancia si necesita copiar algo
como una matriz de gran tamaWo al interior de un ciclo reducido; A partir de P&P8A es soportada la
asignaci-n por re(erenciaA usando la sintaFis $=ar > &$otra%=ar;A pero esto no es posi#le en
P&P7; HAsignaci-n por re(erenciaH /uiere decir /ue am#as varia#les terminan apuntando a los
mismos datos y /ue nada es realmente copiado; Para aprender m*s so#re las re(erenciasA por (avor
re(i<rase a las Re(erencias eFplicadas;
Jperadores 1it a 1it
Los operadores #it a #it le permiten activar o desactivar #its individuales de un entero; i los
par*metros tanto a la iz/uierda y a la derecha son cadenasA el operador #it a #it tra#a'ar* so#re los
valores A5.. de los caracteres;
<?php
echo 6C c K; // 4mprime M5M
echo "6C" c "K"; // 4mprime el caracter ZacIspace 3ascii J9
// 3M6M 3ascii 1K99 c 3MKM 3ascii 5H99 > UJ
echo "hallo" c "hello"; // 4mprime los =alores ascii U2 U1 U2 U2 U2
// MaM c MeM > U1
?>
Tabla !9(7. Jperadores 1it a 1it
E'empl
o
Nombre Mesultado
Ya i Y# % Los #its /ue est*n activos tanto en Ya como en Y# son activados;
Ya l Y# O Los #its /ue est*n activos ya sea en Ya o en Y# son activados;
Ya k Y# O eFclusivo >Jor?
Los #itos /ue est<n activos en Ya o Y#A pero no en am#osA son
activados;
g Ya No Los #its /ue est<n activos en Ya son desactivadosA y vice2versa;
Ya `` Y#
Desplazamiento a
iz/uierda
Desplaza los #its de YaA Y# pasos a la iz/uierda >cada paso /uiere
decir =multiplicar por dos=?
Ya __ Y#
Desplazamiento a
derecha
Desplaza los #its de YaA Y# pasos a la derecha >cada paso /uiere
decir =dividir por dos=?
A5iso
No realice desplazamientos a derecha para m*s de 70 #its en sistemas de 70 #its; No realice
desplazamientos a iz/uierda en caso de /ue resulte en un nBmero de m*s de 70 #its;
Jperadores de Comparaci"n
Los operadores de comparaci-nA como su nom#re indicaA le permiten comparar dos valores; Puede
/ue tam#i<n se encuentre interesado en consultar las ta#las de comparaci-n de tiposA ya /ue <stas
muestran e'emplos de varios tipos de comparaciones relacionadas con tipos;
Tabla !9(8. Jperadores de Comparaci"n
E'emplo Nombre Mesultado
Ya ^^ Y# .gual TRUE si Ya es igual a Y#;
Ya ^^^ Y# .d<ntico TRUE si Ya es igual a Y#A y son del mismo tipo; >A partir de P&P 8?
Ya a^ Y# Di(erente TRUE si Ya no es igual a Y#;
Ya `_ Y# Di(erente TRUE si Ya no es igual a Y#;
Ya a^^ Y# No id<nticos
TRUE si Ya no es igual a Y#A o si no son del mismo tipo; >A partir de
P&P 8?
Ya ` Y# Menor /ue TRUE si Ya es escrictamente menor /ue Y#;
Ya _ Y# Mayor /ue TRUE si Ya es estrictamente mayor /ue Y#;
Ya `^ Y#
Menor o igual
/ue
TRUE si Ya es menor o igual /ue Y#;
Ya _^ Y#
Mayor o igual
/ue
TRUE si Ya es mayor o igual /ue Y#;
i compara un entero con una cadenaA la cadena es convertida a un nBmero; i compara dos cadenas
num<ricasA ellas son comparadas como enteros; +stas reglas tam#i<n se aplican a la sentencia
sEitch;
<?php
=ar%dump32 >> "a"9; // 2 >> 2 F> true
=ar%dump3"6" >> "26"9; // 6 >> 6 F> true
s8itch 3"a"9 :
case 2@
echo "2";
breaI;
case "a"@ // nunca se ejecuta ya Que "a" ya ha coincidido con 2
echo "a";
breaI;
;
?>
Otro operador condicional es el operador =NC= >o ternario?;
<?php
// Ejemplo de uso de@ el ?perador *ernario
$accion > 3empty3$%?&*)MaccionM/99 ? MpredeterminadaM @ $%?&*)MaccionM/;
// Oa sentencia anterior es identica a este bloQue i#/else
i# 3empty3$%?&*)MaccionM/99 :
$accion > MpredeterminadaM;
; else :
$accion > $%?&*)MaccionM/;
;
?>
La eFpresi-n Le8pr1M % Le8pr2M : Le8prRM evalBa a e8pr2 si e8pr1 evalBa a TRUEA y e8prR si e8pr1
evalBa a FALSE;
$ea tam#i<n strcasecmp./A strcmp./A Operadores de matrizA y la secci-n del manual so#re ,ipos;
Jperadores de Control de Errores
P&P o(rece soporte para un operador de control de erroresC el signo de arro#a >G?; 5uando es
colocado al comienzo de una eFpresi-n en P&PA cual/uier mensa'e de error /ue pudiera generarse a
causa de esa eFpresi-n ser* ignorado;
i la caracter)stica trac>_errors est* ha#ilitadaA cual/uier mensa'e de error generado por la
eFpresi-n ser* almacenado en la varia#le YphpZerrormsg; La varia#le ser* so#rescrita en cada
instancia de errorA as) /ue realice sus che/ueos de (orma temprana si /uiere usarla;
<?php
/W Error intencional de archi=o W/
$mi%archi=o > ^#ile 3Marchi=o%Que%no%existeM9 or
die 3"Oa apertura de archi=o ha #allado@ el error #ue M$php%errormsEM"9;
// esto #unciona con cualQuier expresion, no solo con #unciones@
$=alor > ^$cache)$lla=e/;
// no producira una anotacion si el indice $lla=e no existe.
?>
Nota- +l operador G tra#a'a s-lo so#re eFpresiones; @na simple regla de oro esC si
usted puede tomar el valor de algoA entonces puede usar el operador G so#re ese algo;
Por e'emploA puede usarlo al inicio de varia#lesA llamadas a (unciones y sencencias
include./A constantesA y as) sucesivamente; No puede usarlo so#re de(iniciones de
(unci-n o claseA ni so#re estructuras condicionales como 69 y 9oreachA y as)
sucesivamente;
$ea tam#i<n error>reporting./ y la secci-n del manual so#re (unciones de Gesti-n de +rrores y
Registros;
Nota- +l operador de pre(i'o =G= para control de errores no desha#ilitar* los mensa'es
/ue son resultado de errores en la (ase de an*lisis sint*ctico;
A5iso
+n la actualidadA el operador de pre(i'o =G= para control de errores desha#ilitar* incluso el reporte
de errores en casos de (allos cr)ticos /ue terminar*n la e'ecuci-n del script; +ntre otras cosasA esto
/uiere decir /ue si usa =G= para eliminar los errores de una cierta (unci-nA y <sta no se encuentra
disponi#le o ha sido escrita de (orma incorrectaA el script se detendr* en ese punto sin dar
indicaci-n alguna del motivo;
Jperadores de e'ecuci"n
P&P soporta un operador de e'ecuci-nC las comillas invertidas >mm?; fNote /ue no se trata de comillas
sencillasa P&P intentar* e'ecutar el contenido entre las comillas como si se tratara de un comando
del int<rprete de comandosX su salida ser* devuelta >es decirA no ser* simplemente volcada como
salidaX puede ser asignada a una varia#le?; +l uso del operador de comillas invertidas es id<ntico al
de shell>e+ec./;
<?php
$salida > dls Fald;
echo "<pre>$salida</pre>";
?>
Nota- +l operador de comillas invertidas es desha#ilitado cuando se encuentra activo
sa(e mode o cuando se desha#ilita shell>e+ec./;
$ea tam#i<n la secci-n del manual so#re (unciones de +'ecuci-n de ProgramasA popen./ proc>open
./A y @so de P&P desde la l)nea de comandos;
Jperadores de IncrementoAKecremento
P&P o(rece soporte de operadores de pre2 y post2incremento y decrementoA estilo25;
Tabla !9(9. Jperadores de IncrementoAdecremento
E'empl
o
Nombre Efecto
RRYa Pre2incremento
.ncrementa Ya en unoA y luego devuelve
Ya;
YaRR Post2incremento
Devuelve YaA y luego incrementa Ya en
uno;
22Ya Pre2decremento
Decrementa Ya en unoA luego devuelve
Ya;
Ya22
Post2
decremento
Devuelve YaA luego decrementa Ya en
uno;
A/u) hay un script sencillo de e'emploC
<?php
echo "<h<>ostincremento</h<>";
$a > 5;
echo "Lebe ser 5@ " . $a[[ . "<br />Vn";
echo "Lebe ser G@ " . $a . "<br />Vn";
echo "<h<>reincremento</h<>";
$a > 5;
echo "Lebe ser G@ " . [[$a . "<br />Vn";
echo "Lebe ser G@ " . $a . "<br />Vn";
echo "<h<>ostdecremento</h<>";
$a > 5;
echo "Lebe ser 5@ " . $aFF . "<br />Vn";
echo "Lebe ser 1@ " . $a . "<br />Vn";
echo "<h<>redecremento</h<>";
$a > 5;
echo "Lebe ser 1@ " . FF$a . "<br />Vn";
echo "Lebe ser 1@ " . $a . "<br />Vn";
?>
P&P sigue la convenci-n de Perl cuando tra#a'a con operaciones aritm<ticas so#re varia#les de
caracterA y no la convenci-n de 5; Por e'emploA en Perl HIHR1 se convierte en HAAHA mientras /ue en
5 HIHR1 se convierte en HPH > ord>HIH? ^^ 93A ord>HPH? ^^ 91 ?; Note /ue las varia#les de caracter pueden
ser incrementadas pero no decrementadas;
E'emplo !9(*. Jperaciones Aritm%ticas sobre Cariables de Caracter
<?php
$i > M7M;
#or3$n>2; $n<G; $n[[9
echo [[$i . "Vn";
/W
roduce una salida similar a la siEuiente@
X
P
Y
,,
,Z
,R
W/
?>
.ncrementar o decrementar valores #ooleanos no tiene e(ecto;
Jperadores de :"gica
Tabla !9(<. Jperadores de :"gica
E'emplo Nombre Mesultado
Ya and Y# % TRUE si tanto Ya como Y# son TRUE;
Ya or Y# O TRUE si cual/uiera de Ya o Y# es TRUE;
Ya For Y#
O eFclusivo
>Jor?
TRUE si Ya o Y# es TRUEA pero no
am#os;
a Ya No TRUE si Ya no es TRUE;
Ya ii Y# % TRUE si tanto Ya como Y# son TRUE;
Ya ll Y# O TRUE si cual/uiera de Ya o Y# es TRUE;
La raz-n para tener las dos variaciones di(erentes de los operadores =and= y =or= es /ue ellos operan
con precedencias di(erentes; >$ea Precedencia de Operadores;?
Jperadores de Cadena
+Fisten dos operadores para datos tipo string; +l primero es el operador de concatenaci-n >H;H?A el
cual devuelve el resultado de concatenar sus argumentas a lado derecho e iz/uierdo; +l segundo es
el operador de asignaci-n so#re concatenaci-n >H;^H?A el cual adiciona el argumento del lado derecho
al argumento en el lado iz/uierdo; Por (avor consulte Operadores de Asignaci-n para m*s
in(ormaci-n;
<?php
$a > "&iexcl;Hola ";
$b > $a . ""undo!"; // ahora $b contiene "&iexcl;Hola "undo!"
$a > "&iexcl;Hola ";
$a .> ""undo!"; // ahora $a contiene "&iexcl;Hola "undo!"
?>
$ea tam#i<n las secciones del manual so#re el tipo tring y las (unciones de 5adenas;
Jperadores de Matrices
Tabla !9(=. Jperadores de Matrices
E'emplo Nombre Mesultado
Ya R Y# @ni-n @ni-n de Ya y Y#;
Ya ^^ Y# .gualdad TRUE si Ya y Y# tienen los mismos elementos;
Ya ^^^ Y# .dentidad
TRUE si Ya y Y# tienen los mismos elementos en el mismo
orden;
Ya a^ Y# No2igualdad TRUE si Ya no es igual a Y#;
Ya `_ Y# No2igualdad TRUE si Ya no es igual a Y#;
Ya a^^ Y#
No2
identidad
TRUE si Ya no es id<ntico a Y#;
+l operador Y adiciona la matriz del lado derecho a a/u<l al lado iz/uierdoA al mismo tiempo /ue
cual/uier llave duplicada NO es so#rescrita;
<?php
$a > array3"a" >> "man0ana", "b" >> "banano"9;
$b > array3"a" >> "pera", "b" >> "#resa", "c" >> "cere0a"9;
$c > $a [ $b; // +nion de $a y $b
echo "+ni&oacute;n de V$a y V$b@ Vn";
=ar%dump3$c9;
$c > $b [ $a; // +nion de $b y $a
echo "+ni&oacute;n de V$b y V$a@ Vn";
=ar%dump3$c9;
?>
5uando sea e'ecutadoA este script producir* la siguiente salidaC
+ni&oacute;n de $a y $b@
array3<9 :
)"a"/>>
strinE3H9 "man0ana"
)"b"/>>
strinE3G9 "banano"
)"c"/>>
strinE3G9 "cere0a"
;
+ni&oacute;n de $b y $a@
array3<9 :
)"a"/>>
strinE319 "pera"
)"b"/>>
strinE359 "#resa"
)"c"/>>
strinE3G9 "cere0a"
;
Los elementos de las matrices son considerados Walentes en la comparaci-n si <stos tienen la misma
clave y valor;
E'emplo !9(7. Comparaci"n de matrices
<?php
$a > array3"man0ana", "banano"9;
$b > array36 >> "banano", "2" >> "man0ana"9;
=ar%dump3$a >> $b9; // bool3true9
=ar%dump3$a >>> $b9; // bool3#alse9
?>
$ea tam#i<n las secciones del manual so#re el tipo Array y (unciones de Matrices;
Jperadores de Tipo
P&P tiene un operador Bnico de tipoC 6nstanceo9; 6nstanceo9 es usado para determinar si un o#'eto
dado es de una clase de o#'eto especi(icada;
+l operador 6nstanceo9 (ue introducido en P&P 4; Antes de esta versi-nA is>a./ era utilizadoA pero
is>a./ ha sido marcado como o#soleto desde entonces en (avor de 6nstanceo9;
<?php
class , : ;
class Z : ;
$cosa > ne8 ,;
i# 3$cosa instanceo# ,9 :
echo M,M;
;
i# 3$cosa instanceo# Z9 :
echo MZM;
;
?>
Dado /ue 'cosa es un ob'ect de tipo AA pero no de tipo BA s-lo el #lo/ue dependiente del tipo A
ser* e'ecutadoC
,
$ea tam#i<n get>class./ e is>a./;
Captulo !<. Estructuras de Control
,odo script P&P se compone de una serie de sentencias; @na sentencia puede ser una asignaci-nA
una llamada a (unci-nA un #ucleA una sentencia condicional e incluso una sentencia /ue no haga
nada >una sentencia vac)a?; Las sentencias normalmente aca#an con punto y coma; Adem*sA las
sentencias se pueden agrupar en grupos de sentencias encapsulando un grupo de sentencias con
llaves; @n grupo de sentencias es tam#i<n una sentencia; +n este cap)tulo se descri#en los di(erentes
tipos de sentencias;
if
La construcci-n 69 es una de las m*s importantes caracter)sticas de muchos lengua'esA incluido P&P;
Permite la e'ecuci-n condicional de (ragmentos de c-digo; P&P caracteriza una estructura 69 /ue es
similar a la de 5C
<?php
i# 3expr9
sentencia
?>
5omo se descri#e en la secci-n so#re eFpresionesA e8pr se evalBa a su valor condicional >#oolean?;
i e8pr se evalBa como TRUEA P&P e'ecutar* la sentenc6aA y si se evalBa como FALSE 2 la ignorar*;
e puede encontrar m*s in(ormaci-n so#re los valores evaluados como FALSE en la secci-n
5onvirtiendo a un valor condicional >#oolean?H;
+l siguiente e'emplo mostrar)a a es mayor Que b si 'a (uera mayor /ue '1C
<?php
i# 3$a > $b9
print "a es mayor Que b";
?>
A menudoA se desea tener m*s de una sentencia e'ecutada de (orma condicional; Por supuestoA no
hay necesidad de encerrar cada sentencia con una cl*usula 69; +n vez de esoA se pueden agrupar
varias sentencias en un grupo de sentencias; Por e'emploA este c-digo mostrar)a a es mayor
Que b si 'a (uera mayor /ue '1A y entonces asignar)a el valor de 'a a '1C
<?php
i# 3$a > $b9 :
print "a es mayor Que b";
$b > $a;
;
?>
Las sentencias 69 se pueden anidar inde(inidamente dentro de otras sentencias 69A lo cual proporciona
una (leFi#ilidad completa para e'ecuciones condicionales en las di(erentes partes de tu programa;
else
A menudo /ueremos e'ecutar una sentencia si se cumple una cierta condicionA y una sentencia
distinta si la condici-n no se cumple; +sto es para lo /ue sirve else; else eFtiende una sentencia 69
para e'ecutar una sentencia en caso de /ue la eFpresi-n en la sentencia 69 se evalBe como FALSE;
Por e'emploA el siguiente c-digo mostrar)a a es mayor Que b si 'a (uera mayor /ue '1A y a
.? es mayor Que b en cual/uier otro casoC
<?php
i# 3$a > $b9 :
print "a es mayor Que b";
; else :
print "a .? es mayor Que b";
;
?>
La sentencia else se e'ecuta solamente si la eFpresi-n 69 se evalBa como FALSEA y si hu#iera alguna
eFpresi-n else69 2 s-lo si se evaluaron tam#i<n a FALSE >$er elsei(?;
elseif
else69A como su nom#re sugiereA es una com#inaci-n de 69 y else; 5omo elseA eFtiende una sentencia
69 para e'ecutar una sentencia di(erente en caso de /ue la eFpresi-n 69 original se evalBa como
FALSE; No o#stanteA a di(erencia de elseA e'ecutar* esa eFpresi-n alternativa solamente si la
eFpresi-n condicional else69 se evalBa como TRUE; Por e'emploA el siguiente c-digo mostrar)a a
es mayor Que bA a es iEual a b o a es menor Que bC
<?php
i# 3$a > $b9 :
print "a es mayor Que b";
; elsei# 3$a >> $b9 :
print "a es iEual Que b";
; else :
print "a es mayor Que b";
;
?>
Puede ha#er varios else69s dentro de la misma sentencia 69; La primera eFpresi-n else69 >si hay
alguna? /ue se evalBe como TRUE se e'ecutar)a; +n P&PA tam#i<n se puede escri#ir Helse i(H >con dos
pala#ras? y el comportamiento ser)a id<ntico al de un Helsei(H >una sola pala#ra?; +l signi(icado
sint*ctico es ligeramente distinto >si estas (amiliarizado con 5A es el mismo comportamiento? pero la
l)nea #*sica es /ue am#os resultar)an tener eFactamente el mismo comportamiento;
La sentencia else69 se e'ecuta s-lo si la eFpresi-n 69 precedente y cual/uier eFpresi-n else69
precedente se evalBan como FALSEA y la eFpresi-n else69 actual se evalBa como TRUE;
,inta+is Alternati5a de Estructuras de Control
P&P o(rece una sintaFis altenativa para alguna de sus estructuras de controlX a sa#erA 69A 7h6leA 9orA y
s76tch; +n cada casoA la (orma #*sica de la sintaFis alternativa es cam#iar a#rir2llave por dos puntos
>C? y cerrar2llave por en#69JA en#7h6leJA en#9orJA or en#s76tchJA respectivamente;
<?php i# 3$a>>59@ ?>
, es iEual a 5
<?php endi#; ?>
+n el e'emplo de arri#aA el #lo/ue &,ML =A es igual 4= se anida dentro de una sentencia 69 escrita
en la sintaFis alternativa; +l #lo/ue &,ML se mostrar)a solamente si Ya (uera igual a 4;
La sintaFis alternativa se aplica a else y tam#i<n a else69; La siguiente es una estructura 69 con else69 y
else en el (ormato alternativoC
<?php
i# 3$a >> 59@
print "a es iEual a 5";
print "...";
elsei# 3$a >> G9@
print "a es iEual a G";
print "!!!";
else@
print "a no es ni 5 ni G";
endi#;
?>
Mirar tam#i<n EhileA (orA e i( para m*s e'emplos;
while
Los #ucles 7h6le son los tipos de #ucle m*s simples en P&P; e comportan como su contrapartida
en 5; La (orma #*sica de una sentencia 7h6le esC
8hile 3expr9 sentencia
+l signi(icado de una sentencia 7h6le es simple; Le dice a P&P /ue e'ecute la>s? sentencia>s?
anidada>s? repetidamenteA mientras la eFpresi-n 7h6le se evalBe como TRUE; +l valor de la
eFpresi-n es compro#ado cada vez al principio del #ucleA as) /ue incluso si este valor cam#ia
durante la e'ecuci-n de la>s? sentencia>s? anidada>s?A la e'ecuci-n no parar* hasta el (in de la
iteraci-n >cada vez /ue P&P e'ecuta las sentencias en el #ucle es una iteraci-n?; A vecesA si la
eFpresi-n 7h6le se evalBa como FALSE desde el principio de todoA la>s? sentencia>s? anidada>s? no
se e'ecutar*n ni si/uiera una vez;
5omo con la sentencia 69A se pueden agrupar multiples sentencias dentro del mismo #ucle 7h6le
encerrando un grupo de sentencias con llavesA o usando la sintaFis alternativaC
8hile 3expr9@ sentencia ... end8hile;
Los siguientes e'emplos son id<nticosA y am#os imprimen nBmeros del 1 al 13C
<?php
/W ejemplo 6 W/

$i > 6;
8hile 3$i <> 629 :
print $i[[; /W el =alor impreso ser&iacute;a
$i antes del incremento
3postFincremento9 W/
;

/W ejemplo C W/

$i > 6;
8hile 3$i <> 629@
print $i;
$i[[;
end8hile;
?>
do..while
Los #ucles #o..7h6le son muy similares a los #ucles 7h6leA eFcepto /ue las condiciones se
comprue#an al (inal de cada iteraci-n en vez de al principio; La principal di(erencia (rente a los
#ucles regulares 7h6le es /ue se garantiza la e'ecuci-n de la primera iteraci-n de un #ucle #o..7h6le
>la condici-n se comprue#a s-lo al (inal de la iteraci-n?A mientras /ue puede no ser necesariamente
e'ecutada con un #ucle 7h6le regular >la condici-n se comprue#a al principio de cada iteraci-nA si
esta se evalBa como FALSE desde el principio la e'ecuci-n del #ucle (inalizar* inmediatamente?;
&ay una sola sintaFis para los #ucles #o..7h6leC
<?php
$i > 2;
do :
print $i;
; 8hile 3$i>29;
?>
+l #ucle de arri#a se e'ecutar)a eFactamente una sola vezA despu<s de la primera iteraci-nA cuando la
condici-n se comprue#aA se evalBa como FALSE >Yi no es m*s grande /ue 3? y la e'ecuci-n del
#ucle (inaliza;
Los usuarios avanzados de 5 pueden estar (amiliarizados con un uso distinto del #ucle #o..7h6leA
para permitir parar la e'ecuci-n en medio de los #lo/ues de c-digoA encapsulandolos con #o..7h6le
>3?A y usando la sentencia 1rea>; +l siguiente (ragmento de c-digo demuestra estoC
<?php
do :
i# 3$i < 59 :
print "i no es lo su#icientemente Erande";
breaI;
;
$i W> $#actor;
i# 3$i < $minimum%limit9 :
breaI;
;
print "i es correcto";
/W procesa i W/
; 8hile329;
?>
No se preocupes si no entiende esto completamente o en a#soluto; e pueden codi(icar archivos de
comandos e incluso archivos de comandos potentes sin usar esta HpropiedadH;
for
Los #ucles 9or son los #ucles m*s comple'os en P&P; e comportan como su contrapartida en 5; La
sintaFis de un #ucle 9or esC
#or 3expr6; exprC; expr<9 sentencia
La primera eFpresi-n >e8pr1? se evalBa >e'ecuta? incondicionalmente una vez al principio del #ucle;
Al comienzo de cada iteraci-nA se evalBa e8pr2 ; i se evalBa como TRUEA el #ucle continBa y las
sentencias anidadas se e'ecutan; i se evalBa como FALSEA la e'ecuci-n del #ucle (inaliza;
Al (inal de cada iteraci-nA se evalBa >e'ecuta? e8prR;
5ada una de las eFpresiones puede estar vac)a; Oue e8pr2 est< vac)a signi(ica /ue el #ucle de#er)a
correr inde(inidamente >P&P implicitamente lo considera como TRUEA al igual /ue 5?; +sto puede
/ue no sea tan inBtil como se podr)a pensarA puesto /ue a menudo se /uiere salir de un #ucle usando
una sentencia 1rea> condicional en vez de usar la condici-n de 9or;
5onsidera los siguientes e'emplos; ,odos ellos muestran nBmeros del 1 al 13C
<?php
/W ejemplo 6 W/

#or 3$i > 6; $i <> 62; $i[[9 :
print $i;
;

/W ejemplo C W/

#or 3$i > 6; ;$i[[9 :
i# 3$i > 629 :
breaI;
;
print $i;
;

/W ejemplo < W/

$i > 6;
#or 3;;9 :
i# 3$i > 629 :
breaI;
;
print $i;
$i[[;
;

/W ejemplo 1 W/

#or 3$i > 6; $i <> 62; print $i, $i[[9 ;
?>
Por supuestoA el primer e'emplo parece ser el mas elegante >o /uiz*s el cuarto?A pero uno puede
descu#rir /ue ser capaz de usar eFpresiones vac)as en #ucles 9or resulta Btil en muchas ocasiones;
P&P tam#i<n soporta la =sintaFis de dos puntos= alternativa para #ucles 9or;
#or 3expr6; exprC; expr<9@ sentencia; ...; end#or;
Otros lengua'es poseen una sentencia 9oreach para traducir un array o una ta#la hash; P&P7 no
posee tal construcci-nX P&P8 s) >ver (oreach?; +n P&P7A se puede com#inar Ehile con las (unciones
list./ y each./ para conseguir el mismo e(ecto; Mirar la documentaci-n de estas (unciones para ver
un e'emplo;
foreach
P&P 8 >P&P7 no? incluye una construcci-n 9oreachA tal como perl y algunos otros lengua'es; +sto
simplemente da un modo (*cil de iterar so#re matrices; 9oreach (unciona solamente con matrices y
devolver* un error si se intenta utilizar con otro tipo de datos - varia#les no inicializadas; &ay dos
sintaFisX la segunda es una eFtensi-n menorA pero Btil de la primeraC
#oreach3expresion%array as $=alue9 sentencia
#oreach3expresion%array as $Iey >> $=alue9 sentencia
La primera (orma recorre el array dado por e8pres6on_arra?; +n cada iteraci-nA el valor del
elemento actual se asigna a 'alue y el puntero interno del array se avanza en una unidad >as) en el
siguiente pasoA se estar* mirando el elemento siguiente?;
La segunda manera hace lo mismoA salvo /ue la clave del elemento actual ser* asignada a la varia#le
'>e? en cada iteraci-n;
Nota- 5uando 9oreach comienza su primera e'ecuci-nA el puntero interno a la matriz se
reinicia autom*ticamente al primer elemento de la matriz; +sto signi(ica /ue no se
necesita llamar a reset./ antes de un #ucle 9oreach;
Nota- &ay /ue tener en cuenta /ue9oreach tra#a'a con una copia de la matriz
especi(icada y no la lista en siA por ello el puntero de la lista no es modi(icado como en
la (unci-n each./A y los cam#ios en el elemento de la matriz retornado no a(ectan a la
matriz original; De todas maneras el puntero interno a la matriz original aanDa al
procesar la matriz; suponiendo /ue #ucle (oreach se e'ecuta hasta el (inalA el puntero
interno a la matriz estarDaacuteX al (inal de la matriz;
Nota- 9oreach no soporta la caracteristica de suprimir mensa'es de error con HGH;
Puede ha#er o#servado /ue las siguientes son (uncionalidades id<nticasC
<?php
$arr > array3"one", "t8o", "three"9;
reset 3$arr9;
8hile 3list3, $=alue9 > each 3$arr99 :
echo "(alue@ $=alue<br>Vn";
;
#oreach 3$arr as $=alue9 :
echo "(alue@ $=alue<br>Vn";
;
?>
Las siguientes tam#i<n son (uncionalidades id<nticasC
<?php
reset3 $arr 9;
8hile3 list3 $Iey, $=alue 9 > each3 $arr 9 9 :
echo "]ey@ $Iey; (alor@ $=alue&lt;br&Et;Vn";
;
#oreach3 $arr as $Iey >> $=alue 9 :
echo "]ey@ $Iey; (alor@ $=alue&lt;br&Et;Vn";
;
?>
Algunos e'emplos m*s para demostrar su usoC
<?php
/W #oreach ejemplo 6@ s&oacute;lo =alorW/
$a > array36, C, <, 6H9;
#oreach3$a as $=9 :
print "(alor actual de V$a@ $=.Vn";
;
/W #oreach ejemplo C@ =alor 3con cla=e impresa para ilustrar9 W/
$a > array36, C, <, 6H9;
$i > 2; /W s&oacute;lo para prop&oacute;sitos demostrati=os W/
#oreach3$a as $=9 :
print "V$a)$i/ >> $=.Vn";
$i[[;
;
/W #oreach ejemplo <@ cla=e y =alor W/
$a > array3
"uno" >> 6,
"dos" >> C,
"tres" >> <,
"diecisiete" >> 6H
9;
#oreach3$a as $I >> $=9 :
print "V$a)$I/ >> $=.Vn";
;
/W #oreach ejemplo 1@ matri0 multiFdimensional W/
$a)2/)2/ > "a";
$a)2/)6/ > "b";
$a)6/)2/ > "y";
$a)6/)6/ > "0";
#oreach3$a as $=69 :
#oreach 3$=6 as $=C9 :
print "$=CVn";
;
;
/W #oreach ejemplo 5@ matri0 din&aacute;mica W/

#oreach3array36, C, <, 1, 59 as $=9 :
print "$=Vn";
;
?>
break
1rea> escapa de la estructuras de control iterante >#ucle? actuales 9orA 7h6leA o s76tch;
1rea> accepta un par*metro opcionalA el cual determina cuantas estructuras de control hay /ue
escapar;
<?php
$arr > array 3MoneM, Mt8oM, MthreeM, M#ourM, MstopM, M#i=eM9;
8hile 3list 3, $=al9 > each 3$arr99 :
i# 3$=al >> MstopM9 :
breaI; /W Pou could also 8rite MbreaI 6;M here. W/
;
echo "$=al<br>Vn";
;
/W +sinE the optional arEument. W/
$i > 2;
8hile 3[[$i9 :
s8itch 3$i9 :
case 5@
echo ",t 5<br>Vn";
breaI 6; /W Exit only the s8itch. W/
case 62@
echo ",l 62; saliendo<br>Vn";
breaI C; /W Exit the s8itch and the 8hile. W/
de#ault@
breaI;
;
;
?>
continue
cont6nue se usa dentro de la estructura del #ucle para saltar el resto de la iteraci-n actual del #ucle y
continuar la e'ecuci-n al comienzo de la siguiente iteraci-n;
Nota- ,ener en cuenta /ue en P&P la declaraci-n sEitch es considerada una estructura
de #ucle por cont6nue;
cont6nue accepta un par*metro opcionalA el cual determina cuantos niveles >#luces? hay /ue saltar
antes de continuar con la e'ecuci-n;
<?php
8hile 3list 3$Iey, $=alue9 > each 3$arr99 :
i# 3!3$Iey \ C99 : // sIip odd members
continue;
;
do%somethinE%odd 3$=alue9;
;
$i > 2;
8hile 3$i[[ < 59 :
echo "?uter<br>Vn";
8hile 369 :
echo "&nbsp;&nbsp;"iddle<br>Vn";
8hile 369 :
echo "&nbsp;&nbsp;4nner<br>Vn";
continue <;
;
echo "Esto nunca se imprime.<br>Vn";
;
echo "P esto tampoco.<br>Vn";
;
?>
switch
La sentencia s76tch es similar a una serie de sentencias .F en la misma eFpresi-n; +n muchas
ocasionesA se /uiere comparar la misma varia#le >o eFpresi-n? con nuchos valores di(erentesA y
e'ecutar una parte de c-digo distinta dependiendo de a /u< valor es igual; Para ello sirve la sentencia
s76tch;
Nota- ,ener en cuenta /ue al contrario /ue otros lengua'es de programaci-nA continue
se aplica a sEitch y (unciona de manera similar a 1rea>; i teneis un sEitch dentro de un
#ucle y deseais continuar con el paso siguiente en el #ucle eFternoA usar cont6nue 2;
Los siguientes dos e'emplos son dos modos distintos de escri#ir la misma cosaA uno usa una serie de
sentencias 69A y el otro usa la sentencia s76tchC
<?php
i# 3$i >> 29 :
print "i eQuals 2";
; elsei# 3$i >> 69 :
print "i eQuals 6";
; elsei# 3$i >> C9 :
print "i eQuals C";
;
s8itch 3$i9 :
case 2@
print "i eQuals 2";
breaI;
case 6@
print "i eQuals 6";
breaI;
case C@
print "i eQuals C";
breaI;
;
?>
+s importante entender c-mo se e'ecuta la sentencia s76tch para evitar errores; La sentencia s76tch
e'ecuta l)nea por l)nea >realmenteA sentencia a sentencia?; Al comienzoA no se e'ecuta c-digo; -lo
cuando se encuentra una sentencia case con un valor /ue coincide con el valor de la eFpresi-n
s76tch P&P comienza a e'ecutar las sentencias; P&P continBa e'ecutando las sentencias hasta el
(inal del #lo/ue s76tchA o la primera vez /ue vea una sentencia 1rea>; i no se escri#e una sentencia
1rea> al (inal de una lista de sentencias caseA P&P seguir* e'ecutando las sentencias del siguiente
case; Por e'emploC
<?php
s8itch 3$i9 :
case 2@
print "i es iEual a 2";
case 6@
print "i es iEual a 6";
case C@
print "i es iEual a C";
;
?>
A/u)A si Yi es igual a 3A fP&P e'ecutar)a todas las sentecias printa i Yi es igual a 1A P&P e'ecutar)a
las Bltimas dos sentencias print y s-lo si Yi es igual a 0A se o#tendr)a la conducta HesperadaH y
solamente se mostrar)a Hi es igual a 0H; As)A es importante no olvidar las sentencias 1rea> >incluso
aun/ue pueda /uerer evitar escri#irlas intencionadamente en ciertas circunstancias?;
+n una sentencia s76tchA la condici-n se evalBa s-lo una vez y el resultado se compara a cada
sentencia case; +n una sentencia else69A la condici-n se evalBa otra vez; i tu condici-n es m*s
complicada /ue una comparaci-n simple yDo est* en un #ucle estrechoA un s76tch puede ser m*s
r*pido;
La lista de sentencias de un case puede tam#i<n estar vac)aA lo cual simplemente pasa el control a la
lista de sentencias del siguiente case;
<?php
s8itch 3$i9 :
case 2@
case 6@
case C@
print "i es menor Que <, pero no neEati=o";
breaI;
case <@
print "i es <";
;
?>
@n caso especial es el #e9ault case=; +ste =case= coincide con todo lo /ue no coincidan los otros
case; Por e'emploC
<?php
s8itch 3$i9 :
case 2@
print "i es iEual a 2";
breaI;
case 6@
print "i es iEual a 6";
breaI;
case C@
print "i es iEual a C";
breaI;
de#ault@
print "i no es iEual a 2, 6 o C";
;
?>
La eFpresi-n case puede ser cual/uier eFpresi-n /ue se evalBe a un tipo simpleA es decirA nBmeros
enteros o de punto (lotante y cadenas de teFto; No se pueden usar a/u) ni arrays ni o#'etos a menos
/ue se conviertan a un tipo simple;
La sintaFis alternativa para las estructuras de control est* tam#i<n soportada con sEitch; Para m*s
in(ormaci-nA ver intaFis alternativa para estructuras de control;
<?php
s8itch 3$i9@
case 2@
print "i es iEual 2";
breaI;
case 6@
print "i es iEual a 6";
breaI;
case C@
print "i es iEual a C";
breaI;
de#ault@
print "i no es iEual a 2, 6 o C";
ends8itch;
?>
declare
La construcci-n #eclare es usada para de(inir directivas de e'ecuci-n para un #lo/ue de c-digo; La
sintaFis de #eclare es similar a la de las otras estructuras de controlC
declare 3directi=a9 sentencia
D6rect6a permite asignar el comportamiento del #lo/ue #eclare; Actualmente una sola directiva es
reconocidaC la directiva t6c>s >5onsultar m*s a#a'o la in(ormaci-n so#re la directiva tic"s?
La sentenc6a es lo /ue se e'ecuta 22 5omo se e'ecuta y /ue e(ectos secundarios tiene depende de la
directiva de(inida en la #6rect6a;
+l constructor #eclare se puede usar tam#ien glo#almenteA a(ectando a todo el c-digo /ue le sigue;
<?php
// Estos son lo mismo@
// se puede usar este@
declare3ticIs>69 :
// script completo aQui
;
// o este@
declare3ticIs>69;
// script completo aQui
?>
TicBs
@n =tic"= es un evento /ue ocurre por cada N sentencias de #a'o nivel e'ecutadas dentro del #lo/ue
#eclare; +l valor de N es especi(icado por t6c>s:N como #6rect6a dentro de #eclare;
+l evento /ue ocurre en cada =tic"= es especi(icado usando la (unci-n register>ticB>function./; $er
el e'emplo m*s a#a'o para m*s detalles; ,ener en cuenta /ue mas de un evento puede ocurrir por
cada =tic"=
E'emplo !<(!. Perfilar una secci"n de c"digo PHP
<?php
// , #unction that records the time 8hen it is called
#unction pro#ile 3$dump > S,O&E9
:
static $pro#ile;
// 'eturn the times stored in pro#ile, then erase it
i# 3$dump9 :
$temp > $pro#ile;
unset 3$pro#ile9;
return 3$temp9;
;
$pro#ile)/ > microtime 39;
;
// &et up a ticI handler
reEister%ticI%#unction3"pro#ile"9;
// 4nitiali0e the #unction be#ore the declare blocI
pro#ile 39;
// 'un a blocI o# code, thro8 a ticI e=ery Cnd statement
declare 3ticIs>C9 :
#or 3$x > 6; $x < 52; [[$x9 :
echo similar%text 3md53$x9, md53$xW$x99, "<br />;";
;
;
// Lisplay the data stored in the pro#iler
print%r 3pro#ile 3*'+E99;
?>
+ste e'emplo per(ila el c-digo P&P dentro del #lo/ue HdeclareHA gra#ando la horaA una sentencia si y
otra noA cuando (ue e'ecutada; +sta in(ormaci-n puede ser usada para encontrar areas en donde el
codigo es lento; +ste proceso se puede implementar de di(erentes manerasC usando =tic"s= es m*s
conveniente y (acil de implementar;
=,ic"s= es una manera muy #uena de eliminar erroresA implementando simples tra#a'os en paraleloA
.DO en modo desatendido y otras tareas;
$er tam#i<n register>ticB>function./ y unregister>ticB>function./;
return
i se llama desde una (unci-nA return./ termina inmediatamente la e'ecuci-n de la (unci-n y retorna
su argumento como valor de la (unci-n; return./ tam#ien terminar* la e'ecuci-n de una sentencia
e5al./- un script P&P;
i el script actual ha sido incluido - re/uerido con include./ - re?uire./A el control es trans(erido al
script /ue llamo al script incluido; Adem*sA si el script actual (ue incluidoA el valor dado a return./
ser* retornado como el valor de la llamada include./; i return./ es invocado desde el script
principalA la e'ecuci-n terminara inmediatamente; i el script actual (ue incluido con las opciones de
con(iguraci-n autoZprependZ(ile - autoZappendZ(ileA la e'ecuci-n terminara inmediatamente;
Para m*s in(ormaci-nA consultar Retornando valores;
Nota- ,ener en cuenta /ue ya /ue return./ es un constructor del lengua'e y no una
(unci-nA los par<ntesis alrededor de sus argumentosA son solo necesarios si el argumento
contiene una eFpresionA no se suelen utilizar tan a menudoA cuando retornan una
varia#le;
re?uire./
La sentencia re?uire./ incluye y evalua el archivo especi(icado;
re?uire./ incluye y evalua el archivo especi(icado; .n(ormaci-n detallada de como esta inclusi-n
(unciona se puede encontrar en la documentaci-n de la (unci-n include./;
re?uire./ y include./ son id<nticas en todos los aspectos eFcepto en el modo de actuar ante un
error; include./ produce un Larning mientras /ue re?uire./ produce un +rror Fatal; +n otras
pala#rasA no dude en utilizar re?uire./ si /uiere /ue un (ichero no encontrado cuelgue el
procesamiento de la p*gina; include./ no se comporta de esta maneraA el script seguir* (uncionando
de todas maneras; Asegurarse /ue includeZpath este con(igurado #ien;
E'emplo !<(*. e'emplos bsicos de re?uire./
<?php
reQuire Mprepend.phpM;
reQuire $some#ile;
reQuire 3Msome#ile.txtM9;
?>
consultar la documentaci-n de include./ para m*s e'emplos;
Nota- 5on anterioridad a P&P 8;3;0A se aplica lo siguienteC re?uire./ siempre intentar*
leer el (ichero a incluirA incluso si la linea donde se encuentra re?uire./ nunca es
e'ecutada; in em#argoA si la linea donde se encuentra re?uire./ no es e'ecutadaA
tampoco lo har* el c-digo incluido;
Nota- Puesto /ue esto es una construcci-n del lengua'e y no una (unci-nA no puede ser
llamado usando (unciones varia#les
A5iso
$ersiones de +!+ para LindoEs anteriores a 8;7;3A no soportan el acceso remoto a archivos para
esta (unci-nA no (uncionar* ni activando si/uiera alloEZurlZ(open;
$er tam#i<n include./A re?uire>once./A include>once./A e5al./A file./A readfile./A 5irtual./ y
includeZpath;
include./
La sentencia include./ incluye y evalBa el archivo especi(icado;
+sta documentaci-n tam#i<n se aplica a la (unci-n re?uire./; re?uire./ y include./ son id<nticas en
todos los aspectos eFcepto en el modo de actuar ante un error; include./ produce un Larning
mientras /ue re?uire./ produce un +rror Fatal; +n otras pala#rasA no dude en utilizar re?uire./ si
/uiere /ue un (ichero no encontrado cuelgue el procesamiento de la p*gina; include./ no se
comporta de esta maneraA el script seguir* (uncionando de todas maneras; Asegurarse /ue
includeZpath este con(igurado #ien;
5uando un (ichero es incluidoA el c-digo /ue contiene hereda la varia#le scope de la linea en donde
el include ocurre; 5ual/uier varia#le disponi#le en esa linea en el (ichero desde donde se hace la
inclusi-n estar* disponi#le en el (ichero incluido a partir de ese momento;
E'emplo !<(7. E'emplo bsico de la funci"ninclude./
=ars.php
<?php
$color > MEreenM;
$#ruit > MappleM;
?>
test.php
<?php
echo ", $color $#ruit"; // ,
include M=ars.phpM;
echo ", $color $#ruit"; // , Ereen apple
?>
i la inclusi-n ocurre dentro de una (unci-n en el (ichero donde se incluyeA todo el c-digo contenido
en el (ichero incluido se comportar* como si hu#iese sido de(inido dentro de esta (unci-n;
E'emplo !<(8. Incluyendo desde funciones
<?php
#unction #oo39
:
Elobal $color;
include M=ars.phpM;
echo ", $color $#ruit";
;
/W =ars.php is in the scope o# #oo39 so W
W $#ruit is .?* a=ailable outside o# this W
W scope. $color is because 8e declared it W
W as Elobal. W/
#oo39; // , Ereen apple
echo ", $color $#ruit"; // , Ereen
?>
5uando un (ichero es incluidoA el int<rprete sale del modo P&P y entra en modo &,ML al principio
del archivo re(erenciadoA y vuelve de nuevo al modo P&P al (inal; Por esta raz-nA cual/uier c-digo
dentro del archivo re(erenciado /ue de#iera ser e'ecutado como c-digo P&P de#e ser encerrado
dentro de eti/uetas v*lidas de comienzo y (in de P&P;
i =@RL (open Erappers= esta activada en P&P >como est* en la con(iguraci-n inicial?A se puede
especi(icar el (ichero /ue se va a incluir usando una @RL >via &,,P u otro mecanismo soportadoA
consultar Ap<ndice L? en vez de un (ichero local; i el servidor destino interpreta el (ichero destino
como c-digo P&PA varia#les pueden ser mandadas al (ichero incluido usando una cadena @RL de
petici-nA tal como se hace con &,,P G+,; +sto no es lo mismo /ue incluir un (ichero y /ue este
(ichero herede las varia#les del (ichero padreX el script es e'ecutado en el servidor remoto y el
resultado es incluido en en script local;
A5iso
$ersiones de +!+ para LindoEs anteriores a 8;7;3A no soportan el acceso remoto a archivos para
esta (unci-nA no (uncionar* ni activando si/uiera alloEZurlZ(open;
E'emplo !<(9. include./ a tra5es de HTTP
<?php
/W *his example assumes that 888.example.com is con#iEured to parse .php
W #iles and not .txt #iles. ,lso, M7orIsM here means that the =ariables
W $#oo and $bar are a=ailable 8ithin the included #ile.W/
// 7onMt 8orI; #ile.txt 8asnMt handled by 888.example.com as H
include Mhttp@//888.example.com/#ile.txt?#oo>6&bar>CM;
// 7onMt 8orI; looIs #or a #ile named M#ile.php?#oo>6&bar>CM on the
// local #ilesystem.
include M#ile.php?#oo>6&bar>CM;
// 7orIs.
include Mhttp@//888.example.com/#ile.php?#oo>6&bar>CM;
$#oo > 6;
$bar > C;
include M#ile.txtM; // 7orIs.
include M#ile.phpM; // 7orIs.
?>
$er tam#i<n Ficheros remotosA fopen./ y file./ para o#tener in(ormaci-n adicional;
%a /ue include./ y re?uire./ son contructores especiales del lengua'eA se de#en de incluir dentro del
#lo/ue de una sentenciaA si est*n dentro de un #lo/ue condicional;
E'emplo !<(<. include./ y blo?ues condicionales
<?php
// *his is 7'?.- and 8ill not 8orI as desired.
i# 3$condition9
include $#ile;
else
include $other;
// *his is R?''ER*.
i# 3$condition9 :
include $#ile;
; else :
include $other;
;
?>
+s posi#le e'ecutar una sentencia return dentro de un archivo incluido para terminar el procesado de
ese archivo y volver al archivo de comandos /ue lo llam-; ,am#ien es posi#le retornar valores de
(icheros incluidos; e puede coger el valor de la llamada =include= como se har)a con una (unci-n
normal;
Nota- +n P&P7A return no puede aparecer dentro de un #lo/ue a menos /ue sea un
#lo/ue de (unci-nA en el cual return se aplica a esa (unci-n y no al archivo completo;
E'emplo !<(=. include./ y return./
return.php
<?php
$=ar > MHM;
return $=ar;
?>
noreturn.php
<?php
$=ar > MHM;
?>
testreturns.php
<?php
$#oo > include Mreturn.phpM;
echo $#oo; // prints MHM
$bar > include Mnoreturn.phpM;
echo $bar; // prints 6
?>
'1ar es igual a 1 por/ue la inclusi-n salio #ien; Notar la di(erencia entre los dos e'emplos
anteriores; el primero usa return./ dentro del (ichero incluido y el segundo no; Otras maneras de
incluir (icheros en varia#les es con fopen./A file./ - usando include./con Funciones de control de
salida;
Nota- Puesto /ue esto es una construcci-n del lengua'e y no una (unci-nA no puede ser
llamado usando (unciones varia#les
$er tam#i<n re?uire./A re?uire>once./A include>once./A readfile./A 5irtual./A y includeZpath;
re?uire>once./
La (unci-n re?uire>once./ incluye y evalua el (ichero especi(icado durante la e'ecuci-n del script;
e comporta de manera similar a re?uire./A con la Bnica di(erencia /ue si el c-digo ha sido ya
incluidoA no se volver* a incluir; 5onsultar la documentaci-n de la (unci-n re?uire./ para o#tener
m*s in(ormaci-n;
re?uire>once./ de#er)a de usarse en casos en los /ue un mismo (ichero puede ser incluido y
evaluado m*s de una vez durante la e'ecuci-n de un scriptA y se /uiere estar seguro /ue se incluye
una sola vez para evitar pro#lemas con rede(iniciones de (uncionesA valores de (uncionesA etc;
Para consultar e'emplos /ue usen re?uire>once./ y include>once./A ver el c-digo de P+AR
incluido con las Bltimas versiones de P&P;
Nota- re?uire>once./ (ue incorporado en P&P 8;3;1pl0
Nota- +l comportamiento de de re?uire>once./ y include>once./ puede /ue no sea el
esperado en sistemas operativos en los /ue mayBsculas y minBsculas se traten igual
>como en LindoEs?
E'emplo !<(N. Con re?uire>once./ no importan las may4sculas y min4sculas en 2indo3s
<?php
reQuire%once3"a.php"9; // this 8ill include a.php
reQuire%once3",.php"9; // this 8ill include a.php aEain on 7indo8s!
?>
A5iso
$ersiones de +!+ para LindoEs anteriores a 8;7;3A no soportan el acceso remoto a archivos para
esta (unci-nA no (uncionar* ni activando si/uiera alloEZurlZ(open;
$er tam#i<n re?uire./A include./A include>once./A get>re?uired>files./A get>included>files./A
readfile./A y 5irtual./;
include>once./
La (unci-n include>once./ incluye y evalua el (ichero especi(icado durante la e'ecuci-n del script;
e comporta de manera similar a include./A con la Bnica di(erencia /ue si el c-digo ha sido ya
incluidoA no se volver* a incluir;
include>once./ de#er)a de usarse en casos en los /ueA un mismo (ichero puede ser incluido y
evaluado m*s de una vez durante la e'ecuci-n de un scriptA y se /uiere estar seguro /ue se incluye
una sola vez para evitar pro#lemas con rede(iniciones de (uncionesA valores de (uncionesA etc;
Para consultar e'emplos /ue usen include>once./ e re?uire>once./A ver el c-digo de P+AR
incluido con las Bltimas versiones de P&P;
Nota- include>once./ (ue incorporado en P&P 8;3;1pl0
Nota- +l comportamiento de de include>once./ y re?uire>once./ puede /ue no sea el
esperado en sistemas operativos en los /ue mayBsculas y minBsculas se traten igual
>como en LindoEs?
E'emplo !<(O. Con include>once./ no importan las may4sculas y min4sculas en 2indo3s
<?php
include%once3"a.php"9; // this 8ill include a.php
include%once3",.php"9; // this 8ill include a.php aEain on 7indo8s!
?>
A5iso
$ersiones de +!+ para LindoEs anteriores a 8;7;3A no soportan el acceso remoto a archivos para
esta (unci-nA no (uncionar* ni activando si/uiera alloEZurlZ(open;
$er tam#i<n include./A re?uire./A re?uire>once./A get>re?uired>files./A get>included>files./A
readfile./A y 5irtual./;
Captulo !=. ;unciones
;unciones definidas por el usuario
@na (unci-n se puede de(inir con la siguiente sintaFisC
E'emplo !=(!. Psuedo c"digo para demostrar el uso de funciones
<?php
#unction #oo 3$arE%6, $arE%C, ..., $arE%n9
:
echo "Sunci&oacute;n de ejemplo.Vn";
return $ret=al;
;
?>
5ual/uier instrucci-n v*lida de P&P puede aparecer en el cuerpo de la (unci-nA incluso otras
(uniones y de(iniciones de clases;
+n P&P7A las (unciones de#en de(inirse antes de /ue se re(erencien; +n P&P8 no eFiste tal
re/uerimiento;E8cepto cuando una (unci-n es de(inida condicionalmente como en los e'emplos
siguientes;
5uando una (unci-n es de(inida condicionalmente como se puede ver en estos dos e'emplosA su
de(inici-n de#e ser procesada antes /ue sea llamada;
E'emplo !=(*. ;unciones Condicionales
<?php
$maIe#oo > true;
/W 7e canMt call #oo39 #rom here
since it doesnMt exist yet,
but 8e can call bar39 W/
bar39;
i# 3$maIe#oo9 :
#unction #oo 39
:
echo "4 donMt exist until proEram execution reaches me.Vn";
;
;
/W .o8 8e can sa#ely call #oo39
since $maIe#oo e=aluated to true W/
i# 3$maIe#oo9 #oo39;
#unction bar39
:
echo "4 exist immediately upon proEram start.Vn";
;
?>
E'emplo !=(7. ;unciones dentro de funciones
<?php
#unction #oo39
:
#unction bar39
:
echo "4 donMt exist until #oo39 is called.Vn";
;
;
/W 7e canMt call bar39 yet
since it doesnMt exist. W/
#oo39;
/W .o8 8e can call bar39,
#oo39Ms processesinE has
made it accessible. W/
bar39;
?>
P&P no soporta la rede(inici-n de (unciones previamente declaradas;
Nota- Los nom#res de (unciones se pueden llamar con mayusculas o minusculasA
aun/ue es una #uena costum#re el llamar a las (unciones tal y como aparecen en su
de(inici-n;
P&P7 no soporta un nBmero varia#le de par*metrosA aun/ue s) soporta par*metros por de(ecto >ver
$alores por de(ecto de de los par*metros para m*s in(ormaci-n?; P&P8 soporta am#osC ver Listas de
longitud varia#le de par*metros y las re(erencias de las (unciones func>num>args./A func>get>arg
./A y func>get>args./ para m*s in(ormaci-n;
Parmetros de las funciones
La in(ormaci-n puede suministrarse a las (unciones mediante la lista de par*metrosA una lista de
varia#les yDo constantes separadas por comas;
P&P soporta pasar par*metros por valor >el comportamiento por de(ecto?A por re(erenciaA y
par*metros por de(ecto; Listas de longitud varia#le de par*metros s-lo est*n soportadas en P&P8 y
posterioresX ver Listas de longitud varia#le de par*metros y la re(erencia de las (unciones
func>num>args./A func>get>arg./A y func>get>args./ para m*s in(ormaci-n; @n e(ecto similar
puede conseguirse en P&P7 pasando un array de par*metros a la (unci-nC
E'emplo !=(8. Pasando matrices a funciones
<?php
#unction taIes%array3$input9
:
echo "$input)2/ [ $input)6/ > ", $input)2/[$input)6/;
;
?>
Pasar parmetros por referencia
Por de(ectoA los par*metros de una (unci-n se pasan por valor >de manera /ue si cam#ias el valor del
argumento dentro de la (unci-nA no se ve modi(icado (uera de ella?; i deseas permitir a una (unci-n
modi(icar sus par*metrosA de#es pasarlos por re(erencia;
i /uieres /ue un par*metro de una (unci-n siempre se pase por re(erenciaA puedes anteponer un
ampersand >i? al nom#re del par*metro en la de(inici-n de la (unci-nC
E'emplo !=(9. Pasando parmetros de funciones por referencia
<?php
#unction add%some%extra3&$strinE9
:
$strinE .> M y alEo m&aacute;s.M;
;
$str > MEsto es una cadena, M;
add%some%extra3$str9;
echo $str; // &aca MEsto es una cadena, y alEo m&aacute;s.M
?>
Parmetros por defecto
@na (unci-n puede de(inir valores por de(ecto para los par*metros escalares estilo 5RRC
E'emplo !=(<. )so de parmetros por defecto en funciones
<?php
#unction maIeco##ee 3$type > "cappucino"9
:
return "Hacer una ta0a de $type.Vn";
;
echo maIeco##ee 39;
echo maIeco##ee 3"espresso"9;
?>
La salida del (ragmento anterior esC
Hacer una ta0a de cappucino.
Hacer una ta0a de espresso.
+l valor por de(ecto tiene /ue ser una eFpresi-n constanteA y no una varia#leA miem#ro de una clase
- llamada a una (unci-n;
Destacar /ue cuando se usan par*metros por de(ectoA estos tienen /ue estar a la derecha de cual/uier
par*metro sin valor por de(ectoX de otra manera las cosas no (uncionar*n de la (orma esperada;
5onsidera el siguiente (ragmento de c-digoC
E'emplo !=(=. )so incorrecto de parmetros por defecto en funciones
<?php
#unction maIeyoEurt 3$type > "acidophilus", $#la=our9
:
return "Haciendo un bol de $type $#la=our.Vn";
;

echo maIeyoEurt 3"mora"9; // .o #uncionar&aacute; de la manera
esperada
?>
La salida del e'emplo anterior esC
7arninE@ "issinE arEument C in call to maIeyoEurt39 in
/usr/local/etc/httpd/htdocs/php<test/#unctest.html on line 16
Haciendo un bol de mora.
% ahoraA comp*ralo conC
E'emplo !=(N. )so correcto de parmetros por defecto en funciones
<?php
#unction maIeyoEurt 3$#la=our, $type > "acidophilus"9
:
return "Haciendo un bol de $type $#la=our.Vn";
;

echo maIeyoEurt 3"mora"9; // #unciona como se esperaba
?>
La salida de este e'emplo esC
Haciendo un bol de acidophilus mora.
:ista de longitud 5ariable de parmetros
P&P8 soporta las listas de longitud varia#le de par*metros en las (unciones de(inidas por el usuario;
+s realmente (*cilA usando las (unciones func>num>args./A func>get>arg./A y func>get>args./;
No necesita de ninguna sintaFis especialA y las listas de par*metros pueden ser escritas en la llamada
a la (unci-n y se comportar*n de la manera esperada;
Ke5ol5iendo 5alores
Los valores se retornan usando la instrucci-n opcional return; Puede devolverse cual/uier tipo de
valorA incluyendo listas y o#'etos;
E'emplo !=(O. )sD de return./
<?php
#unction sQuare 3$num9
:
return $num W $num;
;
echo sQuare 319; // saca M6GM.
?>
No puedes devolver mBltiples valores desde una (unci-nA pero un e(ecto similar se puede conseguir
devolviendo una lista;
E'emplo !=(!D. Metornando una matri6 para obtener m4ltiples 5alores
<?php
#unction small%numbers39
:
return array 32, 6, C9;
;
list 3$0ero, $one, $t8o9 > small%numbers39;
?>
Para retornar una re(erencia desde una (unci-nA se tiene /ue usar el operador de re(erencias i tanto
en la declaraci-n de la (unci-n como en la asignaci-n del valor de retorno a una varia#leX
E'emplo !=(!!. Metornando una referencia desde una funci"n
<?php
#unction &returns%re#erence39
:
return $somere#;
;
$ne8re# >& returns%re#erence39;
?>
Para m*s in(ormaci-n so#re re(erenciasAconsultar +Fplicando Re(erencias;
;unciones 5ariables
P&P soporta el concepto de (unciones varia#leA esto signi(ica /ue si una varia#le tiene unos
par<ntesis aWadidos al (inalA P&P #uscar* una (unci-n con el mismo nom#re /ue la evaluaci-n de la
varia#leA e intentar* e'ecutarla; +ntre otras cosasA esto te permite implementar retrollamadas
>call#ac"s?A ta#las de (unciones y dem*s;
Las (unciones vari#les no (uncionar*n con construcciones del lengua'eA tal como echo./A print./A
unset./A isset./A empty./A include./A re?uire./ y derivados; e necesitar* usar una (unci-n propia
para utilizar cual/uiera de estos constructores como (unciones varia#les;
E'emplo !=(!*. E'emplo de funci"n 5ariable
<?php
#unction #oo39
:
echo "4n #oo39<br>Vn";
;
#unction bar3$arE > MM9
:
echo "4n bar39; arEument 8as M$arEM.<br>Vn";
;
// *his is a 8rapper #unction around echo
#unction echoit3$strinE9
:
echo $strinE;
;
$#unc > M#ooM;
$#unc39; // *his calls #oo39
$#unc > MbarM;
$#unc3MtestM9; // *his calls bar39
$#unc > MechoitM;
$#unc3MtestM9; // *his calls echoit39
?>
,am#i<n se puede llamar a un metodo de un o#'eto usando la caracter)stica varia#le de las
(unciones;
E'emplo !=(!7. E'emplo sobre el metodo 5ariable
<?php
class Soo
:
#unction (ar39
:
$name > MZarM;
$thisF>$name39; // *his calls the Zar39 method
;

#unction Zar39
:
echo "*his is Zar";
;
;
$#oo > ne8 Soo39;
$#uncname > "(ar";
$#ooF>$#uncname39; // *his calls $#ooF>(ar39
?>
$er tam#i<n call>user>func./A varia#le varia#les y function>e+ists./;
;unciones internas .incorporadas/
P&P tiene incorporadas muchas (unciones y construcciones; +Fisten tam#i<n (unciones /ue
re/uieren eFtensiones espec)(icas de P&P para /ue no (allen con un error (atal del tipo =unde(ined
(unction=; Por e'emploA para usar (unciones imageA tal como imagecreatetruecolor./A se necesita
compilar P&P con soporte para GD; O para usar mys?l>connect./ se necesita compilar P&P con
soporte para MyOL; +Fisten muchas (unciones en el nBcleo de P&P /ue se incluyen en cada
version de P&PA como las (unciones string y varia#le; @na llamada a la (unci-n phpinfo./ -
get>loaded>e+tensions./ mostrar* /ue eFtensiones est*n cargadas en tu versi-n de P&P; ,ener
tam#ien en cuenta /ue muchas eFtensiones se encuentran activadas por de(ecto y /ue el manual de
P&P se encuentra dividido en partesA segBn estas eFtensiones; $ea los cap)tulos con(iguraci-nA
instalaci-n y los capitulos so#re cada eFtensi-nA para o#tener in(ormaci-n so#re como con(igurar
vuestro P&P
La eFplicaci-n de como leer e intrerpretar un prototipo de (unci-n se encuentra en la secci-n del
manual titulada como leer la de(inici-n de una (unci-n; +s importante entender /ue devuelve una
(unci-n - si la (unci-n tra#a'a directamente en el valor entregado a la misma; Por e'emploA
str>replace./ devuelve una cadena modi(icada mientras /ue usort./ tra#a'a directamente en el valor
entregado a la misma; 5ada p*gina del manual contiene in(ormaci-n espec)(ica so#re las di(erentes
(unciones eFistentesA parametros /ue utilizanA valores devueltosA cam#ios de comportamientoA etc;
+s importante conocer estas di(erencias para poder escri#ir correctamente c-digo P&P;
$ea tam#i<n function>e+ists./A re(erencias de (uncionesA get>e+tension>funcs./ y dl./;
Captulo !N. Clases y Jb'etos .PHP 8/
class
@na clase es una colecci-n de varia#les y (unciones /ue tra#a'an con <stas varia#les; @na clase es
de(inida usando la siguiente sintaFisC
<?php
class Rarrito :
=ar $items; // 4tems en nuestro carrito de compras

// ,EreEar $num articulos de $artnr al carrito

#unction aEreEar%item3$artnr, $num9 :
$thisF>items)$artnr/ [> $num;
;

// *omar $num articulos de $artnr del carrito

#unction retirar%item3$artnr, $num9 :
i# 3$thisF>items)$artnr/ > $num9 :
$thisF>items)$artnr/ F> $num;
return true;
; else :
return #alse;
;
;
;
?>
+sto de(ine una clase llamada 5arrito /ue consiste de una matriz asociativa de art)culos en el carrito
y dos (unciones para agregar y eliminar elementos del carrito;
A5iso
NO es posi#le separar la de(inici-n de una clase en varios archivosA o #lo/ues P&P di(erentes; Lo
siguiente no (uncionaC
<?php
class prueba :
?>
<?php
#unction prueba39 :
print MZienM;
;
;
?>
Las siguientes notas de precauci-n son v*lidas para P&P 8;
Atenci"n
+l nom#re st#Class es usado internamente por Iend y es reservado; No puede tener una clase con
el nom#re st#Class en P&P;
Atenci"n
Los nom#res de (unci-n __sleep y __7a>eup son m*gicos en las clases P&P; No puede tener
(unciones con <stos nom#res en cual/uiera de sus clases a menos /ue desee usar la (uncionalidad
m*gica asociada con ellas; $ea m*s in(ormaci-n a continuaci-n;
Atenci"n
P&P reserva todos los nom#res de (unci-n /ue comienzan con ZZ como m*gicos; e recomienda
/ue no use nom#res de (unci-n con ZZ en P&P a menos /ue desee usar alguna (uncionalidad
m*gica documentada;
+n P&P 8A s-lo se permiten inicializadores constantes para varia#les ar; Para inicializar varia#les
con valores no2constantesA necesita una (unci-n de inicializaci-n /ue sea llamada autom*ticamente
cuando un o#'eto es construido a partir de la clase; ,al (unci-n es llamada constructora >vea m*s
in(ormaci-n a continuaci-n?;
<?php
class Rarrito :
/W .inEuna de estas expresiones #unciona en H 1. W/
=ar $#echa%hoy > date3"PFmFd"9;
=ar $nombre > $primer%nombre;
=ar $duenyo > MSred M . MAonesM;
/W ,unQue, las matrices Que contienen =alores constantes #uncionan W/
=ar $items > array3"(R'", "*("9;
;
/W ,si es como debe declararse. W/
class Rarrito :
=ar $#echa%hoy;
=ar $nombre;
=ar $duenyo;
=ar $items > array3"(R'", "*("9;
#unction Rarrito39 :
$thisF>#echa%hoy > date3"PFmFd"9;
$thisF>nombre > $-O?Z,O&)Mprimer%nombreM/;
/W etc. . . W/
;
;
?>
Las clases son tiposA es decirA son planos usados para varia#les reales; Necesita crear una varia#le
del tipo deseado con el operador ne7;
<?php
$carrito > ne8 Rarrito;
$carritoF>aEreEar%item3"62", 69;
$otro%carrito > ne8 Rarrito;
$otro%carritoF>aEreEar%item3"2J65", <9;
?>
+sto crea los o#'etos 'carr6to y 'otro_carr6toA am#os de la clase 5arrito; La (unci-n agregarZitem>?
del o#'eto 'carr6to es llamada para agregar 1 item del art)culo nBmero 13 al 'carr6to; e agregan 7
items del art)culo nBmero 3M14 al 'otro_carr6to;
Am#osA 'carr6to y 'otro_carr6toA tienen (unciones agregarZitem>?A retirarZitem>? y una varia#le
items; +stas son varia#les y (unciones di(erentes; Puede pensar so#re los o#'etos como algo similar
a las directorios en un sistema de archivos; +n un sistema de archivos es posi#le tener dos archivos
OE,"E.*X* di(erentesA siempre y cuando est<n en directorios di(erentes; ,al y como con los
directoriosA en donde es necesario escri#ir las rutas de nom#res completas para llegar a cada archivo
a partir del directorio del nivel superiorA es necesario especi(icar el nom#re completo de la (unci-n
/ue desea llamarX en t<rminos de P&PA el directorio de nivel superior ser)a el espacio de nom#res
glo#alA y el separador de ruta ser)a =&; De tal modo /ue los nom#res 'carr6to=&6tems y
'otro_carr6to=&6tems hacen re(erencia a dos varia#les di(erentes; Note /ue la varia#le se llama
'carr6to=&6temsA no 'carr6to=&'6temsA es decirA un nom#re de varia#le en P&P solo tiene un Bnico
signo de d-lar;
<?php
// correcto, un solo $
$carritoF>items > array3"62" >> 69;
// in=alido, ya Que $carritoF>$items se con=ierte en $carritoF>""
$carritoF>$items > array3"62" >> 69;
// correcto, pero puede o no ser lo Que se busca@
// $carritoF>$mi=ar se con=ierte en $carritoF>items
$mi=ar > MitemsM;
$carritoF>$mi=ar > array3"62" >> 69;
?>
Al interior de una de(inici-n de claseA no se conoce el nom#re #a'o el /ue el o#'eto ser* accesi#le en
su programaC en el momento en /ue la clase 5arrito (ue escritaA no se conoc)a /ue el o#'eto se
llamar)a 'carr6to u 'otro_carr6to m*s adelante; Por lo tantoA no es posi#le escri#ir 'carr6to=&6tems
al interior de la clase 5arrito; +n su lugarA para poder acceder a sus propias (unciones y varia#les
desde el interior de una claseA es posi#le usar la pseudo2varia#le 'th6sA la cual puede leerse como Hmi
propioH o Hel o#'eto actualH; Por lo tantoA H'th6s=&6tems)'num_art. R^ 'numH puede leerse como
Hagregar 'num al contador 'num_art de mi propia matriz de itemsHA o Hagregar 'num al contador
'num_art de la matriz de items al interior del o#'eto actualH;
Nota- +Fisten algunas (unciones interesantes /ue mane'an clases y o#'etos; Puede /ue
/uiera echar un vistazo a las Funciones de 5laseDO#'eto;
extends
5on (recuencia es necesario tener clases con varia#les y (unciones similares a otra clase eFistente;
De hechoA es una #uena pr*ctica de(inir una clase gen<rica /ue pueda ser usada en todos sus
proyectos y adaptar <sta clase para las necesidades de cada uno de sus proyectos espec)(icos; Para
(acilitar estoA las clases pueden ser eFtensiones de otras clases; La clase eFtendida o derivada tiene
todas las varia#les y (unciones de la clase #ase >esto es llamado HherenciaHA a pesar del hecho de /ue
nadie muera? y lo /ue se agregue en la de(inici-n eFtendida; No es posi#le su#straer de una claseA es
decirA remover la de(inici-n de cual/uier (unci-n o varia#le eFistente; @na clase eFtendida siempre
depende de una clase #ase BnicaA lo /ue /uiere decir /ue no se soporta herencia mBltiple; Las clases
son eFtendidas usando la pala#ra clave HeFtendsH;
<?php
class Rarrito%Ron%.ombre extends Rarrito :
=ar $duenyo;

#unction de#inir%duenyo 3$nombre9 :
$thisF>duenyo > $nombre;
;
;
?>
+sto de(ine una clase 5arritoZ5onZNom#re /ue tiene todas las varia#les y (unciones de 5arritoA m*s
una varia#le adicional '#uen?o y una (unci-n adicional de(inirZduenyo>?; e crea un carrito con
nom#re en la (orma usual y ahora es posi#le de(inir y o#tener el dueWo del carrito; Aun es posi#le
usar las (unciones normales de un carrito so#re los carritos con nom#reC
<?php
$carrito%n > ne8 Rarrito%Ron%.ombre; // Rrear un carrito con nombre
$carrito%nF>de#inir%duenyo3"Iris"9; // .ombrar el carrito
print $carrito%nF>duenyo; // imprimir el nombre del duenyo
$carrito%nF>aEreEar%item3"62", 69; // 3#uncionalidad heredada de carrito9
?>
+sto tam#i<n se conoce como una relaci-n =padre2hi'o=; e crea una claseA padreA y se usa e8ten#s
para crear una clase 1asa#a en la clase padreC la clase hi'a; +s posi#le incluso usar esta nueva clase
hi'a y crear otra clase #asada en esta clase hi'a;
Nota- fLas clases de#en ser de(inidas antes de ser usadasa i desea /ue la clase
Carr6to_Con_Nom1re eFtienda la clase Carr6toA tendr* /ue de(inir la clase Carr6to
primero; i desea crear otra clase llamada Carr6to_amar6llo_con_nom1re #asada en la
clase Carr6to_Con_Nom1reA de#e de(inir Carr6to_Con_Nom1re primero; ResumiendoC
el orden en /ue se de(inen las clases es importante;
Constructores
Atenci"n
+n P&P 7 y P&P 8 los constructores se comportan de (orma di(erente; La sem*ntica de P&P 8 se
pre(iere considera#lemente;
Los constructores son (unciones en una clase /ue son llamadas autom*ticamente cuando se crea una
nueva instancia de una clase con ne7; +n P&P 7A una (unci-n se convierte en constructor si tiene el
mismo nom#re /ue la clase; +n P&P 8A una (unci-n se convierte en constructor cuando tiene el
mismo nom#re /ue la clase en donde es de(inida 2 la di(erencia es sutilA pero crucial >vea m*s
adelante?;
<?php
// Sunciona en H < y H 1.
class ,uto%Rarrito extends Rarrito :
#unction ,uto%Rarrito39 :
$thisF>aEreEar%item3"62", 69;
;
;
?>
+sto de(ine una clase AutoZ5arrito /ue es un 5arrito m*s un constructor /ue inicializa el carrito con
un item del nBmero de art)culo =13= cada vez /ue un nuevo AutoZ5arrito se crea con =neE=; Los
constructores pueden reci#ir argumentos y tales argumentos pueden ser opcionalesA lo /ue los hace
mucho m*s Btiles; Para poder usar aun la clase sin par*metrosA todos los par*metros de#en ser
opcionalesA al proveer valores predeterminados;
<?php
// Sunciona en H < y H 1.
class Ronstructor%Rarrito extends Rarrito :
#unction Ronstructor%Rarrito3$item > "62", $num > 69 :
$thisF>aEreEar%item 3$item, $num9;
;
;

// Romprar lo mismo de antes.

$carrito%predeterminado > ne8 Ronstructor%Rarrito;

// Romprar esta =e0 en serio...

$carrito%di#erente > ne8 Ronstructor%Rarrito3"C2", 6H9;
?>
,am#i<n puede usar el operador W para callar los errores /ue ocurren en el constructorA p;e';
Wne7;
Atenci"n
+n P&P 7A las clases derivadas y los constructores tienen un nBmero de limitaciones; Lo siguientes
e'emplos de#en ser le)dos cuidadosamente para entender esas limitaciones;
<?php
class , :
#unction ,39 :
echo "&oy el constructor de ,.<br />Vn";
;
;
class Z extends , :
#unction R39 :
echo "&oy una #unci&oacute;n reEular.<br />Vn";
;
;
// ne se esta llamando un constructor en H <.
$b > ne8 Z;
?>
+n P&P 7A no se est* llamando un constructor en el e'emplo anterior; La regla en P&P 7 esC H@n
constructor es una (unci-n del mismo nom#re /ue la clase;H; +l nom#re de la clase es BA y no hay
una (unci-n llamada B>? en la clase B; Nada ocurre;
+sto se corrige en P&P 8 al introducir otra reglaC i una clase no tiene constructorA el constructor de
la clase #ase es llamadoA si eFiste; +l e'emplo anterior ha#r)a impreso Hoy el constructor de A;`#r D
_H en P&P 8;
<?php
class ,
:
#unction ,39
:
echo "&oy el constructor de ,.<br />Vn";
;
#unction Z39
:
echo "&oy una #unci&oacute;n reEular llamada Z en la clase ,.<br />Vn";
echo ".o soy un constructor en ,.<br />Vn";
;
;
class Z extends ,
:
#unction R39
:
echo "&oy una #unci&oacute;n reEular.<br />Vn";
;
;
// Esto llama a Z39 como un constructor.
$b > ne8 Z;
?>
+n P&P 7A la (unci-n B>? en la clase A se convertir* de repente en un constructor en la clase BA aun
cuando nunca (ue esa la intenci-n; La regla en P&P 7 esC H@n constructor es una (unci-n con el
mismo nom#re de la clase;H; A P&P 7 no le importa si la (unci-n est* siendo de(inida en la clase BA
o si ha sido heredada;
+sto se corrige en P&P 8 modi(icando la regla aC H@n constructor es una (unci-n del mismo nom#re
de la clase en la /ue se de(ine;H; Por lo tantoA en P&P8A la clase B no tendr)a una (unci-n
constructora propia y el constructor de la clase #ase hu#iera sido llamadoA imprimiendo Hoy el
constructor de A;`#r D_H;
Atenci"n
Ni P&P 7 o P&P 8 llaman constructores de la clase #ase autom*ticamente desde un constructor de
una clase derivada; +s su responsa#ilidad propagar la llamada a constructores m*s arri#a en la
'erar/u)a cuando sea apropiado;
Nota- No hay destructores en P&P 7 o P&P 8; Puede usar register>shutdo3n>function
./ en su lugar para emular la mayor)a de e(ectos de los destructores;
Los destructores son (unciones /ue son llamadas autom*ticamente cuando un o#'eto es destruidoA ya
sea con unset./ o simplemente al (inalizarse su conteFto; No hay destructores en P&P;
::
Atenci"n
Lo siguiente es v*lido Bnicamente para P&P 8 y versiones posteriores;
Algunas veces es Btil re(erirse a (unciones y varia#les en clases #ase o re(erirse a (unciones en
clases /ue no tienen aun alguna instancia; +l operador CC es usado en tales casos;
<?php
class , :
#unction ejemplo39 :
echo "&oy la #unci&oacute;n oriEinal ,@@ejemplo39.<br />Vn";
;
;
class Z extends , :
#unction ejemplo39 :
echo "&oy la #unci&oacute;n rede#inida Z@@ejemplo39.<br />Vn";
,@@ejemplo39;
;
;
// no hay un objeto de la clase ,.
// esto imprime
// &oy la #uncion oriEinal ,@@ejemplo39.<br />
,@@ejemplo39;
// crear un objeto de clase Z.
$b > ne8 Z;
// esto imprime
// &oy la #uncion rede#inida Z@@ejemplo39.<br />
// &oy la #uncion oriEinal ,@@ejemplo39.<br />
$bF>ejemplo39;
?>
+l e'emplo anterior llama la (unci-n e'emplo>? en la clase AA pero no hay un o#'eto de la clase AA as)
/ue no podemos escri#ir Ya2_e'emplo>? o algo seme'ante; +n su lugar llamamos e'emplo>? como
una H(unci-n de claseHA es decirA una (unci-n de la clase mismaA no de un o#'eto de tal clase;
+Fisten (unciones de claseA pero no eFisten varia#les de clase; De hechoA no hay un o#'eto en
a#soluto al momento de la llamada; Por lo tantoA una (unci-n de clase no puede usar varia#les del
o#'eto >pero puede usar varia#les locales y glo#ales?A y no puede usar 'th6s;
+n el e'emplo anteriorA la clase B rede(ine la (unci-n e'emplo>?; La de(inici-n original en la clase A
es cu#ierta y ya no se encuentra disponi#leA a menos /ue haga re(erencia espec)(icamente a la
implementaci-n de e'emplo>? en la clase A usando el operador CC; +scri#a ACCe'emplo>? para hacerlo
>en realidadA de#er)a usar parentCCe'emplo>?A como se muestra en la siguiente secci-n?;
+n este conteFtoA hay un o#'eto actual y puede tener varia#les de o#'eto; Por lo tantoA cuando se usa
D+D+ +L .N,+R.OR de una (unci-n de o#'etoA es posi#le usar 'th6s y varia#les de o#'eto;
parent
+s posi#le /ue se encuentre escri#iendo c-digo /ue hace re(erencia a varia#les y (unciones de las
clases #ase; +sto es particularmente cierto si su clase derivada es una re(inaci-n o especializaci-n
del c-digo en su clase #ase;
+n lugar de usar el nom#re literal de la clase #ase en su c-digoA de#er)a usar el nom#re especial
parentA el cual hace re(erencia al nom#re de su clase #ase tal y como se entrega en la declaraci-n
e8ten#s de su clase; Al hacer estoA evita usar el nom#re de su clase #ase en m*s de un lugar; Llegado
el caso de /ue su *r#ol de 'erar/u)a cam#ie durante la implementaci-nA el cam#io se puede e(ectuar
con (acilidad simplemente modi(icando la declaraci-n e8ten#s de su clase;
<?php
class , :
#unction ejemplo39 :
echo "&oy ,@@ejemplo39 y o#re0co #uncionalidad b&aacute;sica.<br />Vn";
;
;
class Z extends , :
#unction ejemplo39 :
echo "&oy Z@@ejemplo39 y o#re0co #uncionalidad adicional.<br />Vn";
parent@@ejemplo39;
;
;
$b > ne8 Z;
// Esto hace la llamada a Z@@ejemplo39, la cual llama a su =e0 a ,@@ejemplo39.
$bF>ejemplo39;
?>
,eriaci"n de ob'etosE ob'etos en sesiones
Nota- +n P&P 7A los o#'etos perd)an su asociaci-n de clase a lo largo del proceso de
seriaci-n y decodi(icaci-n; La varia#le resultante es de tipo o#'etoA pero no tiene clase ni
m<todosA de modo /ue es inBtil >se ha convertido en algo como una matriz con una
sintaFis curiosa?;
Atenci"n
La siguiente in(ormaci-n es v*lida para P&P 8 Bnicamente;
seriali6e./ devuelve una cadena /ue contiene una representaci-n tipo secuencia2de2#ytes de
cual/uier valor /ue pueda ser almacenado en P&P; unseriali6e./ puede causar /ue <stas cadenas
recreen los valores de varia#le originales; @sando el m<todo de seriaci-n para guardar un o#'eto
guardar* todas las varia#les en un o#'eto; Las (unciones en un o#'eto no se guardar*nA s-lo el
nom#re de la clase;
Para poder usar unseriali6e./ con un o#'etoA la clase de ese o#'eto necesita ser de(inida; +s decirA si
tiene un o#'eto 'a de la clase A en pagina1;php y codi(ica <sta varia#leA o#tendr* una cadena /ue
hace re(erencia a la clase A y contiene todos los valores de varia#les contenidas en 'a; i desea
tener la capacidad de revertir el proceso de seriaci-n en pagina0;phpA recreando 'a de la clase AA la
de(inici-n de la clase A de#e estar presente en pagina0;php; +sto puede conseguirse por e'emplo
almacenando la de(inici-n de la clase A en un archivo de inclusi-n e incluy<ndolo tanto en
pagina1;php como en pagina0;php;
<?php
// clase%a.inc@

class , :
=ar $uno > 6;

#unction mostrar%uno39 :
echo $thisF>uno;
;
;

// paEina6.php@
include3"clase%a.inc"9;

$a > ne8 ,;
$s > seriali0e3$a9;
// almacenar $s en alEuna parte en donde paEinaC.php lo pueda encontrar.
$#p > #open3"almacenamiento", "8"9;
#8rite3$#p, $s9;
#close3$#p9;
// paEinaC.php@

// esto es necesaria para re=ertir la seriacion apropiadamente.
include3"clase%a.inc"9;
$s > implode3"", ^#ile3"almacenamiento"99;
$a > unseriali0e3$s9;
// ahora use la #uncion mostrar%uno39 del objeto $a.
$aF>mostrar%uno39;
?>
i est* usando sesiones y usa session>register./ para registrar o#'etosA <stos o#'etos son seriados
autom*ticamente al (inal de cada p*gina P&PA y son decodi(icados de vuelta autom*ticamente en
cada una de las siguientes p*ginas; +sto /uiere decirA #*sicamenteA /ue tales o#'etos pueden
aparecer en cual/uiera de sus p*ginas una vez hacen parte de su sesi-n;
+s #astante recomenda#le /ue incluya las de(iniciones de clase de todos esos o#'etos registrados en
todas sus p*ginasA incluso si no va a usar realmente <stas clases en todas sus p*ginas; i no lo hace y
un o#'eto est* siendo decodi(icado sin /ue su de(inici-n de clase est< presenteA perder* su
asociaci-n de clase y se convertir* en un o#'eto de la clase st#Class sin ninguna (unci-n disponi#leA
es decirA se har* pr*cticamente inBtil;
De modo /ue si en el e'emplo anterior 'a se hac)a parte de una sesi-n e'ecutando sess6on_reE6ster
L*a*MA de#er)a inclu)rse el archivo clase_a.6nc en todas sus p*ginasA no s-lo en pagina1;php y
pagina0;php;
:as funciones mgicas __sleep y __wakeup
seriali6e./ revisa si su clase tiene una (unci-n con el nom#re m*gico __sleep; De ser as)A esa
(unci-n es e'ecutada antes de cual/uier intento de seriaci-n; Puede limpiar el o#'eto y su intenci-n
es /ue devuelva una matriz con los nom#res de todas las varia#les de ese o#'eto /ue de#er)an ser
seriadas;
+l uso planeado para __sleep es cerrar todas las coneFiones de #ases de datos /ue pueda tener el
o#'etoA aplicando datos pendientes o realizando tareas similares de limpieza; AsimismoA la (unci-n
resulta Btil si tiene o#'etos #astante grandes /ue no necesitan ser guardados en su totalidad;
De (orma seme'anteA unseriali6e./ revisa por la presencia de una (unci-n con el nom#re m*gico
__7a>eup; i est* presenteA <sta (unci-n puede reconstruir cual/uier recurso /ue el o#'eto pueda
tener;
+l uso planeado para __7a>eup es reesta#lecer cual/uier coneFi-n con #ases de datos /ue hayan
podido perderse durante la seriaci-n y realizar otras tareas de reinicializaci-n;
:as referencias al interior del constructor
5rear re(erencias al interior del constructor puede llevar a resultados con(usos; +sta secci-n tipo2
tutorial le ayuda a evitar pro#lemas;
<?php
class Soo :
#unction Soo3$nombre9 :
// crear una re#erencia al interior de la matri0 Elobal $re#Elobal
Elobal $re#Elobal;
$re#Elobal)/ > &$this;
// de#inir el nombre al =alor pasado
$thisF>de#inir.ombre3$nombre9;
// e imprimirlo
$thisF>imprimir.ombre39;
;
#unction imprimir.ombre39 :
echo "<br />", $thisF>nombre;
;

#unction de#inir.ombre3$nombre9 :
$thisF>nombre > $nombre;
;
;
?>
Revisemos si eFiste una di(erencia entre '1ar1A /ue ha sido creado usando el operador de copia : y
'1ar2 /ue ha sido creado usando el operador de re(erencia :];;;
<?php
$bar6 > ne8 Soo3Mde#inido en el constructorM9;
$bar6F>imprimir.ombre39;
$re#Elobal)2/F>imprimir.ombre39;
/W salida@
de#inido en el constructor
de#inido en el constructor
de#inido en el constructor W/
$barC >& ne8 Soo3Mde#inido en el constructorM9;
$barCF>imprimir.ombre39;
$re#Elobal)6/F>imprimir.ombre39;
/W salida@
de#inido en el constructor
de#inido en el constructor
de#inido en el constructor W/
?>
Aparentemente no hay ninguna di(erenciaA pero en realidad hay una #astante importanteC '1ar1 y
're9Elo1al)0. ZNOZ son re(erenciadosA NO son la misma varia#le; +sto se de#e a /ue =neE= no
devuelve una re(erencia por de(ectoA en su lugar devuelve una copia;
Nota- No eFiste una p<rdida de rendimiento >ya /ue desde P&P 8 se usa el conteo de
re(erencias? al devolver copias en lugar de re(erencias; Al contrarioA con (recuencia es
me'or tra#a'ar simplemente con copias en lugar de re(erenciasA ya /ue crear re(erencias
toma cierto tiempo mientras /ue crear copias pr*cticamente no toma nada de tiempo >a
menos /ue ninguna de ellas sea una matriz u o#'eto grande y una de ellas se modi(i/ue y
luego las otras su#secuentementeA entonces ser)a #uena idea usar re(erencias para
modi(icarlas todas al mismo tiempo?;
Para pro#ar lo /ue se dice m*s arri#aA veamos el siguiente c-digo;
<?php
// ahora cambiaremos el nombre. Que espera Que pase?
// puede Que espere Que tanto $bar6 como $re#Elobal)2/ cambien sus nombres...
$bar6F>de#inir.ombre3Mde#inido desde a#ueraM9;
// como se ha mencionado antes, ese no es el caso.
$bar6F>imprimir.ombre39;
$re#Elobal)2/F>imprimir.ombre39;
/W salida@
de#inido desde a#uera
de#inido en el constructor W/
// =eamos Que cambia entre $barC y $re#Elobal)6/
$barCF>de#inir.ombre3Mde#inido desde a#ueraM9;
// por suerte, no solo son iEuales, son la misma =ariable, de modo Que
// $barCF>nombre y $re#Elobal)6/F>nombre son el mismo tambien
$barCF>imprimir.ombre39;
$re#Elobal)6/F>imprimir.ombre39;
/W salida@
de#inido desde a#uera
de#inido desde a#uera W/
?>
Otro e'emplo (inalA intente entenderlo;
<?php
class , :
#unction ,3$i9 :
$thisF>=alor > $i;
// intente descubrir porQue no necesitamos una re#erencia aQui
$thisF>b > ne8 Z3$this9;
;
#unction crear'e#39 :
$thisF>c > ne8 Z3$this9;
;
#unction echo(alor39 :
echo "<br />","clase ",Eet%class3$this9,M@ M,$thisF>=alor;
;
;
class Z :
#unction Z3&$a9 :
$thisF>a > &$a;
;
#unction echo(alor39 :
echo "<br />","clase ",Eet%class3$this9,M@ M,$thisF>aF>=alor;
;
;
// intente entender porQue usar una simple copia produciria
// un resultado no deseado en la linea marcada con W
$a >& ne8 ,3629;
$aF>crear'e#39;
$aF>echo(alor39;
$aF>bF>echo(alor39;
$aF>cF>echo(alor39;
$aF>=alor > 66;
$aF>echo(alor39;
$aF>bF>echo(alor39; // W
$aF>cF>echo(alor39;
?>
+ste e'emplo producir* la salidaC
clase ,@ 62
clase Z@ 62
clase Z@ 62
clase ,@ 66
clase Z@ 66
clase Z@ 66
Comparaci"n de ob'etos
+n P&P 8A los o#'etos son comparados en una (orma muy simpleC Dos instancias de o#'eto son
iguales si tienen los mismos atri#utos y valoresA y son instancias de la misma clase; Reglas similares
se aplican cuando se comparan dos o#'etos usando el operador de identidad >:::?;
i e'ecut*ramos el c-digo del siguiente e'emploC
E'emplo !N(!. E'emplo de comparaci"n de ob'etos en PHP 8
<?php
#unction bool%a%cadena3$bool9 :
i# 3$bool >>> #alse9 :
return MS,O&EM;
; else :
return M*'+EM;
;
;
#unction comparar?bjetos3&$o6, &$oC9 :
echo Mo6 >> oC @ M.bool%a%cadena3$o6 >> $oC9."Vn";
echo Mo6 !> oC @ M.bool%a%cadena3$o6 !> $oC9."Vn";
echo Mo6 >>> oC @ M.bool%a%cadena3$o6 >>> $oC9."Vn";
echo Mo6 !>> oC @ M.bool%a%cadena3$o6 !>> $oC9."Vn";
;
class Zandera :
=ar $bandera;
#unction Zandera3$bandera>true9 :
$thisF>bandera > $bandera;
;
;
class ZanderaRambiante extends Zandera :
#unction encender39 :
$thisF>bandera > true;
;
#unction apaEar39 :
$thisF>bandera > #alse;
;
;
$o > ne8 Zandera39;
$p > ne8 Zandera3#alse9;
$Q > ne8 Zandera39;
$r > ne8 ZanderaRambiante39;
echo "Romparar instancias creadas con los mismos par&aacute;metrosVn";
comparar?bjetos3$o, $Q9;
echo "VnRomparar instancias creadas con par&aacute;metros di#erentesVn";
comparar?bjetos3$o, $p9;
echo "VnRomparar una instancia de una clase padre con una de una subclaseVn";
comparar?bjetos3$o, $r9;
?>
$eremosC
Romparar instancias creadas con los mismos paremetros
o6 >> oC @ *'+E
o6 !> oC @ S,O&E
o6 >>> oC @ *'+E
o6 !>> oC @ S,O&E
Romparar instancias creadas con paremetros di#erentes
o6 >> oC @ S,O&E
o6 !> oC @ *'+E
o6 >>> oC @ S,O&E
o6 !>> oC @ *'+E
Romparar una instancia de una clase padre con una de una subclase
o6 >> oC @ S,O&E
o6 !> oC @ *'+E
o6 >>> oC @ S,O&E
o6 !>> oC @ *'+E
Oue es la salida /ue podemos esperar dadas las reglas de comparaci-n descritas anteriormente; olo
las instancias con los mismos valores para sus atri#utos y de la misma clase son consideradas
iguales e id<nticas;
.ncluso en los casos en donde tenemos composici-n de o#'etosA se aplican las mismas reglas de
comparaci-n; +n el e'emplo siguiente creamos una clase contenedora /ue almacena una matriz
asociativa de o#'etos 1andera;
E'emplo !N(*. Comparaci"n de ob'etos compuestos en PHP 8
<?php
class RonjuntoZanderas :
=ar $conjunto;
#unction RonjuntoZanderas3$matri0Zanderas > array399 :
$thisF>conjunto > $matri0Zanderas;
;
#unction aEreEarZandera3$nombre, $bandera9 :
$thisF>conjunto)$nombre/ > $bandera;
;
#unction eliminarZandera3$nombre9 :
i# 3array%Iey%exists3$nombre, $thisF>conjunto99 :
unset3$thisF>conjunto)$nombre/9;
;
;
;
$u > ne8 RonjuntoZanderas39;
$uF>aEreEarZandera3Mbandera6M, $o9;
$uF>aEreEarZandera3MbanderaCM, $p9;
$= > ne8 RonjuntoZanderas3array3Mbandera6M>>$Q, MbanderaCM>>$p99;
$8 > ne8 RonjuntoZanderas3array3Mbandera6M>>$Q99;
echo "Vn?bjetos compuestos u3o,p9 y =3Q,p9Vn";
comparar?bjetos3$u, $=9;
echo "Vnu3o,p9 y 83Q9Vn";
comparar?bjetos3$u, $89;
?>
5osa /ue entrega la salida esperadaC
?bjetos compuestos u3o,p9 y =3Q,p9
o6 >> oC @ *'+E
o6 !> oC @ S,O&E
o6 >>> oC @ *'+E
o6 !>> oC @ S,O&E
u3o,p9 y 83Q9
o6 >> oC @ S,O&E
o6 !> oC @ *'+E
o6 >>> oC @ S,O&E
o6 !>> oC @ *'+E
Captulo !O. Clases y Jb'etos .PHP 9/
Introducci"n
+n P&P 4 hay un nuevo modelo de O#'etos; +l mane'o de P&P de o#'etos ha sido reescrito por
completoA permitiendo un me'or desempeWo y mas caracter)sticas;
:as 1ases
clase
5ada de(inici-n de case empieza con la pala#ra =class=A seguida por un nom#re de claseA el cual
puede ser cual/uier nom#re /ue no est< en la lista de pala#ras reserved en P&P; eguida por un par
de llaves curvasA las cuales contienen la de(inici-n de los miem#ros de la case y los m<todos; @na
seudo varia#le 'th6s est* disponi#le cuando un m<todo es llamado dentro del conteFto de un o#'eto;
'th6s es una re(erencia al o#'eto /ue se est* usando >usualmente el o#'eto al /ue el m<todo
perteneceA pero puede ser otro o#'etoA si un m<todo es llamado est*ticamente desde el conteFto de
un o#'eto secundario?; +st es ilustrado en el siguiente e'emploC
<?php
class ,
:
#unction #oo39
:
i# 3isset3$this99 :
echo M$this is de#ined 3M;
echo Eet%class3$this9;
echo "9Vn";
; else :
echo "V$this is not de#ined.Vn";
;
;
;
class Z
:
#unction bar39
:
,@@#oo39;
;
;
$a > ne8 ,39;
$aF>#oo39;
,@@#oo39;
$b > ne8 Z39;
$bF>bar39;
Z@@bar39;
?>
+l resultado del e'emplo seriaC
$this is de#ined 3a9
$this is not de#ined.
$this is de#ined 3b9
$this is not de#ined.
E'emplo !O(!. Kefinici"n simple de una clase
<?php
class &impleRlass
:
// member declaration
public $=ar > Ma de#ault =alueM;
// method declaration
public #unction display(ar39 :
echo $thisF>=ar;
;
;
?>
Nue5o ob'eto
Para crear una instancia de un o#'etoA un nuevo o#'eto de#e ser creado y asignado a una varia#le; @n
o#'eto siempre ser* asignado cuando se crea un o#'eto nuevo a menos /ue el o#'eto tenga un
constructor de(inido /ue arro'e una eFcepci-n en caso de error;
E'emplo !O(*. Creando una instancia
<?php
$instance > ne8 &impleRlass39
?>
5uando se asigna una instancia de un o#'eto previamente creado a una nueva varia#leA la nueva
varia#le accesar* la misma instancia /ue la del o#'eto a la /ue (ue asignada; +ste comportamiento es
el mismo cuando se pasan instancias a una (unci-n; @na nueva instancia de un o#'eto previamente
creado puede ser hecho clonandolo;
E'emplo !O(7. Asignamiento de Jb'eto
<?php
$assiEned > $instance;
$re#erence >& $instance;
$instanceF>=ar > M$assiEned 8ill ha=e this =alueM;
$instance > null; // $instance and $re#erence become null
=ar%dump3$instance9;
=ar%dump3$re#erence9;
=ar%dump3$assiEned9;
?>
+l resultado del e'emplo seriaC
.+OO
.+OO
object3&impleRlass9U6 369 :
)"=ar"/>>
strinE3<29 "$assiEned 8ill ha=e this =alue"
;
E+tendiendo ob'etos
@na clase puede heredar m<todos y miem#ros de otra clase usando la pala#ra HeFtendsH en la
declaraci-n; No es posi#le eFtender de mBltiples clasesA una clase puede heredar solo de una clase
#ase;
Los m<todos de herencia y sus miem#ros pueden ser evitadosA redeclarandolos con el mismo
nom#re con el /ue los de(ini- la clase padreA a menos /ue la clase padre haya de(inido un m<todo
como (inal; +s posi#le accesar a los m<todos o miem#ros redeclarados haciendo re(erencia a ellos
con parentCC
E'emplo !O(8. Herencia de ,impleClass
<?php
class ExtendRlass extends &impleRlass
:
// 'ede#ine the parent method
#unction display(ar39
:
echo "ExtendinE classVn";
parent@@display(ar39;
;
;
$extended > ne8 ExtendRlass39;
$extendedF>display(ar39;
?>
+l resultado del e'emplo seriaC
ExtendinE class
a de#ault =alue
Auto carga de Jb'etos
Muchos desarrolladores /ue escri#en aplicaciones con programaci-n orientada a o#'etos crean un
archivo (uente P&P por cada de(inici-n de clase; @na de las molestias m*s grandes es tener /ue
escri#ir una larga lista de includes necesarios al principio de cada script >uno pra cada clase?;
+n P&P 4A esto ya no es necesario; Puede de(inir una (unci-n ZZautoload la cual es llamada
autom*ticamente en caso de /ue intente usar una clase /ue no ha sido de(inida aBn; Al llamar esta
(unci-n la e'ecuci-n del script da una Bltima oportunidad de cargar la clase antes de /ue P&P (alle
con un error;
Nota- Las eFcepciones arro'adas en la (unci-n ZZautoload no pueden ser capturadas en
el #lo/ue catch y resultan en el despliegue de un error (atal;
E'emplo !O(9. E'emplo de auto carga
+ste e'emplo intenta cargar las clases M?Class1 y M?Class2 de los archivos "yRlass6.php y
"yRlassC.php respectivamente;
<?php
#unction %%autoload3$class%name9 :
reQuire%once $class%name . M.phpM;
;
$obj > ne8 "yRlass639;
$objC > ne8 "yRlassC39;
?>
Constructores y Kestructores
Constructor
void >>construct > PmiFed args PA ;;;QQ ?
P&P 4 permite a los desarrolladores declarar m<todos constructores para las clases; Las clases /ue
tiene un m<todo constructor llaman a este m<todo cada vez /ue se crea un nuevo o#'etoA para
cual/uier inicializaci- /ue el o#'eto puede necesitar antes de ser usado;
Nota- Los constructores padres no son llamados implicitamente si la clase hi'o de(ine
un constructor; Para poder e'ecutar el constructor de la clase padreA se de#e hacer una
llamada a parent-->>construct./ dentro del constructor de la clase hi'o;
E'emplo !O(<. )sando constructores unificados
<?php
class ZaseRlass :
#unction %%construct39 :
print "4n ZaseRlass constructorVn";
;
;
class &ubRlass extends ZaseRlass :
#unction %%construct39 :
parent@@%%construct39;
print "4n &ubRlass constructorVn";
;
;
$obj > ne8 ZaseRlass39;
$obj > ne8 &ubRlass39;
?>
Para tener compati#ilidad con versiones anterioresA si P&P 4 no encuentra una (unci-n >>construct
./ para una clase dadaA #uscar* la (orma de la (unci-n del constructor /ue se usa#a anteriormente por
el nom#re de la clase; +(ectivamenteA esto signi(ica /ue el Bnico caso /ue puede tener
compati#ilidad es si la clase tiene un m<todo llamado >>construct./ el cual (ue usado para
sem*nticas di(erentes;
Kestructores
void >>destruct > void ?
P&P 4 introduce un concepto de destructor similar a a/uellos de otros lengua'es de programaci-n
orientada a o#'etosA tal como 5RR; +l m<todo destructor ser* llamado tan pronto como todas las
re(erencias a un o#'eto en particular sean removidas o cuando el o#'eto sea eFpl)citamente
destruido;
E'emplo !O(=. E'emplo de Kestructor
<?php
class "yLestructableRlass :
#unction %%construct39 :
print "4n constructorVn";
$thisF>name > ""yLestructableRlass";
;
#unction %%destruct39 :
print "LestroyinE " . $thisF>name . "Vn";
;
;
$obj > ne8 "yLestructableRlass39;
?>
5omo los constructoresA los destructores de la clase padre no ser*n llamados eFpl)citamente por el
compilador; Para e'ecutar un destructor padreA se de#e tener una llamada eFpl)cita a
parent-->>destruct./ en el cuerpo del destructor;
Cisibilidad
La visi#ilidad de una propiedad o m<todo puede ser de(ionida al anteponerle a la declaraci-n con las
pala#ras reservadasC pu#licA protected o private; Los elementos declarados con Pu#lic pueden ser
accesados en todos lados; los Protected limitan el acceso a las clases heredadas >y alas clase /ue
de(ine el elemento?; los Private limitan la visi#ilidad solo a la clase /ue lo de(ini-;
Cisibilidad de los miembros
Los miem#ros de la clase de#e estar de(inidos con pu#licA private o protected;
E'emplo !O(N. Keclaraci"n de miembros
<?php
/WW
W Le#ine "yRlass
W/
class "yRlass
:
public $public > MublicM;
protected $protected > MrotectedM;
pri=ate $pri=ate > Mri=ateM;
#unction printHello39
:
echo $thisF>public;
echo $thisF>protected;
echo $thisF>pri=ate;
;
;
$obj > ne8 "yRlass39;
echo $objF>public; // 7orIs
echo $objF>protected; // Satal Error
echo $objF>pri=ate; // Satal Error
$objF>printHello39; // &ho8s ublic, rotected and ri=ate
/WW
W Le#ine "yRlassC
W/
class "yRlassC extends "yRlass
:
// 7e can redeclare the public and protected method, but not pri=ate
protected $protected > MrotectedCM;
#unction printHello39
:
echo $thisF>public;
echo $thisF>protected;
echo $thisF>pri=ate;
;
;
$objC > ne8 "yRlassC39;
echo $objF>public; // 7orIs
echo $objCF>pri=ate; // +nde#ined
echo $objCF>protected; // Satal Error
$objCF>printHello39; // &ho8s ublic, rotectedC, not ri=ate
?>
Nota- La (orma de declarar una varia#le en P&P 8 con la pala#ra reservada ar ya no es
v*lida para los o#'etos de P&P 4; Por compati#ilidad un varia#le declarada en php se
asumir* con visi#ilidad pB#licaA y una se emitir* una advertencia E_STRICT;
Cisibilidad de los m%todos
Los m<todos de clase de#en ser de(inidos con pu#licA private o protected; Los m<todos sin ninguna
declaraci-n son tomados como pu#lic;
E'emplo !O(O. Keclaraci"n de m%todos
<?php
/WW
W Le#ine "yRlass
W/
class "yRlass
:
// Rontructors must be public
public #unction %%construct39 : ;
// Leclare a public method
public #unction "yublic39 : ;
// Leclare a protected method
protected #unction "yrotected39 : ;
// Leclare a pri=ate method
pri=ate #unction "yri=ate39 : ;
// *his is public
#unction Soo39
:
$thisF>"yublic39;
$thisF>"yrotected39;
$thisF>"yri=ate39;
;
;
$myclass > ne8 "yRlass;
$myclassF>"yublic39; // 7orIs
$myclassF>"yrotected39; // Satal Error
$myclassF>"yri=ate39; // Satal Error
$myclassF>Soo39; // ublic, rotected and ri=ate 8orI
/WW
W Le#ine "yRlassC
W/
class "yRlassC extends "yRlass
:
// *his is public
#unction SooC39
:
$thisF>"yublic39;
$thisF>"yrotected39;
$thisF>"yri=ate39; // Satal Error
;
;
$myclassC > ne8 "yRlassC;
$myclassCF>"yublic39; // 7orIs
$myclassCF>SooC39; // ublic and rotected 8orI, not ri=ate
?>
Alcance del operador de resoluci"n .--/
+l alcance del operador de resoluci-n >tam#i<n llamado Paamayim Ne"udotayim? o en t<rminos
simplesA do#les dos puntosA es un s)m#olo /ue permite acceso a los miem#ros o m<todos estaticosA
constantesA y eliminados de una clase;
5uando se re(erenc)n estos elementos desde au(era de la de(inici-n de la claseA usan el nom#re de la
clase;
Paamayin Ne"udotayim podr)A en principioA parecer una eFtraWa elecci-n para nom#rar un do#le2
dos2puntos; in em#argoA mientras se escri#ia el compilador Iend 3;4A >el cu*l da (uerza a P&P 7?A
ese (ue el nom#re /ue el e/uipo decidi- darle; +n realidad signi(ica do#le2dos2puntos fen &e#reoa;
E'emplo !O(!D. -- desde afuera de la definici"n de la clase
<?php
class "yRlass :
const R?.&*%(,O+E > M, constant =alueM;
;
echo "yRlass@@R?.&*%(,O+E;
?>
Dos pala#ras reservadas sel9 y parent son usadas para accesar los miem#ros o m<todos desde
adentro de la de(inici-n de la clase;
E'emplo !O(!!. -- desde dentro de la definici"n de la clase
<?php
class ?therRlass extends "yRlass
:
public static $my%static > Mstatic =arM;
public static #unction doubleRolon39 :
echo parent@@R?.&*%(,O+E . "Vn";
echo sel#@@$my%static . "Vn";
;
;
?therRlass@@doubleRolon39;
?>
5uando al eFtender una clase se elimina las de(iniciones de un m<todo de la clase padreA P&P no
llamar* el m<todo de la clase padre; +s opcional a la clase eFtendida decidir si se de#a llamar al
m<todo de la clase padre; +sto tam#i<n aplica a 5onstructores y DestructoresA o#recargaA y
de(inici-n de los m<todos Magico;
E'emplo !O(!*. :lamando al m%todo de la clase padre
<?php
class "yRlass
:
protected #unction mySunc39 :
echo ""yRlass@@mySunc39Vn";
;
;
class ?therRlass extends "yRlass
:
// ?=erride parentMs de#inition
public #unction mySunc39
:
// Zut still call the parent #unction
parent@@mySunc39;
echo "?therRlass@@mySunc39Vn";
;
;
$class > ne8 ?therRlass39;
$classF>mySunc39;
?>
:a palabra reser5ada U,taticU
Declarar miem#ros de clases o m<todos como est*ticosA los hace accesi#les desde a(uera del
conteFto del o#'eto; @n miem#ro o m<todo declarado como est*tico no puede ser accesado con una
varia#le /ue es una instancia del o#'eto y no puede ser rede(inido en una eFtensi-n de la clase;
La declaraci-n static de#e estar despu<s de la declaraci-n de visi#ilidad; Por compati#ilidad con
P&P 8A si no se usa la declaraci-n de visi#ilidadA entonces el miem#ro o m<todo ser* tratado tal si
como se hu#iera declarado como pu1l6c stat6c;
A causa de /ue los m<todos est*ticos son accesi#les sin /ue se haya creado una instancia del o#'etoA
la pseudo varia#le 'th6s no est* disponi#le dentro de los m<todos declarados como est*ticos;
De hecho las llamadas a m<todos stat6c son resueltas en tiempo de e'ecuci-n; 5uando se una
eFpl)citamente un nom#re de claseA el m<todo ya ha sido identi(icado completamente y no es
necesario aplicar las reglas de herencia; i la llamada es hecha por sel9 entonces sel9 es traducido a
la clase actualA esto esA la clase a la /ue pertenece el c-digo; A/u) tampoco aplican las reglas de
herencia;
Las propiedades est*ticas no pueden ser accesadas a trav<s del o#'eto usando el operador de (lecha
2_;
E'emplo !O(!7. E'emplo de miembro ,tatic
<?php
class Soo
:
public static $my%static > M#ooM;
public #unction static(alue39 :
return sel#@@$my%static;
;
;
class Zar extends Soo
:
public #unction #oo&tatic39 :
return parent@@$my%static;
;
;
print Soo@@$my%static . "Vn";
$#oo > ne8 Soo39;
print $#ooF>static(alue39 . "Vn";
print $#ooF>my%static . "Vn"; // +nde#ined "roperty" my%static
// $#oo@@my%static is not possible
print Zar@@$my%static . "Vn";
$bar > ne8 Zar39;
print $barF>#oo&tatic39 . "Vn";
?>
E'emplo !O(!8. E'meplo de m%todo ,tatic
<?php
class Soo :
public static #unction a&tatic"ethod39 :
// ...
;
;
Soo@@a&tatic"ethod39;
?>
Constantes en Jb'etos
+s posi#le de(inir valores constantes en cada clase manteniendo el mismo valor y siendo
incam#ia#le; Las constantes di(ieren de las varia#les normales en /ue no se usa el s)m#olo ' para
declararlas o usarlas; 5omo los miem#ros est*ticosA los valores constantes no pueden ser accesados
desde una instancia de un o#'eto;
E'emplo !O(!9. Kefiniendo y usando constantes
<?php
class "yRlass
:
const constant > Mconstant =alueM;
#unction sho8Ronstant39 :
echo sel#@@constant . "Vn";
;
;
echo "yRlass@@constant . "Vn";
$class > ne8 "yRlass39;
$classF>sho8Ronstant39;
// echo $class@@constant; is not allo8ed
?>
Abstracci"n de Jb'etos
P&P 4 introduce clases y m<todos a#stractos; No es permitido crear una instancia de una clase /ue
ha sido de(inida como a#stracta; 5ual/uier clase /ue contenga por lo menos un m<todo a#stracto
de#e tam#i<n ser a#stracta; Los m<todos de(inidos como a#stractos simplemente declaran el
m<todoA no pueden de(inir la implementaci-n
La clase /ue implementa el m<todo a#stracto de#e de(inir con la misma visi#ilidad o mas d<#il; i
el m<todo a#stracto es de(inido como protectedA la implementaci- de la (unci-n de#e ser de(inida
como protected o pu#lic;
E'emplo !O(!<. E'emplos de la clase Abstract
<?php
abstract class ,bstractRlass
:
// Sorce ExtendinE class to de#ine this method
abstract protected #unction Eet(alue39;
// Rommon method
public #unction print?ut39 :
print $thisF>Eet(alue39;
;
;
class RoncreteRlass6 extends ,bstractRlass
:
protected #unction Eet(alue39 :
return "RoncreteRlass6";
;
;
class RoncreteRlassC extends ,bstractRlass
:
protected #unction Eet(alue39 :
return "RoncreteRlassC";
;
;
$class6 > ne8 RoncreteRlass6;
$class6F>print?ut39;
$classC > ne8 RoncreteRlassC;
$classCF>print?ut39;
?>
+l co-digo anterior no ten)a clases de(inidas por el usuario o (unciones llamadas Ha#stractasH de#e
correr sin necesidad de modi(icaci-n;
Interfaces de Jb'etos
Las inter(aces de o#'etos permiten crear c-digo el cual especi(ica m<todos /ue una clase de#e
implementarA sin tener /ue de(inir como ser*n mane'ados esos m<todos;
Las inter(aces son de(inidas usando la pala#ra reservada Hinter(aceHA de la misma manera /ue las
clases est*rdarA pero sin /ue cual/uiera de los m<todos tenga su contenido de(inido; Las clases /ue
implementan una inter(ace de#e# hacerlo usando la pala#ra reservada HimplementsHA y de#en tener
de(iniciones para todos los m<todos enlistados en la inter(ace; Las clases pueden implementar m*s
de una inter(ace si lo deseanA enlistando las inter(aces separadas por comas;
,odos los m<todos en una inter(ace de#en ser pu#licosA esto es la naturaleza de una inter(ace;
,eniendo /ue una clase implementa una inter(aceA y no implemente todos los m<todos en esa
inter(aceA resultar* en un error (atal /ue indica cuales m<todos no han sido implementados;
E'emplo !O(!=. E'emplo de Interface
<?php
// Leclare the inter#ace Mi*emplateM
inter#ace i*emplate
:
public #unction set(ariable3$name, $=ar9;
public #unction EetHtml3$template9;
;
// 4mplement the inter#ace
// *his 8ill 8orI
class *emplate implements i*emplate
:
pri=ate $=ars > array39;

public #unction set(ariable3$name, $=ar9
:
$thisF>=ars)$name/ > $=ar;
;

public #unction EetHtml3$template9
:
#oreach3$thisF>=ars as $name >> $=alue9 :
$template > str%replace3M:M . $name . M;M, $=alue, $template9;
;

return $template;
;
;
// *his 8ill not 8orI
// Satal error@ Rlass Zad*emplate contains 6 abstract methods
// and must there#ore be declared abstract 3i*emplate@@EetHtml9
class Zad*emplate implements i*emplate
:
pri=ate $=ars > array39;

public #unction set(ariable3$name, $=ar9
:
$thisF>=ars)$name/ > $=ar;
;
;
?>
,obrecarga
Las llamadas a m<todos y los accesos a los miem#ros pueden ser so#recargadas por medio de los
m<todos ZZcallA ZZget y ZZset; +stos m<todos ser*n accionados cuando su o#'eto u o#'eto heredado
no contengan los miem#ros o m<todos /ue est* intentado accesar;
,obrecarga de Miembros
void >>set > string nameA miFed value ?
miFed >>get > miFed name ?
Los miem#ros de la clase pueden ser so#recargados para e'ecutar c-digo personalizado de(inido en
la clase al de(inir estos m<todos de nom#re especial; +l par*metro 'name usado es el nom#re de la
varia#le /ue de#e ser asignada >set? u o#tenida >get?; +l par*metro 'alue del m<todo ZZset>?
especi(icael calor /ue el o#'eto de#e tener 'alue;
E'emplo !O(!N. E'emplo de sobrecarga con 3ith >>get y >>set
<?php
class &etter
:
public $n;
pri=ate $x > array3"a" >> 6, "b" >> C, "c" >> <9;
#unction %%Eet3$nm9
:
print "-ettinE )$nm/Vn";
i# 3isset3$thisF>x)$nm/99 :
$r > $thisF>x)$nm/;
print "'eturninE@ $rVn";
return $r;
; else :
echo ".othinE!Vn";
;
;
#unction %%set3$nm, $=al9
:
print "&ettinE )$nm/ to $=alVn";
i# 3isset3$thisF>x)$nm/99 :
$thisF>x)$nm/ > $=al;
echo "?]!Vn";
; else :
echo ".ot ?]!Vn";
;
;
;
$#oo > ne8 &etter39;
$#ooF>n > 6;
$#ooF>a > 622;
$#ooF>a[[;
$#ooF>0[[;
=ar%dump3$#oo9;
?>
+l resultado del e'emplo seriaC
&ettinE )a/ to 622
?]!
-ettinE )a/
'eturninE@ 622
&ettinE )a/ to 626
?]!
-ettinE )0/
.othinE!
&ettinE )0/ to 6
.ot ?]!
object3&etter9U6 3C9 :
)"n"/>>
int369
)"x@pri=ate"/>>
array3<9 :
)"a"/>>
int36269
)"b"/>>
int3C9
)"c"/>>
int3<9
;
;
,obrecarga de M%todos
miFed >>call > string nameA array arguments ?
Los m<todos de la clase pueden ser so#recargados para e'ecutar c-digo personalizado de(inido en la
clase al de(inir este m<todo en particular; +l par*metro 'alue es el nom#re de la (unci-n /ue se
pidi- usar; Los argumentos /ue (ueron pasados en la (unci-n ser*n de(inidos como una matriz en el
par*metro 'arEuments; +l valor regresado del m<todo ZZcall>? ser* regresado a /uien haya llamado
al m<todo;
E'emplo !O(!O. E'emplo de sobrecarga con >>call
<?php
class Raller
:
pri=ate $x > array36, C, <9;
#unction %%call3$m, $a9
:
print ""ethod $m called@Vn";
=ar%dump3$a9;
return $thisF>x;
;
;
$#oo > ne8 Raller39;
$a > $#ooF>test36, "C", <.1, true9;
=ar%dump3$a9;
?>
+l resultado del e'emplo seriaC
"ethod test called@
array319 :
)2/>>
int369
)6/>>
strinE369 "C"
)C/>>
#loat3<.19
)</>>
bool3true9
;
array3<9 :
)2/>>
int369
)6/>>
int3C9
)C/>>
int3<9
;
Interacci"n de Jb'etos
P&P 4 provee una (orma para /ue los o#'etos a ser de(inidos puedan interactuar a trav<s de una lista
de camposA conA por e'emplo una sentencia (oreach; Por de(ectoA todas las propiedades visi#les ser*n
usadas para la interacci-n;
E'emplo !O(*D. ,imple interacci"n de un Jb'eto
<?php
class "yRlass
:
public $=ar6 > M=alue 6M;
public $=arC > M=alue CM;
public $=ar< > M=alue <M;
protected $protected > Mprotected =arM;
pri=ate $pri=ate > Mpri=ate =arM;
#unction iterate(isible39 :
echo ""yRlass@@iterate(isible@Vn";
#oreach3$this as $Iey >> $=alue9 :
print "$Iey >> $=alueVn";
;
;
;
$class > ne8 "yRlass39;
#oreach3$class as $Iey >> $=alue9 :
print "$Iey >> $=alueVn";
;
echo "Vn";
$classF>iterate(isible39;
?>
+l resultado del e'emplo seriaC
=ar6 >> =alue 6
=arC >> =alue C
=ar< >> =alue <
"yRlass@@iterate(isible@
=ar6 >> =alue 6
=arC >> =alue C
=ar< >> =alue <
protected >> protected =ar
pri=ate >> pri=ate =ar
5omo se muestra en la salidaA (oreach interactBa a trav<s de todas la varia#les visi#les /ue pueden
ser accesadas; Para dar un paso m*s all*A puede 6mplementar uno de las inter(aces internas de P&P
llamada 0terator; +sto permite /ue el o#'eto decida /u< y como el o#'eto de#a interactuar;
E'emplo !O(*!. Interacci"n de Jb'etos ?ue implementan Iterator
<?php
class "y4terator implements 4terator
:
pri=ate $=ar > array39;
public #unction %%construct3$array9
:
i# 3is%array3$array99 :
$thisF>=ar > $array;
;
;
public #unction re8ind39 :
echo "re8indinEVn";
reset3$thisF>=ar9;
;
public #unction current39 :
$=ar > current3$thisF>=ar9;
echo "current@ $=arVn";
return $=ar;
;
public #unction Iey39 :
$=ar > Iey3$thisF>=ar9;
echo "Iey@ $=arVn";
return $=ar;
;
public #unction next39 :
$=ar > next3$thisF>=ar9;
echo "next@ $=arVn";
return $=ar;
;
public #unction =alid39 :
$=ar > $thisF>current39 !>> #alse;
echo "=alid@ :$=ar;Vn";
return $=ar;
;
;
$=alues > array36,C,<9;
$it > ne8 "y4terator3$=alues9;
#oreach 3$it as $a >> $b9 :
print "$a@ $bVn";
;
?>
+l resultado del e'emplo seriaC
re8indinE
current@ 6
=alid@ 6
current@ 6
Iey@ 2
2@ 6
next@ C
current@ C
=alid@ 6
current@ C
Iey@ 6
6@ C
next@ <
current@ <
=alid@ 6
current@ <
Iey@ C
C@ <
next@
current@
=alid@
,am#i<n puede de(inir la clase de tal manera /ue no necesita de(inir todas la (unciones del 0teratorA
simplemente implementando la inter(ace P&P 4 0terator,EEreEate;
E'emplo !O(**. Interacci"n de ob'etos ?ue implementan IteratorAggregate
<?php
class "yRollection implements 4terator,EEreEate
:
pri=ate $items > array39;
pri=ate $count > 2;
// 'eQuired de#inition o# inter#ace 4terator,EEreEate
public #unction Eet4terator39 :
return ne8 "y4terator3$thisF>items9;
;
public #unction add3$=alue9 :
$thisF>items)$thisF>count[[/ > $=alue;
;
;
$coll > ne8 "yRollection39;
$collF>add3M=alue 6M9;
$collF>add3M=alue CM9;
$collF>add3M=alue <M9;
#oreach 3$coll as $Iey >> $=al9 :
echo "Iey/=alue@ )$Iey F> $=al/VnVn";
;
?>
+l resultado del e'emplo seriaC
re8indinE
current@ =alue 6
=alid@ 6
current@ =alue 6
Iey@ 2
Iey/=alue@ )2 F> =alue 6/
next@ =alue C
current@ =alue C
=alid@ 6
current@ =alue C
Iey@ 6
Iey/=alue@ )6 F> =alue C/
next@ =alue <
current@ =alue <
=alid@ 6
current@ =alue <
Iey@ C
Iey/=alue@ )C F> =alue </
next@
current@
=alid@
Nota- Para m*s e'emplos de iteratorsA vea la +Ftensi-n PL;
Patrones
Los patrones son (ormas de descri#ir las me'ores pr*cticas y los #uenos diseWos; +stos muestran una
soluci-n (leFi#le a los pro#lemas comunes de programaci-n;
;actory
+l patr-n Factory permita la instancia de o#'etos en tiempo de e'ecuci-n; +s llamado el
patrKoacuteXn Factory puesto /ue es responsa#le de =manu(acturar= un o#'eto;
E'emplo !O(*7. M%todo ;actory
<?php
class Example
:
// *he #actory method
public static #unction &#actory3$type9
:
i# 3include%once MLri=ers/M . $type . M.phpM9 :
$classname > MLri=er%M . $type;
return ne8 $classname;
; else :
thro8 ne8 Exception 3MLri=er not #oundM9;
;
;
;
?>
Al de(inir este m<todo en una clase se nos permite /ue los drivers sean cargados al vuelo; i la clase
E8ample (uera una clase de a#stracci-n de #ase de datosA cargar un mane'ador de M?S54 y S546te
podr)a ser hecho como sigueC
<?php
// Ooad a "y&NO Lri=er
$mysQl > Example@@#actory3M"y&NOM9;
// Ooad a &NOite Lri=er
$sQlite > Example@@#actory3M&NOiteM9;
?>
,ingleton
+l patr-n ingleton aplica a situaciones en las cuales hay la necesidad de ser una sola instancia de
una clase; +l e'emplo m*s comBn de esto es una coneFi-n de #ase de datos; .mplementando este
patr-n permite a un programador hacer esta simple isntancia (*cilmente accesi#le a muchos otros
o#'etos;
E'emplo !O(*8. ;unci"n ,ingleton
<?php
class Example
:
// Hold an instance o# the class
pri=ate static $instance;

// , pri=ate constructor; pre=ents direct creation o# object
pri=ate #unction %%construct39
:
echo M4 am constructedM;
;
// *he sinEleton method
public static #unction sinEleton39
:
i# 3!isset3sel#@@$instance99 :
$c > %%RO,&&%%;
sel#@@$instance > ne8 $c;
;
return sel#@@$instance;
;

// Example method
public #unction barI39
:
echo M7oo#!M;
;
// re=ent users to clone the instance
public #unction %%clone39
:
triEEer%error3MRlone is not allo8ed.M, E%+&E'%E''?'9;
;
;
?>
+sto permite /ue se o#tenga una simple instancia de la clase E8ample;
<?php
// *his 8ould #ail because the constructor is pri=ate
$test > ne8 Example;
// *his 8ill al8ays retrie=e a sinEle instance o# the class
$test > Example@@sinEleton39;
$testF>barI39;
// *his 8ill issue an E%+&E'%E''?'.
$test%clone > clone3$test9;
?>
M%todos mgicos
Los nom#res de (unci-nC __constructA __#estruct >see 5onstructores y Destructores?A __callA __EetA
__set >see o#recarga?A __sleepA __7a>eupA y __toStr6nE son m*gicos en las clases de P&P; No
puede tener (unciones con esos nom#res en cual/uiera de sus clases a menos /ue se desee la
(uncionalidad m*gica asociada con ellos;
Atenci"n
P&P reserva todos los nom#res de (unciones /ue empiecen con ZZ como m*gicas; +s
recomendado /ue no use nom#res de (unciones con ZZ en P&P a menos /ue dese alguna m*gica
(uncionalidad documentada;
__sleep y __wakeup
seriali6e./ checa si su clase tiene una (unci-n con el nom#re m* __sleep; i es as)A esa (unci-n es
e'ecutada antes de cual/uier serializaci-n; +sta puede limpiar el o#'eto y se espera /ue regrese una
matriz con los nom#res de todas las varia#les de ese o#'eto /ue puede ser serializadas;
La intenci-n de usar __sleep es cerrar cual/uier coneFi-n a #ase de datos /ue el o#'eto pueda tenerA
terminar de enviar cual/uier dato o e'ecutar tareas similares de limpieza; ,am#i<nA la (unci-n es Btil
si tiene o#'etos muy grandes los cuales no necesitan mantenerse completos;
.nversamenteA unseriali6e./ checa por la presencia de una (unci-n con el nom#re m*gico __7a>eup;
i est* presenteA est* (unci-n puede reconstruir cual/uier recurso /ue el o#'eto pueda tener;
La intenci-n de __7a>eup es reesta#lecer cual/uier coneFi-n a #ase de datos /ue se pueda ha#er
perdido durante la serializaci-n y e'ecutar otras tareas de reinicializaci-n;
__toString
+l m<todo __toStr6nE permite a una clase decidir como actuar cuando es convertida en cadena;
E'emplo !O(*9. E'emplo simple
<?php
// Leclare a simple class
class *estRlass
:
public $#oo;
public #unction %%construct3$#oo9 :
$thisF>#oo > $#oo;
;
public #unction %%to&trinE39 :
return $thisF>#oo;
;
;
$class > ne8 *estRlass3MHelloM9;
echo $class;
?>
+l resultado del e'emplo seriaC
Hello
No tiene otro valor /ue cuando el m<todo __toStr6nE es llamado solo cuando es directamente
com#inado con echo./ o print./;
E'emplo !O(*<. Casos donde __toString es llamado
<?php
// %%to&trinE called
echo $class;
// %%to&trinE called 3still a normal parameter #or echo9
echo MtextM, $class;
// %%to&trinE not called 3concatenation operator used #irst9
echo MtextM . $class;
// %%to&trinE not called 3cast to strinE #irst9
echo 3strinE9 $class;
// %%to&trinE not called 3cast to strinE #irst9
echo "text $class";
?>
:a palabra reser5ada U;inalU
P&P 4 introduce la pala#ra reservada H(inalHA la cual prevee /ue las clases hi'o puedan so#reescri#ir
un m<todoA usando el pre(i'o H(inalH en la de(inici-n del m<todo; i la clase en s) misma es de(inida
como H(inalH entonces no puede ser eFtendida;
E'emplo !O(*=. E'emplo de m%todos con ;inal
<?php
class ZaseRlass :
public #unction test39 :
echo "ZaseRlass@@test39 calledVn";
;

#inal public #unction more*estinE39 :
echo "ZaseRlass@@more*estinE39 calledVn";
;
;
class RhildRlass extends ZaseRlass :
public #unction more*estinE39 :
echo "RhildRlass@@more*estinE39 calledVn";
;
;
// 'esults in Satal error@ Rannot o=erride #inal method ZaseRlass@@more*estinE39
?>
E'emplo !O(*N. E'emplo de clase con ;inal
<?php
#inal class ZaseRlass :
public #unction test39 :
echo "ZaseRlass@@test39 calledVn";
;
// Here it doesnMt matter i# you speci#y the #unction as #inal or not
#inal public #unction more*estinE39 :
echo "ZaseRlass@@more*estinE39 calledVn";
;
;
class RhildRlass extends ZaseRlass :
;
// 'esults in Satal error@ Rlass RhildRlass may not inherit #rom #inal class 3ZaseRlass9
?>
Clonado de Jb'etos
5rear una copia de un o#'eto con una replica de todas sus propiedades no es siempre lo /ue se desea
hacer; @n #uen e'emplo de la necesidad de copiar los constructoresA es si se tiene un o#'eto el cual
representa una ventana G,S y el o#'eto contiene los recursos de esta ventana G,SA cuando se crea
un duplicadoA puede /uerese crear una nueva ventana con las mismas propiedades y hacer /ue el
nuevo o#'eto tenga los recursos de la ventana nueva; Otro e'emplo es si su o#'eto tiene la re(erencia
a otro o#'eto el cual usaA y cuando se duplica el o#'eto padreA /uiere crear una nueva instancia de
este otro o#'eto as) /ue la replica tiene su propia copia;
@na copia de un o#'eto es creada usando la pala#ra HcloneH >la cual llama el m<todo ZZclone>? del
o#'etoA si es posi#le?; @n m<todo ZZclone>? de un o#'eto no puede ser llamado directamente;
$copy%o#%object > clone $object;
5uando un o#'eto es clonadoA P&P 4 in(ormar* una copia #a'a de todas las propiedades del o#'eto;
5ual/uier propiedad /ue sean re(erencias a otras varia#lesA permanecer*n siendo re(erencias; i un
m<todo ZZclone>? es de(inidoA entonces el m<todo ZZclone>? del nuevo o#'eto creado ser* llamadoA
para permitir cual/uier propiedad /ue tenga /ue ser cam#iada;
E'emplo !O(*O. Clonando un ob'eto
<?php
class &ub?bject
:
static $instances > 2;
public $instance;
public #unction %%construct39 :
$thisF>instance > [[sel#@@$instances;
;
public #unction %%clone39 :
$thisF>instance > [[sel#@@$instances;
;
;
class "yRloneable
:
public $object6;
public $objectC;
#unction %%clone39
:
// Sorce a copy o# thisF>object, other8ise
// it 8ill point to same object.
$thisF>object6 > clone3$thisF>object69;
;
;
$obj > ne8 "yRloneable39;
$objF>object6 > ne8 &ub?bject39;
$objF>objectC > ne8 &ub?bject39;
$objC > clone $obj;
print3"?riEinal ?bject@Vn"9;
print%r3$obj9;
print3"Rloned ?bject@Vn"9;
print%r3$objC9;
?>
+l resultado del e'emplo seriaC
?riEinal ?bject@
"yRloneable ?bject
3
)object6/ >> &ub?bject ?bject
3
)instance/ >> 6
9
)objectC/ >> &ub?bject ?bject
3
)instance/ >> C
9
9
Rloned ?bject@
"yRloneable ?bject
3
)object6/ >> &ub?bject ?bject
3
)instance/ >> <
9
)objectC/ >> &ub?bject ?bject
3
)instance/ >> C
9
9
Comparaci"n de Jb'etos
+n P&P 4A la comparaci-n de o#'etos es m*s complicada /ue en P&P 8 y m*s de acuerdo con lo /ue
uno esperar)a de un lengua'e orientado a o#'etos >no es /ue P&P no sea uno de tales lengua'es?;
5uando se usa el operador de comparaci-n >::?A las varia#les del o#'eto son comparadas de una
(orma simpleA digaseC Dos instancias de o#'etos son iguales si tienes los mismos atri#utos y valoresA
y son instancias de la misma clase;
Por otro ladoA cuando se usa el operador identico >:::?A las varia#les del o#'eto son identicas solo
si re(ieren a la misma instancia de la misma clase;
@n e'emplo clari(icar* estas reglas;
E'emplo !O(7D. E'emplo de comparaci"n de ob'etos en PHP 9
<?php
#unction boolCstr3$bool9
:
i# 3$bool >>> #alse9 :
return MS,O&EM;
; else :
return M*'+EM;
;
;
#unction compare?bjects3&$o6, &$oC9
:
echo Mo6 >> oC @ M . boolCstr3$o6 >> $oC9 . "Vn";
echo Mo6 !> oC @ M . boolCstr3$o6 !> $oC9 . "Vn";
echo Mo6 >>> oC @ M . boolCstr3$o6 >>> $oC9 . "Vn";
echo Mo6 !>> oC @ M . boolCstr3$o6 !>> $oC9 . "Vn";
;
class SlaE
:
public $#laE;
#unction SlaE3$#laE > true9 :
$thisF>#laE > $#laE;
;
;
class ?therSlaE
:
public $#laE;
#unction ?therSlaE3$#laE > true9 :
$thisF>#laE > $#laE;
;
;
$o > ne8 SlaE39;
$p > ne8 SlaE39;
$Q > $o;
$r > ne8 ?therSlaE39;
echo "*8o instances o# the same classVn";
compare?bjects3$o, $p9;
echo "Vn*8o re#erences to the same instanceVn";
compare?bjects3$o, $Q9;
echo "Vn4nstances o# t8o di##erent classesVn";
compare?bjects3$o, $r9;
?>
+l resultado del e'emplo seriaC
*8o instances o# the same class
o6 >> oC @ *'+E
o6 !> oC @ S,O&E
o6 >>> oC @ S,O&E
o6 !>> oC @ *'+E
*8o re#erences to the same instance
o6 >> oC @ *'+E
o6 !> oC @ S,O&E
o6 >>> oC @ *'+E
o6 !>> oC @ S,O&E
4nstances o# t8o di##erent classes
o6 >> oC @ S,O&E
o6 !> oC @ *'+E
o6 >>> oC @ S,O&E
o6 !>> oC @ *'+E
Meflecci"n
Introduction
P&P 4 viene con un AP. completa de re(leFi-n /ue agrega la ha#ilidad de hacer ingenier)a inversa
de clasesA inter(acesA (unciones y m<todos as) como eFtensiones; AdicionalmenteA el AP. de
re(leFi-n tam#i<n o(rece (ormas de o#tener los comentarios de los documentos para (uncionesA
clases y m<todos;
+l AP. de re(leFi-n es una eFtensi-n orientada a o#'etos para el compilador IendA consistente de las
siguientes clasesC
<?php
class 'e#lection : ;
inter#ace 'e#lector : ;
class 'e#lectionException extends Exception : ;
class 'e#lectionSunction implements 'e#lector : ;
class 'e#lectionarameter implements 'e#lector : ;
class 'e#lection"ethod extends 'e#lectionSunction : ;
class 'e#lectionRlass implements 'e#lector : ;
class 'e#lection?bject extends 'e#lectionRlass : ;
class 'e#lectionroperty implements 'e#lector : ;
class 'e#lectionExtension implements 'e#lector : ;
?>
Nota- Para detalles de estas clasesA de una mirada a los siguientes cap)tulos;
i (u<ramos a e'ecutar el c-digo en el siguiente e'emploC
E'emplo !O(7!. )so bsico del API refle+i"n
<?php
'e#lection@@export3ne8 'e#lectionRlass3MExceptionM99;
?>
+l resultado del e'emplo seriaC
Rlass ) <internal> class Exception / :
F Ronstants )2/ :
;
F &tatic properties )2/ :
;
F &tatic methods )2/ :
;
F roperties )G/ :
roperty ) <de#ault> protected $messaEe /
roperty ) <de#ault> pri=ate $strinE /
roperty ) <de#ault> protected $code /
roperty ) <de#ault> protected $#ile /
roperty ) <de#ault> protected $line /
roperty ) <de#ault> pri=ate $trace /
;
F "ethods )K/ :
"ethod ) <internal> #inal pri=ate method %%clone / :
;
"ethod ) <internal> <ctor> public method %%construct / :
F arameters )C/ :
arameter U2 ) <reQuired> $messaEe /
arameter U6 ) <reQuired> $code /
;
;
"ethod ) <internal> #inal public method Eet"essaEe / :
;
"ethod ) <internal> #inal public method EetRode / :
;
"ethod ) <internal> #inal public method EetSile / :
;
"ethod ) <internal> #inal public method EetOine / :
;
"ethod ) <internal> #inal public method Eet*race / :
;
"ethod ) <internal> #inal public method Eet*race,s&trinE / :
;
"ethod ) <internal> public method %%to&trinE / :
;
;
;
Meflection;unction
La clase Meflection;unction te permite (unciones de ingenier) inversa;
<?php
class 'e#lectionSunction implements 'e#lector
:
#inal pri=ate %%clone39
public object %%construct3strinE name9
public strinE %%to&trinE39
public static strinE export39
public strinE Eet.ame39
public bool is4nternal39
public bool is+serLe#ined39
public strinE EetSile.ame39
public int Eet&tartOine39
public int EetEndOine39
public strinE EetLocRomment39
public array Eet&tatic(ariables39
public mixed in=oIe3mixedW arEs9
public mixed in=oIe,rEs3array arEs9
public bool returns'e#erence39
public 'e#lectionarameter)/ Eetarameters39
public int Eet.umber?#arameters39
public int Eet.umber?#'eQuiredarameters39
;
?>
Nota- in5oBeArgs./ (ue agregado en P&P 4;1;3;
Para entender directamente una (unci-nA primero tiene /ue crear una isntancia de la clase
Meflection;unction; &asta entonces puede llamar cual/uier de los m<todos anteriores en esta
instancia;
E'emplo !O(7*. )sando la clase Meflection;unction
<?php
/WW
W , simple counter
W
W ^return int
W/
#unction counter39
:
static $c > 2;
return $c[[;
;
// Rreate an instance o# the 'e#lection%Sunction class
$#unc > ne8 'e#lectionSunction3McounterM9;
// rint out basic in#ormation
print#3
">>>> *he \s #unction M\sMVn".
" declared in \sVn".
" lines \d to \dVn",
$#uncF>is4nternal39 ? MinternalM @ MuserFde#inedM,
$#uncF>Eet.ame39,
$#uncF>EetSile.ame39,
$#uncF>Eet&tartOine39,
$#uncF>EetEndline39
9;
// rint documentation comment
print#3"FFF> Locumentation@Vn \sVn", =ar%export3$#uncF>EetLocRomment39, 699;
// rint static =ariables i# existant
i# 3$statics > $#uncF>Eet&tatic(ariables399
:
print#3"FFF> &tatic =ariables@ \sVn", =ar%export3$statics, 699;
;
// 4n=oIe the #unction
print#3"FFF> 4n=oIation results in@ "9;
=ar%dump3$#uncF>in=oIe399;
// you may pre#er to use the export39 method
echo "Vn'e#lectionSunction@@export39 results@Vn";
echo 'e#lectionSunction@@export3McounterM9;
?>
Nota- +l m<todo in5oBe./ acepta un nBmero de varia#le de argumentos los cuales son
pasados a la (unci-n tal y como se hace en call>user>func./;
MeflectionParameter
La case MeflectionParameter o#tiene in(ormaci-n acerca de los par*metros de una (unci-n o un
m<todo;
<?php
class 'e#lectionarameter implements 'e#lector
:
#inal pri=ate %%clone39
public object %%construct3strinE name9
public strinE %%to&trinE39
public static strinE export39
public strinE Eet.ame39
public bool isassedZy'e#erence39
public 'e#lectionRlass EetRlass39
public bool allo8s.ull39
public bool is?ptional39
public bool isLe#ault(alue,=ailable39
public mixed EetLe#ault(alue39
;
?>
Nota- getKefaultCalue./A isKefaultCalueA5ailable./A isJptional./ (ueron agregados
en P&P 4;1;3;
Para entender los par*metros de la (unci-nA tendr* primero /ue crear una instancia de la clase
Meflection;unction o de la clase MeflectionMethod y entonces usar sus m<todo getParameters./
para o#tener una matriz de par*metros;
E'emplo !O(77. )sando la clase MeflectionParameter
<?php
#unction #oo3$a, $b, $c9 : ;
#unction bar3Exception $a, &$b, $c9 : ;
#unction ba03'e#lectionSunction $a, $b > 6, $c > null9 : ;
#unction abc39 : ;
// Rreate an instance o# 'e#lection%Sunction 8ith the
// parameter Ei=en #rom the command line.
$re#lect > ne8 'e#lectionSunction3$arE=)6/9;
echo $re#lect;
#oreach 3$re#lectF>Eetarameters39 as $i >> $param9 :
print#3
"FF arameter U\d@ \s :Vn".
" Rlass@ \sVn".
" ,llo8s .+OO@ \sVn".
" assed to by re#erence@ \sVn".
" 4s optional?@ \sVn".
";Vn",
$i,
$paramF>Eet.ame39,
=ar%export3$paramF>EetRlass39, 69,
=ar%export3$paramF>allo8s.ull39, 69,
=ar%export3$paramF>isassedZy'e#erence39, 69,
$paramF>is?ptional39 ? MyesM @ MnoM
9;
;
?>
MeflectionClass
La clase MeflectionClass te permite hacer ingenier)a inversa de clases;
<?php
class 'e#lectionRlass implements 'e#lector
:
#inal pri=ate %%clone39
public object %%construct3strinE name9
public strinE %%to&trinE39
public static strinE export39
public strinE Eet.ame39
public bool is4nternal39
public bool is+serLe#ined39
public bool is4nstantiable39
public bool has"ethod3strinE name9
public strinE EetSile.ame39
public int Eet&tartOine39
public int EetEndOine39
public strinE EetLocRomment39
public 'e#lection"ethod EetRonstructor39
public 'e#lection"ethod Eet"ethod3strinE name9
public 'e#lection"ethod)/ Eet"ethods39
public 'e#lectionroperty Eetroperty3strinE name9
public 'e#lectionroperty)/ Eetroperties39
public array EetRonstants39
public mixed EetRonstant3strinE name9
public 'e#lectionRlass)/ Eet4nter#aces39
public bool is4nter#ace39
public bool is,bstract39
public bool isSinal39
public int Eet"odi#iers39
public bool is4nstance3stdclass object9
public stdclass ne84nstance3mixedW arEs9
public 'e#lectionRlass EetarentRlass39
public bool is&ubclass?#3'e#lectionRlass class9
public array Eet&taticroperties39
public array EetLe#aultroperties39
public bool is4terateable39
public bool implements4nter#ace3strinE name9
public 'e#lectionExtension EetExtension39
public strinE EetExtension.ame39
;
?>
Nota- hasMethod./ (ue agregado en P&P 4;1;3;
Para entender una claseA primero tendr* /ue crear una instancia de la clase MeflectionClass;
+ntonces puede llamar cual/uier de los m<todos anteriores en esta instancia;
E'emplo !O(78. )sando la clase MeflectionClass
<?php
inter#ace &eriali0able
:
// ...
;
class ?bject
:
// ...
;
/WW
W , counter class
W/
class Rounter extends ?bject implements &eriali0able
:
const &*,'* > 2;
pri=ate static $c > Rounter@@&*,'*;
/WW
W 4n=oIe counter
W
W ^access public
W ^return int
W/
public #unction count39 :
return sel#@@$c[[;
;
;
// Rreate an instance o# the 'e#lectionRlass class
$class > ne8 'e#lectionRlass3MRounterM9;
// rint out basic in#ormation
print#3
">>>> *he \s\s\s \s M\sM )extends \s/Vn" .
" declared in \sVn" .
" lines \d to \dVn" .
" ha=inE the modi#iers \d )\s/Vn",
$classF>is4nternal39 ? MinternalM @ MuserFde#inedM,
$classF>is,bstract39 ? M abstractM @ MM,
$classF>isSinal39 ? M #inalM @ MM,
$classF>is4nter#ace39 ? Minter#aceM @ MclassM,
$classF>Eet.ame39,
=ar%export3$classF>EetarentRlass39, 69,
$classF>EetSile.ame39,
$classF>Eet&tartOine39,
$classF>EetEndline39,
$classF>Eet"odi#iers39,
implode3M M, 'e#lection@@Eet"odi#ier.ames3$classF>Eet"odi#iers3999
9;
// rint documentation comment
print#3"FFF> Locumentation@Vn \sVn", =ar%export3$classF>EetLocRomment39, 699;
// rint 8hich inter#aces are implemented by this class
print#3"FFF> 4mplements@Vn \sVn", =ar%export3$classF>Eet4nter#aces39, 699;
// rint class constants
print#3"FFF> Ronstants@ \sVn", =ar%export3$classF>EetRonstants39, 699;
// rint class properties
print#3"FFF> roperties@ \sVn", =ar%export3$classF>Eetroperties39, 699;
// rint class methods
print#3"FFF> "ethods@ \sVn", =ar%export3$classF>Eet"ethods39, 699;
// 4# this class is instantiable, create an instance
i# 3$classF>is4nstantiable399 :
$counter > $classF>ne84nstance39;
echo MFFF> $counter is instance? M;
Nota- +l m<todo ne3Instance./ acepta un nBmero varia#le de argumentos los cuales
son pasados a la (unci-n tal y como si se usara call>user>func./;
Nota- 'class : ne7 Re9lect6onClassL<3oo<MJ 'class=&6s0nstanceL'arEM es Walente a 'arE
6nstanceo9 3oo o 6s_aL'arEC <3oo<M;
MeflectionMethod
La clase MeflectionMethod te permite hacer ingenieria inversa de los m<todos de la clase;
<?php
class 'e#lection"ethod extends 'e#lectionSunction
:
public %%construct3mixed class, strinE name9
public strinE %%to&trinE39
public static strinE export39
public mixed in=oIe3stdclass object, mixedW arEs9
public moxed in=oIe,rEs3stdclass object, array arEs9
public bool isSinal39
public bool is,bstract39
public bool isublic39
public bool isri=ate39
public bool isrotected39
public bool is&tatic39
public bool isRonstructor39
public bool isLestructor39
public int Eet"odi#iers39
public 'e#lectionRlass EetLeclarinERlass39
// 4nherited #rom 'e#lectionSunction
#inal pri=ate %%clone39
public strinE Eet.ame39
public bool is4nternal39
public bool is+serLe#ined39
public strinE EetSile.ame39
public int Eet&tartOine39
public int EetEndOine39
public strinE EetLocRomment39
public array Eet&tatic(ariables39
public bool returns'e#erence39
public 'e#lectionarameter)/ Eetarameters39
public int Eet.umber?#arameters39
public int Eet.umber?#'eQuiredarameters39
;
?>
Para entender los m<todosA primero tendr* /ue crear una instancia de la clase MeflectionMethod;
Puede entonces llamar cual/uiera de los m<todos anteriores en esta instancia;
E'emplo !O(79. )sando la clase MeflectionMethod
<?php
class Rounter
:
pri=ate static $c > 2;
/WW
W 4ncrement counter
W
W ^#inal
W ^static
W ^access public
W ^return int
W/
#inal public static #unction increment39
:
return [[sel#@@$c;
;
;
// Rreate an instance o# the 'e#lection%"ethod class
$method > ne8 'e#lection"ethod3MRounterM, MincrementM9;
// rint out basic in#ormation
print#3
">>>> *he \s\s\s\s\s\s\s method M\sM 38hich is \s9Vn" .
" declared in \sVn" .
" lines \d to \dVn" .
" ha=inE the modi#iers \d)\s/Vn",
$methodF>is4nternal39 ? MinternalM @ MuserFde#inedM,
$methodF>is,bstract39 ? M abstractM @ MM,
$methodF>isSinal39 ? M #inalM @ MM,
$methodF>isublic39 ? M publicM @ MM,
$methodF>isri=ate39 ? M pri=ateM @ MM,
$methodF>isrotected39 ? M protectedM @ MM,
$methodF>is&tatic39 ? M staticM @ MM,
$methodF>Eet.ame39,
$methodF>isRonstructor39 ? Mthe constructorM @ Ma reEular methodM,
$methodF>EetSile.ame39,
$methodF>Eet&tartOine39,
$methodF>EetEndline39,
$methodF>Eet"odi#iers39,
implode3M M, 'e#lection@@Eet"odi#ier.ames3$methodF>Eet"odi#iers3999
9;
// rint documentation comment
print#3"FFF> Locumentation@Vn \sVn", =ar%export3$methodF>EetLocRomment39, 699;
// rint static =ariables i# existant
i# 3$statics> $methodF>Eet&tatic(ariables399 :
print#3"FFF> &tatic =ariables@ \sVn", =ar%export3$statics, 699;
;
// 4n=oIe the method
print#3"FFF> 4n=oIation results in@ "9;
=ar%dump3$methodF>in=oIe3.+OO99;
?>
Nota- ,ratar de invocar m<todos privateA protected o a#stract resultar* en una eFcepci-n
siendo arro'ada del m<todo in5oBe./;
Nota- Para m<todos static como se vi- anteriormenteA se de#e a in5oBe./ se de#e pasar
N@LL como primer argumento; Para m<todos no est*ticosA se pasa una instancia de la
clase;
MeflectionProperty
La clase MeflectionProperty te permite hacer ingenier)a inversa a las propiedades de la clase;
<?php
class 'e#lectionroperty implements 'e#lector
:
#inal pri=ate %%clone39
public %%construct3mixed class, strinE name9
public strinE %%to&trinE39
public static strinE export39
public strinE Eet.ame39
public bool isublic39
public bool isri=ate39
public bool isrotected39
public bool is&tatic39
public bool isLe#ault39
public int Eet"odi#iers39
public mixed Eet(alue3stdclass object9
public =oid set(alue3stdclass object, mixed =alue9
public 'e#lectionRlass EetLeclarinERlass39
;
?>
Para entender las propiedadesA se de#e primero crear una instancia de la clase MeflectionProperty;
% entonces puede llamar cual/uiera de los m<todos anteriores so#re esta instancia;
E'emplo !O(7<. )sando la clase MeflectionProperty
<?php
class &trinE
:
public $lenEth > 5;
;
// Rreate an instance o# the 'e#lectionroperty class
$prop > ne8 'e#lectionroperty3M&trinEM, MlenEthM9;
// rint out basic in#ormation
print#3
">>>> *he\s\s\s\s property M\sM 38hich 8as \s9Vn" .
" ha=inE the modi#iers \sVn",
$propF>isublic39 ? M publicM @ MM,
$propF>isri=ate39 ? M pri=ateM @ MM,
$propF>isrotected39 ? M protectedM @ MM,
$propF>is&tatic39 ? M staticM @ MM,
$propF>Eet.ame39,
$propF>isLe#ault39 ? Mdeclared at compileFtimeM @ Mcreated at runFtimeM,
=ar%export3'e#lection@@Eet"odi#ier.ames3$propF>Eet"odi#iers399, 69
9;
// Rreate an instance o# &trinE
$obj> ne8 &trinE39;
// -et current =alue
print#3"FFF> (alue is@ "9;
=ar%dump3$propF>Eet(alue3$obj99;
// RhanEe =alue
$propF>set(alue3$obj, 629;
print#3"FFF> &ettinE =alue to 62, ne8 =alue is@ "9;
=ar%dump3$propF>Eet(alue3$obj99;
// Lump object
=ar%dump3$obj9;
?>
Nota- ,rying to get or set private or protected class propertyHs values Eill result in an
eFception #eing throEn;
MeflectionE+tension
La clase MeflectionE+tension te permite hacer ingenier)a inversa a eFtensiones; Puede o#tener
todas las eFtensiones cargadas en tiempo de e'ecuci-n usando get>loaded>e+tensions./;
<?php
class 'e#lectionExtension implements 'e#lector :
#inal pri=ate %%clone39
public %%construct3strinE name9
public strinE %%to&trinE39
public static strinE export39
public strinE Eet.ame39
public strinE Eet(ersion39
public 'e#lectionSunction)/ EetSunctions39
public array EetRonstants39
public array Eet4.4Entries39
public 'e#lectionRlass)/ EetRlasses39
public array EetRlass.ames39
;
?>
Para entender una eFtensi-nA primero se tiene /ue crear una instancia de la clase
MeflectionE+tension; % entonces puede llamarse a cual/uiera de los <todos mencionados arri#a
so#re esa instancia;
E'emplo !O(7=. )sando la clase MeflectionE+tension
<?php
// Rreate an instance o# the 'e#lectionroperty class
$ext > ne8 'e#lectionExtension3MstandardM9;
// rint out basic in#ormation
print#3
".ame @ \sVn" .
"(ersion @ \sVn" .
"Sunctions @ )\d/ \sVn" .
"Ronstants @ )\d/ \sVn" .
"4.4 entries @ )\d/ \sVn" .
"Rlasses @ )\d/ \sVn",
$extF>Eet.ame39,
$extF>Eet(ersion39 ? $extF>Eet(ersion39 @ M.?%(E'&4?.M,
si0eo#3$extF>EetSunctions399,
=ar%export3$extF>EetSunctions39, 69,
si0eo#3$extF>EetRonstants399,
=ar%export3$extF>EetRonstants39, 69,
si0eo#3$extF>Eet4.4Entries399,
=ar%export3$extF>Eet4.4Entries39, 69,
si0eo#3$extF>EetRlass.ames399,
=ar%export3$extF>EetRlass.ames39, 69
9;
?>
E+tendiendo las clases de refle+i"n
+N caso de /ue se /uiera crear una versi-n especializada de las clases integradas >es decirA para
crear &,ML con colores cuando se eFportaA tener (*cil acceso a las varia#les de los miem#ros en
lugar de los m<todos o tener m<todos de utiler)a?A se puede simplemente eFtenderlos;
E'emplo !O(7N. E+tendiendo las clase integradas
<?php
/WW
W "y 'e#lection%"ethod class
W/
class "y%'e#lection%"ethod extends 'e#lection"ethod
:
public $=isibility > MM;
public #unction %%construct3$o, $m9
:
parent@@%%construct3$o, $m9;
$thisF>=isibility> 'e#lection@@Eet"odi#ier.ames3$thisF>Eet"odi#iers399;
;
;
/WW
W Lemo class U6
W
W/
class * :
protected #unction x39 :;
;
/WW
W Lemo class UC
W
W/
class + extends * :
#unction x39 :;
;
// rint out in#ormation
=ar%dump3ne8 "y%'e#lection%"ethod3M+M, MxM99;
?>
Nota- Precauci-nC i se desea so#reescri#ir el constructorA recuerde llamar el
constructor padre ZantesZ /ue cual/uier otro c-digo /ue se inserte; +l no hacerlo as)
resultar* enC 3atal error: 0nternal error: 3a6le# to retr6ee the re9lect6on o1Uect
Type Hinting
P&P 4 introduce ,ype &inting; Las (unciones ahora son capaces de (orzar /ue los par*metros sean
o#'etos especi(icando el nom#re de la clase en el prototipo de la (unci-n;
E'emplo !O(7O. E'emplo de Type Hinting
<?php
// ,n example class
class "yRlass
:
/WW
W , test #unction
W
W Sirst parameter must be an object o# type ?therRlass
W/
public #unction test3?therRlass $otherclass9 :
echo $otherclassF>=ar;
;
;
// ,nother example class
class ?therRlass :
public $=ar > MHello 7orldM;
;
?>
Al no satis(acer el tipo al /ue se le hace re(erencia resulta en un error (atal;
<?php
// ,n instance o# each class
$myclass > ne8 "yRlass;
$otherclass > ne8 ?therRlass;
// Satal Error@ ,rEument 6 must be an object o# class ?therRlass
$myclassF>test3MhelloM9;
// Satal Error@ ,rEument 6 must be an instance o# ?therRlass
$#oo > ne8 stdRlass;
$myclassF>test3$#oo9;
// Satal Error@ ,rEument 6 must not be null
$myclassF>test3null9;
// 7orIs@ rints Hello 7orld
$myclassF>test3$otherclass9;
?>
,ype hinting tam#i<n aplica en (uncionesC
<?php
// ,n example class
class "yRlass :
public $=ar > MHello 7orldM;
;
/WW
W , test #unction
W
W Sirst parameter must be an object o# type "yRlass
W/
#unction "ySunction 3"yRlass $#oo9 :
echo $#ooF>=ar;
;
// 7orIs
$myclass > ne8 "yRlass;
"ySunction3$myclass9;
?>
,ype &ints puede solo ser del tipo ob'ect; +l tradicional type hinting con int y string no est*
permitidos;
Captulo *D. E+cepciones
P&P 4 tiene un modelo de eFcepciones similar al de otros lengua'es de programaci-n; @na
eFcepci-n puede ser lanzadaA intentada o capturada en P&P; @n #lo/ue de intento >try? de#e incluir
por lo menos un #lo/ue de captura >catch?; Los #lo/ues de captura mBltiples pueden ser usados para
capturar di(erentes tipos de clasesX la e'ecuci-n continuar* despu<s del Bltimo #lo/ue de captura
de(inido; Las eFcepciones pueden ser lanzadas dentro de #lo/ues de captura;
5uando es lanzada una eFcepci-nA la siguiente l)nea de c-digo no ser* e'ecutada y P&P intentar*
encontrar el primer #lo/ue de captura de eFcepciones; i una eFcepci-n no es capturada se
despliega un error (atal de P&P con un mensa'e de /ue la eFcepci-n no (ue capturadaA a menos /ue
eFista un mane'ador de errores de(inido como set>e+ception>handler./;
E'emplo *D(!. :an6ando una E+cepci"n
<?php
try :
$error > M,l8ays thro8 this errorM;
thro8 ne8 Exception3$error9;
// Rode #ollo8inE an exception is not executed.
echo M.e=er executedM;
; catch 3Exception $e9 :
echo MRauEht exception@ M, $eF>Eet"essaEe39, "Vn";
;
// Rontinue execution
echo MHello 7orldM;
?>
E+tendiendo e+cepciones
@na clase de de(inici-n de eFcepciones del usuario puede ser de(inida eFtendiendo la clase de
eFcepciones incorporado; Los miem#ros y propiedades mencionados en seguidaA muestran lo /ue
est* accesi#le dentro de la clase =hi'o= /ue se deri#a de la clase de eFcepciones incorporados;
E'emplo *D(*. :a clase de e+cepciones incorporada
<?php
class Exception
:
protected $messaEe > M+nIno8n exceptionM; // exception messaEe
protected $code > 2; // user de#ined exception code
protected $#ile; // source #ilename o# exception
protected $line; // source line o# exception
#unction %%construct3$messaEe > null, $code > 29;
#inal #unction Eet"essaEe39; // messaEe o# exception
#inal #unction EetRode39; // code o# exception
#inal #unction EetSile39; // source #ilename
#inal #unction EetOine39; // source line
#inal #unction Eet*race39; // an array o# the bacItrace39
#inal #unction Eet*race,s&trinE39; // #ormated strinE o# trace
/W ?=errideable W/
#unction %%to&trinE39; // #ormated strinE #or display
;
?>
i una clase se eFtiende de la clase +Fception incorporada y rede(ine el constructorA es altamente
recomendado /ue tam#i<n llame parentCCZZconstruct>? para asegurarse /ue todos los datos
disponi#les han sido asignados apropiadamente; +l m<todo ZZtotring>? puede ser evitado para
proveer una salida personalizada cuando el o#'eto es presentado como una cadena;
E'emplo *D(7. E+tendiendo la clase E+ception
<?php
/WW
W Le#ine a custom exception class
W/
class "yException extends Exception
:
// 'ede#ine the exception so messaEe isnMt optional
public #unction %%construct3$messaEe, $code > 29 :
// some code

// maIe sure e=erythinE is assiEned properly
parent@@%%construct3$messaEe, $code9;
;
// custom strinE representation o# object W/
public #unction %%to&trinE39 :
return %%RO,&&%% . "@ ):$thisF>code;/@ :$thisF>messaEe;Vn";
;
public #unction customSunction39 :
echo ", Rustom #unction #or this type o# exceptionVn";
;
;
/WW
W Rreate a class to test the exception
W/
class *estException
:
public $=ar;
const *H'?7%.?.E > 2;
const *H'?7%R+&*?" > 6;
const *H'?7%LES,+O* > C;
#unction %%construct3$a=alue > sel#@@*H'?7%.?.E9 :
s8itch 3$a=alue9 :
case sel#@@*H'?7%R+&*?"@
// thro8 custom exception
thro8 ne8 "yException3M6 is an in=alid parameterM, 59;
breaI;
case sel#@@*H'?7%LES,+O*@
// thro8 de#ault one.
thro8 ne8 Exception3MC isnt allo8ed as a parameterM, G9;
breaI;
de#ault@
// .o exception, object 8ill be created.
$thisF>=ar > $a=alue;
breaI;
;
;
;
// Example 6
try :
$o > ne8 *estException3*estException@@*H'?7%R+&*?"9;
; catch 3"yException $e9 : // 7ill be cauEht
echo "RauEht my exceptionVn", $e;
$eF>customSunction39;
; catch 3Exception $e9 : // &Iipped
echo "RauEht Le#ault ExceptionVn", $e;
;
// Rontinue execution
=ar%dump3$o9;
echo "VnVn";
Captulo *!. E+plicando las Meferencias
2hat Meferences Are
Las Re(erencias en P&P son un medio para acceder al mismo contenido de una varia#le pero con
di(erentes nom#res; No son como los punteros de 5A sino /ue son alias en la ta#la de s)m#olos; &ay
/ue tener en cuentaA /ue en P&P el nom#re de una varia#le y el contenido de una varia#le son
di(erentesA de manera /ue el mismo contenidoA puede tener varios nom#res; La analog)a m*s
cercana podr)a ser la de los archivos de @niF y sus nom#resA d-nde los nom#res de las varia#les
ser)an los directoriosA y el contenido de las varia#les es el archivo en si; Las re(erencias tam#i<n
pueden ser pensadas como un enlace duro en un sistema de archivos @niF;
:o ?ue las Meferencias son
Las Re(erencias en P&P te permiten lograr /ue dos varia#les =apunten= al mismo contenido;
5uando haces algo comoC
$a >& $b
signi(ica /ue 'a y '1 apuntan a la misma varia#le;
Nota- 'a y '1 son completamente igualesA no es /ue 'a est< apuntando a '1 o viceversaA
sino /ue tanto 'a como '1 apuntan al mismo lugar;
La misma sint*Fis puede ser utilizada con (uncionesA /ue devuelven Re(erenciasA y con el operador
ne7 >en P&P 8;3;8 o superior?C
$bar >& ne8 #ooclass39;
$#oo >& #ind%=ar 3$bar9;
Nota- +l no utilizar el operador ] causa /ue el o#'eto sea copiado en memoria; i
utilizamos 'th6s en la claseA entonces actuaremos so#re la instancia actual de la clase;
Las asignaciones sin ] har*n una copia de la instancia >por e'emploA del o#'eto? y 'th6s
operar* en la copiaA lo /ue no siempre es el comportamiento deseado; @sualmente se
desea utilizar una sola instanciaA de#ido a razones de memoria y per(ormance de la
aplicaci-n;
Mientras /ue se puede utilizar W para s6lenc6ar cual/uier error en el constructor
utilizando Wne7A esto no (unciona cuando utilizamos ]ne7; +sto es una limitaci-n del
Iend +ngine y por lo tantoA resultar* en un error de sint*Fis;
Otro uso /ue se le puede dar a las re(erencias es el traspaso de varia#les por2re(erencia; +sto se logra
haciendo /ue una varia#le HlocalH a la (unci-n y una varia#le en el script Hre(erencienH al mismo
contenido; Por e'emploC
#unction #oo 3&$=ar9
:
$=ar[[;
;
$a>5;
#oo 3$a9;
har* /ue 'a valga K; +sto es posi#le por/ue en la (unci- 9ooA la varia#le 'ar Hre(erenciaH al mismo
contenido /ue la varia#le 'a; M*s in(ormaci-n acerca de paso por re(erencia;
@n tercer uso de las re(erencias es el retorno por re(erencia;
:o ?ue las Meferencias no son
5omo se ha mencionado antesA las Re(erencias NO son punteros; +sto signi(ica /ue el siguiente
e'emplo no har* lo /ue se esperaC
#unction #oo 3&$=ar9
:
$=ar >& $-O?Z,O&)"ba0"/;
;
#oo3$bar9;
Lo /ue ocurrir* a/u) es /ue 'ar en 9oo ser* HligadaH con '1ar al momento de llamar a la (unci-n;
Pero luego ser* Hre2ligadaH con '-4OA,4S)*1aD*.; No eFiste manera de ligar '1ar en el *m#ito
glo#al del script con alguna otra cosa utilizando el mecanismo de Re(erenciasA ya /ue '1ar no eFiste
dentro de 9oo >est* representado por 'arA pero 'ar solo est* ligado por el contenidoA no por el
nom#re en la ta#la de s)m#olos?;
Paso de 5ariables por Meferencia
Podemos pasar varia#les a una (unci-n por re(erenciaA para /ue <sta pueda modi(icar sus
argumentos; La sint*Fis es la siguiente C
#unction #oo 3&$=ar9
:
$=ar[[;
;
$a>5;
#oo 3$a9;
// $a ser&aacute; G aQui
Notar /ue no hay signo de re(erencia en la llamada a la (unci-n 2 solo en la de(inici-n de la misma;
5olocar el signo de re(erencia solo en la de(inici-n de la (unci-n alcanza para pasar correctamente
el argumento por re(erencia;
La lista siguiente indica /ue puede ser pasado por re(erenciaC
$aria#lesA por e'emplo 9ooL'aM
Operador NeEA por e'emplo 9ooLne7 9oo1arLMM
Re(erenciasA devueltas por una (unci-nC
#unction &bar39
:
$a > 5;
return $a;
;
#oo3bar399;
e recomienda leer tam#i<n la eFplicaci-n so#re retorno por re(erencia;
5ual/uier otro tipo de eFpresi-n no de#er)a pasarse por re(erenciaA ya /ue el resultado ser)a
inde(inido; Los e'emplos de paso por re(erencia siguientes son inv*lidosC
#unction bar39 // .otar Que #alta &
:
$a > 5;
return $a;
;
#oo3bar399;
#oo3$a > 59 // Expresi&oacute;n, no =ariable
#oo359 // Ronstante, no =ariable
+stos re/uerimientos son para P&P 8;3;8 y superior;
Metorno por Meferencia
Devolver por Re(erencia es muy Btil cuando se /uiere utilizar una (unci-n para averiguar a /ue
varia#le de#e estar una re(erencia ligada; 5uando se devuelve por re(erenciaA se de#e utilizar esta
sint*FisC
#unction &encontrar%=ar 3$param9
:
...codiEo...
return $=ar%encontrada;
;
$#oo >& encontrar%=ar 3$bar9;
$#ooF>x > C;
+n este e'emploA el atri#uto del o#'eto devuelto por la (unci-n encontrar_ar (ue asignadoA no ya en
la copiaA como ha#r)a sucedido si no se utiliza#a la sint*Fis de re(erencias;
Nota- A di(erencia del paso de par*metrosA a/u) se de#e utilizar ] en am#os lugares 2
para indicar /ue se pretende devolver por re(erencia > y no una copiaA como usualmente
sucede? y /ue adem*s esa re(erencia sea HligadaH a una varia#leA y no solo asignada;
1orrando Meferencias
5uando de #orra una re(erenciaA solo se rompe esa uni-n entre el nom#re de la varia#le y el
contenido; +sto no signi(ica /ue el contenido haya sido destruido; Por e'emplo C
$a > 6;
$b >& $a;
unset 3$a9;
no destruir)a '1A solo 'a;
NuevamenteA ser)a Btil pensar el tema de las re(erencias como una analog)a al comando unlinB de
@niF;
Ms Meferencias
Muchas construcciones sint*cticas en P&P son implementadas utilizando el mecanismo re(erencialA
de manera /ue todo lo dicho anteriormente so#re las re(erencias tam#i<n se aplica a estas
construcciones; Algunas de ellasA como pasar o retornar por re(erenciaA se mencionaron antes; Otras
construcciones /ue utilizan re(erencias sonC
Meferencias globales
5uando declaramos una varia#le como global V5ar en realidad estamos creando una re(erencia a
una varia#le glo#al; +sto signi(icaA /ue es lo mismo /ue hacer C
$=ar >& $-O?Z,O&)"=ar"/;
De esta maneraA por e'emploA si #orramos 'ar no estar)amos #orrando la varia#le glo#al;
$this
+n un m<todo de o#'etoA 'th6s es siempre una re(erencia al o#'eto /ue contiene el m<todo;
IC. ,eguridad
Tabla de contenidos
00; .ntroducci-n
07; 5onsideraciones generales
08; .nstalaci-n como un #inario 5G.
04; .nstalaci-n como m-dulo de Apache
0K; eguridad del sistema de archivos
0:; eguridad de Bases de Datos
0M; Reporte de +rrores
09; @so de Register Glo#als
73; Datos +nviados por el @suario
71; Magic Ouotes
70; Ocultando P&P
77; Mantenerse al D)a
Captulo **. Introducci"n
P&P es un poderoso lengua'e e int<rpreteA ya sea incluido como parte de un servidor Ee# en (orma
de m-dulo o e'ecutado como un #inario 5G. separadoA es capaz de acceder a archivosA e'ecutar
comandos y a#rir coneFiones de red en el servidor; +stas propiedades hacen /ue cual/uier cosa /ue
sea e'ecutada en un servidor Ee# sea insegura por naturaleza; P&P est* diseWado espec)(icamente
para ser un lengua'e m*s seguro para escri#ir programas 5G. /ue Perl o 5A y con la selecci-n
correcta de opciones de con(iguraci-n en tiempos de compilaci-n y e'ecuci-nA y siguiendo algunas
pr*cticas correctas de programaci-nA P&P le puede dar la com#inaci-n precisa de li#ertad y
seguridad /ue usted necesita;
%a /ue hay muchas maneras de utilizar P&PA eFisten varias opciones de con(iguraci-n diseWadas
para controlar su comportamiento; @n amplio rango de opciones le garantizan /ue pueda usar P&P
para muchos prop-sitos distintosA pero tam#i<n /uiere decir /ue hay com#inaciones de <stas
opciones y con(iguraciones de servidor /ue pueden resultar en un entorno inseguro;
+l nivel de (leFi#ilidad en la con(iguraci-n de P&P se compara /uiz*s solo con su (leFi#ilidad de
desarrollo; P&P puede ser usado para escri#ir aplicaciones completas de servidorA con todo el poder
de un usuario de un int<rprete de comandosA o puede ser usado para inclusiones simples del lado del
servidor con muy poco riesgo en un entorno minuciosamente controlado; 5-mo construir ese
entornoA y /u< tan seguro esA #*sicamente depende del desarrollador P&P;
+ste cap)tulo comienza con algunas recomendaciones generales de seguridadA eFplica las di(erentes
com#inaciones de opciones de con(iguraci-n y las situaciones en las /ue pueden ser usadas con
seguridadA y descri#e di(erentes consideraciones a la hora de programar para di(erentes niveles de
seguridad;
Captulo *7. Consideraciones generales
@n sistema completamente seguro es pr*cticamente un imposi#leA de modo /ue el en(o/ue usado
con mayor (recuencia en la pro(esi-n de seguridad es uno /ue #us/ue el #alance adecuado entre
riesgo y (uncionalidad; i cada varia#le enviada por un usuario re/uiriera de dos (ormas de
validaci-n #iom<trica >como rastreo de retinas y an*lisis dactilar?A usted contar)a con un nivel
eFtremadamente alto de con(ia#ilidad; ,am#i<n implicar)a /ue llenar los datos de un (ormulario
razona#lemente comple'o podr)a tomar media horaA cosa /ue podr)a incentivar a los usuarios a
#uscar m<todos para es/uivar los mecanismos de seguridad;
La me'or seguridad con (recuencia es lo su(icientemente razona#le como para suplir los
re/uerimientos dados sin prevenir /ue el usuario realice su la#or de (orma naturalA y sin so#recargar
al autor del c-digo con una comple'idad eFcesiva; De hechoA algunos ata/ues de seguridad son
simples recursos /ue aprovechan las vulnera#ilidades de este tipo de seguridad so#recargadaA /ue
tiende a erosionarse con el tiempo;
@na (rase /ue vale la pena recordarC @n sistema es apenas tan #ueno como el esla#-n m*s d<#il de
una cadena; i todas las transacciones son registradas copiosamente #as*ndose en la (echaDhoraA
u#icaci-nA tipo de transacci-nA etc; pero la veri(icaci-n del usuario se realiza Bnicamente mediante
una coo"ie sencillaA la validez de atar a los usuarios al registro de transacciones es mermada
severamente;
5uando realice prue#asA tenga en mente /ue no ser* capaz de pro#ar todas las di(erentes
posi#ilidadesA incluso para las p*ginas m*s simples; Los datos de entrada /ue usted puede esperar en
sus aplicaciones no necesariamente tendr*n relaci-n alguna con el tipo de in(ormaci-n /ue podr)a
ingresar un empleado disgustadoA un crac"er con meses de tiempo entre sus manosA o un gato
dom<stico caminando so#re el teclado; +s por esto /ue es me'or o#servar el c-digo desde una
perspectiva l-gicaA para determinar en d-nde podr)an introducirse datos inesperadosA y luego hacer
un seguimiento de c-mo esta in(ormaci-n es modi(icadaA reducida o ampli(icada;
.nternet est* repleto de personas /ue tratan de crearse (ama al romper la seguridad de su c-digoA
#lo/uear su sitioA pu#licar contenido inapropiadoA y por lo dem*s haciendo /ue sus d)as sean m*s
interesantes; No importa si usted administra un sitio pe/ueWo o grandeA usted es un o#'etivo por el
simple hecho de estar en l)neaA por tener un servidor al cual es posi#le conectarse; Muchas
aplicaciones de crac"ing no hacen distinciones por tamaWosA simplemente recorren #lo/ues masivos
de direcciones .P en #usca de v)ctimas; ,rate de no convertirse en una;
Captulo *8. Instalaci"n como un binario CFI
Posibles ata?ues
+l uso de P&P como un #inario 5G. es una opci-n para el tipo de situaciones en las /ue por alguna
raz-n no se desea integrar P&P como m-dulo de algBn so(tEare de servidor Ee# >como Apache?A o
en donde se espera usar P&P con di(erentes tipos de capas /ue envuelven el entorno 5G. para crear
am#ientes chroot y setuid seguros para la e'ecuci-n de scripts; +sta con(iguraci-n usualmente
involucra la instalaci-n de un #inario e'ecuta#le del int<rprete P&P en el directorio cgi2#in del
servidor Ee#; +l aviso de seguridad de 5+R, 5A29K;11 recomienda /ue se evite la colocaci-n de
cual/uier int<rprete #a'o cgi2#in; .ncluso si el #inario P&P puede ser usado como un int<rprete
independienteA P&P est* diseWado para prevenir el tipo de ata/ues /ue esta con(iguraci-n hace
posi#leC
Acceso a archivos del sistemaC http@//mi.ser=idor/cEiF
bin/php?/etc/pass8d
La in(ormaci-n del /uery en una @RLA la cual viene despu<s del signo de interrogaci-n >N?A
es pasada como argumentos de l)nea de comandos al int<rprete por la inter(az 5G.;
@sualmente los int<rpretes a#ren y e'ecutan el archivo especi(icado como primer argumento
de la l)nea de comandos;
5uando es invocado como un #inario 5G.A P&P se rehBsa a interpretar los argumentos de la
l)nea de comandos;
Acceso a cual/uier documento Ee# en el servidorC http@//mi.ser=idor/cEiF
bin/php/0ona%secreta/doc.html
+l segmento de la @RL /ue sigue al nom#re del #inario de P&PA /ue contiene la in(ormaci-n
so#re la ruta /0ona%secreta/doc.html es usada convencionalmente para especi(icar
el nom#re de un archivo /ue ha de ser a#ierto e interpretado por el programa 5G.;
@sualmenteA algunas directivas de con(iguraci-n del servidor Ee# >ApacheC Action? son
usadas para redireccionar peticiones de documentos como
http@//mi.ser=idor/0ona%secreta/script.php al int<rprete de P&P; Ba'o
este modeloA el servidor Ee# revisa primero los permisos de acceso al directorio /
0ona%secretaA y despu<s de eso crea la petici-n de redireccionamiento a
http@//mi.ser=idor/cEiFbin/php/0ona%secreta/script.php;
Desa(ortunadamenteA si la petici-n se hace originalmente en esta (ormaA no se realizan
che/ueos de acceso por parte del servidor Ee# para el archivo /
0ona%secreta/script.phpA Bnicamente para el archivo /cEiFbin/php; De este
modoA cual/uier usuario capaz de acceder a /cEiFbin/php es capaz tam#i<n de acceder a
cual/uier documento protegido en el servidor Ee#;
+n P&PA la con(iguraci-n de tiempo de compilaci-n 22ena#le2(orce2cgi2redirect y las
directivas de con(iguraci-n en tiempo de e'ecuci-n docZroot y userZdir pueden ser usadas
para prevenir este tipo de ata/uesA si el *r#ol de documentos del servidor llegara a tener
directorio alguno con restricciones de acceso; 5onsulte las siguientes secciones para una
eFplicaci-n detallada de las di(erentes com#inaciones;
Caso !- s"lo se sir5en archi5os p4blicos
i su servidor no tiene contenido alguno /ue no est< restringido por contraseWas o control de acceso
#asado en direcciones ipA no hay ninguna necesidad de recurrir a estas opciones de con(iguraci-n; i
su servidor Ee# no le permite hacer redireccionamientosA o el servidor no tiene una (orma de
comunicarle al #inario P&P /ue la petici-n de redireccionamiento es seguraA puede especi(icar la
opci-n 22ena#le2(orce2cgi2redirect en el script de con(iguraci-n; Aun as) de#e asegurarse de /ue sus
scripts P&P no dependan de alguna (orma especial de hacer llamados al scriptA ya sea directamente
mediante http@//mi.ser=idor/cEiFbin/php/dir/script.php ni por la redirecci-n
http@//mi.ser=idor/dir/script.php;
Los redireccionamientos pueden ser con(igurados en Apache mediante el uso de directivas
Add&andler y Action >vea m*s adelante?;
Caso *- uso de ((enable(force(cgi(redirect
+sta opci-n en tiempo de compilaci-n previene /ue cual/uier persona haga llamados a P&P
directamente mediante una @RL como http@//mi.ser=idor/cEiF
bin/php/directorio%secreto/script.php; +n lugar de estoA P&P analizar*
documentos de esta (orma Bnicamente si han pasado por una regla de redirecci-n del servidor Ee#;
Por lo generalA el redireccionamiento en la con(iguraci-n de Apache es realizada con alguna de las
siguientes directivasC
,ction phpFscript /cEiFbin/php
,ddHandler phpFscript .php
+sta opci-n ha sido pro#ada Bnicamente con el servidor Ee# ApacheA y depende de /ue Apache
de(ina la varia#le de entorno no2est*ndar RED0RECT_ST,TUS a la hora de gestionar peticiones
redirigidas; i su servidor Ee# no dispone de modo alguno de comunicar si la petici-n es directa o
redirigidaA no puede usar esta opci-n y de#e recurrir a alguna de las otras (ormas documentadas a/u)
de e'ecutar la versi-n 5G.;
Caso 7- configuraci"n de doc>root o user>dir
.ncluir contenido activo en los directorios de documentos del servidor Ee#A como scripts y
e'ecuta#lesA es considerada en ocasiones una pr*ctica insegura; iA por algBn (allo de con(iguraci-nA
los scripts no llegaran a ser e'ecutados sino desplegados como documentos &,ML normalesA esto
podr)a resultar en la revelaci-n de in(ormaci-n cr)tica como tra#a'os cu#iertos por normas de
propiedad intelectual o datos de seguridad como contraseWas; Por lo tanto muchos administradores
de sistemas pre(erir*n la con(iguraci-n de otra estructura de directorios para los scripts /ue sean
ase/ui#les Bnicamente a trav<s del 5G. P&PA y por lo tanto de#en ser interpretados siempre y no
desplegados directamente;
As) mismoA si el m<todo para asegurarse de /ue las peticiones no son redireccionadasA tal y como se
descri#i- en la secci-n anteriorA no est* disponi#leA es necesario entonces con(igurar un directorio
ra)z >docZroot? de scripts /ue sea di(erente al directorio ra)z de documentos Ee#;
Puede de(inir el directorio ra)z para scripts de P&P mediante la directiva de con(iguraci-n docZroot
en el archivo de con(iguraci-nA o puede darle un valor a la varia#le de entorno
+!+_DOCUMENT_ROOT; i <sta est* de(inidaA la versi-n 5G. de P&P construir* siempre el
nom#re del archivo a a#rir con este #oc_root y la in(ormaci-n de la ruta dada en la petici-nA de
modo /ue puede estar seguro de /ue ningBn script ser* e'ecutado por (uera de este directorio
>eFcepto por a/uellos indicados en user_#6rA como se ver* a continuaci-n?;
Otra opci-n /ue puede ser usada en este caso es userZdir; 5uando userZdir no est* de(inidaA lo Bnico
/ue controla la apertura de archivos es #oc_root; A#rir una @RL como
http@//mi.ser=idor/fusuario/doc.php no resulta en la apertura de un archivo #a'o el
directorio personal del usuarioA sino de un archivo llamado fusuario/doc.php #a'o la ruta
docZroot >as) esA un directorio cuyo nom#re comienza por el car*cter de e/uivalencia PNQ?;
i userZdir est* de(inido comoA por e'emploA public%phpA una petici-n como
http@//mi.ser=idor/fusuario/doc.php a#rir* un archivo llamado doc.php #a'o el
directorio con el nom#re public%php u#icado en el directorio personal del usuario; i el
directorio personal del usuario es /home/usuarioA el archivo e'ecutado es /
home/usuario/public%php/doc.php;
La eFpansi-n del valor de user_#6r ocurre independientemente del par*metro #oc_rootA de modo
/ue es posi#le controlar el directorio ra)z de los documentos y el acceso a los directorios de los
usuarios en (orma separada;
Caso 8- int%rprete PHP por fuera del rbol 3eb
@na opci-n #astante segura es colocar el int<rprete #inario de P&P en alguna parte por (uera del
*r#ol de archivos Ee#; +n /usr/local/binA por e'emplo; +l Bnico inconveniente real con esta
alternativa es /ue ahora usted tendr* /ue colocar una l)nea como estaC
U!/usr/local/bin/php
al comienzo de cual/uier archivo /ue contenga eti/uetas P&P; ,am#i<n tendr* /ue hacer cada
archivo e'ecuta#le; +sto /uiere decir /ue de#e tratarlo eFactamente igual a como tratar)a cual/uier
otro script 5G. escrito en Perl o sh o cual/uier otro lengua'e de scripting comBn /ue usara el
mecanismo de escape2shell K_ para el lanzamiento del int<rprete;
Para lograr /ue P&P gestione correctamente la in(ormaci-n de +,T!_0N3O y
+,T!_TR,NS4,TED con este tipo de con(iguraci-nA el int<rprete P&P de#e ha#er sido compilado
con la opci-n de con(iguraci-n 22ena#le2discard2path;
Captulo *9. Instalaci"n como m"dulo de
Apache
5uando P&P es usado como un m-dulo de ApacheA hereda los permisos del usuario de Apache
>generalmente los del usuario =no#ody=?; +ste hecho representa varios impactos so#re la seguridad y
las autorizaciones; Por e'emploA si est* usando P&P para acceder a una #ase de datosA a menos /ue
tal #ase de datos disponga de un control de acceso propioA usted tendr* /ue hacer /ue la #ase de
datos sea ase/ui#le por el usuario =no#ody=; +sto /uiere decir /ue un script malicioso podr)a tener
acceso y modi(icar la #ase de datosA incluso sin un nom#re de usuario y contraseWa; +s
completamente posi#le /ue un archivador automatizado de documentos Ee# pudiera toparse con la
p*gina Ee# de administraci-n de una #ase de datosA y eliminar todas sus #ases de datos; @sted
puede protegerse de este tipo de situaciones mediante mecanismos de autorizaci-n de ApacheA o
puede diseWar su propio modelo de acceso usando LDAPA archivos .htaccessA etc; e incluir ese
c-digo como parte de sus scripts P&P;
5on (recuenciaA una vez la seguridad se ha esta#lecido en un punto en donde el usuario de P&P >en
este casoA el usuario de apache? tiene asociada una muy leve capacidad de riesgoA se descu#re /ue
P&P se encuentra ahora imposi#ilitado de escri#ir archivos en los directorios de los usuarios; O
/uiz*s se le haya desprovisto de la capacidad de acceder o modi(icar #ases de datos; e ha
prevenido eFitosamente /ue pudiera escri#ir tanto archivos #uenos como malosA o /ue pudiera
realizar transacciones #uenas o malas en la #ase de datos;
@n error de seguridad cometido con (recuencia en este punto es darle permisos de administrador
>root? a apacheA o incrementar las ha#ilidades del usuario de apache de alguna otra (orma;
+scalar los permisos del usuario de Apache hasta el nivel de administrador es eFtremadamente
peligroso y puede comprometer al sistema enteroA as) /ue el uso de entornos sudoA chrootA o
cual/uier otro mecanismo /ue sea e'ecutado como root no de#er)a ser una opci-n via#le para
a/uellos /ue no son pro(esionales en seguridad;
+Fisten otras soluciones m*s simples; Mediante el uso de openZ#asedir usted puede controlar y
restringir a/uellos directorios /ue podr)an ser usados por P&P; ,am#i<n puede de(inir *reas solo2
ApacheA para restringir todas las actividades #asadas en Ee# a archivos /ue no son de usuariosA o
del sistema;
Captulo *<. ,eguridad del sistema de archi5os
P&P est* su'eto a la seguridad misma de la mayor)a de sistemas de servidores en lo /ue a permisos
so#re archivos y directorios se re(iere; +sto le permite controlar cu*les archivos en el sistema de
archivos pueden ser le)dos; De#e tenerse cuidado con a/uellos archivos /ue tengan permisos de
lectura glo#alesA para asegurarse de /ue su contenido es seguro y no represente peligro el /ue pueda
ser le)do por todos los usuarios con acceso al sistema de archivos;
%a /ue P&P (ue diseWado para permitir acceso al nivel de usuarios al sistema de archivosA es
completamente posi#le escri#ir un script P&P /ue le permita leer archivos del sistema como D
etcDpassEdA modi(icar sus coneFiones tipo ethernetA enviar tra#a'os de impresi-n masivosA etc; +sto
tiene algunas implicaciones o#viasA en el sentido en /ue usted tiene /ue asegurarse de /ue los
archivos desde lo /ue lee y hacia los /ue escri#e datosA sean los correctos;
5onsidere el siguiente scriptA en donde un usuario indica /ue /uisiera eliminar un archivo u#icado
en su directorio personal; +ste caso asume /ue se trata de una situaci-n en donde se usa
normalmente una inter(az Ee# /ue se vale de P&P para la gesti-n de archivosA as) /ue el usuario de
Apache tiene permitido eliminar archivos en los directorios personales de los usuarios;
E'emplo *<(!. )n che?ueo pobre de 5ariables nos lle5a a...
<?php
// eliminar un archi=o del directorio personal del usuario
$nombre%usuario > $%?&*)Mnombre%en=iado%por%el%usuarioM/;
$directorio > "/home/$nombre%usuario";
$archi=o%a%eliminar > "$archi=o%de%usuario";
unlinI 3"$directorio/$archi=o%de%usuario"9;
echo "&iexcl;El archi=o $archi=o%a%eliminar ha sido eliminado!";
?>
%a /ue el nom#re de usuario es enviado desde un (ormulario de usuarioA cual/uiera puede enviar un
nom#re de usuario y archivo propiedad de otra personaA y eliminar archivos; +n este casoA usted
/uerr* usar otro m<todo de autenticaci-n; 5onsidere lo /ue sucede si las varia#les enviadas son
=;;DetcD= y =passEd=; +l c-digo entonces se e'ecutar)a e(ectivamente comoC
E'emplo *<(*. ... un ata?ue al sistema de archi5os
<?php
// elimina un archi=o de cualQuier parte del disco duro al Que el
// usuario de H tiene acceso. &i H tiene acceso de root@
$nombre%usuario > "../etc/";
$directorio > "/home/../etc/";
$archi=o%a%eliminar > "pass8d";
unlinI 3"/home/../etc/pass8d"9;
echo "&iexcl;El archi=o /home/../etc/pass8d ha sido eliminado!";
?>
&ay dos importantes medidas /ue usted de#e tomar para prevenir estas situaciones;
Otorgarle Bnicamente permisos limitados al usuario Ee# del #inario P&P;
5he/uear todas las varia#les /ue son enviadas por usuarios;
A/u) hay una versi-n me'orada del scriptC
E'emplo *<(7. )n che?ueo de nombres de archi5os ms seguro
<?php
// elimina un archi=o de cualQuier parte del disco duro al Que el
// usuario de H tiene acceso.
$nombre%usuario > $%&E'(E')M'E"?*E%+&E'M/; // uso de un mecanismo de
// autenticacion
$directorio > "/home/$nombre%usuario";
$archi=o%a%eliminar > basename3"$archi=o%de%usuario"9; // remo=er rutas
unlinI 3$directorio/$archi=o%a%eliminar9;
$#p > #open3"/home/reEistros/eliminacion.loE","[a"9; // reEistrar el proceso
$cadena%de%reEistro > "$nombre%usuario $directorio $archi=o%a%eliminar";
#8rite 3$#p, $cadena%de%reEistro9;
#close3$#p9;
echo "&iexcl;El archi=o $archi=o%a%eliminar ha sido eliminado!";
?>
in em#argoA incluso este caso no est* li#re de pro#lemas; i su sistema de autenticaci-n le ha
permitido a los usuarios la creaci-n de sus propios nom#res en el sistemaA y un usuario elige
=;;DetcD=A el sistema se encuenrta nuevamente eFpuesto; Por esta raz-nA puede /ue uster pre(iera
escri#ir un che/ueo m*s personalizadoC
E'emplo *<(8. Che?ueo de nombres de archi5os aun ms seguro
<?php
$nombre%usuario > $%&E'(E')M'E"?*E%+&E'M/; // uso de un mecanismo de
// autenticacion
$directorio > "/home/$nombre%usuario";
i# 3!ereE3Mc)c.//)c//W$M, $archi=o%de%usuario99
die3Mnombre de archi=o in=&aacute;lidoM9; // #inali0ar,
// no ejecutar el proceso
i# 3!ereE3Mc)c.//)c//W$M, $nombre%usuario99
die3Mnombre de archi=o in=&aacute;lidoM9; // #inali0ar,
// no ejecutar el proceso
//etc...
?>
Dependiendo de su sistema operativoA eFiste una amplia variedad de archivos so#re los /ue usted
de#er)a estar atentoA incluyendo las entradas de dispositivos >DdevD o 5OM1?A archivos de
con(iguraci-n >archivos DetcD y los archivos ;ini?A areas conocidas de almacenamiento de datos
>DhomeDA Mis Documentos?A etc; Por esta raz-nA usualmente es m*s sencillo crear una pol)tica en
donde se proh)#a toda transacci-n eFcepto por a/uellas /ue usted permita eFpl)citamente;
Captulo *=. ,eguridad de 1ases de Katos
&oy en d)aA las #ases de datos son componentes cardinales de cual/uier aplicaci-n #asada en Ee#A
permitiendo /ue los sitios Ee# provean contenido din*mico; De#ido a /ue in(ormaci-n
considera#lemente sensi#le o secreta puede ser almacenada en una #ase de datosA usted de#e
considerar seriamente la protecci-n de sus #ases de datos;
Para recuperar o almacenar cual/uier in(ormaci-n necesita conectarse a la #ase de datosA enviar una
consulta v*lidaA recoger el resultado y cerrar la coneFi-n; &oy en d)aA el lengua'e de consultas usado
comBnmente en estas interacciones es el Lengua'e de 5onsultas +structurado >OL por sus siglas en
.ngl<s?; Puede apreciar c-mo un atacante puede intentar acometidas con una consulta OL;
5omo puede suponerA P&P no puede proteger su #ase de datos por s) solo; Las siguientes secciones
est*n dirigidas a servir de introducci-n a los conceptos #*sicos de c-mo acceder y manipular #ases
de datos desde scripts P&P;
Mantenga en mente esta simple reglaC protecci-n en pro(undidad; +ntre m*s acciones tome para
incrementar la protecci-n de su #ase de datosA menor ser* la pro#a#ilidad de /ue un atacante tenga
<Fito eFponiendo o a#usando de cual/uier in(ormaci-n almacenada; @n #uen diseWo del es/uema de
la #ase de datos y de la aplicaci-n #asta para lidiar con sus mayores temores;
KiseWo de 1ases de Katos
+l primer paso siempre es crear la #ase de datosA a menos /ue desee usar una creada por alguien
m*s; 5uando una #ase de datos es creadaA <sta es asignada a un dueWoA /uien e'ecut- la sentencia de
creaci-n; @sualmenteA Bnicamente el dueWo >o un super2usuario? puede hacer cual/uier cosa con los
o#'etos de esa #ase de datosA y para /ue otros usuarios puedan usarlaA de#en otorgarse privilegios;
Las aplicaciones nunca de#er)an conectarse a la #ase de datos #a'o el usuario correspondiente a su
dueWoA o como un super2usuarioA ya /ue <stos usuarios puedenA por e'emploA e'ecutar cual/uier
consulta a su anto'oA modi(icando el es/uema >p; e'; eliminando ta#las? o #orrando su contenido
completo;
@sted puede crear di(erentes usuarios de la #ase de datos para cada aspecto de su aplicaci-n con
derechos muy limitados so#re los o#'etos de la #ase de datos; ,an solo de#en otorgarse los
privilegios estrictamente necesariosA y evitar /ue el mismo usuario pueda interactuar con la #ase de
datos en di(erentes casos de uso; +sto /uiere decir /ue si un intruso gana acceso a su #ase de datos
usando las credenciales de sus aplicacionesA <l solo puede e(ectuar tantos cam#ios como su
aplicaci-n se lo permita;
+s #uena idea /ue no implemente toda la l-gica del asunto en la aplicaci-n Ee# >es decirA en su
script?X en su lugarA h*galo en el es/uema de la #ase de datos usando vistasA disparadores o reglas; i
el sistema evolucionaA se espera /ue nuevos puertos sean a#iertos a la aplicaci-nA y tendr* /ue re2
implementar la l-gica para cada cliente de la #ase de datos; Por so#re todoA los disparadores pueden
ser usados para gestionar de (orma transparente todos los campos autom*ticamenteA lo cual con
(recuencia provee in(ormaci-n Btil cuando se depuren pro#lemas de su aplicaci-nA o se realicen
rastreos so#re transacciones particulares;
Cone+i"n con la 1ase de Katos
Puede /ue desee esta#lecer las coneFiones so#re L para encriptar las comunicaciones
clienteDservidorA incrementando el nivel de seguridadA o puede hacer uso de ssh para encriptar la
coneFi-n de red entre los clientes y el servidor de la #ase de datos; i cual/uiera de estos recursos es
usadoA entonces monitorear su tr*(ico y ad/uirir in(ormaci-n so#re su #ase de datos ser* di()cil para
un atacante potencial;
Modelo de Almacenamiento Encriptado
LD& protege los datos /ue via'an desde el cliente al servidorA LD& no protege los datos
persistentes almacenados en la #ase de datos; L es un protocolo so#re2el2ca#le;
@na vez el atacante ad/uiere acceso directo a su #ase de datos >evitando el paso por el servidor
Ee#?A los datos cr)ticos almacenados pueden estar eFpuestos o malutilizadosA a menos /ue la
in(ormaci-n est< protegida en la #ase de datos misma; La encriptaci-n de datos es una #uena (orma
de mitigar esta amenazaA pero muy pocas #ases de datos o(recen este tipo de mecanismo de
encriptaci-n de datos;
La (orma m*s sencilla de evitar este pro#lema es crear primero su propio pa/uete de encriptaci-nA y
luego utilizarlo desde sus scripts de P&P; P&P puede ayudarle en este sentido con varias
eFtensionesA como Mcrypt y MhashA las cuales cu#ren una amplia variedad de algoritmos de
encriptaci-n; +l script encripta los datos antes de insertarlos en la #ase de datosA y los decripta
cuando los recupera; $ea las re(erencias para consultar m*s e'emplos de c-mo opera la encriptaci-n;
+n el caso de datos realmente escondidosA si su representaci-n original no se necesita >es decirA no
de#e ser desplegada?A los resBmenes criptogr*(icos pueden llegar a considerarse tam#i<n; +l e'emplo
cl*sico de gesti-n de resBmenes criptogr*(icos es el almacenamiento de secuencias MD4 de una
contraseWa en una #ase de datosA en lugar de la contraseWa misma; $ea tam#i<n crypt./ y md9./;
E'emplo *=(!. )so de un campo de contraseWas encriptado
<?php
// almacenamiento de resumen criptoEra#ico de la contrasenya
$consulta > sprint#3"4.&E'* 4.*? usuarios3nombre,contr9 (,O+E&3M\sM,M\sM9;",
addslashes3$nombre%usuario9, md53$contrasenya99;
$resultado > pE%exec3$conexion, $consulta9;
// consulta de =eri#icacion de la contrasenya en=iada
$consulta > sprint#3"&EOER* 6 S'?" usuarios 7HE'E nombre>M\sM ,.L contr>M\sM;",
addslashes3$nombre%usuario9, md53$contrasenya99;
$resultado > pE%exec3$conexion, $consulta9;
i# 3pE%numro8s3$resultado9 > 29 :
echo "&iexcl;Zien=enido, $nombre%usuario!";
;
else :
echo ".o pudo autenticarse a $nombre%usuario.";
;
?>
Inyecci"n de ,$:
Muchos desarrolladores Ee# no son conscientes de c-mo pueden manipularse las consultas OLA y
asumen /ue una consulta OL es un comando con(ia#le; +sto representa /ue las consultas OL
pueden #urlar los controles de accesoA y de este modo evitar los che/ueos est*ndares de
autenticaci-n y autorizaci-nA y a veces las consultas OL pueden incluso permitir acceso a
comandos al nivel del sistema operativo de la m*/uina hu<sped;
La .nyecci-n Directa de 5omandos OL es una t<cnica en la cual un atacante crea o altera
comandos OL eFistentes para eFponer datos escondidosA o so#rescri#ir datos cr)ticosA o incluso
e'ecutar comandos del sistema peligrosos en la m*/uina en donde se encuentra la #ase de datos;
+sto se consigue cuando la aplicaci-n toma in(ormaci-n de entrada del usuario y la com#ina con
par*metros est*ticos para construir una consulta OL; Los siguientes e'emplosA desa(ortunadamenteA
est*n #asados en historias reales;
De#ido a la (alta de validaci-n de la in(ormaci-n de entrada y el esta#lecimiento de coneFiones con
la #ase de datos desde un super2usuario o a/uel /ue puede crear usuariosA el atacante podr)a crear un
super2usuario en su #ase de datos;
E'emplo *=(*. Paginaci"n del con'unto de resultados ... y creaci"n de super(usuarios
.Postgre,$: y My,$:/
<?php
$o##set > arE=)2/; // atencion, no se =alida la entrada!
$consulta > "&EOER* id, nombre S'?" productos ?'LE' ZP nombre O4"4* C2 " .
"?SS&E* $o##set;";
// con ostEre&NO
$resultado > pE%exec3$conexion, $consulta9;
// con "y&NO
$resultado > mysQl%Query3$consulta9;
?>
Los usuarios normales pulsan so#re los enlaces HsiguienteH y HanteriorHA en donde el desplazamiento
>'o99set? se encuentra codi(icado en la @RL; +l script espera /ue el valor entrante 'o99set sea un
nBmero decimal; in em#argoA /u< sucede si alguien intenta un ata/ue aWadiendo una (orma
codi(icada >urlencode./? de lo siguiente en la @RL
// en el caso de ostEre&NO
2;
insert into pE%shado83usename,usesysid,usesuper,usecatupd,pass8d9
select McracIM, usesysid, MtM,MtM,McracIM
#rom pE%shado8 8here usename>MpostEresM;
FF
// en el caso de "y&NO
2;
+L,*E user &E* ass8ord>,&&7?'L3McracIM9 7HE'E user>MrootM;
SO+&H '4(4OE-E&;
i esto ocurrieraA entonces el script le presentar)a un acceso de superusuario al atacante; Note /ue 0J
es usado para o(recer un desplazamiento v*lido a la consulta original y (inalizarla;
Nota- +s una t<cnica comBn o#ligar al analizador sint*ctico de OL a /ue ignore el
resto de la consulta escrita por el desarrollador mediante ==A el cual es el signo de
comentarios en OL;
@na (orma via#le de ad/uirir contraseWas es 'ugar con las p*ginas de resultados de #Bs/uedas; Lo
Bnico /ue necesita el atacante es ver si eFisten varia#les enviadas por el usuario /ue sean usadas en
sentencias OLA y /ue no sean tratadas apropiadamente; +stos (iltros pueden u#icarse por lo general
previos a cl*usulas I!EREC ORDER ABC 40M0T y O33SET en sentencias SE4ECT para
personalizar la instrucci-n; i su #ase de datos soporta la construcci-n UN0ONA el atacante puede
intentar aWadir una consulta completa a la consulta original para generar una lista de contraseWas
desde una ta#la cual/uiera; +l uso de campos encriptados de contraseWas es altamente
recomenda#le;
E'emplo *=(7. :istado de artculos ... y algunas contraseWas .en cual?uier base de datos/
<?php
$consulta > "&EOER* id, nombre, insertado, tam S'?" productos
7HE'E tam > M$tamM
?'LE' ZP $orden O4"4* $limite, $o##set;";
$resultado > odbc%exec3$conexion, $consulta9;
?>
La parte est*tica de la consulta puede com#inarse con otra sentencia SE4ECT la cual revela todas
las contraseWasC
M
union select M6M, concat3unameTTMFMTTpass8d9 as name, M6KH6F26F26M, M2M #rom usertable;
FF
i esta consulta >la cual 'uega con < y ==? (uera asignada a una de las varia#les usadas en 'consultaA
la #estia de la consulta ha#r* despertado;
Las sentencias @PDA,+ de OL son tam#i<n suscepti#les a ata/ue; [stas consultas tam#i<n se
encuentran amenazadas por un posi#le acotamiento y adici-n de una consulta completamente nueva;
Pero en este caso el atacante puede amaWar la in(ormaci-n de una cl*usula SET; +n este caso se
re/uiere contar con cierta in(ormaci-n so#re el es/uema de la #ase de datos para poder manipular la
consulta satis(actoriamente; +sta in(ormaci-n puede ser ad/uirida mediante el estudio de los
nom#res de varia#les de los (ormulariosA o simplemente por (uerza #ruta; No eFisten demasiadas
convenciones para nom#rar campos de contraseWas o nom#res de usuario;
E'emplo *=(8. Ke restablecer una contraseWa ... a ad?uirir ms pri5ilegios .con cual?uier
ser5idor de base de datos/
<?php
$consulta > "+L,*E usertable &E* p8d>M$p8dM 7HE'E uid>M$uidM;";
?>
Pero un usuario malicioso env)a el valor < or u6# l6>e<Ta#m6nT<J == como 'u6# para cam#iar la
contraseWa del administradorA o simplemente esta#lece 'p7# a *hehehe<C a#m6n:<?es<C truste#:100
* >con un espacio al inicio? para ad/uirir m*s privilegios; +n tal casoA la consulta ser)a manipuladaC
<?php
// $uid >> M or uid liIeM\admin\M; FF
$consulta > "+L,*E usertable &E* p8d>M...M 7HE'E uid>MM or uid liIe M\admin\M; FF";
// $p8d >> "heheheM, admin>MyesM, trusted>622 "
$consulta > "+L,*E usertable &E* p8d>MheheheM, admin>MyesM, trusted>622 7HE'E ...;"
?>
@n horri#le e'emplo de c-mo puede accederse a comandos del nivel del sistema operativo en
algunas m*/uinas an(itrionas de #ases de datos;
E'emplo *=(9. Ata?ue al sistema operati5o de la m?uina anfitriona de la base de datos
.M,,$: ,er5er/
<?php
$consulta > "&EOER* W S'?" productos 7HE'E id O4]E M\$prod\M";
$resultado > mssQl%Query3$consulta9;
?>
i el atacante env)a el valor aT< e8ec master..8p_cm#shell <net user test testpass /,DD< == a 'pro#A
entones la 'consulta ser*C
<?php
$consulta > "&EOER* W S'?" productos
7HE'E id O4]E M\a\M
exec master..xp%cmdshell Mnet user test testpass /,LLMFF";
$resultado > mssQl%Query3$consulta9;
?>
MOL erver e'ecuta sentencias OL en el loteA incluyendo un comando para agregar un nuevo
usuario a la #ase de datos de cuentas locales; i esta aplicaci-n estuviera corriendo como sa y el
servicio MOL+R$+R est* corriendo con los privilegios su(icientesA el atacante tendr)a ahora
una cuenta con la /ue puede acceder a esta m*/uina;
Nota- Algunos de los e'emplos anteriores est*n atados a un servidor de #ase de datos
espec)(ico; +sto no /uiere decir /ue un ata/ue similar sea imposi#le con otros
productos; u #ase de datos puede ser vulnera#le de (orma seme'anteA en alguna otra
manera;
T%cnicas de protecci"n
@sted puede argumentar con 'usta raz-n /ue el atacante de#e poseer cierta cantidad de in(ormaci-n
so#re el es/uema de la #ase de datos en la mayor)a de e'emplos /ue hemos visto; ,iene raz-nA pero
usted nunca sa#e cu*ndo y c-mo puede (iltrarse esta in(ormaci-nA y si ocurreA su #ase de datos
estar* eFpuesta; i est* usando un pa/uete de gesti-n de #ases de datos de c-digo a#iertoA o cuyo
c-digo (uente est* disponi#le pB#licamenteA el cual puede pertenecer a algBn sistema de
administraci-n de contenido o (oroA los intrusos pueden producir (*cilmente una copia de un trozo
de su c-digo; ,am#i<n puede ser un riesgo de seguridad si es un segmento de c-digo po#remente
diseWado;
+stos ata/ues se #asan principalmente en la eFplotaci-n del c-digo /ue no ha sido escrito pensando
en la seguridad; Nunca con()e en ningBn tipo de in(ormaci-n de entradaA especialmente a/uella /ue
proviene del lado del clienteA aun si lo hace desde una ca'a de selecci-nA un campo de entrada
hidden o una coo"ie; +l primer e'emplo le muestra /ue una consulta as) de descuidada puede causar
desastres;
Nunca se conecte a la #ase de datos como un super2usuario o como el dueWo de la #ase de
datos; @se siempre usuarios personalizados con privilegios muy limitados;
Revise si la entrada reci#ida es del tipo apropiado; P&P posee un amplio rango de (unciones
de validaci-n de datosA desde los m*s simples encontrados en Funciones so#re varia#les y en
Funciones de tipo de caracter >p; e'; is>numeric./A ctype>digit./ respectivamente? hasta el
soporte para +Fpresiones Regulares compati#les con Perl;
i la aplicaci-n espera alguna entrada num<ricaA considere la veri(icaci-n de in(ormaci-n
con is>numeric./A o modi(i/ue silenciosamente su tipo usando settype./A o utilice su
representaci-n num<ricaA dada por sprintf./;
E'emplo *=(<. )na forma ms segura de generar una consulta para paginado
<?php
settype3$o##set, MinteEerM9;
$consulta > "&EOER* id, nombre S'?" productos ?'LE' ZP nombre " .
"O4"4* C2 ?SS&E* $o##set;";
// note el simbolo \d en la cadena de #ormato, usar \s no tendria sentido
$consulta > sprint#3"&EOER* id, nombre S'?" productos ?'LE' ZP nombre" .
"O4"4* C2 ?SS&E* \d;", $o##set9;
?>
@#i/ue cada entrada del usuario no2num<rica /ue sea pasada a la #ase de datos entre
comillas con addslashes./ o addcslashes./; $ea el primer e'emplo; 5omo se ve all)A las
comillas colocadas en la parte est*tica de la consulta no son su(icientesA y pueden ser
manipuladas (*cilmente;
No imprima ninguna in(ormaci-n espec)(ica so#re la #ase de datosA especialmente so#re su
es/uemaA ya sea por razones 'ustas o por Wocaciones; $ea tam#i<n Reporte de +rrores y
Gesti-n de +rrores y Funciones de Registro;
Puede usar procedimientos almacenados y cursores previamente de(inidos para a#straer el
acceso a las #ases de datosA de modo /ue los usuarios no tengan acceso directo a las ta#las o
vistasA aun/ue esta soluci-n tiene otros impactos;
Adem*s de estas accionesA usted puede #ene(iciarse del registro eFpl)cito de las consultas realizadasA
ya sea desde su script o por la #ase de datos mismaA si <sta soporta la gesti-n de registros; Por
supuestoA el registro de acciones no puede prevenir cual/uier intento peligrosoA pero puede ser Btil
para rastrear cu*les aplicaciones han sido usadas para violar la seguridad; +l registro en s) no es BtilX
lo es la in(ormaci-n /ue contiene; Por lo generalA es me'or contar con m*s detalles /ue con menos;
Captulo *N. Meporte de Errores
&a#lando de la seguridad en P&PA hay dos caras en lo /ue se concierne al reporte de errores; @na es
#en<(ica al incremento de la seguridadA la otra va en direcci-n de su detrimento;
@na t*ctica de ata/ue t)pica involucra la acumulaci-n de un per(il de datos del sistema
aliment*ndolo con datos inapropiadosA y luego che/uear los tipos de errores /ue son devueltosA y
sus conteFtos; +sto permite /ue el crac"er del sistema pueda ad/uirir in(ormaci-n del servidorA para
as) determinar posi#les de#ilidades; Por e'emploA si un atacante ha recogido in(ormaci-n so#re una
p*gina creada a partir de los datos de un (ormularioA <l podr)a intentar so#rescri#ir las varia#lesA o
modi(icarlasC
E'emplo *N(!. Ata?ue a Cariables con una pgina HTM: personali6ada
<#orm method>"post" action>"destino%del%ataQue?username>bad#oo&amp;pass8ord>bad#oo">
<input type>"hidden" name>"username" =alue>"bad#oo" />
<input type>"hidden" name>"pass8ord" =alue>"bad#oo" />
</#orm>
Los errores de P&P /ue son devueltos normalmente pueden ser #astante Btiles para un desarrollador
/ue est< tratando de depurar un scriptA indicando cosas como la (unci-n o archivo /ue (all-A el
archivo P&P y el nBmero de l)nea en donde ocurren los (allos; ,oda esta es in(ormaci-n de la /ue
puede sacarse provecho; No es eFtraWo /ue un desarrollador php use sho3>source./A
highlight>string./A o highlight>file./ como medida de depuraci-nA pero en un sitio en producci-nA
esta acci-n puede eFponer varia#les ocultasA sintaFis sin che/uearA y otra in(ormaci-n peligrosa;
Algo especialmente peligroso es e'ecutar c-digo /ue proviene de (uentes #ien conocidas con
gestores de depuraci-n incorporadosA o /ue usan t<cnicas de depuraci-n comunes; i el atacante
puede determinar /u< t<cnica general est* usandoA puede intentar un ata/ue de (uerza #ruta so#re
una p*ginaA enviando varias cadenas comunes de depuraci-nC
E'emplo *N(*. E+plotaci"n de 5ariables comunes de depuraci"n
<#orm method>"post" action>"destino%del%ataQue?errors>P&amp;sho8errors>6&amp;debuE>6">
<input type>"hidden" name>"errors" =alue>"P" />
<input type>"hidden" name>"sho8errors" =alue>"6" />
<input type>"hidden" name>"debuE" =alue>"6" />
</#orm>
.ndependientemente del m<todo de gesti-n de erroresA la capacidad de conseguir /ue un sistema
revele sus posi#les estados de error representa un camino para darle in(ormaci-n al atacante;
Por e'emploA el estilo mismo de un error de P&P gen<rico indica /ue el sistema est* e'ecutando
P&P; i el atacante estuviera viendo una p*gina ;htmlA y /uisiera consultar /u< est* siendo usado
para la generaci-n de ella por detr*s >en #usca de de#ilidades conocidas en el sistema?A podr)a
determinar /ue el sistema (ue creado usando P&P aliment*ndolo con in(ormaci-n Wocada;
@n error de (unci-n puede indicar si el sistema est* e'ecutando un tipo particular de motor de #ase
de datosA o dar pistas so#re c-mo (ue programada o diseWada una p*gina Ee#; +sto (acilita
posteriores investigaciones en determinados puertos a#iertos de #ases de datosA o en #usca de (allos
espec)(icos o de#ilidades en una p*gina Ee#; Al entregar di(erentes trozos de datos inv*lidos al
sistemaA por e'emploA un atacante puede determinar el orden de autenticaci-n en un scriptA >a partir
de los nBmeros de l)nea de los errores? as) como averiguar so#re vulnera#ilidades /ue pueden
aprovecharse en di(erentes puntos del script;
@n error del sistema de archivos o en general de P&P puede indicar /u< permisos tiene el servidor
Ee#A as) como la estructura y organizaci-n de los archivos en el servidor Ee#; AlgBn c-digo de
gesti-n de errores escrito por el desarrollador puede agravar este pro#lemaA llevando a la (*cil
eFplotaci-n de in(ormaci-n hasta entonces =escondida=;
+Fisten tres soluciones principales a este pro#lema; La primera es revisar cuidadosamente todas las
(uncionesA y tratar de compensar por la mayor)a de errores encontrados; La segunda es desha#ilitar
el reporte de errores completamente del c-digo /ue est* siendo e'ecutado; La tercera es usar las
(unciones de gesti-n de errores personaliza#les de P&P para crear su propio gestor de errores;
Dependiendo de su pol)tica de seguridadA puede encontrar /ue todas ellas pueden ser aplica#les a su
situaci-n;
@na (orma de detectar este pro#lema por adelantado es hacer uso del reporte de errores propio de
P&P >error>reporting./?A para ayudarle a asegurar su c-digo y encontrar uso de varia#les /ue
pueda ser peligroso; Al pro#ar su c-digoA previamente a su entrega (inalA con +ZALLA puede
encontrar r*pidamente *reas en donde sus varia#les pueden estar a#iertas a la manipulaci-n y
eFplotaci-n en distintas (ormas; @na vez est< listo para li#erar su c-digoA usando +ZNON+ puede
aislarlo de posi#les intentos por ad/uirir in(ormaci-n Btil para un atacante;
E'emplo *N(7. Ketecci"n de 5ariables peligrosas con E>A::
<?php
i# 3$nombre%usuario9 : // (ariable no iniciali0ada o cheQueada antes de su uso
$loEin%correcto > 6;
;
i# 3$loEin%correcto >> 69 : // &i la condicion anterior #alla, esta =ariable
// no se encuentra iniciali0ada ni =alidada
// antes de su uso
read#ile 3"/in#ormacion/altamente/con#idencial/index.html"9;
;
?>
Captulo *O. )so de Megister Flobals
Ouiz*s el cam#io m*s controversial en la historia de P&P se ha dado cuando la directiva
registerZglo#als pas- de tener como valor por de(ecto ON al valor OFF en P&P 8;0;3; La
dependencia so#re esta directiva era #astante comBn y muchas personas nisi/uiera esta#an enteradas
de /ue eFist)a y asum)an /ue ese era el modo en /ue P&P tra#a'a#a; +sta p*gina eFplicar* c-mo
puede llegar a escri#irse c-digo inseguro con esta directiva pero tenga en mente /ue no es la
directiva misma la /ue es insegura sino el uso inapropiado de ella;
5uando se encuentra activaA la directiva registerZglo#als inyectar* >o envenenar*? sus scripts con
todo tipo de varia#lesA como varia#les de peticiones provenientes de (ormularios &,ML; +sto 'unto
con el hecho de /ue P&P no re/uiere la inicializaci-n de varia#les signi(ica /ue es muy (*cil escri#ir
c-digo inseguro; Fue una decisi-n di()cilA pero la comunidad de P&P decidi- desahi#ilar esta
directiva por de(ecto; 5uando est* ha#ilitadaA las personas usan varia#les sin sa#er con seguridad de
d-nde provienen y solo /ueda asumir; Las varia#les internas /ue son de(inidas en el script mismo
son mezcladas con los datos enviados por los usuarios y al desha#ilitar registerZglo#als se modi(ica
este comportamiento; Demostremos este caso con un e'emplo del uso incorrecto de registerZglo#alsC
E'emplo *O(!. E'emplo del uso inapropiado de register>globals H on
<?php
// de#inir $autori0ado > true solo si el usuario ha sido autenticado
i# 3usuario%autenticado399 :
$autori0ado > true;
;
// Pa Que no iniciali0amos $autori0ado como #alse, esta podria estar
// de#inida a tra=es de reEister%Elobals, como en el caso de -E*
// auth.php?autori0ado>6
// Le modo Que cualQuier persona podria =erse como autenticada!
i# 3$autori0ado9 :
include "/datos/muy/importantes.php";
;
?>
5uando registerZglo#als ^ onA nuestra l-gica anterior podr)a verse comprometida; 5uando la
directiva est* desha#ilitadaA 'autor6Da#o no puede de(inirse a trav<s de peticionesA as) /ue no ha#r*
ningBn pro#lemaA aun/ue es cierto /ue siempre es una #uena pr*ctica de programaci-n inicializar
las varia#les primero; Por e'emploA en nuestro e'emplo anterior pudimos ha#er realizado primero
algo como 'author6De# : 9alse; &acer esto representa /ue el c-digo anterior podr)a (uncionar con
registerZglo#als esta#lecido a on u o(( ya /ue los usuarios no ser)an autorizados por de(ecto;
Otro e'emplo es a/uel de las sesiones; 5uando registerZglo#als ^ onA podr)amos usar tam#i<n
'nom1re_usuar6o en nuestro siguiente e'emploA pero nuevamente usted de#e notar /ue
'nom1re_usuar6o puede provenir de otros mediosA como G+, >a trav<s de la @RL?;
E'emplo *O(*. E'emplo del uso de sesiones con register>globals on u off
<?php
// .o sabriamos de donde pro=iene $nombre%usuario, pero sabemos Que
// $%&E&&4?. es para datos de sesion
i# 3isset3$%&E&&4?.)Mnombre%usuarioM/99 :

echo "Hola <b>:$%&E&&4?.)Mnombre%usuarioM/;</b>";
; else :

echo "Hola <b>4n=itado</b><br />";
echo "&iQuest;Nuisiera iniciar su sesi&oacute;n?";
;
?>
.ncluso es posi#le tomar medidas preventivas para advertir cuando se intente (alsi(icar la
in(ormaci-n; i usted sa#e previamente con eFactitud el lugar de donde de#er)a provenir una
varia#leA usted puede che/uear si los datos enviados provienen de una (uente inadecuada; Aun/ue
esto no garantiza /ue la in(ormaci-n no haya sido (alsi(icadaA esto re/uiere /ue un atacante adivine
el medio apropiado para (alsi(icar la in(ormaci-n; i no le importa de d-nde proviene la
in(ormaci-nA puede usar '_RE5UEST ya /ue all) se incluye una mezcla de varia#les /ue provienen
de datos G+,A PO, y 5OOS.+; 5onsulte tam#i<n la secci-n del manual so#re el uso de varia#les
desde (uera de P&P;
E'emplo *O(7. Ketecci"n de en5enenamiento simple de 5ariables
<?php
i# 3isset3$%R??]4E)MR??]4E%",-4R,M/99 :

// R??]4E%",-4R, pro=iene de una cooIie.
// ,seEurese de =alidar los datos de la cooIie!
; elsei# 3isset3$%-E*)MR??]4E%",-4R,M/9 TT isset3$%?&*)MR??]4E%",-4R,M/99 :

mail3"admin^ejemplo.com", "osible intento de intromision",
$%&E'(E')M'E"?*E%,LL'M/9;
echo "(iolaci&oacute;n de seEuridad, el administrador ha sido alertado.";
exit;
; else :

// R??]4E%",-4R, no #ue de#inida en este 'EN+E&*
;
?>
Por supuestoA desha#ilitar registerZglo#als no /uiere decir /ue su c-digo vaya a ser seguro; Por cada
trozo de datos /ue sea enviado por el usuarioA <ste de#e ser che/ueado en otras (ormas; fiempre
valide los datos de los usuarios e inicialice sus varia#lesa Para che/uear por varia#les no
inicializadasA usted puede usar error>reporting./ para mostrar errores del nivel E_NOTICE;
,uperglobals- Nota de disponibilidad- Desde 8;1;3A est*n disponi#les algunas
matrices superglo#ales tales como '_-ETA '_+OSTA y '_SER(ERA etc; Para m*s
in(ormaci-n puede consultar la secci-n superglo#als
Captulo 7D. Katos En5iados por el )suario
Las mayores de#ilidades de muchos programas P&P no son inherentes al lengua'e mismoA sino
simplemente un pro#lema generado cuando se escri#e c-digo sin pensar en la seguridad; Por esta
raz-nA usted de#er)a tomarse siempre el tiempo para considerar las implicaciones de cada pedazo de
c-digoA para averiguar el posi#le peligro involucrado cuando una varia#le inesperada es enviada;
E'emplo 7D(!. )so Peligroso de Cariables
<?php
// eliminar un archi=o del directorio personal del usuario .. o
// Qui0as de alEuien mas?
unlinI 3$=ariable%mal=ada9;
// 4mprimir el reEistro del acceso... o Qui0as una entrada de /etc/pass8d?
#8rite 3$desc%archi=o, $=ariable%mal=ada9;
// Ejecutar alEo tri=ial.. o rm Fr# W?
system 3$=ariable%mal=ada9;
exec 3$=ariable%mal=ada9;
?>
@sted de#er)a eFaminar siempreA y cuidadosamente su c-digo para asegurarse de /ue cual/uier
varia#le siendo enviada desde un navegador Ee# sea che/ueada apropiadamenteA y preguntarse a s)
mismoC
U+ste script a(ectar* Bnicamente los archivos /ue se pretendeN
UPuede tomarse acci-n so#re datos inusuales o indeseadosN
UPuede ser usado este script en (ormas malintencionadasN
UPuede ser usado en con'unto con otros scripts en (orma negativaN
Uer*n adecuadamente registradas las transaccionesN
Al preguntarse adecuadamente estas preguntas mientras escri#e su scriptA en lugar de hacerlo
posteriormenteA usted previene una desa(ortunada re2implementaci-n del programa cuando desee
incrementar el nivel de seguridad; Al comenzar con esta mentalidadA no garantizar* la seguridad de
su sistemaA pero puede ayudar a me'orarla;
Puede /ue tam#i<n desee considerar la desha#ilitaci-n de registerZglo#alsA magicZ/uotesA u otros
par*metros convenientes /ue pueden causar con(usi-n so#re la validezA (uente o valor de una
determinada varia#le; ,ra#a'ar con P&P en modo errorZreporting>+ZALL? tam#i<n puede ayudarle
a advertir varia#les /ue est*n siendo usadas antes de ser che/ueadas o inicializadas >de modo /ue
puede prevenir /ue datos inusuales produzcan operaciones inadvertidas?;
Captulo 7!. Magic $uotes
Magic Ouotes is a process that automagically escapes incoming data to the P&P script; .tHs pre(erred
to code Eith magic /uotes o(( and to instead escape the data at runtimeA as needed;
2hat are Magic $uotes
Lhen onA all < >single2/uote?A * >dou#le /uote?A Q >#ac"slash? and NU44 characters are escaped Eith
a #ac"slash automatically; ,his is identical to Ehat addslashes./ does;
,here are three magic /uote directivesC
magicZ/uotesZgpc
A((ects &,,P Re/uest data >G+,A PO,A and 5OOS.+?; 5annot #e set at runtimeA and
de(aults to on in P&P;
ee also get>magic>?uotes>gpc./;
magicZ/uotesZruntime
.( ena#ledA most (unctions that return data (rom an eFternal sourceA including data#ases and
teFt (ilesA Eill have /uotes escaped Eith a #ac"slash; 5an #e set at runtimeA and de(aults to
on in P&P;
ee also set>magic>?uotes>runtime./ and get>magic>?uotes>runtime./;
magicZ/uotesZsy#ase
.( ena#ledA a single2/uote is escaped Eith a single2/uote instead o( a #ac"slash; .( onA it
completely overrides magicZ/uotesZgpc; &aving #oth directives ena#led means only single
/uotes are escaped as <<; Dou#le /uotesA #ac"slashes and N@LLHs Eill remain untouched and
unescaped;
ee also ini>get./ (or retrieving its value;
2hy use Magic $uotes
@se(ul (or #eginners
Magic /uotes are implemented in P&P to help code Eritten #y #eginners (rom #eing
dangerous; Although OL .n'ection is still possi#le Eith magic /uotes onA the ris" is
reduced;
5onvenience
For inserting data into a data#aseA magic /uotes essentially runs addslashes./ on all GetA
PostA and 5oo"ie dataA and does so automagically;
2hy not to use Magic $uotes
Porta#ility
Assuming it to #e onA or o((A a((ects porta#ility; @se get>magic>?uotes>gpc./ to chec" (or
thisA and code accordingly;
Per(ormance
Because not every piece o( escaped data is inserted into a data#aseA there is a per(ormance
loss (or escaping all this data; imply calling on the escaping (unctions >li"e addslashes./? at
runtime is more e((icient;
Although php.iniFdist ena#les these directives #y de(aultA php.iniFrecommended
disa#les it; ,his recommendation is mainly due to per(ormance reasons;
.nconvenience
Because not all data needs escapingA itHs o(ten annoying to see escaped data Ehere it
shouldnHt #e; For eFampleA emailing (rom a (ormA and seeing a #unch o( hH Eithin the email;
,o (iFA this may re/uire eFcessive use o( stripslashes./;
Kisabling Magic $uotes
,he magicZ/uotesZgpc directive may only #e disa#led at the system levelA and not at runtime; .n
otherEordsA use o( ini>set./ is not an option;
E'emplo 7!(!. Kisabling magic ?uotes ser5er side
An eFample that sets the value o( these directives to O99 in php.ini; For additional detailsA read the
manual section titled &oE to change con(iguration settings;
; "aEic Quotes
;
; "aEic Quotes #or incominE -E*/?&*/RooIie data.
maEic%Quotes%Epc > ?##
; "aEic Quotes #or runtimeFEenerated data, e.E. data #rom &NO, #rom exec39, etc.
maEic%Quotes%runtime > ?##
; +se &ybaseFstyle maEic Quotes 3escape M 8ith MM instead o# VM9.
maEic%Quotes%sybase > ?##
.( access to the server con(iguration is unavaila#leA use o( .htaccess is also an option; For
eFampleC
php%#laE maEic%Quotes%Epc ?##
.n the interest o( Eriting porta#le code >code that Eor"s in any environment?A li"e i( setting at the
server level is not possi#leA hereHs an eFample to disa#le magicZ/uotesZgpc at runtime; ,his method
is ine((icient so itHs pre(erred to instead set the appropriate directives elseEhere;
E'emplo 7!(*. Kisabling magic ?uotes at runtime
<?php
i# 3Eet%maEic%Quotes%Epc399 :
#unction stripslashes%deep3$=alue9
:
$=alue > is%array3$=alue9 ?
array%map3Mstripslashes%deepM, $=alue9 @
stripslashes3$=alue9;
return $=alue;
;
$%?&* > array%map3Mstripslashes%deepM, $%?&*9;
$%-E* > array%map3Mstripslashes%deepM, $%-E*9;
$%R??]4E > array%map3Mstripslashes%deepM, $%R??]4E9;
;
?>
Captulo 7*. Jcultando PHP
+n generalA la seguridad por oscuridad es una de las (ormas m*s d<#iles de seguridad; PeroA en
algunos casosA cada pe/ueWo elemento eFtra de seguridad es desea#le;
@nas cuantas t<cnicas simples pueden ayudarle a esconder P&PA posi#lemente retrasando a un
atacante /ue est< intentando descu#rir de#ilidades en su sistema; Al esta#lecer eFposeZphp ^ o(( en
su archivo php.iniA usted reduce la cantidad de in(ormaci-n disponi#le a posi#les atacantes;
Otra t*ctica consiste en con(igurar los servidores Ee# como apache para /ue procesen di(erentes
tipos de archivos como scripts de P&PA ya sea con una directiva .htaccessA o en el archivo de
con(iguraci-n de apache mismo; +n ese caso puede usar eFtensiones de archivo /ue produzcan
con(usi-nC
E'emplo 7*(!. Jcultando PHP como otro lengua'e
U Hacer Que el codiEo H pare0ca como otro tipo de codiEo
,dd*ype application/xFhttpdFphp .asp .py .pl
@ ocultarlo completamenteC
E'emplo 7*(*. )so de tipos desconocidos como e+tensiones para PHP
U Hacer Que el codiEo H pare0ca como de tipos desconocidos
,dd*ype application/xFhttpdFphp .bop .#oo .6<<t
O esc-ndalo como c-digo &,MLA lo /ue tiene un pe/ueWo impacto de rendimiento ya /ue todos los
documentos &,ML ser*n procesados por el motor de P&PC
E'emplo 7*(7. )so de tipos HTM: para e+tensiones PHP
U Hacer Que todo el codiEo H lu0ca como H*"O
,dd*ype application/xFhttpdFphp .htm .html
Para /ue esto (uncione de manera e(ectivaA usted de#e renom#rar sus archivos P&P con las
eFtensiones anteriores; Aun/ue es una (orma de seguridad por oscuridadA representa una medida
preventiva menor con pocos inconvenientes;
Captulo 77. Mantenerse al Ka
P&PA como cual/uier otro sistema de tamaWo considera#leA est* #a'o constante escrutinio y
remodelaci-n; 5ada nueva versi-n incluye con (recuencia cam#ios mayores y menores para me'orar
y reparar (allos de seguridadA pro#lemas de con(iguraci-nA y otros asuntos /ue puedan a(ectar la
seguridad y esta#ilidad glo#al de su sistema;
5omo cual/uier lengua'e y programa de scripting del nivel del sistemaA el me'or en(o/ue es el de
actualizar con (recuenciaA y mantenerse alerta so#re las Bltimas versiones y sus cam#ios;
C. Caractersticas
Tabla de contenidos
78; Autenti(icaci-n &,,P con P&P
74; 5oo"ies
7K; essions
7:; Mane'o de JForms
7M; Mane'o de env)o de archivos
79; @sando archivos remotos
83; Mane'ando coneFiones
81; 5oneFiones persistentes a #ases de datos
80; Modo eguro >a(e Mode?
87; @sando P&P desde la l)nea de comando
Captulo 78. Autentificaci"n HTTP con PHP
Las caracter)ticas de autenti(icaci-n &,,P en P&P solo est*n disponi#les cuando se est* e'ecutando
como un m-dulo en Apache y hasta ahora no lo estan en la versi-n 5G.; +n un script P&P como
m-dulo de ApacheA se puede usar la (unci-n header./ para enviar un mensa'e de =Autenti(icaci-n
re/uerida= al navegador cliente haciendo /ue muestre una ventana de entrada emergente con
nom#re de usuario y contraseWa; @na vez /ue el usuario ha rellenado el nom#re y la contraseWaA la
@RL /ue contiene el script P&P ser* llamada de nuevo con las varia#les prede(inidas
+!+_,UT!_USERA +!+_,UT!_+IA y ,UT!_TB+E asignadas con el nom#re de usuarioA la
contraseWa y el tipo de autenti(icaci-n respectivamente; +stas varia#les prede(inidas se pueden
encontrar en las matrices YZ+R$+R y '!TT+_SER(ER_(,RS; -lo autenti(icaci-n =B*sica= est*
soportada en este momento; 5onsulte la (unci-n header./ para m*s in(ormaci-n;
Nota sobre la 5ersi"n PHP- Las Autoglo#alesA tales como YZ+R$+RA han estado
disponi#les desde la versi-n de P&P 8;1;3; '!TT+_SER(ER_(,RS ha estado
disponi#le desde P&P 7;
@n script de e'emplo /ue (uerce la autenti(icaci-n del cliente en una p*gina ser)a como el siguienteC
E'emplo 78(!. E'emplo de autentificaci"n HTTP
<?php
i# 3!isset3$%&E'(E')MH%,+*H%+&E'M/99 :
header3M777F,uthenticate@ Zasic realm>""y 'ealm"M9;
header3MH**/6.2 126 +nauthori0edM9;
echo M*ext to send i# user hits Rancel buttonM;
exit;
; else :
echo "<p>Hello :$%&E'(E')MH%,+*H%+&E'M/;.</p>";
echo "<p>Pou entered :$%&E'(E')MH%,+*H%7M/; as your pass8ord.</p>";
;
?>
Nota de compatibilidad- Por (avor tener cuidado cuando esteis programando las lineas
de ca#ecera &,,P; Para garantizar la m*Fima compati#ilidad con todos los clientesA la
pala#ra clave =Basic= de#e de ser escrita con =B= mayBsculaA la cadena de teFto de#e
estar incluida entre comillas do#les >no simples? y eFactamente un espacio de#e
preceder el c-digo ;01 en la linea de ca#ecera !TT+/1.0 ;01
+n vez deA sencillamenteA mostrar +!+_,UT!_USER y +!+_,UT!_+IA seguramente /uerais
compro#ar la validez del nom#re de usuario y la contraseWa; ,al vez enviando una consulta a una
#ase de datos o #uscando el usuario en un (ichero d#m;
$igilar a/u) los navegadores .nterner +Fplorer con #ugs; Parecen muy /uis/uillosos con el orden de
las ca#eceras; +nviar la ca#ecera III=,utent696cac6`n antes /ue la ca#ecera &,,PD1;3 831 parece
ser el truco por ahora;
+n (echa de la versi-n P&P 8;7;3A para prevenir /ue alguien escri#a un script /ue revele la
contraseWa de una p*gina /ue ha sido autenti(icada a trav<s de algBn mecanismo eFterno tradicionalA
las varia#les P&PZA@,& no ser*n asignadas si algBn tipo de autenti(icaci-n eFterna ha sido
activada para la p*gina en particular; +n este casoA la varia#le REMOTE_USER puede ser usada
para identi(icar al usuario autenti(icado eFternamente; Asi /ue se puedes utilizar '_SER(ER
)<REMOTE_USER<.;
Configuration Note- P&P usa la directiva ,uthT?pe para determinar si una
autenti(icaci-n eFterna esta en uso;
NotaA a pesar de todoA lo ya dicho no prote'e de /ue alguien /ue controle una @RL no autenti(icada
ro#e contraseWas de @RLs autenti(icadas en el mismo servidor;
,anto Netscape como .nternet +Fplorer #orrar*n la cach< de la ventana de autenti(icaci-n en el
navegador local despu<s de reci#ir una respuesta 831 del servidor; +sto puede usarseA de (orma
e(ectivaA para =desconectar= a un usuarioA (orzandole a reintroducir su nom#re y contraseWa; Algunas
personas usan esto para =hacer caducar= entradasA o para proveer un #ot-n de =desconectar=;
E'emplo 78(*. E'emplo de autentificaci"n HTTP for6ando una reentrada
<?php
#unction authenticate39 :
header3M777F,uthenticate@ Zasic realm>"*est ,uthentication &ystem"M9;
header3MH**/6.2 126 +nauthori0edM9;
echo "Pou must enter a =alid loEin 4L and pass8ord to access this resourceVn";
exit;
;

i# 3!isset3$%&E'(E')MH%,+*H%+&E'M/9 TT
3$%?&*)M&eenZe#oreM/ >> 6 && $%?&*)M?ld,uthM/ >> $%&E'(E')MH%,+*H%+&E'M/99 :
authenticate39;
;
else :
echo "<p>7elcome@ :$%&E'(E')MH%,+*H%+&E'M/;<br>";
echo "?ld@ :$%'EN+E&*)M?ld,uthM/;";
echo "<#orm action>M:$%&E'(E')MH%&EOSM/;M "E*H?L>M?&*M>Vn";
echo "<input type>MhiddenM name>M&eenZe#oreM =alue>M6M>Vn";
echo "<input type>MhiddenM name>M?ld,uthM =alue>M:$%&E'(E')MH%,+*H%+&E'M/;M>Vn";
echo "<input type>MsubmitM =alue>M'e ,uthenticateM>Vn";
echo "</#orm></p>Vn";
;
?>
+ste comportamiento no es re/uerido por el est*ndar de autenti(icaci-n #*sica de &,,PA por lo /ue
nunca de#e depender de esto; Prue#as con LynF han demostrado /ue LynF no #orra las credenciales
de autenti(icaci-n con una respuesta 831 del servidorA por lo /ue pulsando atr*s y despu<s adelante
a#rir)a el recurso de nuevo >siempre /ue los re/uerimientos de contraseWa no hayan cam#iado?;
Adem*s tener en cuenta /ue hasta la version de P&P 8;7;7A la autenti(icaci-n &,,P no (unciona#a
con el servidor .. de Microso(t y la versi-n 5G. de P&PA de#ido a una limitaci-n de ..; Para /ue
(uncione a partir de P&P 8;7;7A de#eis de editar vuestra con(iguraci-n so#re =eguridad en
directorios= en ..; Pulsar en H+ditar= y elegir solamente =acceso anonimo=A todos los demas campos
no se de#en de elegir;
Otra limitaci-n esA si estais usando el m-dulo de .. >.AP.?A /ue no podeis usar las varia#les
+!+_,UT!_/A en su lugar de#eis utilizar la varia#le !TT+_,UT!OR0^,T0ON; Por e'emploC l6st
L'userC 'p7M : e8plo#eL<:<C 1aseX;_#eco#eLsu1strL'_SER(ER)<!TT+_,UT!OR0^,T0ON<.C XMMMJ
Nota para II,-- Para /ue la autenti(icaci-n &,,P (uncione con ..A la directiva de P&P
cgi;r(c0K1KZheaders de#e de tener el valor 0 >valor por de(ecto?;
Nota- i sa(e mode est* activadoA el uid de el script es agregado a la ca#ecera III=
,uthent6cate
Captulo 79. CooBies
P&P soporta transparentemente coo"ies &,,P; Las 5oo"ies son un mecanismo /ue sirve para
almacenar datos en el navegador del usuario remotoA para as) poder identi(icar al usuario cuando
vuelva; e pueden poner coo"ies usando la (unci-n setcooBies./; Las 5oo"ies son parte de la
ca#ecera &,,PA por tanto la (unci-n setcooBie./ de#e ser llamada antes de /ue se produzca
cual/uier salida al navegador; +sta limitaci-n es la misma a la de la (unci-n header./; e pueden
usar las (unciones de almacenamiento intermedio del resultado para retrasar el resultado del script
hasta /ue hayas decidido mandar o no una coo"ie o ca#ecera;
5ual/uier coo"ie enviada a ti desde el clienteA autom*ticamente se convertir* en una varia#le P&P
igual como ocurre con los m<todos de datos G+, y PO,A dependiendo de las varia#les de
con(iguraci-n reE6ster_Elo1als y ar6a1les_or#er; i deseas asignar multiples valores a una coo"ie
simpleA aWade simplemente ). a el nom#re de la coo"ie;
+n P&P 8;1;3 y posterioresA la matriz auto2glo#al '_COO20E ser* siempre actualizada con
cual/uier coo"ie mandada por el cliente; '!TT+_COO20E_(,RS es tam#ien actualizada en
versiones anteriores de P&P cuando la varia#le de con(iguraci-n trac>_ars est< activada; >iempre
activada a partir de P&P 8;3;7;?
Para m*s detalles ver la (unci-n setcooBie./;
Captulo 7<. ,essions
ession support in P&P consists o( a Eay to preserve certain data across su#se/uent accesses; ,his
ena#les you to #uild more customized applications and increase the appeal o( your Ee# site; All
in(ormation is in the ession re(erence section;
Captulo 7=. Mane'o de I;orms
JForms de(ine una variaci-n de los tradicionales (ormularios Ee# /ue permite /ue <stos sean
usados en una variedad m*s amplia de plata(ormas y navegadoresA e incluso en medios no2
tradicionales como documentos PDF;
La primera di(erencia clave en JForms es el modo en /ue el (ormulario es enviado al cliente;
JForms para Autores &,ML contiene una descripci-n detallada de c-mo crear JFormsX para los
prop-sitos de este tutorialA tan solo estaremos viendo un e'emplo sencillo;
E'emplo 7=(!. )n formulario I;orms de b4s?ueda simple
<h@html xmlns@h>"http@//888.8<.orE/6KKK/xhtml"
xmlns>"http@//888.8<.orE/C22C/x#orms">
<h@head>
<h@title>Z&uacute;sQueda</h@title>
<model>
<submission action>"http@//example.com/buscar"
method>"post" id>"s"/>
</model>
</h@head>
<h@body>
<h@p>
<input re#>"Q"><label>Zuscar</label></input>
<submit submission>"s"><label>4niciar</label></submit>
</h@p>
</h@body>
</h@html>
+l anterior (ormulario despliega una ca'a de entrada de teFto >llamada @?A y un #ot-n de enviar;
5uando el #ot-n de enviar es pulsadoA el (ormulario ser* enviado a la p*gina indicada por act6on;
A/u) es en donde empieza a lucir di(erente desde el punto de vista de su aplicaci-n Ee#; +n un
(ormulario &,ML normalA los datos ser)an enviados como appl6cat6on/8=777=9orm=urlenco#e#A sin
em#argoA en el mundo de JFormsA esta in(ormaci-n es enviada como datos en (ormato JML;
i ha tomado la decisi-n de tra#a'ar con JFormsA entonces pro#a#lemente /uiera los datos en JMLA
en ese casoA de#e echar un vistazo a '!TT+_R,I_+OST_D,T, en donde encontrar* el documento
JML generado por el navegadorA el cual puede pasar a su motor JL, o int<rprete de documentos
(avorito;
i no se encuentra interesado en dar (ormatoA y s-lo desea /ue los datos sean cargados en la varia#le
'_+OST tradicionalA puede indicarle al navegador del cliente /ue env)e sus datos como
appl6cat6on/8=777=9orm=urlenco#e# modi(icando el atri#uto metho# al valor urlenco#e#=post;
E'emplo 7=(*. )so de un I;orm para poblar $_POS
<h@html xmlns@h>"http@//888.8<.orE/6KKK/xhtml"
xmlns>"http@//888.8<.orE/C22C/x#orms">
<h@head>
<h@title>Z&uacute;sQueda</h@title>
<model>
<submission action>"http@//example.com/search"
method>"urlencodedFpost" id>"s"/>
</model>
</h@head>
<h@body>
<h@p>
<input re#>"Q"><label>Zuscar</label></input>
<submit submission>"s"><label>4niciar</label></submit>
</h@p>
</h@body>
</h@html>
Nota- Al momento en /ue se escri#en estas l)neasA muchos navegadores no o(recen
soporte para JForms; Revise la versi-n de su navegador si el anterior e'emplo (alla;
Captulo 7N. Mane'o de en5o de archi5os
En5o de archi5os con el m%todo PJ,T
P&P es capaz de reci#ir env)os de archivo de cual/uier navegador /ue cumpla la norma RF521MK:
>entre los /ue se incluyen Netscape Navigator 7 o posteriorA Microso(t .nternet +Fplorer 7 con un
parche o posterior sin <ste?; [sta caracter)stica permite /ue los usuarios envien archivos de teFto y
#inarios; Mediante la autenti(icaci-n y (unciones de mane'o de archivos de P&PA es posi#le un
control total de /ui<n puede enviar archivos y /ue se hace con <stos una vez reci#idos;
+s importante destacar /ue P&P tam#i<n soporta el m<todo P@, para env)o de archivos tal y como
lo utiliza Netscape 5omposer y el cliente Amaya de L75; 5onsulte oporte del m<todo P@, para
m*s detalles;
@na p*gina de env)o de archivos se puede crear mediante un (ormulario parecido a <steC
E'emplo 7N(!. ;ormulario de en5o de archi5o
<#orm enctype>"multipart/#ormFdata" action>"%+'O%" method>"post">
<input type>"hidden" name>"",X%S4OE%&4YE" =alue>"6222">
&end this #ile@ <input name>"user#ile" type>"#ile">
<input type>"submit" =alue>"&end Sile">
</#orm>
La Z@RLZ de#e tener como destino un script P&P; +l input oculto MAJZF.L+Z.I+ de#e
encontrarse antes del input de tipo =(ile= para indicar el tamaWo m*Fimo de archivo /ue se puede
enviar en #ytes
A5iso
MAJZF.L+Z.I+ de#e ser consultado por el navegadorX aun as) es sencillo saltarse este m*Fimo
por lo tanto no se de#e presuponer /ue el navegador siempre lo respetar*; +n contrapartidaA la
con(iguracion de P&P relativa al tamaWo maFimo no puede ser o#viada;
Las varia#les de(inidas para los archivos enviados varian en (unci-n de la versi-n y con(iguraci-n
de P&P /ue se utilice; Las varia#les de las /ue ha#lamos a continuaci-n ser*n de(inidas en la p*gina
destino despues de una recepci-n de (ichero correcta; 5uando trac"Zvars este activadoA el array
Y&,,PZPO,ZF.L+DYZF.L+ se inicializar*; Por ultimoA las varia#les relacionadas seran
inicializadas como glo#ales cuando registerZglo#als est< ha#ilitado; 5a#e seWalar /ue el uso de las
varia#les glo#ales no esta recomendado en ningBn caso;
Nota- trac"Zvars esta activado siempre desde P&P 8;3;7; A partir de P&P 8;1;3 A
YZF.L+ puede ser utilizado alternativamente a '!TT+_+OST_304ES; '_304ES es
siempre glo#al asi /ue Elo1al no de#e ser usado con YZF.L+ en el *m#ito de (unci-n;
'!TT+_+OST_304ESD'_304ES contienen la in(ormaci-n so#re el (ichero reci#ido;
A continuaci-n se descri#e el contenido de '!TT+_+OST_304ES; e ha tomado el nom#re Huser(ileH
para el (ichero reci#ido tal y como se usa#a en el script de e'emplo anteriorC
'!TT+_+OST_304ES)<user96le<.)<name<.
+l nom#re original del (ichero en la m*/uina cliente;
'!TT+_+OST_304ES)<user96le<.)<t?pe<.
+l tipo mime del (ichero >si el navegador lo proporciona?; @n e'emplo podr)a ser *6maEe/E69*;
'!TT+_+OST_304ES)<user96le<.)<s6De<.
+l tamaWo en #ytes del (ichero reci#ido;
'!TT+_+OST_304ES)<user96le<.)<tmp_name<.
+l nom#re del (ichero temporal /ue se utiliza para almacenar en el servidor el archivo
reci#ido;
Nota- A partir de P&P 8;1;3 se puede utilizar el varia#le corta '_304ES; P&P 7 no
soporta '!TT+_+OST_304ES;
5uando registerZglo#als se activa en el php.ini las siguientes varia#les son accesi#les; e ha
tomado el nom#re Huser(ileH para el (ichero reci#ido tal y como se usa#a en el script de e'emplo del
principioC
'user96le 2 +l nom#re del (ichero temporal /ue se utiliza para almacenar en el servidor el
archivo reci#ido;
'user96le_name 2 +l nom#re original del (ichero en la m*/uina cliente;
'user96le_s6De 2 +l tamaWo en #ytes del (ichero reci#ido;
'user96le_t?pe 2 +l tipo mime del (ichero >si el navegador lo proporciona?; @n e'emplo
podr)a ser =imageDgi(=;
e puede ver /ue ='user96le= >en las varia#les anteriores? toma el valor del atri#uto =name= /ue
contenga el campo `input_ de tipo =(ile= del (ormulario de envio; +n el e'emplo anteriorA elegimos
llamarlo =user(ile=;
Nota- reE6ster_Elo1als : On se desaconse'a por razones de seguridad y rendimiento;
Por de(ectoA los (icheros ser*n almacenados en el directorio temporal por de(ecto del servidor a no
ser /ue se especi(i/ue otra localizacion con la directiva uploadZtmpZdir en php.ini; +l directorio
temporal por de(ecto del servidor puede ser modi(icado cam#iando el valor de la varia#le de entorno
TM+D0R en el conteFto en /ue se e'ecuta P&P La con(iguraci-n de las varia#les de entorno no se
puede realizar en P&P a trav<s de la (unci-n puten5./; +sta varia#le de entorio puede ser utilizada
tam#i<n para asegurarnos /ue otras operaciones con archivos reci#idos est*n (uncionando
correctamente;
E'emplo 7N(*. Cerificando los archi5os recibidos
Los siguientes e'emplos son validos para versiones de P&P 8 superiores a la 8;3;0; $eanse las (unciones
is>uploaded>file./ y mo5e>uploaded>file./;
<?php
// 4n H 1.6.2 or later, $%S4OE& should be used instead o# $H**%?&*%S4OE&.
i# 3is%uploaded%#ile3$H**%?&*%S4OE&)Muser#ileM/)Mtmp%nameM/99 :
copy3$H**%?&*%S4OE&)Muser#ileM/)Mtmp%nameM/, "/place/to/put/uploaded/#ile"9;
; else :
echo "ossible #ile upload attacI. Silename@ " . $H**%?&*%S4OE&)Muser#ileM/)MnameM/;
;
/W ...or... W/
mo=e%uploaded%#ile3$H**%?&*%S4OE&)Muser#ileM/)Mtmp%nameM/, "/place/to/put/uploaded/#ile"9;
?>
+l script P&P /ue reci#e el (icheroA de#e implementar la l-gica necesaria para determinar /ue de#e
ser realizado con el (ichero; e puede utilizarA por e'emploA la varia#le '!TT+_+OST_304ES
)<user96le<.)<s6De<. para descartar los (icheros demasiado chicos o demasiado grandesX por otro ladoA
se puede usar la varia#le '!TT+_+OST_304ES)<user96le<.)<t?pe<. para descartar los /ue no se
a'usten a algun criterio de tipo; 5ual/uiera /ue sea la logica /ue utilicemosA se de#e #orrar o mover
el archivo del directorio temporal;
+l archivo ser* #orrado del directorio temporal al (inal de la petici-n si no se ha movido o
renom#rado;
Errores comunes
A M,F_304E_S0^E no se le puede dar un valor mayor /ue el valor /ue se haya especi(icado en la
directivauploadZmaFZ(ilesize; Por de(ecto se tiene un l)mite de 0 MegaBytes;
i se ha activado el l)mite de memoriaA se de#en especi(icar un valor alto para memoryZlimit; +n
cual/uier casoA se de#e asegurar un valor su(icientemente grande para memoryZlimit;
i maFZeFecutionZtime tiene un valor muy pe/ueWoA la e'ecuci-n del script puede eFceder este
valor; De esta (ormaA se de#e asegurar un valor su(icientemente grande para ma8_e8ecut6on_t6me;
i postZmaFZsize tiene un valor muy pe/ueWoA los (icheros mas grandes a este valorA no podr*n ser
enviados; Por elloA se de#e asegurar un valor su(icientemente grande para post_ma8_s6De;
No veri(icar /ue (icheros se estan manipulando puede tener como consecuencia /ue los usuarios
puedan acceder a in(ormaci-n sensi#le en otros directorios;
5a#e seWalar /ue el httpd de 5+RN parece cortar todo a partir del primer espacio en #lanco en el
=content2type= de la ca#ecera mime /ue o#tiene del cliente; i este es el casoA con el httpd de 5+RN
no se soporta la (uncionalidad de env)o de (icheros;
En5o de multiples ficheros
e pueden enviar multiples (icheros usando di(erentes nom#res >name? para los 6nput;
As) mismoA es posi#le enviar varios archivos simultaneamente y tener organizada en arrays la
in(ormaci-n; Para hacer estoA se utiliza la misma sint*Fis /ue cuando tenemos multiples =selects= o
=chec"#oFes= en el (ormulario &,MLC
Nota- +l soporte para env)o multiple de (icheros (ue aWadido en la versi-n 7;3;13;
E'emplo 7N(7. En5o de multiples ficheros
<#orm action>"#ileFupload.php" method>"post" enctype>"multipart/#ormFdata">
&end these #iles@<br>
<input name>"user#ile)/" type>"#ile"><br>
<input name>"user#ile)/" type>"#ile"><br>
<input type>"submit" =alue>"&end #iles">
</#orm>
5uando el (ormulario del e'emplo es enviadoA los arrays '!TT+_+OST_304ES)<user96le<.A
'!TT+_+OST_304ES)<user96le<.)<name<. y '!TT+_+OST_304ES)<user96le<.)<s6De<. son
inicializados; As) mismo pasa con YZF.L+ en P&P 8;1;3 o superiores y Y&,,PZPO,Z$AR en
P&P 7; 5uando reE6ster_Elo1als esta activaA las varia#les glo#ales para los archivos reci#idos
tam#i<n son inicializadas; 5ada uno de estos arrays tendr* en los )ndices numericos
correspondientes los valores para cada (ichero reci#ido;
Por e'emploA si tomamos como nom#res de archivo enviados /home/test/re=ie8.html y /
home/test/x8p.out; ,endr)amos en '!TT+_+OST_304ES)<user96le<.)<name<.)0. el valor de
re=ie8.htmlA y en '!TT+_+OST_304ES)<user96le<.)<name<.)1. tendr)amos x8p.outX
analogamenteA '!TT+_+OST_304ES)<user96le<.)<s6De<.)0. contendr)a el tamaWo del (ichero
re=ie8.htmlA y asi sucesivamente;;;
'!TT+_+OST_304ES)<user96le<.)<name<.)0.A '!TT+_+OST_304ES)<user96le<.)<tmp_name<.)0.A
'!TT+_+OST_304ES)<user96le<.)<s6De<.)0. y '!TT+_+OST_304ES)<user96le<.)<t?pe<.)0. tam#ien
son asignadas;
,oporte del m%todo P)T
P&P soporta el metodo &,,P P@, /ue usan aplicaciones como Netscape 5omposer y Amaya del
L75; Las peticiones P@, son m*s sencillas /ue el m<todo PO,; @n e'emploC
+* /path/#ilename.html H**/6.6
+sto normalmente signi(icar)a /ue el cliente remoto /uiere salvar el contenido comoC D
pathD(ilename;html en tu *r#ol Ee#; L-gicamente no una #uena idea /ue la gente pueda escri#ir en
tu *r#ol Ee#; Para manipular esta petici-n de#es decirle al servidor /ue esta petici-n sea atendida
por un script P&P; +n ApacheA por e'emploA se utiliza para esto la directiva Scr6pt en los alguno de
los archivos de con(iguraci-n del servidor; @n sitio t)pico de uso es dentro del #lo/ue
iltXDirectoryigtX o /uiz*s en el #lo/ue iltX$irtualhostigtX; @na linia as) de#eria hacer <sta
(unci-nC
&cript +* /put.php
[sto le dice a Apache /ue env)e todas peticiones P@, para @R.s /ue contengan esta linia al script
put;php; e asume /ue P&P se encuentra activo y con la eFtensi-n ;php enlazada a <l;
Dentro del script put;php7 se podr)a implementar algo as)C
<?php copy3$H%+O?,LEL%S4OE%.,"E,$L?R+"E.*%'??*.$'EN+E&*%+'49; ?>
+sto copiar)a el archivo a la localizaci-n re/uerida por el cliente remoto; A/ui se pueden e'ecutar
(unciones de autenti(icaci-n de usuario o cual/uier otro tipo de che/ueo; +l archivo se guarda en el
archivo temporal del sistema servidor de la misma manera /ue el M<todo PO,; 5uando la petici-n
(inalizaA el archivo temporal es eliminado; +n conse/uencia el script dede proceder al trato de <ste
inmediatamenteA ya sea para copiarloA renom#rarloA etc; +l archivo se encuentra en la varia#le
YP&PZP@,ZF.L+NAM+A y el destino sugerido por el cliente en la varia#le YR+O@+,Z@R.
>puede variar en servidores Ee# /ue no sean Apache?; No es necesario hacer caso al destino
sugerido por el cliente; Por e'emplo se podr)an copiar los archivos enviados a directorios
especialmente designados para esta tarea;
Captulo 7O. )sando archi5os remotos
iempre /ue allo7_url_9open est< ha#ilitado en php.iniA se pueden usar @RLs &,,P y F,P con
la mayor)a de las (unciones /ue toman un archivo como par*metro; Adem*s @RLs pueden ser
usadas con include./A include>once./A re?uire./ y re?uire>once./; 5onsultar Ap<ndice L para m*s
in(ormaci-n so#re los protocolos soportados por P&P;
Nota- +n P&P 8;3;7 y versiones anterioresA para usar envolturas @RLA ha#ia /ue
con(igurar P&P usando la opci-n de con(iguraci-n ==ena1le=url=9open=7rapper;
Nota- Las versiones para EindoEs de P&P anteriores a P&P 8;7 no soporta#an acceso
remoto a (icheros en las (unciones siguientesC include./A include>once./A re?uire./A
re?uire>once./A y las (unciones imagecreate(romJJJ de la eFtensi-n Re(erencia L..A
3unc6ones para 6m[Eenes;
Por e'emploA se puede usar este para a#rir un archivo en un servidor Ee# remotoA analizar en la
salida la in(ormaci-n /ue se /uieraA y entoncesA usar la in(ormaci-n en una consulta a #ase de datosA
o simplemente para sacarlas en un estilo /ue coincida con el resto de su sitio Ee#;
E'emplo 7O(!. Jbtener el ttulo de una pgina remota
<?php
$#ile > #open 3"http@//888.example.com/", "r"9;
i# 3!$#ile9 :
echo "<p>+nable to open remote #ile.Vn";
exit;
;
8hile 3!#eo# 3$#ile99 :
$line > #Eets 3$#ile, 62C19;
/W *his only 8orIs i# the title and its taEs are on one line W/
i# 3ereEi 3"<title>3.W9</title>", $line, $out99 :
$title > $out)6/;
breaI;
;
;
#close3$#ile9;
?>
,am#i<n se puede escri#ir a archivos en un servidor F,P >siempre /ue se conecte como un usuario
con los correctos derechos de acceso?; olamente se pueden crear nuevos (icheros usando este
m<todoX si se intenta so#reescri#ir un (ichero ya eFistenteA la (unci-n fopen./ (allar*
Para conectar como un usuario distinto de HanonymousHA se necesita especi(icar el nom#re de usuario
>y posi#lemente contraseWa? dentro de la @RLA tales como
H(tpCDDusuarioCclaveG(tp;e'emplo;comDcaminoDaDarchivoH; >e puede usar la misma clase de sintaFis
para acceder a archivos via &,,P cuando se re/uer)a una autenticaci- de same sort o( syntaF to
access (iles via &,,P Ehen they re/uire Basic authentication;?
E'emplo 7O(*. Almacenando datos en un ser5idor remoto
<?php
$#ile > #open 3"#tp@//#tp.example.com/incominE/output#ile", "8"9;
i# 3!$#ile9 :
echo "<p>+nable to open remote #ile #or 8ritinE.Vn";
exit;
;
/W 7rite the data here. W/
#8rite 3$#ile, $%&E'(E')MH**%+&E'%,-E.*M/ . "Vn"9;
#close 3$#ile9;
?>
Nota- Podeis creer por el e'emplo anteriorA /ue podeis usar esta tecnica para escri#ir en
un (ichero de registro remoto; Desgraciadamente no (uncionaria por/ue la llamada
fopen./ (allaria si el (ichero remoto eFiste; Para usar registros distri#uidos de esa
manera podeis consultar la (uncion syslog./;
Captulo 8D. Mane'ando cone+iones
Nota- ,odo lo siguiente se aplica a partir de la versi-n 7;3;: y posterior;
.nternamente en P&P se mantiene el estado de la coneFi-n; &ay 7 posi#les estadosC
3 2 NORMAL
1 2 ABOR,+D >A#ortado?
0 2 ,.M+O@, >Fuera de tiempo?
5uando un script P&P se est* e'ecutando se activa el estado NORMAL; i el cliente remoto se
desconectaA se pasa al estado ABOR,+D; +sto suele ocurrir cuando el usuario pulsa en el #ot-n
,OP del navegador; i se alcanza el l)mite de tiempo impuesto por P&P >ver set>time>limit./?A se
pasa al estado ,.M+O@,;
Puedes decidir si /uieres /ue la desconeFi-n de un cliente cause /ue tu script sea a#ortado; Algunas
veces es c-modo /ue tus scripts se e'ecuten por completoA incluso si no eFiste ya un navegador
remoto /ue reci#a la salida; +l comportamiento por de(ecto es sin em#argoA /ue tu script se a#orte
cuando el cliente remoto se desconecta; +ste comportamiento puede ser con(igurado v)a la directiva
ignoreZuserZa#ort en el (ichero php7;iniA o tam#i<n con la (unci-n ignore>user>abort./; i no le
espe(icicas al P&P /ue cuando un usuario a#orte lo ignoreA tu script terminar* su e'ecuci-n; La
Bnica eFcepci-n es si tienes registrada un (unci-n de desconeFi-n usando la (unci-n
register>shutdo3n>function./; 5on una (unci-n de desconeFi-nA cuando un usuario remoto pulsa
en el #ot-n ,OPA la pr-Fima vez /ue tu script intenta mostrar algoA P&P detecta /ue la coneFi-n
ha sido a#ortada y se llama a la (unci-n de desconeFi-n; +sta (unci-n de desconeFi-n tam#i<n se
llama al (inal de la e'ecuci-n de tu script cuando se ha e'ecutado normalmenteA de manera /ue si
/uieres hacer algo di(erente en caso de /ue un cliente se haya desconectadoA puedes usar la (unci-n
connection>aborted./; +sta (unci-n devuelve TRUE si la coneFi-n (ue a#ortada;
$uestro script tam#i<n se puede terminar por un temporizador interno; +l timeout por de(ecto es de
73 segundos; e puede cam#iar usando la directiva maFZeFecutionZtime en el (ichero php.ini o
la correspondiente directiva phpZmaFZeFecutionZtime en la con(iguraci-n del servidor de p*ginas
ApacheA como tam#i<n con la (unci-n set>time>limit./; 5uando el temporizador eFpiraA el script se
a#orta como en el caso de la desconeFi-n del clienteA de manera /ue si se ha de(inido una (unci-n
de desconeFi-nA esta se llamar*; Dentro de esta (unci-n de desconeFi-nA puedes compro#ar si (ue el
timeout el /ue caus- /ue se llamara a la (unci-n de desconeFi-nA llamando a la (unci-n
connection>timeout./; +sta (unci-n devolver* verdadero si el timeout causa /ue se llame a la
(unci-n de desconeFi-n;
&ay /ue destacar /ue am#osA el estado ABOR,+D y el ,.M+O@,A se pueden activar al mismo
tiempo; +sto es posi#le si le dices a P&P /ue ignore las desconeFiones intencionadas de los
usuarios; P&P aBn notar* el hecho de /ue el usuario puede ha#erse desconectadoA pero el script
continuar* e'ecut*ndose; i se alcanza el tiempo l)mite de e'ecuci-n ser* a#ortado yA si se ha
de(inido una (unci-n de desconeFi-nA esta ser* llamada; +n este puntoA encontrar*s /ue las
(unciones connection>timeout./ y connection>aborted./ devuelven verdadero; Puedes compro#ar
am#os estados de una manera simple usando la (unci-n connection>status./; +sta (unci-n devuelve
un campo de #it de los estados activos; De este modoA si am#os estados est*n activos devolver)a por
e'emplo un valor 7;
Captulo 8!. Cone+iones persistentes a bases
de datos
Las coneFiones persistentes son enlaces /ue no se cierran cuando termina la e'ecuci-n del archivo
de comandos; 5uando se pide una coneFi-n persistenteA P&P comprue#a si hay ya una coneFi-n
persistente id<ntica >/ue permanec)a a#ierta desde antes? 2 y si eFisteA la usa; i no eFisteA crea un
enlace; @na coneFi-n Hid<nticaH es una coneFi-n /ue se a#ri- hacia el mismo =host=A con el mismo
nom#re de usuario y la misma contraseWa >donde sea aplica#le?;
La gente /ue no est* (amiliarizada con el modo como tra#a'an y distri#uyen la carga los servidores
=Ee#= puede con(undir /ue signi(ica coneFiones persistentes; +n particularA no te dan la ha#ilidad
de a#rir Hsesiones de usuarioH en el mismo enlaceA no dan la ha#ilidad de construir una transacci-n de
(orma e(icienteA y no hacen un mont-n de otras cosas; De hechoA para ser eFtremadamente claros
so#re el tema las coneFiones persistentes no te dan n6nEuna (unctionalidad /ue no (uera posi#le con
sus hermanas no2persistentes;
UPor /u<N
+sto tiene /ue ver con el modo como (uncionan los servidores =Ee#=; &ay tres modos en /ue un
servidor =Ee#= puede utilizar P&P para generar p*ginas Ee#;
+l primer m<todo es usar P&P como una capa 5G.; 5uando corre de este modoA se crea y destruye
una instancia del int<rprete P&P por cada p*gina solicitada >para una p*gina P&P? a tu servidor;
De#ido a /ue se destruye despu<s de cada petici-nA cual/uier recurso /ue ad/uiera >como un enlace
a un servidor de #ase de datos OL? se cierra cuando es destruido; +n este casoA no se gana nada si
se intentan usar coneFiones persistentesA ya /ue simplemente no persisten;
+l segundoA y m*s popularA m<todo es correr P&P como un m-dulo en un servidor Ee#
multiprocesoA lo cual actualmente s-lo incluye Apache; @n servidor multiproceso tiene t)picamente
un proceso >el padre? /ue coordina un con'unto de procesos >sus hi'os? /ue realmente hacen el
tra#a'o se servir las p*ginas Ee#; 5uando entra cada petici-n de un clienteA es entregada a uno de los
hi'os /ue no est< ya sirviendo a otro cliente; +sto signi(ica /ue cuando el mismo cliente hace una
segunda petci-n al servidorA puede ser atendido por un proceso hi'o distinto del de la primera vez;
Lo /ue una coneFi-n persistente hace por ti en este caso es hacerlo de tal modo /ue cada proceso
hi'o s-lo necesita conectar a tu OL server la primera vez /ue sirve una p*gina /ue hace uso de una
coneFi-n as); 5uando otra p*gina solicita una coneFi-n a OL serverA puede reutilizar la coneFi-n
/ue el hi'o esta#leci- previamente;
+l Bltimo m<todo es usar P&P como un =plug2in= para un servidor Ee# multihilo; +n la actualidad
es solamente te-rico 22 P&P no (unciona aBn como =plug2in= para ningBn servidor Ee# multihilo;
Actualmente P&P 8 soporta .AP.A LAP. y NAP. >en LindoEs?A lo cual permite a P&P ser
utilizado como =plug2in= para servidores Ee# multihilo como Netscape Fast,rac"A .nternet
.n(ormation erver >..? de Microso(tA y OHReillyHs Le#ite Pro; +l comportamiento es eFactamente
el mismo /ue para el modelo de multiprocesador descrito anteriormente; ,ener en cuanta /ue el
soporte para AP. no est* disponi#le en P&P 7;
i las coneFiones persistentes no aportan ninguna (uncionalidad aWadidaA Upara /u< son #uenasN
La respuesta a/ui es eFtremadamente simple 22 e(iciencia; Las coneFiones persistentes son #uenas si
las ca#eceras de control para crear un enlace a tu servidor OL es alta; Oue estas ca#eceras sean o
no realmente altas depende de muchos (actores; 5omoA /u< clase de #ase de datos esA si esta o no
situada en el mismo ordenador /ue el servidor Ee#A c-mo est* de cargada la m*/uina donde se
encuentre el servidor OLA y otras as); +l hecho (undamental es /ue si la ca#ecera de coneFi-n es
altaA las coneFiones persistentes te ayudan considera#lemente ; +llas hacen /ue el proceso hi'o
simplemente conecte solamente una vez durante todo su intervalo de vidaA en vez de cada vez /ue
procesa una pagina /ue re/uiere conectar al servidor OL; +sto signi(ica /ue por cada hi'o /ue a#ri-
una coneFi-n persistente tendr* su propia coneFi-n persistente al servidor; Por e'emploA si tienes 03
procesos hi'os distintos /ue corran un archivo de comandos /ue cree una coneFi-n persistente a tu
servidor OLA tendr)as 03 coneFiones di(erentes a ti servidor OLA una por cada hi'o;
No o#stanteA hay /ue tener en cuenta /ue esto puede tener desventa'as si estais utilizando una #ase
de datos con l)mites de coneFi-nA por de#a'o del numero de procesos hi'o con coneFiones
persistentes; i tu #ase de datos tiene un l)mite de 1K coneFiones simultaneas y en el curso de una
sesi-n de servidorA 1: procesos hi'o intentan conectarseA uno de ellos no podr* hacerlo; i eFisten
errores en los scriptsA /ue no permitan terminar la coneFion >p;e';#ucles in(initos?A una #ase de datos
con solo 1K coneFiones puede ser r*pidamente hundida; 5ompro#ar la documentacion de vuestra
#ase de datos para o#tener in(ormaci-n so#re /ue hacer con coneFiones a#andonadas - li#res;
A5iso
@n par de advertencias m*s a tener en cuenta cuando utiliceis coneFiones persistentes; La primeraA
si utilizais #lo/ueos en una ta#la desde una coneFi-n persistente y por cual/uier causa el script no
puede des#lo/uear la ta#laA todos los scripts posteriores /ue usen esta coneFi-nA /uedar*n
#lo/ueados inde(in)damente y se re/uerir* /ueA - #ien el servidor httpd - la #ase de datos sean
arrancados de nuevo; La segundaA cuando utiliceis transaccionesA un #lo/ueo por transacci-n ser*
heredado por el pr-Fimo script usando la coneFi-nA si la e'ecuci-n del primer script termina antes
/ue el #lo/ueo; en am#os caso podeis utilizar register>shutdo3n>function./ para registrar una
(uncion simple de limpieza /ue des#lo/uee las ta#las - deshaga la transacci-n; Lo me'or para
evitar pro#lemas es no usar coneFiones persistentes en scripts /ue usen #lo/ueos de ta#las -
transacciones >para todolo dem*s pueden ser usadas sin pro#lemas?
@n resumen importante; Las coneFiones persistentes (ueron diseWadas para tener una Walencia uno2
a2uno con las coneFiones normales; +so signi(ica /ue de#er)ais s6empre ser capaz de reemplazar las
coneFiones persistentes por coneFiones no persistentes y no cam#iar* el modo como se comporta el
archivo de comandos; +ue#e cam#iar la e(iciencia del archivo de comandos >y pro#a#lemete lo
har*?A fpero no su comportamientoa
$er tam#ien fbs?l>pconnect./A ibase>pconnect./A if+>pconnect./A imap>popen./A
ingres>pconnect./A ms?l>pconnect./A mss?l>pconnect./A mys?l>pconnect./A ociplogon./A
odbc>pconnect./A ora>plogon./A pfsocBopen./A pg>pconnect./ y sybase>pconnect./;
Captulo 8*. Modo ,eguro .,afe Mode/
+l Modo eguro de P&P es un intento para resolver el pro#lema de la seguridad en un servidor
compartido; ,ratar de resolver este pro#lema al nivel de P&P es ar/uitect-nicamente incorrectoA
pero ya /ue las alternativas en un servidor Ee# y a niveles de sistemas operativos no son tan
realistasA mucha genteA especialmente la de proveedores de .nternet >.P?A usa el Modo eguro por
ahora;
Tabla 8*(!. :as directi5as de Configuraci"n ?ue controlan el Modo ,eguro son-
Kirecti5a Calor por Jmisi"n
sa(eZmode O99
sa(eZmodeZgid 0
Kirecti5a Calor por Jmisi"n
sa(eZmodeZincludeZdir **
sa(eZmodeZeFecZdir 1
openZ#asedir **
sa9e_mo#e_allo7e#_en_ars +!+_
sa9e_mo#e_protecte#_en_ars
4D_40AR,RB_+,T
!
#6sa1le_9unct6ons **
5uando sa(eZmode est* en OnA el P&P veri(ica si el dueWo del script actual coincide con el dueWo
del (ichero a ser operado por una (unci-n de (ichero; Por e'emploC
Fr8Fr8FrFF 6 rasmus rasmus << Aul 6 6K@C2 script.php
Fr8FrFFrFF 6 root root 666G "ay CG 6J@26 /etc/pass8d
5orriendo este script;php
<?php
read#ile3M/etc/pass8dM9;
?>
resulta in este error cuando Modo eguro est* ha#ilitadoC
7arninE@ &,SE "?LE 'estriction in e##ect. *he script 8hose uid is 522 is not
allo8ed to access /etc/pass8d o8ned by uid 2 in /docroot/script.php on line C
in em#argoA pueden ha#er am#ientes donde una estricta veri(icaci-n del U0D no es apropiadaA y
una rela'ada veri(icaci-n del -0D es su(iciente; +sto es soportado por medio del sEitch
sa(eZmodeZgid; ete*ndolo a On hace la veri(icaci-n rela'ada -0DA sete*ndolo a O99 >el valor por
omisi-n? hace la veri(icaci-n del U0D;
i en vez del sa(eZmodeA @d; setea un directorio openZ#asedirA entonces todas las operaciones de
(ichero estar*n limitadas a los (icheros #a'o ese directorio especi(icado; Por e'emplo >e'emplo de
httpd;con( de Apache?C
<Lirectory /docroot>
php%admin%=alue open%basedir /docroot
</Lirectory>
i @d; corre el mismo script;php con este seteo openZ#asedirA entonces este es el resultadoC
7arninE@ open%basedir restriction in e##ect. Sile is in 8ronE directory in
/docroot/script.php on line C
@d; tam#i<n puede inha#ilitar (unciones individuales; Note /ue la directiva disa#leZ(unctions no
puede ser usada (uera del (ichero php.ini lo /ue signi(ica /ue @d; no puede inha#ilitar (unciones
en los principios per2virtualhost o per2directory en su (ichero httpd;con(; i agregamos esto a
nuestro (ichero php.iniC
disable%#unctions read#ile,system
+ntonces o#tenemos esta salidaC
7arninE@ read#ile39 has been disabled #or security reasons in
/docroot/script.php on line C
;unciones restringidasAinhabilitadas por Modo ,eguro
+sta es una lista pro#a#lemente incompleta y posi#lemente incorrecta de las (unciones limitadas por
sa(e mode;
Tabla 8*(*. ;unciones limitadas por Modo ,eguro
;unci"n :imitaciones
dbmopen./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado;
dbase>open./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado;
filepro./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado;
filepro>ro3count./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado;
filepro>retrie5e./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado;
if+>L./ restricciones s/lZsa(eZmodeA >a^ sa(e mode?
ingres>L./ restricciones s/lZsa(eZmodeA >a^ sa(e mode?
mys?l>L./ restricciones s/lZsa(eZmodeA >a^ sa(e mode?
pg>loimport./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado;
posi+>mBfifo./
5omprue#a si el directorio /ue va a utilizarA tiene la misma @.D /ue
el script /ue est* siendo e'ecutado;
puten5./
O#ecede las ini2directivas sa(eZmodeZprotectedZenvZvars y
sa(eZmodeZalloEedZenvZvars; $ea tam#i<n la documentaci-n de
puten5./
mo5e>uploaded>file./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado;
chdir./
5omprue#a si el directorio /ue va a utilizarA tiene la misma @.D /ue
el script /ue est* siendo e'ecutado;
dl./ +sta (unci-n no est* ha#ilitada en sa(e2mode >modo2seguro?
#ac"tic" operator +sta (unci-n no est* ha#ilitada en sa(e2mode >modo2seguro?
shell>e+ec./ >Walencia
(uncional de #ac"tic"s?
+sta (unci-n no est* ha#ilitada en sa(e2mode >modo2seguro?
e+ec./
@d; puede correr s-lo e'ecuta#les dentro delsa(eZmodeZeFecZdir;
Por razones pr*cticasA no est* actualmente permitido tener
componentes .. en la ruta del (ichero e'ecuta#le;
system./
@d; puede correr s-lo e'ecutata#les dentro delsa(eZmodeZeFecZdir;
Por razones pr*cticasA no est* actualmente permitido tener
componentes .. en la ruta del (ichero e'ecuta#le;
passthru./
@d; puede correr s-lo e'ecutata#les dentro delsa(eZmodeZeFecZdir;
Por razones pr*cticasA no est* actualmente permitido tener
componentes .. en la ruta del (ichero e'ecuta#le;
popen./
@d; puede correr s-lo e'ecutata#les dentro delsa(eZmodeZeFecZdir;
Por razones pr*cticasA no est* actualmente permitido tener
componentes .. en la ruta del (ichero e'ecuta#le;
mBdir./
5omprue#a si el directorio /ue va a utilizarA tiene la misma @.D /ue
el script /ue est* siendo e'ecutado;
rmdir./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado;
;unci"n :imitaciones
rename./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado; 5omprue#a si el
directorio /ue va a utilizarA tiene la misma @.D /ue el script /ue est*
siendo e'ecutado;
unlinB./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado; 5omprue#a si el
directorio /ue va a utilizarA tiene la misma @.D /ue el script /ue est*
siendo e'ecutado;
copy./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado; 5omprue#a si el
directorio /ue va a utilizarA tiene la misma @.D /ue el script /ue est*
siendo e'ecutado; >en source y tarEet?
chgrp./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado;
cho3n./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado;
chmod./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado; Adem*sA @d; no
puede setear los #its de @.DA G.D y stic"y
touch./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado; 5omprue#a si el
directorio /ue va a utilizarA tiene la misma @.D /ue el script /ue est*
siendo e'ecutado;
symlinB./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado; 5omprue#a si el
directorio /ue va a utilizarA tiene la misma @.D /ue el script /ue est*
siendo e'ecutado; >NotaC s-lo el target es compro#ado?
linB./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado; 5omprue#a si el
directorio /ue va a utilizarA tiene la misma @.D /ue el script /ue est*
siendo e'ecutado; >NotaC s-lo the target es compro#ado?
getallheaders./
+n Modo eguroA las ca#eceras /ue empiezan con HauthorizationH
>insensitivo al tipo de letra? no ser*n retornadas; AdvertenciaC esto
est* roto por la implementaci-n de aol2server de getallheaders./a
header./
+n Modo eguroA el @.D del script est* agregado a la parte realm de
la ca#ecera III=,uthent6cate si @d; setea esta ca#ecera >usado por
&,,P Authentication?;
highlight>file./A
sho3>source./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado; 5omprue#a si el
directorio /ue va a utilizarA tiene la misma @.D /ue el script /ue est*
siendo e'ecutado; >NotaC s-lo a(ectado desde P&P 8;0;1?
parse>ini>file./
5omprue#a /ue los archivosDdirectorios /ue va a utilizarA tengan la
misma @.D /ue el script /ue est* siendo e'ecutado; 5omprue#a si el
directorio /ue va a utilizarA tiene la misma @.D /ue el script /ue est*
siendo e'ecutado; >NotaC s-lo a(ectado desde P&P 8;0;1?
5ual/uier (unci-n /ue usa
php1/main/#open%8ra
ppers.c
NN
Captulo 87. )sando PHP desde la lnea de
comando
Desde la versi-n 8;7;3A +!+ soporta un nuevo tipo de S,+0 >.nter(az De Programaci-n De @so Del
ervidor? llamada C40 /ue signi(ica literalmente 6nter9aD #e l\nea #e coman#o LComman# 46ne
0nter9aceM; 5omo el nom#re implicaA este tipo de S,+0 se (oca en la creaci-n de aplicaciones /ue
pueden correr desde la l)nea de comando >o desde el des"top tam#i<n? con +!+; &ay algunas
di(erencias dentro del C40 S,+0 y otros S,+0 /ue son eFplicadas en este cap)tulo; +s importante
mencionar /ue C40 y C-0 son di(erentes clases de AP. y comparten algunas caracter)sticas;
La inter(az llamada C40 S,+0 (ue introducida con +!+ ;.2.0A pero es todav)a en estado
eFperimental y tiene /ue ser activada eFpl)citamente con ==ena1le=cl6 cuando usando ./con96Eure;
Desde +!+ ;.R.0 la inter(az C40 S,+0 es activada autom*ticamente; ,u puedes usar ==#6sa1le=cl6
para de2activarla;
Desde +!+ ;.R.0A el nom#reA locaci-nA y eFistencia de los #inarios 5L.D5G. ser*n di(erentes
dependiendo en como .nstales +!+ en tu sistema; 5uando e'ecutes ma>eA 5G.A y 5L. son
compilados autom*ticamenteA y puestas como sap6/cE6/php y sap6/cl6/php respectivamenteA en el
directorio =source= de +!+; De#es notarA /ue los dos son llamados php; Lo /ue ocurre durante el
proceso ma>e depende en tu l)nea de con(iguraci-n >;Dcon(igure?; i el modulo S,+0 es seleccionado
durante tu con(iguraci-nA como por e'emplo ap8sA o la opci-n ==#6sa1le=cE6 es usadaA el C40 es
copiado a G+RE30FH/16n/php durante la e'ecuci-n del comando ma>e 6nstall de otras maneras el
5G. es instalado a/u); Por e'emploA si pones ==76th=ap8s en tu con(iguraci-nA entonces el C40 es
copiado a G+RE30FH/16n/php durante ma>e 6nstall; i tu /uieres so#rescri#ir la instalaci-n del C-0
#inarioA utiliza ma>e 6nstall=cl6 despu<s de usar ma>e 6nstall; Alternativamente puedes especi(icar ==
#6sa1le=cE6 en tu l)nea de con(iguraci-n;
Nota- Por /ue am#os ==ena1le=cl6 y ==ena1le=cE6 son activados autom*ticamenteA
simplemente teniendo ==ena1le=cl6 en tu l)nea de con(iguraci-n no necesariamente
signi(ica /ue C40 son copiados a G+RE30FH/16n/php durante ma>e 6nstall;
Los archivos de +!+ ;.2.0 y +!+ ;.2.R distri#u)an el 5L. como phpFcli.exeA y los manten)a en
el mismo directorio /ue el 5G. php.exe; +mpezando con +!+ ;.R.0 el archivo para EindoEs
distri#uye el 5L. como php.exe en un directorio llamado cliX o sea cl6/php.e8e;
$ue 5ersi"n de ,API tengo&- Desde tu l)nea de comandoA e'ecutando php = te de'ara
sa#er si php es C-0 o C40;
Di(erencias remarca#les del C40 S,+0 comparadas con otros S,+0sC S,+0sC
+n esta clase de C-0 S,+0 no hay ca#eceras >=headers=? escritas en el resultado >=output=?;
Aun/ue el C-0 S,+0 provee una manera de suprimir &,,P ca#eceras >=headers=?A no eFiste
una opci-n Walente /ue los activa en el C40 S,+0;
C40 autom*ticamente empieza en modo silenciosoA la opci-n =@ eFiste por compati#ilidad
con antiguos programas C-0;
No cam#ia el directorio corrienteA a ese en el cual el programa vive; La opci-n =C es
mantenida por compati#ilidad;
+rrores son reportados en teFtoA no en el (ormato &,ML;
&ay ciertas directivas en el php.ini /ue son so#rescrita por el C40 S,+0 por /ue estas no
hacen mucho sentido en situaciones donde la l)nea de comando es usadaC
Tabla 87(!. Kirecti5as sobrescrita en php.ini
Kirecti5as
.directi5es/
C!" S$P"
e5alu"
automtico
.default
5alue/
Commentario .comment/
htmlZerrors FALSE
5uando los resultados incorrectos aparecen en tu l)nea de
comandoA puede ser di()cil hacer sentido de ellos con todas esas
!TM4 tagsA por esta raz-nA esta directiva es autom*ticamente
FALSE;
implicitZ(lu
sh
TRUE
+s deseoso /ue los resultados de print .imprimir/./A echo
.ecco/./ y otras relacionadasA sean inmediatamente escritas
como resultados y no mantenidas en ningBn #u((er; ,u todav)a
puedes usar output #u((ering si tu /uieres manipular los
resultados proveidos autom*ticamente;
maFZeFecut
ionZtime
3
>unlimited?
De#ido un numero ilimitado de posi#ilidades de usar +!+ en la
l)nea de comandoA el m*Fimo tiempo de e'ecuci-n es ilimitado;
Aun/ue aplicaciones escritas para el .nternetA usualmente
re/uieres una r*pida e'ecuci-nA la clase de aplicaci-n /ue es
e'ecutada desde la l)nea de comandoA usualmente necesitan mas
tiempo para e'ecutar correctamente;
registerZarg
cZargv
TRUE
Por /ue estas opciones son TRUE tu siempre necesitaras acceso
al arEc >el numero de argumentos pasados a la aplicaci-n? y
arE >el array de argumentos? en el C40 S,+0;
Desde la versi-n 8;7;3 de +!+A las varia#les 'arEc y 'arE son
registradas y llenadas con los resultados apropiados cuando
usando C40 S,+0; Antes de esta versi-nA la creaci-n de estas
varia#les es similar a como en C-0 y MODU4E versiones /ue
re/uiere la P&P directiva registerZglo#als estar on Lact6eM; in
importar la versi-n o la con(iguraci-n de registerZglo#als tu
siempre puedes tra#a'ar por medio de YZ+R$+R o
'!TT+_SER(ER_(,RS; Por e'emploC '_SER(ER)<arE<.
Nota- +stas instrucciones no pueden ser iniciadas con valores /ue son di(erentes
a los de la con(iguraci-n en php.ini o el archivo correspondiente; +sta es una
limitaci-n dada por /ue esos valores autom*ticosA son aplicados despu<s de /ue
todos los archivos conteniendo par*metros de con(iguraci-n an sido e'ecutadosX
P+ROA esto valores pueden ser cam#iados mientras to programa esta e'ecutando
>esto no hace sentido para todas las directivasA como por e'emplo
registerZargcZargv?;
Para (acilitar tra#a'ando en la l)nea de comandoA las siguientes constantes son de(inidasC
Tabla 87(*. constantes especificas de C:I
Constant
.constante/
Kescription .descripci"n/
STDIN
@na stream a#ierta hacia st#6n; +sto nos salva de a#rirla
con
$stdin > #open3Mphp@//stdinM, MrM9;
STDOUT
@na stream a#ierta hacia st#out; +sto nos salva de a#rirla
con
$stdout > #open3Mphp@//stdoutM, M8M9;
STDERR
@na stream a#ierta hacia st#err; +sto nos salva de a#rirla
con
$stderr > #open3Mphp@//stderrM, M8M9;
Dado lo anteriorA tu no necesitas a#rirA como por e'emploA una stream hacia st#err
manualmenteA solamente necesitas usar la constante en vez de usar los recursos de la streamC
php Fr M#8rite3&*LE'', "stderrVn"9;M
No necesitas cerrar estas stream eFpl)citamenteA desde /ue son cerradas autom*ticamente por
+!+ cuando tu programa termina;
+l C40 S,+0 no cam#ia el directorio en el cual to estas corrientementeA al directorio donde el
programa e'ecutado vivea
+'emplo mostrando la di(erencia al C-0 S,+0C
<?php
/W .uestra aplicaci&oacute;n llamada.phpW/
echo Eetc8d39, "Vn";
?>
5uando usas la versi-n C-0 el resultado esC
$ p8d
/tmp
$ php FQ otro%directorio/test.php
/tmp/otro%directorio
+sto claramente muestra /ue +!+ cam#ia su directorio al usado por el programa /ue
e'ecutas;
@sando el C40 S,+0 resultaC
$ p8d
/tmp
$ php F# otro%directorio/test.php
/tmp
+sto no da mas (leFi#ilidad cuando escri#iendo utilidades en la l)nea de comando con +!+;
Nota-
Puedes o#tener acceso a la lista de opciones proveida por +!+ e'ecutando +!+ con el =hsEitchC
+saEe@ php )options/ )F#/ <#ile> )arEs.../
php )options/ Fr <code> )arEs.../
php )options/ )FF arEs.../
Fs Lisplay colour syntax hiEhliEhted source.
F8 Lisplay source 8ith stripped comments and 8hitespace.
F# <#ile> arse <#ile>.
F= (ersion number
Fc <path>T<#ile> OooI #or php.ini #ile in this directory
Fa 'un interacti=ely
Fd #oo)>bar/ Le#ine 4.4 entry #oo 8ith =alue MbarM
Fe -enerate extended in#ormation #or debuEEer/pro#iler
F0 <#ile> Ooad Yend extension <#ile>.
Fl &yntax checI only 3lint9
Fm &ho8 compiled in modules
Fi H in#ormation
Fr <code> 'un H <code> 8ithout usinE script taEs <?..?>
Fh *his help
arEs... ,rEuments passed to script. +se FF arEs 8hen #irst arEument
starts 8ith F or script is read #rom stdin
Aun/ue los resultados anteriores siempre ser*n dados en inglesA a continuaci-n te dar< una lista /ue
pro#a#lemente sera muy BtilC
+saEe@ php )options/ )F#/ <#ile> )arEs.../
php )options/ Fr <code> )arEs.../
php )options/ )FF arEs.../
Fs Lisplay colour syntax hiEhliEhted source.
3colorear el sintaxis en el c&oacute;diEo9
F8 Lisplay source 8ith stripped comments and 8hitespace.
3remue=e los comentarios y espacios del c&oacute;diEo9
F# <#ile> arse <#ile>.
3anali0a <#ile>9
F= (ersion number
3la =ersi&oacute;n de H Que estas usando9
Fc <path>T<#ile> OooI #or php.ini #ile in this directory
3usa el php.ini archi=o locali0ado aQu&iacute;9
Fa 'un interacti=ely
3interacti=o9
Fd #oo)>bar/ Le#ine 4.4 entry #oo 8ith =alue MbarM
3de#ine #oo con el =alor MbarM en php.ini9
Fe -enerate extended in#ormation #or debuEEer/pro#iler
3Eenera mas in#ormaci&oacute;n para el debuEEer/pro#iler9
F0 <#ile> Ooad Yend extension <#ile>.
3inicia las exenciones Yend <archi=e>9
Fl &yntax checI only 3lint9
3"ira al sintaxis 3lint99
Fm &ho8 compiled in modules
3muestra los m&oacute;dulos compilados9
Fi H in#ormation
3in#ormaci&oacute;n H9
Fr <code> 'un H <code> 8ithout usinE script taEs <?..?>
3ejecuta H <code> sin usar las taEs <?..?> en el script
Fh *his help
3estas opciones9
arEs... ,rEuments passed to script. +se FF arEs 8hen #irst arEument
starts 8ith F or script is read #rom stdin
3,rEumentos pasados al proErama. +sa FF arEs cuando el primer
arEumento empie0a con F o tu proErama es le&iacute;do directamente desde stdin9
+l C40 S,+0 tiene tres di(erentes maneras de o#tener el c-digo +!+ /ue tu /uieres e'ecutarC
1; Puedes decir a +!+ /ue e'ecute ciertos archivos;
php my%script.php
php F# my%script.php
+n estos dos e'emplos >aun/ue utilices el sEitch =9 o no? e'ecutan el archivo my%script.php;
,u puedes escoger cual/uier archivo para e'ecutar 2 tus programas +!+ no tienen /ue terminar
con la eFenci-n .php y pueden tener cual/uier otra eFenci-n tu desees;
0; Pasa el c-digo +!+ para /ue sea e'ecutado directamente en la l)nea de comando;
php Fr Mprint%r3Eet%de#ined%constants399;M
De#es tener cuidado en reguardo a las su#stituciones varia#les en tu l)nea de comando y usando
comillas>=?;
Nota- Deves ponerle atenci-n al e'emploA y notaras /ue no tiene tags ni al principio
ni al (inalA el comando =r simplemente no las usa; @sando las tags te dar* un error
cuando trates de e'ecutar el programa;
7; Provee el c-digo +!+ para e'ecutar por medio de st#6n
+sto te da la ha#ilidad de din*micamente crear c-digo +!+ y mandarlo al programaA como por
e'emplo a continuaci-nC
$ some%application T some%#ilter T php T sort Fu >#inal%output.txt
,u no puedes com#inar ninguna de las tres (ormas de e'ecutar el c-digo;
5omo cual/uier aplicaci-n e'ecutada en la l)nea de comandoA el +!+ #inario acepta un numero de
argumentos y tu programa tam#i<n puede reci#ir argumentos; +l numero de argumentos /ue pueden
ser pasados a tu programa no es limitado por +!+ >la l)nea de comando tiene limitaciones en el
numero de s)m#olos /ue pueden ser pasadosX usualmente tu nunca alcanzar)as este limite?; Los
argumentos pasados a tu programaA est*n disponi#les en tu array glo#al 'arE; +l )ndeF cero >=3=?
siempre contiene el nom#re de tu programa >/ue es = en caso de c-digo /ue esta viniendo por medio
del input est*ndarA o del sEitch en la l)nea de comando =r; La segunda varia#le glo#al registrada es
'arEc y contiene el numero de elementos en el array 'arE >no el numero de argumentos pasados as
programa?;
Mientras el argumento /ue tu /uieres pasas a tu programa no comienza con =A no tienes /ue esperar
por nada especial; Pero si el argumento empieza con =A te puede generar pro#lemasA por /ue +!+
pensara /ue tiene /ue procesarlo; Para prevenir estoA usa la lista separadora de argumentosC ==;
Despu<s de /ue el separador a sido procesadoA cada siguiente argumento es pasado sin tocar a tu
programa;
U *his 8ill not execute the Ei=en code but 8ill sho8 the H usaEe
U Esto no ejecutara el c&oacute;diEo pero H mostrara el uso
$ php Fr M=ar%dump3$arE=9;M Fh
+saEe@ php )options/ )F#/ <#ile> )arEs.../
).../
U *his 8ill pass the MFhM arEument to your script and pre=ent H #rom sho8inE itMs usaEe
U passaremos el arEumento MFhM a tu proErama y pre=enira Que H demuestre su uso
$ php Fr M=ar%dump3$arE=9;M FF Fh
array3C9 :
)2/>>
strinE369 "F"
)6/>>
strinE3C9 "Fh"
;
PeroA eFiste otra manera de usar +!+ en la l)nea de comando; ,u puedes escri#ir un programa
donde la primera l)nea empieza con K_/usr/16n/php L#on#e /usr/16n/php es la locac6`n #e phpM;
Despu<s de estoA tu puedes usar +!+ comBn y corriente; @na vez /ue tu le as dado permiso de
e'ecuci-n a tu programa >por e'emplo Y8 test? tu programa puede ser e'ecutado como si (uera
digamos un programa en perlC
U!/usr/bin/php
<?php
=ar%dump3$arE=9;
?>
Asumiremos /ue el archivo es llamado testA y esta en el mismo directorio en el cual to estasA en ese
casoA podemos hacer lo siguiente;
$ chmod H55 test
$ ./test Fh FF #oo
array319 :
)2/>>
strinE3G9 "./test"
)6/>>
strinE3C9 "Fh"
)C/>>
strinE3C9 "FF"
)</>>
strinE3<9 "#oo"
;
5omo puedes verA en este caso no atenci-n es dada a pasar los par*metros /ue comiensen con = en
tu programa;
Tabla 87(7. Jpciones en la lnea de comando
Jpciones Kescripcion
2s
colora el sintaFis de tu c-digo
+sta opci-n usa un mecanismo interno para e'ecutar el archivoA y produce una versi-n coloreada en
normal; Nota /ue todo lo /ue hace es generar un #lo/ue de $co#e& ).... $/co#e& !TM4 tagsA no ca#ecera de
Nota- +sta opci-n no tra#a'a en con'unto con =r;
2E
,e mostrara tu c-digo sin comentarios ni espacios #lancos;
Nota- +sta opci-n no tra#a'a en con'unto con =r;
2(
+'ecuta el archivo indicado en la opci-n =9; +sta opci-n es opcional y puede ser eFcluida; olamente proveiendo el archivo /ue
necesita ser e'ecutado es su(iciente;
2v
+scri#e la version de P&PA P&P AP. y Iend al output normalA por e'emploC
$ php F=
H 1.<.2 3cli9, RopyriEht 3c9 6KKHFC22C *he H -roup
Yend EnEine =6.<.2, RopyriEht 3c9 6KKJFC22C Yend *echnoloEies
2c
5on esta opci-n uno puede especi(icar el directorio donde encontraremos el php.ini archivoA o tu puedes especi(icar una versi-n
Bnica del mismo >la cual no tiene /ue ser llamada php.ini?A por e'emploC
$ php Fc /costumatisado/directorio/ mi%proErama.php
$ php Fc /customatisado/directorio/customatisadoFarchi=o.ini mi%proErama.php
2a 5orre P&P interactivamente;
Jpciones Kescripcion
2d
+sta opci-n te hayudara a crear el valor de cual/uier directiva de con(iguraci-n permitidas en el php.ini
Fd directi=a%%de%con#iEuracion )>=alor/
+'emplosC
U ?mittinE the =alue part 8ill set the Ei=en con#iEuration directi=e to "6"
U ?mitiendo la parte relacionada al =alor, le asiEnara a la directi=a de con#iEuracion el =alor U "6"
$ php Fd max%execution%time Fr M$#oo > ini%Eet3"max%execution%time"9; =ar%dump3$#oo9;M
strinE369 "6"
U assinE an empty =alue part 8ill set the con#iEuration directi=e to ""
U asando un =alor =ac&iacute;o, le asiEnara a la directi=a de con#iEuraci&oacute;n el =alor ""
php Fd max%execution%time> Fr M$#oo > ini%Eet3"max%execution%time"9; =ar%dump3$#oo9;M
strinE329 ""
U *he con#iEuration directi=e 8ill be set to anythinE passed a#ter the M>M character
U la directi=a de con#iEuraci&oacute;n sera asiEnada a todo pasada el ">" simbolo
$ php Fd max%execution%time>C2 Fr M$#oo > ini%Eet3"max%execution%time"9; =ar%dump3$#oo9;M
strinE3C9 "C2"
$ php Fd max%execution%time>doesntmaIesense Fr M$#oo > ini%Eet3"max%execution%time"9; =ar%dump3$#oo9;M
strinE3659 "doesntmaIesense"
2e Generando mas in(ormaci-n para el de#uggerDpro(iler;
2z
Activa las eFtensiones Iend; i solamente un archivo es dadoA +!+ tratar* de activar estas eFtensiones directamente desde el
directorio predeterminado donde est< la #i#lioteca en su sistema >@sualmente especi(icado /etc/ld.so.con#
Pasando el nom#re del archivo con descripci-n a#soluta de la u#icaci-n de sus archivosA no usar* las #i#liotecas en su sistema; @n
archivo conteniendo la in(ormaci-n de estos directoriosA le dira a +!+ /ue solamente trate de activar las eFtensiones relativas al
directorio donde te encuentras
2l
+sta opci-n proveer* una (orma conveniente para marcar tu sintaFis en tu c-digo; +n caso de sucesoA el teFto
#etecte# 6n $96lename& >no errores de sintaFis (ueron detectados? es escrito en tu output normalA y la l)nea de comando retornara el
c-digo 0; +n caso de pro#lemasA el teFto Errors pars6nE $96lename&A en adici-n al la (orma interna de detectar erroresA mensa'es
son escritos como output normal y tu l)nea de comando reci#ir* el c-digo 2SS
+sta opci-n no encontrara errores (atales >como por e'emplo (unciones inde(inida?A usa =9 si tu /uieres pro#ar por esta clase de
errores tam#i<n;
Nota- +sta opci-n no tra#a'a en con'unci-n con =r
2m
@sando esta opci-nA +!+ imprime sus m-dulos internos >y activados? usados por P&P y IendC
$ php Fm
)H "odules/
xml
toIeni0er
standard
session
posix
pcre
o=erload
mysQl
mbstrinE
ctype
)Yend "odules/
2i
+sta opci-n llama php6n9oA e imprime los resultado; i +!+ no esta tra#a'ando correctamenteA es recomenda#le /ue uses esta
opci-n o#serves si algBn mensa'e es imprimido antes deA o en medio de la in(ormaci-n dada por esta opci-n; +s un detalle
importante /ue entiendas /ue el mensa'e imprimido es en !TM4 y por esta raz-n grandecito;
Jpciones Kescripcion
2r
+sta opci-n te ayudara a e'ecutar +!+ directamente desde la l)nea de comando; Las eti/uetas /ue determinas el principio y al (inal
de tu programa >$%php y %&? no son necesarias y causaran errores si las pones en tu c-digo;
Nota- De#es tener cuidado cuando usando esta (orma de +!+ para /ue no crees con(licto con la su#stituci-n de
varia#les usada por la l)nea de comando;
+'emplos de errores
$ php Fr "$#oo > Eet%de#ined%constants39;"
Rommand line code369 @ arse error F parse error, unexpected M>M
+l pro#lema a/u) es /ue shD#ash esta haciendo una su#stituci-n de varia#lesA aun/ue las comillas >
varia#le '9oo pro#a#lemente no esta de(inidaA esta no se in(lara en ninguna direcci-nA el resultado es /ue el c-digo pasado a
para /ue e'ecute realmente leeC
$ php Fr " > Eet%de#ined%constants39;"
La (orma correcta de hacer estoA seria usando solamente una comilla ><?A varia#les usando solamente una comilla no son in(ladas
por shD#ash;
$ php Fr M$#oo > Eet%de#ined%constants39; =ar%dump3$#oo9;M
array3<H29 :
)"E%E''?'"/>>
int369
)"E%7,'.4.-"/>>
int3C9
)"E%,'&E"/>>
int319
)"E%.?*4RE"/>>
int3J9
)"E%R?'E%E''?'"/>>
).../
i tu no estas usando shD#ashA tam#i<n puedes encontrar otros pro#lemas; Por (avor reporta estos pro#lemas mandando un e2mail a
phpdocsGlists;php;net ,u tam#i<n puedes tener pro#lemas si tratas de poner varia#les en tu c-digo o cuando usas =D= como
s)m#olos de escape; ,e hemos advertido
Nota- =r esta listo en C40 AP. y no en el C-0 AP.;
2h
5on esta opci-nA tu puedes o#tener in(ormaci-n acerca de las opciones descri#)as anteriormenteA y una #reve descripci-n acerca de
sus (unciones;
+!+ puede e'ecutar tus programas a#solutamente independiente de tu servidor de p*ginas de Ee#;
i tu usas @niFA tu puedes aWadir una l)nea especial al principio de tu programaA y hacerlo
e'ecuta#leA para /ue el sistema sepa /ue programa de#e e'ecutar tu nueva creaci-n; i usas EindoEsA
tu puedes asociar tu programa con php.e8e para /ue solamente tengas /ue e'ecutarlo como har)as
con otros programas #a'o EindoEsA tam#i<n puedes crear un =#atch= archivo para e'ecutar tu
programa por medio de +!+; La primera l)nea /ue usaste para hacer /ue tu programa (uncione en
@niFA no le ara daWo a tu programa cuando e'ecutad #a'o EindoEsA pero de esta manera puedes crear
programas /ue puedes ser usados #a'o las dos plata(ormas; A continuaci-n te daremos un e'emploC
E'emplo 87(!. Programa para correr en la lnea do comando .script.php/
U!/usr/bin/php
<?php
i# 3$arEc !> C TT in%array3$arE=)6/, array3MFFhelpM, MFhelpM, MFhM, MF?M999 :
?>
Este es un proErama en php entendido para la l&iacute;nea de
comando con una opci&oacute;n.
+saEe@
<?php echo $arE=)2/; ?> <option>
<option> puede ser cualQuier palabra Que tu Quieras
imprimir. Ron la opci&oacute;n FFhelp, Fhelp Fh or F?, tu puedes
obtener esta in#ormaci&oacute;n
<?php
; else :
echo $arE=)6/;
;
?>
+n el programa anteriorA usamos una l)nea especial como nuestra primera l)neaA para indicar /ue
archivo de#er ser e'ecutado por P&P; Nosotros tra#a'amos con una versi-n de 5L. a/u)A por esoA no
tendremos ca#eceras de &,,P imprimidas; &ay dos varia#les /ue puedes usar cuando escri#iendo
aplicaciones en la l)nea de comando en P&PC 'arEc y 'arE; La primera es el numero de argumentos
mas uso >el nom#re del programa siendo e'ecutado?; La segunda es un array conteniendo los
argumentosA empezando con el programa nom#reA y el numero cero =3= >'arE)0.?;
+n el programa anterior che/ueamos si ha#)an masA o menos de dos argumentos; ,am#i<n trata de
ver si ==helpA =helpA =h o =%A son llamadosA e imprime el mensa'e de ayuda;
i tu /uieres e'ecutar el programa anterior en @niFA tu tienes /ue hacerlo e'ecuta#leA y simplemente
llamado scr6pt.php echo th6s o scr6pt.php =h; +n EindoEsA tu puedes hacer un #atch archivo para
alcanzar estos resultadosC
E'emplo 87(*. Archi5o batch para e'ecutar el programa php .script.bat/
^c@VphpVcliVphp.exe script.php \6 \C \< \1
Asumiendo /ue llamaste el programa descrito anteriormente script.php A % /ue tienes tu 5L.
php.exe en c@VphpVcliVphp.ese este archivo #atchA lo e'ecutara para ti con las (unciones
aWadidasC scr6pt.1at echo th6s o scr6pt.1at =h;
Mira tam#i<n la documentaci-n de Readline para mas (unciones /ue puedes usar para incrementar
tus opciones en este su'eto;
CI. Meferencia de funciones
Tabla de contenidos
.; Funciones espec)(icas de Apache
..; Advanced P&P de#ugger
...; Funciones de matrices
.$; Funciones Aspell PdeprecatedQ
$; Funciones matem*ticas de precisi-n ar#itraria B5Math
$.; P&P #ytecode 5ompiler
$..; Funciones de compresi-n Bzip0
$...; Funciones de calendario
.J; Funciones del AP. de 55$
J; 5lass"it Functions
J.; Funciones de 5lasesDO#'etos
J..; Funciones 5OM y ;Net >LindoEs?
J...; Funciones 5li#PDF
J.$; 5rac" Functions
J$; Funciones de ,ipo de 5aracter
J$.; Funciones 5@RL >5lient @RL Li#rary?
J$..; Funciones de pago electr-nico
J$...; 5yrus .MAP administration Functions
J.J; Funciones de Fecha y &ora
JJ; Funciones de la capa de a#straccion de #ases de datos >d#m2style?
JJ.; Funciones para dBase
JJ..; Funciones DBM Functions Po#soletasQ
JJ...; DBRR Functions
JJ.$; d#F Functions
JJ$; Funciones de acceso directo a +D
JJ$.; Funciones de Directorio
JJ$..; DOM Functions
JJ$...; Funciones DOM JML
JJ.J; ;N+, Functions
JJJ; Funciones de Gesti-n de +rrores y Registros
JJJ.; Funciones de +'ecuci-n de Programas
JJJ..; +Fi( Functions
JJJ...; File Alteration Monitor Functions
JJJ.$; FrontBase Functions
JJJ$; Funciones del Formato de Datos de Formulario
JJJ$.; Funciones (ilePro
JJJ$..; Funciones del istema de Archivos
JJJ$...; FriBiDi Functions
JJJ.J; Funciones F,P
JL; Funciones de Gesti-n de Funciones
JL.; GetteFt
JL..; GMP Functions
JL...; Funciones &,,P
JL.$; Funciones para &yperEave
JL$; &yperEave AP. Functions
JL$.; Funciones .nterBase
JL$..; Funciones .5AP Po#soletasQ
JL$...; Funciones iconv
JL.J; .D7 Functions
L; Funciones de .n(ormiF
L.; .. Administration Functions
L..; Funciones para im*genes
L...; Funciones .MAPA POP7 y NN,P
L.$; Opciones e .n(ormaci-n de P&P
L$; .ngres .. (unctions
L$.; .R5 GateEay Functions
L$..; .ntegraci-n de !ava y P&P
L$...; Funciones LDAP
L.J; li#Fml Functions
LJ; LIF Functions
LJ.; Funciones de 5orreo
LJ..; Funciones mailparse
LJ...; Funciones matem*ticas
LJ.$; MaFDB P&P +Ftension
LJ$; Multi#yte tring Functions
LJ$.; M5AL (unctions
LJ$..; Funciones de 5i(rado Mcrypt
LJ$...; M5$+ Payment Functions
LJ.J; Memcache Functions
LJJ; Funciones Mhash
LJJ.; Funciones Mimetype
LJJ..; Ming (unctions (or Flash
LJJ...; Funciones de Miscel*nea
LJJ.$; mnoGoearch Functions
LJJ$; MohaE" o(tEare ession &andler Functions
LJJ$.; Funciones mOL
LJJ$..; Funciones de Microso(t OL erver
LJJ$...; muscat Functions
LJJ.J; Funciones MyOL
LJJJ; +Ftensi-n me'orada de MyOL
LJJJ.; Funciones de 5ontrol de Pantalla con ,erminal Ncurses
LJJJ..; Funciones de Red
LJJJ...; N. (unciona
LJJJ.$; Lotus Notes Functions
LJJJ$; NAP.2speci(ic Functions
LJJJ$.; O#'ect AggregationD5omposition Functions
LJJJ$..; Funciones de Oracle M
LJJJ$...; OpenAL Audio Bindings
LJJJ.J; OpenL Functions
J5; Funciones Oracle
J5.; Funciones de 5ontrol de alida
J5..; O#'ect property and method call overloading
J5...; Ovrimos OL (unctions
J5.$; Parse"it Functions
J5$; Funciones de 5ontrol de Procesos
J5$.; Funciones de +Fpresiones Regulares >5ompati#les con Perl?
J5$..; Funciones PDF
J5$...; PDO Functions
J5.J; $erisign Pay(loE Pro (unctions
5; Funciones PostgreOL
5.; Funciones PO.J
5..; Printer Functions
5...; Pspell Functions
5.$; /tdom Functions
5$; Rar Functions
5$.; GN@ Readline
5$..; Funciones GN@ Recode
5$...; Funciones de +Fpresiones Regulares >PO.J +Ftendido?
5.J; Funciones em*(oro y de memoria compartida
5J; +AM data#ase (unctions
5J.; Funciones para el mane'o de sesiones
5J..; Funciones de Memoria 5ompartida
5J...; impleJML (unctions
5J.$; Funciones NMP
5J$; OAP Functions
5J$.; Funciones de oc"et
5J$..; tandard P&P Li#rary >PL? Functions
5J$...; OLite Functions
5J.J; ecure hell0 Functions
5JJ; Funciones de ecuencias
5JJ.; Funciones de 5adenas
5JJ..; hoc"Eave Flash (unctions
5JJ...; Funciones de y#ase
5JJ.$; ,5P Lrappers Functions
5JJ$; ,idy Functions
5JJ$.; ,o"enizer Functions
5JJ$..; ODB5 (unctions
5JJ$...; Funciones de @RL
5JJ.J; Funciones de $aria#les
5JJJ; vpopmail Functions
5JJJ.; L70api Functions
5JJJ..; Funciones LDDJ
5JJJ...; Fattr Functions
5JJJ.$; Fdi(( Functions
5JJJ$; Funciones de int<rprete JML
5JJJ$.; JML2RP5 Functions
5JJJ$..; JL (unctions
5JJJ$...; JL, (unctions
5JJJ.J; %AI
5JL; Funciones de mane'o de archivos Iip >s-lo lectura?
5JL.; Funciones de 5ompresi-n Ili#
I. ;unciones especficas de Apache
Introducci"n
+stas (unciones est*n disponi#les solamente cuando P&P se e'ecuta como m-dulo de Apache 1;F;
Instalaci"n
.n(ormaci-n so#re la instalaci-n de P&P con Apache se puede encontrar en el cap)tulo so#re
instalaci-n en la secci-n so#re Apache
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento del m-dulo P&P de Apache est* su'eto a los par*metros a'ustados en php.ini;
Los par*metros a'ustados mediante phpZ(lag en el archivo de con(iguraci-n del servidor o archivos
.htaccess localesA tendr*n pre(erencia so#re a/uellos a'ustados en php.ini;
E'emplo !. Kesacti5ar el int%rprete PHP en un directorio utili6ando .hta!!ess
php%#laE enEine o##
Tabla !. Jpciones de configuraci"n de Apache
Nombre
Por
defect
o
Modificable ;unci"n
engine On
P&PZ.N.ZA
LL
ha#ilita o desactiva el int<rprete P&P
childZtermi
nate
O((
P&PZ.N.ZA
LL
especi(ica si los scripts P&P pueden re/uerir la terminaci-n del
proceso hi'o al aca#ar un re/uerimiento; $<ase tam#i<n
apache>child>terminate./
lastZmodi(i
ed
O((
P&PZ.N.ZA
LL
enviar la (echa de modi(icaci-n de los scripts P&P como la
(echa de la Bltima modi(ici-n en la ca#ecera del re/uerimiento
actual
F#ithac" O((
P&PZ.N.ZA
LL
interpretar los archivos cuyo #it e'ecuta#le est< (i'ado a P&PA
independientemente de su eFtensi-n
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
enE6ne boolean
+sta directiva realmente s-lo es Btil cuando P&P es un m-dulo de Apache; e utiliza para
sitios /ue /uieran activar o desactivar el int<rprete de P&P en (unci-n del directorio o del
host2virtual; AWadiendo enEine o## en los lugares apropiados del archivo httpd.con#A
P&P puede ser ha#ilitado o desactivado;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
apacheZchildZterminate 22 ,erminar un proceso de apache una vez concluido el re/uerimiento en
e'ecuci-
apacheZgetZmodules 22 O#tiene una lista de los modulos cargados con el servidor Apache
apacheZgetZversion 22 O#tiene la version de Apache
apacheZgetenv 22 O#tiene una varia#le su#processZenv de Apache
apacheZloo"upZuri 22 Realiza una petici-n parcial por la @R. especi(icada y devuelve toda la
in(ormaci-n so#re ella
apacheZnote 22 O#tener y esta#lecer las notas de petici-n de apache
apacheZre/uestZheaders 22 O#tener todas las ca#eceras &,,P
apacheZresetZtimeout 22 Reset the Apache Erite timer
apacheZresponseZheaders 22 O#tener todas las ca#eceras &,,P de respuesta
apacheZsetenv 22 (i'ar una varia#le su#processZenv de Apache
ascii0e#cdic 22 ,raducir una cadena en A5.. a +B5D.5
e#cdic0ascii 22 ,raduce una cadena en +B5D.5 a A5..
getallheaders 22 Recuperar todas las ca#eceras de petici-n &,,P
virtual 22 Realizar una su#2petici-n de Apache
apache>child>terminate
>P&P 8 _^ 8;3;4A P&P 4?
apacheZchildZterminate 22 ,erminar un proceso de apache una vez concluido el re/uerimiento en
e'ecuci-
Kescripcon
#ool apache>child>terminate > void ?
apache>child>terminate./ registrar* el proceso Apache /ue est< e'ecutando el re/ueriminto P&P
actual para su terminaci-on una vez /ue la e'ecuci-n del c-digo haya (inalizado; Puede ser utilizado
para terminar un proceso una vez /ue un script con un alto consumo de memoria haya sido
e'ecutadoA dado /ue la memoria Bnicamente sera li#erada de (orma internaA pero no ser* devuelta al
sistema operativo;
Nota- La disponi#ilidad de esta caracter)stica se controla mediante la directiva
ch6l#_term6nate php.iniA /ue por de(ecto est* esta#lecida como o99 >desactivada?;
+sta caracter)stica tampoco est* disponi#le en las versiones =multi2thread= de ApacheA
como por e'emplo la versi-n Ein70;
$<ase tam#i<n la (unci-n e+it./;
apache>get>modules
>P&P 8 _^ 8;7;0A P&P 4?
apacheZgetZmodules 22 O#tiene una lista de los modulos cargados con el servidor Apache
Kescripci"n
matriF apache>get>modules > void ?
+sta (unci-n regresa una matrizA con los modulos /ue han sido cargados por Apache;
E'emplo !. E'emplo de apache>get>modules./
<?php
print%r3apache%Eet%modules399;
?>
+l e'emplo anterior e'emploA producir* algo similar aC
,rray
3
)2/ >> core
)6/ >> http%core
)C/ >> mod%so
)</ >> sapi%apacheC
)1/ >> mod%mime
)5/ >> mod%re8rite
9
apache>get>5ersion
>P&P 8 _^ 8;7;0A P&P 4?
apacheZgetZversion 22 O#tiene la version de Apache
Kescripci"n
cadena apache>get>5ersion > void ?
apache>get>5ersion./ regresa la version de Apache como una cadenaA o FALSE en caso de /ue
(alle;
E'emplo !. E'emplo de apache>get>5ersion./
<?php
$=ersion > apache%Eet%=ersion39;
echo "$=ersion Vn <br />";
?>
+l e'emplo anterior producir* algo similar aC
,pache/6.<.CK 3+nix9 H/1.<.1
$ea tam#i<n phpinfo./;
apache>geten5
>P&P 8 _^ 8;7;3A P&P 4?
apacheZgetenv 22 O#tiene una varia#le su#processZenv de Apache
Kescripci"n
cadena apache>geten5 > cadena varia#le PA #ool Eal"ZtoZtopQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
apache>looBup>uri
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
apacheZloo"upZuri 22 Realiza una petici-n parcial por la @R. especi(icada y devuelve toda la
in(ormaci-n so#re ella
Kescripci"n
o#'ect apache>looBup>uri > string nom#reZarchivo ?
+sta (unci-n realiza una petici-n parcial por una @R.; ,an solo llega a o#tener toda la in(ormaci-n
importante so#re el recurso dado y devuelve esta in(ormaci-n en una clase; Las propiedades de la
clase devuelta sonC
status
theZre/uest
statusZline
method
contentZtype
handler
uri
(ilename
pathZin(o
args
#oundary
noZcache
noZlocalZcopy
alloEed
sendZ#odyct
#ytesZsent
#yterange
clength
unparsedZuri
mtime
re/uestZtime
E'emplo !. E'emplo de apache>looBup>uri./
<?php
$in#o > apache%looIup%uri3Mindex.php?=ar>=alorM9;
print%r3$in#o9;
i# 3#ile%exists3$in#oF>#ilename99 :
echo M&iexcl;el archi=o existe!M;
;
?>
+l e'emplo anterior producir* una salida similar aC
stdRlass ?bject
3
)status/ >> C22
)the%reQuest/ >> -E* /dir/archi=o.php H**/6.6
)method/ >> -E*
)mtime/ >> 2
)clenEth/ >> 2
)chunIed/ >> 2
)content%type/ >> application/xFhttpdFphp
)no%cache/ >> 2
)no%local%copy/ >> 6
)unparsed%uri/ >> /dir/index.php?=ar>=alor
)uri/ >> /dir/index.php
)#ilename/ >> /home/htdocs/dir/index.php
)arEs/ >> =ar>=alor
)allo8ed/ >> 2
)sent%bodyct/ >> 2
)bytes%sent/ >> 2
)reQuest%time/ >> 62H1CJCHG1
9
&iexcl;el archi=o existe!
Nota- apache>looBup>uri./ s-lo (unciona cuando P&P se encuentra instalado como un
m-dulo de Apache;
apache>note
>P&P 7_^ 7;3;0A P&P 8 A P&P 4?
apacheZnote 22 O#tener y esta#lecer las notas de petici-n de apache
Kescripci"n
string apache>note > string nom#reZnota PA string valorZnotaQ ?
apache>note./ es una (unci-n espec)(ica de Apache /ue o#tiene y de(ine valores en la ta#la notes de
una petici-n; i es llamada con un argumentoA devuelve el valor actual de la nota nom1re_nota; i
es llamada con dos argumentosA de(ine el valor de la nota nom1re_nota a alor_nota y devuelve el
valor previo de la nota nom1re_nota;
apache>re?uest>headers
>P&P 8 _^ 8;7;3A P&P 4?
apacheZre/uestZheaders 22 O#tener todas las ca#eceras &,,P
Kescripci"n
array apache>re?uest>headers > void ?
apache>re?uest>headers./ devuelve una matriz asociativa de todas las ca#eceras &,,P en la
petici-n actual; +sta (unci-n est* disponi#le Bnicamente cuando P&P se e'ecuta como un m-dulo de
Apache;
E'emplo !. E'emplo de apache>re?uest>headers./
<?php
$headers > apache%reQuest%headers39;
#oreach 3$headers as $header >> $=alue9 :
echo "$header@ $=alue <br />Vn";
;
?>
Nota- 5on anterioridad a P&P 8;7;3A apache>re?uest>headers./ se denomina#a
getallheaders./; A partir de P&P 8;7;3A getallheaders./ es un alias para
apache>re?uest>headers./;
Nota- ,am#i<n se puede o#tener el valor de las varia#les 5G. comunes a partir de las
varia#les de entornoA lo cual (unciona independientemente de /ue se est< utilizando P&P
como un m-dulo de Apache; @tiliza phpinfo./ para ver una lista de todas las varia#les
de entorno disponi#les;
apache>reset>timeout
>no version in(ormationA might #e only in 5$?
apacheZresetZtimeout 22 Reset the Apache Erite timer
Kescription
#ool apache>reset>timeout > void ?
apache>reset>timeout./ resets the Apache Erite timerA Ehich de(aults to 733 seconds; Lith
set_t6me_l6m6tL0MJ 6Enore_user_a1ortLtrueM and periodic apache>reset>timeout./ callsA Apache can
theoretically run (orever;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- ,his (unctions is 'ust availa#le (or Apache 1;
Nota- +sta (unci-n no est* ha#ilitada en sa(e2mode >modo2seguro?
apache>response>headers
>P&P 8 _^ 8;7;3A P&P 4?
apacheZresponseZheaders 22 O#tener todas las ca#eceras &,,P de respuesta
Kescripci"n
array apache>response>headers > void ?
Devuelve una matriz con todas las ca#eceras de respuesta de Apache; +sta caracter)stica s-lo est*
disponi#le a partir de P&P 8;7;3;
$<ase tam#i<n getallheaders./ y headers>sent./;
apache>seten5
>P&P 8 _^ 8;0;3A P&P 4?
apacheZsetenv 22 (i'ar una varia#le su#processZenv de Apache
Kescription
int apache>seten5 > string varia#leA string value PA #ool Eal"ZtoZtopQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ascii*ebcdic
>P&P 7_^ 7;3;1:?
ascii0e#cdic 22 ,raducir una cadena en A5.. a +B5D.5
Kescripci"n
int ascii*ebcdic > string asciiZstr ?
ascii*ebcdic./ es una (unci-n espec)(ica de Apache /ue Bnicamente est* disponi#le en sistemas
operativos #asados en +B5D.5 >OD793A B0333?; ,raduce la cadena asc66_str codi(icada en
A5.. a su representaci- Walente +B5D.5 >a prue#a de #inario?A y devuelve el resultado;
$<ase tam#i<n la (unci-n inversa ebcdic*ascii./
ebcdic*ascii
>P&P 7_^ 7;3;1:?
e#cdic0ascii 22 ,raduce una cadena en +B5D.5 a A5..
Kescripci"n
int ebcdic*ascii > string e#cdicZstr ?
ebcdic*ascii./ es una (unci-n espec)(ica de Apache /ue Bnicamente est* disponi#le en sistemas
operativos #asados en +B5D.5 >OD793A B0333?; ,raduce la cadena e1c#6c_str codi(icada en
+B5D.5 a su representaci- Walente A5.. >a prue#a de #inario?A y devuelve el resultado;
$<ase tam#i<n la (unci-n inversa ascii*ebcdic./
getallheaders
>P&P 7A P&P 8 A P&P 4?
getallheaders 22 Recuperar todas las ca#eceras de petici-n &,,P
Kescripci"n
array getallheaders > void ?
getallheaders./ es un alias para apache>re?uest>headers./; Devolver* una matriz asociativa con
todas las ca#eceras &,,P en la petici-n actual; Por (avor lea la documentaci-n de
apache>re?uest>headers./ para m*s in(ormaci-n so#re c-mo tra#a'a esta (unci-n;
Nota- +n P&P 8;7;3A getallheaders./ se hizo un alias de apache>re?uest>headers./;
B*sicamenteA (ue renom#rada; +sto de#ido a /ue esta (unci-n s-lo tra#a'a cuando P&P
es compilado como un m-dulo de Apache;
Nota- A partir de P&P 8;7;7 se puede usar tam#ien esta (uncion con el modulo de
servidor NAP. de los servidores Ee#A NetscapeDiPlanetDunON+;
$ea tam#i<n apache>re?uest>headers./;
5irtual
>P&P 7A P&P 8 A P&P 4?
virtual 22 Realizar una su#2petici-n de Apache
Kescripci"n
int 5irtual > string nom#reZarchivo ?
5irtual./ es una (unci-n espec)(ica de Apache /ue es Walente a `a22ninclude virtual;;;22_ en
modZinclude; Realiza una su#2petici-n de Apache; +s Btil para incluir scripts 5G. o archivos ;shtmlA
o cual/uier otra cosa /ue /uisiera procesar a trav<s de Apache; Note /ue para un script 5G.A el
script de#e generar ca#eceras 5G. v*lidas; +sto /uiere decir /ueA por lo menosA de#e generar una
ca#ecera 5ontent2type;
Para e'ecutar la su#2petici-nA todos los #B(eres son terminados y volcados al navegadorA y las
ca#eceras pendientes son enviadas tam#i<n;
A5iso
+sta (unci-n s-lo tra#a'a cuando P&P se compila como un m-dulo de ApacheA ya /ue usa la AP.
de Apache para realizar las su#2peticiones; La cadena de /uery puede ser pasada al archivo
incluido pero la varia#le '_-ET es copiada desde el script padreA y solo '_SER(ER
)<5UERB_STR0N-<. se llena con la cadena de /uery pasada; Puede /ue la cadena /uery s-lo
pueda ser pasada cuando se usa Apache 0; +l archivo solicitado no ser* listado en el archivo de
registro >log? haccess de Apache;
A partir de P&P 8;3;KA puede usar 5irtual./ so#re archivos P&P; in em#argoA t)picamente es me'or
usar include./ o re?uire./ si desea incluier otro archivo P&P;
Nota- A partir de P&P 8;7;7 se puede usar tam#ien esta (uncion con el modulo de
servidor NAP. de los servidores Ee#A NetscapeDiPlanetDunON+;
II. Ad5anced PHP debugger
Introducci"n
APD is the Advanced P&P De#ugger; .t Eas Eritten to provide pro(iling and de#ugging capa#ilities
(or P&P codeA as Eell as to provide the a#ility to print out a (ull stac" #ac"trace; APD supports
interactive de#uggingA #ut #y de(ault it Erites data to trace (iles; .t also o((ers event #ased logging so
that varying levels o( in(ormation >including (unction callsA arguments passedA timingsA etc;? can #e
turned on or o(( (or individual scripts;
Atenci"n
APD is a Iend +FtensionA modi(ying the Eay the internals o( P&P handle (unction callsA and thus
may or may not #e compati#le Eith other Iend +Ftensions >(or eFample Iend Optimizer?;
Instalaci"n
APD is currently availa#le as a P+5L eFtension (rom httpCDDpecl;php;netDpac"ageDapd; Ma"e sure
you have installed the 5G. version o( P&P and it is availa#le in your current path along Eith the
phpize script;
Run the (olloEing command to doEnloadA #uildA and install the latest sta#le version o( APDC
pear install apd
,his automatically installs the APD Iend module into your P&P eFtensions directory; .t is not
mandatory to "eep it thereX you can store the module in any directory P&P can read as long as you
set the zendZeFtension parameter accordingly;
LindoEs users can doEnload the eFtension dll php%apd.dll (rom
httpCDDsnaps;php;netDEin70DP+5LZ,ABL+D;
.n your .N. (ileA add the (olloEing linesC
0end%extension > /absolute/path/to/apd.so
apd.dumpdir > /absolute/path/to/trace/directory
apd.statement%trace > 2
Depending on your P&P #uildA the zendZeFtension directive can #e one o( the (olloEingC
0end%extension 3non Y*&, non debuE build9
0end%extension%ts 3 Y*&, non debuE build9
0end%extension%debuE 3non Y*&, debuE build9
0end%extension%debuE%ts 3 Y*&, debuE build9
1uilding on 2in7*
,o #uild APD under LindoEs you need a Eor"ing P&P compilation environment as descri#ed on
httpCDDphp;netD 22 #asicallyA it re/uires you to have Microso(t $isual 5RRA Ein70#uild;zipA #isonD(leFA
and some "noE hoE to get it to Eor"; Also ensure that adp;dsp has DO line endingsX i( it has uniF
line endingsA Microso(t $isual 5RR Eill complain a#out it;
Configuraci"n en tiempo de e'ecuci"n
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
ap#.#ump#6r string
ets the directory in Ehich APD Erites pro(ile dump (iles; %ou can speci(y an a#solute path
or a relative path;
%ou can speci(y a di((erent directory as an argument to apd>set>pprof>trace./;
ap#.statement_trace boolean
pec(ies Ehether or not to do per2line tracings; ,urning this on >1? Eill impact the
per(ormance o( your application;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Ho3 to use PHP(APK in your scripts
1; As the (irst line o( your P&P scriptA call the apdZsetZppro(Ztrace>? (unction to start the traceC
apd%set%ppro#%trace39;
%ou can insert the line anyEhere in your scriptA #ut i( you do not start tracing at the #eginning o(
your script you discard pro(ile data that might otherEise lead you to a per(ormance #ottlenec";
0; NoE run your script; ,he dump output Eill #e Eritten to apd.dumpdir/ppro#%pid.ext;
,ugerencia- .( youHre running the 5G. version o( P&PA you Eill need to add the H2eH
(lag to ena#le eFtended in(ormation (or apd to Eor" properly; For eFampleC php Fe
F# script.php
7; ,o display (ormatted pro(ile dataA issue the pprofp command Eith the sort and display options o(
your choice; ,he (ormatted output Eill loo" something li"eC
bashFC.25b$ ppro#p F' /tmp/ppro#.CC616.2
*race #or /home/dan/testapd.php
*otal Elapsed *ime > 2.22
*otal &ystem *ime > 2.22
*otal +ser *ime > 2.22
'eal +ser &ystem secs/ cumm
\*ime 3excl/cumm9 3excl/cumm9 3excl/cumm9 Ralls call s/call "emory +saEe .ame
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
622.2 2.22 2.22 2.22 2.22 2.22 2.22 6 2.2222 2.222K 2 main
5G.K 2.22 2.22 2.22 2.22 2.22 2.22 6 2.2225 2.2225 2 apd%set%ppro#%trace
CJ.2 2.22 2.22 2.22 2.22 2.22 2.22 62 2.2222 2.2222 2 preE%replace
61.< 2.22 2.22 2.22 2.22 2.22 2.22 62 2.2222 2.2222 2 str%replace
,he 2R option used in this eFample sorts the pro(ile ta#le #y the amount o( real time the script
spent eFecuting a given (unction; ,he =cumm call= column reveals hoE many times each
(unction Eas calledA and the =sDcall= column reveals hoE many seconds each call to the (unction
re/uiredA on average;
8; ,o generate a calltree (ile that you can import into the S5acheGrind pro(ile analysis applicationA
issue the pprof*calltree comand;
Contact information
.( you have commentsA #ug(iFesA enhancements or Eant to help developing this #eastA you can send
an mail to apdGmail;communityconnect;com; Any help is very Eelcome;
Tabla de contenidos
apdZ#rea"point 22 tops the interpreter and Eaits on a 5R (rom the soc"et
apdZcallstac" 22 Returns the current call stac" as an array
apdZclun" 22 ,hroE a Earning and a callstac"
apdZcontinue 22 Restarts the interpreter
apdZcroa" 22 ,hroE an errorA a callstac" and then eFit
apdZdumpZ(unctionZta#le 22 Outputs the current (unction ta#le
apdZdumpZpersistentZresources 22 Return all persistent resources as an array
apdZdumpZregularZresources 22 Return all current regular resources as an array
apdZecho 22 +cho to the de#ugging soc"et
apdZgetZactiveZsym#ols 22 Get an array o( the current varia#les names in the local scope
apdZsetZppro(Ztrace 22 tarts the session de#ugging
apdZsetZsessionZtrace 22 tarts the session de#ugging
apdZsetZsession 22 5hanges or sets the current de#ugging level
apdZsetZsoc"etZsessionZtrace 22 tarts the remote session de#ugging
overrideZ(unction 22 Overrides #uilt2in (unctions
renameZ(unction 22 Renames origZname to neEZname in the glo#al (unctionZta#le
apd>breaBpoint
>no version in(ormationA might #e only in 5$?
apdZ#rea"point 22 tops the interpreter and Eaits on a 5R (rom the soc"et
Kescription
void apd>breaBpoint > int de#ugZlevel ?
,his can #e used to stop the running o( your scriptA and aEait responses on the connected soc"et; ,o
step the programA 'ust send enter >a #lan" line?A or enter a php command to #e eFecuted; A typical
session using tcplisten Eould loo" li"e this;
bashUtcplisten localhost HHHH
,L F ,d=anced H LebuEEer *race Sile
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
rocess id 3G66J9
*race ZeEun at &un "ar 62 C<@6<@6C C22C
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
3 2.2222229@ apd%set%session%trace called at /home/alan/rojects/projectC/test.
php@5
3 2.2H1JC19@ apd%set%session%trace%socIet39 at /home/alan/rojects/projectC/tes
t.php@5 returned. Elapsed 32.2H1JC19
3 2.2H1K6J9@ apd%breaIpoint39 /home/alan/rojects/projectC/test.php@H
[[ arE=)2/ $3??9 > K
apd%breaIpoint39 at /home/alan/rojects/projectC/test.php@H returned. Elapsed 3
FC2JK5C61GJ.62H<CH5<GJ9
>Vn
statement@ /home/alan/rojects/projectC/test.php@J
>Vn
statement@ /home/alan/rojects/projectC/test.php@J
>Vn
statement@ /home/alan/rojects/projectC/test.php@62
>apd%echo3$i9;
EXER@ apd%echo3$i9;
2
>apd%echo3seriali0e3apd%Eet%acti=e%symbols3999;
EXER@ apd%echo3seriali0e3apd%Eet%acti=e%symbols3999;
a@1H@:i@2;s@1@"7L";i@6;s@62@"R?O?'S-Z-";i@C;s@66@"X,+*H?'4*P";i@<;s@61@"
R?O?'*E'"%ZRE";i@1;s@K@"74.L?74L";i@5;s@61@"E*E'"%(E'&4?.";i@G;s@6G@"&E
&&4?.%",.,-E'";i@H;s@1@"&6";i@J;s@66@"-L"&E&&4?.";i@K;s@5@"+&E'";i@62;s@5@"
",4O";i@66;s@H@"?OL7L";i@6C;s@5@"O,.-";i@6<;s@62@"R?O?'*E'"";i@61;s@J@"L4&
O,P";i@65;s@J@"O?-.,"E";i@6G;s@G@"
>apd%echo3system3Mls /home/mydirM99;
........
>apd%continue329;
apd>callstacB
>no version in(ormationA might #e only in 5$?
apdZcallstac" 22 Returns the current call stac" as an array
Kescription
array apd>callstacB > void ?
Returns the current call stac" as an array
E'emplo !. apd>callstacB./ e+ample
<?php
print%r3apd%callstacI399;
?>
apd>clunB
>no version in(ormationA might #e only in 5$?
apdZclun" 22 ,hroE a Earning and a callstac"
Kescription
void apd>clunB > string Earning PA string delimiterQ ?
Behaves li"e perlHs 5arpCCcluc"; ,hroE a Earning and a callstac"; ,he de(ault line delimiter is =`BR
D_hn=;
E'emplo !. apd>clunB./ e+ample
<?php
apd%clunI3"&ome 7arninE","<>"9;
?>
apd>continue
>no version in(ormationA might #e only in 5$?
apdZcontinue 22 Restarts the interpreter
Kescription
void apd>continue > int de#ugZlevel ?
@sually sent via the soc"et to restart the interpreter;
E'emplo !. apd>continue./ e+ample
<?php
apd%continue329;
?>
apd>croaB
>no version in(ormationA might #e only in 5$?
apdZcroa" 22 ,hroE an errorA a callstac" and then eFit
Kescription
void apd>croaB > string Earning PA string delimiterQ ?
Behaves li"e perlHs 5arpCCcroa"; ,hroE an errorA a callstac" and then eFit; ,he de(ault line delimiter
is =`BR D_hn=;
E'emplo !. apd>croaB./ e+ample
<?php
apd%croaI3"&ome 7arninE","<>"9;
?>
apd>dump>function>table
>no version in(ormationA might #e only in 5$?
apdZdumpZ(unctionZta#le 22 Outputs the current (unction ta#le
Kescription
void apd>dump>function>table > void ?
Outputs the current (unction ta#le;
E'emplo !. apd>dump>function>table./ e+ample
<?php
apd%dump%#unction%table39;
?>
apd>dump>persistent>resources
>no version in(ormationA might #e only in 5$?
apdZdumpZpersistentZresources 22 Return all persistent resources as an array
Kescription
array apd>dump>persistent>resources > void ?
Return all persistent resources as an array;
E'emplo !. apd>dump>persistent>resources./ e+ample
<?php
print%r3apd%dump%persistent%resources399;
?>
apd>dump>regular>resources
>no version in(ormationA might #e only in 5$?
apdZdumpZregularZresources 22 Return all current regular resources as an array
Kescription
array apd>dump>regular>resources > void ?
Return all current regular resources as an array;
E'emplo !. apd>dump>regular>resources./ e+ample
<?php
print%r3apd%dump%reEular%resources399;
?>
apd>echo
>no version in(ormationA might #e only in 5$?
apdZecho 22 +cho to the de#ugging soc"et
Kescription
void apd>echo > string output ?
@sually sent via the soc"et to re/uest in(ormation a#out the running script;
E'emplo !. apd>echo./ e+ample
<?php
apd%echo3$i9;
?>
apd>get>acti5e>symbols
>no version in(ormationA might #e only in 5$?
apdZgetZactiveZsym#ols 22 Get an array o( the current varia#les names in the local scope
Kescription
array apd>get>acti5e>symbols > ?
Returns the names o( all the varia#les de(ined in the active scopeA >not their values?
E'emplo !. apd>get>acti5e>symbols./ e+ample
<?php
apd%echo3apd%Eet%acti=e%symbols399;
?>
apd>set>pprof>trace
>no version in(ormationA might #e only in 5$?
apdZsetZppro(Ztrace 22 tarts the session de#ugging
Kescription
void apd>set>pprof>trace > Pstring dumpZdirectoryQ ?
tarts de#ugging to \dumpZdirectory]Dppro(Z\processZid]A i( dumpZdirectory is not setA then the
apd;dumpdir setting (rom the php.ini (ile is used;
E'emplo !. apd>set>pprof>trace./ e+ample
<?php
apd%set%ppro#%trace39;
?>
apd>set>session>trace
>no version in(ormationA might #e only in 5$?
apdZsetZsessionZtrace 22 tarts the session de#ugging
Kescription
void apd>set>session>trace > int de#ugZlevel PA string dumpZdirectoryQ ?
tarts de#ugging to \dumpZdirectory]DapdZdumpZ\processZid]A i( dumpZdirectory is not setA then
the apd;dumpdir setting (rom the php.ini (ile is used;
de#ugZlevel is an integer Ehich is (ormed #y adding together the (olloEing valuesC
S+.R*4?.%*',RE 6
,'-&%*',RE C
,&&4-."E.*%*',RE 1
&*,*E"E.*%*',RE J
"E"?'P%*',RE 6G
*4"4.-%*',RE <C
&+"",'P%*',RE G1
. Eould seriously not recommend using M+MOR%Z,RA5+; .t is very sloE and does not appear to
#e accurate >greatA huhN? also A.GNM+N,Z,RA5+ is not implemented; oA to turn on all
(unctional traces >,.M.NGA F@N5,.ONA ARG @MMAR% >li"e strace 2c?? use the value 99
E'emplo !. apd>set>session>trace./ e+ample
<?php
apd%set%session%trace3KK9;
?>
apd>set>session
>no version in(ormationA might #e only in 5$?
apdZsetZsession 22 5hanges or sets the current de#ugging level
Kescription
void apd>set>session > int de#ugZlevel ?
,his can #e used to increase or decrease de#ugging in a di((erent area o( your
applicationA;de#ugZlevel is an integer Ehich is (ormed #y adding together the (olloEing valuesC
S+.R*4?.%*',RE 6
,'-&%*',RE C
,&&4-."E.*%*',RE 1
&*,*E"E.*%*',RE J
"E"?'P%*',RE 6G
*4"4.-%*',RE <C
&+"",'P%*',RE G1
E'emplo !. apd>set>session./ e+ample
<?php
apd%set%session3K9;
?>
apd>set>socBet>session>trace
>no version in(ormationA might #e only in 5$?
apdZsetZsoc"etZsessionZtrace 22 tarts the remote session de#ugging
Kescription
#ool apd>set>socBet>session>trace > string ipZaddressZorZuniFZsoc"etZ(ileA int soc"etZtypeA int
portA int de#ugZlevel ?
5onnects to the tcp server >eg; tcplisten? speci(ied .P or @niF Domain soc"et >li"e a (ile?A and sends
de#ugging data to the soc"et; %ou can use any portA #ut higher num#ers are #etter as most o( the
loEer num#ers may #e used #y other system services;
the soc"etZtype can #e APDZAFZ@N.J >(or (ile #ased soc"ets? or APDZAFZ.N+, >(or standard
tcpDip?
de#ugZlevel is an integer Ehich is (ormed #y adding together the (olloEing valuesC
S+.R*4?.%*',RE 6
,'-&%*',RE C
,&&4-."E.*%*',RE 1
&*,*E"E.*%*',RE J
"E"?'P%*',RE 6G
*4"4.-%*',RE <C
&+"",'P%*',RE G1
. Eould seriously not recommend setting the value to HzeroH to start EithA and use the #rea"point
methods to start de#ugging at a speci(ic place in the (ile;
E'emplo !. apd>set>socBet>session>trace./ e+ample
<?php
apd%set%socIet%session%trace3"6CH.2.2.6",,L%,S%4.E*,H66C,29;
?>
o5erride>function
>no version in(ormationA might #e only in 5$?
overrideZ(unction 22 Overrides #uilt2in (unctions
Kescription
#ool o5erride>function > string (unctionZnameA string (unctionZargsA string (unctionZcode ?
yntaF similar to createZ(unction>?; Overrides #uilt2in (unctions >replaces them in the sym#ol ta#le?;
E'emplo !. o5erride>function./ e+ample
<?php
o=erride%#unction3MtestM, M$a,$bM, Mecho "L?4.- *E&*"; return $a W $b;M9;
?>
rename>function
>no version in(ormationA might #e only in 5$?
renameZ(unction 22 Renames origZname to neEZname in the glo#al (unctionZta#le
Kescription
#ool rename>function > string originalZnameA string neEZname ?
Renames origZname to neEZname in the glo#al (unctionZta#le; @se(ul (or temporarily overriding
#uiltin (unctions;
E'emplo !. rename>function./ e+ample
<?php
rename%#unction3MmysQl%connectM, MdebuE%mysQl%connectM 9;
?>
III. ;unciones de matrices
Introducci"n
+stas (unciones permiten tra#a'ar y manipular matrices >arrays? de di(erentes maneras; Las matrices
se utilizan para guardarA mane'ar y operar grupos de varia#les;
Matrices simples y multi2dimensionales est*n soportadas y pueden ser creadas por el usuario u otras
(unciones; +Fisten (unciones espec)(icas de mane'o de #ases de datos /ue actualizan matrices con el
resultado devuelto por la #ase de datosA numerosas otras (unciones devuelven matrices como
resultado;
5onsultar la secci-n del manual Matrices si /uereis una eFplicaci-n detallada de como las matrices
est*n implementadas en P&P;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
Las constantes listadas a/ui est*n siempre disponi#les a trav<s del =nBcleo P&P=;
CASE_LO"ER >integer?
CASE_LO"ER se utiliza con array>change>Bey>case./ y se utiliza para convertir las claves
de una matriz a minBsculas; +ste es el valor por de(ecto de array>change>Bey>case./;
CASE_UPPER >integer?
CASE_UPPER se utiliza con array>change>Bey>case./ para convertir claves de matriz a
mayBsculas;
Flags de ordenaci-nC
SORT_ASC >integer?
SORT_ASC se utiliza con array>multisort./ para ordenar en sentido ascendente;
SORT_DESC >integer?
SORT_DESC se utiliza con array>multisort./ para ordenar en sentido descendente;
Flags de tipo ordenaci-nC utilizadas por varias (unciones ordenaci-n
SORT_RE#ULAR >integer?
SORT_RE#ULAR se utiliza para comparar elementos de (orma normal;
SORT_NUMERIC >integer?
SORT_NUMERIC se utiliza para comparar elementos de (orma num<rica;
SORT_STRIN# >integer?
SORT_STRIN# se utiliza para comparar elementos como cadenas;
COUNT_NORMAL >integer?
COUNT_RECURSI$E >integer?
E%TR_O$ER"RITE >integer?
E%TR_S&IP >integer?
E%TR_PREFI%_SAME >integer?
E%TR_PREFI%_ALL >integer?
E%TR_PREFI%_IN$ALID >integer?
E%TR_PREFI%_IF_E%ISTS >integer?
E%TR_IF_E%ISTS >integer?
E%TR_REFS >integer?
Cer tambi%n
$er tam#ien is>array./A e+plode./A implode./A split./A preg>split./ y unset./;
Tabla de contenidos
arrayZchangeZ"eyZcase 22 Devuelve una matriz con todas las claves de las cadenas convertidas a
mayBsculas o minBsculas
arrayZchun" 22 Divide una matriz en segmentos
arrayZcom#ine 22 5rea una nueva matrizA usando una matriz para las claves y otra para sus valores
arrayZcountZvalues 22 5uenta todos los valores de una matriz
arrayZdi((Zassoc 22 5omprue#a las di(erencias entre matrices teniendo en cuenta los )ndices
arrayZdi((Z"ey 22 5alcula la di(erencia de matrices usando las llaves para la comparaci-n
arrayZdi((Zuassoc 22 5omputa la di(erencia entre matrices con un che/ueo adicional de )ndicesA el
cual es realizado por una llamada de retorno entregada por el usuario
arrayZdi((Zu"ey 22 5alcula la di(erencia de matrices usando call#ac" (unction on the "eys (or
comparison
arrayZdi(( 22 5omprue#a las di(erencias entre matrices
arrayZ(ill 22 Llena una matriz con valores
arrayZ(ilter 22 Filtra elementos de una matriz mediante una (unci-n =call#ac"=
arrayZ(lip 22 .ntercam#ia los valores de una matriz con sus )ndices
arrayZintersectZassoc 22 5omputes the intersection o( arrays Eith additional indeF chec"
arrayZintersectZ"ey 22 5alcula la intersecci-n de matrices usando las llaves para la comparaci-n
arrayZintersectZuassoc 22 5alcula la intersecci-n de matrices con che/ueo de )ndices adicional por
una (unci-n de usuario
arrayZintersectZu"ey 22 5alcula la intersecci- de matrices usando una (unci-n de usuario para la
comparaci-n de los )ndices
arrayZintersect 22 5omputes the intersection o( arrays
arrayZ"eyZeFists 22 5omprue#a si el )ndice o clave dada eFiste en la matriz
arrayZ"eys 22 Devuelve todas las claves de una matriz
arrayZmap 22 Aplica la llamada de retorno especi(icada a los elementos de las matrices dadas
arrayZmergeZrecursive 22 @ne dos o m*s matrices recursivamente
arrayZmerge 22 5om#ina dos o m*s matrices
arrayZmultisort 22 Ordena mBltiples matricesA o matrices multi2dimensionales
arrayZpad 22 Rellena una matriz con un valor hasta el tamaWo especi(icado
arrayZpop 22 +Ftrae el Bltimo elemento de la matriz
arrayZpush 22 .nserta uno o m*s elementos al (inal de la matriz
arrayZrand 22 elecciona una o m*s entradas aleatorias de una matriz
arrayZreduce 22 Reduce iterativamente una matriz a un solo valor usando una (unci-n llamada de
retorno
arrayZreverse 22 Devuelve una matriz con los elementos en orden inverso
arrayZsearch 22 Busca un valor determinado en una matriz y devuelve la clave correspondiente en
caso de <Fito
arrayZshi(t 22 +Ftrae un elemento del comienzo de la matriz
arrayZslice 22 +Ftrae una porci-n de la matriz
arrayZsplice 22 uprime una porci-n de la matriz y la sustituye por otra cosa
arrayZsum 22 5alcula la suma de los valores en una matriz
arrayZudi((Zassoc 22 5omputa la di(erencia entre matrices con un che/ueo de )ndices adicionalA
comparando los datos con una llamada de retorno
arrayZudi((Zuassoc 22 5omputa la di(erencia entre matrices con un che/ueo de )ndices adicionalA
comparando los datos y los )ndices con una llamada de retorno
arrayZudi(( 22 5omputa la di(erencia entre matricesA usando una llamada de retorno para la
comparaci-n de datos
arrayZuintersectZassoc 22 5alcula la intersecci-n de matrices con che/ueo adicional de )dicesA
comparando los datos por una (unci-n del usuario
arrayZuintersectZuassoc 22 5alcula la intersecci-n de matrices con che/ueo adicional de )ndicesA
compara los datos y los )ndices por una (unci-n del usuario
arrayZuintersect 22 5alcula la intersecc-n de matricesA compara los datos con una (unci-n del
usuario
arrayZuni/ue 22 Remueve valores duplicados de una matriz
arrayZunshi(t 22 .ntroduce uno o m*s elementos al principio de la matriz
arrayZvalues 22 Devuelve todos los valores de una matriz
arrayZEal"Zrecursive 22 Aplicar una (unci-n de usuario recursivamente a cada miem#ro de una
matriz
arrayZEal" 22 Aplica una (unci-n del usuario a cada elemento de una matriz;
array 22 5rear una matriz
arsort 22 Ordena una matriz en orden inverso y mantiene la asociaci-n de )ndices
asort 22 Ordena una matriz y mantiene la asociaci-n de )ndices
compact 22 5rea una matriz /ue contiene varia#les y sus valores
count 22 5uenta los elementos de una matriz o propiedades de un o#'eto
current 22 Devuelve el elemento actual de una matriz
each 22 Devuelve el siguiente par claveDvalor de una matriz y avanza el apuntador
end 22 Mueve el puntero interno de una ta#la al Bltimo elemento
eFtract 22 .mporta varia#les a la ta#la de s)m#olos desde una matriz
inZarray 22 Revisa si un valor eFiste en una matriz
"ey 22 O#tiene una clave de una matriz asociativa
"rsort 22 Ordena una matriz por clave en orden inverso
"sort 22 Ordena una matriz por clave
list 22 Asigna varia#les como si (ueran una matriz
natcasesort 22 Ordena una matriz usando un algoritmo de =orden natural= sin distinguir mayBsculas
de minBsculas
natsort 22 Ordena una matriz usando un algoritmo de =orden natural=
neFt 22 Avanza el puntero interno de una matriz
pos 22 Alias de current./
prev 22 Re#o#ina el puntero interno de una matriz
range 22 5rea una matriz /ue contiene un rango de elementos
reset 22 Fi'a el puntero interno de una matriz a su primer elemento
rsort 22 Ordena una matriz en orden inverso
shu((le 22 Mezcla una matriz
sizeo( 22 Alias de count./
sort 22 Ordena una matriz
uasort 22 Ordena una matriz mediante una (unci-n de comparaci-n de(inida por el usuario y
mantiene la asociaci-n de )ndices
u"sort 22 Ordena una matriz por claves mediante una (unci-n de(inida por el usuario
usort 22 Ordena una matriz por sus valores usando una (unci-n de comparaci-n de(inida por el
usuario
array>change>Bey>case
>P&P 8 _^ 8;0;3A P&P 4?
arrayZchangeZ"eyZcase 22 Devuelve una matriz con todas las claves de las cadenas convertidas a
mayBsculas o minBsculas
Kescripci"n
array array>change>Bey>case > array input PA int caseQ ?
array>change>Bey>case./ cam#ia las claves de la matriz 6nput de (orma /ue <stas sean todas
mayBsculas o minBsculas; +l cam#io depende del par*metro opcional caseA mediante el cual se
pueden pasar dos constantes a la (unci-nC CASE_UPPER >mayBsculas? y CASE_LO"ER
>minBsculas?; +l valor por de(ecto es CASE_LO"ER; La (unci-n no a(ectar* a los )ndices
num<ricos;
E'emplo !. E'emplo de array>change>Bey>case./
$input%array > array3"ri"ero" >> 6, "&e-unLo" >> 19;
print%r3array%chanEe%Iey%case3$input%array, R,&E%+E'99;
La salida del programa anterior ser*C
,rray
3
)'4"E'?/ >> 6
)&E-+.L?/ >> 1
9
array>chunB
>P&P 8 _^ 8;0;3A P&P 4?
arrayZchun" 22 Divide una matriz en segmentos
Kescripci"n
array array>chunB > array inputA int size PA #ool preserveZ"eysQ ?
array>chunB./ divide una matriz en varias matricesA cada una con un nBmero de valores Walente a
s6De; La Bltima matriz generada puede tener un nBmero menor de valores; Las matrices se o#tienen
como miem#ros de una matriz multidimensionalA /ue ser* indeFada con nBmeros empezando por el
cero;
i al par*metro opcional presere_>e?s se le da el valor de TRUEA se (uerza a P&P a preservar las
claves originales de la matriz de entrada; i se especi(ica FALSEA se utilizar*n nuevos )ndices
num<ricos en cada matriz resultante; +l valor por de(ecto es FALSE;
E'emplo !. E'emplo de array>chunB./
$input%array > array3MaM, MbM, McM, MdM, MeM9;
print%r3array%chunI3$input%array, C99;
print%r3array%chunI3$input%array, C, *'+E99;
La salida del anterior programa ser*C
,rray
3
)2/ >> ,rray
3
)2/ >> a
)6/ >> b
9
)6/ >> ,rray
3
)2/ >> c
)6/ >> d
9
)C/ >> ,rray
3
)2/ >> e
9
9
,rray
3
)2/ >> ,rray
3
)2/ >> a
)6/ >> b
9
)6/ >> ,rray
3
)C/ >> c
)</ >> d
9
)C/ >> ,rray
3
)1/ >> e
9
9
array>combine
>P&P 4?
arrayZcom#ine 22 5rea una nueva matrizA usando una matriz para las claves y otra para sus valores
Kescripci"n
array array>combine > array clavesA array valores ?
Devuelve un array usando los valores de la matriz claes como clavesA y los valores de la matriz
alores como los valores correspondientes;
Devuelve FALSE si el nBmero de elementos de cada matriz no es Walente o si las matrices est*n
vac)as;
E'emplo !. )n e'emplo simple de array>combine./
<?php
$a > array3M=erdeM, MrojoM, MamarilloM9;
$b > array3MaEuacateM, Mman0anaM, MbananoM9;
$c > array%combine3$a, $b9;
print%r3$c9;
?>
Genera la salidaC
,rray
3
)=erde/ >> aEuacate
)rojo/ >> man0ana
)amarillo/ >> banano
9
$ea tam#i<n array>merge./A array>3alB./A y array>5alues./;
array>count>5alues
>P&P 8 A P&P 4?
arrayZcountZvalues 22 5uenta todos los valores de una matriz
Kescripci"n
array array>count>5alues > array entrada ?
array>count>5alues./ devuelve una matriz usando los valores de la matriz entra#a como )ndices y
su (recuencia de aparici-n en la entra#a como valores;
E'emplo !. E'emplo de array>count>5alues./
<?php
$matri0 > array36, "hola", 6, "mundo", "hola"9;
array%count%=alues3$matri09; // de=uel=e array36>>C, "hola">>C, "mundo">>69
?>
+l resultado del e'emplo seriaC
,rray
3
)6/ >> C
)hola/ >> C
)mundo/ >> 6
9
$ea tam#i<n count./A array>uni?ue./A array>5alues./A count>chars./;
array>diff>assoc
>P&P 8 _^ 8;7;3A P&P 4?
arrayZdi((Zassoc 22 5omprue#a las di(erencias entre matrices teniendo en cuenta los )ndices
Kescripci"n
array array>diff>assoc > array array1A array array0 PA array ;;;Q ?
array>diff>assoc./ devuelve una matriz /ue contiene todos los valores de arra?1 /ue no est<n
presentes en ninguna de las otras matrices /ue se pasan como argumento; &ay /ue tener en cuenta
/ue las claves de los valores se utilizan en la comparaci-nA a di(erencia de array>diff./;
E'emplo !. E'emplo de array>diff>assoc./
<?php
$array6 > array 3"a" >> "=erde", "b" >> "neEro", "c" >> "a0ul", "rojo"9;
$arrayC > array 3"a" >> "=erde", "amarillo", "rojo"9;
$result > array%di##%assoc 3$array6, $arrayC9;
/W El resultado es@
,rray
3
)b/ >> neEro
)c/ >> a0ul
)2/ >> rojo
9
W/
?>
+n el e'emplo anterior se ve /ue el par *a* :& *er#e* est* presente en am#as matrices y por ello no
aparece en la matriz resultado; Por el contrarioA el par 0 :& *roUo* s) aparece en el resultado puesto
/ue en el segundo argumento el valor *re#* tiene la clave 1;
Dos valores de pares clae :& alor se consideran iguales si y s-lo si Lstr6nEM 'elem1 ::: Lstr6nEM
'elem2A es decirA cuando la representaci-n de cadena es la misma;
Nota- &ay /ue tener en cuenta /ue esta (unci-n s-lo comprue#a una dimensi-n de una
matriz n2dimensional; Por supuestoA se pueden compro#ar dimensiones sucesivas
medianteC arra?_#699_assocL'arra?1)0.C 'arra?2)0.MJ;
$<ase tam#i<n array>diff./A array>intersect./A y array>intersect>assoc./;
array>diff>Bey
>no version in(ormationA might #e only in 5$?
arrayZdi((Z"ey 22 5alcula la di(erencia de matrices usando las llaves para la comparaci-n
Kescripci"n
array array>diff>Bey > array array1A array array0 PA array ;;;Q ?
array>diff>Bey./ regresa una matriz conteniendo todos los valores de arra?1 /ue tienen llaves /ue
no est*n presentes en cual/uier otra matriz dada como par*metro; Note /ue la asociatividad es
preservada; +sta (unci-n es como array>diff./ eFcepto en /ue la comparaci-n es hecha en las llaves
en lugar de en los valores;
E'emplo !. E'emplo array>diff>Bey./
<?php
$array6 > array3MblueM >> 6, MredM >> C, MEreenM >> <, MpurpleM >> 19;
$arrayC > array3MEreenM >> 5, MblueM >> G, Myello8M >> H, McyanM >> J9;
=ar%dump3array%di##%Iey3$array6, $arrayC99;
?>
+l resultado del e'emplo seriaC
array3C9 :
)"red"/>>
int3C9
)"purple"/>>
int319
;
Las dos llaves del par llae :& alorA son consideradas iguales s-lo si Lstr6nEM '>e?1 ::: Lstr6nEM
'>e?2 ; +n otras pala#ras se revisa estrictamente el tipo de dato de tal manera /ue la representaci-n
del string de#e ser el mismo;
Nota- Note por (avor /ue esta (unci-n solo revisa una dimensi-n de una matriz con n
dimensiones; Por supuesto puede checar en (orma m*s pro(unda usando la (orma
arra?_#699_>e?L'arra?1)0.C 'arra?2)0.MJ;
$ea tam#i<n array>diff./A array>udiff./ array>diff>assoc./A array>diff>uassoc./A
array>udiff>assoc./A array>udiff>uassoc./A array>diff>uBey./A array>intersect./A
array>intersect>assoc./A array>intersect>uassoc./A array>intersect>Bey./ y
array>intersect>uBey./;
array>diff>uassoc
>P&P 4?
arrayZdi((Zuassoc 22 5omputa la di(erencia entre matrices con un che/ueo adicional de )ndicesA el
cual es realizado por una llamada de retorno entregada por el usuario
Kescripci"n
array array>diff>uassoc > array matriz1A array matriz0 PA array ;;;A call#ac"
(uncZcomparacionZclavesQ ?
array>diff>uassoc./ devuelve un array /ue contiene todos los valores de matr6D1 /ue no est*n
presentes en ninguno de los otros argumentos; Note /ue las claves son usadas en la comparaci-nA a
di(erencia de array>diff./; +sta comparaci-n es realizada por una llamada de retorno entregada por
el usuario; La (unci-n de#e devolver un entero menor /ueA igualA o mayor /ue cero si el primer
argumento es considerado como menorA igualA o mayor /ue el segundoA respectivamente; +sto en
contraste a array>diff>assoc./ en donde es usada una (unci-n interna para la comparaci-n de
)ndices;
E'emplo !. E'emplo de array>diff>uassoc./
<?php
#unction #unc%comparacion%cla=es3$a, $b9
:
i# 3$a >>> $b9 :
return 2;
;
return 3$a > $b9? 6@F6;
;
$matri06 > array3"a" >> "Ereen", "b" >> "bro8n", "c" >> "blue", "red"9;
$matri0C > array3"a" >> "Ereen", "yello8", "red"9;
$resultado > array%di##%uassoc3$matri06, $matri0C, "#unc%comparacion%cla=es"9;
?>
+l resultado esC
,rray
3
)b/ >> bro8n
)c/ >> blue
)2/ >> red
9
+n nuestro e'emplo anteriorA puede ver /ue la pare'a *a* :& *Ereen* est* presente en am#as
matrices y por lo tanto no hace parte de la salida de la (unci-n; +n contrasteA la pare'a 0 :& *re#*
est* en la salida ya /ue en el segundo argumentoA *re#* tiene una clave /ue es 1;
La igualdad de 0 )ndices es revisada por la llamada de retorno indicada por el usuario;
Nota- Por (avor note /ue esta (unci-n s-lo analiza una dimensi-n de una matriz n2
dimensional; Por supuesto /ue puede analizar dimensiones m*s pro(undas usandoA por
e'emploA arra?_#699_uassocL'matr6D1)0.C 'matr6D2)0.C *9unc_comparac6on_claes*MJ;
$ea tam#i<n array>diff./A array>diff>assoc./A array>udiff./A array>udiff>assoc./A
array>udiff>uassoc./A array>intersect./A array>intersect>assoc./A array>uintersect./A
array>uintersect>assoc./ y array>uintersect>uassoc./;
array>diff>uBey
>no version in(ormationA might #e only in 5$?
arrayZdi((Zu"ey 22 5alcula la di(erencia de matrices usando call#ac" (unction on the "eys (or
comparison
Kescripci"n
array array>diff>uBey > array array1A array array0 PA array ;;;A call#ac" "eyZcompareZ(uncQ ?
array>diff>uBey./ regresa una matriz conteniendo todos los valores de arra?1 /ue tienen llaves /ue
no est*n presentes en cual/uiera de los otros argumentos; Note /ue la asociatividad es preservada;
+sta (unci-n es como array>diff./ eFcepto en /ue la comparaci-n es hecha en las llaves en ligar de
en los valores;
+sta comparaci-n es hecha por una (unci-n prove)da por el usuario; De#e regresar un entero menor
/ueA igual aA o mayor /ue cero si la primera llave es considerada respectivamente menor /ueA igual
aA o mayor /ue la segunda llave;
E'emplo !. E'emplo array>diff>uBey./
<?php
#unction Iey%compare%#unc3$Iey6, $IeyC9
:
i# 3$Iey6 >> $IeyC9
return 2;
else i# 3$Iey6 > $IeyC9
return 6;
else
return F6;
;
$array6 > array3MblueM >> 6, MredM >> C, MEreenM >> <, MpurpleM >> 19;
$arrayC > array3MEreenM >> 5, MblueM >> G, Myello8M >> H, McyanM >> J9;
=ar%dump3array%di##%uIey3$array6, $arrayC, MIey%compare%#uncM99;
?>
+l resultado del e'emplo seriaC
array3C9 :
)"red"/>>
int3C9
)"purple"/>>
int319
;
Las dos llaves de los pares llae :& alorA son consideradas iguales solo si Lstr6nEM '>e?1 :::
Lstr6nEM '>e?2 ; +n otras pala#ras se hace un estricto che/ueo de tipo de tal manera /ue la
representaci-n de la cadena de#e ser la misma;
Nota- Note por (avor /ue esta (unci-n solo revisa una dimensi-n en una matriz con n
dimensiones; Por supuesto puede revisar m*s pro(undamente usando la (orma
arra?_#699_u>e?L'arra?1)0.C 'arra?2)0.C <call1ac>_9unc<MJ;
$ea tam#i< array>diff./A array>udiff./ array>diff>assoc./A array>diff>uassoc./A
array>udiff>assoc./A array>udiff>uassoc./A array>diff>Bey./A array>intersect./A
array>intersect>assoc./A array>intersect>uassoc./A array>intersect>Bey./ y
array>intersect>uBey./;
array>diff
>P&P 8 _^ 8;3;1A P&P 4?
arrayZdi(( 22 5omprue#a las di(erencias entre matrices
Kescripci"n
array array>diff > array array1A array array0 PA array ;;;Q ?
array>diff./ devuelve una matriz /ue contiene todos los valores de arra?1 /ue no aparezcan en
ninguna de las otras matrices /ue se pasan a la (unci-n como argumento; &ay /ue tener en cuenta
/ue las claves se mantienen;
E'emplo !. E'emplo de array>diff./
$array6 > array 3"a" >> "=erde", "rojo", "a0ul", "rojo"9;
$arrayC > array 3"b" >> "=erde", "amarillo", "rojo"9;
$resultado > array%di## 3$array6, $arrayC9;
Lo cual hace /ue 'resulta#o contenga la matriz arra? L*aDul*MJ; Multiples ocurrencias en Yarray1
son tratadas todas de la misma (orma;
Nota- Dos elementos se consideran Walentes si y s-lo si Lstr6nEM 'elem1 ::: Lstr6nEM
'elem2A es decirA cuando la representaci-n de cadena es la misma;
Nota- &ay /ue tener en cuenta /ue esta (unci-n s-lo comprue#a una dimensi-n de una
matriz n2dimensional; Por supuestoA se pueden compro#ar dimensiones sucesivas
medianteC arra?_#699L'arra?1)0.C 'arra?2)0.MJ;
A5iso
+sta (unci-n se rompi- en P&P 8;3;8a
$<ase tam#i<n array>diff>assoc./A array>intersect./ y array>intersect>assoc./;
array>fill
>P&P 8 _^ 8;0;3A P&P 4?
arrayZ(ill 22 Llena una matriz con valores
Kescripci"n
array array>fill > int startZindeFA int numA miFed value ?
array>fill./ introduce en una matriz tantas entradas como especi(i/ue el par*metro numA
numerandolas a partir de start_6n#e8A y les asigna el valor del par*metro alue;
E'emplo !. E'emplo de array>fill./
$a > array%#ill35, G, MbananaM9;
print%r3$a9;
'a contendr* ahoraC
,rray
3
)5/ >> banana
)G/ >> banana
)H/ >> banana
)J/ >> banana
)K/ >> banana
)62/ >> banana
9
array>filter
>P&P 8 _^ 8;3;KA P&P 4?
arrayZ(ilter 22 Filtra elementos de una matriz mediante una (unci-n =call#ac"=
Kescripci"n
array array>filter > array input PA call#ac" (unctionQ ?
array>filter./ repasa cada valor en la matriz 6nput y lo pasa a la (unci-n call1ac>; i la (unci-n
call1ac> devuelve verdaderoA el valor es devuelto a la matriz resultado; Los )ndices de la matriz se
mantienen;
E'emplo !. E'emplo de array>filter./
<?php
#unction impar3$=ar9 :
return 3$=ar \ C >> 69;
;
#unction par3$=ar9 :
return 3$=ar \ C >> 29;
;
$array6 > array 3"a">>6, "b">>C, "c">><, "d">>1, "e">>59;
$arrayC > array 3G, H, J, K, 62, 66, 6C9;
echo "4mpares @Vn";
print%r3array%#ilter3$array6, "impar"99;
echo "ares@Vn";
print%r3array%#ilter3$arrayC, "par"99;
?>
La salida en pantalla del programa anterior ser*C
4mpares @
,rray
3
)a/ >> 6
)c/ >> <
)e/ >> 5
9
ares@
,rray
3
)2/ >> G
)C/ >> J
)1/ >> 62
)G/ >> 6C
9
No se de#e modi(icar la matriz a la /ue array>filter./ se aplica desde la (unci-n =call#ac"=A como
p; e'; aWadir o eliminar un elementoA o realizar un =unset>?=; i la matriz es modi(icada el
comportamiento de esta (unci-n no est* de(inido;
$er tam#i<n array>map./A array>reduce./A y array>3alB./;
array>flip
>P&P 8 A P&P 4?
arrayZ(lip 22 .ntercam#ia los valores de una matriz con sus )ndices
Kescripci"n
array array>flip > array trans ?
array>flip./ devuelve una matriz con los valores intercam#iadosA por e'emplo los )ndices de trans
se convierten en los valores y los valores de trans se convierten en los )ndices;
note /ue los valores de trans necesitan ser )ndices validosA eg; necesitan ser del tipo integer o
string; e generar* una alerta si un valor tiene un tipo di(erenteA y el par )ndiceDvalor en cuesti-n no
ser[ mo#696ca#o;
i un valor se encuentra varias vecesA el Bltimo )ndice ser* usado con su valorA y todos los dem*s se
perder*n
array>flip./ regresa FALSE su (alla;
E'emplo !. E'emplo de array>flip./
<?php
$trans > array%#lip3$trans9;
$oriEinal > strtr3$str, $trans9;
?>
E'emplo *. E'emplo de colisi"n con array>flip./
<?php
$trans > array3"a" >> 6, "b" >> 6, "c" >> C9;
$trans > array%#lip3$trans9;
print%r3$trans9;
?>
ahora 'trans esC
,rray
3
)6/ >> b
)C/ >> c
9
$ea tam#i<n array>5alues./A array>Beys./A y array>re5erse./;
array>intersect>assoc
>P&P 8 _^ 8;7;3A P&P 4?
arrayZintersectZassoc 22 5omputes the intersection o( arrays Eith additional indeF chec"
Kescription
array array>intersect>assoc > array array1A array array0 PA array ;;;Q ?
array>intersect>assoc./ returns an array containing all the values o( arra?1 that are present in all
the arguments; Note that the "eys are used in the comparison unli"e in array>intersect./;
E'emplo !. array>intersect>assoc./ e+ample
<?php
$array6 > array3"a" >> "Ereen", "b" >> "bro8n", "c" >> "blue", "red"9;
$arrayC > array3"a" >> "Ereen", "yello8", "red"9;
$result%array > array%intersect%assoc3$array6, $arrayC9;
?>
YresultZarray Eill loo" li"eC
,rray
3
)a/ >> Ereen
9
.n our eFample you see that only the pair *a* :& *Ereen* is present in #oth arrays and thus is
returned; ,he value *re#* is not returned #ecause in 'arra?1 its "ey is 0 Ehile the "ey o( =red= in
'arra?2 is 1;
,he tEo values (rom the >e? :& alue pairs are considered e/ual only i( Lstr6nEM 'elem1 :::
Lstr6nEM 'elem2 ; .n other Eords a strict type chec" is eFecuted so the string representation must #e
the same;
ee also array>intersect./A array>uintersect>assoc./A array>intersect>uassoc./A
array>uintersect>uassoc./A array>diff./ and array>diff>assoc./;
array>intersect>Bey
>no version in(ormationA might #e only in 5$?
arrayZintersectZ"ey 22 5alcula la intersecci-n de matrices usando las llaves para la comparaci-n
Kescripci"n
array array>intersect>Bey > array array1A array array0 PA array ;;;Q ?
array>intersect>Bey./ regresa una matriz conteniendo todos los valores de arra?1 los cuales tienen
llaves /ue est*n presentes en todos los argumentos;
E'emplo !. E'emplo array>intersect>Bey./
<?php
$array6 > array3Ma0ulM >> 6, MrojoM >> C, M=erdeM >> <, MmoradoM >> 19;
$arrayC > array3M=erdeM >> 5, Ma0ulM >> G, MamarilloM >> H, McyanM >> J9;
=ar%dump3array%intersect%Iey3$array6, $arrayC99;
?>
+l resultado del e'emplo seriaC
array3C9 :
)"a0ul"/>>
int369
)"=erde"/>>
int3<9
;9
+n nuestro e'emplo puede ver /ue s-lo las llaves <aDul< y <er#e< est*n presentes en am#as matrices y
por lo tanto son regresadas; ,am#icdeon note /ue los valores para las llaves <aDul< y <er#e< son
di(erentes en las dos matrices; ABn as) siguen coincidiendo por/ue se hace la comparaci-n s-lo en
las llaves; Los valores regresados son a/uellos de arra?1;
Las dos llaves del par >e? :& alueA son considerados iguales solo si Lstr6nEM '>e?1 ::: Lstr6nEM
'>e?2 ; +n otras pala#ras se hace un che/ueo estricto del tipo de dato de tal manera /ue la
representaci-n de la cadena de#e ser la misma;
$ea tam#i<n array>diff./A array>udiff./ array>diff>assoc./A array>diff>uassoc./A
array>udiff>assoc./A array>udiff>uassoc./A array>diff>Bey./A array>diff>uBey./A
array>intersect./A array>intersect>assoc./A array>intersect>uassoc./ y array>intersect>uBey./;
array>intersect>uassoc
>P&P 4?
arrayZintersectZuassoc 22 5alcula la intersecci-n de matrices con che/ueo de )ndices adicional por
una (unci-n de usuario
Kescripci"n
array array>intersect>uassoc > array array1A array array0 PA array ;;;A call#ac" "eyZcompareZ(uncQ ?
array>intersect>uassoc./ Regresa una matriz conteniendo todos los valores de arra?1 /ue est*n
presentes en todos los argumentos; Note /ue los )ndices son usados en la comparaci-n a di(erencia
de array>intersect./;
La comparaci-n de )ndices es hecha por una (unci-n de usuario; +sta de#e regresar un entero menor
/ueA igual aA o mayor /ue cero si el primer argumento es considerado ser menor /ueA igual a o mayor
/ue el segundoA respectivamente;
E'emplo !. E'emplo de array>intersect>uassoc./
<?php
$array6 > array3"a" >> "Ereen", "b" >> "bro8n", "c" >> "blue", "red"9;
$arrayC > array3"a" >> "-'EE.", "Z" >> "bro8n", "yello8", "red"9;
print%r3array%intersect%uassoc3$array6, $arrayC, "strcasecmp"99;
?>
+l resultado del e'emplo seriaC
,rray
3
)b/ >> bro8n
9
$ea tam#i<nC array>intersect./A array>intersect>assoc./A array>uintersect>assoc./A
array>uintersect>uassoc./A array>intersect>Bey./ y array>intersect>uBey./;
array>intersect>uBey
>no version in(ormationA might #e only in 5$?
arrayZintersectZu"ey 22 5alcula la intersecci- de matrices usando una (unci-n de usuario para la
comparaci-n de los )ndices
Kescripci"n
array array>intersect>uBey > array array1A array array0 PA array ;;;A call#ac" "eyZcompareZ(uncQ ?
array>intersect>uBey./ regresa una matriz /ue contiene todos los valores de arra?1 los cuales
tienen )ndices /ue est*n presentes en todos los argumentos;
+sta comparaci-n es hecha por una (unci-n del usuario; La cual de#e regresar un entero menor /ueA
igual aA o mayor /ue cero si el primer )ndice es considerado ser menor /ueA igual a o mayor /ue el
segundoA respectivamente;
E'emplo !. E'emplo array>intersect>uBey./
<?php
#unction Iey%compare%#unc3$Iey6, $IeyC9
:
i# 3$Iey6 >> $IeyC9
return 2;
else i# 3$Iey6 > $IeyC9
return 6;
else
return F6;
;
$array6 > array3MblueM >> 6, MredM >> C, MEreenM >> <, MpurpleM >> 19;
$arrayC > array3MEreenM >> 5, MblueM >> G, Myello8M >> H, McyanM >> J9;
=ar%dump3array%intersect%uIey3$array6, $arrayC, MIey%compare%#uncM99;
?>
+l resultado del e'emplo seriaC
array3C9 :
)"blue"/>>
int369
)"Ereen"/>>
int3<9
;9
+n nuestro e'emplo ve /ue solo los )ndices <1lue< y <Ereen< est*n presentes en am#as matrices y por
lo tanto son regresados; ,am#i<n note los valores de los )ndices <1lue< y <Ereen< son di(erentes entre
las dos matrices; ABn as) coinciden por/ue solo los )ndices son checados; Los valores regresados
son los de arra?1;
Los dos )ndices del par >e? :& alue son considerados igual solo si Lstr6nEM '>e?1 ::: Lstr6nEM
'>e?2 ; +n otras pala#ras se hace un che/ueo estricto de tipoA de tal manera /ue la representaci-n de
la cadena sea la misma;
$ea tam#i<nC array>diff./A array>udiff./ array>diff>assoc./A array>diff>uassoc./A
array>udiff>assoc./A array>udiff>uassoc./A array>diff>Bey./A array>diff>uBey./A
array>intersect./A array>intersect>assoc./A array>intersect>uassoc./ y array>intersect>Bey./;
array>intersect
>P&P 8 _^ 8;3;1A P&P 4?
arrayZintersect 22 5omputes the intersection o( arrays
Kescription
array array>intersect > array array1A array array0 PA array ;;;Q ?
array>intersect./ returns an array containing all the values o( arra?1 that are present in all the
arguments; Note that "eys are preserved;
E'emplo !. array>intersect./ e+ample
<?php
$array6 > array3"a" >> "Ereen", "red", "blue"9;
$arrayC > array3"b" >> "Ereen", "yello8", "red"9;
$result > array%intersect3$array6, $arrayC9;
?>
,his ma"es 'result have
,rray
3
)a/ >> Ereen
)2/ >> red
9
Nota- ,Eo elements are considered e/ual i( and only i( Lstr6nEM 'elem1 ::: Lstr6nEM
'elem2; .n EordsC Ehen the string representation is the same;
ee also array>intersect>assoc./A array>diff./A and array>diff>assoc./;
array>Bey>e+ists
>P&P 8 _^ 8;1;3A P&P 4?
arrayZ"eyZeFists 22 5omprue#a si el )ndice o clave dada eFiste en la matriz
Kescripci"n
#ool array>Bey>e+ists > miFed claveA array (uente ?
array>Bey>e+ists./ devuelve TRUE si la clae dada eFiste en la matriz; La clae puede ser
cual/uier valor v*lido como )ndice de una matriz; array>Bey>e+ists./ (unciona tam#i<n con
o#'etos;
E'emplo !. E'emplo de array>Bey>e+ists./
<?php
$matri0%a%buscar > array3MprimeroM >> 6, MseEundoM >> 19;
i# 3array%Iey%exists3MprimeroM, $matri0%a%buscar99 :
echo "El elemento MprimeroM se encuentra en la matri0";
;
?>
Nota- +l nom#re de esta (unci-n es Bey>e+ists./ en P&P 8;3;K;
E'emplo *. array>Bey>e+ists./ 5s isset./
isset./ no devuelve TRUE para claves de matriz /ue corresponden a un valor NULLA mientras /ue
array>Bey>e+ists./ lo hace;
<?php
$matri0%busQueda > array3MprimeroM >> null, MseEundoM >> 19;
// de=uel=e #alse
isset3$matri0%busQueda)MprimeroM/9
// de=uel=e true
array%Iey%exists3MprimeroM, $matri0%busQueda9;
?>
$ea tam#i<n isset./A array>Beys./A y in>array./;
array>Beys
>P&P 8 A P&P 4?
arrayZ"eys 22 Devuelve todas las claves de una matriz
Kescripci"n
array array>Beys > array entrada PA miFed valZaZ#uscar PA #ool strictQQ ?
array>Beys./ devuelve las clavesA num<ricas y de cadenaA de la matriz entra#a;
i se especi(ica el par*metro opcional al_a_1uscarA s-lo se devuelven las claves para dicho valor;
De otro modoA se devuelven todas las claves de la entra#a; +n P&P 4A puede usar el par*metro str6ct
para comparaciones incluyendo el tipo >^^^?;
E'emplo !. E'emplo de array>Beys./
<?php
$array > array32 >> 622, "color" >> "red"9;
print%r3array%Ieys3$array99;
$array > array3"blue", "red", "Ereen", "blue", "blue"9;
print%r3array%Ieys3$array, "blue"99;
$array > array3"color" >> array3"blue", "red", "Ereen"9,
"si0e" >> array3"small", "medium", "larEe"99;
print%r3array%Ieys3$array99;
?>
+l resultado del e'emplo seriaC
,rray
3
)2/ >> 2
)6/ >> color
9
,rray
3
)2/ >> 2
)6/ >> <
)C/ >> 1
9
,rray
3
)2/ >> color
)6/ >> si0e
9
$ea tam#i<nC array>5alues./A array>Bey>e+ists./;
array>map
>P&P 8 _^ 8;3;KA P&P 4?
arrayZmap 22 Aplica la llamada de retorno especi(icada a los elementos de las matrices dadas
Kescripci"n
array array>map > call#ac" llamadaZdeZretornoA array matriz1 PA array ;;;Q ?
array>map./ devuelve una matriz /ue contiene todos los elementos de matr6D1 despu<s de ha#er
aplicado la (unci-n llama#a_#e_retorno a cada uno de ellos; +l nBmero de par*metros /ue la
(unci-n llama#a_#e_retorno acepte de#er)a coincidir con el nBmero de matrices /ue son pasadas
como argumentos a array>map./;
E'emplo !. E'emplo de array>map./
<?php
#unction cubo3$n9
:
return3$n W $n W $n9;
;
$a > array36, C, <, 1, 59;
$b > array%map3"cubo", $a9;
print%r3$b9;
?>
+sto hace /ue '1 contengaC
,rray
3
)2/ >> 6
)6/ >> J
)C/ >> CH
)</ >> G1
)1/ >> 6C5
9
E'emplo *. array>map./ ( usando ms matrices
<?php
#unction mostrar%Rastellano3$n, $m9
:
return3"El n&uacute;mero $n es llamado $m en Rastellano"9;
;
#unction map%Rastellano3$n, $m9
:
return3array3$n >> $m99;
;
$a > array36, C, <, 1, 59;
$b > array3"uno", "dos", "tres", "cuatro", "cinco"9;
$c > array%map3"mostrar%Rastellano", $a, $b9;
print%r3$c9;
$d > array%map3"map%Rastellano", $a , $b9;
print%r3$d9;
?>
+sto produceC
// salida correspondiente a $c
,rray
3
)2/ >> El n&uacute;mero 6 es llamado uno en Rastellano
)6/ >> El n&uacute;mero C es llamado dos en Rastellano
)C/ >> El n&uacute;mero < es llamado tres en Rastellano
)</ >> El n&uacute;mero 1 es llamado cuatro en Rastellano
)1/ >> El n&uacute;mero 5 es llamado cinco en Rastellano
9
// salida correspondiente a $d
,rray
3
)2/ >> ,rray
3
)6/ >> uno
9
)6/ >> ,rray
3
)C/ >> dos
9
)C/ >> ,rray
3
)</ >> tres
9
)</ >> ,rray
3
)1/ >> cuatro
9
)1/ >> ,rray
3
)5/ >> cinco
9
9
@sualmenteA cuando se usan dos o m*s matricesA <stas de#er)an ser de longitudes iguales ya /ue la
llamada de retorno es aplicada en paralelo a los elementos correspondientes; i las matrices son de
longitudes di(erentesA la m*s corta de ellas ser* eFtendida con elementos vac)os;
@n uso interesante de esta (unci-n es la construcci-n de una matriz de matricesA /ue puede ser
llevada a ca#o usando NULL como el nom#re de la llamada de retorno;
E'emplo 7. Creaci"n de una matri6 de matrices
<?php
$a > array36, C, <, 1, 59;
$b > array3"one", "t8o", "three", "#our", "#i=e"9;
$c > array3"uno", "dos", "tres", "cuatro", "cinco"9;
$d > array%map3null, $a, $b, $c9;
print%r3$d9;
?>
La salida del anterior programa ser*C
,rray
3
)2/ >> ,rray
3
)2/ >> 6
)6/ >> one
)C/ >> uno
9
)6/ >> ,rray
3
)2/ >> C
)6/ >> t8o
)C/ >> dos
9
)C/ >> ,rray
3
)2/ >> <
)6/ >> three
)C/ >> tres
9
)</ >> ,rray
3
)2/ >> 1
)6/ >> #our
)C/ >> cuatro
9
)1/ >> ,rray
3
)2/ >> 5
)6/ >> #i=e
)C/ >> cinco
9
9
$ea tam#i<n array>filter./A array>reduce./A y array>3alB./;
array>merge>recursi5e
>P&P 8 _^ 8;3;1A P&P 4?
arrayZmergeZrecursive 22 @ne dos o m*s matrices recursivamente
Kescripci"n
array array>merge>recursi5e > array matriz1A array matriz0 PA array ;;;Q ?
array>merge>recursi5e./ une los elementos de dos o m*s matrices de modo tal /ue los valores de
cada una sean aWadidos al (inal de la matriz previa; Devuelve la matriz resultante;
i las matrices de entrada tienen las mismas claves tipo cadenaA entonces los valores de estas claves
son unidas en una matrizA y esto es hecho recursivamenteA de modo /ue si uno de los valores es una
matriz mismaA la (unci-n unir* tam#i<n <sta con la correspondiente entrada de otra matriz; in
em#argoA si las matrices tienen la misma clave num<ricaA el valor m*s cercano al (inal no
so#rescri#ir* el valor originalA sino /ue ser* aWadido al (inal;
E'emplo !. E'emplo de array>merge>recursi5e./
<?php
$m6 > array3"color" >> array3"#a=orito" >> "rojo"9, 59;
$mC > array362, "color" >> array3"#a=orito" >> "=erde", "a0ul"99;
$resultado > array%merEe%recursi=e3$m6, $mC9;
?>
+l 'resulta#o ser*C
,rray
3
)color/ >> ,rray
3
)#a=orito/ >> ,rray
3
)2/ >> rojo
)6/ >> =erde
9
)2/ >> a0ul
9
)2/ >> 5
)6/ >> 62
9
$ea tam#i<n array>merge./;
array>merge
>P&P 8 A P&P 4?
arrayZmerge 22 5om#ina dos o m*s matrices
Kescripci"n
array array>merge > array matriz1 PA array matriz0 PA array ;;;QQ ?
array>merge./ com#ina los elementos de dos o m*s matrices con'untamente de modo /ue los
valores de una son agregados al (inal de los valores de la anterior; Devuelve la matriz resultante;
i las matrices de entrada tienen las mismas claves de cadenaA el Bltimo valor para cada clave
reemplazar* el valor previo de la misma; iA por el contrarioA las matrices tienen la misma clave
num<ricaA esto no pasa y los valores son simplemente agregados;
i s-lo se da una matrizA y si tiene )ndices num<ricosA los )ndices son reacomodados; Para matrices
asociativasA los elementos duplicados se com#inar*n en el Bltimo; $ea el e'emplo tres para m*s
detalles;
E'emplo !. E'emplo de array>merge./
<?php
$array6 > array3"color" >> "red", C, 19;
$arrayC > array3"a", "b", "color" >> "Ereen", "shape" >> "trape0oid", 19;
$result > array%merEe3$array6, $arrayC9;
print%r3$result9;
?>
+l 'result esC
,rray
3
)color/ >> Ereen
)2/ >> C
)6/ >> 1
)C/ >> a
)</ >> b
)shape/ >> trape0oid
)1/ >> 1
9
E'emplo *. E'emplo simple de array>merge./
<?php
$array6 > array39;
$arrayC > array36 >> "data"9;
$result > array%merEe3$array6, $arrayC9;
?>
No olvide /ue los )ndices num<ricos ser*n reenumerados
,rray
3
)2/ >> data
9
i /uiere preservar completamente las matrices y solo /uiere agregarlos unos a otrosA use el
operador Y C
<?php
$array6 > array39;
$arrayC > array36 >> "data"9;
$result > $array6 [ $arrayC;
?>
Los )ndices num<ricos son preservados y por lo tanto la asocuaci-n permanece;
,rray
3
)6/ >> data
9
E'emplo 7. E'emplo array>merge./
<?php
$array%one > array32 >> "jay", 6 >> "bob", C >> "randal", < >> "dante"9;
$array%t8o > array3"jay" >> "bob", "randal" >> "dante", "jay" >> "jason"9;
unset3$array%one)C/9;
$result%one > array%merEe3$array%one9;
$result%t8o > array%merEe3$array%t8o9;
print%r3$result%one9;
print%r3$result%t8o9;
?>
+l resultado del e'emplo seriaC
,rray
3
)2/ >> jay
)6/ >> bob
)C/ >> dante
9
,rray
3
)jay/ >> jason
)randal/ >> dante
9
Nota- Los )ndices compartidos ser*n so#reescritos en #ase a la (orma =primero en
llegarA primero en salir=;
A5iso
+l comportamient de array>merge./ (ue modi(icado en P&P 4; A di(erencia de P&P 8A la (unci-n
array>merge./ ahora acepta solo par*metros de tipo array; in em#argoA puede usar (orzado de
tipos para convertir otros tipos; $ea el siguiente e'emplo para m*s detalles;
E'emplo 8. E'emplo PHP 9 array>merge./
<?php
$beEinninE > M#ooM;
$end > array36 >> MbarM9;
$result > array%merEe33array9$beEinninE, 3array9$end9;
?>
+l resultado del e'emplo seriaC
,rray
3
)2/ >> #oo
)6/ >> bar
9
$ea tam#i<n array>merge>recursi5e./A array>combine./A array operators;
array>multisort
>P&P 8 A P&P 4?
arrayZmultisort 22 Ordena mBltiples matricesA o matrices multi2dimensionales
Kescripci"n
#ool array>multisort > array matriz1 PA miFed arg PA miFed ;;; PA array ;;;QQQ ?
array>multisort./ puede usarse para ordenar varias matrices al tiempo o una matriz multi2
dimensional de acuerdo a una de sus varias dimensiones; Las llaves asociativas >tipo cadena? son
conservadasA mientras /ue las llaves num<ricas son re2indeFadas;
Las matrices de entrada son tratadas como columnas de una ta#la /ue de#er* ser ordenada por (ilas 2
de (orma similar a la (uncionalidad de una sentencia OL ORD+R B%; La primera matriz es
considerada la primaria para el ordenamiento; Las (ilas >valores? en esa matriz /ue sean comparadas
como iguales son ordenadas por la siguiente matriz de entradaA y as) sucesivamente;
La estructura de argumentos de esta (unci-n es un poco inusualA pero (leFi#le; +l primer argumento
de todos de#e ser una matriz; u#secuentementeA cada argumento puede ser o una matriz o una
#andera de ordenamiento de las siguientes;
Banderas de orientaci-n del ordenamientoC
SORT_ASC 2 ordenar ascendentemente
SORT_DESC 2 ordenar descendentemente
Banderas de tipo de ordenamiento
SORT_RE#ULAR 2 comparar elementos normalmente
SORT_NUMERIC 2 comparar elementos num<ricamente
SORT_STRIN# 2 comparar elementos como cadenas
No pueden especi(icarse dos #anderas de ordenamiento del mismo tipo luego de cada matriz; Las
#anderas de ordenamiento especi(icadas a continuaci-n de un argumento matriz se aplican s-lo a
esa matriz 2 estos valores son resta#lecidos de vuelta a SORT_ASC y SORT_RE#ULAR antes de
cada nuevo argumento matriz;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. Jrdenamiento de 5arias matrices
<?php
$matri06 > array3"62", 622, 622, "a"9;
$matri0C > array36, <, "C", 69;
array%multisort3$matri06, $matri0C9;
?>
+n este e'emploA despu<s del ordenamientoA la primera matriz contendr* los valores 13A =a=A 133A
133; La segunda matriz contendr* 1A 1A =0=A 7; Las entradas en la segunda matriz /ue correspond)an
a las entradas id<nticas de la primera matriz >133 y 133? (ueron ordenadas tam#i<n;
E'emplo *. Jrdenamiento de una matri6 multi(dimensional
<?php
$matri0 > array3array3"62", 622, 622, "a"9, array36, <, "C", 699;
array%multisort3$matri0)2/, &?'*%,&R, &?'*%&*'4.-,
$matri0)6/, &?'*%.+"E'4R, &?'*%LE&R9;
?>
+n este e'emploA despu<s del ordenamientoA la primera matriz contendr* 13A 133A 133A =a= >(ue
ordenada como cadenas en orden ascendente?A y la segunda tendr* 1A 7A =0=A 1 >ordenada como
nBmerosA en orden descendiente?;
array>pad
>P&P 8 A P&P 4?
arrayZpad 22 Rellena una matriz con un valor hasta el tamaWo especi(icado
Kescripci"n
array array>pad > array entradaA int tamaZrellenoA miFed valorZrelleno ?
array>pad./ Devuelve una copia de la entra#a rellenada hasta el tamaWo tama_relleno con el valor
alor_relleno; i tama_relleno es positivoA entonces la matriz es rellenada por la derechaA y si es
negativoA por la iz/uierda; i el valor a#soluto de tama_relleno es menor o igual /ue el tamaWo de la
entra#a no se produce relleno alguno;
E'emplo !. E'emplo de array>pad./
<?php
$entrada > array 36C, 62, K9;
$resultado > array%pad 3$entrada, 5, 29;
// el resultado es array 36C, 62, K, 2, 29
$resultado > array%pad 3$entrada, FH, F69;
// el resultado es array 3F6, F6, F6, F6, 6C, 62, K9
$resultado > array%pad 3$entrada, C, "no"9;
// no rellenado
?>
$ea tam#i<n array>fill./A range./;
array>pop
>P&P 8 A P&P 4?
arrayZpop 22 +Ftrae el Bltimo elemento de la matriz
Kescripci"n
miFed array>pop > array imatriz ?
array>pop./ eFtrae y devuelve el Bltimo valor de la matr6DA acortando la matr6D en un elemento; i
matr6D est* vac)a >o no es una matriz?A se regresar* NULL;
Nota- +sta (unci-n e'ecutar* un reset./ en el puntero array despu<s de su uso;
E'emplo !. E'emplo de array>pop./
<?php
$pila > array 3"naranja", "pletano", "man0ana", "#rambuesa"9;
$#ruta > array%pop 3$pila9;
print%r3$pila9;
?>
Despu<s de estoA 'p6la tendr* s-lo 7 elementosC
,rray
3
)2/ >> naranja
)6/ >> pletano
)C/ >> man0ana
9
y 9ram1uesa ser* asignada a '9ruta;
$ea tam#i<nC array>push./A array>shift./A y array>unshift./;
array>push
>P&P 8 A P&P 4?
arrayZpush 22 .nserta uno o m*s elementos al (inal de la matriz
Kescripci"n
int array>push > array imatrizA miFed var PA ;;;Q ?
array>push./ considera a la matr6D como una pilaA e inserta las varia#les /ue se le pasan al (inal de
la matr6D; La longitud de la matr6D se incrementa en el nBmero de varia#les insertadas; ,iene el
mismo e(ecto /ue e'ecutarC
<?php
$array)/ > $=ar;
?>
para cada ar;
Devuelve el nuevo nBmero de elementos de la matriz;
E'emplo !. E'emplo de array>push./
<?php
$pila > array 3"naranja", "pletano"9;
array%push3$pila, "man0ana", "#rambue0a"9;
print%r3$pila9;
?>
+ste e'emplo de'ar* 'p6la con los siguientes elementosC
,rray
3
)2/ >> naranja
)6/ >> pletano
)C/ >> man0ana
)</ >> #rambue0a
9
Nota- i usa array>push./ para agregar un elemento a la matrizA es me'or usar 'arra?).
: por/ue de esa manera no se tiene la carga de llamar a una (unci-n;
$ea tam#i<nC array>pop./A array>shift./A y array>unshift./;
array>rand
>P&P 8 A P&P 4?
arrayZrand 22 elecciona una o m*s entradas aleatorias de una matriz
Kescripci"n
miFed array>rand > array entrada PA int numZre/Q ?
array>rand./ es #astante Btil cuando desea elegir una o m*s entradas aleatorias de una matriz;
Reci#e una matriz de entra#a y un argumento opcional num_re@ /ue especi(ica cu*ntas entradas
desea seleccionarX si no se precisa <ste argumentoA reci#e un valor por de(ecto de 1;
i est* eligiendo Bnicamente una entradaA array>rand./ devuelve la clave de una entrada al azar;
De lo contrarioA devuelve una matriz de claves para las entradas aleatorias; +sto se ha hecho de esta
(orma para /ue usted pueda elegir claves al igual /ue valores al azar de la matriz;
Nota- A partir de P&P 8;0;3A no es necesario inicializar el generador de nBmeros
aleatorios con srand./ - mt>srand./A ya /ue esto se hace ahora autom*ticamente;
E'emplo !. E'emplo de array>rand./
<?php
srand33#loat9 microtime39 W 622222229;
$entrada > array3".eo", ""orpheus", "*rinity", "Rypher", "*anI"9;
$cla=es%aleatorias > array%rand3$entrada, C9;
echo $entrada)$cla=es%aleatorias)2// . "Vn";
echo $entrada)$cla=es%aleatorias)6// . "Vn";
?>
$ea tam#i<n shuffle./;
array>reduce
>P&P 8 _^ 8;3;4A P&P 4?
arrayZreduce 22 Reduce iterativamente una matriz a un solo valor usando una (unci-n llamada de
retorno
Kescripci"n
miFed array>reduce > array entradaA call#ac" (uncion PA int inicialQ ?
array>reduce./ aplica iterativamente la (unci-n 9unc6on a los elementos de la matriz entra#aA con
el prop-sito de reducir la matriz a un solo valor; i el argumento opcional 6n6c6al est* disponi#leA
<ste ser* usado al inicio del procesoA o como resultado (inal en caso de /ue la matriz est* vac)a;
E'emplo !. E'emplo de array>reduce./
<?php
#unction rsum3$=, $89
:
$= [> $8;
return $=;
;
#unction rmul3$=, $89
:
$= W> $8;
return $=;
;
$a > array36, C, <, 1, 59;
$x > array39;
$b > array%reduce3$a, "rsum"9;
$c > array%reduce3$a, "rmul", 629;
$d > array%reduce3$x, "rsum", 69;
?>
+ste e'emplo resultar* en '1 conteniendo el valor 1SA 'c conteniendo 1200 >^ 1V0V7V8V4V13?A y '#
conteniendo 1;
$ea tam#i<n array>filter./A array>map./A array>uni?ue./A y array>count>5alues./;
array>re5erse
>P&P 8 A P&P 4?
arrayZreverse 22 Devuelve una matriz con los elementos en orden inverso
Kescripci"n
array array>re5erse > array matriz PA #ool preservaZllavesQ ?
array>re5erse./ toma la matr6D de entrada y devuelve una nueva matriz con los elementos en orden
inversoA se preservan los )ndices si presera_llaes es TRUE
E'emplo !. E'emplo de array>re5erse./
<?php
$entrada > array 3"php", 1.2, array 3"=erde", "rojo"99;
$resultado > array%re=erse 3$entrada9;
$resultado%lla=es > array%re=erse3$entrada, true9;
?>
+sto hace /ue am#os 'resulta#o y 'resulta#o_llaes tengan los mismos elementosA pero note la
di(erencia entre los )ndices; La salida de 'resulta#o y 'resulta#o_llaes ser*C
,rray
3
)2/ >> ,rray
3
)2/ >> =erde
)6/ >> rojo
9
)6/ >> 1
)C/ >> php
9
,rray
3
)C/ >> ,rray
3
)2/ >> =erde
)6/ >> rojo
9
)6/ >> 1
)2/ >> php
9
Nota- +sta (unci-n (ue aWadida en P&P 8;3;7;
$ea tam#i<no array>flip./;
array>search
>P&P 8 _^ 8;3;4A P&P 4?
arrayZsearch 22 Busca un valor determinado en una matriz y devuelve la clave correspondiente en
caso de <Fito
Kescripci"n
miFed array>search > miFed agu'aA array pa'ar PA #ool estrictoQ ?
Busca en el paUar por la aEuUa y retorna la clave de <sta si se encuentra en la matrizA o FALSE de lo
contrario;
Nota- i aEuUa es una cadenaA la comparaci-n es realizada de (orma sensi#le a
mayBsculas y minBsculas;
Nota- +n versiones de P&P anteriores a 8;0;3A array>search./ devuelve NULL en caso
de (alloA en lugar de FALSE;
i el opcional tercer argumentoA estr6ctoA se de(ine como TRUE entonces la (unci-n array>search./
tam#i<n realizar* un che/ueo so#re los tipos de datos de aEuUa en el paUar;
i la aEuUa es encontrada en el paUar m*s de una vezA la primera clave coincidente es devuelta; Para
devolver las claves de todos los valores coincidentesA use en su lugar array>Beys./ con el par*metro
opcional alor_1us@ue#a;
E'emplo !. E'emplo de array>search./
<?php
$matri0 > array32 >> MblueM, 6 >> MredM, C >> MEreenM, < >> MredM9;
$cla=e > array%search3MEreenM, $matri09; // $cla=e > C;
$cla=e > array%search3MredM, $matri09; // $cla=e > 6;
?>
A5iso
+sta (unci-n puede devolver FALSEA pero tam#i<n puede devolver un valor no2#ooleano /ue ser*
evaluado FALSEA como por e'emplo 0 o ==; Por (avorA lea la secci-n Booleans para m*s
in(ormaci-n; @tilice el operador ^^^ para compro#ar el valor devuelto por esta (unci-n;
$ea tam#i<n array>Beys./A array>5alues./A array>Bey>e+ists./A y in>array./;
array>shift
>P&P 8 A P&P 4?
arrayZshi(t 22 +Ftrae un elemento del comienzo de la matriz
Kescripci"n
miFed array>shift > array iarray ?
array>shift./ eFtrae el primer valor de la matr6D y lo devueleA acortando la matr6D en un elemento y
moviendo todo hacia a#a'o; ,odos los )ndices num<ricos de la matriz ser*n modi(icados para
empezar desde ceroA mientras /ue los )ndices literales no ser*n tocados; i arra? est* vac)o >o no es
una matriz?A se regresar* NULL
Nota- +sta (unci-n e'ecutar* un reset./ en el puntero array despu<s de su uso;
E'emplo !. E'emplo de array>shift./
<?php
$pila > array 3"naranja", "pletano", "man0ana", "#rambue0a"9;
$#ruta > array%shi#t 3$pila9;
print%r3$pila9;
?>
+sto resulta en 'p6la conteniendo 7 elementosC
,rray
3
)2/ >> pletano
)6/ >> man0ana
)C/ >> #rambue0a
9
y naranUa es asignada a '9ruta;
$ea tam#i<nC array>unshift./A array>push./A y array>pop./;
array>slice
>P&P 8 A P&P 4?
arrayZslice 22 +Ftrae una porci-n de la matriz
Kescripci"n
array array>slice > array matrizA int desplazamiento PA int tamaWo PA #ool conservaZllavesQQ ?
array>slice./ devuelve una secuencia de elementos de la matr6D especi(icada por los par*metros
#esplaDam6ento y tamaao;
i el #esplaDam6ento es positivoA la secuencia comenzar* en dicha posici-n de la matr6D; i el
#esplaDam6ento es negativoA la secuencia comenzar* en esa posici-n desde el (inal de la matr6D;
i se especi(ica el tamaao y <ste es positivoA la secuencia contendr* tantos elementos como se diga
en <l; i (uese negativoA la secuencia se detendr* a tantos elementos del (inal de la matriz; i se
omiteA la secuencia contendr* todos los elementos desde el #esplaDam6ento hasta el (inal de la
matr6D;
Note /ue array>slice./ reasignar* los )ndices de la matriz por de(ecto; Desde P&P 4;3;0A usted
puede cam#iar este comportamiento (i'ando el par*metro consera_llaes a TRUE;
E'emplo !. E'emplos de array>slice./
<?php
$entrada > array3"a", "b", "c", "d", "e"9;
$salida > array%slice3$input, C9; // reEresa "c", "d", and "e"
$salida > array%slice3$input, FC, 69; // reEresa "d"
$salida > array%slice3$input, 2, <9; // reEresa "a", "b", and "c"
// note la di#erencias en las gndices
print%r3array%slice3$entrada, C, F699;
print%r3array%slice3$entrada, C, F6, true99;
?>
+l resultado del e'emplo seriaC
,rray
3
)2/ >> c
)6/ >> d
9
,rray
3
)C/ >> c
)</ >> d
9
$ea tam#i<nC array>splice./A unset./;
array>splice
>P&P 8 A P&P 4?
arrayZsplice 22 uprime una porci-n de la matriz y la sustituye por otra cosa
Kescripci"n
array array>splice > array ientradaA int desplazamiento PA int tamano PA array sustitucionQQ ?
array>splice./ suprime los elementos designados por el #esplaDam6ento y el tamano de la matriz
entra#aA y los sustituye con los elementos de la matriz de sust6tuc6on si se especi(ica;
i el #esplaDam6ento es positivoA el comienzo de la parte suprimida ser)a en esa posici-n desde el
comienzo de la matriz de entra#a; i el #esplaDam6ento es negativoA se cuenta la posici-n desde el
(inal de la matriz de entra#a;
i se omite tamanoA se suprime todo desde el #esplaDam6ento hasta el (inal de la matriz; i se
especi(ica el tamano y es positivoA se suprimir*n tantos elementos como se especi(ica; i (uera
negativoA el (inal de la porci-n eliminada estar* a tantos elementos del (inal de la matriz; ,rucoC
para eliminar todo desde el #esplaDam6ento hasta el (inal de la matriz cuando tam#i<n se especi(ica
sust6tuc6onA utilice countL'entra#aM como tamano;
i se especi(ica la matriz de sust6tuc6onA entonces los elementos suprimidos son reemplazados con
los elementos de dicha matriz; i los valores de #esplaDam6ento y tamano son tales /ue nada es
#orradoA los elementos de la matriz sust6tuc6on se insertar*n en la posici-n indicada por el
#esplaDam6ento; ,rucoC si s-lo se va a sustituir algo por un elemento nada m*sA no hace (alta poner
arra?LM alrededor del mismoA salvo /ue dicho elemento sea una matriz en s) mismo;
Las siguientes (unciones son WalentesC Las sentencias siguientes cam#ian los valores de 'entra#a en
la misma (ormaC
Tabla !. Walencias array>splice./
arrayZpush>YinputA YFA Yy?
arrayZsplice>YinputA count>Yinput?A 3A array
>YFA Yy??
arrayZpop>Yinput? arrayZsplice>YinputA 21?
arrayZshi(t>Yinput? arrayZsplice>YinputA 3A 1?
arrayZunshi(t>YinputA YFA Yy? arrayZsplice>YinputA 3A 3A array>YFA Yy??
YinputPYFQ ^ Yy DD Para matrices donde el )ndice Wale a
la posici-n
arrayZsplice>YinputA YFA 1A Yy?
Devuelve una matriz /ue tiene los elementos eliminados
E'emplo !. E'emplos de array>splice./
<?php
$entrada > array3"rojo", "=erde", "a0ul", "amarillo"9;
array%splice3$entrada, C9; // $entrada =ale ahora array3"rojo", "=erde"9
array%splice3$entrada, 6, F69; // $entrada =ale ahora array3"rojo", "amarillo"9
array%splice3$entrada, 6, count3$entrada9, "naranja"9;
// $entrada =ale ahora array3"rojo", "naranja"9
array%splice3$entrada, F6, 6, array3"neEro", "marr&oacute;n"99;
// $entrada =ale ahora array3"rojo", "=erde",
// "a0ul", "neEro", "marr&oacute;n"9
?>
$ea tam#i<nC array>slice./A unset./A array>merge./;
array>sum
>P&P 8 _^ 8;3;8A P&P 4?
arrayZsum 22 5alcula la suma de los valores en una matriz
Kescripci"n
num#er array>sum > array matriz ?
array>sum./ devuelve la suma de los valores de una matriz como un entero o un valor de punto
(lotante;
E'emplo !. E'emplos de array>sum./
<?php
$a > array3C, 1, G, J9;
echo "sum3a9 > " . array%sum3$a9 . "Vn";
$b > array3"a" >> 6.C, "b" >> C.<, "c" >> <.19;
echo "sum3b9 > " . array%sum3$b9 . "Vn";
?>
La salida del anterior programa ser*C
sum3a9 > C2
sum3b9 > G.K
Nota- Las versiones de P&P anteriores a 8;0;1 modi(ica#an la matriz misma pasada
como argumento y convert)a las cadenas a nBmeros >lo /ue en la mayor)a de casos
signi(ica#a convertirlas a ceroA dependiendo de sus valores?;
array>udiff>assoc
>P&P 4?
arrayZudi((Zassoc 22 5omputa la di(erencia entre matrices con un che/ueo de )ndices adicionalA
comparando los datos con una llamada de retorno
Kescripci"n
array array>udiff>assoc > array matriz1A array matriz0 PA array ;;;A call#ac"
(uncZcomparacionZdatosQ ?
array>udiff>assoc./ devuelve un array /ue contiene todos los valores de matr6D1 /ue no est*n
presentes en ninguno de los otros argumentos; Note /ue las claves son usadas en la comparaci-nA a
di(erencia de array>diff./ y array>udiff./; La comparaci-n entre datos de las matrices es realizada
usando una llamada de retorno especi(icada por el usuario; +n este sentidoA el comportamiento de
<sta (unci-n es opuesto al de array>diff>assoc./A la cual usa una (unci-n interna para la
comparaci-n;
E'emplo !. E'emplo de array>udiff>assoc./
<?php
class cr :
pri=ate $miembro%pri=ado;
#unction cr3$=al9
:
$thisF>miembro%pri=ado > $=al;
;
#unction #unc%comp%cr3$a, $b9
:
i# 3$aF>miembro%pri=ado >>> $bF>miembro%pri=ado9 return 2;
return 3$aF>miembro%pri=ado > $bF>miembro%pri=ado9? 6@F6;
;
;
$a > array3"2.6" >> ne8 cr3K9, "2.5" >> ne8 cr36C9, 2 >> ne8 cr3C<9, 6>> ne8 cr319, C >> ne8 cr3F659,9;
$b > array3"2.C" >> ne8 cr3K9, "2.5" >> ne8 cr3CC9, 2 >> ne8 cr3<9, 6>> ne8 cr319, C >> ne8 cr3F659,9;
$resultado > array%udi##%assoc3$a, $b, array3"cr", "#unc%comp%cr"99;
print%r3$resultado9;
?>
+l resultado esC
,rray
3
)2.6/ >> cr ?bject
3
)miembro%pri=ado@pri=ate/ >> K
9
)2.5/ >> cr ?bject
3
)miembro%pri=ado@pri=ate/ >> 6C
9
)2/ >> cr ?bject
3
)miembro%pri=ado@pri=ate/ >> C<
9
9
+n nuestro e'emplo anterior puede o#servar la pare'a *1* :& ne7 crL;M presente en am#as matrices
y por lo tanto no hace parte de la salida de la (unci-n;
Para la comparaci-n es usada la llamada de retorno entregada por el usuario; [sta de#e devolver un
entero menor /ueA igualA o mayor /ue cero si el primer argumento es considerado como menorA
igualA o mayor /ue el segundoA respectivamente;
Nota- Por (avor note /ue esta (unci-n s-lo analiza una dimensi-n de una matriz n2
dimensional; Por supuestoA puede analizar dimensiones m*s pro(undas usandoA por
e'emploA arra?_u#699_assocL'matr6D1)0.C 'matr6D2)0.C *9unc_alEuna_comparac6on*MJ;
$ea tam#i<n array>diff./A array>diff>assoc./A array>diff>uassoc./A array>udiff./A
array>udiff>uassoc./A array>intersect./A array>intersect>assoc./A array>uintersect./A
array>uintersect>assoc./ y array>uintersect>uassoc./;
array>udiff>uassoc
>P&P 4?
arrayZudi((Zuassoc 22 5omputa la di(erencia entre matrices con un che/ueo de )ndices adicionalA
comparando los datos y los )ndices con una llamada de retorno
Kescripci"n
array array>udiff>uassoc > array matriz1A array matriz0 PA array ;;;A call#ac"
(uncZcomparacionZdatosA call#ac" (uncZcomparacionZclavesQ ?
array>udiff>uassoc./ devuelve un array /ue contiene todos los valores de matr6D1 /ue no est*n
presentes en ninguno de los otros argumentos; Note /ue las claves son usadas en la comparaci-nA a
di(erencia de array>diff./ y array>udiff./; La comparaci-n de los datos de las matrices es realizada
usando una llamada de retorno entregada por el usuarioC 9unc_comparac6on_#atos; +n este sentidoA
su comportamiento es el opuesto del de array>diff>assoc./A /uien usa una (unci-n interna para la
comparaci-n; La comparaci-n de claves >)ndices? es realizada tam#i<n por la llamada de retorno
9unc_comparac6on_claes; +ste comportamiento contrasta con lo /ue hace array>udiff>assoc./A ya
/ue <sta compara los )ndices usando una (unci-n interna;
E'emplo !. E'emplo de array>udiff>uassoc./
<?php
class cr :
pri=ate $miembro%pri=ado;
#unction cr3$=al9
:
$thisF>miembro%pri=ado > $=al;
;
#unction #unc%comp%cr3$a, $b9
:
i# 3$aF>miembro%pri=ado >>> $bF>miembro%pri=ado9 return 2;
return 3$aF>miembro%pri=ado > $bF>miembro%pri=ado9? 6@F6;
;
#unction #unc%comp%cla=es3$a, $b9
:
i# 3$a >>> $b9 return 2;
return 3$a > $b9? 6@F6;
;
;
$a > array3"2.6" >> ne8 cr3K9, "2.5" >> ne8 cr36C9, 2 >> ne8 cr3C<9, 6>> ne8 cr319, C >> ne8 cr3F659,9;
$b > array3"2.C" >> ne8 cr3K9, "2.5" >> ne8 cr3CC9, 2 >> ne8 cr3<9, 6>> ne8 cr319, C >> ne8 cr3F659,9;
$resultado > array%udi##%uassoc3$a, $b, array3"cr", "#unc%comp%cr"9, array3"cr", "#unc%comp%cla=es"99;
print%r3$resultado9;
?>
+l resultado esC
,rray
3
)2.6/ >> cr ?bject
3
)miembro%pri=ado@pri=ate/ >> K
9
)2.5/ >> cr ?bject
3
)miembro%pri=ado@pri=ate/ >> 6C
9
)2/ >> cr ?bject
3
)miembro%pri=ado@pri=ate/ >> C<
9
9
+n nuestro e'emplo anteriorA puede ver /ue la pare'a *1* :& ne7 crL;M est* presente en am#as
matricesA y por lo tanto no hace parte de la salida de la (unci-n; ,enga en cuenta /ue de#e
especi(icar 0 llamadas de retorno;
Para la comparaci-nA se usa la llamada de retorno indicada por el usuario; [sta de#e devolver un
entero menor /ueA igualA o mayor /ue cero si el primer argumento es considerado como menorA
igualA o mayor /ue el segundoA respectivamente;
Nota- Por (avor note /ue esta (unci-n Bnicamente che/uea una dimensi-n de una matriz
n2dimensional; Por supuestoA puede che/uear dimensiones m*s pro(undas usandoA por
e'emploA arra?_u#699_uassocL'matr6D1)0.C 'matr6D2)0.C *9unc_comparac6on_#atos*C
*9unc_comparac6on_claes*MJ;
$ea tam#i<n array>diff./A array>diff>assoc./A array>diff>uassoc./A array>udiff./A
array>udiff>assoc./A array>intersect./A array>intersect>assoc./A array>uintersect./A
array>uintersect>assoc./ y array>uintersect>uassoc./;
array>udiff
>P&P 4?
arrayZudi(( 22 5omputa la di(erencia entre matricesA usando una llamada de retorno para la
comparaci-n de datos
Kescripci"n
array array>udiff > array matriz1A array matriz0 PA array ;;;A call#ac" (uncZcomparacionZdatosQ ?
array>udiff./ devuelve una matriz /ue contiene todos los valores de matr6D1 /ue no est*n presentes
en ninguno de los otros argumentos; Note /ue las claves son preservadas; Para la comparaci-n de
datosA se usa 9unc_comparac6on_#atos; +sta (unci-n de#e devolver un entero menor /ueA igualA o
mayor /ue cero si el primer argumento es considerado como menorA igualA o mayor /ue el segundoA
respectivamente; +sto en contraste a array>diff./A la cual usa una (unci-n interna para la
comparaci-n de datos;
E'emplo !. E'emplo de array>udiff./
<?php
class cr :
pri=ate $miembro%pri=ado;
#unction cr3$=al9
:
$thisF>miembro%pri=ado > $=al;
;
#unction #unc%comp%cr3$a, $b9
:
i# 3$aF>miembro%pri=ado >>> $bF>miembro%pri=ado9 return 2;
return 3$aF>miembro%pri=ado > $bF>miembro%pri=ado9? 6@F6;
;
;
$a > array3"2.6" >> ne8 cr3K9, "2.5" >> ne8 cr36C9, 2 >> ne8 cr3C<9, 6>> ne8 cr319, C >> ne8 cr3F659,9;
$b > array3"2.C" >> ne8 cr3K9, "2.5" >> ne8 cr3CC9, 2 >> ne8 cr3<9, 6>> ne8 cr319, C >> ne8 cr3F659,9;
$resultado > array%udi##3$a, $b, array3"cr", "#unc%comp%cr"99;
print%r3$resultado9;
?>
+l resultado esC
,rray
3
)2.5/ >> cr ?bject
3
)miembro%pri=ado@pri=ate/ >> 6C
9
)2/ >> cr ?bject
3
)miembro%pri=ado@pri=ate/ >> C<
9
9
Nota- Dos elementos son considerados iguales siA y solo si Lstr6nEM 'elem1 ::: Lstr6nEM
'elem2; +sto esC cuando su representaci-n tipo cadena es la misma;
Nota- Por (avor note /ue esta (unci-n s-lo analiza una dimensi-n de una matriz n2
dimensional; Por supuestoA puede analizar dimensiones m*s pro(undas usando
arra?_u#699L'matr6D1)0.C 'matr6D2)0.C *#ata_compare_9unc*MJ;
$ea tam#i<n array>diff./A array>diff>assoc./A array>diff>uassoc./A array>udiff>assoc./A
array>udiff>uassoc./A array>intersect./A array>intersect>assoc./A array>uintersect./A
array>uintersect>assoc./ y array>uintersect>uassoc./;
array>uintersect>assoc
>P&P 4?
arrayZuintersectZassoc 22 5alcula la intersecci-n de matrices con che/ueo adicional de )dicesA
comparando los datos por una (unci-n del usuario
Kescripci"n
array array>uintersect>assoc > array array1A array array0 PA array ;;;A call#ac" dataZcompareZ(uncQ ?
array>uintersect>assoc./ regresa una matriz conteniendo todos los valores de arra?1 /ue est*n
presentes en todos los argumentos; Note /ue los )ndices son usados en la comparaci-n a di(erencia
de array>uintersect./; Los datos son comparados usando una (unci-n del usuario;
E'emplo !. E'emplo array>uintersect>assoc./
<?php
$array6 > array3"a" >> "Ereen", "b" >> "bro8n", "c" >> "blue", "red"9;
$arrayC > array3"a" >> "-'EE.", "Z" >> "bro8n", "yello8", "red"9;
print%r3array%uintersect%assoc3$array6, $arrayC, "strcasecmp"99;
?>
+l resultado del e'emplo seriaC
,rray
3
)a/ >> Ereen
9
Para la comparaci-n es usada la (unci-n dada por el usuario; La cual de#e regresar un entero menor
/ueA igual aA o mayor /ue cero si el primer argumento es considerado serA respectivamenteA menor
/ueA igual aA o mayor /ue el segundo argumento;
$ea tam#i<n array>uintersect./A array>intersect>assoc./A array>intersect>uassoc./ y
array>uintersect>uassoc./;
array>uintersect>uassoc
>P&P 4?
arrayZuintersectZuassoc 22 5alcula la intersecci-n de matrices con che/ueo adicional de )ndicesA
compara los datos y los )ndices por una (unci-n del usuario
Kescripci"n
array array>uintersect>uassoc > array array1A array array0 PA array ;;;A call#ac" dataZcompareZ(uncA
call#ac" "eyZcompareZ(uncQ ?
array>uintersect>uassoc./ regresa una matriz /ue contiene todos los valores de arra?1 /ue est*n
presentes en todos los argumentos; Note /ue los )ndices son usados en la comparaci-n a di(erencia
de array>uintersect./; Los datos y los )ndices son comparados usando una (unci-n del usuario;
E'emplo !. E'emplo array>uintersect>uassoc./
<?php
$array6 > array3"a" >> "Ereen", "b" >> "bro8n", "c" >> "blue", "red"9;
$arrayC > array3"a" >> "-'EE.", "Z" >> "bro8n", "yello8", "red"9;
print%r3array%uintersect%uassoc3$array6, $arrayC, "strcasecmp", "strcasecmp"99;
?>
+l resultado del e'emplo seriaC
,rray
3
)a/ >> Ereen
)b/ >> bro8n
9
Para la comparaci-n es usada una (unci-n dada por el usuario; La cual de#e regresar un entero
menor /ueA igual aA o mayor /ue cero si el primer argumento es considerado ser menor /ueA igual a o
mayor /ue el segundo argumento respectivamente;
$ea tam#i<n array>uintersect./A array>intersect>assoc./A array>intersect>uassoc./ y
array>uintersect>assoc./;
array>uintersect
>P&P 4?
arrayZuintersect 22 5alcula la intersecc-n de matricesA compara los datos con una (unci-n del
usuario
Kescripci"n
array array>uintersect > array array1A array array0 PA array ;;;A call#ac" dataZcompareZ(uncQ ?
array>uintersect./ regresa una matriz /ue contiene todos los valores de arra?1 /ue est*n presentes
en topos los argumentos; Los datos son comparados usando una (unci-n del usuario;
E'emplo !. E'emplo array>uintersect./
<?php
$array6 > array3"a" >> "Ereen", "b" >> "bro8n", "c" >> "blue", "red"9;
$arrayC > array3"a" >> "-'EE.", "Z" >> "bro8n", "yello8", "red"9;
print%r3array%uintersect3$array6, $arrayC, "strcasecmp"99;
?>
+l resultado del e'emplo seriaC
,rray
3
)a/ >> Ereen
)b/ >> bro8n
)2/ >> red
9
Para la comparaci- es usada una (unci-n del usuario; La cual de#e regresar un entero menor /ueA
igual aA o mayor /ue cerp si el primer argumento es considerado ser menor /ueA igual aA o mayor /ue
el segundo argumentoA respectivamente;
$ea tam#i<n array>intersect./A array>uintersect>assoc./A array>intersect>uassoc./ y
array>uintersect>uassoc./;
array>uni?ue
>P&P 8 _^ 8;3;1A P&P 4?
arrayZuni/ue 22 Remueve valores duplicados de una matriz
Kescripci"n
array array>uni?ue > array matriz ?
array>uni?ue./ toma la matr6D de entrada y devuelve una nueva matriz sin los valores repetidos;
Note /ue las claves son preservadas; array>uni?ue./ ordena los valores tratados como cadenas
inicialmenteA y luego conservar* la primera clave encontrada para cada valorA ignorando todas las
claves posteriores; No /uiere decir esto /ue la clave del primer valor relacionado de la matr6D no2
ordenada se conservar*;
Nota- Dos elementos son considerados Walentes si y solo si Lstr6nEM 'elem1 :::
Lstr6nEM 'elem2; +n pala#rasC cuando la representaci-n tipo cadena es la misma;
e usar* el primer elemento;
E'emplo !. E'emplo de array>uni?ue./
<?php
$entrada > array3"a" >> "=erde", "rojo", "b" >> "=erde", "a0ul", "rojo"9;
$resultado > array%uniQue3$entrada9;
print%r3$resultado9;
?>
+sto producir* la salidaC
,rray
3
)a/ >> =erde
)2/ >> rojo
)6/ >> a0ul
9
E'emplo *. array>uni?ue./ y tipos de datos
<?php
$entrada > array31, "1", "<", 1, <, "<"9;
$resultado > array%uniQue3$entrada9;
=ar%dump3$resultado9;
?>
+ste script resultar* en la siguiente salidaC
array3C9 :
)2/ >> int319
)C/ >> strinE369 "<"
;
array>unshift
>P&P 8 A P&P 4?
arrayZunshi(t 22 .ntroduce uno o m*s elementos al principio de la matriz
Kescripci"n
int array>unshift > array imatrizA miFed var PA miFed ;;;Q ?
array>unshift./ aWade los elementos /ue se le pasan al (rente de la matr6D; N-tese /ue la lista de
elementos es aWadida como un todoA de modo /ue los elementos aWadidos mantienen su orden;
,odos los )dices num<ricos de la matriz ser*n modi(icados para iniciar a contar desde cero mientras
/ue los )ndices al(anum<ricos no ser*n modi(icados;
Devuelve el nBmero de elementos en la matr6D;
E'emplo !. E'emplo de array>unshift./
<?php
$Queue > array3"oranEe", "banana"9;
array%unshi#t3$Queue, "apple", "raspberry"9;
?>
+sto resultar* /ue '@ueue tenga los siguientes elementosC
,rray
3
)2/ >> apple
)6/ >> raspberry
)C/ >> oranEe
)</ >> banana
9
$ea tam#in<n array>shift./A array>push./A and array>pop./;
array>5alues
>P&P 8 A P&P 4?
arrayZvalues 22 Devuelve todos los valores de una matriz
Kescripci"n
array array>5alues > array entrada ?
array>5alues./ devuelve todos los valores de la matriz entra#a en orden num<rico;
E'emplo !. E'emplo de array>5alues./
<?php
$matri0 > array3"talla" >> "XO", "color" >> "dorado"9;
print%r3array%=alues3$matri099;
?>
+l resultado del e'emplo seriaC
,rray
3
)2/ >> XO
)6/ >> dorado
9
$ea tam#i<n array>Beys./;
array>3alB>recursi5e
>P&P 4?
arrayZEal"Zrecursive 22 Aplicar una (unci-n de usuario recursivamente a cada miem#ro de una
matriz
Kescripci"n
#ool array>3alB>recursi5e > array ientradaA call#ac" nom#reZ(unc PA miFed datosZusuarioQ ?
Aplica la (unci-n de(inida por el usuario nom1re_9unc a cada elemento de la matriz entra#a; +sta
(unci-n opera de (orma recursiva so#re matrices pro(undas; Por lo generalA nom1re_9unc reci#e dos
par*metros; +l valor del par*metro entra#a es el primeroA y la claveD)ndice es el segundo; i se
de(ine el par*metro opcional #atos_usuar6oA <ste ser* pasado como el tercer par*metro a la llamada
de retorno nom1re_9unc;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- i nom1re_9unc necesita tra#a'ar con los valores reales de la matrizA especi(i/ue
el primer par*metro de nom1re_9unc como una re(erencia; +ntoncesA cual/uier cam#io
realizado so#re esos elementos ser* e(ectuado so#re la matriz original misma;
E'emplo !. E'emplo de array>3alB>recursi5e./
<?php
$dulce > array3MaM >> Mman0anaM, MbM >> MbananoM9;
$#rutas > array3MdulceM >> $dulce, MacidoM >> MlimonM9;
#unction prueba%imprimir3$item, $cla=e9
:
echo "$cla=e contiene $itemVn";
;
array%8alI%recursi=e3$#rutas, Mprueba%imprimirM9;
?>
La salida del anterior programa ser*C
a contiene man0ana
b contiene banano
acido contiene limon
Notar* /ue la clave HdulceH nunca es mostrada; 5ual/uier clave /ue contenga un valor array no ser*
pasada a la (unci-n;
$ea tam#i<n array>3alB./;
array>3alB
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
arrayZEal" 22 Aplica una (unci-n del usuario a cada elemento de una matriz;
Kescripci"n
int array>3alB > array imatrizA string (unc PA miFed datosvariosQ ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Aplica la (unci-n llamada 9unc a cada elemento de la matr6D; La (unci-n 9unc reci#ir* el valor de la
matriz como primer par*metro y la clave como segundo; i se proporciona el par*metro #atosar6os
ser* pasado como tercer par*metro a la (unci-n de usuario;
i 9unc necesita m*s de dos o 7 argumentosA dependiendo de #atosar6osA se generar* un aviso cada
vez /ue array>3alB./ llama a 9unc; +stos avisos pueden suprimirse si se pone G antes de la
llamada a array>3alB./A o usando la (unci-n error>reporting./;
Nota- i 9unc precisa tra#a'ar con los valores reales de la matrizA especi(i/ue /ue el
valor del primer par*metro de 9unc de#e pasarse por re(erencia; Desde ese instanteA los
cam#ios realizados so#re dichos elementos tam#i<n ser*n realizados en la propia matriz;
Nota- +l pasar la clave y los datos de usuario a 9unc (ue una caracter)stica aWadida en
P&P 8;3;3
array>3alB./ no es a(ectado por el apuntador interno del par*metro matr6D; array>3alB./ avanzar*
por toda la matriz sin importar la posici-n del apuntador; Para reinicializar el apuntadorA use reset./;
en P&P 7A array>3alB./ reinicializa el apuntador;
No se de#e cam#iar la matriz desde la llamada a la (unci-nA e'; agregarD#orrar elementosA vaciar
elementosA etc; si la matriz /ue est* siendo usada por array>3alB./ cam#iaA el comportamiento de
esta (unci-n ser* inde(inido e impredeci#le;
E'emplo !. E'emplo de array>3alB./
<?php
$#rutas > array 3"d">>"limon", "a">>"naranja", "b">>"platano", "c">>"man0ana"9;
#unction test%alterar 3$item6, $cla=e, $pre#ix9 :
$item6 > "$pre#ix@ $item6";
;
#unction test%=er 3$itemC, $cla=e9 :
echo "$cla=e. $itemC<br />Vn";
;
echo ",ntes...@Vn";
array%8alI 3$#rutas, Mtest%=erM9;
array%8alI 3$#rutas, Mtest%alterarM, M#rutaM9;
echo "...y despues@Vn";
array%8alI 3$#rutas, Mtest%=erM9;
?>
+l resultado del e'emplo seriaC
,ntes...@
d. limon
a. naranja
b. platano
c. man0ana
...y despues@
d. #ruta@ limon
a. #ruta@ naranja
b. #ruta@ platano
c. #ruta@ man0ana
$ea tam#i<n array>3alB>recursi5e./A create>function./A list./A (oreachA each./A
call>user>func>array./A y array>map./;
array
>P&P 7A P&P 8A P&P 4 ?
array 22 5rear una matriz
Kescripci"n
array array > miFed ;;; ?
Devuelve una matriz con los par*metros /ue se le pasan; A dichos par*metros se les puede dar un
)ndice usando el operador :&; Lea la secci-n so#re los tipos de matrices para m*s in(ormaci-n
so#re matrices;
Nota- array./ es una construcci-n del lengua'e /ue se utiliza para representar matrices
literalesA no una (unci-n regular;
La (orma =)ndice ^_ valor= separada por comasA de(ine )ndices y valores; el )ndice puede ser de tipo
cadena o num<rico; 5uando el )ndice es omitidoA se genera autom*ticamente un )ndice num<ricoA
empezando en cero; i el )ndice es un enteroA el siguiente )ndice generado ser* igual al )ndice con
nBmero mayor R 1; Note /ue cuando se de(inen dos )ndices id<nticosA el Bltimo so#re escri#e al
primero;
,ener una coma despu<s del Bltimo elemento de la matrizA aun/ue inusualA es sint*cticamente
valido;
+l siguiente e'emplo demuestra c-mo crear una matriz #idimensionalA c-mo especi(icar claves para
matrices asociativasA y c-mo especi(icar )ndices no consecutivos en matrices normales;
E'emplo !. E'emplo de array./
<?php
$#rutas > array 3
"#rutas" >> array3"a">>"naranja", "b">>"pl&aacute;tano", "c">>"man0ana"9,
"n&uacute;meros" >> array36, C, <, 1, 5, G9,
"hoyos" >> array3"primero", 5 >> "seEundo", "tercero"9
9;
?>
E'emplo *. Sndice automtico con array./
<?php
$array > array36, 6, 6, 6, 6, J >> 6, 1 >> 6, 6K, < >> 6<9;
print%r3$array9;
?>
+l resultado del e'emplo seriaC
,rray
3
)2/ >> 6
)6/ >> 6
)C/ >> 6
)</ >> 6<
)1/ >> 6
)J/ >> 6
)K/ >> 6K
9
Note /ue el )ndice H7H es de(inido dos vecesA y permanece su valor (inal de H17H; +l )ndice 8 es
de(inido depu<s del )ndice MA y en seguida se genera el )ndice 9 >para el valor 19?A por/ue el )ndice
mayor era M;
+ste e'emplo crea una matriz en donde los )ndices inician en 1;
E'emplo 7. Sndice base ! con array./
<?php
$primercuarto > array36 >> MEneroM, MSebreroM, M"ar0oM9;
print%r3$primercuarto9;
?>
+l resultado del e'emplo seriaC
,rray
3
)6/ >> Enero
)C/ >> Sebrero
)</ >> "ar0o
9
5omo en PerlA puede accesar un valor de la matriz desde dentro de una cadena contenida en do#les
comillas; in em#argoA con P&P necesitar* encerrar la matriz entre las llaves curvas;
E'emplo 8. Accesando una matri6 dentro de una cadena
<?php
$#oo > array3MbarM >> Mba0M9;
echo "Hello :$#oo)MbarM/;!"; // Hello ba0!
?>
$ea tam#i<n array>pad./A list./A count./A (oreachA range./;
arsort
>P&P 7A P&P 8 A P&P 4?
arsort 22 Ordena una matriz en orden inverso y mantiene la asociaci-n de )ndices
Kescripci"n
#ool arsort > array imatriz PA int sortZ(lagsQ ?
+sta (unci-n ordena una matriz de modo /ue los )ndices mantengan su correlaci-n con los
elementos de la misma a los /ue est*n asociados; +sto se utiliza principalmente para ordenar
matrices asociativas en las /ue el orden de los elementos es importante;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo de arsort./
<?php
$#rutas > array 3"d">>"limon", "a">>"naranja", "b">>"platano", "c">>"man0ana"9;
arsort 3$#rutas9;
reset3&#utas9;
8hile 3list3$Iey, $=al > each3$#rutas99 :
echo "$Iey > $=alVn";
;
?>
+l resultado del e'emplo seriaC
b > platano
a > naranja
c > man0ana
d > limon
Las (rutas han sido ordenadas en orden al(a#<tico inverso y los )ndices asociados con cada elemento
se han mantenido;
Puede modi(icar el comportamiento de orden usando el par*metro opcional sort_9laEs para detalles
vea sort./;
$ea tam#i<nC asort./A rsort./A Bsort./A y sort./;
asort
>P&P 7A P&P 8 A P&P 4?
asort 22 Ordena una matriz y mantiene la asociaci-n de )ndices
Kescripci"n
#ool asort > array imatriz PA int sortZ(lagsQ ?
+sta (unci-n ordena una matriz de modo /ue los )ndices mantengan su correlaci-n con los
elementos de la misma a los /ue est*n asociados; +sto se utiliza principalmente para ordenar
matrices asociativas en las /ue el orden de los elementos es importante;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo de asort./
>?php
$#rutas > array 3"d">>"limon", "a">>"naranja", "b">>"platano", "c">>"man0ana"9;
asort3$#rutas9;
reset3$#rutas9;
8hile 3list3$Iey, $=al9 > each3$#rutas99 :
echo "$Iey > $=alVn";
;
?>
+l resultado del e'emplo seriaC
d > limon
a > naranja
c > man0ana
d > platano
Las (rutas han sido ordenadas en orden al(a#<tico y los )ndices asociados con cada elemento se han
mantenido;
Puede modi(icar el comportamiento de orden usando el par*metro opcional sort_9laEs para detalles
vea sort./;
$ea tam#i<nC arsort./A rsort./A Bsort./A y sort./;
compact
>P&P 8 A P&P 4?
compact 22 5rea una matriz /ue contiene varia#les y sus valores
Kescripci"n
array compact > miFed varname PA miFed ;;;Q ?
compact./ toma un nBmero varia#le de par*metros; 5ada uno puede ser tanto una cadena /ue
contiene el nom#re de la varia#leA como una matriz de nom#res de varia#le; La matriz puede
contener otras matrices de nom#res de varia#le en su interiorX compact./ los procesa
recursivamente;
Para cada uno de estosA compact./ #usca una varia#le con dicho nom#re en la ta#la de s)m#olos y la
aWade a la matriz de salida de modo /ue el nom#re de la varia#le es la clave y el contenido de <sta
es el valor para dicha clave; Para resumirA hace lo contrario de e+tract./; Devuelve la matriz de
salida con las varia#les aWadidas a la misma;
5ual/uier cadena /ue no haya sido de(inida simplemente se evitar*;
Fotcha- A causa de /ue $aria#les varia#les no puede ser usada con las uperglo#al
arrays de P&P dentro de (uncionesA las matrices uperglo#al no pueden ser pasadas a
compact./;
E'emplo !. E'emplo de compact./
<?php
$ciudad > "&an Srancisco";
$estado > "R,";
$e=ento > "&4--',H";
$location%=ars > array 3"ciudad", "estado"9;
$resultado > compact 3"e=ento", "nada%aQui", $location%=ars9;
?>
,ras estoA 'resulta#o
,rray
3
)e=ent/ >> &4--',H
)city/ >> &an Srancisco
)state/ >> R,
9
$ea tam#i<nC e+tract./;
count
>P&P 7A P&P 8 A P&P 4?
count 22 5uenta los elementos de una matriz o propiedades de un o#'eto
Kescripci"n
int count > miFed var PA int modeQ ?
Devuelve el nBmero de elementos en arA /ue t)picamente es una matrizA por/ue cual/uier otra cosa
di(erente de un o#'eto tendr)a s-lo un elemento;
Para o#'etos count./ regresar* el nBmero de propiedades no est*ticasA sin tomar en cuenta su
visi#ilidad; i tiene instalado PLA enlazarlo a count./ implementando la inter(ace Counta1le; La
inter(ace tiene eFactamente un m<todoA count./A el cual regresa el mismo valor /ue regresar) la
(unci-n count./;
i ar no es una matriz o un o#'etoA se regresar* 1; &ay una eFcepci-nA si ar es NULLA se regresar*
0;
Nota- +l par*metro opcional mo#e est* disponi#le desde P&P 8;0;3;
i el par*metro opcional mo#e es iniciado a COUNT_RECURSI$E >o 1?A count./ contar*
recursivamente la matriz; +sto es Btil particularmente para contar todos los elementos de una matriz
multidimensional; +l valor por de(ecto para mo#e es 0; count./ no detecta recursi-n in(inita;
Atenci"n
count./ puede regresar 3 para una varia#le /ue no ha sido inicializadaA pero tam#i<n regresa 3 para
una varia#le /ue ha sido inicializada con una matriz vac)a; @se isset./ para pro#ar si la varia#le ha
sido de(inida;
Por (avor vea la secci-n del manual so#re Array para una eFplicaci-n m*s detallada de como son
usadas e implementadas las matrices en P&P;
E'emplo !. E'emplo
<?php
$a)2/ > 6;
$a)6/ > <;
$a)C/ > 5;
$result > count3$a9;
// $result >> <
$b)2/ > H;
$b)5/ > K;
$b)62/ > 66;
$result > count3$b9;
// $result >> <;
$result > count3null9;
// $result >> 2;
$result > count3#alse9;
// $result >> 6;
$obj > ne8 &tdRlass;
$objF>#oo > M, propertyM;
$objF>bar > M,nother propertyM;
$result > count3$obj9;
// $result >> C;
?>
E'emplo *. E'emplo recursi5o .PHP GH 8.*.D/
<?php
$#ood > array3M#ruitsM >> array3MoranEeM, MbananaM, MappleM9,
M=eEEieM >> array3McarrotM, McollardM, MpeaM99;
// recursi=e count
echo count3$#ood, R?+.*%'ER+'&4(E9; // output J
// normal count
echo count3$#ood9; // output C
?>
$ea tam#i<n is>array./A isset./A and strlen./;
current
>P&P 7A P&P 8 A P&P 4?
current 22 Devuelve el elemento actual de una matriz
Kescripci"n
miFed current > array imatriz ?
5ada matriz tiene un puntero interno al elemento =actual=A /ue se inicializa al primer elemento
insertado en la misma;
La (unci-n current./ simplemente devuelve el elemento de la ta#la al /ue apunta el puntero interno;
No mueve el puntero de ninguna manera; i el puntero interno apunta (uera del (inal de la lista de
elementosA current./ devuelve FALSE;
A5iso
i la matriz contiene elementos vac)os >3 o ==A la cadena vac)a? esta (unci-n devolver* FALSE
tam#i<n para dichos elementos; +sto hace imposi#le determinar si se est* realmente al (inal de la
lista en tales matrices usando current./; Para recorrer adecuadamente una matriz /ue pueda
contener elementos vac)osA utilice la (unci-n each./;
E'emplo !. E'emplo- uso de current./ y amigos
<?php
$transport > array3M#ootM, MbiIeM, McarM, MplaneM9;
$mode > current3$transport9; // $mode > M#ootM;
$mode > next3$transport9; // $mode > MbiIeM;
$mode > current3$transport9; // $mode > MbiIeM;
$mode > pre=3$transport9; // $mode > M#ootM;
$mode > end3$transport9; // $mode > MplaneM;
$mode > current3$transport9; // $mode > MplaneM;
?>
$ea tam#i<nC end./A Bey./A ne+t./A pre5./ y reset./;
each
>P&P 7A P&P 8 A P&P 4?
each 22 Devuelve el siguiente par claveDvalor de una matriz y avanza el apuntador
Kescripci"n
array each > array imatriz ?
Devuelve el par claveDvalor actual para la matr6D y avanza el puntero de la misma; +sta pare'a se
devuele en una matriz de 8 elementosA con las claves 0A 1A >e?A y alue; Los elementos 0 y >e?
contienen el nom#re de clave del elemento de la matrizA y 1 y alue contienen los datos;
i el puntero interno para la matriz apunta despu<s del (inal del contenido de la matrizA each./
devuelve FALSE;
E'emplo !. E'emplos de each./
<?php
$chorrada > array 3"bob", "#red", "jussi", "jouni", "eEon", "marliese"9;
$tonteria > each 3$chorrada9;
print%r3$tonteria9;
?>
'tonter6a ahora contiene los siguientes pares de llaveDvalorC
,rray
3
)6/ >> bob
)=alue/ >> bob
)2/ >> 2
)Iey/ >> 2
9
<?php
$#oo > array3"'obert" >> "Zob", "&eppo" >> "&epi"9;
$bar > each3$#oo9;
print%r3$bar9;
?>
'tonter6a ahora contiene los siguientes pares de llaveDvalorC
,rray
3
)6/ >> Zob
)=alue/ >> Zob
)2/ >> 'obert
)Iey/ >> 'obert
9
each./ se usa normalmente de (orma con'unta a list./ para recorrer una matrizX por e'emploC
E'emplo *. Mecorriendo una matri6 con each./
<?php
$#ruit > array3MaM >> MappleM, MbM >> MbananaM, McM >> McranberryM9;
reset3$#ruit9;
8hile 3list3$Iey, $=al9 > each3$#ruit99 :
echo "$Iey >> $=alVn";
;
?>
+l resultado del e'emplo seriaC
a >> apple
b >> banana
c >> cranberry
5uando se ha e'ecutado each./A el cursor de la matriz /uedar* en el siguiente elemento de la mismaA
o en el Bltimo si llega al (inal de <sta; ,iene /ue usar reset./ si /uiere recorrer la matriz otra vez
usando each;
Atenci"n
A causa de /ue asignar una matriz a otra varia#le reinicia el apuntador original de la matrizA
nuestro e'emplo anterior pudo causar un ciclo sin (in tuvimos /ue asignar '9ru6t a otra varia#le
dentro del ciclo;
$ea tam#i<nC Bey./A list./A current./A reset./A ne+t./A pre5./A y (oreach;
end
>P&P 7A P&P 8 A P&P 4?
end 22 Mueve el puntero interno de una ta#la al Bltimo elemento
Kescripci"n
miFed end > array imatriz ?
end./ avanza el puntero interno de la matr6D al Bltimo elementoA y regresa su valor;
E'emplo !. )n E'emplo simple de end./
<?php
$#ruits > array3MappleM, MbananaM, McranberryM9;
echo end3$#ruits9; // cranberry

?>
$ea tam#i<nC current./A each./A pre5./A ne+t./A y reset./;
e+tract
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
eFtract 22 .mporta varia#les a la ta#la de s)m#olos desde una matriz
Kescripci"n
void e+tract > array matrizZvars PA int tipoZeFtraccion PA string pre(i'oQQ ?
+sta (unci-n se utiliza para importar varia#les desde una matriz a la ta#la de s)m#olos actual; ,oma
la matriz asoiativa matr6D_ars y trata las claves como nom#res de varia#le y los valores como los
valores de <stas; Para cada par claveDvalor crear* una varia#le en la ta#la de s)m#olos actualA su'eto
a los par*metros t6po_e8tracc6on y pre96Uo;
Nota- +mpezando de la versi-n 8;3;4A esta (unci-n regresa el nBmero de varia#les
eFtra)das;
Nota- E%TR_IF_E%ISTS y E%TR_PREFI%_IF_E%ISTS (ueron introducidas en la
versi-n 8;0;3;
Nota- E%TR_REFS (ue introducida en la versi-n 8;7;3;
e+tract./ controla las colisiones con las varia#les /ue ya eFisten; La (orma de tratar <stas se
determina por el t6po_e8tracc6on; Puede tener Bnicamente uno de los siguientes valoresC
+J,RZO$+RLR.,+
i hay colisi-nA so#reescri#e la varia#le eFistente;
+J,RZS.P
i hay colisi-nA no so#reescri#as la varia#le eFistente;
+J,RZPR+F.JZAM+
i hay una colisi-nA aWade el pre96Uo a la nueva varia#le;
+J,RZPR+F.JZALL
AWade el pre96Uo a todas las varia#les;
E%TR_PREFI%_IN$ALID
olo agrega el pre96Uo a nom#res de varia#les invalidasDnum<ricas; +ste (ue agregado en P&P
8;3;4;
E%TR_IF_E%ISTS
olo so#reescri#e la varia#le si ya eFiste en la ta#la de s)m#olos actualA de otra manera no
hace nada; +sto es Btil para de(inir una lista de varia#les validas y entonces eFtraer solo
a/uellas varia#les /ue esten de(inidas (uera de YZR+O@+, por e'emplo; +sta #andera (ue
agregada en P&P 8;0;3;
E%TR_PREFI%_IF_E%ISTS
olo crea los nom#res de varia#les con el pre(i'o si la versi-n de la varia#le sin pre(i'o eFiste
en la ta#la de s)m#olos; +sta #andera (ue agregada en P&P 8;0;3;
E%TR_REFS
+Ftrae las varia#les como re(erencias; +sto e(ectivamente signi(ica /ue los valores de las
varia#les importadas est*n aBn re(erenciando a los valores del par*metro matr6D_ar; Puede
usar esta #andera por s) sola o com#inada con cual/uier otra #andera haciendo >OR? el
par*metro t6po_e8tracc6on; +sta #andera (ue agregada en P&P 8;7;3;
i no se especi(ica t6po_e8tracc6onA se asume /ue vale +J,RZO$+RLR.,+;
N-tese /ue el pre96Uo s-lo se necesita si t6po_e8tracc6on vale E%TR_PREFI%_SAMEA
E%TR_PREFI%_ALLA E%TR_PREFI%_IN$ALID o E%TR_PREFI%_IF_E%ISTS; i el
resultado con pre(i'o no es un nom#re de varia#le validoA no es importado en la ta#la de s)m#olos;
e+tract./ regresa el nBmero de varia#les eFitosamente importadas en la ta#la de s)m#olos;
A5iso
No use e+tract./ en datos no con(ia#lesA como entradas de usuario >YZG+,A ;;;?; pero si lo haceA
por e'emploA si /uiere correr codigo anterior /ue con()a temporalmente en registerZglo#alsA
asegurese de /ue usa una de los valores de no2so#reescri#ir del par*metro t6po_e8tracc6on tales
como E%TR_S&IP y asegurese de eFtrar las varia#les '_SER(ERA '_SESS0ONA '_COO20EA
'_+OST y '_-ET ese orden;
@n uso posi#le para eFtract ser)a importar en la ta#la de s)m#olos las varia#les contenidas en la
matriz asociativa /ue devuelve 3dd+>deseriali6e./;
E'emplo !. E'emplo de e+tract./
<?php
/W &uponemos Que $matri0%=ar es una matri0 de=uelta por
8ddx%deseriali0e W/
$tamano > "Erande";
$matri0%=ar > array 3"color" >> "a0ul",
"tamano" >> "media",
"#orma" >> "es#era"9;
extract 3$matri0%=ar, EX*'%'ES4X%&,"E, "8ddx"9;
print "$color, $tamano, $#orma, $8ddx%tamanoVn";
?>
+l resultado del e'emplo seriaC
a0ul, Erande, es#era, media
La varia#le 'tamano no (ue so#reescrita por/ue especi(icamos E%TR_PREFI%_SAMEA /ue
provoc- la creaci-n de '7##8_tamano; i se hu#iera especi(icado E%TR_S&IPA '7##8_tamano ni
si/uiera ha#r)a sido creada; E%TR_O$ER"RITE ha#r)a provocado /ue 'tamano tuviera el valor
=media=A y E%TR_PREFI%_ALL ha#r)a provocado /ue aparecieran nuevas varia#les llamadas
'7##8_colorA '7##8_tamanoA y '7##8_9orma;
De#e usar matrices asociativasA las matrices num<ricamente indeFadas no producir*n resultados a
menos /ue use E%TR_PREFI%_ALL o E%TR_PREFI%_IN$ALID;
$ea tam#i<n compact./;
in>array
>P&P 8 A P&P 4?
inZarray 22 Revisa si un valor eFiste en una matriz
Kescripci"n
#ool in>array > miFed agu'aA array pa'ar PA #ool strictQ ?
Busca la aEuUa en el paUarA y devuelve TRUE si se encuentra y FALSE en caso contrario;
i el tercer par*metro str6ct es de(inido en TRUE entonces la (unci-n in>array./ tam#i<n revisar*
los tipos de la aEuUa en el paUar;
Nota- i nee#le es una cadenaA la comparaci-n es hecha de una (orma sensi#le a
mayBsculas y minBsculas;
Nota- +n P&P antes de 8;0;3; nee#le no le era permitido ser una matriz;
E'emplo !. E'emplo de in>array./
<?php
$os > array 3""ac", ".*", "4rix", "Oinux"9;
i# 3in%array 3"4rix", $os99
print "Encontrado 4rix";
i# 3in%array3"mac", $os99 :
echo "Encontrado mac";
;
?>
La segunda condici-n (alla por/ue in>array./ es 5A+2+N.,.$+A por lo /ue el programa
desplegar*C
-ot 4rix
E'emplo *. E'emplo de ,TMICT in>array./
<?php
$a > array3M6.62M, 6C.1, 6.6<9;
i# 3in%array3M6C.1M, $a, true99 :
echo "M6C.1M Encontrado con cheQueo &*'4R*Vn";
;
i# 3in%array36.6<, $a, true99 :
echo "6.6< Encontrado con cheQueo &*'4R*Vn";
;
?>
+l resultado del e'emplo seriaC
6.6< Encontrado con cheQueo &*'4R*
E'emplo 7. in>array./ 3ith an array as needle
<?php
$a > array3array3MpM, MhM9, array3MpM, MrM9, MoM9;
i# 3in%array3array3MpM, MhM9, $a99 :
echo "&e encontro MphMVn";
;
i# 3in%array3array3M#M, MiM9, $a99 :
echo "&e encontro M#iMVn";
;
i# 3in%array3MoM, $a99 :
echo "&e encontro MoMVn";
;
?>
+l resultado del e'emplo seriaC
&e encontro MphM
&e encontro MoM
$ea tam#i<n array>search./A array>Bey>e+ists./A y isset./;
Bey
>P&P 7A P&P 8 A P&P 4?
"ey 22 O#tiene una clave de una matriz asociativa
Kescripci"n
miFed Bey > array i"ey ?
Bey./ devuelve el elemento )ndice de la posici-n actual en la matriz;
E'emplo !. E'meplo
<?php
$array > array3
M#ruit6M >> MappleM,
M#ruitCM >> MoranEeM,
M#ruit<M >> MErapeM,
M#ruit1M >> MappleM,
M#ruit5M >> MappleM9;
// this cycle echoes all associati=e array
// Iey 8here =alue eQuals "apple"
8hile 3$#ruit%name > current3$array99 :
i# 3$#ruit%name >> MappleM9 :
echo Iey3$array9.M<br />M;
;
next3$array9;
;
?>
$ea tam#i<nC current./A ne+t./
Brsort
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
"rsort 22 Ordena una matriz por clave en orden inverso
Kescripci"n
int Brsort > array imatriz PA int sortZ(lagsQ ?
Ordena una matriz por clave en orden inversoA manteniendo las correlaciones clave a dato; +sto es
Btil principalmente en matrices asociativas;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo
<?php
$#ruits > array3"d">>"lemon", "a">>"oranEe", "b">>"banana", "c">>"apple"9;
Irsort3$#ruits9;
reset3$#ruits9;
8hile 3list3$Iey, $=al9 > each3$#ruits99 :
echo "$Iey > $=alVn";
;
?>
+l resultado del e'emplo seriaC
d > lemon
c > apple
b > banana
a > oranEe
Puede modi(icar el comportamiento del ordenamiento usando el par*metro opcional sort_9laEsA para
m*s detalles vea sort./;
$ea tam#i<nC asort./A arsort./A Bsort./A sort./A natsort./A rsort./;
Bsort
>P&P 7A P&P 8 A P&P 4?
"sort 22 Ordena una matriz por clave
Kescripci"n
int Bsort > array imatriz PA int sortZ(lagsQ ?
Ordena una matriz por claveA manteniendo las correlaciones clave a dato; +sto es Btil principalmente
en matrices asociativas;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo
<?php
$#ruits > array3"d">>"lemon", "a">>"oranEe", "b">>"banana", "c">>"apple"9;
Isort3$#ruits9;
reset3$#ruits9;
8hile 3list3$Iey, $=al9 > each3$#ruits99 :
echo "$Iey > $=alVn";
;
?>
+l resultado del e'emplo seriaC
a > oranEe
b > banana
c > apple
d > lemon
Puede modi(icar el comportamiento del ordenamiento usando el parcdeometro opcional sort_9laEsA
para m*s detalles vea sort./;
$ea tam#i<nC asort./A arsort./A Brsort./A uBsort./A sort./A natsort./ y rsort./;
list
>P&P 7A P&P 8A P&P 4 ?
list 22 Asigna varia#les como si (ueran una matriz
Kescripci"n
void list > miFed varnameA miFed ;;; ?
5omo array./A esta no es realmente una (unci-nA sino una construcci-n del lengua'e; list./ se usa
para asignar una lista de varia#les en una sola operaci-n;
Nota- list./ solo (unciona con matrices num<ricas y asume /ue el )ndice num<rico
empieza en 3;
E'emplo !. E'emplo de list./
<?php
$in#o > array3Mco##eeM, Mbro8nM, Mca##eineM9;
// OistinE all the =ariables
list3$drinI, $color, $po8er9 > $in#o;
echo "$drinI is $color and $po8er maIes it special.Vn";
// OistinE some o# them
list3$drinI, , $po8er9 > $in#o;
echo "$drinI has $po8er.Vn";
// ?r letMs sIip to only the third one
list3 , , $po8er9 > $in#o;
echo "4 need $po8er!Vn";
?>
E'emplo *. Jtro e'emplo del uso de list./
<table>
<tr>
<th>Employee name</th>
<th>&alary</th>
</tr>
<?php
$result > mysQl%Query3"&EOER* id, name, salary S'?" employees", $conn9;
8hile 3list3$id, $name, $salary9 > mysQl%#etch%ro83$result99 :
echo " <tr>Vn" .
" <td><a hre#>V"in#o.php?id>$idV">$name</a></td>Vn" .
" <td>$salary</td>Vn" .
" </tr>Vn";
;
?>
</table>
A5iso
list./ asigna los valores comenzando por el par*metro m*s a la derecha; i est* usando varia#les
independientesA no tiene /ue preocuparse acerca de esto; Pero si est* usando matrices con )ndices
usualmente se esperar)a tener el orden de los )ndices en la matriz en la misma (orma /ue se se
escri#i- en la (unci-n list./ de iz/uierda a derechaX lo cu*l no ocurrir*A son asignados en orden
inverso;
E'emplo 7. )sando list./ con matrices conndices
<?php
$in#o > array3Mco##eeM, Mbro8nM, Mca##eineM9;
list3$a)2/, $a)6/, $a)C/9 > $in#o;
=ar%dump3$a9;
?>
Da la siguiente salida >note el orden de los elementos comparado en el orden en el /ue (ueron
escritos en la (unci-n list./?C
array3<9 :
)C/>>
strinE3J9 "ca##eine"
)6/>>
strinE359 "bro8n"
)2/>>
strinE3G9 "co##ee"
;
$ea tam#i<nC each./A array./ y e+tract./;
natcasesort
>P&P 8 A P&P 4?
natcasesort 22 Ordena una matriz usando un algoritmo de =orden natural= sin distinguir mayBsculas
de minBsculas
Kescripci"n
void natcasesort > array imatriz ?
+sta (unci-n implementa un algoritmo de ordenamiento /ue ordena cadenas al(anum<ricas en la
(orma en /ue un ser humano lo har)aA al mismo tiempo /ue conserva las asociaciones claveDvalor;
+sta propiedad se conoce como =ordenamiento natural=;
natcasesort./ es una versi-n de natsort./ /ue no distingue entre mayBsculas y minBsculas;
E'emplo !. E'emplo de natcasesort./
<?php
$matri06 > $matri0C > array3M4"-2.pnEM, MimE6C.pnEM, MimE62.pnEM, MimEC.pnEM, MimE6.pnEM, M4"-<.pnEM9;
sort3$matri069;
echo "?rdenamiento est&aacute;ndarVn";
print%r3$matri069;
natcasesort3$matri0C9;
echo "Vn?rden natural 3insensible a may&uacute;sculas y min&uacute;sculas9Vn";
print%r3$arrayC9;
?>
+l c-digo anterior generar* la siguiente salidaC
?rdenamiento est&aacute;ndar
,rray
3
)2/ >> 4"-2.pnE
)6/ >> 4"-<.pnE
)C/ >> imE6.pnE
)</ >> imE62.pnE
)1/ >> imE6C.pnE
)5/ >> imEC.pnE
9
?rden natural 3insensible a may&uacute;sculas y min&uacute;sculas9
,rray
3
)2/ >> 4"-2.pnE
)1/ >> imE6.pnE
)</ >> imEC.pnE
)5/ >> 4"-<.pnE
)C/ >> imE62.pnE
)6/ >> imE6C.pnE
9
Para m*s in(ormaci-n veaC la p*gina de 5omparaci-n de 5adenas en Orden Natural de Martin Pool;
$ea tam#i<n sort./A natsort./A strnatcmp./A y strnatcasecmp./;
natsort
>P&P 8 A P&P 4?
natsort 22 Ordena una matriz usando un algoritmo de =orden natural=
Kescripci"n
void natsort > array imatriz ?
+sta (unci-n implementa un algoritmo /ue ordena cadenas al(anum<ricas en la (orma en /ue lo
har)a un ser humanoA al mismo tiempo /ue conserva las asociaciones claveDvalor; +sta propiedad es
conocida como =ordenamiento natural=; @n e'emplo de la di(erencia entre <ste y el algoritmo
computacional normal de ordenamiento de cadenas >usado en sort./? puede apreciarse a
continuaci-nC
E'emplo !. E'emplo de natsort./
<?php
$matri06 > $matri0C > array3"imE6C.pnE", "imE62.pnE", "imEC.pnE", "imE6.pnE"9;
sort3$matri069;
echo "?rdenamiento est&aacute;ndarVn";
print%r3$matri069;
natsort3$matri0C9;
echo "Vn?rdenamiento naturalVn";
print%r3$matri0C9;
?>
+l anterior (ragmento de c-digo genera la siguiente salidaC
?rdenamiento est&aacute;ndar
,rray
3
)2/ >> imE6.pnE
)6/ >> imE62.pnE
)C/ >> imE6C.pnE
)</ >> imEC.pnE
9
?rdenamiento natural
,rray
3
)</ >> imE6.pnE
)C/ >> imEC.pnE
)6/ >> imE62.pnE
)2/ >> imE6C.pnE
9
Para m*s in(ormaci-n veaC la p*gina de 5omparaci-n de 5adenas en Orden Natural de Martin Pool;
$ea tam#i<n natcasesort./A strnatcmp./A y strnatcasecmp./;
ne+t
>P&P 7A P&P 8 A P&P 4?
neFt 22 Avanza el puntero interno de una matriz
Kescripci"n
miFed ne+t > array imatriz ?
Devuelve el elemento de la matriz /ue ocupa el lugar siguiente al apuntado por el puntero internoA o
FALSE si no hay m*s elementos;
ne+t./ se comporta como current./A con una di(erencia; Avanza el puntero interno de la matriz en
una posici-n antes de devolver el elemento; +so signi(ica /ue devuelve el siguiente elemento de la
matriz y /ue avanza el puntero interno en uno; i al avanzar se pasa del (inal de la lista de
elementosA ne+t./ devuelve FALSE;
A5iso
i la matriz contiene elementos vac)osA esta (unci-n tam#i<n devolver* FALSE para dichos
elementos; Para recorrer adecuadamente una matriz /ue pueda contener elementos vac)osA vea la
(unci-n each./;
E'emplo !. E'emplo del uso de ne+t./
<?php
$transport > array3M#ootM, MbiIeM, McarM, MplaneM9;
$mode > current3$transport9; // $mode > M#ootM;
$mode > next3$transport9; // $mode > MbiIeM;
$mode > next3$transport9; // $mode > McarM;
$mode > pre=3$transport9; // $mode > MbiIeM;
$mode > end3$transport9; // $mode > MplaneM;
?>
$ea tam#i<nC current./A end./ pre5./ y reset./
pos
pos 22 Alias de current./
Kescripci"n
+sta (unci-n es un alias de current./;
pre5
>P&P 7A P&P 8 A P&P 4?
prev 22 Re#o#ina el puntero interno de una matriz
Kescripci"n
miFed pre5 > array imatriz ?
Devuelve el elemento de la matriz /ue est* en la posici-n anterior a la /ue apunta#a previamente el
puntero internoA o FALSE si no hay m*s elementos;
A5iso
i la matriz contiene elementos vac)osA esta (unci-n tam#i<n devolver* FALSE para dichos
elementos; Para recorrer adecuadamente una matriz /ue puede contener elementos vac)osA vea la
(unci-n each./;
pre5./ se comporta igual /ue ne+t./A eFcepto /ue re#o#ina el puntero interno una posici-n en lugar
de avanzarlo;
E'emplo !. E'emplo del uso de pre5./
<?php
$transport > array3M#ootM, MbiIeM, McarM, MplaneM9;
$mode > current3$transport9; // $mode > M#ootM;
$mode > next3$transport9; // $mode > MbiIeM;
$mode > next3$transport9; // $mode > McarM;
$mode > pre=3$transport9; // $mode > MbiIeM;
$mode > end3$transport9; // $mode > MplaneM;
?>
$ea tam#i<nC current./A end./ ne+t./ y reset./;
range
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
range 22 5rea una matriz /ue contiene un rango de elementos
Kescripci"n
array range > num#er #a'oA num#er alto PA num#er pasoQ ?
rango./ devuelve una matriz de elementos desde 1aUo hasta altoA am#os inclusive; i #a'o _ altoA la
secuencia ser* del mayor al menor;
Nue5o parmetro- +l par*metro opcional paso (ue aWadido en 4;3;3;
i un valor paso es dadoA <ste ser* usado como el incremento entre elementos en la secuencia; paso
de#er)a ser de(inido como un nBmero positivo; i no se especi(icaA paso tendr* un valor
predeterminado de 1;
E'emplo !. E'emplos de range./
<?php
// array32, 6, C, <, 1, 5, G, H, J, K, 62, 66, 6C9
#oreach 3ranEe32, 6C9 as $numero9 :
echo $numero;
;
// El parametro paso #ue introducido en 5.2.2
// array32, 62, C2, <2, 12, 52, G2, H2, J2, K2, 6229
#oreach 3ranEe32, 622, 629 as $numero9 :
echo $numero;
;
// +so de secuencias de caracteres introducidas en 1.6.2
// array3MaM, MbM, McM, MdM, MeM, M#M, MEM, MhM, MiM9;
#oreach 3ranEe3MaM, MiM9 as $letra9 :
echo $letra;
;
// array3McM, MbM, MaM9;
#oreach 3ranEe3McM, MaM9 as $letra9 :
echo $letra;
;
?>
Nota- Antes de P&P 8;1;3A range./ s-lo genera#a matrices de enteros incrementales; +l
soporte para secuencias de caracteres y matrices en decremento (ue aWadido en 8;1;3;
Los valores de secuencia de caracteres es*n limitados a una longitud de uno; i una
longitud superior a uno es ingresadaA solo se usa el primer caracter;
Atenci"n
+n versiones de P&P desde 8;1;3 hasta 8;7;0A range./ considera las cadenas num<ricas como
cadenas y no enteros; +n su lugarA ellas ser*n usadas para secuencias de caracteres; Por e'emploA
*;2;2* es tratado como *;*;
$ea tam#i<n shuffle./A array>fill./A y (oreach;
reset
>P&P 7A P&P 8 A P&P 4?
reset 22 Fi'a el puntero interno de una matriz a su primer elemento
Kescripci"n
miFed reset > array imatriz ?
reset./ re#o#ina el puntero interno de la matr6D a su primer elemento; % regresa el valor de ese
elementoA o FALSE si la matriz est* vac)a;
E'emplo !. E'emplo de reset./
<?php
$array > array3Mstep oneM, Mstep t8oM, Mstep threeM, Mstep #ourM9;

// by de#ault, the pointer is on the #irst element
echo current3$array9 . "<br />Vn"; // "step one"
// sIip t8o steps
next3$array9;
next3$array9;
echo current3$array9 . "<br />Vn"; // "step three"

// reset pointer, start aEain on step one
reset3$array9;
echo current3$array9 . "<br />Vn"; // "step one"

?>
$ea tam#i<nC current./A each./A ne+t./ y pre5./;
rsort
>P&P 7A P&P 8 A P&P 4?
rsort 22 Ordena una matriz en orden inverso
Kescripci"n
void rsort > array imatriz PA int sortZ(lagsQ ?
+sta (unci-n ordena una matriz en orden inverso >mayor a menor?;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo de rsort./
<?php
$#ruits > array3"lemon", "oranEe", "banana", "apple"9;
rsort3$#ruits9;
reset3$#ruits9;
8hile 3list3$Iey, $=al9 > each3$#ruits99 :
echo "$Iey > $=alVn";
;
?>
+l resultado del e'emplo seriaC
2 > oranEe
6 > lemon
C > banana
< > apple
Las (rutas han sido ordenadas en orden al(a#<tico inverso;
Puede modi(icar el comportamiento del orden usando el par*metro opcional sort_9laEsA para m*s
detalles vea sort./;
$ea tam#i<nC arsort./A asort./A Bsort./A sort./A y usort./;
shuffle
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
shu((le 22 Mezcla una matriz
Kescripci"n
void shuffle > array imatriz ?
+sta (unci-n mezcla >cam#ia aleatoriamente el orden de los elementos de? una matriz;
E'emplo !. E'emplo de shuffle./
<?php
$numeros > ranEe 36,C29;
srand 3time399;
shu##le 3$numeros9;
8hile 3list3, $numero9 > each 3$numeros99 :
echo "$numero ";
;
?>
Nota- A partir de P&P 8;0;3A no es necesario inicializar el generador de nBmeros
aleatorios con srand./ - mt>srand./A ya /ue esto se hace ahora autom*ticamente;
$ea tam#i<nC arsort./A asort./A Bsort./A rsort./A sort./ y usort./;
si6eof
sizeo( 22 Alias de count./
Kescripci"n
+sta (unci-n es un alias de count./;
sort
>P&P 7A P&P 8 A P&P 4?
sort 22 Ordena una matriz
Kescripci"n
void sort > array imatriz PA int sortZ(lagsQ ?
+sta (unci-n ordena una matriz; Los elementos estar*n ordenados de menor a mayor cuando la
(unci-n termine;
Nota- +sta (unci-n asigna nuevos )ndices en matr6D; +sto /uitar* cual/uier )ndice
eFistente /ue se haya aignadoA en vez de solo reordenar los )ndices;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo de sort./
<?php
$#ruits > array3"lemon", "oranEe", "banana", "apple"9;
sort3$#ruits9;
reset3$#ruits9;
8hile 3list3$Iey, $=al9 > each3$#ruits99 :
echo "#ruits)" . $Iey . "/ > " . $=al . "Vn";
;
?>
+l resultado del e'emplo seriaC
#ruits)2/ > apple
#ruits)6/ > banana
#ruits)C/ > lemon
#ruits)</ > oranEe
Las (rutas han sido ordenadas en orden al(a#<tico;
+l par*metro opcional sort_9laEs puede ser usado para modi(icar el comportamiento del
ordenamiento usando estos valoresC
,ipos de #anderas para el ordenamientoC
SORT_RE#ULAR 2 comparaci-n normal >no cam#ia los tipos?
SORT_NUMERIC 2 comparaci-n num<rica
SORT_STRIN# 2 comparaci-n por cadenas
SORT_LOCALE_STRIN# 2 compara elementos como cadenasA #asado en la posici-n actual;
Agregado en P&P 4;3;0;
Nota- +l segundo par*metro (ue agregado en P&P 8;
A5iso
,enga cuidado cuando ordene matrices con tipos de datos miFtos por/ue sort./ puede producir
resultados impredeci#les;
$ea tam#i<nC arsort./A asort./A Bsort./A natsort./A natcasesort./A rsort./A usort./A array>multisort
./ y uBsort./;
uasort
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
uasort 22 Ordena una matriz mediante una (unci-n de comparaci-n de(inida por el usuario y
mantiene la asociaci-n de )ndices
Kescripci"n
void uasort > array imatrizA (unction (uncZcomparar ?
+sta (unci-n ordena una matriz de modo /ue los )ndices de la misma mantengan su correlaci-n con
los elementos a los /ue est*n asociados; +sto se utiliza principalmente para ordenar matrices
asociativas en las /ue el orden de los elementos es importante; La (unci-n de comparaci-n es
de(inida por el usuario;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- $ea por (avor usort./ y uBsort./ para e'emplos de (unciones de comparaci-n
de(inidas por el usuario;
$ea tam#i< usort./A uBsort./A sort./A asort./A arsort./A Bsort./ y rsort./;
uBsort
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
u"sort 22 Ordena una matriz por claves mediante una (unci-n de(inida por el usuario
Kescripci"n
void uBsort > array imatrizA (unction (uncZcomparar ?
+sta (unci-n ordenar* las claves de una matriz utilizando una (unci-n de comparaci-n suministrada
por el usuario; i la matriz a ordenar necesita utilizar un criterio poco trivialA esta es la (unci-n /ue
de#er* usar;
Function cmp_9unct6on should accept tEo parameters Ehich Eill #e (illed #y pairs o( arra? "eys;
,he comparison (unction must return an integer less thanA e/ual toA or greater than zero i( the (irst
argument is considered to #e respectively less thanA e/ual toA or greater than the second;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo de uBsort./
<?php
#unction cmp3$a, $b9
:
i# 3$a >> $b9 :
return 2;
;
return 3$a > $b9 ? F6 @ 6;
;
$a > array31 >> "#our", < >> "three", C2 >> "t8enty", 62 >> "ten"9;
uIsort3$a, "cmp"9;
8hile 3list3$Iey, $=alue9 > each3$a99 :
echo "$Iey@ $=alueVn";
;
?>
+l resultado del e'emplo seriaC
C2@ t8enty
62@ ten
1@ #our
<@ three
$ea tam#i<nC usort./A uasort./A sort./A asort./A arsort./A Bsort./A natsort./A y rsort./;
usort
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
usort 22 Ordena una matriz por sus valores usando una (unci-n de comparaci-n de(inida por el
usuario
Kescripci"n
#ool usort > array imatrizA call#ac" (uncionZcomp ?
+sta (unci-n ordenar* una matriz por sus valores usando una (unci-n de comparaci-n de(inida por
el usuario; i la matriz /ue desea ordenar necesita ser ordenada mediante ciertos criterios especialesA
es #uena idea usar esta (unci-n;
La (unci-n de comparaci-n de#e devolver un entero menor /ueA igualA o mayor /ue cero si el primer
argumento es considerado menorA igualA o mayor /ue el segundoA respectivamente;
Nota- i dos miem#ros son comparados como igualesA su orden en la matriz resultante
es inde(inido; &asta P&P 8;3;KA las (unciones de(inidas por el usuario manten)an el
orden original para esos elementosA pero con el nuevo algoritmo de ordenamiento
introducido en 8;1;3 este ya no es el casoA ya /ue no hay (orma de hacerlo de manera
e(iciente;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo de usort./
<?php
#unction cmp3$a, $b9
:
i# 3$a >> $b9 :
return 2;
;
return 3$a < $b9 ? F6 @ 6;
;
$a > array3<, C, 5, G, 69;
usort3$a, "cmp"9;
8hile 3list3$cla=e, $=alor9 > each3$a99 :
echo "$cla=e@ $=alorVn";
;
?>
+ste e'emplo producir)a la salidaC
2@ 6
6@ C
C@ <
<@ 5
1@ G
Nota- O#viamente en este e'emplo trivialA la (unci-n sort./ ser)a m*s apropiada;
E'emplo *. E'emplo de usort./ usando una matri6 multi(dimensional
<?php
#unction cmp3$a, $b9
:
return strcmp3$a)"#ruta"/, $b)"#ruta"/9;
;
$#rutas)2/)"#ruta"/ > "limones";
$#rutas)6/)"#ruta"/ > "bananos";
$#rutas)C/)"#ruta"/ > "Eranadillas";
usort3$#rutas, "cmp"9;
8hile 3list3$cla=e, $=alor9 > each3$#rutas99 :
echo "V$#rutas)$cla=e/@ " . $=alor)"#ruta"/ . "Vn";
;
?>
5uando se ordena una matriz multi2dimensionalA 'a y '1 contienen re(erencias al primer )ndice de
la matriz;
+ste e'emplo producir)a la salidaC
$#rutas)2/@ bananos
$#rutas)6/@ Eranadillas
$#rutas)C/@ limones
E'emplo 7. E'emplo de usort./ usando una funci"n miembro de un ob'eto
<?php
class ?bjrueba :
=ar $nombre;
#unction ?bjrueba3$nombre9
:
$thisF>nombre > $nombre;
;
/W Esta es la #uncion estatica de comparacion@ W/
#unction cmp%obj3$a, $b9
:
$al > strtolo8er3$aF>nombre9;
$bl > strtolo8er3$bF>nombre9;
i# 3$al >> $bl9 :
return 2;
;
return 3$al > $bl9 ? [6 @ F6;
;
;
$a)/ > ne8 ?bjrueba3"c"9;
$a)/ > ne8 ?bjrueba3"b"9;
$a)/ > ne8 ?bjrueba3"d"9;
usort3$a, array3"?bjrueba", "cmp%obj"99;
#oreach 3$a as $item9 :
echo $itemF>nombre . "Vn";
;
?>
+ste e'emplo producir)a la salidaC
b
c
d
$ea tam#i<n uasort./A uBsort./A sort./A asort./A arsort./ABsort./A natsort./A and rsort./;
IC. ;unciones Aspell XdeprecatedY
Introducci"n
La (unci-n aspell./ permite compro#ar la ortogra()a de una pala#ra y o(rece alternativas a la misma;
Nota- +sta eFtensi-n ha sido removida de +!+ y no se encuentra disponi#le a partir de
P&P 8;7;3; i /uereis utilizar capacidades de compro#aci-n ortogr*(ica en phpA usar
pspell; @tiliza la #i#lioteca pspell y (unciona con versiones recientes de aspell;
Me?uirimientos
aspell (unciona solamente con versiones muy antiguas >hasta la ;0:;V mas - menos? de la #i#lioteca
aspell; Ni este m-dulo ni las versiones de la #i#lioteca aspell se soportan actualmente; Necesitais la
#i#lioteca aspellA disponi#le en C httpCDDaspell;source(orge;netD;
Instalaci"n
+n P&P 8A estas (unciones se encuentran disponi#les Bnicamente si P&P (ue con(igurado con ==
76th=aspell:)D0R.;
Cer tambi%n
$er tam#ien pspell;
Tabla de contenidos
aspellZchec"2raE 22 5omprue#a una pala#ra sin cam#iarla - intentar arreglarla PdeprecatedQ
aspellZchec" 22 5omprue#a una pala#raPdeprecatedQ
aspellZneE 22 Lee un nuevo diccionario PdeprecatedQ
aspellZsuggest 22 ugiere la ortogra()a para una pala#ra PdeprecatedQ
aspell>checB(ra3
>P&P 7_^ 7;3;:A P&P 8 `^ 8;0;7?
aspellZchec"2raE 22 5omprue#a una pala#ra sin cam#iarla - intentar arreglarla PdeprecatedQ
Kescripci"n
#oolean aspell>checB>ra3 > int dictionaryZlin"A string Eord ?
aspell>checB>ra3./ comprue#a la ortogra()a de una pala#raAsin cam#iarla ni intentar arreglarla est<
#ien o mal; i est* #ienA devuelve cierto >TRUE?A si no lo est*A devuelve (also>FALSE?;
E'emplo !. aspell>checB>ra3
$aspell%linI > aspell%ne83"enElish"9;
i# 3aspell%checI%ra83$aspell%linI, "test"99 :
echo "*his is a =alid spellinE";
; else :
echo "&orry, 8ronE spellinE";
;
aspell>checB
>P&P 7_^ 7;3;:A P&P 8 `^ 8;0;7?
aspellZchec" 22 5omprue#a una pala#raPdeprecatedQ
Kescripci"n
#oolean aspell>checB > int dictionaryZlin"A string Eord ?
aspell>checB./ comprue#a la ortogra()a de una pala#raA y devuelve cierto>TRUE? si la ortogra()a es
correcta A(also >FALSE? si no lo es ;
E'emplo !. aspell>checB
$aspell%linI > aspell%ne83"enElish"9;
i# 3aspell%checI3$aspell%linI, "testt"99 :
echo "*his is a =alid spellinE";
; else :
echo "&orry, 8ronE spellinE";
;
aspell>ne3
>P&P 7_^ 7;3;:A P&P 8 `^ 8;0;7?
aspellZneE 22 Lee un nuevo diccionario PdeprecatedQ
Kescripci"n
int aspell>ne3 > string masterA string personal ?
aspell>ne3./ A#re un nuevo diccionario devolviendo el identi(icador de este para ser utilizado en
otras (unciones ortogr*(icas;
E'emplo !. Nue5o>diccionario
$aspell%linI > aspell%ne83"enElish"9;
aspell>suggest
>P&P 7_^ 7;3;:A P&P 8 `^ 8;0;7?
aspellZsuggest 22 ugiere la ortogra()a para una pala#ra PdeprecatedQ
Kescripci"n
array aspell>suggest > int dictionaryZlin"A string Eord ?
aspell>suggest./ devuelve una matriz con posi#les correciones ortogr*(icas para la pala#ra dada;
E'emplo !. aspell>suggest
$aspell%linI > aspell%ne83"enElish"9;
i# 3!aspell%checI3$aspell%linI, "test"99 :
$suEEestions > aspell%suEEest3$aspell%linI, "test"9;
#oreach 3$suEEestions as $suEEestion9 :
echo "ossible spellinE@ $suEEestion<br>Vn";
;
;
C. ;unciones matemticas de precisi"n
arbitraria 1CMath
Introducci"n
Para operaciones matem*ticas de precisi-n ar#itrariaA P&P tiene disponi#le la 5alculadora Binaria
/ue soporta nBmeros de cual/uier tamaWo y precisi-nA representados como cadenas de teFto;
Me?uirimientos
Desde P&P 8;3;8A li##cmath se encuentra incorporada en P&P; No se necesitan #i#liotecas eFternas
para esta eFtensi-n;
Instalaci"n
+stas (unciones solo est*n disponi#les si P&P (ue con(igurado con ==ena1le=1cmath; +n P&P 7A
estas (unciones s-lo est*n disponi#les si P&P no (ue con(igurado con ==#6sa1le=1cmath;
La versi-n para LindoEs de +!+ tiene soporte nativo para esta eFtensi-n; No se necesita cargar
ninguna eFtensi-n adicional para usar estas (unciones;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones de configuraci"n de 1CMath
Nombre
Por
defecto
Modificable
#cmath;scal
e
3 P&PZ.N.ZALL
Para m*s detalles y la de(inici-n de las constantes P&PZ.N.ZVA consulte ini>set./;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
1cmath.scale integer
NBmero de d)gitos decimales para todas las (unciones de #cmath; $ea tam#i<n bcscale./;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
#cadd 22 uma dos nBmeros de precisi-n ar#itriaria;
#ccomp 22 5ompara dos nBmeros de precisi-n ar#itraria;
#cdiv 22 Divide dos nBmeros de precisi-n ar#itraria;
#cmod 22 O#tiene el m-dulo de un nBmero de precisi-n ar#itraria;
#cmul 22 Multiplica dos nBmeros de precisi-n ar#itraria;
#cpoE 22 +leva un nBmero de precisi-n ar#itraria a otro;
#cpoEmod 22 +leva un nBmero de precisi-n ar#itraria a otroA reducido por un m-dulo especi(icado
#cscale 22 Fi'a el par*metro de escala por de(ecto para todas las (unciones matem*ticas #c;
#cs/rt 22 O#tiene la ra)z cuadrada de un nBmero de precisi-n ar#itraria;
#csu# 22 Resta un nBmero de precisi-n ar#itraria de otro;
bcadd
>P&P 7A P&P 8 A P&P 4?
#cadd 22 uma dos nBmeros de precisi-n ar#itriaria;
Kescripci"n
string bcadd > string operando iz/A string operando der PA int escalaQ ?
uma el operan#o 6D@ con el operan#o #er y devuelve la suma en una cadena de teFto; +l par*metro
opcional escala se usa para (i'ar el nBmero de d)gitos tras el punto decimal /ue aparecer*n en el
resultado;
E'emplo !. E'emplo bcadd./
<?php
$a > 6.C<1;
$b > 5;
echo bcadd3$a, $b9; // G
echo bcadd3$a, $b, 19; // G.C<12
?>
$ea tam#i<n bcsub./;
bccomp
>P&P 7A P&P 8 A P&P 4?
#ccomp 22 5ompara dos nBmeros de precisi-n ar#itraria;
Kescripci"n
int bccomp > string operando iz/A string operando der PA int escalaQ ?
5ompara el operan#o 6D@ con el operan#o #er y devuelve el resultado como un entero; +l par*metro
opcional escala se usa para (i'ar el nBmero de d)gitos tras el punto decimal /ue se utilizar*n en la
comparaci-n; +l valor devuelto es 3 si los dos operandos son iguales; i el operan#o 6D@ es mayor
/ue el operan#o #er el valor devuelto es R1 y si el operan#o 6D@ es menor /ue el operan#o #er el
valor devuelto es 21;
E'emplo !. E'emplo bccomp./
<?php
echo bccomp3M6M, MCM9 . "Vn";
echo bccomp3M6.22226M, M6M, <9 . "Vn";
echo bccomp3M6.22226M, M6M, 59;
?>
Resultado de este e'emploC
F6
2
6
bcdi5
>P&P 7A P&P 8 A P&P 4?
#cdiv 22 Divide dos nBmeros de precisi-n ar#itraria;
Kescripci"n
string bcdi5 > string operando iz/A string operando der PA int escalaQ ?
Divide el operan#o 6D@ por el operan#o #er y devuelve el resultado; +l par*metro opcional escala
(i'a el nBmero de d)gitos tras el punto decimal a usar en el resultado;
E'emplo !. E'emplo bcdi5./
<?php
echo bcdi=3625, G.55K5H, <9; // 6G.22H
?>
$er tam#i<n bcmul./;
bcmod
>P&P 7A P&P 8 A P&P 4?
#cmod 22 O#tiene el m-dulo de un nBmero de precisi-n ar#itraria;
Kescripci"n
string bcmod > string operando iz/A string modulo ?
O#tiene el m-dulo del operan#o 6D@ usando mo#ulo;
E'emplo !. E'emplo bcmod./
<?php
echo bcmod31, C9 . "Vn";
echo bcmod3C, 19;
?>
Resultado de este e'emploC
2
C
$er tam#i<n bcdi5./;
bcmul
>P&P 7A P&P 8 A P&P 4?
#cmul 22 Multiplica dos nBmeros de precisi-n ar#itraria;
Kescripci"n
string bcmul > string operando iz/A string operando der PA int escalaQ ?
Multiplica el operan#o 6D@ por el operan#o #er y devuelve el resultado; +l par*metro opcional
escala (i'a el nBmero de d)gitos tras el punto decimal del resultado;
E'emplo !. E'emplo bcmul./
<?php
echo bcmul36.<1H1H1H1H1H, <5, <9 . "Vn";
echo bcmul3C, 19;
?>
Resultado de este e'emploC
1H.6GC
J
$er tam#i<n bcdi5./;
bcpo3
>P&P 7A P&P 8 A P&P 4?
#cpoE 22 +leva un nBmero de precisi-n ar#itraria a otro;
Kescripci"n
string bcpo3 > string FA string y PA int escalaQ ?
+leva 8 a la potencia de ?; +l par*metro opcional escala se puede usar para (i'ar el nBmero de
d)gitos tras el punto decimal del resultado;
E'emplo !. E'emplo bcpo3./
<?php
echo bcpo831.C, <, C9; // H1.2J
?>
$er tam#i<n bcpo3mod./ y bcs?rt./
bcpo3mod
>P&P 4?
#cpoEmod 22 +leva un nBmero de precisi-n ar#itraria a otroA reducido por un m-dulo especi(icado
Kescripci"n
string bcpo3mod > string FA string yA string m-dulo PA int escalaQ ?
@tiliza el m<todo de eFponenciaci-n2r*pida para elevar 8 a la potencia ? con respecto al m-dulo
m`#ulo; La escala opcional puede ser usada para esta#lecer el nBmero de d)gitos despu<s de la
coma decimal en el resultado;
Nota- Dado /ue <ste m<todo usa la operaci-n de m-duloA los nBmeros no2naturales
pueden dar resultados inesperados; @n nBmero natural es cual/uier entero positivo
di(erente de cero;
E'emplos
Las siguientes dos declaraciones son id<nticas (uncionalmente; in em#argoA la versi-n /ue usa
bcpo3mod./ se e'ecuta en menos tiempo y puede aceptar par*metros m*s grandes;
<?php
$a > bcpo8mod3$x, $y, $mod9;
$b > bcmod3bcpo83$x, $y9,$mod9;
// $a y $b poseen =alores iEuales.
?>
Cer tambi%n
bcpo3./A y bcmod./;
bcscale
>P&P 7A P&P 8 A P&P 4?
#cscale 22 Fi'a el par*metro de escala por de(ecto para todas las (unciones matem*ticas #c;
Kescripci"n
#ool bcscale > int escala ?
+sta (unci-n (i'a el par*metro de escala por de(ecto para las su#siguientes (unciones matem*ticas #c
/ue no especi(ican dicho par*metro eFpl)citamente; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo bcscale./
<?php
// de#ault scale @ <
bcscale3<9;
echo bcdi=3625, G.55K5H9; // 6G.22H
// this is the same 8ithout bcscale39
echo bcdi=3625, G.55K5H, <9; // 6G.22H
?>
bcs?rt
>P&P 7A P&P 8 A P&P 4?
#cs/rt 22 O#tiene la ra)z cuadrada de un nBmero de precisi-n ar#itraria;
Kescripci"n
string bcs?rt > string operandoA int escala ?
Devuelve la ra)z cuadrada del operan#o; +l par*metro opcional escala (i'a el nBmero de d)gitos tras
el punto decimal del resultado;
E'emplo !. E'emplo bcs?rt./
<?php
echo bcsQrt3C, <9; // 6.161
?>
$er tam#i<n bcpo3./;
bcsub
>P&P 7A P&P 8 A P&P 4?
#csu# 22 Resta un nBmero de precisi-n ar#itraria de otro;
Kescripci"n
string bcsub > string operando iz/A string operando der PA int escalaQ ?
Resta el operan#o #er del operan#o 6D@ y devuelve el resultado en una cadena; +l par*metro
opcional escala se utiliza para (i'ar el nBmero de d)gitos tras el punto decimal del resultado;
E'emplo !. E'emplo bcsub./
<?php
$a > 6.C<1;
$b > 5;

echo bcsub3$a, $b9; // F<
echo bcsub3$a, $b, 19; // F<.HGG2
?>
$er tam#i<n bcadd./;
CI. PHP bytecode Compiler
Introducci"n
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
Bcompiler Eas Eritten (or tEo reasonsC
,o encode entire script in a proprietary P&P application
,o encode some classes andDor (unctions in a proprietary P&P application
,o ena#le the production o( php2gt" applications that could #e used on client des"topsA Eithout the
need (or a php;eFe;
,o do the (easi#ility study (or a P&P to 5 converter
,he (irst o( these goals is achieved using the bcompiler>3rite>header./A bcompiler>3rite>file./
and bcompiler>3rite>footer./ (unctions; ,he #ytecode (iles can #e Eritten as either uncompressed
or plain; ,o use the generated #ytecodeA you can simply include it Eith include or re/uire
statements;
,he second o( these goals is achieved using the bcompiler>3rite>header./A
bcompiler>3rite>class./A bcompiler>3rite>footer./A bcompiler>read./A and bcompiler>load./
(unctions; ,he #ytecode (iles can #e Eritten as either uncompressed or plain; ,he bcompiler>load./
reads a #zip compressed #ytecode (ileA Ehich tends to #e 1D7 o( the size o( the original (ile;
,o create +J+ type (ilesA #compiler has to #e used Eith a modi(ied sapi (ile or a version o( P&P
Ehich has #een compiled as a shared li#rary; .n this scenarioA #compiler reads the compressed
#ytecode (rom the end o( the eFe (ile;
#compiler can improve per(ormance #y a#out 73b Ehen used Eith uncompressed #ytecodes only;
But "eep in mind that uncompressed #ytecode can #e up to 4 times larger than the original source
code; @sing #ytecode compression can save your spaceA #ut decompression re/uires much more
time than parsing a source; #compiler also does not do any #ytecode optimizationA this could #e
added in the (uture;;;
.n terms o( code protectionA it is sa(e to say that it Eould #e impossi#le to recreate the eFact source
code that it Eas #uilt (romA and Eithout the accompanying source code comments; .t Eould
e((ectively #e useless to use the #compiler #ytecodes to recreate and modi(y a class; &oEever it is
possi#le to retrieve data (rom a #compiled #ytecode (ile 2 so donHt put your private passEords or
anything in it;
Instalaci"n
short installation noteC
%ou need at least P&P 8;7; (or the compression to Eor"
,o install on P&P 8;7 and later at the uniF command prompt type pear install bcompiler
,o install on LindoEsA until the #inary pac"age distri#ution mechanism is (inished please
search the archives o( the pear2general mailing list (or pre2#uilt pac"ages; >or send an email
to it i( you could not (ind a re(erence?
,o install on older versions you need to ma"e some slight changes to the #uild;
untar the bcompiler.tE0 archive into php1/ext;>Get it directly (rom P+5L
httpCDDpecl;php;netDgetD#compiler?
.( the neE directory is noE called something li"e #compiler23;FA then you should rename it
to #compiler >eFcept you only Eant to #uild it as sel(2contained php2module?;
.( you are using versions #e(ore P&P 8;7A the you Eill need to copy the
"aIe#ile.in.old to "aIe#ile.in and con#iE.m1.old to con#iE.m1;
run phpi6e in ext/bcompiler
run .Abuildconf in php1
run configure Eith ==ena1le=1comp6ler >and your other options?
maBeZ maBe install
thatHs it;
Contact Information
.( you have commentsA #ug(iFesA enhancements or Eant to help developing this #eastA you can drop
me a mail at alanZ"Gphp;net; Any help is very Eelcome;
Tabla de contenidos
#compilerZloadZeFe 22 Reads and creates classes (rom a #compiler eFe (ile
#compilerZload 22 Reads and creates classes (rom a #z compressed (ile
#compilerZparseZclass 22 Reads the #ytecodes o( a class and calls #ac" to a user (unction
#compilerZread 22 Reads and creates classes (rom a (ilehandle
#compilerZEriteZclass 22 Lrites an de(ined class as #ytecodes
#compilerZEriteZconstant 22 Lrites a de(ined constant as #ytecodes
#compilerZEriteZeFeZ(ooter 22 Lrites the the start posA and sig to the end o( a eFe type (ile
#compileZEriteZ(ile 22 Lrites a php source (ile as #ytecodes
#compilerZEriteZ(ooter 22 Lrites the single character hF33 to indicate +nd o( compiled data
#compilerZEriteZ(unction 22 Lrites an de(ined (unction as #ytecodes
#compilerZEriteZ(unctionsZ(romZ(ile 22 Lrites all (unctions de(ined in a (ile as #ytecodes
#compilerZEriteZheader 22 Lrites the #compiler header
bcompiler>load>e+e
>no version in(ormationA might #e only in 5$?
#compilerZloadZeFe 22 Reads and creates classes (rom a #compiler eFe (ile
Kescription
#ool bcompiler>load>e+e > string (ilename ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Reads data (rom a #compiler eFe (ile and creates classes (rom the #ytecodes
E'emplo !. bcompiler>load./ e+ample
<?php
bcompiler%load%exe3"/tmp/example.exe"9;
print%r3Eet%de#ined%classes399;
?>
bcompiler>load
>no version in(ormationA might #e only in 5$?
#compilerZload 22 Reads and creates classes (rom a #z compressed (ile
Kescription
#ool bcompiler>load > string (ilename ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Nota- Please use include or re/uire statements to parse #ytecodesA itHs more porta#le and
convenient Eay than using this (unction;
Reads data (rom a #zcompressed (ile and creates classes (rom the #ytecodes; Please note that this
(unction EonHt eFecute script #ody code contained in the #ytecode (ile;
E'emplo !. bcompiler>load./ e+ample
<?php
bcompiler%load3"/tmp/example"9;
print%r3Eet%de#ined%classes399;
?>
bcompiler>parse>class
>no version in(ormationA might #e only in 5$?
#compilerZparseZclass 22 Reads the #ytecodes o( a class and calls #ac" to a user (unction
Kescription
#ool bcompiler>parse>class > string classA string call#ac" ?
Nota- ,his (unction has #een removed (rom #compiler and is no longer availa#le as o(
#compiler 3;4;
reads the #ytecodes o( a class and calls #ac" to a user (unction
E'emplo !. bcompiler>parse>class./ e+ample
<?php
#unction readZyteRodes3$data9 :
print%r3$data9;
;
bcompiler%parse%class3"LZ","readZyteRodes"9;
?>
bcompiler>read
>no version in(ormationA might #e only in 5$?
#compilerZread 22 Reads and creates classes (rom a (ilehandle
Kescription
#ool bcompiler>read > resource (ilehandle ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Nota- Please use include or re/uire statements to parse #ytecodesA itHs more porta#le and
convenient Eay than using this (unction;
Reads data (rom a open (ile handle and creates classes (rom the #ytecodes; Please note that this
(unction EonHt eFecute script #ody code contained in the #ytecode (ile;
E'emplo !. bcompiler>read./ e+ample
<?php
$#h > #open3"/tmp/example","r"9;
bcompiler%read3$#h9;
#close3$#h9;
print%r3Eet%de#ined%classes399;
?>
bcompiler>3rite>class
>no version in(ormationA might #e only in 5$?
#compilerZEriteZclass 22 Lrites an de(ined class as #ytecodes
Kescription
#ool bcompiler>3rite>class > resource (ilehandleA string className PA string eFtendsQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
,his reads the #ytecodes (rom P&P (or an eFisting classA and Erites them to the open (ile handleA .t
does not per(orm dependency chec"ingA so ma"e sure you Erite the classes in an order that Eill not
result in an Hunde(ined classH occurring Ehen you load it;
E'emplo !. bcompiler>3rite>class./ e+ample
<?php
$#h > #open3"/tmp/example","8"9;
bcompiler%8rite%header3$#h9;
bcompiler%8rite%class3$#h,"LZ"9;
// you must 8rite LZ%common be#ore LZ%mysQl, as LZ%mysQl extends LZ%common.
bcompiler%8rite%class3$#h,"LZ%common"9;
bcompiler%8rite%class3$#h,"LZ%mysQl"9;
bcompiler%8rite%#ooter3$#h9;
#close3$#h9;
?>
ee also bcompiler>3rite>header./A and bcompiler>3rite>footer./;
bcompiler>3rite>constant
>no version in(ormationA might #e only in 5$?
#compilerZEriteZconstant 22 Lrites a de(ined constant as #ytecodes
Kescription
#ool bcompiler>3rite>constant > resource (ilehandleA string constantName ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
,his (unction reads the #ytecodes (rom P&P (or an eFisting constantA and Erites them to the open
(ile handle;
E'emplo !. bcompiler>3rite>constant./ e+ample
<?php
de#ine3""?L+OE%",X", <29;
$#h > #open3"/tmp/example","8"9;
bcompiler%8rite%header3$#h9;
bcompiler%8rite%constant3$#h,""?L+OE%",X"9;
bcompiler%8rite%#ooter3$#h9;
#close3$#h9;
?>
ee also bcompiler>3rite>header./A and bcompiler>3rite>footer./;
bcompiler>3rite>e+e>footer
>no version in(ormationA might #e only in 5$?
#compilerZEriteZeFeZ(ooter 22 Lrites the the start posA and sig to the end o( a eFe type (ile
Kescription
#ool bcompiler>3rite>e+e>footer > resource (ilehandleA int startpos ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
An +J+ >or sel( eFecuta#le? (ile consists o( 7 partsA
,he stu# >eFecuta#le codeA e;g; a compiled 5 program? that loads P&P interpreterA #compiler
eFtensionA stored Bytecodes and initiates a call (or the speci(ied (unction >e;g; main? or class
method >e;g; mainCCmain?
,he Bytecodes >uncompressed only (or the moment?
,he #compiler +J+ (ooter
,he startpos is the (ile position at Ehich the Bytecodes startA and can #e o#tained using (tell>Y(h?;
,o o#tain a suita#le stu# you can compile phpZem#ed2#ased stu# phpe;c located in the
eFamplesDem#ed directory on #compilerHs 5$;
E'emplo !. bcompiler>3rite>footer./ e+ample
<?php
/W creatinE the output #ile 3example.exe9 W/
$#h > #open3"example.exe", "8"9;
/W 69 8ritinE a stub 3phpe.exe9 W/
$si0e > #ilesi0e3"phpe.exe"9;
$#r > #open3"phpe.exe", "r"9;
#8rite3$#h, #read3$#r, $si0e9, $si0e9;
$startpos > #tell3$#h9;
/W C9 8ritinE bytecodes W/
bcompiler%8rite%header3$#h9;
bcompiler%8rite%class3$#h, "myclass"9;
bcompiler%8rite%#unction3$#h, "main"9;
bcompiler%8rite%#ooter3$#h9;
/W <9 8ritinE EXE #ooter W/
bcompiler%8rite%exe%#ooter3$#h, $startpos9;
/W closinE the output #ile W/
#close3$#h9;
?>
ee also bcompiler>3rite>header./A bcompiler>3rite>class./A and bcompiler>3rite>footer./;
bcompile>3rite>file
>no version in(ormationA might #e only in 5$?
#compileZEriteZ(ile 22 Lrites a php source (ile as #ytecodes
Kescription
#ool bcompiler>3rite>file > resource (ilehandleA string (ilename ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
,his (unction complies speci(ied source (ile into #ytecodesA and Erites them to the open (ile handle;
E'emplo !. bcompiler>3rite>file./ e+ample
<?php
$#h > #open3"example.phb", "8"9;
bcompiler%8rite%header3$#h9;
bcompiler%8rite%#ile3$#h, "example.php"9;
bcompiler%8rite%#ooter3$#h9;
#close3$#h9;
/W the #ollo8inE should be Dalent@
include "example.php";
and
include "example.phb";
W/
?>
ee also bcompiler>3rite>header./A and bcompiler>3rite>footer./;
bcompiler>3rite>footer
>no version in(ormationA might #e only in 5$?
#compilerZEriteZ(ooter 22 Lrites the single character hF33 to indicate +nd o( compiled data
Kescription
#ool bcompiler>3rite>footer > resource (ilehandle ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Lrites the a single character hF33 to indicate +nd o( compiled data
E'emplo !. bcompiler>3rite>footer./ e+ample
<?php
$#h > #open3"/tmp/example","8"9;
bcompiler%8rite%header3$#h9;
bcompiler%8rite%class3$#h,"LZ"9;
bcompiler%8rite%class3$#h,"LZ%common"9;
bcompiler%8rite%#ooter3$#h9;
#close3$#h9;
?>
ee also bcompiler>3rite>header./A and bcompiler>3rite>header./;
bcompiler>3rite>function
>no version in(ormationA might #e only in 5$?
#compilerZEriteZ(unction 22 Lrites an de(ined (unction as #ytecodes
Kescription
#ool bcompiler>3rite>function > resource (ilehandleA string (unctionName ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
,his reads the #ytecodes (rom P&P (or an eFisting (unctionA and Erites them to the open (ile handle;
Order is not importantA >eg; i( (unction # uses (unction aA and you compile it li"e the eFample #eloEA
it Eill Eor" per(ectly OS?
E'emplo !. bcompiler>3rite>function./ e+ample
<?php
$#h > #open3"/tmp/example","8"9;
bcompiler%8rite%header3$#h9;
bcompiler%8rite%#unction3$#h,"my%#unction%a"9;
bcompiler%8rite%#unction3$#h,"my%#unction%b"9;
bcompiler%8rite%#ooter3$#h9;
#close3$#h9;
?>
ee also bcompiler>3rite>header./A and bcompiler>3rite>footer./;
bcompiler>3rite>functions>from>file
>no version in(ormationA might #e only in 5$?
#compilerZEriteZ(unctionsZ(romZ(ile 22 Lrites all (unctions de(ined in a (ile as #ytecodes
Kescription
#ool bcompiler>3rite>functions>from>file > resource (ilehandleA string (ileName ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
,his (unction searches (or all (unctions declared in the given (ileA and Erites their correspondent
#ytecodes to the open (ile handle; AlEays remem#er to includeDre/uire the (ile you intend to
compile;
E'emplo !. bcompiler>3rite>functions>from>file./ e+ample
<?php
reQuire3Mmodule.phpM9;
$#h > #open3"/tmp/example","8"9;
bcompiler%8rite%header3$#h9;
bcompiler%8rite%#unctions%#rom%#ile3$#h,Mmodule.phpM9;
bcompiler%8rite%#ooter3$#h9;
#close3$#h9;
?>
ee also bcompiler>3rite>header./A and bcompiler>3rite>footer./;
bcompiler>3rite>header
>no version in(ormationA might #e only in 5$?
#compilerZEriteZheader 22 Lrites the #compiler header
Kescription
#ool bcompiler>3rite>header > resource (ilehandle PA string EriteZverQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Lrites the header part o( a #compiler (ile; Optional second parameter can #e used to Erite #ytecode
in a previously used (ormatA so that you can use it Eith older versions o( #compiler;
E'emplo !. bcompiler>3rite>header./ e+ample
<?php
$#h > #open3"/tmp/example","8"9;
bcompiler%8rite%header3$#h9;
bcompiler%8rite%class3$#h,"LZ"9;
bcompiler%8rite%#ooter3$#h9;
#close3$#h9;
?>
ee also bcompiler>3rite>file./A bcompiler>3rite>class./A bcompiler>3rite>function./A and
bcompiler>3rite>footer./;
CII. ;unciones de compresi"n 16ip*
Introducci"n
Las (unciones #zip0 son usadas para leer y escri#ir de (orma transparenteA (icheros comprimidos
#zip0 >;#z0?
Me?uirimientos
+ste m-dulo usa las (unciones de la #i#lioteca #zip0 de !ulian eEard; este m-dulo re/uiere
#zip0Dli##zip0 version _^ 1;3;F;
Instalaci"n
+l soporte para #zip0 en P&P no est* ha#ilitado por de(ecto; Necesita usar el par*metro de
con(iguraci-n ==76th=1D2):D0R. a la hora de compilar P&P para ha#ilitar el soporte para #zip0;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n de(ine un tipo de recursoC un puntero de (ichero /ue identi(ica el (ichero #z0 con el
/ue se va a tra#a'ar;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
E'emplos
+ste e'emplo a#re un (ichero temporalA escri#e una cadena literal en el y presenta el contenido de
dicho (ichero;
E'emplo !. E'emplo simple de b6ip*
<?php
$#ilename > "/tmp/test#ile.b0C";
$str > "*his is a test strinE.Vn";
// open #ile #or 8ritinE
$b0 > b0open3$#ilename, "8"9;
// 8rite strinE to #ile
b08rite3$b0, $str9;
// close #ile
b0close3$b09;
// open #ile #or readinE
$b0 > b0open3$#ilename, "r"9;
// read 62 characters
print b0read3$b0, 629;
// output until end o# the #ile 3or the next 62C1 char9 and close it.
print b0read3$b09;
b0close3$b09;
?>
Tabla de contenidos
#zclose 22 5ierra un archivo #zip0
#zcompress 22 5omprime una cadena a una (orma de datos codi(icados #zip0
#zdecompress 22 Descomprime datos codi(icados con #zip0
#zerrno 22 Regresa un nBmero de error #zip0
#zerror 22 Regresa el nBmero y la cadena de error #zip0 en una matriz
#zerrstr 22 Regresa una cadena de error de #zip0
#z(lush 22 Fuerza la escritura de todo los datos en el #u((er
#zopen 22 A#re un archivo comprimido #zip0
#zread 22 Lectura segura de archivo #zip0 #inario
#zErite 22 +scritura segura de archivo #zip0 #inario
b6close
>P&P 8 _^ 8;3;8A P&P 4?
#zclose 22 5ierra un archivo #zip0
Kescripci"n
int b6close > resource #z ?
5ierra el archivo #zip0 re(erenciado por el apuntador 1D;
:ista de parmetros
1D
+l apuntador del archivo; +ste de#e ser v*lido y de#e apuntar a un archivo a#ierto
eFitosamente por b6open./;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
b6open./
b6compress
>P&P 8 _^ 8;3;8A P&P 4?
#zcompress 22 5omprime una cadena a una (orma de datos codi(icados #zip0
Kescripci"n
cadena b6compress > cadena (uente PA int tamaWZdeZ#lo/ue PA int (actorQQ ?
b6compress./ comprime la cadena dada y la regresa como datos codi(icados #zip0;
:ista de parmetros
9uente
La cadena a ser comprimida;
tamaa_#e_1lo@ue
+speci(ica el tamaWo de #lo/ue a ser usado durante la compresi-n y de#e ser un nBmero entre
1 y 9A dando 9 la me'or compresi-nA pero usando m*s recursos para hacerlo; tamaa_#e_1lo@ue
tie#e como valor por de(ecto 8;
9actor
5ontrola como la (ase de compresi-n se comporta cuando se presenta el peor casoA altamente
repetitivo de entrada de datos; +l valor puede estar entre 3 y 043A siendo 3 un caso especial y
73 el valor por de(ecto;
in importar el 9actorA la salida generada es la misma;
Calores retornados
La cadena comprimida;
E'emplos
E'emplo !. Comprimiendo datos
<?php
$str > "sample data";
$b0str > b0compress3$str, K9;
echo $b0str;
?>
Cer tambi%n
b6decompress./
b6decompress
>P&P 8 _^ 8;3;8A P&P 4?
#zdecompress 22 Descomprime datos codi(icados con #zip0
Kescripci"n
string b6decompress > cadena (uente PA int smallQ ?
b6decompress./ descomprime los datos dados /ue contengan datos codi(icados #zip0;
:ista de parmetros
9uente
La cadena a descomprimir;
small
i TRUEA ser* usado un algoritmo de descompresi-n alternativoA el cu*l usa menos memoria
>la memoria m*Fima re/uerida #a'a a un valor alrededor de 0733S? pero tra#a'a a la mitad de
velocidad;
$ea la documentaci-n de #zip0 para m*s in(ormaci-n acerca de esa caracter)stica;
Calores retornados
La cadena descomprimida;
E'emplos
E'emplo !. Kescomprimiendo una cadena
<?php
$start%str > "*his is not an honest #ace?";
$b0str > b0compress3$start%str9;
echo "Rompressed &trinE@ ";
echo $b0str;
echo "Vn<br />Vn";
$str > b0decompress3$b0str9;
echo "Lecompressed &trinE@ ";
echo $str;
echo "Vn<br />Vn";
?>
Cer tambi%n
b6compress./
b6errno
>P&P 8 _^ 8;3;8A P&P 4?
#zerrno 22 Regresa un nBmero de error #zip0
Kescripci"n
int b6errno > resource #z ?
Regresa el nBmero de error de cual/uier error #zip0 regresado por el apuntador del archivo dado;
:ista de parmetros
1D
+l apuntador del archivo; +ste de#e ser v*lido y de#e apuntar a un archivo a#ierto
eFitosamente por b6open./;
Calores retornados
Regresa el nBmero de error como un entero;
Cer tambi%n
b6error./
b6errstr./
b6error
>P&P 8 _^ 8;3;8A P&P 4?
#zerror 22 Regresa el nBmero y la cadena de error #zip0 en una matriz
Kescripci"n
array b6error > resource #z ?
Regresa el nBmero y cadena de error de cual/uier error #zip0 regresado por el apuntador de archivo
dado;
:ista de parmetros
1D
+l apuntador de archivo; +ste de#e ser v*lido y de#e apuntar a un archivo eFitosamente
a#ierto con b6open./;
Calores retornados
Regresa una matriz asociativaA con el c-digo de error en errnoA y el mensa'e de error en errstr;
E'emplos
E'emplo !. E'emplo de b6error./
<?php
$error > b0error3$b09;
echo $error)"errno"/;
echo $error)"errstr"/;
?>
Cer tambi%n
b6errno./
b6errstr./
b6errstr
>P&P 8 _^ 8;3;8A P&P 4?
#zerrstr 22 Regresa una cadena de error de #zip0
Kescripci"n
string b6errstr > resource #z ?
O#tiene la cadena de error de cual/uier error #zip0 regresado por el apuntador de archivo dado;
:ista de parmetros
1D
+l apuntador del archivo; +ste de#e ser v*lido y de#e apuntar a un archivo a#ierto
eFitosamente por b6open./;
Calores retornados
Regresa una cadena /ue contiene el mensa'e de error;
Cer tambi%n
b6errno./
b6error./
b6flush
>P&P 8 _^ 8;3;8A P&P 4?
#z(lush 22 Fuerza la escritura de todo los datos en el #u((er
Kescripci"n
int b6flush > resource #z ?
Fuerza la escritura de todos los datos #zip0 en el #u((er para el archivo relacionado con el
apuntador; 1D;
:ista de parmetros
1D
+l apuntador del archivo; +ste de#e ser v*lido y de#e apuntar a un archivo a#ierto
eFitosamente por b6open./;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
b6read./
b63rite./
b6open
>P&P 8 _^ 8;3;8A P&P 4?
#zopen 22 A#re un archivo comprimido #zip0
Kescripci"n
resource b6open > string archivoA string modo ?
b6open./ a#re un archivo #zip0 >;#z0? para lectura o escritura;
:ista de parmetros
arch6o
+l nom#re del archivo a utilizar;
mo#o
imilar a la (unci-n fopen./ >HrH para lecturaA HEH para escrituraA etc;?;
Calores retornados
i la apertura del archivo (allaA b6open./ regresa FALSEA de otro modo regresa un apuntador al
archivo a#ierto;
E'emplos
E'emplo !. E'emplo de b6open./
<?php
$#ile > "/tmp/#oo.b0C";
$b0 > b0open3$#ile, "r"9 or die3"RouldnMt open $#ile #or readinE"9;
b0close3$b09;
?>
Cer tambi%n
b6close./
b6read
>P&P 8 _^ 8;3;8A P&P 4?
#zread 22 Lectura segura de archivo #zip0 #inario
Kescripci"n
string b6read > resource #z PA int longitudQ ?
b6read./ lee del apuntador de archivo #zip0 dado;
La lectura se detiene cuando lonE6tu# >de datos sin comprimir? es alcanzada o se encuentra el (in de
archivo >+OF?A lo /ue ocurra primero;
:ista de parmetros
1D
+l apuntador del archivo; +ste de#e ser v*lido y de#e apuntar a un archivo a#ierto
eFitosamente por b6open./;
lonE6tu#
i no se espec)(icaA b6read./ leer* 1308 #ytes >sin comprimir? a la vez;
Calores retornados
Regresa los datos ya sin compresi-nA o FALSE en caso de error;
E'emplos
E'emplo !. E'emplo de b6read./
<?php
$#ile > "/tmp/#oo.b0C";
$b0 > b0open3$#ile, "r"9 or die3"RouldnMt open $#ile"9;
$decompressed%#ile > MM;
8hile 3!#eo#3$b099 :
$decompressed%#ile .> b0read3$b0, 12KG9;
;
b0close3$b09;
echo "*he contents o# $#ile are@ <br />Vn";
echo $decompressed%#ile;
?>
Cer tambi%n
b63rite./
feof./
b6open./
b63rite
>P&P 8 _^ 8;3;8A P&P 4?
#zErite 22 +scritura segura de archivo #zip0 #inario
Kescripci"n
int b63rite > resource #zA string datos PA int longitudQ ?
b63rite./ escri#e una cadena en el archivo #zip0 dado;
:ista de parmetros
1D
+l apuntador de archivo; +ste de#e ser v*lido y de#e apuntar a un archivo a#ierto
eFitosamente con b6open./;
#atos
Los datos escritos;
lonE6tu#
i se daA la escritura se detendr* despu<s de escri#ir lonE6tu# de #ytes >sin comprimir? o se
encuentra el (in de los #ata es alcanzadoA lo /ue ocurra primero;
Calores retornados
Regresa el nBmero de #ytes escritosA o FALSE en caso de error;
E'emplos
E'emplo !. E'emplo de b63rite./
<?php
$str > "uncompressed data";
$b0 > b0open3"/tmp/#oo.b0C", "8"9;
b08rite3$b0, $str, strlen3$str99;
b0close3$b09;
?>
Cer tambi%n
b6read./
b6open./
CIII. ;unciones de calendario
Introducci"n
La eFtensi-n calendar pone a disposici-n una serie de (unciones para simpli(icar la conversi-n entre
los distintos (ormatos de calendario; +l intermediario - est*ndar en /ue se #asa es la 5uenta de D)as
!uliana; La 5uenta de D)as !uliana es una cuenta /ue comienza mucho antes /ue lo /ue mucha
gente podr)a necesitar contar >como alrededor del 8333 A5?; Para convertir entre sistemas de
calendarioA primero de#er* convertir a la 5uenta de D)as !uliana y luego al sistema de su elecci-n;
fLa 5uenta de D)as es muy di(erente del 5alendario !ulianoa Para m*s in(ormaci-n so#re la 5uenta
de D)as !uliana visitar httpCDDEEE;hermetic;chDcalZstudD'dn;htm; Para m*s in(ormaci-n so#re
sistemas de calendarioA visitar httpCDDEEE;#oogle;comDin(oDcal2overvieE;html; +n estas
instrucciones se han inclu)do eFtractos entrecomillados de dicha p*gina;
Instalaci"n
Para tener tra#a'ando estas (uncionesA tiene /ue compilar P&P con ==ena1le=calen#ar;
La versi-n para LindoEs de +!+ tiene soporte nativo para esta eFtensi-n; No se necesita cargar
ninguna eFtensi-n adicional para usar estas (unciones;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
CAL_#RE#ORIAN >entero?
CAL_'ULIAN >entero?
CAL_'E"ISH >entero?
CAL_FRENCH >entero?
CAL_NUM_CALS >entero?
CAL_DO"_DAYNO >entero?
CAL_DO"_SHORT >entero?
CAL_DO"_LON# >entero?
CAL_MONTH_#RE#ORIAN_SHORT >entero?
CAL_MONTH_#RE#ORIAN_LON# >entero?
CAL_MONTH_'ULIAN_SHORT >entero?
CAL_MONTH_'ULIAN_LON# >entero?
CAL_MONTH_'E"ISH >entero?
CAL_MONTH_FRENCH >entero?
Las siguientes constantes se pueden utilizar desde +!+ 8;7;3 C
CAL_EASTER_DEFAULT >entero?
CAL_EASTER_ROMAN >entero?
CAL_EASTER_AL"AYS_#RE#ORIAN >entero?
CAL_EASTER_AL"AYS_'ULIAN >entero?
+stas constantes est*n disponi#les a partir de +!+ 4;3;3 C
CAL_'E"ISH_ADD_ALAFIM_#ERESH >entero?
CAL_'E"ISH_ADD_ALAFIM >entero?
CAL_'E"ISH_ADD_#ERESHAYIM >entero?
Tabla de contenidos
calZdaysZinZmonth 22 Devuelve el nBmero de dias en un mes para un determinado aWo y calendario
calZ(romZ'd 22 5onvierte de 5uenta de D)as !uliana a un calendario soportado;
calZin(o 22 Devuelve in(ormaci-n so#re un calendario en particular;
calZtoZ'd 22 5onvierte un calendario soportado a 5uenta de D)as !uliana;
easterZdate 22 devuelve la marca de tiempo @N.J para la medianoche de Pascua de un aWo dado
easterZdays 22 O#tiene el nBmero de d)as tras el 01 de marzo en /ue cae la Pascua en un aWo dado
French,o!D 22 5onvierte del 5alendario Repu#licano Franc<s a la 5uenta de D)as !uliana
Gregorian,o!D 22 5onvierte de (echa Gregoriana a la 5uenta de D)as !uliana
!DDayO(Lee" 22 Devuelve el d)a de la semana
!DMonthName 22 Devuelve el nom#re de un mes
!D,oFrench 22 5onvierte de 5uenta de D)as al 5alendario Repu#licano Franc<s
!D,oGregorian 22 5onvierte de 5uenta de D)as a (echa Gregoriana
'dto'eEish 22 5onvierte de cuenta de d)as 'uliana a calendario 'ud)o
!D,o!ulian 22 5onvierte de 5uenta de D)as !uliana a 5alendario !uliano
'dtouniF 22 5onvierte un dia !uliano a @N.J timestamp
!eEish,o!D 22 5onvierte del 5alendario !ud)o a la 5uenta de D)as !uliana
!ulian,o!D 22 5onvierte de 5alendario !uliano a 5uenta de D)as !uliana
uniFto'd 22 5onvierte de @N.J timestamp a dia !uliano
cal>days>in>month
>P&P 8 _^ 8;1;3A P&P 4?
calZdaysZinZmonth 22 Devuelve el nBmero de dias en un mes para un determinado aWo y calendario
Kescripci"n
int cal>days>in>month > int calendarioA int mesA int aWo ?
+sta (unci-n devuelve el numero de dias en el mes del aao para el calendario especi(icado
calen#ar6o;
$er tam#i<n 'dtouni+./;
cal>from>'d
>P&P 8 _^ 8;1;3A P&P 4?
calZ(romZ'd 22 5onvierte de 5uenta de D)as !uliana a un calendario soportado;
Kescripci"n
array cal>from>'d > int 'dA int calendario ?
cal>from>'d./ convierte el dia de 5uenta !uliana de(inido en U# a un dia del calen#ar6o
especi(icado; Los valores de calen#ar6o soportados son CAL_#RE#ORIANA CAL_'ULIANA
CAL_'E"ISH and CAL_FRENCH;
$er tam#i<n cal>to>'d./;
cal>info
>P&P 8 _^ 8;1;3A P&P 4?
calZin(o 22 Devuelve in(ormaci-n so#re un calendario en particular;
Kescripci"n
array cal>info > Pint calendarioQ ?
cal>info./ devuelve in(ormaci-n so#re el calen#ar6o especi(icado - so#re todos los calendarios
soportados si no se especi(ica el parametro calen#ar6o;
La in(ormaci-n del calendario es devuelta en una matriz conteniendo los elementos calnameA
cals?m1olA monthA a11remonth y ma8#a?s6nmonth;
i no se especi(ica calen#ar6oA se devuelve una matriz con in(ormacion so#re todos los calendarios
soportados; +sta (uncionalidad estar* disponi#le en P&P 4;
cal>to>'d
>P&P 8 _^ 8;1;3A P&P 4?
calZtoZ'd 22 5onvierte un calendario soportado a 5uenta de D)as !uliana;
Kescripci"n
int cal>to>'d > int calendarioA int mesA int diaA int aWo ?
cal>to>'d./ 5alcula la 5uenta de D)as !uliana para un dia en el calendario especi(icado por
calen#ar; Los calen#ar6os soportados son CAL_#RE#ORIANA CAL_'ULIANA CAL_'E"ISH y
CAL_FRENCH;
$er tam#i<n cal>to>'d./;
easter>date
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
easterZdate 22 devuelve la marca de tiempo @N.J para la medianoche de Pascua de un aWo dado
Kescripci"n
int easter>date > Pint annoQ ?
Devuelve la marca de tiempo @N.J /ue corresponde a la medianoche de Pascua del aWo dado;
A partir de +!+ 8;7;3A el parametro anno es opcional y si se omiteA usa por de(ecto el aWo en curso
segBn =localtime=;
,6so: +sta (unci-n generar* un aviso si el aWo est* (uera del rango para las marcas de tiempo del
@N.J >es decirA antes de 19:3 o despu<s del 037:?;
E'emplo !. e'emplo de easter>date./
echo date 3""FdFP", easter%date36KKK99; /W ",prF21F6KKK" W/
echo date 3""FdFP", easter%date3C22299; /W ",prFC<FC222" W/
echo date 3""FdFP", easter%date3C22699; /W ",prF65FC226" W/
La (echa del D)a de Pascua (ue de(inida por el 5oncilio de Nicea en el 704 D;5; como el domingo
tras la primera luna llena /ue cayera en - despu<s del e/uinoccio de Primavera; +l e/uinoccio se
supone /ue siempre cae en el 01 de marzoA de modo /ue el c*lculo se reduce a determinar la (echa
de la luna llena y la del domingo siguiente; +l algoritmo usado a/u) (ue introducido en el aWo 470
por Dionisio +Figuo; Ba'o el 5alendario !uliano >para aWos anteriores al 1:47?A se usa un ciclo
simple de 19 aWos para calcular las (ases de la luna; Ba'o el 5alendario Gregoriano >aWos posteriores
al 1:47A diseWado por 5lavio y LilioA e introducido por el Papa Gregorio J... en Octu#re de 14M0A y
en Gran BretaWa y sus colonias en septiem#re de 1:40? se aWaden dos (actores de correcci-n para
hacer el ciclo m*s preciso;
>+l c-digo se #asa en un programa en 5 de imon SershaEA `Ee#masterGely;anglican;org_?
$er easter>days./ para calcular la Pascua antes del 19:3 o despu<s del 037:;
easter>days
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
easterZdays 22 O#tiene el nBmero de d)as tras el 01 de marzo en /ue cae la Pascua en un aWo dado
Kescripci"n
int easter>days > Pint anno PA int metodoQQ ?
Devuelve el nBmero de d)as tras el 01 de marzo en /ue cae la Pascua en un aWo dado; i no se
especi(ica aWoA se asume el actual;
A partir de +!+ 8;7;3A el parametro anno es opcional y si se omiteA usa por de(ecto el aWo en curso
segBn =localtime=;
+l par*metro meto#o (ue introducido en la version +!+ 8;7;3 y permite calcular (echas de pascua
#asadas en el 5alendario Gregoriano durante los aWos 14M0 2 1:40 si se le da el valor
CAL_EASTER_ROMAN; $er las constantes de calendario para m*s in(ormaci-n so#re estas
constantes;
+sta (unci-n se puede usar en lugar de easter>date./ para calcular la Pascua para aWos /ue se salen
del rango de las marcas de (echa del @N.J >o seaA antes del 19:3 o despu<s del 037:?;
E'emplo !. e'emplo de easter>date./
echo easter%days 36KKK9; /W 61, i.e. ,pril 1 W/
echo easter%days 361KC9; /W <C, i.e. ,pril CC W/
echo easter%days 36K6<9; /W C, i.e. "arch C< W/
La (echa del D)a de Pascua (ue de(inida por el 5oncilio de Nicea en el 704 D;5; como el domingo
tras la primera luna llena /ue cayera en o despu<s del e/uinoccio de Primavera; +l e/uinoccio se
supone /ue siempre cae en el 01 de marzoA de modo /ue el c*lculo se reduce a determinar la (echa
de la luna llena y la del domingo siguiente; +l algoritmo usado a/u) (ue introducido en el aWo 470
por Dionisio +Figuo; Ba'o el 5alendario !uliano >para aWos anteriores al 1:47?A se usa un ciclo
simple de 19 aWos para calcular las (ases de la luna; Ba'o el 5alendario Gregoriano >aWos posteriores
al 1:47A diseWado por 5lavio y LilioA e introducido por el Papa Gregorio J... en Octu#re de 14M0A y
en Gran BretaWa y sus colonias en septiem#re de 1:40? se aWaden dos (actores de correcci-n para
hacer el ciclo m*s preciso;
>+l c-digo se #asa en un programa en 5 de imon SershaEA `Ee#masterGely;anglican;org_?
$ea tam#i<n easter>date./;
;renchTo[K
>P&P 7A P&P 8 A P&P 4?
French,o!D 22 5onvierte del 5alendario Repu#licano Franc<s a la 5uenta de D)as !uliana
Kescripci"n
int frenchto'd > int mesA int diaA int anno ?
5onvierte una (echa del 5alendario Repu#licano Franc<s a la 5uenta de D)as !uliana;
+stas rutinas s-lo convierten (echas entre los aWos 1 y 18 >(echas Gregorianas del 00 de septiem#re
de 1:90 al 00 de septiem#re de 1M3K?; +sto cu#re ampliamente el periodo en el /ue estuvo en uso
este calendario;
FregorianTo[K
>P&P 7A P&P 8 A P&P 4?
Gregorian,o!D 22 5onvierte de (echa Gregoriana a la 5uenta de D)as !uliana
Kescripci"n
int gregorianto'd > int mesA int diaA int anno ?
+l rango v*lido para el 5alendario Gregoriano es desde el 8:18 A;5; hasta el 9999 D;5;
Aun/ue este programa puede mane'ar (echas tan le'anas como el 8:18 A;5;A usarlo no tendr)a
sentido; +l calendario Gregoriano (ue institu)do el 14 de octu#re de 14M0 >o el 4 de octu#re de 14M0
en el calendario !uliano?; Algunos pa)ses no lo aceptaron hasta mucho despu<s; Por e'emploA Gran
BretaWa se convirti- en 1:40A la @R en 191M y Grecia en 1907; Muchos pa)ses europeos usaron el
calendario !uliano antes /ue el Gregoriano;
E'emplo !. ;unciones de calendario
<?php
$jd > -reEorian*oAL 362,66,6KH29;
echo "$jdVn";
$EreEorian > AL*o-reEorian 3$jd9;
echo "$EreEorianVn";
?>
[KKayJf2eeB
>P&P 7A P&P 8 A P&P 4?
!DDayO(Lee" 22 Devuelve el d)a de la semana
Kescripci"n
miFed 'ddayof3eeB > int dia'ulianoA int modo ?
Devuelve el d)a de la semana; Dependiendo del modoA devuelve un entero - una cadena;
Tabla !. Modos para el da de la semana
Modo ,ignificado
3 devuelve el d)a de la semana como entero >3^domingoA 1^lunesA etc?
1 devuelve una cadena con el d)a de la semana >ingl<sA gregoriano?
0
devuelve una cadena con el d)a de la semana a#reviado >ingl<sA
gregoriano?
[KMonthName
>P&P 7A P&P 8 A P&P 4?
!DMonthName 22 Devuelve el nom#re de un mes
Kescripci"n
string 'dmonthname > int dia'ulianoA int modo ?
Devuelve una cadena /ue contiene el nom#re del mes; mo#o le dice a esta (unci-n a /u< calendario
de#e convertir la 5uenta de D)as !ulianaA y /u< tipo de nom#res de mes de#e devolver;
Tabla !. Modos de calendario
Modo ,ignificado Calores
3
Gregoriano 2
a#reviado
!anA Fe#A MarA AprA MayA !unA !ulA AugA epA OctA NovA Dec
1 Gregoriano
!anuaryA Fe#ruaryA MarchA AprilA MayA !uneA !ulyA AugustA eptem#erA
Octo#erA Novem# erA Decem#er
0
!uliano 2
a#reviado
!anA Fe#A MarA AprA MayA !unA !ulA AugA epA OctA NovA Dec
7 !uliano
!anuaryA Fe#ruaryA MarchA AprilA MayA !uneA !ulyA AugustA eptem#erA
Octo#erA Novem# erA Decem#er
8 !ud)o
,ishriA &eshvanA SislevA ,evetA hevatA Adar.A Adar..A NisanA .yyarA
ivanA ,ammuzA AvA +lul
4
Repu#licano
Franc<s
$endemiaireA BrumaireA FrimaireA NivoseA PluvioseA $entoseA GerminalA
FlorealA Prair ialA MessidorA ,hermidorA FructidorA +Ftra
[KTo;rench
>P&P 7A P&P 8 A P&P 4?
!D,oFrench 22 5onvierte de 5uenta de D)as al 5alendario Repu#licano Franc<s
Kescripci"n
string 'dtofrench > int dia'uliano ?
5onvierte una 5uenta de D)as !uliana al 5alendario Repu#licano Franc<s;
[KToFregorian
>P&P 7A P&P 8 A P&P 4?
!D,oGregorian 22 5onvierte de 5uenta de D)as a (echa Gregoriana
Kescripci"n
string 'dtogregorian > int dia'uliano ?
5onvierte de 5uenta de D)as !uliana a una cadena /ue contiene la (echa Gregoriana en (ormato
=mesDd)aDaWo=
'dto'e3ish
>P&P 7A P&P 8 A P&P 4?
'dto'eEish 22 5onvierte de cuenta de d)as 'uliana a calendario 'ud)o
Kescripci"n
string 'dto'e3ish > int dia'uliano PA #ool he#reo PA int (lQQ ?
5onvierte una cuenta de d)as 'uliana al calendario 'ud)o;
Los par*metros opcionales he1reo y 9l est* disponi#les a partir de P&P 4;3;3
i al par*metro he1reo se le asigna el valor TRUEA el par*metro 9l se usa para el (ormato de salida
he#reo; Los (ormatos disponi#les sonC CAL_'E"ISH_ADD_ALAFIM_#ERESHA
CAL_'E"ISH_ADD_ALAFIMA CAL_'E"ISH_ADD_#ERESHAYIM;
E'emplo !. E'emplo 'dto'e3ish./
<?php
echo jdtoje8ish3EreEoriantojd362,J,C22C9, true,
R,O%AE74&H%,LL%-E'E&H,P4" [ R,O%AE74&H%,LL%,O,S4" [ R,O%AE74&H%,LL%,O,S4"%-E'E&H9;
?>
[KTo[ulian
>P&P 7A P&P 8 A P&P 4?
!D,o!ulian 22 5onvierte de 5uenta de D)as !uliana a 5alendario !uliano
Kescripci"n
string 'dto'ulian > int dia'uliano ?
5onvierte una 5uenta de D)as !uliana a una cadena /ue contiene la (echa del 5alendario !uliano en
(ormato =mesDd)aDaWo=;
'dtouni+
>P&P 8 A P&P 4?
'dtouniF 22 5onvierte un dia !uliano a @N.J timestamp
Kescripci"n
int 'dtouni+ > int 'day ?
+sta (unci- devuelve el =@N.J timestamp= correspondiante a el dia !uliano de(inido en U#a? - (also
>FALSE? si U#a? no se encuentra en la <poca @N.J >aWos entre 19:3 y 037: - 08834MM `^ U#a? `^
08K4780 ?; +l tiempo devuelto es localtime >y no GM,?;
$er tam#i<n uni+to'd./;
[e3ishTo[K
>P&P 7A P&P 8 A P&P 4?
!eEish,o!D 22 5onvierte del 5alendario !ud)o a la 5uenta de D)as !uliana
Kescripci"n
int 'e3ishto'd > int mesA int diaA int anno ?
Aun/ue este programa puede mane'ar (echas tan le'anas como el aWo 1 >7:K1 A;5;?A usarlo no
tendr)a sentido; +l 5alendario !ud)o ha estado en uso miles de aWosA pero en los d)as primeros no
ha#)a una (-rmula /ue calculara el comienzo de un mes; @n mes comenza#a cuando se ve)a por
primera vez la luna nueva;
[ulianTo[K
>P&P 7A P&P 8 A P&P 4?
!ulian,o!D 22 5onvierte de 5alendario !uliano a 5uenta de D)as !uliana
Kescripci"n
int 'ulianto'd > int mesA int diaA int anno ?
Rango v*lido para el 5alendario !ulianoC del 8:17 A;5 al 9999 D;5;
Aun/ue este programa puede mane'ar (echas tan le'anas como el 8:17 A;5;A usarlo no tendr)a
sentido; +l calendario se cre- en el 8K A;5;A pero sus detalles no se esta#ilizaron hasta al menos el M
D;5;A y /uiz*s no lo hiciera hasta el siglo .$; Adem*sA el comienzo de un aWo varia#a de una a otra
culturaC no todas acepta#an enero como el primer mes;
Atenci"n
Recordar /ue el actual sistema de calendario en uso en todo el mundo es el calendario Gregoriano;
gregorianto'd./ puede ser usada para convertir los dias del calendario Gregoriano a 5uenta de
D)as !uliana;
uni+to'd
>P&P 8 A P&P 4?
uniFto'd 22 5onvierte de @N.J timestamp a dia !uliano
Kescripci"n
int uni+to'd > Pint timestampQ ?
Devuelve el dia !uliano correspondiente a un @N.J t6mestamp >segundos desde 31;31;19:3?A - al
dia actual si no se especi(ica t6mestamp
$er tam#ien'dtouni+./;
II. ;unciones del API de CCC,
Introducci"n
+stas (unciones interaccionan con el AP. de 55$A permitiendo tra#a'ar con 55$ directamente
desde un script P&P; 55$ es la soluci-n de Red&at para el intermediario en el procesamiento de
tar'etas de cr<dito; Permite conectar directamente con las centrales de las tar'etas desde una m*/uina
VniF con un m-dem; @sando el m-dulo para P&P de 55$A se pueden procesar tar'etas de cr<dito
directamente desde vuestros scripts en P&P;
Nota- 55$ ha sido discontinuado por Red &at y no eFisten planes de o(recer nuevas
(uncionalidades - contratos de ayuda; Los /ue necesiten usar esta (uncionalidad pueden
pro#ar M5$+ #y Main treet o(tEor"s; +s similar en diseWo y tiene documentaci-n
para su uso con P&P;
+sta eFtensi-n ha sido removida de +!+ y no se encuentra disponi#le a partir de P&P
8;7;3; i /uereis utilizar la capacidad de procesar tar'etas de cr<ditoA usar M5$+;
Instalaci"n
,o ena#le 55$ upport in P&PA (irst veri(y your 55$ installation directory; %ou Eill then need
to con(igure P&P Eith the ==76th=ccs option; .( you use this option Eithout speci(ying the path to
your 55$ installationA P&P Eill attempt to loo" in the de(ault 55$ .nstall location
>/usr/local/cc=s?; .( 55$ is in a non2standard locationA run con(igure EithC ==76th=ccs:
)D0R.A Ehere D.R is the path to your 55$ installation; Please note that 55$ support re/uires
that D.RDli# and D.RDinclude eFistA and include c=%api.h under the include directory and
libcc=s.a under the li# directory;
AdditionallyA a ccvsd process Eill need to #e running (or the con(igurations you intend to use in
your P&P scripts; %ou Eill also need to ma"e sure the P&P Processes are running under the same
user as your 55$ Eas installed as >e;g; i( you installed 55$ as user HccvsHA your P&P processes
must run as HccvsH as Eell;?
Cer tambi%n
Red&at ha de'ado de soportar 55$X De todas maneras un manual un poco anticuado est* todav)a
disponi#le en httpCDDredhat;comDdocsDmanualsDccvsD;
Tabla de contenidos
ccvsZadd 22 AWadir datos a una transacci-n
ccvsZauth 22 Realiza un test de una autorizaci-n a cr<dito en una transacci-n
ccvsZcommand 22 +'ecuta un comando /ue es peculiar para un protocolo concretoA y /ue no est*
disponi#le en el AP. general de 55$
ccvsZcount 22 +ncuentra cuantas transacciones de un tipo dado est*n almacenadas en el sistema
ccvsZdelete 22 Borra una transacci-n
ccvsZdone 22 Finaliza el motor de 55$ y hace una limpieza
ccvsZinit 22 .nicializa un 55$ para usarlo
ccvsZloo"up 22 Busca un item de un tipo en particular en la #ase de datos n
ccvsZneE 22 5rea una nuevaA transacci-n en #lanco
ccvsZreport 22 Devuelve el estado del proceso de comunicaci-n en #ac"ground
ccvsZreturn 22 ,rans(iere (ondos del comerciante al titular de la tar'eta
ccvsZreverse 22 Realiza una revocaci-n completa en una autorizaci-n ya procesada
ccvsZsale 22 ,rans(iere (ondos del titular de la tar'eta al comerciante
ccvsZstatus 22 5he/uear el estado de una (actura
ccvsZteFtvalue 22 O#tiene el valor de retorno de teFto para una llamada anterior a una (unci-n
ccvsZvoid 22 Realizar una revocaci-n completa en una transacci-n completada
cc5s>add
>8;3;0 2 8;0;7 only?
ccvsZadd 22 AWadir datos a una transacci-n
Kescripci"n
cadena cc5s>add > cadena sesi-nA cadena (acturaA cadena argtypeA cadena argval ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>auth
>8;3;0 2 8;0;7 only?
ccvsZauth 22 Realiza un test de una autorizaci-n a cr<dito en una transacci-n
Kescripcion
cadena cc5s>auth > cadena sesi-nA cadena (actura ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>command
>8;3;0 2 8;0;7 only?
ccvsZcommand 22 +'ecuta un comando /ue es peculiar para un protocolo concretoA y /ue no est*
disponi#le en el AP. general de 55$
Kescripcion
cadena cc5s>command > cadena sesi-nA cadena tipoA cadena argval ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>count
>8;3;0 2 8;0;7 only?
ccvsZcount 22 +ncuentra cuantas transacciones de un tipo dado est*n almacenadas en el sistema
Kescripci"n
entero cc5s>count > cadena sesi-nA cadena tipo ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>delete
>8;3;0 2 8;0;7 only?
ccvsZdelete 22 Borra una transacci-n
Kescripci"n
cadena cc5s>delete > cadena sesi-nA cadena (actura ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>done
>8;3;0 2 8;0;7 only?
ccvsZdone 22 Finaliza el motor de 55$ y hace una limpieza
Kescripcion
cadena cc5s>done > cadena sesi- ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>init
>8;3;0 2 8;0;7 only?
ccvsZinit 22 .nicializa un 55$ para usarlo
Kescripci"n
cadena cc5s>init > cadena nom#re ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>looBup
>8;3;0 2 8;0;7 only?
ccvsZloo"up 22 Busca un item de un tipo en particular en la #ase de datos n
Kescripci"n
cadena cc5s>looBup > cadena sesi-nA cadena (acturaA entero inum ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>ne3
>8;3;0 2 8;0;7 only?
ccvsZneE 22 5rea una nuevaA transacci-n en #lanco
Kescripcion
cadena cc5s>ne3 > cadena sesi-nA cadena cadena ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>report
>8;3;0 2 8;0;7 only?
ccvsZreport 22 Devuelve el estado del proceso de comunicaci-n en #ac"ground
Kescripcion
cadena cc5s>report > cadena sesi-nA cadena tipo ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>return
>8;3;0 2 8;0;7 only?
ccvsZreturn 22 ,rans(iere (ondos del comerciante al titular de la tar'eta
Kescripci"n
cadena cc5s>return > cadena sesi-nA cadena (actura ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>re5erse
>8;3;0 2 8;0;7 only?
ccvsZreverse 22 Realiza una revocaci-n completa en una autorizaci-n ya procesada
Kescripcion
cadena cc5s>re5erse > cadena sesi-nA cadena (actura ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>sale
>8;3;0 2 8;0;7 only?
ccvsZsale 22 ,rans(iere (ondos del titular de la tar'eta al comerciante
Kescripci"n
cadena cc5s>sale > cadena sesi-nA cadena (actura ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>status
>8;3;0 2 8;0;7 only?
ccvsZstatus 22 5he/uear el estado de una (actura
Kescripci"n
cadena cc5s>status > cadena sesi-nA cadena (actura ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>te+t5alue
>8;3;0 2 8;0;7 only?
ccvsZteFtvalue 22 O#tiene el valor de retorno de teFto para una llamada anterior a una (unci-n
Kescripci"n
cadena cc5s>te+t5alue > cadena sesi-n ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cc5s>5oid
>8;3;0 2 8;0;7 only?
ccvsZvoid 22 Realizar una revocaci-n completa en una transacci-n completada
Kescripci"n
cadena cc5s>5oid > cadena sesi-nA cadena (actura ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
I. ClassBit ;unctions
Introducci"n
,hese (unctions alloE the dynamic manipulation o( P&P classesA at runtime;
Instalaci"n
+sta eFtension P+5L no esta ligada a P&P;
Mas in(ormacion so#re nuevos lanzamientosA descargas (icheros de (uentesA in(ormacion so#re los
responsa#les asi como un H5&ANG+LOGHA se puede encontrar a/uiC
httpCDDpecl;php;netDpac"ageDclass"it;
Podeis descargar esta DLL de las eFtensiones P+5L desde la pagina P&P DoEnloads o desde
httpCDDsnaps;php;netD;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
CLASS&IT_ACC_PRI$ATE >int?
Mar"s the method pr6ate
CLASS&IT_ACC_PROTECTED >int?
Mar"s the method protecte#
CLASS&IT_ACC_PU(LIC >int?
Mar"s the method pu1l6c
Tabla de contenidos
class"itZimport 22 .mport neE class method de(initions (rom a (ile
class"itZmethodZadd 22 Dynamically adds a neE method to a given class
class"itZmethodZcopy 22 5opies a method (rom class to another
class"itZmethodZrede(ine 22 Dynamically changes the code o( the given method
class"itZmethodZremove 22 Dynamically removes the given method
class"itZmethodZrename 22 Dynamically changes the name o( the given method
classBit>import
>no version in(ormationA might #e only in 5$?
class"itZimport 22 .mport neE class method de(initions (rom a (ile
Kescripci"n
array classBit>import > string (ilename ?
Nota- +sta (unci-n no puede usarse para manipular el m<todo actualmente en e'ecuci-n
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
:ista de parmetros
96lename
,he (ilename o( the class method de(initions to import
Calores retornados
Associative array o( imported methods
E'emplos
E'emplo !. classBit>import./ e+ample
<?php
// #ile@ ne8class.php
class Example :
#unction #oo39 :
return "bar!Vn";
;
;
?>
<?php
// reQuires ne8class.php 3see abo=e9
class Example :
#unction #oo39 :
return "#oo!Vn";
;
;
$e > ne8 Example39;
// output oriEinal
echo $eF>#oo39;
// import replacement method
classIit%import3Mne8class.phpM9;
// output imported
echo $eF>#oo39;
?>
+l resultado del e'emplo seriaC
#oo!
bar!
Cer tambi%n
classBit>method>add./
classBit>method>copy./
classBit>method>add
>no version in(ormationA might #e only in 5$?
class"itZmethodZadd 22 Dynamically adds a neE method to a given class
Kescripci"n
#ool classBit>method>add > string classnameA string methodnameA string argsA string code PA int
(lagsQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
:ista de parmetros
classname
,he class to Ehich this method Eill #e added
metho#name
,he name o( the method to add
arEs
5omma2delimited list o( arguments (or the neEly2created method
co#e
,he code to #e evaluated Ehen metho#name is called
9laEs
,he type o( method to createA can #e CLASS&IT_ACC_PU(LICA
CLASS&IT_ACC_PROTECTED or CLASS&IT_ACC_PRI$ATE
Nota- ,his parameter is only used as o( P&P 4A #ecauseA prior to thisA all methods
Eere pu#lic;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. classBit>method>add./ e+ample
<?php
class Example :
#unction #oo39 :
echo "#oo!Vn";
;
;
// create an Example object
$e > ne8 Example39;
// ,dd a ne8 public method
classIit%method%add3
MExampleM,
MaddM,
M$num6, $numCM,
Mreturn $num6 [ $numC;M,
RO,&&]4*%,RR%+ZO4R
9;
// add 6C [ 1
echo $eF>add36C, 19;
?>
+l resultado del e'emplo seriaC
6G
Cer tambi%n
classBit>method>copy./
classBit>method>redefine./
classBit>method>remo5e./
classBit>method>rename./
create>function./
classBit>method>copy
>no version in(ormationA might #e only in 5$?
class"itZmethodZcopy 22 5opies a method (rom class to another
Kescripci"n
#ool classBit>method>copy > string d5lassA string dMethodA string s5lass PA string sMethodQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
:ista de parmetros
#Class
Destination class (or copied method
#Metho#
Destination method name
sClass
ource class o( the method to copy
sMetho#
Name o( the method to copy (rom the source class; .( this parameter is omittedA the value o(
#Metho# is assumed;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. classBit>method>copy./ e+ample
<?php
class Soo :
#unction example39 :
return "#oo!Vn";
;
;
class Zar :
// initially, no methods
;
// copy the example39 method #rom the Soo class to the Zar class, as ba039
classIit%method%copy3MZarM, Mba0M, MSooM, MexampleM9;
// output copied #unction
echo Zar@@ba039;
?>
+l resultado del e'emplo seriaC
#oo!
Cer tambi%n
classBit>method>add./
classBit>method>redefine./
classBit>method>remo5e./
classBit>method>rename./
classBit>method>redefine
>no version in(ormationA might #e only in 5$?
class"itZmethodZrede(ine 22 Dynamically changes the code o( the given method
Kescripci"n
#ool classBit>method>redefine > string classnameA string methodnameA string argsA string code PA
int (lagsQ ?
Nota- +sta (unci-n no puede usarse para manipular el m<todo actualmente en e'ecuci-n
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
:ista de parmetros
classname
,he class in Ehich to rede(ine the method
metho#name
,he name o( the method to rede(ine
arEs
5omma2delimited list o( arguments (or the rede(ined method
co#e
,he neE code to #e evaluated Ehen metho#name is called
9laEs
,he rede(ined method can #e CLASS&IT_ACC_PU(LICA CLASS&IT_ACC_PROTECTED
or CLASS&IT_ACC_PRI$ATE
Nota- ,his parameter is only used as o( P&P 4A #ecauseA prior to thisA all methods
Eere pu#lic;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. classBit>method>redefine./ e+ample
<?php
class Example :
#unction #oo39 :
return "#oo!Vn";
;
;
// create an Example object
$e > ne8 Example39;
// output Example@@#oo39 3be#ore rede#ine9
echo "Ze#ore@ " . $eF>#oo39;
// 'ede#ine the M#ooM method
classIit%method%rede#ine3
MExampleM,
M#ooM,
MM,
Mreturn "bar!Vn";M,
RO,&&]4*%,RR%+ZO4R
9;
// output Example@@#oo39 3a#ter rede#ine9
echo ",#ter@ " . $eF>#oo39;
?>
+l resultado del e'emplo seriaC
Ze#ore@ #oo!
,#ter@ bar!
Cer tambi%n
classBit>method>add./
classBit>method>copy./
classBit>method>remo5e./
classBit>method>rename./
classBit>method>remo5e
>no version in(ormationA might #e only in 5$?
class"itZmethodZremove 22 Dynamically removes the given method
Kescripci"n
#ool classBit>method>remo5e > string classnameA string methodname ?
Nota- +sta (unci-n no puede usarse para manipular el m<todo actualmente en e'ecuci-n
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
:ista de parmetros
classname
,he class in Ehich to remove the method
metho#name
,he name o( the method to remove
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. classBit>method>remo5e./ e+ample
<?php
class Example :
#unction #oo39 :
return "#oo!Vn";
;

#unction bar39 :
return "bar!Vn";
;
;
// 'emo=e the M#ooM method
classIit%method%remo=e3
MExampleM,
M#ooM
9;
echo implode3M M, Eet%class%methods3MExampleM99;
?>
+l resultado del e'emplo seriaC
bar
Cer tambi%n
classBit>method>add./
classBit>method>copy./
classBit>method>redefine./
classBit>method>rename./
classBit>method>rename
>no version in(ormationA might #e only in 5$?
class"itZmethodZrename 22 Dynamically changes the name o( the given method
Kescripci"n
#ool classBit>method>rename > string classnameA string methodnameA string neEname ?
Nota- +sta (unci-n no puede usarse para manipular el m<todo actualmente en e'ecuci-n
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
:ista de parmetros
classname
,he class in Ehich to rename the method
metho#name
,he name o( the method to rename
ne7name
,he neE name to give to the renamed method
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. classBit>method>rename./ e+ample
<?php
class Example :
#unction #oo39 :
return "#oo!Vn";
;
;
// 'ename the M#ooM method to MbarM
classIit%method%rename3
MExampleM,
M#ooM,
MbarM
9;
// output renamed #unction
echo Example@@bar39;
?>
+l resultado del e'emplo seriaC
#oo!
Cer tambi%n
classBit>method>add./
classBit>method>copy./
classBit>method>redefine./
classBit>method>remo5e./
II. ;unciones de ClasesAJb'etos
Introducci"n
+stas (unciones permiten o#tener in(ormaci-n so#re clases y o#'etos; e puede o#tener el nom#re de
la clase a la /ue pertenece un o#'etoA asi como las propiedades de sus miem#ros y m<todos; @sando
estas (unciones se puede o#tener no solo lo comentado en la (rase anteriorA tam#i<n se puede
o#tener la (amilia del o#'eto >p;e'; /u< clase est* eFtendiendo la clase a la /ue pertenece el o#'eto?;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
E'emplos
+n este e'emploA de(inimos primero una clase #ase y una eFtensi-n de esta clase; La clase #ase
de(ine un vegetal gen<ricoA si es comesti#le y su color; La su#clase Sp6nach aWade un metodo para
cocinarlo y otro para sa#er si esta cocinado;
E'emplo !. classes.inc
<?php
// base class 8ith member properties and methods
class (eEetable :
=ar $edible;
=ar $color;
#unction (eEetable3 $edible, $color>"Ereen" 9 :
$thisF>edible > $edible;
$thisF>color > $color;
;
#unction is%edible39 :
return $thisF>edible;
;
#unction 8hat%color39 :
return $thisF>color;
;

; // end o# class (eEetable
// extends the base class
class &pinach extends (eEetable :
=ar $cooIed > #alse;
#unction &pinach39 :
$thisF>(eEetable3 true, "Ereen" 9;
;
#unction cooI%it39 :
$thisF>cooIed > true;
;
#unction is%cooIed39 :
return $thisF>cooIed;
;

; // end o# class &pinach
?>
5reamos 0 o#'etos de estas clases e imprimimos in(ormaci-n so#re ellosA incluyendo la 'erar/uia de
clases a la /ue pertenecen; ,am#i<n de(inimos algunas (uncionesA especialmente para imprimir las
varia#les de una manera ordenada;
E'emplo *. test>script.php
<pre>
<?php
include "classes.inc";
// utility #unctions
#unction print%=ars3$obj9 :
$arr > Eet%object%=ars3$obj9;
8hile 3list3$prop, $=al9 > each3$arr99
echo "Vt$prop > $=alVn";
;
#unction print%methods3$obj9 :
$arr > Eet%class%methods3Eet%class3$obj99;
#oreach 3$arr as $method9
echo "Vt#unction $method39Vn";
;
#unction class%parentaEe3$obj, $class9 :
Elobal $$obj;
i# 3is%subclass%o#3$$obj, $class99 :
echo "?bject $obj belonEs to class ".Eet%class3$$obj9;
echo " a subclass o# $classVn";
; else :
echo "?bject $obj does not belonE to a subclass o# $classVn";
;
;
// instantiate C objects
$=eEEie > ne8 (eEetable3true,"blue"9;
$lea#y > ne8 &pinach39;
// print out in#ormation about objects
echo "=eEEie@ RO,&& ".Eet%class3$=eEEie9."Vn";
echo "lea#y@ RO,&& ".Eet%class3$lea#y9;
echo ", ,'E.* ".Eet%parent%class3$lea#y9."Vn";
// sho8 =eEEie properties
echo "Vn=eEEie@ ropertiesVn";
print%=ars3$=eEEie9;
// and lea#y methods
echo "Vnlea#y@ "ethodsVn";
print%methods3$lea#y9;
echo "VnarentaEe@Vn";
class%parentaEe3"lea#y", "&pinach"9;
class%parentaEe3"lea#y", "(eEetable"9;
?>
</pre>
One important thing to note in the eFample a#ove is that the o#'ect 'lea9? is an instance o( the class
,pinach Ehich is a su#class o( CegetableA there(ore the last part o( the script a#ove Eill outputC
).../
arentaEe@
?bject lea#y does not belonE to a subclass o# &pinach
?bject lea#y belonEs to class spinach a subclass o# (eEetable
Tabla de contenidos
callZuserZmethodZarray 22 5all a user method given Eith an array o( parameters PdeprecatedQ
callZuserZmethod 22 5all a user method on an speci(ic o#'ect PdeprecatedQ
classZeFists 22 5hec"s i( the class has #een de(ined
getZclassZmethods 22 Devuelve un vector >matriz unidimensional? con los nom#res de los m<todos
de la clase en /uestion;
getZclassZvars 22 Devuelve una matriz con las propiedades >inicializadas por de(ecto? de la clase
getZclass 22 Returns the name o( the class o( an o#'ect
getZdeclaredZclasses 22 Returns an array Eith the name o( the de(ined classes
getZdeclaredZinter(aces 22 Returns an array o( all declared inter(aces
getZo#'ectZvars 22 Devuelve un vector de propiedades del o#'ecto
getZparentZclass 22 Retrieves the parent class name (or o#'ect or class
inter(aceZeFists 22 5hec"s i( the inter(ace has #een de(ined
isZa 22 Returns TRUE i( the o#'ect is o( this class or has this class as one o( its parents
isZsu#classZo( 22 Returns TRUE i( the o#'ect has this class as one o( its parents
methodZeFists 22 5omprue#a /ue el met-do de clase eFiste
call>user>method>array
>P&P 8 _^ 8;3;4A P&P 4?
callZuserZmethodZarray 22 5all a user method given Eith an array o( parameters PdeprecatedQ
Kescription
miFed call>user>method>array > string methodZnameA o#'ect io#'A array paramarr ?
A5iso
,he call>user>method>array./ (unction is deprecated as o( P&P 8;1;3A use the
call>user>func>array./ variety Eith the arra?L]'o1UC *metho#_name*M syntaF instead;
5alls the method re(erred #y metho#_name (rom the user de(ined o1U o#'ectA using the parameters in
paramarr;
ee alsoC call>user>func>array./A and call>user>func./;
call>user>method
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
callZuserZmethod 22 5all a user method on an speci(ic o#'ect PdeprecatedQ
Kescription
miFed call>user>method > string methodZnameA o#'ect io#' PA miFed parameter PA miFed ;;;QQ ?
A5iso
,he call>user>method./ (unction is deprecated as o( P&P 8;1;3A use the call>user>func./ variety
Eith the arra?L]'o1UC *metho#_name*M syntaF instead;
5alls the method re(erred #y metho#_name (rom the user de(ined o1U o#'ect; An eFample o( usage is
#eloEA Ehere Ee de(ine a classA instantiate an o#'ect and use call>user>method./ to call indirectly
its pr6nt_6n9o method;
<?php
class Rountry :
=ar $.,"E;
=ar $*OL;

#unction Rountry3$name, $tld9
:
$thisF>.,"E > $name;
$thisF>*OL > $tld;
;
#unction print%in#o3$prestr > ""9
:
echo $prestr . "Rountry@ " . $thisF>.,"E . "Vn";
echo $prestr . "*op Oe=el Lomain@ " . $thisF>*OL . "Vn";
;
;
$cntry > ne8 Rountry3"eru", "pe"9;
echo "W RallinE the object method directlyVn";
$cntryF>print%in#o39;
echo "VnW RallinE the same method indirectlyVn";
call%user%method3"print%in#o", $cntry, "Vt"9;
?>
ee also call>user>func>array./A and call>user>func./;
class>e+ists
>P&P 8 A P&P 4?
classZeFists 22 5hec"s i( the class has #een de(ined
Kescription
#ool class>e+ists > string classZname PA #ool autoloadQ ?
,his (unction returns TRUE i( the class given #y class_name has #een de(inedA FALSE otherEise;
E'emplo !. class>e+ists./ e+ample
<?php
// RhecI the class exists be#ore tryinE to use it
i# 3class%exists3M"yRlassM99 :
$myclass > ne8 "yRlass39;
;
?>
class>e+ists./ Eill attempt to call ZZautoload #y de(aultA i( you donHt Eant class>e+ists./ to call
ZZautoloadA you can set the parameter autoloa# to FALSE;
E'emplo *. autoload parameter e+ample
<?php
#unction %%autoload3$class9
:
include3$class . M.phpM9;
// RhecI to see i# the include declared the class
i# 3!class%exists3$class, #alse99 :
triEEer%error3"+nable to load class@ $class", E%+&E'%7,'.4.-9;
;
;

i# 3class%exists3M"yRlassM99 :
$myclass > ne8 "yRlass39;
;
?>
Nota- ,he autoloa# parameter Eas added in P&P 4
ee also interface>e+ists./A and get>declared>classes./;
get>class>methods
>P&P 8 A P&P 4?
getZclassZmethods 22 Devuelve un vector >matriz unidimensional? con los nom#res de los m<todos
de la clase en /uestion;
Kescripci"n
vector get>class>methods > string classZname ?
+sta (unci-n devuelve un vector con los nom#res de los m<todos de(inidos en la clase especi(icada
como class_name;
Nota- A partir de P&P 8;3;KA se puede especi(icar el o#'eto a s) mismo en vez de
class_name; Por e'emploC
$class%methods > Eet%class%methods3$my%class9; // see belo8 the #ull example
E'emplo !. get>class>methods./ e'emplo
<?php
class myclass :
// constructor
#unction myclass39 :
return3*'+E9;
;

// method 6
#unction my#unc639 :
return3*'+E9;
;
// method C
#unction my#uncC39 :
return3*'+E9;
;
;
$my%object > ne8 myclass39;
$class%methods > Eet%class%methods3Eet%class3$my%object99;
#oreach 3$class%methods as $method%name9 :
echo "$method%nameVn";
;
?>
ProduciraC
myclass
my#unc6
my#uncC
$er tam#i<n get>class>5ars./ y get>ob'ect>5ars./;
get>class>5ars
>P&P 8 A P&P 4?
getZclassZvars 22 Devuelve una matriz con las propiedades >inicializadas por de(ecto? de la clase
Kescripci"n
array get>class>5ars > string classZname ?
+sta (unci-n devuelve un vector con las propiedades /ue han sido inicializadas por de(ecto en la
clase; Los elementos de este vector est*n estan organizados de la (orma arname :& alue;
Nota- 5on anterioridad a P&P 8;0;3A las varia#les de la clase /ue no est<n inicializadasA
no ser* presentadas por get>class>5ars./;
E'emplo !. get>class>5ars./ e'emplo
<?php
class myclass :
=ar $=ar6; // this has no de#ault =alue...
=ar $=arC > "xy0";
=ar $=ar< > 622;

// constructor
#unction myclass39 :
return3*'+E9;
;
;
$my%class > ne8 myclass39;
$class%=ars > Eet%class%=ars3Eet%class3$my%class99;
#oreach 3$class%=ars as $name >> $=alue9 :
echo "$name @ $=alueVn";
;
?>
ProduciraC
// Ze#ore H 1.C.2
=arC @ xy0
=ar< @ 622
// ,s o# H 1.C.2
=ar6 @
=arC @ xy0
=ar< @ 622
$er tam#i<n get>class>methods./A get>ob'ect>5ars./
get>class
>P&P 8 A P&P 4?
getZclass 22 Returns the name o( the class o( an o#'ect
Kescription
string get>class > o#'ect o#' ?
,his (unction returns the name o( the class o( Ehich the o#'ect o1U is an instance; Returns FALSE i(
o1U is not an o#'ect;
Nota- A class de(ined in a P&P eFtension is returned in its original notation; .n P&P 8
get>class./ returns a user de(ined class name in loEercaseA #ut in P&P 4 it Eill return
the class name in itHs original notation tooA 'ust li"e class names (rom P&P eFtensions;
E'emplo !. )sing get>class./
<?php
class #oo :
#unction #oo39
:
// implements some loEic
;
#unction name39
:
echo ""y name is " , Eet%class3$this9 , "Vn";
;
;
// create an object
$bar > ne8 #oo39;
// external call
echo "4ts name is " , Eet%class3$bar9 , "Vn";
// internal call
$barF>name39;
?>
+l resultado del e'emplo seriaC
4ts name is #oo
"y name is #oo
ee also get>parent>class./A gettype./A and is>subclass>of./;
get>declared>classes
>P&P 8 A P&P 4?
getZdeclaredZclasses 22 Returns an array Eith the name o( the de(ined classes
Kescription
array get>declared>classes > void ?
,his (unction returns an array o( the names o( the declared classes in the current script;
Nota- .n P&P 8;3;1pl0A three eFtra classes are returned at the #eginning o( the arrayC
stdClass >de(ined in Yend/0end.c?A J5erloadedTestClass >de(ined in
ext/standard/basic%#unctions.c? and Kirectory >de(ined in
ext/standard/dir.c?;
Also note that depending on Ehat li#raries you have compiled into P&PA additional
classes could #e present; ,his means that you Eill not #e a#le to de(ine your oEn classes
using these names; ,here is a list o( prede(ined classes in the Prede(ined 5lasses section
o( the appendices;
E'emplo !. get>declared>classes./ e+ample
<?php
print%r3Eet%declared%classes399;
?>
+l resultado del e'emplo seria algo similar aC
,rray
3
)2/ >> stdRlass
)6/ >> %%H%4ncomplete%Rlass
)C/ >> Lirectory
9
ee also class>e+ists./A and get>declared>interfaces./;
get>declared>interfaces
>P&P 4?
getZdeclaredZinter(aces 22 Returns an array o( all declared inter(aces
Kescription
array get>declared>interfaces > void ?
,his (unction returns an array o( the names o( the declared inter(aces in the current script;
E'emplo !. get>declared>interfaces./ e+ample
<?php
print%r3Eet%declared%inter#aces399;
?>
+l resultado del e'emplo seria algo similar aC
,rray
3
)2/ >> *ra=ersable
)6/ >> 4terator,EEreEate
)C/ >> 4terator
)</ >> ,rray,ccess
)1/ >> re#lector
)5/ >> 'ecursi=e4terator
)G/ >> &eeIable4terator
9
ee also get>declared>classes./;
get>ob'ect>5ars
>P&P 8 A P&P 4?
getZo#'ectZvars 22 Devuelve un vector de propiedades del o#'ecto
Kescripci"n
array get>ob'ect>5ars > o#'ect o#' ?
+sta (unci-n devuelve una matriz con las propiedades de(inidas en el o#'ecto especi(icado como
o1U;
Nota- 5on anterioridad a P&P 8;0;3A si las varia#les declaradas en la clase a la /ue
pertenece o1UA no les ha sido asignado un valorA no ser*n devueltas en el vector; +n
versiones posteriores a P&P 8;0;3 se les asignar* un valor NULL;
E'emplo !. )so de get>ob'ect>5ars./
<?php
class ointCL :
=ar $x, $y;
=ar $label;
#unction ointCL3$x, $y9 :
$thisF>x > $x;
$thisF>y > $y;
;
#unction setOabel3$label9 :
$thisF>label > $label;
;
#unction Eetoint39 :
return array3"x" >> $thisF>x,
"y" >> $thisF>y,
"label" >> $thisF>label9;
;
;
// "$label" is declared but not de#ined
$p6 > ne8 ointCL36.C<<, <.1159;
print%r3Eet%object%=ars3$p699;
$p6F>setOabel3"point U6"9;
print%r3Eet%object%=ars3$p699;
?>
+l resultado de este programa esC
,rray
3
)x/ >> 6.C<<
)y/ >> <.115
)label/ >>
9
,rray
3
)x/ >> 6.C<<
)y/ >> <.115
)label/ >> point U6
9
$er tam#ien get>class>methods./ y get>class>5ars./
get>parent>class
>P&P 8 A P&P 4?
getZparentZclass 22 Retrieves the parent class name (or o#'ect or class
Kescription
string get>parent>class > miFed o#' ?
.( o1U is an o#'ectA returns the name o( the parent class o( the class o( Ehich o1U is an instance;
.( o1U is a stringA returns the name o( the parent class o( the class Eith that name; ,his (unctionality
Eas added in P&P 8;3;4;
E'emplo !. )sing get>parent>class./
<?php
class dad :
#unction dad39
:
// implements some loEic
;
;
class child extends dad :
#unction child39
:
echo "4Mm " , Eet%parent%class3$this9 , "Ms sonVn";
;
;
class childC extends dad :
#unction childC39
:
echo "4Mm " , Eet%parent%class3MchildCM9 , "Ms son tooVn";
;
;
$#oo > ne8 child39;
$bar > ne8 childC39;
?>
+l resultado del e'emplo seriaC
4Mm dadMs son
4Mm dadMs son too
ee also get>class./ and is>subclass>of./;
interface>e+ists
>no version in(ormationA might #e only in 5$?
inter(aceZeFists 22 5hec"s i( the inter(ace has #een de(ined
Kescription
#ool interface>e+ists > string inter(aceZname PA #ool autoloadQ ?
,his (unction returns TRUE i( the inter(ace given #y 6nter9ace_name has #een de(inedA FALSE
otherEise;
E'emplo !. interface>e+ists./ e+ample
<?php
// RhecI the inter#ace exists be#ore tryinE to use it
i# 3inter#ace%exists3M"y4nter#aceM99 :
class "yRlass implements "y4nter#ace
:
// "ethods
;
;
?>
interface>e+ists./ Eill attempt to call ZZautoload #y de(aultA i( you donHt Eant interface>e+ists./ to
call ZZautoloadA you can set the parameter autoloa# to FALSE;
ee also class>e+ists./;
is>a
>P&P 8 _^ 8;0;3A P&P 4?
isZa 22 Returns TRUE i( the o#'ect is o( this class or has this class as one o( its parents
Kescription
#ool is>a > o#'ect o#'ectA string classZname ?
,his (unction returns TRUE i( the o#'ect is o( this class or has this class as one o( its parentsA
FALSE otherEise;
E'emplo !. is>a./ e+ample
<?php
// de#ine a class
class 7idEetSactory
:
=ar $oinI > MmooM;
;
// create a ne8 object
$7S > ne8 7idEetSactory39;
i# 3is%a3$7S, M7idEetSactoryM99 :
echo "yes, V$7S is still a 7idEetSactoryVn";
;
?>
,he is>a./ (unction is deprecated as o( P&P 4 in (avor o( the instanceo( type operator; .n the a#ove
eFample Ee could use the (olloEing in P&P 4C
E'emplo *. )sing the instanceof operator in PHP 9
<?php
i# 3$7S instanceo# 7idEetSactory9 :
echo MPes, $7S is a 7idEetSactoryM;
;
?>
ee also get>class./A get>parent>class./A and is>subclass>of./;
is>subclass>of
>P&P 8 A P&P 4?
isZsu#classZo( 22 Returns TRUE i( the o#'ect has this class as one o( its parents
Kescription
#ool is>subclass>of > miFed o#'ectA string classZname ?
,his (unction returns TRUE i( the o#'ect o1UectA #elongs to a class Ehich is a su#class o(
class_nameA FALSE otherEise;
Nota- ince P&P 4;3;7 you may also speci(y the o1Uect parameter as a string >the name
o( the class?;
E'emplo !. is>subclass>of./ e+ample
<?php
// de#ine a class
class 7idEetSactory
:
=ar $oinI > MmooM;
;
// de#ine a child class
class 7idEetSactory%Rhild extends 7idEetSactory
:
=ar $oinI > MoinIM;
;
// create a ne8 object
$7S > ne8 7idEetSactory39;
$7SR > ne8 7idEetSactory%Rhild39;
i# 3is%subclass%o#3$7SR, M7idEetSactoryM99 :
echo "yes, V$7SR is a subclass o# 7idEetSactoryVn";
; else :
echo "no, V$7SR is not a subclass o# 7idEetSactoryVn";
;
i# 3is%subclass%o#3$7S, M7idEetSactoryM99 :
echo "yes, V$7S is a subclass o# 7idEetSactoryVn";
; else :
echo "no, V$7S is not a subclass o# 7idEetSactoryVn";
;
// usable only since H 5.2.<
i# 3is%subclass%o#3M7idEetSactory%RhildM, M7idEetSactoryM99 :
echo "yes, 7idEetSactory%Rhild is a subclass o# 7idEetSactoryVn";
; else :
echo "no, 7idEetSactory%Rhild is not a subclass o# 7idEetSactoryVn";
;
?>
+l resultado del e'emplo seriaC
yes, $7SR is a subclass o# 7idEetSactory
no, $7S is not a subclass o# 7idEetSactory
yes, 7idEetSactory%Rhild is a subclass o# 7idEetSactory
ee also get>class./A get>parent>class./ and is>a./;
method>e+ists
>P&P 8 A P&P 4?
methodZeFists 22 5omprue#a /ue el met-do de clase eFiste
Kescripci"n
#ool method>e+ists > o#'ect o#'ectA string methodZname ?
+sta (unci-n devuelve verdadero >TRUE? si el met-do re(erido por metho#_name ha sido de(inido
en el o#'ecto o1UectA en cual/uier otro caso devuelve (also >FALSE?
III. ;unciones CJM y .Net .2indo3s/
Introducci"n
5OM es un acr-nimo para 5omponent O#'ect Model >Modelo de O#'etos por 5omponentes?X es
una capa orientada a o#'etos >asi como servicios asociados? /ue cu#re la especi(icaci-n D5+ RP5
>un est*ndar a#ierto? y de(ine una convenci-n comBn de llamado /ue permite /ue c-digo escrito en
cual/uier lengua'e pueda llamar e inter2operar con c-digo escrito en cual/uier otro lengua'e
>provisto /ue am#os lengua'es hagan uso de 5OM?; No solo es posi#le escri#ir el c-digo en
cual/uier lengua'eA tam#i<n es cierto /ue no necesita ser parte del mismo e'ecuta#leX el c-digo
puede ser cargado desde un recurso DLLA encontrarse en otro proceso corriendo en la misma
m*/uinaA oA mediante D5OM >5OM Distri#uido?A encontrarse en otro proceso en una m*/uina
remotaA todo esto sin re/uerir /ue su c-digo sepa si/uiera en d-nde reside el componente;
+Fiste un su#2con'unto de 5OM conocido como Automatizaci-n OL+ /ue se compone de un grupo
de inter(aces OL+ /ue permiten los enlaces (leFi#les con o#'etos 5OMA de modo /ue puedan ser
suscepti#les a introspecci-n y llamados en tiempo de e'ecuci-n sin conocimientos en tiempo de
compilaci-n so#re el modo de operaci-n del o#'eto; La eFtensi-n 5OM de P&P utiliza las inter(aces
de Automatizaci-n OL+ para permitirle crear y llamar o#'etos compati#les desde sus scripts;
,<cnicamente ha#landoA <sta de#er)a ser llamada la =+Ftensi-n de Automatizaci-n OL+ para P&P=A
ya /ue no todos los o#'etos 5OM son compati#les con OL+;
Ahora #ienA Upor/u< /uerr)a o de#er)a usar 5OMN 5OM es una de las (ormas principales de unir
aplicaciones y componentes en la plata(orma LindoEsX mediante el usa de 5OM usted puede
iniciar Microso(t LordA llenar una plantilla de documento y guardar el resultado como un
documento Lord y enviarlo a un visitante de su sitio Ee#; ,am#i<n puede usar 5OM para realizar
tareas administrativas para su red y para con(igurar su servidor Ee# >..?X tales son apenas los usos
m*s comunesX usted puede hacer mucho m*s con 5OM;
A partir de P&P 4A esta eFtensi-n >y su documentaci-n? (ue re2escrita por completo y se ha
eliminado gran parte del material con(uso e inBtil; AdicionalmenteA se o(rece soporte para la
creaci-n de instancias y ensam#les ;Net usando la capa de interopera#ilidad 5OM o(recida por
Microso(t;
Por (avor lea este art)culo para una vista general de los cam#ios en <sta eFtensi-n en P&P 4;
Me?uirimientos
Las (unciones 5OM se encuentran disponi#les Bnicamente para la versi-n LindoEs de P&P;
+l soporte para ;Net re/uiere P&P 4 y el entorno de desarrollo ;Net;
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
La versi-n para LindoEs de +!+ tiene soporte nativo para esta eFtensi-n; No se necesita cargar
ninguna eFtensi-n adicional para usar estas (unciones;
@sted es responsa#le de la instalaci-n del soporte para los varios o#'etos 5OM /ue piensa usar
>tales como M Lord?X nosotros no incluimos todos <stos con P&PA ni podemos hacerlo;
;or Each
A partir de P&P 4A usted puede usar la sentencia la secci-n de nom#re 9oreach en 5ap)tulo 1K de
P&P para iterar so#re los contenidos de un .+num$ariant 5OMDOL+ est*ndar; +n t<rminos m*s
simplesA esto /uiere decir /ue puede usar (oreach en a/uellas situaciones en donde podr)a ha#er
usado 3or Each en c-digo $BDAP;
E'emplo !. ;or Each en A,P
<\
&et objetoLominio > -et?bject3"7in.*@//Lomain"9
Sor Each obj in objetoLominio
'esponse.7rite obj..ame & "<br />"
.ext
\>
E'emplo *. 3hile./ ... Ne+t./ en PHP 8
<?php
$objetoLominio > ne8 R?"3"7in.*@//Lomain"9;
8hile 3$obj > $objetoLominioF>.ext399 :
echo $objF>.ame . "<br />";
;
?>
E'emplo 7. foreach en PHP 9
<?php
$objetoLominio > ne8 R?"3"7in.*@//Lomain"9;
#oreach 3$objetoLominio as $obj9 :
echo $objF>.ame . "<br />";
;
?>
Matrices y propiedades CJM tipo(matri6
Muchos o#'etos 5OM eFponen sus propiedades como matricesA o usando un acceso estilo2matriz;
+n P&P 8A es posi#le usar la sintaFis de matrices de P&P para leerDescri#ir tales propiedadesA pero
s-lo es posi#le manipular una dimensi-n; i desea leer una propiedad multi2dimensionalA puede
crear el acceso en (orma de un llamado de (unci-nA en donde cada par*metro representa cada
par*metro del acceso a la matrizA aun/ue no hay (orma de escri#ir tal tipo de propiedad;
P&P 4 introduce las siguientes caracter)sticas nuevas para (acilitar su vidaC
Acceso a matrices multi2dimensionalesA o propiedades 5OM /ue re/uieren mBltiples
par*metros usando la sintaFis de matrices de P&P; ,am#i<n puede escri#ir o de(inir
propiedades usando <sta t<cnica;
.terar a trav<s de a(eArrays >=verdaderas= matrices? usando la estructura de control la
secci-n de nom#re 9oreach en 5ap)tulo 1K ; +sto (unciona ya /ue los a(eArrays incluyen
in(ormaci-n so#re su tamaWo; i una propiedad estilo2matriz implementa .+num$ariantA
entonces tam#i<n puede usar (oreach para tales propiedadesX eche un vistazo a la secci-n de
nom#re 3or Each para m*s in(ormaci-n so#re este tema;
E+cepciones .PHP 9/
+sta eFtensi-n arro'a instancias de la clase com_e8cept6on siempre /ue se presente un error
potencialmente (atal reportado por 5OM; ,odas las eFcepciones 5OM tienen una propiedad co#e
#ien de(inida /ue corresponde con el valor de retorno &R+@L, proveniente de las varias
operaciones 5OM; +s posi#le usar <ste c-digo para tomar decisiones program*ticas so#re c-mo
mane'ar la eFcepci-n;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Com configuration options
Name Kefault Changeable
com;alloEZdcom =3=
P&PZ.N.Z%,+
M
com;autoregisterZtypeli# =3= P&PZ.N.ZALL
com;autoregisterZver#ose =3= P&PZ.N.ZALL
com;autoregisterZcasesensiti
ve
=1= P&PZ.N.ZALL
com;codeZpage == P&PZ.N.ZALL
com;typeli#Z(ile ==
P&PZ.N.Z%,+
M
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
com.allo7_#com
Lhen this is turned onA P&P Eill #e alloEed to operate as a D25OM >Distri#uted 5OM? client
and Eill alloE the P&P script to instantiate 5OM o#'ects on a remote server;
com.autoreE6ster_t?pel61
Lhen this is turned onA P&P Eill attempt to register constants (rom the typeli#rary o( o#'ects
that it instantiatesA i( those o#'ects implement the inter(aces re/uired to o#tain that
in(ormation; ,he case sensitivity o( the constants it registers is controlled #y the
com.autoreE6ster_casesens6t6e con(iguration directive;
com.autoreE6ster_er1ose
Lhen this is turned onA any pro#lems Eith loading a typeli#rary during o#'ect instantiation
Eill #e reported using the P&P error mechanism; ,he de(ault is o((A Ehich does not emit any
indication i( there Eas an error (inding or loading the type li#rary;
com.autoreE6ster_casesens6t6e
Lhen this is turned on >the de(ault?A constants (ound in auto2loaded type li#raries Eill #e
registered case sensitively; ee com>load>typelib./ (or more details;
com.co#e_paEe
.t controls the de(ault character set code2page to use Ehen passing strings to and (rom 5OM
o#'ects; .( set to an empty stringA P&P Eill assume that you Eant CP_ACPA Ehich is the
de(ault system AN. code page;
.( the teFt in your scripts is encoded using a di((erent encodingDcharacter set #y de(aultA setting
this directive Eill save you (rom having to pass the code page as a parameter to the 5OM
class constructor; Please note that #y using this directive >as Eith any P&P con(iguration
directive?A your P&P script #ecomes less porta#leX you should use the 5OM constructor
parameter Ehenever possi#le;
Nota- ,his con(iguration directive Eas introduced Eith P&P 4;
com.t?pel61_96le
Lhen setA this should hold the path to a (ile that contains a list o( typeli#raries that should #e
loaded on startup; +ach line o( the (ile Eill #e treated as the type li#rary name and loaded as
though you had called com>load>typelib./; ,he constants Eill #e registered persistentlyA so
that the li#rary only needs to #e loaded once; .( a type li#rary name ends Eith the string Kc6s or
Kcase_6nsens6t6eA then the constants (rom that li#rary Eill #e registered case insensitively;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
CLSCT%_INPROC_SER$ER >integer?
CLSCT%_INPROC_HANDLER >integer?
CLSCT%_LOCAL_SER$ER >integer?
CLSCT%_REMOTE_SER$ER >integer?
CLSCT%_SER$ER >integer?
CLSCT%_ALL >integer?
$T_NULL >integer?
$T_EMPTY >integer?
$T_UI) >integer?
$T_I* >integer?
$T_I+ >integer?
$T_R+ >integer?
$T_R, >integer?
$T_(OOL >integer?
$T_ERROR >integer?
$T_CY >integer?
$T_DATE >integer?
$T_(STR >integer?
$T_DECIMAL >integer?
$T_UN&NO"N >integer?
$T_DISPATCH >integer?
$T_$ARIANT >integer?
$T_I) >integer?
$T_UI* >integer?
$T_UI+ >integer?
$T_INT >integer?
$T_UINT >integer?
$T_ARRAY >integer?
$T_(YREF >integer?
CP_ACP >integer?
CP_MACCP >integer?
CP_OEMCP >integer?
CP_UTF- >integer?
CP_UTF, >integer?
CP_SYM(OL >integer?
CP_THREAD_ACP >integer?
$ARCMP_LT >integer?
$ARCMP_E. >integer?
$ARCMP_#T >integer?
$ARCMP_NULL >integer?
NORM_I#NORECASE >integer?
NORM_I#NORENONSPACE >integer?
NORM_I#NORESYM(OLS >integer?
NORM_I#NORE"IDTH >integer?
NORM_I#NORE&ANATYPE >integer?
NORM_I#NORE&ASHIDA >integer?
DISP_E_DI$(Y/ERO >integer?
DISP_E_O$ERFLO" >integer?
M&_E_UNA$AILA(LE >integer?
Cer tambi%n
Para m*s in(ormaci-n so#re 5OMA lea la especi(icaci-n 5OM o /uiz*s eche un vistazo a la Otra
Bi#lioteca 5OM M*s >%A5L por sus siglas en .ngl<s? de Don BoF; Puede encontrar in(ormaci-n
adicional en nuestro FAO so#re 5ap)tulo :0; i est* pensando en usar aplicaciones M O((ice en el
lado del servidorA es #uena idea /ue lea la in(ormaci-n encontrada a/u)C 5onsideraciones para la
Automatizaci-n de O((ice en el Lado del ervidor;
Tabla de contenidos
5OM 22 5OM class
DO,N+, 22 DO,N+, class
$AR.AN, 22 $AR.AN, class
comZaddre( 22 .ncreases the components re(erence counter PdeprecatedQ
comZcreateZguid 22 Generate a glo#ally uni/ue identi(ier >G@.D?
comZeventZsin" 22 5onnect events (rom a 5OM o#'ect to a P&P o#'ect
comZgetZactiveZo#'ect 22 Returns a handle to an already running instance o( a 5OM o#'ect
comZget 22 NNN
comZinvo"e 22 NNN
comZisenum 22 .ndicates i( a 5OM o#'ect has an .+num$ariant inter(ace (or iteration PdeprecatedQ
comZloadZtypeli# 22 Loads a ,ypeli#
comZload 22 NNN
comZmessageZpump 22 Process 5OM messagesA sleeping (or up to timeoutms milliseconds
comZprintZtypein(o 22 Print out a P&P class de(inition (or a dispatcha#le inter(ace
comZpropget 22 NNN
comZpropput 22 NNN
comZpropset 22 NNN
comZrelease 22 Decreases the components re(erence counter PdeprecatedQ
comZset 22 NNN
variantZa#s 22 Returns the a#solute value o( a variant
variantZadd 22 =Adds= tEo variant values together and returns the result
variantZand 22 per(orms a #itEise AND operation #etEeen tEo variants and returns the result
variantZcast 22 5onvert a variant into a neE variant o#'ect o( another type
variantZcat 22 concatenates tEo variant values together and returns the result
variantZcmp 22 5ompares tEo variants
variantZdateZ(romZtimestamp 22 Returns a variant date representation o( a uniF timestamp
variantZdateZtoZtimestamp 22 5onverts a variant dateDtime value to uniF timestamp
variantZdiv 22 Returns the result (rom dividing tEo variants
variantZe/v 22 Per(orms a #itEise Walence on tEo variants
variantZ(iF 22 Returns the integer portion N o( a variant
variantZgetZtype 22 Returns the type o( a variant o#'ect
variantZidiv 22 5onverts variants to integers and then returns the result (rom dividing them
variantZimp 22 Per(orms a #itEise implication on tEo variants
variantZint 22 Returns the integer portion o( a variant
variantZmod 22 Divides tEo variants and returns only the remainder
variantZmul 22 multiplies the values o( the tEo variants and returns the result
variantZneg 22 Per(orms logical negation on a variant
variantZnot 22 Per(orms #itEise not negation on a variant
variantZor 22 Per(orms a logical dis'unction on tEo variants
variantZpoE 22 Returns the result o( per(orming the poEer (unction Eith tEo variants
variantZround 22 Rounds a variant to the speci(ied num#er o( decimal places
variantZsetZtype 22 5onvert a variant into another type =in2place=
variantZset 22 Assigns a neE value (or a variant o#'ect
variantZsu# 22 su#tracts the value o( the right variant (rom the le(t variant value and returns the
result
variantZFor 22 Per(orms a logical eFclusion on tEo variants
CJM
>no version in(ormationA might #e only in 5$?
5OM 22 5OM class
,inopsis
$obj > ne8 R?"3",pplication.4L"9
Kescription
,he 5OM class alloEs you to instantiate an OL+ compati#le 5OM o#'ect and call its methods and
access its properties;
Methods
com CJM--CJM > string moduleZname PA miFed serverZname PA int codepage PA string typeli#QQQ ?
5OM class constructor; ,he parameters have the (olloEing meaningsC
moduleZname
5an #e a Prog.DA 5lass .D or Moni"er that names the component to load;
A Prog.D is typically the application or DLL nameA (olloEed #y a periodA (olloEed #y the
o#'ect name; e;gC Ior#.,ppl6cat6on;
A 5lass .D is the @@.D that uni/uely identi(ies a given class;
A Moni"er is a special (orm o( namingA similar in concept to a @RL schemeA that identi(ies a
resource and speci(ies hoE it should #e loaded; As an eFampleA you could load up Lord and
get an o#'ect representing a Eord document #y speci(ying the (ull path to the Eord document
as the module nameA or you can use 4D,+: as a moni"er to use the AD. inter(ace to LDAP;
serverZname
,he name o( the D5OM server on Ehich the component should #e loaded and run; .( NULLA
the o#'ect is run using the de(ault (or the application; ,he de(ault is typically to run it on the
local machineA although the administrator might have con(igured the application to launch on
a di((erent machine;
.( you speci(y a non2NULL value (or serverA P&P Eill re(use to load the o#'ect unless the
com.allo7_#com con(iguration option is set to TRUE;
.( serer_name is an arrayA it should contain the (olloEing elements >case sensitivea?; Note
that they are all optional >although you need to speci(y #oth @sername and PassEord
together?X i( you omit the erver settingA the de(ault server Eill #e used >as mentioned a#ove?A
and the instantiation o( the o#'ect Eill not #e a((ected #y the com.allo7_#com directive;
Tabla !. KCJM ser5er name
ser%er_na
&e Bey
type description
erver string ,he name o( the server;
@sername string ,he username to connect as;
PassEord string ,he passEord (or Username;
Flags
intege
r
One or more o( the (olloEing constantsA logically ORHd togetherC
CLSCT%_INPROC_SER$ERA CLSCT%_INPROC_HANDLERA
CLSCT%_LOCAL_SER$ERA CLSCT%_REMOTE_SER$ERA
CLSCT%_SER$ER and CLSCT%_ALL; ,he de(ault value i( not
speci(ied here is CLSCT%_SER$ER i( you also omit SererA or
CLSCT%_REMOTE_SER$ER i( you do speci(y a server; %ou should
consult the Microso(t documentation (or 5o5reate.nstance (or more
in(ormation on the meaning o( these constantsX you Eill typically never
have to use them;
codepage
peci(ies the codepage that is used to convert strings to unicode2strings and vice versa; ,he
conversion is applied Ehenever a P&P string is passed as a parameter or returned (rom a
method o( this 5OM o#'ect; ,he code page is stic"y in P&P 4A Ehich means that it Eill
propagate to o#'ects and variants returned (rom the o#'ect;
Possi#le values are CP_ACP >use system de(ault AN. code page 2 the de(ault i( this
parameter is omitted?A CP_MACCPA CP_OEMCPA CP_SYM(OLA CP_THREAD_ACP >use
codepageDlocale set (or the current eFecuting thread?A CP_UTF- and CP_UTF,; %ou may also
use the num#er (or a given codepageX consult the Microso(t documentation (or more details on
codepages and their numeric values;
J5erloaded Methods
,he returned o#'ect is an overloaded o#'ectA Ehich means that P&P does not see any (iFed methods
as it does Eith regular classesX insteadA any property or method accesses are passed through to
5OM;
tarting Eith P&P 4A P&P Eill automatically detect methods that accept parameters #y re(erenceA
and Eill automatically convert regular P&P varia#les to a (orm that can #e passed #y re(erence; ,his
means that you can call the method very naturallyX you neednHt go to any eFtra e((ort in your code;
.n P&P 8A to pass parameters #y re(erence you need to create an instance o( the $AR.AN, class to
Erap the #yre( parameters;
Pseudo Methods
.n P&P versions prior to 4A a num#er o( not very pleasant hac"s meant that the (olloEing method
names Eere not passed through to 5OM and Eere handled directly #y P&P; P&P 4 eliminates these
thingsX read the details #eloE to determine hoE to (iF your scripts; ,hese magic method names are
case insensitive;
void CJM--AddMef > void ?
Arti(icially adds a re(erence count to the 5OM o#'ect;
A5iso
%ou should never need to use this method; .t eFists as a logical complement to the Release>?
method #eloE;
void CJM--Melease > void ?
Arti(icially removes a re(erence count (rom the 5OM o#'ect;
A5iso
%ou should never need to use this method; .ts eFistence in P&P is a #ug designed to Eor" around
a #ug that "eeps 5OM o#'ects running longer than they should;
Pseudo Methods for Iterating
,hese pseudo methods are only availa#le i( com>isenum./ returns TRUEA in Ehich caseA they hide
any methods Eith the same names that might otherEise #e provided #y the 5OM o#'ect; ,hese
methods have all #een eliminated in P&P 4A and you should use la secci-n de nom#re 3or Each en
Re(erencia J..A 3unc6ones COM ? .Net LI6n#o7sM instead;
variant CJM--All > void ?
Returns a variant representing a a(eArray that has 13 elementsX each element Eill #e an emptyDnull
variant; ,his (unction Eas supposed to return an array containing all the elements (rom the iteratorA
#ut Eas never completed; Do not use;
variant CJM--Ne+t > void ?
Returns a variant representing the neFt element availa#le (rom the iteratorA or FALSE Ehen there
are no more elements;
variant CJM--Pre5 > void ?
Returns a variant representing the previous element availa#le (rom the iteratorA or FALSE Ehen
there are no more elements;
void CJM--Meset > void ?
ReEinds the iterator #ac" to the start;
CJM e+amples
E'emplo !. CJM e+ample .!/
<?php
// startinE 8ord
$8ord > ne8 R?"3"8ord.application"9 or die3"+nable to instantiate 7ord"9;
echo "Ooaded 7ord, =ersion :$8ordF>(ersion;Vn";
//brinE it to #ront
$8ordF>(isible > 6;
//open an empty document
$8ordF>LocumentsF>,dd39;
//do some 8eird stu##
$8ordF>&electionF>*ype*ext3"*his is a test..."9;
$8ordF>Locuments)6/F>&a=e,s3"+seless test.doc"9;
//closinE 8ord
$8ordF>Nuit39;
//#ree the object
$8ord > null;
?>
E'emplo *. CJM e+ample .*/
<?php
$conn > ne8 R?"3",L?LZ.Ronnection"9 or die3"Rannot start ,L?"9;
$connF>?pen3"ro=ider>&NO?OELZ; Lata &ource>localhost;
4nitial RataloE>database; +ser 4L>user; ass8ord>pass8ord"9;
$rs > $connF>Execute3"&EOER* W S'?" sometable"9; // 'ecordset
$num%columns > $rsF>SieldsF>Rount39;
echo $num%columns . "Vn";
#or 3$i>2; $i < $num%columns; $i[[9 :
$#ld)$i/ > $rsF>Sields3$i9;
;
$ro8count > 2;
8hile 3!$rsF>E?S9 :
#or 3$i>2; $i < $num%columns; $i[[9 :
echo $#ld)$i/F>=alue . "Vt";
;
echo "Vn";
$ro8count[[; // increments ro8count
$rsF>"o=e.ext39;
;
$rsF>Rlose39;
$connF>Rlose39;
$rs > null;
$conn > null;
?>
KJTNET
>no version in(ormationA might #e only in 5$?
DO,N+, 22 DO,N+, class
,inopsis
$obj > ne8 L?*.E*3"assembly", "classname"9
Kescription
,he DO,N+, class alloEs you to instantiate a class (rom a ;Net assem#ly and call its methods and
access its properties;
Methods
string KJTNET--KJTNET > string assem#lyZnameA string classZname PA int codepageQ ?
DO,N+, class constructor; assem1l?_name speci(ies Ehich assem#ly should #e loadedA and
class_name speci(ices Ehich class in that assem#ly to instantiate; %ou may optionally speci(y a
co#epaEe to use (or unicode string trans(ormationsX see the 5OM class (or more details on code
pages;
,he returned o#'ect is an overloaded o#'ectA Ehich means that P&P does not see any (iFed methods
as it does Eith regular classesX insteadA any property or method accesses are passed through to 5OM
and (rom there to DO,N+,; .n other EordsA the ;Net o#'ect is mapped through the 5OM
interopera#ility layer provided #y the ;Net runtime;
Once you have created a DO,N+, o#'ectA P&P treats it identically to any other 5OM o#'ectX all the
same rules apply;
E'emplo !. KJTNET e+ample
<?php
$stacI > ne8 L?*.E*3"mscorlib", "&ystem.Rollections.&tacI"9;
$stacIF>ush3"..et"9;
$stacIF>ush3"Hello "9;
echo $stacIF>op39 . $stacIF>op39;
?>
Nota- %ou need to install the ;Net runtime on your Ee# server to ta"e advantage o( this
(eature;
CAMIANT
>no version in(ormationA might #e only in 5$?
$AR.AN, 22 $AR.AN, class
,inopsis
$=(ar > ne8 (,'4,.*3$=ar9
Kescription
,he $AR.AN, is 5OMHs Walent o( the P&P zvalX it is a structure that can contain a value Eith a
range o( di((erent possi#le types; ,he $AR.AN, class provided #y the 5OM eFtension alloEs you
to have more control over the Eay that P&P passes values to and (rom 5OM;
Methods
o#'ect CAMIANT--CAMIANT > PmiFed value PA int type PA int codepageQQQ ?
$AR.AN, class constructor; ParametersC
value
initial value; i( omittedA or set to NULL an $,Z+MP,% o#'ect is created;
type
speci(ies the content type o( the $AR.AN, o#'ect; Possi#le values are one o( the $T_%%% la
secci-n de nom#re Constantes pre#e96n6#as en Re(erencia J..A 3unc6ones COM ? .Net
LI6n#o7sM;
.n P&P versions prior to P&P 4A you could (orce P&P to pass a variant o#'ect #y re(erence #y
ORHing $T_(YREF Eith the t?pe; .n P&P 4A this hac" is not supportedX insteadA P&P 4 can
detect parameters passed #y re(erence automaticallyX they do not even need to #e passed as
$AR.AN, o#'ects;
5onsult the MDN li#rary (or additional in(ormation on the $AR.AN, type;
codepage
speci(ies the codepage that is used to convert strings to unicode; ee the parameter o( the
same name in the 5OM class (or more in(ormation;
P&P versions prior to P&P 4 de(ine a num#er o( >undocumented? virtual properties (or instances o(
the $AR.AN, classX these properties have all #een removed in P&P 4 in (avour o( its more natural
syntaFX these di((erences are #est highlighted #y eFampleC
E'emplo !. Cariant e+ampleE PHP 8.+ style
<?php
$= > ne8 (,'4,.*31C9;
print "*he type is " . $=F>type . "<br/>";
print "*he =alue is " . $=F>=alue . "<br/>";
?>
E'emplo *. Cariant e+ampleE PHP 9 style
<?php
$= > ne8 (,'4,.*31C9;
print "*he type is " . =ariant%Eet%type3$=9 . "<br/>";
print "*he =alue is " . $= . "<br/>";
?>
,he reason (or the change is thatA internallyA the 5OM eFtension sees $AR.AN,A 5OM and
DO,N+, classes as the same thingA and the design philosophy (or these classes is that all property
and mem#er accesses are passed through to 5OM Eith no inter(erence; ,he neE syntaF is more
natural and less e((ortA and most o( the removed virtual properties didnHt ma"e any sense in a P&P
conteFt in any case;
Nota- P&P 4 ta"es a much simpler approach to handling $AR.AN,sX Ehen returning a
value or (etching a variant propertyA the variant is converted to a P&P value only Ehen
there is a direct mapping #etEeen the types that Eould not result in a loss o(
in(ormation; .n all other casesA the result is returned as an instance o( the $AR.AN,
class; %ou can (orce P&P to convert or evaluate the variant as a P&P native type #y
using a casting operator eFplicitlyA or implicitly casting to a string #y print./ing it; %ou
may use the Eide range o( variant (unctions to per(orm arithmetic operations on variants
Eithout (orcing a conversion or ris"ing a loss o( data;
ee also 5ariant>get>type./;
com>addref
>P&P 8 _^ 8;1;3?
comZaddre( 22 .ncreases the components re(erence counter PdeprecatedQ
Kescription
void com>addref > void ?
.ncreases the components re(erence counter;
A5iso
%ou should never need to use this (unction;
Nota- ,his (unction has gone aEay in P&P 4;
com>create>guid
>P&P 4?
comZcreateZguid 22 Generate a glo#ally uni/ue identi(ier >G@.D?
Kescription
string com>create>guid > void ?
Generates a Glo#ally @ni/ue .denti(ier >G@.D? and returns it as a string; A G@.D is generated in
the same Eay as D5+ @@.DHsA eFcept that the Microso(t convention is to enclose a G@.D in curly
#races;
ee also uuid>create./ in the P+5L uuid eFtension;
com>e5ent>sinB
>P&P 8 _^ 8;0;7A P&P 4?
comZeventZsin" 22 5onnect events (rom a 5OM o#'ect to a P&P o#'ect
Kescription
#ool com>e5ent>sinB > variant como#'ectA o#'ect sin"o#'ect PA miFed sin"inter(aceQ ?
.nstructs 5OM to sin" events generated #y como1Uect into the P&P o#'ect s6n>o1Uect; P&P Eill
attempt to use the de(ault dispinter(ace type speci(ied #y the typeli#rary associated Eith como1UectA
#ut you may override this choice #y setting s6n>6nter9ace to the name o( the dispinter(ace that you
Eant to use;
s6n>o1Uect should #e an instance o( a class Eith methods named a(ter those o( the desired
dispinter(aceX you may use com>print>typeinfo./ to help generate a template class (or this purpose;
Be care(ul hoE you use this (eatureX i( you are doing something similar to the eFample #eloEA then
it doesnHt really ma"e sense to run it in a Ee# server conteFt;
E'emplo !. CJM e5ent sinB e+ample
<?php
class 4EE=ent&inIer :
=ar $terminated > #alse;
#unction roEressRhanEe3$proEress, $proEressmax9 :
echo "Lo8nload proEress@ $proEress / $proEressmaxVn";
;
#unction LocumentRomplete3&$dom, $url9 :
echo "Locument $url completeVn";
;
#unction ?nNuit39 :
echo "Nuit!Vn";
$thisF>terminated > true;
;
;
$ie > ne8 R?"3"4nternetExplorer.,pplication"9;
// note that you donMt need the & #or H 5!
$sinI >& ne8 4EE=ent&inIer39;
com%e=ent%sinI3$ie, $sinI, "L7ebZro8serE=entsC"9;
$ieF>(isible > true;
$ieF>.a=iEate3"http@//888.php.net"9;
8hile3!$sinIF>terminated9 :
com%messaEe%pump312229;
;
$ie > null;
?>
ee also com>print>typeinfo./A com>message>pump./;
com>get>acti5e>ob'ect
>no version in(ormationA might #e only in 5$?
comZgetZactiveZo#'ect 22 Returns a handle to an already running instance o( a 5OM o#'ect
Kescription
variant com>get>acti5e>ob'ect > string progid PA int codeZpageQ ?
com>get>acti5e>ob'ect./ is similar to creating a neE instance o( a 5OM o#'ectA eFcept that it Eill
only return an o#'ect to your script i( the o#'ect is already running; OL+ applications use something
"noEn as the Running O#'ect ,a#le to alloE Eell2"noEn applications to #e launched only onceX
this (unction eFposes the 5OM li#rary (unction GetActiveO#'ect>? to get a handle on a running
instance;
proE6# must #e either the Prog.D or 5L.D (or the o#'ect that you Eant to access >(or eFample
Ior#.,ppl6cat6on?; co#e_paEe acts in precisely the same Eay that it does (or the 5OM class;
.( the re/uested o#'ect is runningA it Eill #e returned to your script 'ust li"e any other 5OM o#'ect;
OtherEise a com_e8cept6on Eill #e raised; ,here are a variety o( reasons Ehy this (unction might
(ailA the most common #eing that the o#'ect is not already running; .n that situationA the eFception
error code Eill #e M&_E_UNA$AILA(LEX you can use the EetCo#e method o( the eFception o#'ect
to chec" the eFception code;
A5iso
@sing com>get>acti5e>ob'ect./ in a Ee# server conteFt is not alEays a smart idea; Most
5OMDOL+ applications are not designed to handle more than one client concurrentlyA even >or
especiallya? Microso(t O((ice; %ou should read 5onsiderations (or erver2ide Automation o(
O((ice (or more in(ormation on the general issues involved;
com>get
>P&P 7_^ 7;3;7A P&P 8 _^ 8;3;4?
comZget 22 NNN
Kescripci"n
miFed com>get > resource o#'ectA string property ?
com>in5oBe
>P&P 7_^ 7;3;7?
comZinvo"e 22 NNN
Kescripci"n
miFed com>in5oBe > resource o#'ectA string (unctionZname PA miFed (unction parametersA ;;;Q ?
com>isenum
>P&P 8 _^ 8;1;3?
comZisenum 22 .ndicates i( a 5OM o#'ect has an .+num$ariant inter(ace (or iteration PdeprecatedQ
Kescription
#ool com>isenum > variant comZmodule ?
5hec"s to see i( a 5OM o#'ect can #e enumerated using the Ne8tLM method hac"; Returns TRUE i( it
canA FALSE i( it cannot; ee 5OM class (or more details on these methods;
Nota- ,his (unction does not eFist in P&P 4X use the more natural la secci-n de nom#re
9oreach en 5ap)tulo 1K statement to iterate over the contents o( 5OM o#'ects; ee la
secci-n de nom#re 3or Each en Re(erencia J..A 3unc6ones COM ? .Net LI6n#o7sM (or
more details;
com>load>typelib
>P&P 8 _^ 8;1;3A P&P 4?
comZloadZtypeli# 22 Loads a ,ypeli#
Kescription
#ool com>load>typelib > string typeli#Zname PA #ool caseZinsensitiveQ ?
Loads a type2li#rary and registers its constants in the engineA as though they Eere de(ined using
define./; ,he case_6nsens6t6e #ehaves in the same Eay as the parameter Eith the same name in the
define./ (unction;
t?pel61_name can #e one o( the (olloEingC
,he (ilename o( a .tl1 (ile or the eFecuta#le module that contains the type li#rary;
,he type li#rary G@.DA (olloEed #y its version num#erA (or eFample G00000200=0000=0010=
P000=00,,00XD2E,;HC2C0;
,he type li#rary nameA e;g; M6croso9t O4E DA ,ct6eF Data O1Uects 1.0 461rar?;
P&P Eill attempt to resolve the type li#rary in this orderA as the process gets more and more
eFpensive as you progress doEn the listX searching (or the type li#rary #y name is handled #y
physically enumerating the registry until Ee (ind a match;
Note that it is much more e((icient to use the com.t?pel61_96le con(iguration setting to pre2load and
register the constantsA although not so (leFi#le;
.( you have turned on com.autoreE6ster_t?pel61 A then P&P Eill attempt to automatically register the
constants associated Eith a 5OM o#'ect Ehen you instantiate it; ,his depends on the inter(aces
provided #y the 5OM o#'ect itsel(A and may not alEays #e possi#le;
com>load
>P&P 7_^ 7;3;7?
comZload 22 NNN
Kescripci"n
string com>load > string module name PA string server nameQ ?
com>message>pump
>P&P 8 _^ 8;0;7A P&P 4?
comZmessageZpump 22 Process 5OM messagesA sleeping (or up to timeoutms milliseconds
Kescription
#ool com>message>pump > Pint timeoutmsQ ?
,his (unction Eill sleep (or up to t6meoutms millisecondsA or until a message arrives in the /ueue; .(
a message or messages arrives #e(ore the timeoutA they Eill #e dispatchedA and the (unction Eill
return TRUE; .( the timeout occurs and no messages Eere processedA the return value Eill #e
FALSE; .( you do not speci(y a value (or t6meoutmsA then 3 Eill #e assumed; A 3 value means that
no Eaiting Eill #e per(ormedX i( there are messages pending they Eill #e dispatched as #e(oreX i(
there are no messages pendingA the (unction Eill return FALSE immediately Eithout sleeping;
,he purpose o( this (unction is to route 5OM calls #etEeen apartments and handle various
synchronization issues; ,his alloEs your script to Eait e((iciently (or events to #e triggeredA Ehile
still handling other events or running other code in the #ac"ground; %ou should use it in a loopA as
demonstrated #y the eFample in the com>e5ent>sinB./ (unctionA until you are (inished using event
#ound 5OM o#'ects;
com>print>typeinfo
>P&P 8 _^ 8;0;7A P&P 4?
comZprintZtypein(o 22 Print out a P&P class de(inition (or a dispatcha#le inter(ace
Kescription
#ool com>print>typeinfo > o#'ect como#'ect PA string dispinter(ace PA #ool Eantsin"QQ ?
,he purpose o( this (unction is to help generate a s"eleton class (or use as an event sin"; %ou may
also use it to generate a dump o( any 5OM o#'ectA provided that it supports enough o( the
introspection inter(acesA and that you "noE the name o( the inter(ace you Eant to display;
como1Uect should #e either an instance o( a 5OM o#'ectA or #e the name o( a typeli#rary >Ehich Eill
#e resolved according to the rules set out in com>load>typelib./?; #6sp6nter9ace is the name o( an
.Dispatch descendant inter(ace that you Eant to display; .( 7ants6n> is TRUEA the corresponding
sin" inter(ace Eill #e displayed instead;
ee also com>e5ent>sinB./A com>load>typelib./;
com>propget
>P&P 7_^ 7;3;7A P&P 8 _^ 8;3;4?
comZpropget 22 NNN
Kescripci"n
miFed com>propget > resource o#'ectA string property ?
com>propput
>P&P 7_^ 7;3;7A P&P 8 _^ 8;3;4?
comZpropput 22 NNN
Kescripci"n
void com>propput > resource o#'ectA string propertyA miFed value ?
com>propset
>P&P 7_^ 7;3;7A P&P 8 _^ 8;3;4?
comZpropset 22 NNN
Kescripci"n
void com>propset > resource o#'ectA string propertyA miFed value ?
+sta (unci-n es un alias para com>propput./;
com>release
>P&P 8 _^ 8;1;3?
comZrelease 22 Decreases the components re(erence counter PdeprecatedQ
Kescription
void com>release > void ?
Decreases the components re(erence counter;
A5iso
%ou should never need to use this (unction;
Nota- ,his (unction has gone aEay in P&P 4;
com>set
>P&P 7_^ 7;3;7A P&P 8 _^ 8;3;4?
comZset 22 NNN
Kescripci"n
void com>set > resource o#'ectA string propertyA miFed value ?
+sta (unci-n es un alias para com>set./;
5ariant>abs
>P&P 4?
variantZa#s 22 Returns the a#solute value o( a variant
Kescription
miFed 5ariant>abs > miFed val ?
Returns the a#solute value o( al;
ee also abs./;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>add
>P&P 4?
variantZadd 22 =Adds= tEo variant values together and returns the result
Kescription
miFed 5ariant>add > miFed le(tA miFed right ?
Adds le9t to r6Eht using the (olloEing rules >ta"en (rom the MDN li#rary?A Ehich correspond to
those o( $isual BasicC
Tabla !. Cariant Addition Mules
If Then
Both eFpressions are o( the string type 5oncatenation
One eFpression is a string type and the other a
character
Addition
One eFpression is numeric and the other is a string Addition
Both eFpressions are numeric Addition
+ither eFpression is N@LL N@LL is returned
Both eFpressions are empty
.nteger su#type is
returned
ee also 5ariant>sub./;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>and
>P&P 4?
variantZand 22 per(orms a #itEise AND operation #etEeen tEo variants and returns the result
Kescription
miFed 5ariant>and > miFed le(tA miFed right ?
Per(orms a #itEise AND operationA according to the (olloEing truth ta#leX note that this is slightly
di((erent (rom a regular AND operation;
Tabla !. Cariant ANK Mules
If left is If right is
then the result
is
TRUE TRUE TRUE
TRUE FALSE FALSE
TRUE NULL NULL
FALSE TRUE FALSE
FALSE FALSE FALSE
FALSE NULL FALSE
NULL TRUE NULL
NULL FALSE FALSE
NULL NULL NULL
ee also 5ariant>or./;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>cast
>P&P 4?
variantZcast 22 5onvert a variant into a neE variant o#'ect o( another type
Kescription
variant 5ariant>cast > variant variantA int type ?
,his (unction ma"es a copy o( ar6ant and then per(orms a variant cast operation to (orce the copy
to have the type given #y t?pe; t?pe should #e one o( the $T_%%% constants;
,his (unction Eraps $ariant5hange,ype>? in the 5OM li#raryX consult MDN (or more
in(ormation;
ee also 5ariant>set>type./;
5ariant>cat
>P&P 4?
variantZcat 22 concatenates tEo variant values together and returns the result
Kescription
miFed 5ariant>cat > miFed le(tA miFed right ?
5oncatenates le9t Eith r6Eht and returns the result;
ee also la secci-n de nom#re Opera#ores #e Ca#ena en 5ap)tulo 14 (or the string concatenation
operatorX this (unction is notionally Walent to 'le9t . 'r6Eht;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>cmp
>P&P 4?
variantZcmp 22 5ompares tEo variants
Kescription
int 5ariant>cmp > miFed le(tA miFed right PA int lcid PA int (lagsQQ ?
5ompares le9t Eith r6Eht and returns one o( the (olloEing valuesC
Tabla !. Cariant Comparision Mesults
5alue meaning
$ARCMP_LT le9t is less than r6Eht
$ARCMP_E. le9t is e/ual to r6Eht
$ARCMP_#T le9t is greater than r6Eht
$ARCMP_NULL +ither le9tA r6Eht or #oth are NULL
,his (unction Eill only compare scalar valuesA not arrays or variant records;
lc6# is a valid Locale .denti(ier to use Ehen comparing strings >this a((ects string collation?; 9laEs
can #e one or more o( the (olloEing values ORHd togetherA and a((ects string comparisonsC
Tabla *. Cariant Comparision ;lags
5alue meaning
NORM_I#NORECASE 5ompare case insensitively
NORM_I#NORENONSPACE .gnore nonspacing characters
NORM_I#NORESYM(OLS .gnore sym#ols
NORM_I#NORE"IDTH .gnore string Eidth
NORM_I#NORE&ANATYPE .gnore Sana type
NORM_I#NORE&ASHIDA
.gnore Ara#ic "ashida
characters
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>date>from>timestamp
>P&P 4?
variantZdateZ(romZtimestamp 22 Returns a variant date representation o( a uniF timestamp
Kescription
variant 5ariant>date>from>timestamp > int timestamp ?
5onverts t6mestamp (rom a uniF timestamp value into a variant o( type $T_DATE; ,his alloEs
easier interopa#ility #etEeen the uniF2ish parts o( P&P and 5OM;
ee also 5ariant>date>to>timestamp./ (or the inverse o( this operationA mBtime./A time./;
5ariant>date>to>timestamp
>P&P 4?
variantZdateZtoZtimestamp 22 5onverts a variant dateDtime value to uniF timestamp
Kescription
int 5ariant>date>to>timestamp > variant variant ?
5onverts ar6ant (rom a $T_DATE >or similar? value into a uniF timestamp; ,his alloEs easier
interopa#ility #etEeen the uniF2ish parts o( P&P and 5OM;
ee also 5ariant>date>from>timestamp./ (or the inverse o( this operationA date./A strftime./;
5ariant>di5
>P&P 4?
variantZdiv 22 Returns the result (rom dividing tEo variants
Kescription
miFed 5ariant>di5 > miFed le(tA miFed right ?
Divides le9t #y r6Eht and returns the resultA su#'ect to the (olloEing rulesC
Tabla !. Cariant Ki5ision Mules
If Then
Both eFpressions are o( the stringA dateA
characterA #oolean type
Dou#le is returned
One eFpression is a string type and the other a
character
Division and a dou#le is returned
One eFpression is numeric and the other is a
string
Division and a dou#le is returned;
Both eFpressions are numeric Division and a dou#le is returned
+ither eFpression is N@LL N@LL is returned
If Then
r6Eht is empty and le9t is anything #ut empty
A comZeFception Eith code
DISP_E_DI$(Y/ERO is throEn
le9t is empty and r6Eht is anything #ut empty; 3 as type dou#le is returned
Both eFpressions are empty
A comZeFception Eith code
DISP_E_O$ERFLO" is throEn
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>e?5
>P&P 4?
variantZe/v 22 Per(orms a #itEise Walence on tEo variants
Kescription
miFed 5ariant>e?5 > miFed le(tA miFed right ?
.( each #it in le9t is e/ual to the corresponding #it in r6Eht then TRUE is returnedA otherEise FALSE
is returned;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>fi+
>P&P 4?
variantZ(iF 22 Returns the integer portion N o( a variant
Kescription
miFed 5ariant>fi+ > miFed variant ?
.( ar6ant is negativeA then the (irst negative integer greater than or e/ual to the variant is returnedA
otherEise returns the integer portion o( the value o( ar6ant;
ee also 5ariant>int./A 5ariant>round./A floor./A ceil./A round./;
A5iso
,his documentation is #ased on the MDN documentationX it appears that this (unction is either
the same as 5ariant>int./A or that there is an error in the MDN documentation;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>get>type
>P&P 4?
variantZgetZtype 22 Returns the type o( a variant o#'ect
Kescription
int 5ariant>get>type > variant variant ?
,his (unction returns an integer value that indicates the type o( ar6antA Ehich can #e an instance o(
5OMA DO,N+, or $AR.AN, classes; ,he return value can #e compared to one o( the $T_%%%
constants;
,he return value (or 5OM and DO,N+, o#'ects Eill usually #e $T_DISPATCHX the only reason
this (unction Eor"s (or those classes is #ecause 5OM and DO,N+, are descendants o( $AR.AN,;
.n P&P versions prior to 4A you could o#tain this in(ormation (rom instances o( the $AR.AN, class
ONL%A #y reading a (a"e t?pe property; ee the $AR.AN, class (or more in(ormation on this;
5ariant>idi5
>P&P 4?
variantZidiv 22 5onverts variants to integers and then returns the result (rom dividing them
Kescription
miFed 5ariant>idi5 > miFed le(tA miFed right ?
5onverts le9t and r6Eht to integer valuesA and then per(orms integer division according the (olloEing
rulesC
Tabla !. Cariant Integer Ki5ision Mules
If Then
Both eFpressions are o( the stringA dateA
characterA #oolean type
Division and integer is returned
One eFpression is a string type and the other a
character
Division
One eFpression is numeric and the other is a
string
Division
Both eFpressions are numeric Division
+ither eFpression is N@LL N@LL is returned
Both eFpressions are empty
A comZeFception Eith code
DISP_E_DI$(Y/ERO is throEn
ee also 5ariant>di5./;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>imp
>P&P 4?
variantZimp 22 Per(orms a #itEise implication on tEo variants
Kescription
miFed 5ariant>imp > miFed le(tA miFed right ?
Per(orms a #itEise implication operationA according to the (olloEing truth ta#leC
Tabla !. Cariant Implication Table
If left is If right is
then the result
is
TRUE TRUE TRUE
TRUE FALSE TRUE
TRUE NULL TRUE
FALSE TRUE TRUE
FALSE FALSE TRUE
FALSE NULL TRUE
NULL TRUE TRUE
NULL FALSE NULL
NULL NULL NULL
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>int
>P&P 4?
variantZint 22 Returns the integer portion o( a variant
Kescription
miFed 5ariant>int > miFed variant ?
.( ar6ant is negativeA then the (irst negative integer greater than or e/ual to the variant is returnedA
otherEise returns the integer portion o( the value o( ar6ant;
ee also 5ariant>fi+./A 5ariant>round./A floor./A ceil./A round./;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>mod
>P&P 4?
variantZmod 22 Divides tEo variants and returns only the remainder
Kescription
miFed 5ariant>mod > miFed le(tA miFed right ?
Divides le9t #y r6Eht and returns the remainder;
ee also 5ariant>di5./A 5ariant>idi5./;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>mul
>P&P 4?
variantZmul 22 multiplies the values o( the tEo variants and returns the result
Kescription
miFed 5ariant>mul > miFed le(tA miFed right ?
Multiplies le9t #y r6Eht and returns the resultA su#'ect to the (olloEing rulesC
Tabla !. Cariant Multiplication Mules
If Then
Both eFpressions are o( the stringA dateA characterA #oolean
type
Multiplication
One eFpression is a string type and the other a character Multiplication
One eFpression is numeric and the other is a string Multiplication
Both eFpressions are numeric Multiplication
+ither eFpression is N@LL N@LL is returned
If Then
Both eFpressions are empty
+mpty string is
returned
Boolean values are converted to 21 (or FALSE and 3 (or TRUE;
ee also 5ariant>di5./A 5ariant>idi5./;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>neg
>P&P 4?
variantZneg 22 Per(orms logical negation on a variant
Kescription
miFed 5ariant>neg > miFed variant ?
Per(orms logical negation o( ar6ant and returns the result;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>not
>P&P 4?
variantZnot 22 Per(orms #itEise not negation on a variant
Kescription
miFed 5ariant>not > miFed variant ?
Per(orms #itEise not negation on ar6ant and returns the result; .( ar6ant is NULLA the result Eill
also #e NULL;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>or
>P&P 4?
variantZor 22 Per(orms a logical dis'unction on tEo variants
Kescription
miFed 5ariant>or > miFed le(tA miFed right ?
Per(orms a #itEise OR operationA according to the (olloEing truth ta#leX note that this is slightly
di((erent (rom a regular OR operation;
Tabla !. Cariant JM Mules
If left is If right is
then the result
is
TRUE TRUE TRUE
TRUE FALSE TRUE
TRUE NULL TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE
FALSE NULL NULL
NULL TRUE TRUE
NULL FALSE NULL
NULL NULL NULL
ee also 5ariant>and./A 5ariant>+or./;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>po3
>P&P 4?
variantZpoE 22 Returns the result o( per(orming the poEer (unction Eith tEo variants
Kescription
miFed 5ariant>po3 > miFed le(tA miFed right ?
Returns the result o( le9t to the poEer o( r6Eht;
ee also po3./;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>round
>P&P 4?
variantZround 22 Rounds a variant to the speci(ied num#er o( decimal places
Kescription
miFed 5ariant>round > miFed variantA int decimals ?
Returns the value o( ar6ant rounded to #ec6mals decimal places;
ee also round./;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>set>type
>P&P 4?
variantZsetZtype 22 5onvert a variant into another type =in2place=
Kescription
void 5ariant>set>type > variant variantA int type ?
,his (unction is similar to 5ariant>cast./ eFcept that the variant is modi(ied =in2place=X no neE
variant is created; ,he parameters (or this (unction have identical meaning to those o( 5ariant>cast
./;
ee also 5ariant>cast./;
5ariant>set
>P&P 4?
variantZset 22 Assigns a neE value (or a variant o#'ect
Kescription
void 5ariant>set > variant variantA miFed value ?
5onverts alue to a variant and assigns it to the ar6ant o#'ectX no neE variant o#'ect is createdA and
the old value o( ar6ant is (reedDreleased;
5ariant>sub
>P&P 4?
variantZsu# 22 su#tracts the value o( the right variant (rom the le(t variant value and returns the
result
Kescription
miFed 5ariant>sub > miFed le(tA miFed right ?
u#tracts r6Eht (rom le9t using the (olloEing rulesC
Tabla !. Cariant ,ubtraction Mules
If Then
Both eFpressions are o( the string type u#traction
One eFpression is a string type and the other a
character
u#traction
One eFpression is numeric and the other is a string u#traction;
Both eFpressions are numeric u#traction
+ither eFpression is N@LL N@LL is returned
Both eFpressions are empty
+mpty string is
returned
ee also 5ariant>add./;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
5ariant>+or
>P&P 4?
variantZFor 22 Per(orms a logical eFclusion on tEo variants
Kescription
miFed 5ariant>+or > miFed le(tA miFed right ?
Per(orms a logical eFclusionA according to the (olloEing truth ta#leC
Tabla !. Cariant IJM Mules
If left is If right is
then the result
is
TRUE TRUE FALSE
If left is If right is
then the result
is
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE
NULL NULL NULL
ee also 5ariant>and./A 5ariant>or./;
Nota- As Eith all the variant arithmetic (unctionsA the parameters (or this (unction can
#e either a P&P native type >integerA stringA (loating pointA #oolean or NULL?A or an
instance o( a 5OMA $AR.AN, or DO,N+, class; P&P native types Eill #e converted
to variants using the same rules as (ound in the constructor (or the $AR.AN, class;
5OM and DO,N+, o#'ects Eill have the value o( their de(ault property ta"en and used
as the variant value;
,he variant arithmetic (unctions are Erappers around the similarly named (unctions in
the 5OM li#raryX (or more in(ormation on these (unctionsA consult the MDN li#rary;
,he P&P (unctions are named slightly di((erentlyX (or eFample variantZadd>? in P&P
corresponds to $arAdd>? in the MDN documentation;
IIII. ;unciones ClibPK;
Introducci"n
5li#PDF le permite crear documentos PDF con P&P; La (uncionalidad y la inter(az de
programaci-n de 5li#PDF son similares a PDFli#; +sta documentaci-n de#er)a ser le)do 'unto con
el manual de 5li#PDFA ya /ue <ste eFplica la #i#lioteca con mucho mayor detalle;
Muchas (unciones en la #i#lioteca 5li#PDF nativa y el m-dulo P&PA as) como en PDFli#A tienen el
mismo nom#re; ,odas las (unciones eFcepto por cpdf>open./ reci#en el gestor del documento
como su primer par*metro;
Actualmente este gestor no es usado internamente ya /ue 5li#PDF no soporta la creaci-n de varios
documentos PDF a la vez; De hechoA no de#er)a intentarlo si/uieraA los resultados son
impredeci#les; +s di()cil hacerse una idea de las consecuencias /ue representar)a en un entorno
multi2hilos; De acuerdo al autor de 5li#PDFA esto cam#iar* en uno de los lanzamientos siguientes
>la versi-n actual cuando se escri#ieron <stas l)neas es 1;13?; i necesita esta (uncionalidadA use el
m-dulo pd(li#;
@na caracter)stica interesante de 5li#PDF >y PDFli#? es la ha#ilidad de crear el documento pd(
completamente en memoria sin usar archivos temporales; ,am#i<n provee la ha#ilidad de pasar
coordenadas en una unidad de longitud prede(inida; >+sta caracter)stica puede ser simulada tam#i<n
por pdf>translate./ cuando se usan las (unciones PDFli#;?
Otra caracter)stica interesante de 5li#PDF es el hecho de /ue cual/uier p*gina puede ser modi(icada
en cual/uier momentoA incluso si una nueva p*gina ya ha sido a#ierta; La (unci-n
cpdf>set>current>page./ permite a#andonar la p*gina actual y posi#lemente modi(icar otra p*gina;
La mayor)a de (unciones son razona#lemente (*ciles de usar; La parte m*s di()cil es pro#a#lemente
la creaci-n misma de un documento PDF muy sencillo; +l e'emplo presentado a continuaci-n
de#er)a ayudarlo a iniciar; +n <ste se crea un documento con una p*gina; La p*gina contiene el teFto
=,imes2Roman= en una (uente tipogr*(ica de #orde eFterior y 73pt; +l teFto es su#rayado;
Nota- i est* interesado en generadores de PDF gratuitos alternativos /ue no usen
#i#liotecas PDF eFternasA vea este FAO relacionado;
Me?uirimientos
Para poder usar las (unciones 5li#PDF necesita instalar el pa/uete 5li#PDF; [ste se encuentra
disponi#le para su descarga en Fast.OA pero re/uiere /ue compre una licencia para su uso comercial;
P&P re/uiere /ue usted use cpd(li# _^ 0;
Instalaci"n
,o get these (unctions to Eor"A you have to compile P&P Eith ==76th=cp#9l61):D0R.; D.R is the
cpd(li# install directoryA de(aults to /usr; .n addition you can speci(y the 'peg li#rary and the ti((
li#rary (or 5li#PDF to use; ,o do so add to your con(igure line the options ==76th=UpeE=#6r):D0R. ==
76th=t699=#6r):D0R.;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
CPDF_PM_NONE >integer?
CPDF_PM_OUTLINES >integer?
CPDF_PM_THUM(S >integer?
CPDF_PM_FULLSCREEN >integer?
CPDF_PL_SIN#LE >integer?
CPDF_PL_)COLUMN >integer?
CPDF_PL_*LCOLUMN >integer?
CPDF_PL_*RCOLUMN >integer?
E'emplos
E'emplo !. E'emplo ,imple de ClibPK;
<?php
$cpd# > cpd#%open329;
cpd#%paEe%init3$cpd#, 6, 2, 5K5, J1C, 6.29;
cpd#%add%outline3$cpd#, 2, 2, 2, 6, "aE. 6"9;
cpd#%beEin%text3$cpd#9;
cpd#%set%#ont3$cpd#, "*imesF'oman", <2, "7in,nsiEncodinE"9;
cpd#%set%text%renderinE3$cpd#, 69;
cpd#%text3$cpd#, "*imes 'oman outlined", 52, 529;
cpd#%end%text3$cpd#9;
cpd#%mo=eto3$cpd#, 52, 529;
cpd#%lineto3$cpd#, H12, <<29;
cpd#%stroIe3$cpd#9;
cpd#%#inali0e%paEe3$cpd#, 69;
cpd#%#inali0e3$cpd#9;
Header3"RontentFtype@ application/pd#"9;
cpd#%output%bu##er3$cpd#9;
cpd#%close3$cpd#9;
?>
La distri#uci-n de pd(li# contiene un e'emplo m*s comple'o /ue genera una serie de p*ginas con un
relo' an*logo; A/u) est* ese e'emplo convertido a P&P usando la eFtensi-n 5li#PDFC
E'emplo *. E'emplo pdfclocB tomado de la distribuci"n de pdflib *.D
<?php
$radio > C22;
$marEen > C2;
$conteo%paEinas > 12;
$pd# > cpd#%open329;
cpd#%set%creator3$pd#, "pd#%clocI.php"9;
cpd#%set%title3$pd#, "'eloj ,n&aacute;loEo"9;

8hile 3$conteo%paEinasFF > 29 :
cpd#%paEe%init3$pd#, $conteo%paEinas[6, 2, C W 3$radio [ $marEen9, C W 3$radio [ $marEen9, 6.29;

cpd#%set%paEe%animation3$pd#, 1, 2.5, 2, 2, 29; /W limpiar W/

cpd#%translate3$pd#, $radio [ $marEen, $radio [ $marEen9;
cpd#%sa=e3$pd#9;
cpd#%setrEbcolor3$pd#, 2.2, 2.2, 6.29;

/W tra0os de los minutos W/
cpd#%setline8idth3$pd#, C.29;
#or 3$alpha > 2; $alpha < <G2; $alpha [> G9 :
cpd#%rotate3$pd#, G.29;
cpd#%mo=eto3$pd#, $radio, 2.29;
cpd#%lineto3$pd#, $radioF$marEen/<, 2.29;
cpd#%stroIe3$pd#9;
;

cpd#%restore3$pd#9;
cpd#%sa=e3$pd#9;

/W tra0os de 5 minutos W/
cpd#%setline8idth3$pd#, <.29;
#or 3$alpha > 2; $alpha < <G2; $alpha [> <29 :
cpd#%rotate3$pd#, <2.29;
cpd#%mo=eto3$pd#, $radio, 2.29;
cpd#%lineto3$pd#, $radioF$marEen, 2.29;
cpd#%stroIe3$pd#9;
;
$ltime > Eetdate39;
/W dibujar nuestra mano W/
cpd#%sa=e3$pd#9;
cpd#%rotate3$pd#, F33$ltime)MminutesM//G2.29 [ $ltime)MhoursM/ F <.29 W <2.29;
cpd#%mo=eto3$pd#, F$radio/62, F$radio/C29;
cpd#%lineto3$pd#, $radio/C, 2.29;
cpd#%lineto3$pd#, F$radio/62, $radio/C29;
cpd#%closepath3$pd#9;
cpd#%#ill3$pd#9;
cpd#%restore3$pd#9;
/W dibujar la mano de minutos W/
cpd#%sa=e3$pd#9;
cpd#%rotate3$pd#, F33$ltime)MsecondsM//G2.29 [ $ltime)MminutesM/ F 65.29 W G.29;
cpd#%mo=eto3$pd#, F$radio/62, F$radio/C29;
cpd#%lineto3$pd#, $radio W 2.J, 2.29;
cpd#%lineto3$pd#, F$radio/62, $radio/C29;
cpd#%closepath3$pd#9;
cpd#%#ill3$pd#9;
cpd#%restore3$pd#9;
/W dibujar la mano de seEundos W/
cpd#%setrEbcolor3$pd#, 6.2, 2.2, 2.29;
cpd#%setline8idth3$pd#, C9;
cpd#%sa=e3$pd#9;
cpd#%rotate3$pd#, F33$ltime)MsecondsM/ F 65.29 W G.299;
cpd#%mo=eto3$pd#, F$radio/5, 2.29;
cpd#%lineto3$pd#, $radio, 2.29;
cpd#%stroIe3$pd#9;
cpd#%restore3$pd#9;
/W dibujar un peQuenyo circulo en el centro W/
Cer tambi%n
$ea tam#i<n la documentaci-n de la eFtensi-n PDFli#;
Tabla de contenidos
cpd(ZaddZannotation 22 AWade una anotaci-n
cpd(ZaddZoutline 22 AWade una marca en la p*gina actual
cpd(Zarc 22 Di#u'a un arco
cpd(Z#eginZteFt 22 .nicializa una secci-n de teFto
cpd(Zcircle 22 Di#u'a un c)rculo
cpd(Zclip 22 A'usta al camino actual
cpd(Zclose 22 5ierra un documento PDF
cpd(ZclosepathZ(illZstro"e 22 5ierraA llena y traza el camino actual
cpd(ZclosepathZstro"e 22 5ierra el camino y di#u'a una l)nea a lo largo del camino
cpd(Zclosepath 22 5ierra el camino
cpd(ZcontinueZteFt 22 Pone teFto en la l)nea siguiente
cpd(Zcurveto 22 Di#u'a una curva
cpd(ZendZteFt 22 Finaliza una secci-n de teFto
cpd(Z(illZstro"e 22 LLena y traza el camino actual
cpd(Z(ill 22 LLena el camino actual
cpd(Z(inalizeZpage 22 Finaliza una p*gina
cpd(Z(inalize 22 Finaliza un documento
cpd(Zglo#alZsetZdocumentZlimits 22 ets document limits (or any pd( document
cpd(ZimportZ'peg 22 A#re una imagen !P+G
cpd(Zlineto 22 Di#u'a una l)nea
cpd(Zmoveto 22 De(ine el punto actual
cpd(ZneEpath 22 tarts a neE path
cpd(Zopen 22 A#re un nuevo documento pd(
cpd(ZoutputZ#u((er 22 Pone el documento PDF en el #u((er de memoria
cpd(ZpageZinit 22 5omienza una nueva p*gina
cpd(ZplaceZinlineZimage 22 itua una imagen en la p*gina
cpd(Zrect 22 Di#u'a un rect*ngulo
cpd(Zrestore 22 Restaura un entorno (ormalmente salvado
cpd(Zrlineto 22 Di#u'a una l)nea
cpd(Zrmoveto 22 De(ine el punto actual
cpd(ZrotateZteFt 22 ets teFt rotation angle
cpd(Zrotate 22 De(ine la rotaci-n
cpd(ZsaveZtoZ(ile 22 +scri#e el documento PDF en un (ichero
cpd(Zsave 22 alva el entorno actual
cpd(Zscale 22 De(ine la escala
cpd(ZsetZactionZurl 22 ets hyperlin"
cpd(ZsetZcharZspacing 22 Determina el espacio entre caracteres
cpd(ZsetZcreator 22 De(ine el campo creator en el documento PDF
cpd(ZsetZcurrentZpage 22 De(ine la p*gina actual
cpd(ZsetZ(ontZdirectories 22 ets directories to search Ehen using eFternal (onts
cpd(ZsetZ(ontZmapZ(ile 22 ets (ontname to (ilename translation map Ehen using eFternal (onts
cpd(ZsetZ(ont 22 elecciona la (uente y el tamaWo actual
cpd(ZsetZhorizZscaling 22 De(ine la escala horizontal del teFto
cpd(ZsetZ"eyEords 22 Pone el valor del campo H"eyEordsH>pala#ras clave? de un documento PDF
cpd(ZsetZleading 22 De(ine la distancias entre las l)neas de teFto
cpd(ZsetZpageZanimation 22 De(ine la separaci-n entre p*ginas
cpd(ZsetZsu#'ect 22 De(ine el valor del campo su#'et de un documento PDF
cpd(ZsetZteFtZmatriF 22 De(ine la matriz de teFto
cpd(ZsetZteFtZpos 22 De(ine la posici-n del teFto
cpd(ZsetZteFtZrendering 22 Determina c-mo es presentado el teFto
cpd(ZsetZteFtZrise 22 De(ine la elevaci-n del teFto
cpd(ZsetZtitle 22 De(ine el campo title de un documento PDF
cpd(ZsetZvieEerZpre(erences 22 &oE to shoE the document in the vieEer
cpd(ZsetZEordZspacing 22 De(ine el espacio entre pala#ras
cpd(Zsetdash 22 De(ina el patr-n de la raya
cpd(Zset(lat 22 De(ine la monoton)a
cpd(ZsetgrayZ(ill 22 Pone el color de relleno al valor gris
cpd(ZsetgrayZstro"e 22 De(ine el color para di#u'ar al valor gris
cpd(Zsetgray 22 Pone el color de relleno y di#u'o a gris
cpd(Zsetlinecap 22 De(ine el par*metro linecap
cpd(Zsetline'oin 22 De(ine el par*metro line'oin
cpd(ZsetlineEidth 22 De(ine la pro(undidad de la l)nea
cpd(Zsetmiterlimit 22 De(ine el l)mite del inglete
cpd(Zsetrg#colorZ(ill 22 Pone el color de relleno a l valor de clor rg#
cpd(Zsetrg#colorZstro"e 22 Pone el color de di#u'o al valor de color rg#
cpd(Zsetrg#color 22 Pone el color de relleno y di#u'o al valor de color rg#
cpd(ZshoEZFy 22 Muestra teFto en la posici-n
cpd(ZshoE 22 Muestra el teFto en la posici-n actual
cpd(ZstringEidth 22 Devuelve la anchura del teFto en la (uente actual
cpd(Zstro"e 22 Di#u'a una l)nea a lo largo del camino
cpd(ZteFt 22 Muestra teFto conpar*metros
cpd(Ztranslate 22 De(ine el sistema de origen de coordenadas
cpdf>add>annotation
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
cpd(ZaddZannotation 22 AWade una anotaci-n
Kescripci"n
void cpdf>add>annotation > int pd( documentA dou#le llFA dou#le llyA dou#le urFA dou#le uryA
string titleA string contentA int mode ?
La (unci-n cpdf>add>annotation./ aWade una nota con la es/uina in(erior iz/uierda en >ll8A ll?? y la
es/uina superior derecha en >ur8A ur??;
+l Bltomo par*metro opcional determina el tamaWo de la unidad; i es 3 o se omiteA se usa la unidad
por de(ecto especi(icada para la p*gina; De otro modo las coordenadas se miden en puntos
postscriptA despreciando la unidad actual;
cpdf>add>outline
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
cpd(ZaddZoutline 22 AWade una marca en la p*gina actual
Kescripci"n
void cpdf>add>outline > int pd( documentA string teFt ?
La (unci-n cpdf>add>outline./ aWade una marca con el teFto te8t /ue apunta a la p*gina actual;
E'emplo !. AWadiendo un contorno de pgina
<?php
$cpd# > cpd#%open329;
cpd#%paEe%init3$cpd#, 6, 2, 5K5, J1C9;
cpd#%add%outline3$cpd#, 2, 2, 2, 6, "eEina 6"9;
// ...
// ,lEhn dibujo
// ...
cpd#%#inali0e3$cpd#9;
Header3"RontentFtype@ application/pd#"9;
cpd#%output%bu##er3$cpd#9;
cpd#%close3$cpd#9;
?>
cpdf>arc
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zarc 22 Di#u'a un arco
Kescripi"n
void cpdf>arc > int pd( documentA dou#le F2"oorA dou#le y2"oorA dou#le radiusA dou#le startA dou#le
endA int mode ?
La (unci-n cpdf>arc./ di#u'a un arco con el centro rn el punto >8=>oorA ?=>oor? y radio ra#6usA
empezando en el *ngulo start y terminando en el *ngulo en#;
+l Bltimo par*metro opcional especi(ica el tamaWo de la unidad; i es 3 o se omiteA se usa la unidad
especi(icada por de(ecto; De otro modo las coordenadas son medidas en puntos
postscriptAdespreciando la unidad actual;
$ea tam#i<n cpdf>circle./;
cpdf>begin>te+t
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Z#eginZteFt 22 .nicializa una secci-n de teFto
Kescripci"n
void cpdf>begin>te+t > int pd( document ?
La (unci-n cpdf>begin>te+t./ comienza una secci-n de teFto; De#e ser terminada con
cpdf>end>te+t./;
E'emplo !. ,alida de te+to
<?php cpd#%beEin%text3$pd#9;
cpd#%set%#ont3$pd#, 6G, "Hel=etica", "7in,nsiEncodinE"9;
cpd#%text3$pd#, 622, 622, ",lEhn texto"9;
cpd#%end%text3$pd#9 ?>
$ea tam#i<n cpdf>end>te+t./;
cpdf>circle
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zcircle 22 Di#u'a un c)rculo
Kescripci"n
void cpdf>circle > int pd( documentA dou#le F2"oorA dou#le y2"oorA dou#le radiusA int mode ?
La (unci-n cpdf>circle./ di#u'a un c)rculo con centro en el punto >8=>oorA ?=>oor? y radio ra#6us;
+l Bltimo par*metro opcional de(ine el tamaWo de la unidad; i es 3 o se omiteA se usa el valor por
de(ecto para la p*gina; De otro modo las coordenadas se miden en puntos postscriptA despreciando
la unidad actual;
$ea tam#i<n cpdf>arc./;
cpdf>clip
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zclip 22 A'usta al camino actual
Kescripci"n
void cpdf>clip > int pd( document ?
La (unci-n cpdf>clip./ a'usta todos los di#u'os al camino actual;
cpdf>close
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zclose 22 5ierra un documento PDF
Kescripci"n
void cpdf>close > int pd( document ?
La (unci-n cpdf>close./ cierra un documento PDF; +sta de#er)a ser la Bltima operaci-n incluso
despu<s de cpdf>finali6e./A cpdf>output>buffer./ y cpdf>sa5e>to>file./;
$ea tam#i<n cpdf>open./;
cpdf>closepath>fill>stroBe
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZclosepathZ(illZstro"e 22 5ierraA llena y traza el camino actual
Kescripci"n
void cpdf>closepath>fill>stroBe > int pd( document ?
La (unci-n cpdf>closepath>fill>stroBe./ cierraA llena el interior del caminoa catual con el color
actual de relleno y di#u'a el camino actual;
$ea tam#i<n cpdf>closepath./A cpdf>stroBe./A cpdf>fill./A cpdf>setgray>fill./A cpdf>setgray./A
cpdf>setrgbcolor>fill./A cpdf>setrgbcolor./;
cpdf>closepath>stroBe
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZclosepathZstro"e 22 5ierra el camino y di#u'a una l)nea a lo largo del camino
Kescripci"n
void cpdf>closepath>stroBe > int pd( document ?
La (unci-n cpdf>closepath>stroBe./ es una com#inaci-n de cpdf>closepath./ y cpdf>stroBe./;
Despu<s limpia el camino;
$ea tam#i<n cpdf>closepath./A cpdf>stroBe./;
cpdf>closepath
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zclosepath 22 5ierra el camino
Kescripci"n
void cpdf>closepath > int pd( document ?
La (unci-n cpdf>closepath./ cierra el camino actual;
cpdf>continue>te+t
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZcontinueZteFt 22 Pone teFto en la l)nea siguiente
Kescripci"n
void cpdf>continue>te+t > int pd( documentA string teFt ?
La (unci-n cpdf>continue>te+t./ pone la cadena te8t en la l)nea siguiente;
$ea tam#i<n cpdf>sho3>+y./A cpdf>te+t./A cpdf>set>leading./A cpdf>set>te+t>pos./;
cpdf>cur5eto
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zcurveto 22 Di#u'a una curva
Kescripci"n
void cpdf>cur5eto > int pd( documentA dou#le F1A dou#le y1A dou#le F0A dou#le y0A dou#le F7A
dou#le y7A int mode ?
La (unci-n cpdf>cur5eto./ di#u'a una curva Bezier desde el punto actual al punto >8RA ?R? usando
>81A ?1? y >82A ?2? como puntos de control;
+l Bltimo par*metro opcional especi(ica el tamaWo de la unidad; i es 3 o se omiteA se usa la unidad
especi(icada para la p*gina; De otro modo las coordenadas se miden en puntos postscriptA
despreciando la unidad en curso;
$ea tam#i<n cpdf>mo5eto./A cpdf>rmo5eto./A cpdf>rlineto./A cpdf>lineto./;
cpdf>end>te+t
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZendZteFt 22 Finaliza una secci-n de teFto
Kescripci"n
void cpdf>end>te+t > int pd( document ?
La (unci-n cpdf>end>te+t./ (inaliza unasecci-n de teFto /ue (ue inicializada con cpdf>begin>te+t
./;
E'emplo !. ,alida de te+to
<?php cpd#%beEin%text3$pd#9;
cpd#%set%#ont3$pd#, 6G, "Hel=etica", "7in,nsiEncodinE"9;
cpd#%text3$pd#, 622, 622, ",lEhn texto"9;
cpd#%end%text3$pd#9 ?>
$ea tam#i<n cpdf>begin>te+t./;
cpdf>fill>stroBe
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Z(illZstro"e 22 LLena y traza el camino actual
Kescripci"n
void cpdf>fill>stroBe > int pd( document ?
La (unci-n cpdf>fill>stroBe./ llena el interior del camino actual con el color de relleno actual y
di#u'a el camino actual;
$ea tam#i<n cpdf>closepath./A cpdf>stroBe./A cpdf>fill./A cpdf>setgray>fill./A cpdf>setgray./A
cpdf>setrgbcolor>fill./A cpdf>setrgbcolor./;
cpdf>fill
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Z(ill 22 LLena el camino actual
Kescripci"n
void cpdf>fill > int pd( document ?
La (unci-n cpdf>fill./ llena el interior del camino actual con el color alctual de relleno;
$ea tam#i<n cpdf>closepath./A cpdf>stroBe./A cpdf>setgray>fill./A cpdf>setgray./A
cpdf>setrgbcolor>fill./A cpdf>setrgbcolor./;
cpdf>finali6e>page
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
cpd(Z(inalizeZpage 22 Finaliza una p*gina
Kescripci"n
void cpdf>finali6e>page > int pd( documentA int page num#er ?
La (unci-n cpdf>finali6e>page./ (inaliza una p*gina con nBmero de p*gina paEe num1er; +sta
(unci-n es s-lo para ahorrar memoria; @na p*gina terminada ocupa menos memoria pero no puede
volver a ser modi(icada;
$ea tam#i<n cpdf>page>init./;
cpdf>finali6e
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Z(inalize 22 Finaliza un documento
Kescripci"n
void cpdf>finali6e > int pd( document ?
La (unci-n cpdf>finali6e./ (inaliza un documento; ABn se tiene /ue llamar a cpdf>close./;
$ea tam#i<n cpdf>close./;
cpdf>global>set>document>limits
>P&P 8 A P&P 4?
cpd(Zglo#alZsetZdocumentZlimits 22 ets document limits (or any pd( document
Kescription
void cpdf>global>set>document>limits > int maFpagesA int maF(ontsA int maFimagesA int
maFannotationsA int maFo#'ects ?
La (unci-n cpdf>global>set>document>limits./ de(ine varios l)mites del documento; +sta (unci-n
de#e ser llamada antes de cpdf>open./ para /ue haga e(ecto; +llo de(ine los l)mites de cual/uier
documento a#ierto con anterioridad;
$ea tam#i<n cpdf>open./;
cpdf>import>'peg
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
cpd(ZimportZ'peg 22 A#re una imagen !P+G
Kescripci"n
int cpdf>import>'peg > int pd( documentA string (ile nameA dou#le F2"oorA dou#le y2"oorA dou#le
angleA dou#le EidthA dou#le heightA dou#le F2scaleA dou#le y2scaleA int mode ?
La (unci-n cpdf>import>'peg./ a#re una imagen almacenada en el (ichero de nom#re 96le name; +l
(ormato de la imagen de#e ser !P+G; La imagen es situada en la p*gina actual en la posici-n >8=
>oorA ?=>oor?; La imagen es rotada anEle grados;
+l Bltimo par*metro opcional determina el tamaWo de la unidad; i es 3 o se omiteA se usa la unidad
por de(ecto especi(icada para la p*gina; De otro modo las coordenadas se miden en puntos
postscriptA despreciando la unidad actual;
$ea tam#i<n cpdf>place>inline>image./A
cpdf>lineto
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zlineto 22 Di#u'a una l)nea
Kescripci"n
void cpdf>lineto > int pd( documentA dou#le F2"oorA dou#le y2"oorA int mode ?
La (unci-n cpdf>lineto./ di#u'a una l)nea desde el punto actual al punto con coordenadas >8=>oorA
?=>oor?;
+l Bltimo par*metro opcional determina el tamaWo de la unidad; i es 3 o se omiteA se usa el valor
especi(icado para la p*gina por de(ecto; De otro modo las coordenadas se miden en puntos
postscriptA despreciando la unidad actual;
$ea tam#i<n cpdf>mo5eto./A cpdf>rmo5eto./A cpdf>cur5eto./;
cpdf>mo5eto
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zmoveto 22 De(ine el punto actual
Kescripci"n
void cpdf>mo5eto > int pd( documentA dou#le F2"oorA dou#le y2"oorA int mode ?
La (unci-ncpdf>mo5eto./ pone el punto actual en las coordenadas 8=>oor y ?=>oor;
+l Bltimo par*metro opcional determina la longitud de la unidad; i es 3 o se omiteA la unidad por
de(ecto ser* la especi(icada para la p*gina; De otro modo las coordenadas se medir*n en puntos
postscript despreciando la unidad en curso;
cpdf>ne3path
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
cpd(ZneEpath 22 tarts a neE path
Kescription
#ool cpdf>ne3path > int pd(Zdocument ?
,he cpdf>ne3path./ starts a neE path on the document given #y the p#9_#ocument parameter;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
cpdf>open
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zopen 22 A#re un nuevo documento pd(
Kescripci"n
int cpdf>open > int compresion PA string nom#reZarchivo PA array limitesZdocQQ ?
La (unci-n cpdf>open./ a#re un nuevo documento pd(; +l primer par*metro ha#ilita la compresi-n
del documento si su valor es di(erente de 3; +l segundo par*metro opcional indica el archivo en el
/ue es escrito el documento; i se omiteA el documento es creado en memoriaA y puede ser escrito ya
sea por medio de cpdf>sa5e>to>file./ o dirigido a la salida est*ndar con cpdf>output>buffer./;
Nota- +l valor de retorno ser* necesario en versiones posteriores de 5li#PDF como el
primer argumento en todas a/uellas (unciones /ue escri#en so#re el documento pd(;
La #i#lioteca 5li#PDF toma el nom#re de archivo =2= como un sin-nimo de stdout; i
P&P es compilado como un m-dulo de apacheA esto no (uncionar* de#ido a /ue el modo
en /ue 5li#PDF dirige su salida a stdout no (unciona con apache; Puede resolver este
pro#lema evitando el uso del nom#re de archivoA y usando cpdf>output>buffer./ para
volcar el documento pd(;
$ea tam#i<n cpdf>close./ y cpdf>output>buffer./;
cpdf>output>buffer
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
cpd(ZoutputZ#u((er 22 Pone el documento PDF en el #u((er de memoria
Kescripci"n
void cpdf>output>buffer > int pd( document ?
La (unci-n cpdf>output>buffer./ muestra el documento PDF por la salida est*ndar; +l documento
de#e ser creado en memoriaA /ue es el caso de la (unci-n cpdf>open./ cuando ha sido llamada sin
par*metros;
$ea tam#i<n cpdf>open./;
cpdf>page>init
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZpageZinit 22 5omienza una nueva p*gina
Kescripci"n
void cpdf>page>init > int pd( documentA int page num#erA int orientationA dou#le heightA dou#le
EidthA dou#le unit ?
La (unci-n cpdf>page>init./ crea una nueva p*gina de altura he6Eht y pro(undidad 76#th; La p*gina
tiene el nBmero paEe num1er y orientaci-n or6entat6on; or6entat6on puede ser 3 para retrato y 1 para
paisa'e; +l Bltimo par*metro opcional un6t de(ine la unidad del sistema de coordenadas; +l valor
de#er)a ser el nBmero de puntos postscript por unidad; 5omo el valor de una pulgada el igual a :0
puntosA un valor de :0 ser)a la unidad para una pulgada; Por de(ecto es :0;
$ea tam#i<n cpdf>set>current>page./;
cpdf>place>inline>image
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
cpd(ZplaceZinlineZimage 22 itua una imagen en la p*gina
Kescripci"n
void cpdf>place>inline>image > int pd( documentA int imageA dou#le F2"oorA dou#le y2"oorA dou#le
angleA dou#le EidthA dou#le heightA int mode ?
La (unci-n cpdf>place>inline>image./ situa una imagen creada con las (unciones de imagenes de
P&P en la posici-n de la p*gina >8=>oorA ?=>oor?; La imagen puede ser escalada al mismo tiempo;
+l Bltimo par*metro opcional determina el tamaWo de la unidad; i es 3 o se omiteA se usa la unidad
por de(ecto especi(icada para la p*gina; De otro modo las coordenadas son medidas en puntos
postscriptA descartando la unidad actual;
$ea tam#i<n cpdf>import>'peg./A
cpdf>rect
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zrect 22 Di#u'a un rect*ngulo
Kescripci"n
void cpdf>rect > int pd( documentA dou#le F2"oorA dou#le y2"oorA dou#le EidthA dou#le heightA int
mode ?
La (unci-n cpdf>rect./ di#u'a un rect*ngulo con su es/uina in(erior iz/uierda en el punto >8=>oorA
?=>oor?; La anchura es 76#Eth; La altura es he6Eht;
+l Bltimo par*metro opcional de(ine el tamaWo de la unidad; i es 3 o se omiteA se usa la unidad por
de(ecto especi(icada para la p*gina; De otro modo las coordenadas se miden en puntos postscriptA
despreciando la unidad actual;
cpdf>restore
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zrestore 22 Restaura un entorno (ormalmente salvado
Kescripci"n
void cpdf>restore > int pd( document ?
La (unci-n cpdf>restore./ restaura el entorno salvado con cpdf>sa5e./; Funciona como el comando
grestore de postscript; Muy Btil si se /uiere trasladar o rotar un o#'eto sin a(ectar ortros o#'etos;
E'emplo !. ,al5arAMestaurar
<?php cpd#%sa=e3$pd#9;
// hacer todo tipo de rotaciones, trans#ormaciones, ...
cpd#%restore3$pd#9 ?>
$ea tam#i<n cpdf>sa5e./;
cpdf>rlineto
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
cpd(Zrlineto 22 Di#u'a una l)nea
Kescripci"n
void cpdf>rlineto > int pd( documentA dou#le F2"oorA dou#le y2"oorA int mode ?
La (unci-n cpdf>rlineto./ di#u'a una l)nea desde el punto actual al punto relativo con coordenadas
>8=>oorA ?=>oor?;
+l Bltimo par*metro opcional determina la longitud de la unidad; i es 3 o se omiteA se usa el valor
por de(ecto para la p*gina; De otro modo las coordenadas se miden en puntos postscriptA
despreciando la unidad actual;
$ea tam#i<n cpdf>mo5eto./A cpdf>rmo5eto./A cpdf>cur5eto./;
cpdf>rmo5eto
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
cpd(Zrmoveto 22 De(ine el punto actual
Kescripci"n
void cpdf>rmo5eto > int pd( documentA dou#le F2"oorA dou#le y2"oorA int mode ?
La (unci-n cpdf>rmo5eto./ pone el punto actual relativo a las coordenadas 8=>oor y ?=>oor;
+l Bltimo par*metro opciona determina la loingitud de la unidad; i es 3 o se omiteA la unidad por
de(ecto ser* la especi(icada para la p*gina; De otro modo las coordenadas se medir*n en puntos
postscriptA despreciando la unidad en curso;
$ea tam#i<n cpdf>mo5eto./;
cpdf>rotate>te+t
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
cpd(ZrotateZteFt 22 ets teFt rotation angle
Kescription
#ool cpdf>rotate>te+t > int pd(docA (loat angle ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cpdf>rotate
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zrotate 22 De(ine la rotaci-n
Kescripci"n
void cpdf>rotate > int pd( documentA dou#le angle ?
La (unci-n cpdf>rotate./ de(ine la rotaci-n en anEle grados;
cpdf>sa5e>to>file
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsaveZtoZ(ile 22 +scri#e el documento PDF en un (ichero
Kescripci"n
void cpdf>sa5e>to>file > int pd( documentA string (ilename ?
La (unci-n cpdf>sa5e>to>file./ guarda el documento PDF en un (ichero si este documeto ha sido
creado en memoria; +sta (unci-n no es necesaria si el documento PDF ha sido a#ierto mediante la
especi(icaci-n de un nom#re de (ichero en la (unci-n cpdf>open./;
$ea tam#i<n cpdf>output>buffer./A cpdf>open./;
cpdf>sa5e
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zsave 22 alva el entorno actual
Kescripci"n
void cpdf>sa5e > int pd( document ?
La (unci-n cpdf>sa5e./ salva el entorno actual; Funciona como el comando gsave de postscript;
Muy Btil si se /uiere trasladar o trotar un o#'eto sin a(etar a los dem*s;
$ea tam#i<n cpdf>restore./;
cpdf>scale
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zscale 22 De(ine la escala
Kescripci"n
void cpdf>scale > int pd( documentA dou#le F2scaleA dou#le y2scale ?
La (unci-n cpdf>scale./ de(ine el (actor de escala en los dos sentidos;
cpdf>set>action>url
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
cpd(ZsetZactionZurl 22 ets hyperlin"
Kescription
#ool cpdf>set>action>url > int pd(docA (loat FllA (loat yllA (loat FurA (loat FurA string url PA int modeQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cpdf>set>char>spacing
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetZcharZspacing 22 Determina el espacio entre caracteres
Kescripci"n
void cpdf>set>char>spacing > int pd( documentA dou#le space ?
LA (unci-n cpdf>set>char>spacing./ de(ine el espacio entre caracteres;
$ea tam#i<n cpdf>set>3ord>spacing./A cpdf>set>leading./;
cpdf>set>creator
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetZcreator 22 De(ine el campo creator en el documento PDF
Kescripci"n
void cpdf>set>creator > string creator ?
La (unci-n cpdf>set>creator./ de(ine el creador de un documento PDF;
$ea tam#i<n cpdf>set>sub'ect./A cpdf>set>title./A cpdf>set>Bey3ords./;
cpdf>set>current>page
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
cpd(ZsetZcurrentZpage 22 De(ine la p*gina actual
Kescripci"n
void cpdf>set>current>page > int pd( documentA int page num#er ?
La (unci-n cpdf>set>current>page./ de(ine la p*gina en la /ue se van a realizar todas las
operaciones; @no puede cam#iar entre p*ginas a menos /ue una p*gina ha sido (inalizada con
cpdf>finali6e>page./;
$ea tam#i<n cpdf>finali6e>page./;
cpdf>set>font>directories
>P&P 8 _^ 8;3;KA P&P 4?
cpd(ZsetZ(ontZdirectories 22 ets directories to search Ehen using eFternal (onts
Kescription
#ool cpdf>set>font>directories > int pd(docA string p(mdirA string p(#dir ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cpdf>set>font>map>file
>P&P 8 _^ 8;3;KA P&P 4?
cpd(ZsetZ(ontZmapZ(ile 22 ets (ontname to (ilename translation map Ehen using eFternal (onts
Kescription
#ool cpdf>set>font>map>file > int pd(docA string (ilename ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cpdf>set>font
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetZ(ont 22 elecciona la (uente y el tamaWo actual
Kescripci"n
void cpdf>set>font > int pd( documentA string (ont nameA dou#le sizeA string encoding ?
La (unci-n cpdf>set>font./ de(ine la (uente actualA el tamaWo y la codi(icaci-n; Actualmente solo
son soportadas las (uentes est*ndar de postscript; +l Bltimo par*metro enco#6nE puede tomar los
siguientes valoresC =MacRoman+ncoding=A =Mac+Fpert+ncoding=A =LinAnsi+ncoding=A y =NULL=;
=NULL= es para el ci(rado inclu)do en la (uente; Para mas in(ormaci-n vea el manual de 5li#PDFA
especialmente para c-mo soportar las (uentes asi*ticas;
cpdf>set>hori6>scaling
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetZhorizZscaling 22 De(ine la escala horizontal del teFto
Kescripci"n
void cpdf>set>hori6>scaling > int pd( documentA dou#le scale ?
La (unci-n cpdf>set>hori6>scaling./ de(ine la escala horizontal al scale por ciento;
cpdf>set>Bey3ords
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetZ"eyEords 22 Pone el valor del campo H"eyEordsH>pala#ras clave? de un documento PDF
Kescripci"n
void cpdf>set>Bey3ords > string "eyEords ?
La (unci-n cpdf>set>Bey3ords./ de(ine las pala#ras clave de un documento PDF;
$ea tam#i<n cpdf>set>title./A cpdf>set>creator./A cpdf>set>sub'ect./;
cpdf>set>leading
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetZleading 22 De(ine la distancias entre las l)neas de teFto
Kescripci"n
void cpdf>set>leading > int pd( documentA dou#le distance ?
La (unci-n cpdf>set>leading./ de(ine la distancia entre las l)neas de teFto; +sto se usar* si el teFto
es la salida de cpdf>continue>te+t./;
$ea tam#i<n cpdf>continue>te+t./;
cpdf>set>page>animation
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
cpd(ZsetZpageZanimation 22 De(ine la separaci-n entre p*ginas
Kescripci"n
void cpdf>set>page>animation > int pd( documentA int transitionA dou#le duration ?
La (unci-n cpdf>set>page>animation./ de(ine la transici-n entre p*ginas /ue se siguen;
+l valor de trans6t6on puede ser
3 para ningunoA
1 para dos l)neas /ue se #arren a trav<s de la pantallaA revelen la p*ginaA
0 para mBltiples l)neasA
7 para /ue una ca'a revele la p*ginaA
8 para una Bnica l)neaA
4 para /ue la p*gina naterior se disipe para revelar la paginaA
K para /ue el e(ecto de disoluci-n se mueva de un eFtremop de la p*gina al otroA
: para /ue la p*gina ant)gua simplemente sea reemplazada por la nueva p*gina
>de(ault?
+l valor de #urat6on es el nBmero de segundos entre las p*ginas /ue se pasan;
cpdf>set>sub'ect
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetZsu#'ect 22 De(ine el valor del campo su#'et de un documento PDF
Kescripci"n
void cpdf>set>sub'ect > string su#'ect ?
La (unci-n cpdf>set>sub'ect./ de(ine el asunto de un documento PDF
$ea tam#i<n cpdf>set>title./A cpdf>set>creator./A cpdf>set>Bey3ords./;
cpdf>set>te+t>matri+
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetZteFtZmatriF 22 De(ine la matriz de teFto
Kescripci"n
void cpdf>set>te+t>matri+ > int pd( documentA array matriF ?
La (unci-n cpdf>set>te+t>matri+./ de(ine una matriz /ue descri#e una trans(ormaci-n aplicada a la
(uente actual de teFto;
cpdf>set>te+t>pos
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetZteFtZpos 22 De(ine la posici-n del teFto
Kescripci"n
void cpdf>set>te+t>pos > int pd( documentA dou#le F2"oorA dou#le y2"oorA int mode ?
La (unci-n cpdf>set>te+t>pos./ de(ine la posici-n del teFto para la siguiente llamada a cpdf>sho3
./;
+l Bltimo par*metro opcional mo#e determina la longitud de la unidad; i es 3 o se omiteA se usa el
valor por de(ecto para la p*gina; De otro modoA las coordenadas son medidas en puntos postscriptA
despreciando la unidad actual;
$ea tam#i<n cpdf>sho3./A cpdf>te+t./;
cpdf>set>te+t>rendering
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetZteFtZrendering 22 Determina c-mo es presentado el teFto
Kescripci"n
void cpdf>set>te+t>rendering > int pd( documentA int mode ?
La (unci-n cpdf>set>te+t>rendering./ determina c-mo es presentado el teFto; Los posi#les valores
para mo#e son 3^llenar teFtoA 1^poner teFtoA 0^llenar y poner teFtoA 7^invisi#leA 8^llenar teFto y
aWadirlo al camino de corteA 4^poner teFto y aWadirlo al camino de corteA K^llenar y poner teFto y
aWadirlo al camino de corteA :^aWadirlo al camino de corte
cpdf>set>te+t>rise
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetZteFtZrise 22 De(ine la elevaci-n del teFto
Kescripci"n
void cpdf>set>te+t>rise > int pd( documentA dou#le value ?
La (unci-n cpdf>set>te+t>rise./ de(ine la elevaci-n del teFto a alue unidades;
cpdf>set>title
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetZtitle 22 De(ine el campo title de un documento PDF
Kescripci"n
void cpdf>set>title > string title ?
La (unci-n cpdf>set>title./ de(ine el t)tulo de un documento PDF
$ea tam#i<n cpdf>set>sub'ect./A cpdf>set>creator./A cpdf>set>Bey3ords./;
cpdf>set>5ie3er>preferences
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
cpd(ZsetZvieEerZpre(erences 22 &oE to shoE the document in the vieEer
Kescription
#ool cpdf>set>5ie3er>preferences > int pd(docA array pre(erences ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cpdf>set>3ord>spacing
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetZEordZspacing 22 De(ine el espacio entre pala#ras
Kescripci"n
void cpdf>set>3ord>spacing > int pd( documentA dou#le space ?
La (unci-n cpdf>set>3ord>spacing./ especi(ica el espacio entre pala#ras;
$ea tam#i<n cpdf>set>char>spacing./A cpdf>set>leading./;
cpdf>setdash
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zsetdash 22 De(ina el patr-n de la raya
Kescripci"n
void cpdf>setdash > int pd( documentA dou#le EhiteA dou#le #lac" ?
La (unci-n cpdf>setdash./ de(ine el patr-n de la raya 7h6te unidades #lancas y 1lac> unidades
negras; i los dos son 3 se pone una l)nea s-lida;
cpdf>setflat
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zset(lat 22 De(ine la monoton)a
Kescripci"n
void cpdf>setflat > int pd( documentA dou#le value ?
La (unci-n cpdf>setflat./ pone la monoton)a a un valor de entre 3 y 133;
cpdf>setgray>fill
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetgrayZ(ill 22 Pone el color de relleno al valor gris
Kescripci"n
void cpdf>setgray>fill > int pd( documentA dou#le value ?
La (unci-n cpdf>setgray>fill./ de(ine el valor de gris actual para rellelanr un camino;
$ea tam#i<n cpdf>setrgbcolor>fill./;
cpdf>setgray>stroBe
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetgrayZstro"e 22 De(ine el color para di#u'ar al valor gris
Kescripci"n
void cpdf>setgray>stroBe > int pd( documentA dou#le gray value ?
La (unci-n cpdf>setgray>stroBe./ pone el color de di#u'o actual al valor de gris dado;
$ea tam#i<n cpdf>setrgbcolor>stroBe./;
cpdf>setgray
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zsetgray 22 Pone el color de relleno y di#u'o a gris
Kescripci"n
void cpdf>setgray > int pd( documentA dou#le gray value ?
La (unci-n cpdf>setgray>stroBe./ pone el color de relleno y di#u'o al color gris dado;
$ea tam#i<n cpdf>setrgbcolor>stroBe./A cpdf>setrgbcolor>fill./;
cpdf>setlinecap
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zsetlinecap 22 De(ine el par*metro linecap
Kescription
void cpdf>setlinecap > int pd( documentA int value ?
La (unci-n cpdf>setlinecap./ de(ine el par*metro linecap entre los valores 3 y 0; 3 ^ empalmar al
(inalA 1 ^ redondearA 0 ^ es/uina proyectada
cpdf>setline'oin
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zsetline'oin 22 De(ine el par*metro line'oin
Kescripci"n
void cpdf>setline'oin > int pd( documentA long value ?
La (unci-n cpdf>setline'oin./ de(ine el par*metro entre un valor de 3 y 0; 3 ^ ingletesA 1 ^
redondearA 0 ^ *ngulo o#l)cuo
cpdf>setline3idth
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZsetlineEidth 22 De(ine la pro(undidad de la l)nea
Kescripci"n
void cpdf>setline3idth > int pd( documentA dou#le Eidth ?
La (unci-n cpdf>setline3idth./ de(ine la preo(undidad de la l)nea a 76#th;
cpdf>setmiterlimit
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zsetmiterlimit 22 De(ine el l)mite del inglete
Kescripci"n
void cpdf>setmiterlimit > int pd( documentA dou#le value ?
La (unci-n cpdf>setmiterlimit./ de(ine el l)mite del inglete a un valor mayor o igual a 1;
cpdf>setrgbcolor>fill
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zsetrg#colorZ(ill 22 Pone el color de relleno a l valor de clor rg#
Kescripci"n
void cpdf>setrgbcolor>fill > int pd( documentA dou#le red valueA dou#le green valueA dou#le #lue
value ?
La (unci-n cpdf>setrgbcolor>fill./ pone el color rg# actual para rellenar un camino;
$ea tam#i<n cpdf>setrgbcolor>stroBe./A cpdf>setrgbcolor./;
cpdf>setrgbcolor>stroBe
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zsetrg#colorZstro"e 22 Pone el color de di#u'o al valor de color rg#
Kescripci"n
void cpdf>setrgbcolor>stroBe > int pd( documentA dou#le red valueA dou#le green valueA dou#le
#lue value ?
La (unci-n cpdf>setrgbcolor>stroBe./ pone el color de di#u'o actual al valor de color rg# dado;
$ea tam#i<n cpdf>setrgbcolor>fill./A cpdf>setrgbcolor./;
cpdf>setrgbcolor
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zsetrg#color 22 Pone el color de relleno y di#u'o al valor de color rg#
Kescripci"n
void cpdf>setrgbcolor > int pd( documentA dou#le red valueA dou#le green valueA dou#le #lue
value ?
La (unci-n cpdf>setrgbcolor>stroBe./ pone el color de relleno y di#u'o actual al color rg# dado;
$ea tam#i<n cpdf>setrgbcolor>stroBe./A cpdf>setrgbcolor>fill./;
cpdf>sho3>+y
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZshoEZFy 22 Muestra teFto en la posici-n
Kescripci"n
void cpdf>sho3>+y > int pd( documentA string teFtA dou#le F2"oorA dou#le y2"oorA int mode ?
La (unci-n cpdf>sho3>+y./ muestra la cadena te8t en la posici-n con coordenadas >8=coorA ?=coor?;
+l Bltimo par*metro opcional determina la longitud de la unidad; i es 3 o se omiteA se usa la unidad
por de(ecto especi(icada para la p*gina; De otro modo las coordenadas son medidas en puntos
postscriptA despreciando la unidad actual;
Nota- La (unci-n cpdf>sho3>+y./ es id<ntica a cpdf>te+t./ sin el par*metro opcional;
$ea tam#i<n cpdf>te+t./;
cpdf>sho3
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZshoE 22 Muestra el teFto en la posici-n actual
Kescripci"n
void cpdf>sho3 > int pd( documentA string teFt ?
La (unci-n cpdf>sho3./ muestra la cadena te8t en la posiFci-n actual;
$ea tam#i<n cpdf>te+t./A cpdf>begin>te+t./A cpdf>end>te+t./;
cpdf>string3idth
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZstringEidth 22 Devuelve la anchura del teFto en la (uente actual
Kescripci"n
dou#le cpdf>string3idth > int pd( documentA string teFt ?
La (unci-n cpdf>string3idth./ devuelve la anchura de la cadena te8t; Re/uiere ha#er de(inido antes
una (uente;
$ea tam#i<n cpdf>set>font./;
cpdf>stroBe
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Zstro"e 22 Di#u'a una l)nea a lo largo del camino
Kescripci"n
void cpdf>stroBe > int pd( document ?
La (unci-n cpdf>stroBe./ di#u'a una l)nea a lo largo del camino actual;
$ea tam#i<n cpdf>closepath./A cpdf>closepath>stroBe./;
cpdf>te+t
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(ZteFt 22 Muestra teFto conpar*metros
Kescripci"n
void cpdf>te+t > int pd( documentA string teFtA dou#le F2"oorA dou#le y2"oorA int modeA dou#le
orientationA int alignmode ?
La (unci-n cpdf>te+t./ muestra la cadena te8t en la posici-n de coordenadas >8=coorA ?=coor?; +l
par*mero opcional determina la longitud de la unidad; i es 3 o se omiteA se usa la unidad por
de(ecto especi(icada para la p*gina; De otro modo las coordenadas son medidas en puntos postscript
despreciando la unidad actual; +l par*metro opcional or6entat6on es la rotaci-n del teFto en grados;
+l par*metro opcional al6Enmo#e determina c-mo est* alineado el teFto; $ea la documentaci-n de
5li#PDF para los posi#les valores;
$ea tam#i<n cpdf>sho3>+y./;
cpdf>translate
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
cpd(Ztranslate 22 De(ine el sistema de origen de coordenadas
Kescripci"n
void cpdf>translate > int pd( documentA dou#le F2"oorA dou#le y2"oorA int mode ?
La (unci-n cpdf>translate./ de(ine el sistema origen de coordenadas en el punto >8=coorA ?=coor?;
+l Bltimo par*metro opcional determina la longitud de la unidad; i es 3 o se omiteA se usa la unidad
por de(ecto especi(icada en la p*gina; De otro modo las coordenadas son medidas en puntos
postscriptA depreciando la unidad actual;
IIC. CracB ;unctions
Introducci"n
,hese (unctions alloE you to use the 5rac"Li# li#rary to test the HstrengthH o( a passEord; ,he
HstrengthH o( a passEord is tested #y that chec"s lengthA use o( upper and loEer case and chec"ed
against the speci(ied 5rac"Li# dictionary; 5rac"Li# Eill also give help(ul diagnostic messages that
Eill help HstrengthenH the passEord;
Nota- ,his eFtension has #een moved to the P+5L repository and is no longer #undled
Eith P&P as o( P&P 4;3;3;
Me?uirimientos
More in(ormation regarding 5rac"Li# along Eith the li#rary can #e (ound at
httpCDDEEE;crypticide;orgDusersDalecmD;
Instalaci"n
+sta eFtension P+5L no esta ligada a P&P; Mas in(ormacion so#re nuevos lanzamientosA descargas
(icheros de (uentesA in(ormacion so#re los responsa#les asi como un H5&ANG+LOGHA se puede
encontrar a/uiC httpCDDpecl;php;netDpac"ageDcrac";
+n P&P 8 la (uente de las eFtensiones P+5L pueden encontrarse en el directorio ext/ /ue se eFiste
en las (uentes de P&P o en el enlace P+5L de arri#a; .n order to use these (unctions you must
compile P&P Eith 5rac" support #y using the ==76th=crac>):D0R. con(iguration option;
LindoEs users Eill ena#le php%cracI.dll inside o( php.ini in order to use these (unctions;
+n P&P 8A esta DLL se encuentra en el directorio extensions/ /ue eFiste en los #inarios de P&P
para LindoEs; Podeis descargar esta DLL de las eFtensiones P+5L desde la pagina P&P
DoEnloads o desde httpCDDsnaps;php;netD;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. CracB configuration options
Name Kefault Changeable
crac";de(aultZdictiona
ry
N@LL
P&PZ.N.Z%,+
M
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
E'emplos
,his eFample shoEs hoE to open a 5rac"Li# dictionaryA test a given passEordA retrieve any
diagnostic messagesA and close the dictionary;
E'emplo !. CracB:ib e+ample
<?php
// ?pen RracIOib Lictionary
$dictionary > cracI%opendict3M/usr/local/lib/p8%dictM9
or die3M+nable to open RracIOib dictionaryM9;
// er#orm pass8ord checI
$checI > cracI%checI3$dictionary, MExK,Cs2xM9;
// 'etrie=e messaEes
$diaE > cracI%EetlastmessaEe39;
echo $diaE; // MstronE pass8ordM
// Rlose dictionary
cracI%closedict3$dictionary9;
?>
Nota- .( cracB>checB./ returns TRUEA cracB>getlastmessage./ Eill return Hstrong
passEordH;
Tabla de contenidos
crac"Zchec" 22 Per(orms an o#scure chec" Eith the given passEord
crac"Zclosedict 22 5loses an open 5rac"Li# dictionary
crac"Zgetlastmessage 22 Returns the message (rom the last o#scure chec"
crac"Zopendict 22 Opens a neE 5rac"Li# dictionary
cracB>checB
>P&P 8 _^ 8;3;4?
crac"Zchec" 22 Per(orms an o#scure chec" Eith the given passEord
Kescripci"n
#ool cracB>checB > resource dictionaryA string passEord ?
#ool cracB>checB > string passEord ?
Per(orms an o#scure chec" Eith the given passEord on the speci(ied dictionary;
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
:ista de parmetros
#6ct6onar?
,he crac" li# dictionary; .( not speci(iedA the last opened dictionary is used;
pass7or#
,he tested passEord;
Calores retornados
Returns TRUE i( pass7or# is strongA or FALSE otherEise;
cracB>closedict
>P&P 8 _^ 8;3;4?
crac"Zclosedict 22 5loses an open 5rac"Li# dictionary
Kescripci"n
#ool cracB>closedict > Presource dictionaryQ ?
cracB>closedict./ closes the speci(ied #6ct6onar? identi(ier;
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
:ista de parmetros
#6ct6onar?
,he dictionary to close; .( not speci(iedA the current directory is closed;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
cracB>opendict./
cracB>getlastmessage
>P&P 8 _^ 8;3;4?
crac"Zgetlastmessage 22 Returns the message (rom the last o#scure chec"
Kescripci"n
string cracB>getlastmessage > void ?
cracB>getlastmessage./ returns the message (rom the last o#scure chec";
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Calores retornados
,he message (rom the last o#scure chec";
Cer tambi%n
cracB>checB./
cracB>opendict
>P&P 8 _^ 8;3;4?
crac"Zopendict 22 Opens a neE 5rac"Li# dictionary
Kescripci"n
resource cracB>opendict > string dictionary ?
cracB>opendict./ opens the speci(ied 5rac"Li# #6ct6onar? (or use Eith cracB>checB./;
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Nota- Only one dictionary may #e open at a time;
:ista de parmetros
#6ct6onar?
,he path to the 5rac"li# dictionary;
Calores retornados
Returns a dictionary resource identi(ier on successA or FALSE on (ailure;
Cer tambi%n
cracB>checB./
cracB>closedict./
IC. ;unciones de Tipo de Caracter
Introducci"n
Las (unciones /ue o(rece esta eFtensi-n che/uean si un caracter o cadena se u#ica dentro de una
determinada clase de caracteresA de acuerdo a la localidad actual >vea tam#i<n setlocale./?;
5uando son llamadas con un argumento enteroA estas (unciones se comportan eFactamente como sus
hom-logos de 5 provenientes de ctype.h;
5uando son llamadas con un argumento de tipo cadenaA che/uear*n cada caracter de la cadena y
solo devolver*n TRUE si cada caracter de la cadena coincide con el criterio solicitado; 5uando son
llamadas con una cadena vac)aA el resultado ser* siempre TRUE;
Al pasar cual/uier cosa di(erente a una cadena o un enteroA se devolver* FALSE inmediatamente;
De#e notarse /ue se pre(ieren siempre las (unciones ctype so#re las eFpresiones regularesA e incluso
so#re algunas (unciones strZV e isZV Walentes; +sto se de#e a /ue ctype usa una #i#lioteca 5 nativa y
por lo tanto realiza sus procesos signi(icativamente m*s r*pido;
Me?uirimientos
Ninguno aparte de las (unciones de la #i#lioteca de 5 est*ndarA la cual se encuentra disponi#le
siempre;
Instalaci"n
A partir de P&P 8;0;3 estas (unciones est*n ha#ilitadas por de(ecto; +n versiones anteriores es
necesario con(igurar y compilar P&P con el par*metro ==ena1le=ct?pe; +s posi#le desha#ilitar el
soporte para ctype con ==#6sa1le=ct?pe;
La versi-n para LindoEs de +!+ tiene soporte nativo para esta eFtensi-n; No se necesita cargar
ninguna eFtensi-n adicional para usar estas (unciones;
Nota- A partir de P&P 8;7;3 el soporte para ctype es nativo;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
ctypeZalnum 22 5he/uear posi#les caracteres al(anum<ricos
ctypeZalpha 22 5he/uear posi#les caracteres al(a#<ticos
ctypeZcntrl 22 5he/uear posi#les caracteres de control
ctypeZdigit 22 5he/uear posi#les caracteres num<ricos
ctypeZgraph 22 5he/uear posi#les caracteres imprimi#lesA con eFcepci-n de los espacios
ctypeZloEer 22 5he/uear posi#les caracteres en minBscula
ctypeZprint 22 5he/uear posi#les caracteres imprimi#les
ctypeZpunct 22 5he/uear posi#les caracteres imprimi#les /ue no son ni espacios en #lanco ni
caracteres al(anum<ricos
ctypeZspace 22 5he/uear posi#les caracteres de espacio en #lanco
ctypeZupper 22 5he/uear posi#les caracteres en mayBscula
ctypeZFdigit 22 5he/uear posi#les caracteres /ue representen un d)gito heFadecimal
ctype>alnum
>P&P 8 _^ 8;3;8A P&P 4?
ctypeZalnum 22 5he/uear posi#les caracteres al(anum<ricos
Kescripci"n
#ool ctype>alnum > string teFto ?
Devuelve TRUE si cada caracter del te8to es o #ien una letra o un d)gitoA o FALSE de lo contrario;
+n la localidad C est*ndar las letras se limitan a ),=^a=D. y la (unci-n es Walente a preE_matchL</Z
)a=D0=O./'/6<C 'te8toM;
E'emplo !. )n e'emplo de ctype>alnum./ .usando la localidad predeterminada/
<?php
$cadenas > array3M,bRd60yYKM, M#oo!U$barM9;
#oreach 3$cadenas as $caso%prueba9 :
i# 3ctype%alnum3$caso%prueba99 :
echo "Oa cadena $caso%prueba consiste completamente de letras o d&iacute;Eitos.Vn";
; else :
echo "Oa cadena $caso%prueba no consiste completamente de letras o d&iacute;Eitos.Vn";
;
;
?>
+ste e'emplo producir* la salidaC
Oa cadena ,bRd60yYK consiste completamente de letras o d&iacute;Eitos.
Oa cadena #oo!U$bar no consiste completamente de letras o d&iacute;Eitos.
$ea tam#i<n ctype>alpha./A ctype>digit./A y setlocale./;
ctype>alpha
>P&P 8 _^ 8;3;8A P&P 4?
ctypeZalpha 22 5he/uear posi#les caracteres al(a#<ticos
Kescripci"n
#ool ctype>alpha > string teFto ?
Devuelve TRUE si cada caracter del te8to es una letra de la localidad actualA o FALSE de lo
contrario; +n la localidad C est*ndar las letras se limitan a ),=^a=D. y ctype>alpha./ es Walente a
Lct?pe_upperL'te8toM VV ct?pe_lo7erL'te8toMM si YteFto es un caracter sencilloA aun/ue otros idiomas
usan letras /ue no son consideradas como mayBsculas ni minBsculas;
E'emplo !. )n e'emplo de ctype>alpha./ .usando la localidad predeterminada/
<?php
$cadenas > array3M]jE7YRM, Mar#6CM9;
#oreach 3$cadenas as $caso%prueba9 :
i# 3ctype%alpha3$caso%prueba99 :
echo "Oa cadena $caso%prueba consiste completamente de letras.Vn";
; else :
echo "Oa cadena $caso%prueba no consiste completamente de letras.Vn";
;
;
?>
+ste e'emplo producir* la salidaC
Oa cadena ]jE7YR consiste completamente de letras.
Oa cadena ar#6C no consiste completamente de letras.
$ea tam#i<n ctype>upper./A ctype>lo3er./A y setlocale./;
ctype>cntrl
>P&P 8 _^ 8;3;8A P&P 4?
ctypeZcntrl 22 5he/uear posi#les caracteres de control
Kescripci"n
#ool ctype>cntrl > string teFto ?
Devuelve TRUE si cada caracter del te8to tiene una (unci-n especial de controlA o FALSE de lo
contrario; Los caracteres de control sonA por e'emploA la alimentaci-n de l)neaA el ta#uladorA escA etc;
E'emplo !. )n e'emplo de ctype>cntrl./
<?php
$cadenas > array3Mcadena6M >> "VnVrVt", McadenaCM >> Mar#6CM9;
#oreach 3$cadenas as $nombre >> $caso%prueba9 :
i# 3ctype%cntrl3$caso%prueba99 :
echo "Oa cadena M$nombreM consiste completamente de caracteres de control.Vn";
; else :
echo "Oa cadena M$nombreM no consiste completamente de caracteres de control.Vn";
;
;
?>
+ste e'emplo producir* la salidaC
Oa cadena Mcadena6M consiste completamente de caracteres de control.
Oa cadena McadenaCM no consiste completamente de caracteres de control.
ctype>digit
>P&P 8 _^ 8;3;8A P&P 4?
ctypeZdigit 22 5he/uear posi#les caracteres num<ricos
Kescripci"n
#ool ctype>digit > string teFto ?
Devuelve TRUE si cada caracter del te8to es un d)gito decimalA o FALSE de lo contrario;
E'emplo !. )n e'emplo de ctype>digit./
<?php
$cadenas > array3M6JC2.C2M, M6222CM, M8sl!6CM9;
#oreach 3$cadenas as $caso%prueba9 :
i# 3ctype%diEit3$caso%prueba99 :
echo "Oa cadena $caso%prueba consiste completamente de d&iacute;Eitos.Vn";
; else :
echo "Oa cadena $caso%prueba no consiste completamente de d&iacute;Eitos.Vn";
;
;
?>
+ste e'emplo producir* la salidaC
Oa cadena 6JC2.C2 no consiste completamente de d&iacute;Eitos.
Oa cadena 6222C consiste completamente de d&iacute;Eitos.
Oa cadena 8sl!6C no consiste completamente de d&iacute;Eitos.
$ea tam#i<n ctype>alnum./ y ctype>+digit./;
ctype>graph
>P&P 8 _^ 8;3;8A P&P 4?
ctypeZgraph 22 5he/uear posi#les caracteres imprimi#lesA con eFcepci-n de los espacios
Kescripci"n
#ool ctype>graph > string teFto ?
Devuelve TRUE si cada caracter del te8to es imprimi#le y genera alguna salida visi#le >no incluye
los espacios?A o FALSE de lo contrario;
E'emplo !. )n e'emplo de ctype>graph./
<?php
$cadenas > array3Mcadena6M >> "asd#VnVrVt", McadenaCM >> Mar#6CM, Mcadena<M >> MO],U^\.51M9;
#oreach 3$cadenas as $nombre >> $caso%prueba9 :
i# 3ctype%Eraph3$caso%prueba99 :
echo "Oa cadena M$nombreM consiste completamente de caracteres 3=isiblemente9 imprimibles.Vn";
; else :
echo "Oa cadena M$nombreM no consiste completamente de caracteres 3=isiblemente9 imprimibles.Vn";
;
;
?>
+ste e'emplo producir* la salidaC
Oa cadena Mcadena6M no consiste completamente de caracteres 3=isiblemente9 imprimibles.
Oa cadena McadenaCM consiste completamente de caracteres 3=isiblemente9 imprimibles.
Oa cadena Mcadena<M consiste completamente de caracteres 3=isiblemente9 imprimibles.
$ea tam#i<n ctype>alnum./A ctype>print./A y ctype>punct./;
ctype>lo3er
>P&P 8 _^ 8;3;8A P&P 4?
ctypeZloEer 22 5he/uear posi#les caracteres en minBscula
Kescripci"n
#ool ctype>lo3er > string teFto ?
Devuelve TRUE si cada caracter del te8to es una letra minBscula en la localidad actual;
E'emplo !. )n e'emplo de ctype>lo3er./ .usando la localidad predeterminada/
<?php
$cadenas > array3Maac6C<M, MQiutoasM, MN,&sdIsM9;
#oreach 3$cadenas as $caso%prueba9 :
i# 3ctype%lo8er3$caso%prueba99 :
echo "Oa cadena $caso%prueba consiste completamente de letras min&uacute;sculas.Vn";
; else :
echo "Oa cadena $caso%prueba no consiste completamente de letras min&uacute;sculas.Vn";
;
;
?>
+ste e'emplo producir* la salidaC
Oa cadena aac6C< no consiste completamente de letras min&uacute;sculas.
Oa cadena Qiutoas consiste completamente de letras min&uacute;sculas.
Oa cadena N,&sdIs no consiste completamente de letras min&uacute;sculas.
$ea tam#i<n ctype>alpha./A ctype>upper./ y setlocale./;
ctype>print
>P&P 8 _^ 8;3;8A P&P 4?
ctypeZprint 22 5he/uear posi#les caracteres imprimi#les
Kescripci"n
#ool ctype>print > string teFto ?
Devuelve TRUE si cada caracter del te8to genera realmente alguna salida >incluyendo los espacios?;
Devuelve FALSE si el te8to incluye caracteres de control o caracteres /ue no producen ninguna
salida ni realizan (unci-n de control alguna despu<s de todo;
E'emplo !. )n e'emplo de ctype>print./
<?php
$cadenas > array3Mcadena6M >> "asd#VnVrVt", McadenaCM >> Mar#6CM, Mcadena<M >> MO],U^\.51M9;
#oreach 3$cadenas as $nombre >> $caso%prueba9 :
i# 3ctype%print3$caso%prueba99 :
echo "Oa cadena M$nombreM consiste completamente de caracteres imprimibles.Vn";
; else :
echo "Oa cadena M$nombreM no consiste completamente de caracteres imprimibles.Vn";
;
;
?>
+ste e'emplo producir* la salidaC
Oa cadena Mcadena6M no consiste completamente de caracteres imprimibles.
Oa cadena McadenaCM consiste completamente de caracteres imprimibles.
Oa cadena Mcadena<M consiste completamente de caracteres imprimibles.
$ea tam#i<n ctype>cntrl./A ctype>graph./A y ctype>punct./;
ctype>punct
>P&P 8 _^ 8;3;8A P&P 4?
ctypeZpunct 22 5he/uear posi#les caracteres imprimi#les /ue no son ni espacios en #lanco ni
caracteres al(anum<ricos
Kescripci"n
#ool ctype>punct > string teFto ?
Devuelve TRUE si cada caracter del te8to es imprimi#leA pero no es una letraA d)gito o espacio en
#lancoX o FALSE de lo contrario;
E'emplo !. )n e'emplo de ctype>punct./
<?php
$cadenas > array3M,ZasdI!^!$UM, M!^ U $M, MW&$39M9;
#oreach 3$cadenas as $caso%prueba9 :
i# 3ctype%punct3$caso%prueba99 :
echo "Oa cadena $caso%prueba consiste completamente de siEnos de puntuaci&oacute;n.Vn";
; else :
echo "Oa cadena $caso%prueba no consiste completamente de siEnos de puntuaci&oacute;n.Vn";
;
;
?>
+ste e'emplo producir* la salidaC
Oa cadena ,ZasdI!^!$U no consiste completamente de siEnos de puntuaci&oacute;n.
Oa cadena !^ U $ no consiste completamente de siEnos de puntuaci&oacute;n.
Oa cadena W&$39 consiste completamente de siEnos de puntuaci&oacute;n.
$ea tam#i<n ctype>cntrl./ y ctype>graph./;
ctype>space
>P&P 8 _^ 8;3;8A P&P 4?
ctypeZspace 22 5he/uear posi#les caracteres de espacio en #lanco
Kescripci"n
#ool ctype>space > string teFto ?
Devuelve TRUE si cada caracter del te8to genera cierto tipo de espacio en #lancoA o FALSE de lo
contrario; !unto con el caracter regular de espacio en #lancoA tam#i<n se consideran espacios a los
caracteres de ta#ulaci-nA ta#ulaci-n verticalA alimentaci-n de l)neaA retorno de carro y alimentaci-n
de (ormulario;
E'emplo !. )n e'emplo de ctype>space./
<?php
$cadenas > array3Mcadena6M >> "VnVrVt", McadenaCM >> "Vnar#6C", Mcadena<M >> MVnVrVtM9;
#oreach 3$cadenas as $nombre >> $caso%prueba9 :
i# 3ctype%space3$caso%prueba99 :
echo "Oa cadena M$nombreM consiste completamente de espacios en blanco.Vn";
; else :
echo "Oa cadena M$nombreM no consiste completamente de espacios en blanco.Vn";
;
;
?>
+ste e'emplo producir* la salidaC
Oa cadena Mcadena6M consiste completamente de espacios en blanco.
Oa cadena McadenaCM no consiste completamente de espacios en blanco.
Oa cadena Mcadena<M no consiste completamente de espacios en blanco.
$ea tam#i<n ctype>cntrl./A ctype>graph./A y ctype>punct./;
ctype>upper
>P&P 8 _^ 8;3;8A P&P 4?
ctypeZupper 22 5he/uear posi#les caracteres en mayBscula
Kescripci"n
#ool ctype>upper > string teFto ?
Devuelve TRUE si cada caracter del te8to es una letra mayBscula en la localidad actual;
E'emplo !. )n e'emplo de ctype>upper./ .usando la localidad predeterminada/
<?php
$cadenas > array3M,]O7R6<KM, MO".&L?M, MaI8&]7smM9;
#oreach 3$cadenas as $caso%prueba9 :
i# 3ctype%upper3$caso%prueba99 :
echo "Oa cadena $caso%prueba consiste completamente de letras may&uacute;sculas.Vn";
; else :
echo "Oa cadena $caso%prueba no consiste completamente de letras may&uacute;sculas.Vn";
;
;
?>
+ste e'emplo producir* la salidaC
Oa cadena ,]O7R6<K no consiste completamente de siEnos de letras may&uacute;sculas.
Oa cadena O".&L? consiste completamente de siEnos de letras may&uacute;sculas.
Oa cadena aI8&]7sm no consiste completamente de siEnos de letras may&uacute;sculas.
$ea tam#i<n ctype>alpha./A ctype>lo3er./ y setlocale./;
ctype>+digit
>P&P 8 _^ 8;3;8A P&P 4?
ctypeZFdigit 22 5he/uear posi#les caracteres /ue representen un d)gito heFadecimal
Kescripci"n
#ool ctype>+digit > string teFto ?
Devuelve TRUE si cada caracter del te8to es un Hd)gitoH heFadecimalA lo /ue /uiere decir un d)gito
decimal o un caracter del rango ),=3a=9.X FALSE de lo contrario;
E'emplo !. )n e'emplo de ctype>+digit./
<?php
$cadenas > array3M,Z62ZRKKM, M,'626CM, Mab6CbcKKM9;
#oreach 3$cadenas as $caso%prueba9 :
i# 3ctype%xdiEit3$caso%prueba99 :
echo "Oa cadena $caso%prueba consiste completamente de d&iacute;Eitos hexadecimales.Vn";
; else :
echo "Oa cadena $caso%prueba no consiste completamente de d&iacute;Eitos hexadecimales.Vn";
;
;
?>
+ste e'emplo producir* la salidaC
Oa cadena ,Z62ZRKK consiste completamente de d&iacute;Eitos hexadecimales.
Oa cadena ,'626C no consiste completamente de d&iacute;Eitos hexadecimales.
Oa cadena ab6CbcKK consiste completamente de d&iacute;Eitos hexadecimales.
$ea tam#i<n ctype>digit./;
ICI. ;unciones C)M: .Client )M: :ibrary/
Introducci"n
P&P soporta li#curlA una #i#lioteca creada por Danile ten#ergA /ue permite coneFi-n y
comunicaci-n con varios tipos de servidores di(erentes con varios tipos de protocolos di(erentes;
li#curl actualmente soporta los portocolos httpA httpsA (tpA gopherA telnetA dictA (ile y ldap; li#curl
tam#i<n soporta certi(icados &,,PA &,,P PO,A &,,P P@,A env)o por F,P >esto tam#i<n puede
ser realizado con la eFtensi-n (tp de P&P?A env)o de archivos tipo (ormulario &,,PA servidores
proFyA coo"ies y autenticaci-n usuarioRcontraseWa;
+stas (unciones (ueron agregadas en 8;3;0;
Me?uirimientos
Para poder usar las (unciones 5@RL de#er* instalar el pa/uete 5@RL; P&P re/uiere /ue use 5@RL
:;3;02#eta o superior; P&P no (uncionar* con una versi-n de 5@RL menor a :;3;02#eta; Desde la
versi-n 8;0;7 de P&P se necesitaA al menosA 5@RL :;9;3 o superior;
Instalaci"n
,o use P&PHs 5@RL support you must also compile P&P ==76th=curl):D0R. Ehere D.R is the
location o( the directory containing the li# and include directories; .n the =include= directory there
should #e a (older named =curl= Ehich should contain the easy.h and curl.h (iles; ,here should
#e a (ile named libcurl.a located in the =li#= directory; Beginning Eith P&P 8;7;3 you can
con(igure P&P to use 5@RL (or @RL streams ==76th=curl7rappers;
Note to 2in7* )sers- .n order to ena#le this module on a LindoEs environmentA you
must copy libeay<C.dll and ssleay<C.dll (rom the DLL (older o( the
P&PDLin70 #inary pac"age to the %,+M (older o( your LindoEs machine; >+FC
R@V74..*V&P&*E"<C or R@V74.L?7&V&P&*E"?
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
CURLOPT_DNS_USE_#LO(AL_CACHE >integer?
CURLOPT_DNS_CACHE_TIMEOUT >integer?
CURLOPT_FTPSSLAUTH >integer?
Availa#le since P&P 4;1;3
CURLOPT_PORT >integer?
CURLOPT_FILE >integer?
CURLOPT_INFILE >integer?
CURLOPT_INFILESI/E >integer?
CURLOPT_URL >integer?
CURLOPT_PRO%Y >integer?
CURLOPT_$ER(OSE >integer?
CURLOPT_HEADER >integer?
CURLOPT_HTTPHEADER >integer?
CURLOPT_NOPRO#RESS >integer?
CURLOPT_NO(ODY >integer?
CURLOPT_FAILONERROR >integer?
CURLOPT_UPLOAD >integer?
CURLOPT_POST >integer?
CURLOPT_FTPLISTONLY >integer?
CURLOPT_FTPAPPEND >integer?
CURLOPT_NETRC >integer?
CURLOPT_FOLLO"LOCATION >integer?
CURLOPT_FTPASCII >integer?
CURLOPT_PUT >integer?
CURLOPT_MUTE >integer?
CURLOPT_USERP"D >integer?
CURLOPT_PRO%YUSERP"D >integer?
CURLOPT_RAN#E >integer?
CURLOPT_TIMEOUT >integer?
CURLOPT_POSTFIELDS >integer?
CURLOPT_REFERER >integer?
CURLOPT_USERA#ENT >integer?
CURLOPT_FTPPORT >integer?
CURLOPT_FTP_USE_EPS$ >integer?
CURLOPT_LO"_SPEED_LIMIT >integer?
CURLOPT_LO"_SPEED_TIME >integer?
CURLOPT_RESUME_FROM >integer?
CURLOPT_COO&IE >integer?
CURLOPT_SSLCERT >integer?
CURLOPT_SSLCERTPASS"D >integer?
CURLOPT_"RITEHEADER >integer?
CURLOPT_SSL_$ERIFYHOST >integer?
CURLOPT_COO&IEFILE >integer?
CURLOPT_SSL$ERSION >integer?
CURLOPT_TIMECONDITION >integer?
CURLOPT_TIME$ALUE >integer?
CURLOPT_CUSTOMRE.UEST >integer?
CURLOPT_STDERR >integer?
CURLOPT_TRANSFERTE%T >integer?
CURLOPT_RETURNTRANSFER >integer?
CURLOPT_.UOTE >integer?
CURLOPT_POST.UOTE >integer?
CURLOPT_INTERFACE >integer?
CURLOPT_&R(+LE$EL >integer?
CURLOPT_HTTPPRO%YTUNNEL >integer?
CURLOPT_FILETIME >integer?
CURLOPT_"RITEFUNCTION >integer?
CURLOPT_READFUNCTION >integer?
CURLOPT_PASS"DFUNCTION >integer?
CURLOPT_HEADERFUNCTION >integer?
CURLOPT_MA%REDIRS >integer?
CURLOPT_MA%CONNECTS >integer?
CURLOPT_CLOSEPOLICY >integer?
CURLOPT_FRESH_CONNECT >integer?
CURLOPT_FOR(ID_REUSE >integer?
CURLOPT_RANDOM_FILE >integer?
CURLOPT_E#DSOC&ET >integer?
CURLOPT_CONNECTTIMEOUT >integer?
CURLOPT_SSL_$ERIFYPEER >integer?
CURLOPT_CAINFO >integer?
CURLOPT_CAPATH >integer?
CURLOPT_COO&IE'AR >integer?
CURLOPT_SSL_CIPHER_LIST >integer?
CURLOPT_(INARYTRANSFER >integer?
CURLOPT_NOSI#NAL >integer?
CURLOPT_PRO%YTYPE >integer?
CURLOPT_(UFFERSI/E >integer?
CURLOPT_HTTP#ET >integer?
CURLOPT_HTTP_$ERSION >integer?
CURLOPT_SSL&EY >integer?
CURLOPT_SSL&EYTYPE >integer?
CURLOPT_SSL&EYPASS"D >integer?
CURLOPT_SSLEN#INE >integer?
CURLOPT_SSLEN#INE_DEFAULT >integer?
CURLOPT_SSLCERTTYPE >integer?
CURLOPT_CRLF >integer?
CURLOPT_ENCODIN# >integer?
CURLOPT_PRO%YPORT >integer?
CURLOPT_UNRESTRICTED_AUTH >integer?
CURLOPT_FTP_USE_EPRT >integer?
CURLOPT_HTTP*00ALIASES >integer?
CURLOPT_HTTPAUTH >integer?
CURLAUTH_(ASIC >integer?
CURLAUTH_DI#EST >integer?
CURLAUTH_#SSNE#OTIATE >integer?
CURLAUTH_NTLM >integer?
CURLAUTH_ANY >integer?
CURLAUTH_ANYSAFE >integer?
CURLOPT_PRO%YAUTH >integer?
CURLCLOSEPOLICY_LEAST_RECENTLY_USED >integer?
CURLCLOSEPOLICY_LEAST_TRAFFIC >integer?
CURLCLOSEPOLICY_SLO"EST >integer?
CURLCLOSEPOLICY_CALL(AC& >integer?
CURLCLOSEPOLICY_OLDEST >integer?
CURLINFO_EFFECTI$E_URL >integer?
CURLINFO_HTTP_CODE >integer?
CURLINFO_HEADER_SI/E >integer?
CURLINFO_RE.UEST_SI/E >integer?
CURLINFO_TOTAL_TIME >integer?
CURLINFO_NAMELOO&UP_TIME >integer?
CURLINFO_CONNECT_TIME >integer?
CURLINFO_PRETRANSFER_TIME >integer?
CURLINFO_SI/E_UPLOAD >integer?
CURLINFO_SI/E_DO"NLOAD >integer?
CURLINFO_SPEED_DO"NLOAD >integer?
CURLINFO_SPEED_UPLOAD >integer?
CURLINFO_FILETIME >integer?
CURLINFO_SSL_$ERIFYRESULT >integer?
CURLINFO_CONTENT_LEN#TH_DO"NLOAD >integer?
CURLINFO_CONTENT_LEN#TH_UPLOAD >integer?
CURLINFO_STARTTRANSFER_TIME >integer?
CURLINFO_CONTENT_TYPE >integer?
CURLINFO_REDIRECT_TIME >integer?
CURLINFO_REDIRECT_COUNT >integer?
CURL_$ERSION_IP$1 >integer?
CURL_$ERSION_&ER(EROS+ >integer?
CURL_$ERSION_SSL >integer?
CURL_$ERSION_LI(/ >integer?
CURL$ERSION_NO" >integer?
CURLE_O& >integer?
CURLE_UNSUPPORTED_PROTOCOL >integer?
CURLE_FAILED_INIT >integer?
CURLE_URL_MALFORMAT >integer?
CURLE_URL_MALFORMAT_USER >integer?
CURLE_COULDNT_RESOL$E_PRO%Y >integer?
CURLE_COULDNT_RESOL$E_HOST >integer?
CURLE_COULDNT_CONNECT >integer?
CURLE_FTP_"EIRD_SER$ER_REPLY >integer?
CURLE_FTP_ACCESS_DENIED >integer?
CURLE_FTP_USER_PASS"ORD_INCORRECT >integer?
CURLE_FTP_"EIRD_PASS_REPLY >integer?
CURLE_FTP_"EIRD_USER_REPLY >integer?
CURLE_FTP_"EIRD_PAS$_REPLY >integer?
CURLE_FTP_"EIRD_**-_FORMAT >integer?
CURLE_FTP_CANT_#ET_HOST >integer?
CURLE_FTP_CANT_RECONNECT >integer?
CURLE_FTP_COULDNT_SET_(INARY >integer?
CURLE_PARTIAL_FILE >integer?
CURLE_FTP_COULDNT_RETR_FILE >integer?
CURLE_FTP_"RITE_ERROR >integer?
CURLE_FTP_.UOTE_ERROR >integer?
CURLE_HTTP_NOT_FOUND >integer?
CURLE_"RITE_ERROR >integer?
CURLE_MALFORMAT_USER >integer?
CURLE_FTP_COULDNT_STOR_FILE >integer?
CURLE_READ_ERROR >integer?
CURLE_OUT_OF_MEMORY >integer?
CURLE_OPERATION_TIMEOUTED >integer?
CURLE_FTP_COULDNT_SET_ASCII >integer?
CURLE_FTP_PORT_FAILED >integer?
CURLE_FTP_COULDNT_USE_REST >integer?
CURLE_FTP_COULDNT_#ET_SI/E >integer?
CURLE_HTTP_RAN#E_ERROR >integer?
CURLE_HTTP_POST_ERROR >integer?
CURLE_SSL_CONNECT_ERROR >integer?
CURLE_FTP_(AD_DO"NLOAD_RESUME >integer?
CURLE_FILE_COULDNT_READ_FILE >integer?
CURLE_LDAP_CANNOT_(IND >integer?
CURLE_LDAP_SEARCH_FAILED >integer?
CURLE_LI(RARY_NOT_FOUND >integer?
CURLE_FUNCTION_NOT_FOUND >integer?
CURLE_A(ORTED_(Y_CALL(AC& >integer?
CURLE_(AD_FUNCTION_AR#UMENT >integer?
CURLE_(AD_CALLIN#_ORDER >integer?
CURLE_HTTP_PORT_FAILED >integer?
CURLE_(AD_PASS"ORD_ENTERED >integer?
CURLE_TOO_MANY_REDIRECTS >integer?
CURLE_UN&NO"N_TELNET_OPTION >integer?
CURLE_TELNET_OPTION_SYNTA% >integer?
CURLE_O(SOLETE >integer?
CURLE_SSL_PEER_CERTIFICATE >integer?
CURLE_#OT_NOTHIN# >integer?
CURLE_SSL_EN#INE_NOTFOUND >integer?
CURLE_SSL_EN#INE_SETFAILED >integer?
CURLE_SEND_ERROR >integer?
CURLE_REC$_ERROR >integer?
CURLE_SHARE_IN_USE >integer?
CURLE_SSL_CERTPRO(LEM >integer?
CURLE_SSL_CIPHER >integer?
CURLE_SSL_CACERT >integer?
CURLE_(AD_CONTENT_ENCODIN# >integer?
CURLE_LDAP_IN$ALID_URL >integer?
CURLE_FILESI/E_E%CEEDED >integer?
CURLE_FTP_SSL_FAILED >integer?
CURLFTPAUTH_DEFAULT >integer?
Availa#le since P&P 4;1;3
CURLFTPAUTH_SSL >integer?
Availa#le since P&P 4;1;3
CURLFTPAUTH_TLS >integer?
Availa#le since P&P 4;1;3
CURLPRO%Y_HTTP >integer?
CURLPRO%Y_SOC&S2 >integer?
CURL_NETRC_OPTIONAL >integer?
CURL_NETRC_I#NORED >integer?
CURL_NETRC_RE.UIRED >integer?
CURL_HTTP_$ERSION_NONE >integer?
CURL_HTTP_$ERSION_)_0 >integer?
CURL_HTTP_$ERSION_)_) >integer?
CURLM_CALL_MULTI_PERFORM >integer?
CURLM_O& >integer?
CURLM_(AD_HANDLE >integer?
CURLM_(AD_EASY_HANDLE >integer?
CURLM_OUT_OF_MEMORY >integer?
CURLM_INTERNAL_ERROR >integer?
CURLMS#_DONE >integer?
E'emplos
@na vez /ue hemos compilado P&P con soporte para 5@RLA podemos comenzar a usar las
(unciones 5@RL; La idea #*sica tras las (unciones 5@RL es /ue inicialicemos una sesi-n 5@RL
usando la (unci-n curl>init./A luego podemos esta#lecer las opciones para la trans(erencia a trav<s
de la (unci-n curl>setopt./A y (inalmente podemos e'ecutar la sesi-n con la (unci-n curl>e+ec./
para luego cerrarla con curl>close./; A/ui hay un e'emplo /ue usa (unciones 5@RL para traer el
contenido de la p*gina de inicio de eFample;com y guardarlo en un archivoC
E'emplo !. )sando el modulo C)M: de PHP para traer la pgina de inicio de e+ample.com
<?php
$ch > curl%init 3"http@//888.example.com/"9;
$#p > #open 3"paEina%de%inicio.txt", "8"9;
curl%setopt 3$ch, R+'O?*%S4OE, $#p9;
curl%setopt 3$ch, R+'O?*%HE,LE', 29;
curl%exec 3$ch9;
curl%close 3$ch9;
#close 3$#p9;
?>
Tabla de contenidos
curlZclose 22 5ierra una sesi-n 5@RL
curlZcopyZhandle 22 5opy a c@RL handle along Eith all o( itHs pre(erences
curlZerrno 22 Devuelve el Bltimo nBmero de error
curlZerror 22 Devuelve una cadena conteniendo el Bltimo error para la sesi-n actual;
curlZeFec 22 +'ecuta una sesi-n 5@RL
curlZgetin(o 22 O#tiene in(ormaci-n respecto a una trans(erencia espec)(ica
curlZinit 22 .nicializa una sesi-n 5@RL
curlZmultiZaddZhandle 22 Add a normal c@RL handle to a c@RL multi handle
curlZmultiZclose 22 5lose a set o( c@RL handles
curlZmultiZeFec 22 Run the su#2connections o( the current c@RL handle
curlZmultiZgetcontent 22 Return the content o( a c@RL handle i(
5@RLOP,ZR+,@RN,RANF+R is set
curlZmultiZin(oZread 22 Get in(ormation a#out the current trans(ers
curlZmultiZinit 22 Returns a neE c@RL multi handle
curlZmultiZremoveZhandle 22 Remove a multi handle (rom a set o( c@RL handles
curlZmultiZselect 22 Get all the soc"ets associated Eith the c@RL eFtensionA Ehich can then #e
=selected=
curlZsetopt 22 Asigna un valor a una opci-n de una sesi-n 5@RL
curlZversion 22 Devuelve la versi-n actual de 5@RL
curl>close
>P&P 8 _^ 8;3;0A P&P 4?
curlZclose 22 5ierra una sesi-n 5@RL
Kescripci"n
void curl>close > int ch ?
+sta (unci-n cierra una sesi-n 5@RL y li#era todos sus recursos; +l recurso 5@RLA chA tam#i<n es
eliminado;
curl>copy>handle
>P&P 4?
curlZcopyZhandle 22 5opy a c@RL handle along Eith all o( itHs pre(erences
Kescription
resource curl>copy>handle > resource ch ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
curl>errno
>P&P 8 _^ 8;3;7A P&P 4?
curlZerrno 22 Devuelve el Bltimo nBmero de error
Kescripci"n
int curl>errno > resource ch ?
Devuelve el nBmero de error de la Bltima operaci-n c@RL realizada con el recurso chA o 0 >cero? si
no ocurrieron errores;
$ea tam#i<n curl>error./;
curl>error
>P&P 8 _^ 8;3;7A P&P 4?
curlZerror 22 Devuelve una cadena conteniendo el Bltimo error para la sesi-n actual;
Kescripci"n
string curl>error > resource ch ?
Devuelve un mensa'e de error para la Bltima operaci-n c@RL realizada con el recurso chA o << >una
cadena vac)a? si no hay error;
$ea tam#i<nC curl>errno./;
curl>e+ec
>P&P 8 _^ 8;3;0A P&P 4?
curlZeFec 22 +'ecuta una sesi-n 5@RL
Kescripci"n
#ool curl>e+ec > int ch ?
+sta (unci-n de#e ser llamada luego de inicializar una sesi-n 5@RL y (i'ar todas las opciones para
la misma; u prop-sito es simplemente el de e'ecutar la sesi-n 5@RL prede(inida >dada por ch?;
curl>getinfo
>P&P 8 _^ 8;3;8A P&P 4?
curlZgetin(o 22 O#tiene in(ormaci-n respecto a una trans(erencia espec)(ica
Kescripci"n
string curl>getinfo > resource ch PA int optQ ?
Devuelve intormaci-n so#re la Bltima trans(erenciaA opt puede ser uno de los siguientesC
=5@RL.NFOZ+FF+5,.$+Z@RL= 2 La Bltima @RL e(ectiva
=5@RL.NFOZ&,,PZ5OD+= 2 +l Bltimo c-digo &,,P reci#ido
=5@RL.NFOZF.L+,.M+= 2 La (echa remota del documento reci#idoA si el valor devuelto es
21 la (echa del documento es desconocida
=5@RL.NFOZ,O,ALZ,.M+= 2 +l tiempo total de transacci-n en segundos para la Bltima
trans(erencia
=5@RL.NFOZNAM+LOOS@PZ,.M+= 2 +l tiempo en segundos transcurrido hasta /ue la
resoluci-n de nom#res (ue completada
=5@RL.NFOZ5ONN+5,Z,.M+= 2 +l tiempo en segundos /ue tom- esta#lecer la coneFi-n
=5@RL.NFOZPR+,RANF+RZ,.M+= 2 +l tiempo en segundos transcurrido desde el
comienzo hasta antes de comenzar la trans(erencia
=5@RL.NFOZ,AR,,RANF+RZ,.M+= 2 +l tiempo en segundos transucrrido hasta /ue
el primer #yte est* listo para ser trans(erido
=5@RL.NFOZR+D.R+5,Z,.M+= 2 +l tiempo en segundos de todos los
redireccionamientos previos a la transacci-n (inal
=5@RL.NFOZ.I+Z@PLOAD= 2 NBmero total de #ytes enviados
=5@RL.NFOZ.I+ZDOLNLOAD= 2 NBmero total de #ytes reci#idos
=5@RL.NFOZP++DZDOLNLOAD= 2 $elocidad promedio de recepci-n
=5@RL.NFOZP++DZ@PLOAD= 2 $elocidad promedio de env)o
=5@RL.NFOZ&+AD+RZ.I+= 2 ,amaWo total de todos los enca#ezados reci#idos
=5@RL.NFOZR+O@+,Z.I+= 2 ,amaWo total de los re/uerimientos e(ectuadosA
actualmente solo para re/uerimientos &,,P
=5@RL.NFOZLZ$+R.F%R+@L,= 2 Resultado de la veri(icaci-n de certi(icado L
re/uerida al indicar 5@RLOP,ZLZ$+R.F%P++R
=5@RL.NFOZ5ON,+N,ZL+NG,&ZDOLNLOAD= 2 +l tamaWo del contenido reci#idoA
tomado del enca#ezado 5ontent2Length
=5@RL.NFOZ5ON,+N,ZL+NG,&Z@PLOAD= 2 ,amaWo indicado de la in(ormaci-n
enviada
=5@RL.NFOZ5ON,+N,Z,%P+= 2 ,ipo de contenido del o#'eto reci#idoA N@LL indica
/ue el servidor no env)o un enca#ezado 5ontent2,ype v*lido
i es llamado sin el par*metro opcional opt un array asociativo es devuelto con los siguientes
elementosA /ue se corresponden con las opciones del par*metro optC
=url=
=contentZtype=
=httpZencode=
=headerZsize=
=re/uestZsize=
=(iletime=
=sslZveri(yZresult=
=redirectZcount=
=totalZtime=
=nameloo"upZtime=
=connectZtime=
=pretrans(erZtime=
=sizeZupload=
=sizeZdoEnload=
=speedZdoEnload=
=speedZupload=
=doEnloadZcontentZlength=
=uploadZcontentZlength=
=starttrans(erZtime=
=redirectZtime=
curl>init
>P&P 8 _^ 8;3;0A P&P 4?
curlZinit 22 .nicializa una sesi-n 5@RL
Kescripci"n
resource curl>init > Pstring urlQ ?
curl>init./ inicializa una nueva sesi-n y devuelve un recurso 5@RL para ser usado con las
(unciones curl>setopt./A curl>e+ec./A y curl>close./; i el parametro opcional url es indicado el
valor del mismo ser* asignado a la opci-n 5@RLOP,Z@RL; +sto puede ser asignado manualmente
usando la (unci-n curl>setopt./;
E'emplo !. Iniciali6ando una nue5a sesi"n C)M: y traer una pgina 3eb
<?php
$ch > curl%init39;
curl%setopt 3$ch, R+'O?*%+'O, "http@//888.0end.com/"9;
curl%setopt 3$ch, R+'O?*%HE,LE', 29;
curl%exec 3$ch9;
curl%close 3$ch9;
?>
$ea tam#i<nC curl>close./A curl>setopt./
curl>multi>add>handle
>P&P 4?
curlZmultiZaddZhandle 22 Add a normal c@RL handle to a c@RL multi handle
Kescription
int curl>multi>add>handle > resource mhA resource ch ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also curl>multi>init./A curl>init./A and curl>multi>remo5e>handle./;
curl>multi>close
>P&P 4?
curlZmultiZclose 22 5lose a set o( c@RL handles
Kescription
void curl>multi>close > resource mh ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also curl>multi>init./ and curl>close./;
curl>multi>e+ec
>P&P 4?
curlZmultiZeFec 22 Run the su#2connections o( the current c@RL handle
Kescription
int curl>multi>e+ec > resource mhA int istillZrunning ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also curl>multi>init./ and curl>e+ec./;
curl>multi>getcontent
>P&P 4?
curlZmultiZgetcontent 22 Return the content o( a c@RL handle i(
5@RLOP,ZR+,@RN,RANF+R is set
Kescription
string curl>multi>getcontent > resource ch ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also curl>multi>init./;
curl>multi>info>read
>P&P 4?
curlZmultiZin(oZread 22 Get in(ormation a#out the current trans(ers
Kescription
array curl>multi>info>read > resource mh ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also curl>multi>init./;
curl>multi>init
>P&P 4?
curlZmultiZinit 22 Returns a neE c@RL multi handle
Kescription
resource curl>multi>init > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also curl>init./ and curl>multi>close./;
curl>multi>remo5e>handle
>P&P 4?
curlZmultiZremoveZhandle 22 Remove a multi handle (rom a set o( c@RL handles
Kescription
int curl>multi>remo5e>handle > resource mhA resource ch ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also curl>multi>init./A curl>init./A and curl>multi>add>handle./;
curl>multi>select
>P&P 4?
curlZmultiZselect 22 Get all the soc"ets associated Eith the c@RL eFtensionA Ehich can then #e
=selected=
Kescription
int curl>multi>select > resource mh PA (loat timeoutQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also curl>multi>init./;
curl>setopt
>P&P 8 _^ 8;3;0A P&P 4?
curlZsetopt 22 Asigna un valor a una opci-n de una sesi-n 5@RL
Kescripci"n
#ool curl>setopt > int chA string optionA miFed value ?
La (unci-n curl>setopt./ asigna valores para opciones de una sesi-n 5@RL identi(icada por el
par*metro ch; +l par*metro opt6on es la opci-n a la /ue se desea asignar el valor indicado en el
par*metro alue;
alue de#e ser un entero para las siguientes opciones >especi(icada en el par*metro opt6on?X
CUR4O+T_0N304ES0^EC 5uando su#imos un archivo a un sitio remotoA esta opci-n de#e
ser usada para decirle a P&P cu*l ser* el tamaWo del archivo de entrada;
CUR4O+T_(ERAOSEC Asigne un valor distinto de cero a esta opci-n si desea /ue 5@RL
reporte todo lo /ue acontece;
CUR4O+T_!E,DERC Asigne un valor distinto de cero a esta opci-n si desea /ue el
enca#ezado sea incluido en la salida;
CUR4O+T_NO+RO-RESSC Asigne un valor distinto de cero a esta opci-n si no desea /ue
P&P muestre una #arra de progreso para las trans(erencias de 5@RL;
Nota- P&P autom*ticamente asigna un valor distinto de cero a esta opci-nA esto
s-lo de#e ser cam#iado para operaciones de depuraci-n;
CUR4O+T_NOAODBC Asigne un valor distinto de cero a esta opci-n si no desea /ue el
cuerpo sea incluido en la salida;
CUR4O+T_3,04ONERRORC Asigne un valor distinto de cero a esta opci-n si desea /ue
P&P (alle silenciosamente si el c-digo &,,P devuelto es mayor /ue 733; +l
comportamiento por de(ecto es devolver la p*gina normalmenteA ignorando el c-digo;
CUR4O+T_U+4O,DC Asigne un valor distinto de cero a esta opci-n si desea /ue P&P se
prepare para su#ir un archivo;
CUR4O+T_+OSTC Asigne un valor distinto de cero a esta opci-n si desea /ue P&P realize
un pedido &,,P PO, regular; +ste post normalmente es del tipo applicationDF2EEE2(rom2
urlencodedA normalmente utilizado por los (ormularios &,ML;
CUR4O+T_3T+40STON4BC Asigne un valor distinto de cero a esta opci-n y P&P
simplemente listar* los nom#res de un directorio F,P;
CUR4O+T_3T+,++ENDC Asigne un valor distinto de cero a esta opci-n y P&P escri#ir* al
(inal del archivo remoto en lugar de so#reescri#irlo;
CUR4O+T_NETRCC Asigne un valor distinto de cero a esta opci-n y P&P registrar* su
archivo g;Dnetrc para #uscar el nom#re de usuario y la clave del sitio remoto con el /ue est*
esta#leciendo una coneFi-n;
CUR4O+T_3O44OI4OC,T0ONC Asigne un valor distinto de cero a esta opci-n para seguir
algBn enca#ezado del tipo =LocationC = /ue el servidor env)e como parte de los enca#ezados
&,,P >esto es recursivoA P&P seguir* tantos enca#ezados =LocationC = como le sean
enviados?;
CUR4O+T_+UTC Asigne un valor distinto de cero a esta opci-n para enviar un archivo
utilizando el m<todo &,,P P@,; +l archivo a enviar de#e ser especi(icado con las opciones
5@RLOP,Z.NF.L+ y 5@RLOP,Z.NF.L+.I+;
CUR4O+T_MUTEC Asigne un valor distinto de cero a esta opci-n para /ue P&P no genere
ningBna salida para las (unciones 5@RL;
CUR4O+T_T0MEOUTC Asigna un valor /ue contiene el tiempo m*Fimo de e'ecuci-nA en
segundosA para las (unciones 5@RL;
CUR4O+T_4OI_S+EED_40M0TC Asigna un valor a la velocidad m)nima de trans(erencia
en #ytes por segundo; i la trans(erencia se mantiene por de#a'o de ese valor durante la
cantidad de segundos indicados en la opci-n 5@RLOP,ZLOLZP++DZ,.M+A ser*
considerada demasiado lenta y a#ortada por P&P;
CUR4O+T_4OI_S+EED_T0MEC Asigna un valor a la cantidad de segundos /ue la
trans(erencia de#e permanecer de#a'o de la velocidad indicada en
5@RLOP,ZLOLZP++DZL.M., para /ue P&P la considere demasiado lenta y a#orte;
CUR4O+T_RESUME_3ROMC Asigna un valor al desplazamientoA en #ytesA desde el cual
desea /ue comience la trans(erencia;
CUR4O+T_SS4(ERS0ONC Asigna un valor /ue contiene la versi-n de L >0 o 7? a usar;
Por de(ecto P&P trata de detectar la versi-n autom*ticamenteA pero en algBnos casos este
valor de#er* ser (i'ado manualmente;
CUR4O+T_T0MECOND0T0ONC Asigna un valor /ue de(ine c-mo ser* tratado
5@RLOP,Z,.M+$AL@+; Puede (i'ar este parametro a ,.M+5ONDZ.FMOD.N5+ o a
,.M+5ONDZ.@NMOD.N5+; +sta caracter)stica es s-lo para &,,P;
CUR4O+T_T0ME(,4UEC Asigna un valor en segundos al tiempo transcurrido desde el 1 de
+nero de 19:3; +l tiempo ser* utilizado como sea especi(icado por la opci-n
5@RLOP,Z,.M+$AL@+A o en su de(ecto se utilizar* ,.M+5ONDZ.FMOD.N5+;
+l par*metro alue de#e ser una cadena para los siguientes valores del par*metro opt6onC
CUR4O+T_UR4C +sta es la @RL /ue se desea traer; @d; tam#i<n puede (i'ar esta opci-n
cuando se inicializa una sesi-n con la (unci-n curl>init./;
CUR4O+T_USER+IDC Asigna un valor de cadena del tipo PusuarioQCPclaveQA para ser usado
por P&P en la coneFi-n;
CUR4O+T_+ROFBUSER+IDC Asigna un valor de cadena del tipo PusuarioQCPclaveQA para
ser usado en la coneFi-n al servidor proFy &,,P;
CUR4O+T_R,N-EC Asigna un rango en el (ormato =J2%=A donde J o % pueden ser de'ados
de lado; Las trans(erencias &,,P tam#i<n soportan varios intervalosA separados por comas
como en J2%AN2M;
CUR4O+T_+OST30E4DSC Asigna una cadena /ue contiene todos los datos a ser enviados
en una operaci-n &,,P =PO,=;
CUR4O+T_RE3ERERC Asigna una cadena /ue contiene el enca#ezado =re(erer= para ser
usado en un re/uerimiento &,,P;
CUR4O+T_USER,-ENTC Asigna una cadena /ue contiene el enca#ezado =user2agent= para
ser usado en un re/uerimiento &,,P;
CUR4O+T_3T++ORTC Pasa una cadena /ue contiene el valor /ue ser* usado para o#tener la
direcci-n .P a usar en la instrucci-n =POR,= de (tp; La instrucci-n =PO,= le indica al
servidor remoto /ue se conecte a la direcci-n .P /ue le especi(icamos; La cadena puede ser
una direcci-n .PA un nom#re de &ostA una inter(ace de red >en @N.J?A o simplemente un
caracter H2H para usar la direcci-n .P por de(ecto del sistema;
CUR4O+T_COO20EC Asigna una cadena con el contenido de la coo"ie para ser incluida en
el enca#ezado &,,P;
CUR4O+T_SS4CERTC Asigna una cadena /ue contiene el nom#re del archivo /ue guarda el
certi(icado con (ormato P+M;
CUR4O+T_SS4CERT+,SSIDC Asigna una cadena /ue contiene la clave re/uerida para
usar el certi(icado indicado en la opci-n 5@RLOP,ZL5+R,;
CUR4O+T_COO20E304EC Asigna una cadena /ue contiene el nom#re del archivo /ue
guarda la in(ormaci-n de las coo"ies; +ste archivo puede estar en (ormato NetscapeA o
simplemente contener enca#ezados estilo &,,P;
CUR4O+T_CUSTOMRE5UESTC Asigna una cadena para ser usada en lugar de G+, o
&+AD cuando se realiza un re/uerimiento &,,P; +sto es Btil para realizar D+L+,+ B otros
re/uerimientos &,,P m*s oscuros;
Nota- No haga esto sin estar seguro de /ue su servidor soporta el comando
especi(icado;
Las siguientes opciones esperan un descriptor de archivo /ue es o#tenido por medio de la (unci-n
fopen./C
CUR4O+T_304EC +l archivo donde de#e ser gra#ada la salida generada por la trans(erencia;
Por de(ecto es ,DO@,;
CUR4O+T_0N304EC +l archivo desde el /ue se leen los datos para la trans(erencia;
CUR4O+T_IR0TE!E,DERC +l archivo donde de#en ser gra#ados los enca#ezados de la
salida de la trans(erencia;
CUR4O+T_STDERRC +l archivo donde de#en ser gra#ados los erroresA en lugar de stderr;
curl>5ersion
>P&P 8 _^ 8;3;0A P&P 4?
curlZversion 22 Devuelve la versi-n actual de 5@RL
Kescripci"n
string curl>5ersion > void ?
La (unci-n curl>5ersion./ devuelve una cadena /ue contiene la versi-n actual de 5@RL;
ICII. ;unciones de pago electr"nico
+stas (unciones solo est*n disponi#les si el int<rprete ha sido compilado con ==76th=c?1ercash:
)D0R.; +stas (unciones han sido aWadidas en P&P8;
Tabla de contenidos
cy#ercashZ#aseK8Zdecode 22
cy#ercashZ#aseK8Zencode 22 NNN
cy#ercashZdecr 22 NNN
cy#ercashZencr 22 NNN
cybercash>base<8>decode
>P&P 8 `^ 8;0;7?
cy#ercashZ#aseK8Zdecode 22
Kescripci"n
string cybercash>base<8>decode > string in#u(( ?
cybercash>base<8>encode
>P&P 8 `^ 8;0;7?
cy#ercashZ#aseK8Zencode 22 NNN
Kescripci"n
string cybercash>base<8>encode > string in#u(( ?
cybercash>decr
>P&P 8 `^ 8;0;7?
cy#ercashZdecr 22 NNN
Kescripci"n
array cybercash>decr > string Em"A string s"A string in#u(( ?
La (unci-n devuelve un array asociativo con los elementos =errcode= yA si =errcode= es FALSEA
=out#u((= >string?A =outLth= >long? y =mac#u((= >string?;
cybercash>encr
>P&P 8 `^ 8;0;7?
cy#ercashZencr 22 NNN
Kescripci"n
array cybercash>encr > string Em"A string s"A string in#u(( ?
La (unci-n devuelve un array asociativo con los elementos =errcode= yA si =errcode= es FALSEA
=out#u((= >string?A =outLth= >long? y =mac#u((= >string?;
ICIII. Cyrus IMAP administration ;unctions
Introducci"n
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- +sta eFtensi-n no est* disponi#le en plata(ormas LindoEs
Instalaci"n
,o ena#le 5yrus .MAP support and to use these (unctions you have to compile P&P Eith the ==76th=
c?rus option;
A5iso
La eFtensi-n .MAP no puede ser usada 'unto con las eFtensiones recodeA %AI - 5yrus; +sto es
de#ido a /ue las dos utilizan el mismo s)m#olo interno
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
CYRUS_CONN_NONSYNCLITERAL >integer?
CYRUS_CONN_INITIALRESPONSE >integer?
CYRUS_CALL(AC&_NUM(ERED >integer?
CYRUS_CALL(AC&_NOLITERAL >integer?
Tabla de contenidos
cyrusZauthenticate 22 Authenticate against a 5yrus .MAP server
cyrusZ#ind 22 Bind call#ac"s to a 5yrus .MAP connection
cyrusZclose 22 5lose connection to a 5yrus .MAP server
cyrusZconnect 22 5onnect to a 5yrus .MAP server
cyrusZ/uery 22 end a /uery to a 5yrus .MAP server
cyrusZun#ind 22 @n#ind ;;;
cyrus>authenticate
>P&P 8 _^ 8;1;3?
cyrusZauthenticate 22 Authenticate against a 5yrus .MAP server
Kescription
#ool cyrus>authenticate > resource connection PA string mechlist PA string service PA string user PA int
minss( PA int maFss( PA string authname PA string passEordQQQQQQQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cyrus>bind
>P&P 8 _^ 8;1;3?
cyrusZ#ind 22 Bind call#ac"s to a 5yrus .MAP connection
Kescription
#ool cyrus>bind > resource connectionA array call#ac"s ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cyrus>close
>P&P 8 _^ 8;1;3?
cyrusZclose 22 5lose connection to a 5yrus .MAP server
Kescription
#ool cyrus>close > resource connection ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cyrus>connect
>P&P 8 _^ 8;1;3?
cyrusZconnect 22 5onnect to a 5yrus .MAP server
Kescription
resource cyrus>connect > Pstring host PA string port PA int (lagsQQQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cyrus>?uery
>P&P 8 _^ 8;1;3?
cyrusZ/uery 22 end a /uery to a 5yrus .MAP server
Kescription
#ool cyrus>?uery > resource connectionA string /uery ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
cyrus>unbind
>P&P 8 _^ 8;1;3?
cyrusZun#ind 22 @n#ind ;;;
Kescription
#ool cyrus>unbind > resource connectionA string triggerZname ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
III. ;unciones de ;echa y Hora
Introducci"n
+stas (unciones le permiten o#tener la (echa y hora del servidor en donde est*n siendo e'ecutados
sus scripts P&P; Puede usar estas (unciones para dar (ormato a las (echas y horas en muchas
maneras di(erentes;
Nota- Por (avor tenga en cuenta /ue <stas (unciones dependen de los par*metros de
localidad de su servidor; AsegBrese de tener en cuenta el tiempo de preservaci-n de luz
del d)a y los aWos #isiestos cuando tra#a'e con <stas (unciones;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
chec"date 22 valida una (echa u hora
dateZsunrise 22 Returns time o( sunrise (or a given day and location
dateZsunset 22 Returns time o( sunset (or a given day and location
date 22 da (ormato a la (echaDhora local
getdate 22 o#tiene in(ormaci-n de (echa y hora
gettimeo(day 22 o#tiene la hora actual
gmdate 22 da (ormato a una (echaDhora GM,D5@,
gmm"time 22 o#tiene el valor timestamp @N.J de una (echa GM,
gmstr(time 22 da (ormato a una (echaDhora GM,D5@, segBn las convenciones locales
idate 22 Format a local timeDdate as integer
localtime 22 O#tener la hora local
microtime 22 devuelve el valor timestamp @N.J actual con microsegundos
m"time 22 o#tiene el timestamp @N.J de una (echa
str(time 22 da (ormato a la hora o (echa local de acuerdo con las convenciones locales
strptime 22 Parse a timeDdate generated Eith strftime./
strtotime 22 Procesar cual/uier descripci-n teFtual de (echaDhora en .ngl<s convirti<ndola en una
timestamp de @N.J;
time 22 devuelve el timestamp @N.J actual
checBdate
>P&P 7A P&P 8 A P&P 4?
chec"date 22 valida una (echa u hora
Kescripci"n
int checBdate > int monthA int dayA int year ?
Devuelve un valor verdadero si la (echa dada es v*lidaX en caso contrarioA devuelve un valor (also;
5omprue#a la validez de la (echa (ormada por los argumentos; e considera v*lida una (echa siC
el aWo est* entre 3 y 70:K:A am#os incluidos
el mes est* entre 1 y 10A am#os incluidos
el d)a est* en el rango permitido para el mes dado; e tienen en consideraci-n los aWos
#isiestos;
date>sunrise
>P&P 4?
dateZsunrise 22 Returns time o( sunrise (or a given day and location
Kescription
miFed date>sunrise > int timestamp PA int (ormat PA (loat latitude PA (loat longitude PA (loat zenith PA
(loat gmtZo((setQQQQQ ?
date>sunrise./ returns the sunrise time (or a given day >speci(ied as a t6mestamp? and location; ,he
lat6tu#eA lonE6tu#e and Den6th parameters de(ault to the #ate.#e9ault_lat6tu#eA #ate.#e9ault_lonE6tu#e
and #ate.sunr6se_Den6th con(iguration optionsA respectively;
,he lat6tu#e de(aults to North; oA i( you Eant to speci(y a outh valueA you must pass a negative
value; ,he same note applies to lonE6tu#eA Ehich de(aults to +ast;
,he Emt_o99set parameter is speci(ied in hours;
Tabla !. for&at constants
constant description e+ample
@NF@N5ZR+,Z,R.NG returns the sunset time as string 1KC8K
@NF@N5ZR+,ZDO@BL+ returns the result as float 1K;:M087170
@NF@N5ZR+,Z,.M+,AM
P
returns the sunset time as an integer
>timestamp?
1394378K3K
E'emplo !. date>sunrise./ e+ample
<?php
/W calculate the sunrise time #or Oisbon, ortuEal
Oatitude@ <J.1 .orth
OonEitude@ K 7est
Yenith f> K2
o##set@ [6 -"*
W/
echo date3"L " d P"9. M, sunrise time @ M .date%sunrise3time39, &+.S+.R&%'E*%&*'4.-, <J.1, FK, K2, 69;
?>
+l resultado del e'emplo seria algo similar aC
"on Lec C2 C221, sunrise time @ 2J@51
ee also date>sunset./;
date>sunset
>P&P 4?
dateZsunset 22 Returns time o( sunset (or a given day and location
Kescription
miFed date>sunset > int timestamp PA int (ormat PA (loat latitude PA (loat longitude PA (loat zenith PA
(loat gmtZo((setQQQQQ ?
date>sunset./ returns the sunset time (or a given day >speci(ied as a t6mestamp? and location; ,he
lat6tu#eA lonE6tu#e and Den6th parameters de(ault to the #ate.#e9ault_lat6tu#eA #ate.#e9ault_lonE6tu#e
and #ate.sunset_Den6th con(iguration optionsA respectively;
,he lat6tu#e de(aults to North; oA i( you Eant to speci(y a outh valueA you must pass a negative
value; ,he same note applies to lonE6tu#eA Ehich de(aults to +ast;
,he Emt_o99set parameter is speci(ied in hours;
Tabla !. for&at constants
constant description e+ample
@NF@N5ZR+,Z,R.NG returns the sunset time as string 1KC8K
@NF@N5ZR+,ZDO@BL+ returns the result as float 1K;:M087170
@NF@N5ZR+,Z,.M+,AM
P
returns the sunset time as an integer
>timestamp?
1394378K3K
E'emplo !. date>sunset./ e+ample
<?php
/W calculate the sunset time #or Oisbon, ortuEal
Oatitude@ <J.1 .orth
OonEitude@ K 7est
Yenith f> K2
o##set@ [6 -"*
W/
echo date3"L " d P"9. M, sunset time @ M .date%sunset3time39, &+.S+.R&%'E*%&*'4.-, <J.1, FK, K2, 69;
?>
+l resultado del e'emplo seria algo similar aC
"on Lec C2 C221, sunset time @ 6J@6<
ee also date>sunrise./;
date
>P&P 7A P&P 8 A P&P 4?
date 22 da (ormato a la (echaDhora local
Kescripci"n
string date > string (ormat PA int timestampQ ?
Devuelve una cadena (ormateada de acuerdo con la cadena de (ormato dadaA utilizando el valor de
t6mestamp dado o la hora local actual si no hay par*metro;
e reconocen los siguientes caracteres en la cadena de (ormatoC
a 2 =am= o =pm=
A 2 =AM= o =PM=
d 2 d)a del mesA dos d)gitos con cero a la iz/uierdaX es decirA de =31= a =71=
D 2 d)a de la semanaA en teFtoA con tres letrasX por e'emploA =Fri=
F 2 mesA en teFtoA completoX por e'emploA =!anuary=
h 2 horaA de =31= a =10=
& 2 horaA de =33= a =07=
g 2 hourA sin cerosA de =1= a =10=
G 2 hourA sin cerosX de =3= a =07=
i 2 minutosX de =33= a =49=
' 2 d)a del mes sin cero inicialX de =1= a =71=
l >HLH minBscula? 2 d)a de la semanaA en teFtoA completoX por e'emploA =Friday=
L 2 =1= or =3=A segBn si el aWo es #isiesto o no
m 2 mesX de =31= a =10=
n 2 mes sin cero inicialX de =1= a =10=
M 2 mesA en teFtoA 7 letrasX por e'emploA =!an=
s 2 segundosX de =33= a =49=
2 su(i'o ordinal en ingl<sA en teFtoA 0 caracteresX por e'emploA =th=A =nd=
t 2 nBmero de d)as del mes dadoX de =0M= a =71=
@ 2 segundos desde el valor de HepochH
E 2 d)a de la semanaA en nBmeroA de =3= >domingo? a =K= >s*#ado?
% 2 aWoA cuatro ci(rasX por e'emploA =1999=
y 2 aWoA dos ci(rasX por e'emploA =99=
z 2 d)a del aWoX de =3= a =7K4=
I 2 di(erencia horaria en segundos >de =287033= a =87033=?
Los caracteres no reconocidos se imprimen tal cual; +l (ormato =I= siempre devuelve =3= en la
(unci-n gmdate././
E'emplo !. E'emplo de date./
print 3date3"l d& o# S P h@i@s ,"99;
print 3"Auly 6, C222 is on a " . date3"l", mItime32,2,2,H,6,C222999;
+s posi#le usar date./ y mBtime./ 'untas para o#tener (echas (uturas o pasadas;
E'emplo *. E'emplo de date./ y mBtime./
$tomorro8 > mItime32,2,2,date3"m"9 ,date3"d"9[6,date3"P"99;
$lastmonth > mItime32,2,2,date3"m"9F6,date3"d"9, date3"P"99;
$nextyear > mItime32,2,2,date3"m"9, date3"d"9, date3"P"9[69;
Para dar (ormato a (echas en otros idiomasA se de#en usar las (unciones setlocale./ y strftime./;
$er tam#i<n gmdate./ y mBtime./;
getdate
>P&P 7A P&P 8 A P&P 4?
getdate 22 o#tiene in(ormaci-n de (echa y hora
Kescripci"n
array getdate > int timestamp ?
Devuelve un array asociativo /ue contiene la in(ormaci-n de (echa del valor timestamp como los
siguientes elementosC
=seconds= 2 segundos
=minutes= 2 minutos
=hours= 2 horas
=mday= 2 d)a del mes
=Eday= 2 d)a de la semanaA en nBmero
=mon= 2 mesA en nBmero
=year= 2 aWoA en nBmero
=yday= 2 d)a del aWoA en nBmeroX por e'emploA =099=
=Eee"day= 2 d)a de la semanaA en teFtoA completoX por e'emploA =Friday=
=month= 2 mesA en teFtoA completoX por e'emploA =!anuary=
gettimeofday
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
gettimeo(day 22 o#tiene la hora actual
Kescripci"n
array gettimeofday > void ?
+s un inter(az para gettimeo(day>0?; Devuelve un array asociativo /ue contiene los datos devueltos
por esta llamada al sistema;
=sec= 2 segundos
=usec= 2 microsegundos
=minutesEest= 2 minutos al oeste de GreenEich
=dsttime= 2 tipo de correcci-n dst
gmdate
>P&P 7A P&P 8 A P&P 4?
gmdate 22 da (ormato a una (echaDhora GM,D5@,
Kescripci"n
string gmdate > string (ormatA int timestamp ?
.d<ntica a la (unci-n data./ eFcepto en /ue la hora devuelta es la de GreenEich >GM,?; Por
e'emploA si se utiliza en Finlandia >GM, R3033?A la primera l)nea del e'emplo devuelve =!an 31
199M 33C33C33=A mientras la segunda imprime =Dec 71 199: 00C33C33=;
E'emplo !. E'emplo de gmdate./
echo date3 "" d P H@i@s",mItime32,2,2,6,6,6KKJ9 9;
echo Emdate3 "" d P H@i@s",mItime32,2,2,6,6,6KKJ9 9;
$er tam#i<n date./A mBtime./ y gmmBtime./;
gmmBtime
>P&P 7A P&P 8 A P&P 4?
gmm"time 22 o#tiene el valor timestamp @N.J de una (echa GM,
Kescripci"n
int gmmBtime > int hourA int minuteA int secondA int monthA int dayA int year PA int isZdstQ ?
.d<ntica a mBtime./A eFcepto en /ue los par*metros representan una (echa GM,;
gmstrftime
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
gmstr(time 22 da (ormato a una (echaDhora GM,D5@, segBn las convenciones locales
Kescripci"n
string gmstrftime > string (ormatA int timestamp ?
e comporta como strftime./A eFcepto en /ue la hora devuelta es la de GreenEich >GM,?; Por
e'emploA si se utiliza en la zona horaria +, >GM, 23433?A la primera l)nea del e'emplo imprime
=Dec 71 199M 03C33C33=A mientras la segunda imprime =!an 31 1999 31C33C33=;
E'emplo !. E'emplo de gmstrftime./
setlocale 3MOR%*4"EM,Men%+&M9;
echo str#time 3"\b \d \P \H@\"@\&",mItime3C2,2,2,6C,<6,KJ99."Vn";
echo Emstr#time 3"\b \d \P \H@\"@\&",mItime3C2,2,2,6C,<6,KJ99."Vn";
$er tam#i<n strftime./;
idate
>P&P 4?
idate 22 Format a local timeDdate as integer
Kescription
int idate > string (ormat PA int timestampQ ?
Returns a string (ormatted according to the given (ormat string using the given integer t6mestamp or
the current local time i( no timestamp is given; .n other EordsA t6mestamp is optional and de(aults to
the value o( time./;
@nli"e the (unction date./A idate./ accepts 'ust one char in the 9ormat parameter;
Tabla !. The follo3ing characters are recogni6ed in the for&at parameter string
for&at
character
Kescription
A Eatch BeatD.nternet ,ime
# Day o( the month
h &our >10 hour (ormat?
! &our >08 hour (ormat?
6 Minutes
0 returns 1 i( D, is activatedA 0 otherEise
4 returns 1 (or leap yearA 0 otherEise
m Month num#er
s econds
t Days in current month
U
econds since the @niF +poch 2 !anuary 1 19:3 33C33C33 GM, 2 this is the same
as time./
7 Day o( the Eee" >0 on unday?
I .O2MK31 Eee" num#er o( yearA Eee"s starting on Monday
? %ear >1 or 0 digits 2 chec" note #eloE?
B %ear >8 digits?
D Day o( the year
^ ,imezone o((set in seconds
Nota- As idate./ returns alEays an integer and as they canHt start Eith a =3=A idate./
may return less digits then you Eould eFpect; ee the eFample #eloEC
<?php
$timestamp > strtotime3M6st Aanuary C221M9; //62HCK65C22
// this prints the year in a t8o diEit #ormat
// ho8e=er, as this 8ould start 8ith a "2", it
// only prints "1"
echo idate3MyM, $timestamp9;
?>
ee also date./ and time./;
localtime
>P&P 8 A P&P 4?
localtime 22 O#tener la hora local
Kescripci"n
array localtime > Pint muestraZdeZtiempo PA #ool esZasociativoQQ ?
La (unci-n localtime./ devuelve un vector id<tico al de la estructura devuelta en 5 por la llamada a
la misma (unci-n; +l primer par*metro /ue se le pasa a localtime./ es el timestampA una
representaci- de una (echaDhora concretas; i no se proporcionaA se utilizar* la hora actual; +l
segundo argumento de localtime./ es es_asoc6at6o; i est* a 3 o no es proporcionadoA el vector se
devuelve como un vector normalA indizado num<ricamente; i el argumento est* a 1A el vector
devuelto es un vector asociativo conteniendo los di(erentes elementos de la estructura devuelta por
5 al llamar a la (unci-n localtime; Los nom#res de las di(erentes claves del vector asociativo se
encuentran a continuaci-nC
=tmZsec= 2 segundos
=tmZmin= 2 minutos
=tmZhour= 2 horas
=tmZmday= 2 d)a del mes
=tmZmon= 2 mes del aWoA empezando en 3 /ue es +nero
=tmZyear= 2 AWos /ue hacen desde 1933
=tmZEday= 2 D)a de la semana
=tmZyday= 2 D)a del aWo
=tmZisdst= 2 i el cam#io de hora para el ahorro energ<tico tiene e(ecto o no
microtime
>P&P 7A P&P 8 A P&P 4?
microtime 22 devuelve el valor timestamp @N.J actual con microsegundos
Kescripci"n
string microtime > void ?
Devuelve la cadena =msec sec=A donde sec es la hora actual en nBmero de segundos desde el valor
@niF +poch >3C33C33 del 1 de enero de 19:3A hora GM,?A y msec es la parte de microsegundos; +sta
(unci-n s-lo est* disponi#le en sistemas operativos con admiten la llamada al sistema gettimeo(day
>?;
$er tam#i<n time./;
mBtime
>P&P 7A P&P 8 A P&P 4?
m"time 22 o#tiene el timestamp @N.J de una (echa
Kescripci"n
int mBtime > int hourA int minuteA int secondA int monthA int dayA int year PA int isZdstQ ?
,#ertenc6a: $<ase el eFtraWo orden de los argumentosA /ue se di(erencia del orden de argumentos
en una llamada m"time>? de @N.J y /ue no permite eliminar par*metros de derecha a iz/uierda
>ver a#a'o?; +s un error comBn mezclar estos valores en un script;
Devuelve el valor timestamp @niF correspondiente a los argumentos dados; +l timestamp es un
entero de tipo long /ue contiene el nBmero de segundos entre el valor @niF +poch >1 de enero de
19:3? y la hora especi(icada;
e pueden eliminar argumentos en orden de derecha a iz/uierdaX en los argumentos omitidos se
toma el valor de la (echa y hora locales;
6s_#st puede ponerse a 1 si la hora corresponde a horario de veranoA 3 si noA o 21 >valor por omisi-n?
si no se sa#e;
Nota- 6s_#st se aWadi- en la versi-n 7;3;13;
mBtime./ es Btil para realizar c*lculos y validaciones con (echasA ya /ue calcula autom*ticamente el
valor correcto para una entrada (uera de rango; Por e'emploA cada una de las l)neas siguientes
produce la cadena =!an2312199M=;
E'emplo !. E'emplo de mBtime./
echo date3 ""FdFP", mItime32,2,2,6C,<C,6KKH9 9;
echo date3 ""FdFP", mItime32,2,2,6<,6,6KKH9 9;
echo date3 ""FdFP", mItime32,2,2,6,6,6KKJ9 9;
+l Bltimo d)a de cada mes se puede eFpresar como el d)a =3= del mes siguienteA no el d)a 21; Los dos
e'emplos siguientes producen la cadena =,he last day in Fe# 0333 isC 09=;
E'emplo *. El 4ltimo da del pr"+imo mes
$lastday>mItime32,2,2,<,2,C2229;
echo str#time3"Oast day in Seb C222 is@ \d",$lastday9;

$lastday>mItime32,2,2,1,F<6,C2229;
echo str#time3"Oast day in Seb C222 is@ \d",$lastday9;
$er tam#i<n date./ y time./;
strftime
>P&P 7A P&P 8 A P&P 4?
str(time 22 da (ormato a la hora o (echa local de acuerdo con las convenciones locales
Kescripci"n
string strftime > string (ormatA int timestamp ?
Devuelve una cadena (ormateada segBn la cadena de (ormato dada utilizando el valor t6mestamp o la
hora local actual; Los nom#res del mes y el d)a de la semana y otras cadenas dependientes del
idioma respetan lo esta#lecido con setlocale./;
e reconocen los siguientes especi(icadores de conversi-n en la cadena de (ormatoC
ba 2 nom#re del d)a de la semana a#reviado
bA 2 nom#re del d)a de la semana completo
b# 2 nom#re del mes a#reviado
bB 2 nom#re del mes completo
bc 2 representaci-n de (echa y hora pre(eridas en el idioma actual
bd 2 d)a del mes en nBmero >de 33 a 71?
b& 2 hora como un nBmero de 33 a 07
b. 2 hora como un nBmero de 31 a 10
b' 2 d)a del aWo como un nBmero de 331 a 7KK
bm 2 mes como un nBmero de 31 a 10
bM 2 minuto en nBmero
bp 2 mamH o mpmHA segBn la hora dadaA o las cadenas correspondientes en el idioma actual
b 2 segundos en nBmero
b@ 2 nBmero de la semana en el aWoA empezando con el primer domingo como el primer d)a
de la primera semana
bL 2 nBmero de la semana en el aWoA empezando con el primer lunes como el primer d)a de
la primera semana
bE 2 d)a de la semana en nBmero >el domingo es el 3?
bF 2 representaci-n pre(erida de la (echa sin la hora
bJ 2 representaci-n pre(erida de la hora sin la (echa
by 2 aWo en nBmero de 33 a 99
b% 2 aWo en nBmero de cuatro ci(ras
bI 2 nom#re o a#reviatura de la zona horaria
bb 2 car*cter mbH
E'emplo !. E'emplo de strftime./
setlocale 3"OR%*4"E", "R"9;
print3str#time3"\, in Sinnish is "99;
setlocale 3"OR%*4"E", "#i%S4"9;
print3str#time3"\,, in Srench "99;
setlocale 3"OR%*4"E", "#r%R,"9;
print3str#time3"\, and in -erman "99;
setlocale 3"OR%*4"E", "de%LE"9;
print3str#time3"\,.Vn"99;
+ste e'emplo (unciona si se tienen los respectivos mlocalesH instalados en el sistema;
$er tam#i<n setlocale./ y mBtime./;
strptime
>no version in(ormationA might #e only in 5$?
strptime 22 Parse a timeDdate generated Eith strftime./
Kescription
array strptime > string timestampA string (ormat ?
strptime./ returns an array Eith the t6mestamp parsedA or FALSE on error;
Month and Eee"day names and other language dependent strings respect the current locale set Eith
setlocale./ >L5Z,.M+?;
:ista de parmetros
t6mestamp >string?
A timestamp >e;g; returned (rom strftime./?
9ormat >string?
,he (ormat used in t6mestamp >e;g; the same as used in strftime./?;
For more in(ormation a#out the (ormat optionsA read the strftime./ page;
Calores retornados
Returns an arrayA or FALSE on (ailure;
Tabla !. The follo3ing parameters are returned in the array
parameter
s
Kescription
tmZsec econds a(ter the minute >32K1?
tmZmin Minutes a(ter the hour >3249?
tmZhour &our since midnight >3207?
tmZmday Day o( the month >1271?
tmZmon Months since !anuary >3211?
tmZyear %ears since 1933
tmZEday Days since unday >32K?
tmZyday Days since !anuary 1 >327K4?
unparsed
the t6mestamp part Ehich Eas not recognized using the speci(ied
9ormat
E'emplos
E'emplo !. strptime./ e+ample
<?php
$#ormat > M\d/\m/\P \H@\"@\&M;
$str# > str#time3$#ormat9;
echo "$str#Vn";
print%r3strptime3$str#, $#ormat99;
?>
+l resultado del e'emplo seria algo similar aC
2</62/C221 65@51@6K
,rray
3
)tm%sec/ >> 6K
)tm%min/ >> 51
)tm%hour/ >> 65
)tm%mday/ >> <
)tm%mon/ >> K
)tm%year/ >> 621
)tm%8day/ >> 2
)tm%yday/ >> CHG
)unparsed/ >>
9
Cer tambi%n
strftime./
Nota- +sta (unci-n no est* implementada en plata(ormas LindoEs;
strtotime
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
strtotime 22 Procesar cual/uier descripci-n teFtual de (echaDhora en .ngl<s convirti<ndola en una
timestamp de @N.J;
Kescripci"n
int strtotime > string hora PA int ahoraQ ?
La (unci-n espera /ue se le pase una cadena conteniendo una (echa en (ormato .ngl<s e intentar*
procesarla y convertirla a una timestamp >muestra de tiempo? de @N.J relativa a la timestamp
proporcionada en ahoraA o la hora actual si no se indica ninguna; i (allaA devolver* =1;
Dado /ue strtotime./ o#ra de acuerdo con la sintaFis de (echas de GN@A puede echar un vistazo a la
p*gina del manual GN@ titulada Date .nput Formats >Formatos de entrada de (echas?; La sintaFis
descrita ah) es v*lida para el par*tro hora;
E'emplo !. E'emplos con strtotime./
echo strtotime 3"no8"9, "Vn";
echo strtotime 3"62 &eptember C222"9, "Vn";
echo strtotime 3"[6 day"9, "Vn";
echo strtotime 3"[6 8eeI"9, "Vn";
echo strtotime 3"[6 8eeI C days 1 hours C seconds"9, "Vn";
echo strtotime 3"next *hursday"9, "Vn";
echo strtotime 3"last "onday"9, "Vn";
E'emplo *. Comprobando si falla
$str > M.o =&aacute;lidaM;
i# 33$timestamp > strtotime3$str99 >>> F69 :
echo "Oa cadena 3$str9 no es =&aacute;lida.";
; else :
echo "$str >> ". date3Ml d& o# S P h@i@s ,M,$timestamp9;
;
Nota- +l rango v*lido de una timestamp suele ser desde FriA 17 Dec 1931 03C84C48
GM, >$iernesA 17 de diciem#re? a ,ueA 19 !an 037M 37C18C3: GM, >MartesA 19 de
enero?; >+stas son las (echas /ue corresponden a los valores m)nimo y m*Fimo de un
entero con signo de 70 #its;?
time
>P&P 7A P&P 8 A P&P 4?
time 22 devuelve el timestamp @N.J actual
Kescripci"n
int time > void ?
Devuelve la hora actual como nBmero de segundos transcurridos desde las 33C33C33 del 1 de enero
de 19:3 GM, >@niF +poch?;
$er tam#i<n date./;
II. ;unciones de la capa de abstraccion de
bases de datos .dbm(style/
+stas (unciones son la #ase para el acceso a #ases de datos del estilo Ber"eley DB;
+ste es un nivel de a#straccion general para varias #ases de datos; 5omo tal su (uncionalidad esta
limitada a un grupo de modernas #ases de datos como leepycat o(tEareHs DB0; >+sta no de#e
con(undirse con .BM DB0 so(tEareA la cual es soportada mediante las (unciones ODB5;?
+l comportamiento de varios aspectos depende de la implementacion de la #ase de datos; Funciones
como dba>optimi6e./ y dba>sync./ cumpliran su (uncionalidad con unas #ases de datos pero no
con otras;
Los siguientes mane'adores >handlers? estan soportadosC
d#m es el mas antiguo >original? tipo de #ase de datos de la (amilia de Ber"eley DB; e de#e
evitar su usoA si es posi#le; Nosotros no soportamos las (unciones de compati#ilidad de DB0
y gd#mA por/ue ellas solo son compati#les a nivel de codigo (uenteA pero no pueden mane'ar
el (ormato original d#m;
nd#m es un tipo mas nuevo y mas (leFi#le /ue d#m; ,odavia tiene la mayoria de las
limitaciones de d#m >Por lo tanto es descartado?;
gd#m es el gestor de #ases de datos de GN@ >data#ase manager?;
d#0 es leepycat o(tEareHs DB0; +s descrito como =un con'unto de herramientas de
programacion /ue proveen acceso de alto nivel a #ases de datos en aplicaciones standalone o
en el modelo clienteDservidor; =
cd# es =una rapidaA de con(ianzaA sencilla herramienta para la creacion y lectura de #ases de
datos constantes;= Fue creada por el autor de /mail y puede encontrarse en here; 5omo la
#ase es constante solo se soportan las operaciones de lectura;
E'emplo !. E'emplo de K1A
<?php
$id > dba%open3"/tmp/test.db", "n", "dbC"9;
i#3!$id9 :
echo "dba%open #ailedVn";
exit;
;
dba%replace3"Iey", "*his is an example!", $id9;
i#3dba%exists3"Iey", $id99 :
echo dba%#etch3"Iey", $id9;
dba%delete3"Iey", $id9;
;
dba%close3$id9;
?>
DBA es =#inary sa(e= y no tiene ningun limite ar#itrario; &ereda todas sus limitaciones de la
implementacion de #ase de datos /ue tenga;
,odos las #ases de datos #asadas en (icheros de#en proveer un mecanismo para esta#lecer el modo
a la hora de crear nuevas #ases de datosA si ello es posi#le; &a#itualmente este modo es pasado
como el cuarto argumento en dba>open./ o en dba>popen./;
e puede acceder a todas las entradas de una #ase de datos de modo secuencial >lineal? usando las
(unciones dba>firstBey./ y dba>ne+tBey./; No se puede cam#iar la #ase de datos mientras se
recorre >traversing? por ella;
E'emplo *. Mecorriendo una base de datos
<?php
U ...open database...
$Iey > dba%#irstIey3$id9;
8hile3$Iey !> #alse9 :
i#3...9 : U remember the Iey to per#orm some action later
$handle%later)/ > $Iey;
;
$Iey > dba%nextIey3$id9;
;
#or3$i > 2; $i < count3$handle%later9; $i[[9
dba%delete3$handle%later)$i/, $id9;
?>
Tabla de contenidos
d#aZclose 22 5errar u#a #ase de datos
d#aZdelete 22 Borra una entrada especi(icada por la clave "ey
d#aZeFists 22 5omprue#a si la clave "ey eFiste
d#aZ(etch 22 +Ftrae los datos especi(icados por la clave "ey
d#aZ(irst"ey 22 5onseguir la primera clave
d#aZhandlers 22 List all the handlers availa#le
d#aZinsert 22 .nsertar una entrada
d#aZ"eyZsplit 22 plits a "ey in string representation into array representation
d#aZlist 22 List all open data#ase (iles
d#aZneFt"ey 22 +Ftraer la siguiente clave
d#aZopen 22 A#rir una #ase de datos
d#aZoptimize 22 Optimiza la #ase de datos
d#aZpopen 22 Apertura persistente de una #ase de datos
d#aZreplace 22 Reemplaza o inserta una entrada
d#aZsync 22 incroniza la #ase de datos
dba>close
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
d#aZclose 22 5errar u#a #ase de datos
Kescripcion
void dba>close > int handle ?
dba>close./ cierra la coneFion con una #ase de datos previamente a#ierta y li#era todos los recursos
especi(icados por han#le;
han#le es un mane'ador >handle? de la #ase de datos devuelto por dba>open./;
dba>close./ no devuelve ningun valor;
$er tam#ienC dba>open./ dba>popen./
dba>delete
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
d#aZdelete 22 Borra una entrada especi(icada por la clave "ey
Kescripcion
#ool dba>delete > string "eyA int handle ?
dba>delete./ #orra la entrada especi(icada por >e? de la #ase de datos especi(icada por han#le;
>e? es la clave de la entrada /ue es #orrada;
han#le es un mane'ador >handle? de la #ase de datos devuelto por dba>open./;
dba>delete./ devuelve TRUE o FALSEA si la entrada es #orrada o noA respectivamente;
$er tam#ienC dba>e+ists./ dba>fetch./ dba>insert./ dba>replace./
dba>e+ists
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
d#aZeFists 22 5omprue#a si la clave "ey eFiste
Kescripcion
#ool dba>e+ists > string "eyA int handle ?
dba>e+ists./ comprue#a si la clave >e? eFiste en la #ase de datos especi(icada por han#le;
>e? es la clave para la /ue se realiza la compro#acion;
han#le es un mane'ador >handle? de la #ase de datos devuelto por dba>open./;
dba>e+ists./ devuelve TRUE o FALSEA si la clave es hallada o noA respectivamente;
$er tam#ienC dba>fetch./ dba>delete./ dba>insert./ dba>replace./
dba>fetch
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
d#aZ(etch 22 +Ftrae los datos especi(icados por la clave "ey
Kescripcion
string dba>fetch > string "eyA int handle ?
dba>fetch./ eFtrae los datos especi(icados por la clave >e? de la #ase de datos determinada por
han#le;
>e? es la clave de la entrada de los datos /ue /ueremos eFtraer;
han#le es un mane'ador >handle? de la #ase de datos devuelto por dba>open./;
dba>fetch./ devuelve la cadena asociada o FALSEA si el par "eyDdata es hallado o noA
respectivamente;
$er tam#ienC dba>e+ists./ dba>delete./ dba>insert./ dba>replace./
dba>firstBey
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
d#aZ(irst"ey 22 5onseguir la primera clave
Kescripcion
string dba>firstBey > int handle ?
dba>firstBey./ devuelve la primera clave de la #ase de datos especi(icada por han#le y resetea el
puntero interno de claves; +sto permite una #us/ueda lineal por toda la #ase de datos;
han#le es un mane'ador >handle? de la #ase de datos devuelto por dba>open./;
dba>firstBey./ devuelve la clave o FALSE en (uncion de si tiene eFito o (allaA respectivamente;
$er tam#ienC dba>ne+tBey./
dba>handlers
>P&P 8 _^ 8;7;3A P&P 4?
d#aZhandlers 22 List all the handlers availa#le
Kescripci"n
array dba>handlers > P#ool (ullZin(oQ ?
dba>handlers./ list all the handlers supported #y this eFtension;
:ista de parmetros
9ull_6n9o
,urns onDo(( (ull in(ormation display in the result; ,he de(ault is FALSE;
Calores retornados
Returns an array o( data#ase handlers; .( 9ull_6n9o is set to TRUEA the array Eill #e associative Eith
the handlers names as "eysA and their version in(ormation as value; OtherEiseA the result Eill #e an
indeFed array o( handlers names;
Nota- Lhen the internal cd# li#rary is used you Eill see c#1 and c#1_ma>e;
E'emplos
E'emplo !. dba>handlers./ E+ample
<?php
echo ",=ailable LZ, handlers@Vn";
#oreach 3dba%handlers3true9 as $handler%name >> $handler%=ersion9 :
// clean the =ersions
$handler%=ersion > str%replace3M$M, MM, $handler%=ersion9;
echo " F $handler%name@ $handler%=ersionVn";
;
?>
+l resultado del e'emplo seria algo similar aC
,=ailable LZ, handlers@
F cdb@ 2.H5, 'e=ision@ 6.<.C.<
F cdb%maIe@ 2.H5, 'e=ision@ 6.C.C.1
F dbC@ &leepycat &o#t8are@ ZerIeley LZ C.H.H@ 32J/C2/KK9
F ini#ile@ 6.2, 'e=ision@ 6.G.C.<
F #lat#ile@ 6.2, 'e=ision@ 6.5.C.1
dba>insert
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
d#aZinsert 22 .nsertar una entrada
Kescripcion
#ool dba>insert > string "eyA string valueA int handle ?
dba>insert./ inserta la entrada descrita con >e? y alue dentro de la #ase de datos especi(icada por
han#le; Fallara si ya eFiste una entrada con el mismo parametro >e?;
>e? es la clave de la entrada a ser insertada;
alue es el valor a ser insertado;
han#le es un mane'ador >handle? de la #ase de datos devuelto por dba>open./;
dba>insert./ devuelve TRUE o FALSEA en (uncion de si tiene eFito o (allaA respectivamente;
$er tam#ienC dba>e+ists./ dba>delete./ dba>fetch./ dba>replace./
dba>Bey>split
>P&P 4?
d#aZ"eyZsplit 22 plits a "ey in string representation into array representation
Kescripci"n
miFed dba>Bey>split > miFed "ey ?
dba>Bey>split./ splits a "ey >string representation? into an array representation;
:ista de parmetros
>e?
,he "ey in string representation;
Calores retornados
Returns an array o( the (orm arra?L0 :& EroupC 1 :& alue_nameM; ,his (unction Eill return
FALSE i( >e? is NULL or FALSE;
Cer tambi%n
dba>firstBey./
dba>ne+tBey./
dba>fetch./
dba>list
>P&P 8 _^ 8;7;3A P&P 4?
d#aZlist 22 List all open data#ase (iles
Kescripci"n
array dba>list > void ?
dba>list./ list all open data#ase (iles;
Calores retornados
An associative arrayA in the (orm resource6# :& 96lename;
dba>ne+tBey
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
d#aZneFt"ey 22 +Ftraer la siguiente clave
Kescripcion
string dba>ne+tBey > int handle ?
dba>ne+tBey./ devuelve la siguiente clave de la #ase de datos especi(icada por han#le e incrementa
el puntero de claves interno;
han#le es un mane'ador >handle? de la #ase de datos devuelto por dba>open./;
dba>ne+tBey./ devuelve la clave o FALSE dependiendo de si tiene eFito o (allaA respectivamente;
$er tam#ienC dba>firstBey./
dba>open
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
d#aZopen 22 A#rir una #ase de datos
Kescripcion
int dba>open > string pathA string modeA string handler PA ;;;Q ?
dba>open./ esta#lece una instancia para path con mo#e usando han#ler;
path normalmente es el =path= en el sistema de (icheros;
mo#e es =r= para acceso de lecturaA =E= para lecturaDescritura de una #ase de datos ya eFistenteA =c=
para lecturaDescritura y creacion de una #ase datos si esta no eFisteA y =n= para crearA truncar y
lecturaDescritura;
han#ler es el nom#re de el mane'ador >handler? /ue sera usado para el acceso al path; +s pasado
como un parametro opcional a dba>open./ y puede usarse en lugar de ella;
dba>open./ devuelve un valor positivo de handler o FALSEA en el caso de /ue la apertura de la #ase
de datos se realice o si (allaA respectivamente;
$er tam#ienC dba>popen./ dba>close./
dba>optimi6e
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
d#aZoptimize 22 Optimiza la #ase de datos
Kescripcion
#ool dba>optimi6e > int handle ?
dba>optimi6e./ optimiza la #ase de datos especi(icada por han#le;
han#le es un mane'ador >handle? de la #ase de datos devuelto por dba>open./;
dba>optimi6e./ devuelve TRUE o FALSEA si la optimizacion tiene eFito o (allaA respectivamente;
$er tam#ienC dba>sync./
dba>popen
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
d#aZpopen 22 Apertura persistente de una #ase de datos
Kescripcion
int dba>popen > string pathA string modeA string handler PA ;;;Q ?
dba>popen./ esta#lece una instancia persistente para path con mo#e usando han#ler;
path normalmente es el =path= en el sistema de (icheros;
mo#e es =r= para acceso de lecturaA =E= para lecturaDescritura de una #ase de datos ya eFistenteA =c=
para lecturaDescritura y creacion de una #ase datos si esta no eFisteA y =n= para crearA truncar y
lecturaDescritura;
han#ler es el nom#re del mane'ador >handler? /ue sera usado para el acceso al path; +s pasado
como un parametro opcional a dba>popen./ y puede usarse en lugar de ella;
dba>popen./ devuelve un valor positivo de handler o FALSEA en el caso de /ue la apertura de la
#ase de datos se realice o si (allaA respectivamente;
$er tam#ienC dba>open./ dba>close./
dba>replace
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
d#aZreplace 22 Reemplaza o inserta una entrada
Kescripcion
#ool dba>replace > string "eyA string valueA int handle ?
dba>replace./ reemplaza o inserta la entrada descrita con >e? y alue dentro de la #ase de datos
especi(icada por han#le;
>e? es la clave de la entrada a insertar;
alue es el valor a ser insertado;
han#le es un mane'ador >handle? de la #ase de datos devuelto por dba>open./;
dba>replace./ devuelve TRUE o FALSEA dependiendo de si tiene eFito o (alla respectivamente;
$er tam#ienC dba>e+ists./ dba>delete./ dba>fetch./ dba>insert./
dba>sync
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
d#aZsync 22 incroniza la #ase de datos
Kescripcion
#ool dba>sync > int handle ?
dba>sync./ sincroniza la #ase de datos especi(icada por han#le; +sto pro#a#lemente realice una
escritura (isica en el discoA si es soportado;
han#le es un mane'ador >handle? de la #ase de datos devuelto por dba>open./;
dba>sync./ devuelve TRUE o FALSEA si la sincronizacion tiene eFito o (allaA respectivamente;
$er tam#ienC dba>optimi6e./
III. ;unciones para d1ase
+stas (unciones permiten el acceso a datos almacenados en (ormato dBase >d#(?;
No hay soporte para )ndices o campos Memo; ,ampoco hay soporte para #lo/ueoC si dos procesos
concurrentes en el servidor modi(ican el mismo (ichero dBaseA pro#a#lemente se destruir*n los
datos;
A di(erencia de las #ases de datos OLA las =#ases de datos= dBase no pueden cam#iar su de(inici-n;
@na vez creado el (icheroA la de(inici-n de la #ase de datos es (i'a; No hay )ndices /ue aceleren la
#Bs/ueda u organicen los datos de distinto modo; Los (icheros dBase son simples (icheros
secuenciales con registros de longitud (i'a; Los nuevos registros se aWaden al (inal del (ichero y los
registros #orrados se conservan hasta /ue se llama a la (unci-n dbase>pacB././;
e recomienda no utilizar (icheros dBase como #ases de datosA sino elegir cual/uier servidor OLX
MyOL o Postgres son opciones ha#ituales con P&P; +l soporte para dBase se proporciona para
permitir importar y eFportar datos a y desde la #ase de datos Ee#A ya /ue este (ormato de (icheros es
aceptado ha#itualmente por las ho'as de datos y los organizadores de LindoEs; La importaci-n y
eFportaci-n de datos es lo Bnico para lo /ue sirve el soporte dBase;
Tabla de contenidos
d#aseZaddZrecord 22 aWade un registro a un (ichero dBase
d#aseZclose 22 cierra un (ichero dBase
d#aseZcreate 22 crea una #ase de datos dBase
d#aseZdeleteZrecord 22 #orra un registro del (ichero dBase
d#aseZgetZheaderZin(o 22 Gets the header in(o o( a data#ase
d#aseZgetZrecordZEithZnames 22 lee un registro de un (ichero dBase como array asociativo
d#aseZgetZrecord 22 lee un registro de un (ichero dBase
d#aseZnum(ields 22 cuenta el nBmero de campos en un (ichero dBase
d#aseZnumrecords 22 cuenta el nBmero de registros en un (ichero dBase
d#aseZopen 22 a#re un (ichero dBase
d#aseZpac" 22 =empa/ueta= un (ichero dBase
d#aseZreplaceZrecord 22 reemplaza un registro en un (ichero dBase
dbase>add>record
>P&P 7A P&P 8 A P&P 4?
d#aseZaddZrecord 22 aWade un registro a un (ichero dBase
Kescripci"n
#ool dbase>add>record > int d#aseZidenti(ierA array record ?
AWade los datos de recor# a la #ase de datos; i el nBmero de elementos del registro proporcionado
no es igual al nBmero de campos de la #ase de datosA la operaci-n (allar* y la (unci-n devolver*
FALSE;
dbase>close
>P&P 7A P&P 8 A P&P 4?
d#aseZclose 22 cierra un (ichero dBase
Kescripci"n
#ool dbase>close > int d#aseZidenti(ier ?
5ierra el (ichero asociado con #1ase_6#ent696er;
dbase>create
>P&P 7A P&P 8 A P&P 4?
d#aseZcreate 22 crea una #ase de datos dBase
Kescripci"n
int dbase>create > string (ilenameA array (ields ?
+l par*metro 96el#s es un array de arraysA cada uno de los cuales descri#e el (ormato de un campo de
la #ase de datos; 5ada campo consiste de un nom#reA un car*cter /ue indica el tipo de campoA una
longitudA y una precisi-n;
Los tipos de campos disponi#les sonC
L
L-gico; No tienen longitud ni precisi-n;
M
Memo; >in soporte en P&P;? No tienen longitud ni precisi-n;
D
Fecha >almacenada como AAAAMMDD?; No tienen longitud ni precisi-n;
N
NBmero; ,ienen longitud y precisi-n >nBmero de ci(ras tras el punto decimal?;
5
5adena;
i la #ase de datos se crea con <FitoA se devuelve un d#aseZidenti(ierX en caso contrarioA devuelve
FALSE;
E'emplo !. Crear un fichero d1ase
// "database" name
$dbname > "/tmp/test.db#";
// database "de#inition"
$de# >
array3
array3"date", "L"9,
array3"name", "R", 529,
array3"aEe", ".", <, 29,
array3"email", "R", 6CJ9,
array3"ismember", "O"9
9;
// creation
i# 3!dbase%create3$dbname, $de#99
print "<stronE>Error!</stronE>";
dbase>delete>record
>P&P 7A P&P 8 A P&P 4?
d#aseZdeleteZrecord 22 #orra un registro del (ichero dBase
Kescripci"n
#ool dbase>delete>record > int d#aseZidenti(ierA int record ?
Marca el registro recor# para ser #orrado del (ichero de datos; Para eliminar realmente el registro
del (icheroA de#e llamarse a la (unci-n dbase>pacB./;
dbase>get>header>info
>P&P 4?
d#aseZgetZheaderZin(o 22 Gets the header in(o o( a data#ase
Kescripci"n
array dbase>get>header>info > int d#aseZidenti(ier ?
Returns in(ormation on the column structure o( the given data#ase lin" identi(ier;
:ista de parmetros
#1ase_6#ent696er
,he data#ase lin" identi(ierA returned #y dbase>open./ or dbase>create./;
Calores retornados
An indeFed array Eith an entry (or each column in the data#ase; ,he array indeF starts at 3;
+ach array element contains an associative array o( column in(ormationA as descri#ed hereC
name
,he name o( the column
type
,he human2reada#le name (or the d#ase type o( the column >i;e; dateA #ooleanA etc;?
length
,he num#er o( #ytes this column can hold
precision
,he num#er o( digits o( decimal precision (or the column
(ormat
A suggested printf./ (ormat speci(ier (or the column
o((set
,he #yte o((set o( the column (rom the start o( the roE
.( the data#ase header in(ormation cannot #e readA FALSE is returned;
E'emplos
E'emplo !. ,ho3ing header information for a d1ase database file
<?php
// ath to dbase #ile
$db%path > "/tmp/test.db#";
// ?pen dbase #ile
$dbh > dbase%open3$db%path, 29
or die3"Error! Rould not open dbase database #ile M$db%pathM."9;
// -et column in#ormation
$column%in#o > dbase%Eet%header%in#o3$dbh9;
// Lisplay in#ormation
print%r3$column%in#o9;
?>
dbase>get>record>3ith>names
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
d#aseZgetZrecordZEithZnames 22 lee un registro de un (ichero dBase como array asociativo
Kescripci"n
array dbase>get>record>3ith>names > int d#aseZidenti(ierA int record ?
Devuelve los datos del registro recor# en un array asociativo; +l array incluye tam#i<n un elemento
con )ndice HdeletedH /ue vale 1 si el registro ha sido marcado para #orrar >ver dbase>delete>record
./;
5ada campo se convierte al tipo P&P apropiado; >Las (echas se trans(orman en cadenas;?
dbase>get>record
>P&P 7A P&P 8 A P&P 4?
d#aseZgetZrecord 22 lee un registro de un (ichero dBase
Kescripci"n
array dbase>get>record > int d#aseZidenti(ierA int record ?
Devuelve los datos del registro recor# en un array; +l array se indeFa a partir de 3A e incluye un
elemento con el )ndice asociativo HdeletedHA /ue vale 1 si el registro ha sido marcado para #orrar >ver
dbase>delete>record./;
5ada campo se convierte al tipo P&P apropiado; >Las (echas se guardan como cadenas;?
dbase>numfields
>P&P 7A P&P 8 A P&P 4?
d#aseZnum(ields 22 cuenta el nBmero de campos en un (ichero dBase
Kescripci"n
int dbase>numfields > int d#aseZidenti(ier ?
Devuelve el nBmero de campos >columnas? en el (ichero especi(icado; Los nBmeros de campo va de
3 a d#aseZnum(ields>Yd#?21A mientras los nBmeros de registros van de 1 a d#aseZnumrecords>Yd#?;
E'emplo !. )so de dbase>numfields./
$rec > dbase%Eet%record3$db, $recno9;
$n# > dbase%num#ields3$db9;
#or 3$i>2; $i < $n#; $i[[9 :
print $rec)$i/."<br>Vn";
;
dbase>numrecords
>P&P 7A P&P 8 A P&P 4?
d#aseZnumrecords 22 cuenta el nBmero de registros en un (ichero dBase
Kescripci"n
int dbase>numrecords > int d#aseZidenti(ier ?
Devuelve el nBmero de registros >(ilas? en el (ichero especi(icado; Los nBmeros de registro van de 1
a d#aseZnumrecords>Yd#?A mientras los nBmeros de campo van de 3 a d#aseZnum(ields>Yd#?21;
dbase>open
>P&P 7A P&P 8 A P&P 4?
d#aseZopen 22 a#re un (ichero dBase
Kescripci"n
int dbase>open > string (ilenameA int (lags ?
Los =(lags= son los /ue utiliza la llamada al sistema open>?; NormalmenteA 3 signi(ica s-lo lecturaA 1
s-lo escritura y 0 lectura y escritura;
Devuelve un d#aseZidenti(ier del (ichero a#iertoA o FALSE si no pudo a#rirse el (ichero;
dbase>pacB
>P&P 7A P&P 8 A P&P 4?
d#aseZpac" 22 =empa/ueta= un (ichero dBase
Kescripci"n
#ool dbase>pacB > int d#aseZidenti(ier ?
+mpa/ueta el (ichero especi(icadoA #orrando de(initivamente todos los registros marcados con la
(unci-n dbase>delete>record./;
dbase>replace>record
>P&P 7_^ 7;3;11A P&P 8 A P&P 4?
d#aseZreplaceZrecord 22 reemplaza un registro en un (ichero dBase
Kescripci"n
#ool dbase>replace>record > int d#aseZidenti(ierA array recordA int d#aseZrecordZnum#er ?
Reemplaza los datos asociados con el registro recor#_num1er con los datos de recor# en el (ichero
de datos; i el nBmero de elementos del registro proporcionado no es igual al nBmero de campos de
la #ase de datosA la operaci-n (allar* y la (unci-n devolver* FALSE;
#1ase_recor#_num1er es un entero en el rango de 1 al nBmero de registros en el (ichero de datos
>devuelto por la (unci-n dbase>numrecords./?;
IIII. ;unciones K1M ;unctions XobsoletasY
Introducci"n
+stas (unciones le permiten almacenar registros almacenados en una #ase de datos estilo2d#m; +ste
tipo de #ase de datos >soportado por la BD de Ber"eleyA GDBMA y algunas #i#liotecas de sistemaA
asi como en la (orma de una #i#lioteca incorporada de archivos planos? almacena pare'as
claveDvalor >a di(erencia de los registros completos soportados por las #ases de datos relacionales?;
Nota- in em#argoA el soporte de d#m se considera o#soleto y es recomenda#le /ue use
las (unciones de la capa de a#stracci-n de #ases de datos >estilo2d#m? en su lugar;
Me?uirimientos
Para usar estas (unciones es necesario compilar P&P con soporte para una #ase de datos #ase;
5onsulte la lista de #ases de datos soportadas;
Instalaci"n
.n order to use these (unctionsA you must compile P&P Eith d#m support #y using the ==76th=#1
option; .n addition you must ensure support (or an underlying data#ase or you can use some system
li#raries;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
La (unci-n dbmopen./ devuelve un identi(icador de #ase de datos /ue es usado por las dem*s
(unciones d#m;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
E'emplos
E'emplo !. E'emplo de K1M
<?php
$dbm > dbmopen3"lastseen", "8"9;
i# 3dbmexists3$dbm, $id%usuario99 :
$last%seen > dbm#etch3$dbm, $id%usuario9;
; else :
dbminsert3$dbm, $id%usuario, time399;
;
hacer%alEo39;
dbmreplace3$dbm, $id%usuario, time399;
dbmclose3$dbm9;
?>
Tabla de contenidos
d#list 22 Descri#e la #i#lioteca compati#le con DBM usada
d#mclose 22 cierra una #ase de datos d#m
d#mdelete 22 #orra el valor de una clave de una #ase de datos d#m
d#meFists 22 dice si eFiste un valor para una clave dada en la #ase de datos d#m
d#m(etch 22 o#tiene un valor para una clave desde la #ase de datos d#m
d#m(irst"ey 22 o#tiene la primera clave de una #ase de datos d#m
d#minsert 22 inserta un valor para una clave en la #ase de datos d#m
d#mneFt"ey 22 o#tiene la siguiente clave de una #ase de datos d#m
d#mopen 22 A#re una #ase de datos DBM
d#mreplace 22 sustituye el valor de una clave en la #ase de datos d#m
dblist
>P&P 7A P&P 8 ?
d#list 22 Descri#e la #i#lioteca compati#le con DBM usada
Kescripci"n
string dblist > void ?
E'emplo !. Jbtener la informaci"n en la lnea de comandos
)marcus^0aphod marcus/$ php Fr Mecho dblist39;M
*his is -LZ" =ersion 6.J.2, as o# "ay 6K, 6KKK.
dbmclose
>P&P 7A P&P 8 ?
d#mclose 22 cierra una #ase de datos d#m
Kescripci"n
#ool dbmclose > int identi(Zd#m ?
Des#lo/uea y cierra la #ase de datos especi(icada;
dbmdelete
>P&P 7A P&P 8 ?
d#mdelete 22 #orra el valor de una clave de una #ase de datos d#m
Kescripci"n
#ool dbmdelete > int identi(Zd#mA string clave ?
Borra el valor para la clae en la #ase de datos;
Devuelve FALSE si la clave no eFist)a en la #ase de datos;
dbme+ists
>P&P 7A P&P 8 ?
d#meFists 22 dice si eFiste un valor para una clave dada en la #ase de datos d#m
Kescripci"n
#ool dbme+ists > int identi(Zd#mA string clave ?
Devuelve TRUE si hay un valor asociado con la clae;
dbmfetch
>P&P 7A P&P 8 ?
d#m(etch 22 o#tiene un valor para una clave desde la #ase de datos d#m
Kescripci"n
string dbmfetch > int identi(Zd#mA string clave ?
Devuelve el valor asociado con la clae;
dbmfirstBey
>P&P 7A P&P 8 ?
d#m(irst"ey 22 o#tiene la primera clave de una #ase de datos d#m
Kescripci"n
string dbmfirstBey > int identi(Zd#m ?
Devuelve la primera clave de la #ase de datos; N-tese /ue no se garantiza ningBn orden en
particularA pues la #ase de datos se crea utilizando una ta#la hashA /ue no garantiza ordenaci-n
alguna;
dbminsert
>P&P 7A P&P 8 ?
d#minsert 22 inserta un valor para una clave en la #ase de datos d#m
Kescripci"n
int dbminsert > int identi(Zd#mA string claveA string valor ?
AWade el valor a la #ase de datos con la clave especi(icada;
Devuelve 21 si la #ase de datos se a#r)o en modo s-lo lecturaA 3 si la inserci-n tuvo <Fito y 1 si la
clave ya eFist)a >para sustituir el valorA utilice dbmreplace./;?
dbmne+tBey
>P&P 7A P&P 8 ?
d#mneFt"ey 22 o#tiene la siguiente clave de una #ase de datos d#m
Kescripci"n
string dbmne+tBey > int identi(Zd#mA string clave ?
Devuelve la clave /ue sigue a clae; Llamando a dbmfirstBey./ seguida de llamadas sucesivas a
dbmne+tBey./ se pueden visitar todos los pares claveDvalor de la #ase de datos d#m; Por e'emploC
E'emplo !. Cisitanco cada par cla5eA5alor en una base de datos dbm.
$cla=e > dbm#irstIey3$id%dbm9;
8hile 3$cla=e9 :
echo "$cla=e > " . dbm#etch3$id%dbm, $cla=e9 . "Vn";
$cla=e > dbmnextIey3$id%dbm, $cla=e9;
;
dbmopen
>P&P 7A P&P 8 ?
d#mopen 22 A#re una #ase de datos DBM
Kescripci"n
resource dbmopen > string nom#reZarchivoA string #anderas ?
+l primer argumento es la ruta completa al nom#re de archivo de la #ase DBM a ser a#iertaA y el
segundo es el modo de apertura de archivoA el cual es uno de =r=A =n=A =c= o =E= para los modos de
s-lo2lecturaA nuevo >implica lectura2escrituraA y muy pro#a#lemente trun/ue una #ase de datos
eFistente con el mismo nom#re?A crear >implica lectura2escrituraA y no truncar* una #ase de datos
eFistente con el mismo nom#re? y lectura2escritura respectivamente;
Devuelve un identi(icador a ser pasado a las dem*s (unciones DBM en caso de <FitoA o FALSE si
ocurre un error;
i es usado el soporte NDBMA lo /ue har* NDBM en realidad es crear los archivos
nombre%archi=o.dir y nombre%archi=o.paE; GDBM usa s-lo un archivoA asi como lo
hace el soporte interno de archivos planosA y la BD Ber"eley crea un archivo
nombre%archi=o.db; Note /ue P&P realiza su propio #lo/ueo de archivos adicionalmente a
cual/uier #lo/ueo de archivos /ue pueda ser e(ectuado por la #i#lioteca DBM misma; P&P no
elimina los archivos .lcI /ue crea; +stos archivos son usados simplemente como inodes (i'os
so#re los /ue se realiza el #lo/ueo de archivos; Para m*s in(ormaci-n so#re los archivos DBMA
consulte sus p*ginas man @niFA u o#tenga GN@ GDBM;
Nota- 5uando sa(e2mode >modo2seguro? est* activadoA P&P comprue#a si los archivos
o directorios /ue va a utilizar tienen la misma @.D /ue el script /ue est* siendo
e'ecutado;
dbmreplace
>P&P 7A P&P 8 ?
d#mreplace 22 sustituye el valor de una clave en la #ase de datos d#m
Kescripci"n
#ool dbmreplace > int identi(Zd#mA string claveA string valor ?
ustituye el valor para la clave especi(icada de la #ase de datos;
,am#i<n aWadir* la clave a la #ase de datos si no eFist)a antes;
IIIII. K1RR ;unctions
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
Introducci"n
d#RRA made #y the German company 5oncept asaA is a relational data#ase system Eith high
per(ormance and loE memory and dis" usage in mind; Lhile providing OL as an additional
language inter(aceA it is not really a OL data#ase in the (irst place #ut provides its oEn AOL /uery
language Ehich is much more in(luenced #y the relational alge#ra then OL is;
5oncept asa alEays had an interest in supporting open source languagesA d#RR has had Perl and ,cl
call inter(aces (or years noE and uses ,cl as its internal stored procedure language;
Me?uirimientos
,his eFtension relies on eFternal client li#raries so you have to have a d#RR client installed on the
system you Eant to use this eFtension on;
5oncept asa provides d#RR Demo versions and documentation (or LinuFA some other @niF versions;
,here is also a LindoEs version o( d#RRA #ut this eFtension doesnHt support it >yet?;
Instalaci"n
.n order to #uild this eFtension yoursel( you need the d#RR client li#raries and header (iles to #e
installed on your system >these are included in the d#RR installation archives #y de(ault?; %ou have
to run configure Eith option ==76th=#1plus to #uild this eFtension;
configure loo"s (or the client li#raries and header (iles under the de(ault paths /usr/dbplusA /
usr/local/dbplus and /opt/dblus; .( you have installed d#RR in a di((erent place you have
add the installation path to the configure option li"e thisC ==76th=#1plus:/?our/6nstallat6on/path;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
dbplus>relation
Most d#RR (unctions operate on or return #1plus_relat6on resources; A #1plus_relat6on is a handle
to a stored relation or a relation generated as the result o( a /uery;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
dbRR error codes
Tabla !. K1RR Error Codes
PHP Constant dbRR constant meaning
D(PLUS_ERR_NOERR
>integer?
+RRZNO+RR Null error condition
D(PLUS_ERR_DUPLICATE
>integer?
+RRZD@PL.5A,+ ,ried to insert a duplicate tuple
D(PLUS_ERR_EOSCAN
>integer?
+RRZ+O5AN +nd o( scan (rom rget>?
D(PLUS_ERR_EMPTY
>integer?
+RRZ+MP,% Relation is empty >server?
D(PLUS_ERR_CLOSE
>integer?
+RRZ5LO+ ,he server canHt close
D(PLUS_ERR_"LOC&ED
>integer?
+RRZLLO5S+D ,he record is Erite loc"ed
D(PLUS_ERR_LOC&ED
>integer?
+RRZLO5S+D Relation Eas already loc"ed
D(PLUS_ERR_NOLOC&
>integer?
+RRZNOLO5S Relation cannot #e loc"ed
PHP Constant dbRR constant meaning
D(PLUS_ERR_READ
>integer?
+RRZR+AD Read error on relation
D(PLUS_ERR_"RITE
>integer?
+RRZLR.,+ Lrite error on relation
D(PLUS_ERR_CREATE
>integer?
+RRZ5R+A,+ 5reate>? system call (ailed
D(PLUS_ERR_LSEE&
>integer?
+RRZL++S Lsee">? system call (ailed
D(PLUS_ERR_LEN#TH
>integer?
+RRZL+NG,& ,uple eFceeds maFimum length
D(PLUS_ERR_OPEN
>integer?
+RRZOP+N Open>? system call (ailed
D(PLUS_ERR_"OPEN
>integer?
+RRZLOP+N Relation already opened (or Eriting
D(PLUS_ERR_MA#IC
>integer?
+RRZMAG.5 File is not a relation
D(PLUS_ERR_$ERSION
>integer?
+RRZ$+R.ON File is a very old relation
D(PLUS_ERR_P#SI/E
>integer?
+RRZPG.I+ Relation uses a di((erent page size
D(PLUS_ERR_CRC >integer? +RRZ5R5 .nvalid crc in the superpage
D(PLUS_ERR_PIPE
>integer?
+RRZP.P+ Piped relation re/uires lsee">?
D(PLUS_ERR_NID%
>integer?
+RRZN.DJ ,oo many secondary indices
D(PLUS_ERR_MALLOC
>integer?
+RRZMALLO5 Malloc>? call (ailed
D(PLUS_ERR_NUSERS
>integer?
+RRZN@+R +rror use o( maF users
D(PLUS_ERR_PREE%IT
>integer?
+RRZPR++J., 5aused #y invalid usage
D(PLUS_ERR_ONTRAP
>integer?
+RRZON,RAP 5aused #y a signal
D(PLUS_ERR_PREPROC
>integer?
+RRZPR+PRO5 +rror in the preprocessor
D(PLUS_ERR_D(PARSE
>integer?
+RRZDBPAR+ +rror in the parser
D(PLUS_ERR_D(RUNERR
>integer?
+RRZDBR@N+RR Run error in d#
D(PLUS_ERR_D(PREE%IT
>integer?
+RRZDBPR++J.,
+Fit condition caused #y preFit>? V
procedure
D(PLUS_ERR_"AIT
>integer?
+RRZLA., Lait a little >imple only?
PHP Constant dbRR constant meaning
D(PLUS_ERR_CORRUPT_T
UPLE >integer?
+RRZ5ORR@P,Z
,@PL+
A client sent a corrupt tuple
D(PLUS_ERR_"ARNIN#0
>integer?
+RRZLARN.NG3
,he imple routines encountered a non (atal
error Ehich Eas corrected
D(PLUS_ERR_PANIC
>integer?
+RRZPAN.5
,he server should not really die #ut a(ter a
disaster send +RRZPAN.5 to all its clients
D(PLUS_ERR_FIFO
>integer?
+RRZF.FO 5anHt create a (i(o
D(PLUS_ERR_PERM
>integer?
+RRZP+RM Permission denied
D(PLUS_ERR_TCL >integer? +RRZ,5L ,5LZerror
D(PLUS_ERR_RESTRICTE
D >integer?
+RRZR+,R.5,+
D
Only tEo users
D(PLUS_ERR_USER
>integer?
+RRZ@+R
An error in the use o( the li#rary #y an
application programmer
D(PLUS_ERR_UN&NO"N
>integer?
+RRZ@NSNOLN
Tabla de contenidos
d#plusZadd 22 Add a tuple to a relation
d#plusZa/l 22 Per(orm AOL /uery
d#plusZchdir 22 GetDet data#ase virtual current directory
d#plusZclose 22 5lose a relation
d#plusZcurr 22 Get current tuple (rom relation
d#plusZerrcode 22 Get error string (or given errorcode or last error
d#plusZerrno 22 Get error code (or last operation
d#plusZ(ind 22 et a constraint on a relation
d#plusZ(irst 22 Get (irst tuple (rom relation
d#plusZ(lush 22 Flush all changes made on a relation
d#plusZ(reeallloc"s 22 Free all loc"s held #y this client
d#plusZ(reeloc" 22 Release Erite loc" on tuple
d#plusZ(reerloc"s 22 Free all tuple loc"s on given relation
d#plusZgetloc" 22 Get a Erite loc" on a tuple
d#plusZgetuni/ue 22 Get an id num#er uni/ue to a relation
d#plusZin(o 22 Get in(ormation a#out a relation
d#plusZlast 22 Get last tuple (rom relation
d#plusZloc"rel 22 Re/uest Erite loc" on relation
d#plusZneFt 22 Get neFt tuple (rom relation
d#plusZopen 22 Open relation (ile
d#plusZprev 22 Get previous tuple (rom relation
d#plusZrchperm 22 5hange relation permissions
d#plusZrcreate 22 5reates a neE DBRR relation
d#plusZrcrteFact 22 5reates an eFact #ut empty copy o( a relation including indices
d#plusZrcrtli"e 22 5reates an empty copy o( a relation Eith de(ault indices
d#plusZresolve 22 Resolve host in(ormation (or relation
d#plusZrestorepos 22 Restore position
d#plusZr"eys 22 peci(y neE primary "ey (or a relation
d#plusZropen 22 Open relation (ile local
d#plusZr/uery 22 Per(orm local >raE? AOL /uery
d#plusZrrename 22 Rename a relation
d#plusZrsecindeF 22 5reate a neE secondary indeF (or a relation
d#plusZrunlin" 22 Remove relation (rom (ilesystem
d#plusZrzap 22 Remove all tuples (rom relation
d#plusZsavepos 22 ave position
d#plusZsetindeF 22 et indeF
d#plusZsetindeF#ynum#er 22 et indeF #y num#er
d#plusZs/l 22 Per(orm OL /uery
d#plusZtcl 22 +Fecute ,5L code on server side
d#plusZtremove 22 Remove tuple and return neE current tuple
d#plusZundo 22 @ndo
d#plusZundoprepare 22 Prepare undo
d#plusZunloc"rel 22 Give up Erite loc" on relation
d#plusZunselect 22 Remove a constraint (rom relation
d#plusZupdate 22 @pdate speci(ied tuple in relation
d#plusZFloc"rel 22 Re/uest eFclusive loc" on relation
d#plusZFunloc"rel 22 Free eFclusive loc" on relation
dbplus>add
>8;1;3 2 8;0;7 only?
d#plusZadd 22 Add a tuple to a relation
Kescription
int dbplus>add > resource relationA array tuple ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
,his (unction Eill add a tuple to a relation; ,he tuple data is an array o( attri#uteDvalue pairs to #e
inserted into the given relat6on; A(ter success(ul eFecution the tuple array Eill contain the complete
data o( the neEly created tupleA including all implicitly set domain (ields li"e se/uences;
,he (unction Eill return zero >a"a; DBPL@Z+RRZNO+RR? on success or a d#RR error code on
(ailure; ee dbplus>errcode./ or the introduction to this chapter (or more in(ormation on d#RR
error codes;
dbplus>a?l
>8;1;3 2 8;0;7 only?
d#plusZa/l 22 Per(orm AOL /uery
Kescription
resource dbplus>a?l > string /uery PA string server PA string d#pathQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>a?l./ Eill eFecute an AOL @uer? on the given serer and #1path;
On success it Eill return a relation handle; ,he result data may #e (etched (rom this relation #y
calling dbplus>ne+t./ and dbplus>current./; Other relation access (unctions Eill not Eor" on a
result relation;
Further in(ormation on the AOL A;;; Ouery Language is provided in the original d#RR manual;
dbplus>chdir
>8;1;3 2 8;0;7 only?
d#plusZchdir 22 GetDet data#ase virtual current directory
Kescription
string dbplus>chdir > Pstring neEdirQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>chdir./ Eill change the virtual current directory Ehere relation (iles Eill #e loo"ed (or #y
dbplus>open./; dbplus>chdir./ Eill return the a#solute path o( the current directory; 5alling
dbplus>chdir./ Eithout giving any ne7#6r may #e used to /uery the current Eor"ing directory;
dbplus>close
>8;1;3 2 8;0;7 only?
d#plusZclose 22 5lose a relation
Kescription
int dbplus>close > resource relation ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
5alling dbplus>close./ Eill close a relation previously opened #y dbplus>open./;
dbplus>curr
>8;1;3 2 8;0;7 only?
d#plusZcurr 22 Get current tuple (rom relation
Kescription
int dbplus>curr > resource relationA array ituple ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>curr./ Eill read the data (or the current tuple (or the given relat6on and Eill pass it #ac" as
an associative array in tuple;
,he (unction Eill return zero >a"a; DBPL@Z+RRZNO+RR? on success or a d#RR error code on
(ailure; ee dbplus>errcode./ or the introduction to this chapter (or more in(ormation on d#RR
error codes;
ee also dbplus>first./A dbplus>pre5./A dbplus>ne+t./A and dbplus>last./;
dbplus>errcode
>8;1;3 2 8;0;7 only?
d#plusZerrcode 22 Get error string (or given errorcode or last error
Kescription
string dbplus>errcode > Pint errnoQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>errcode./ returns a clearteFt error string (or the error code passed as errno o( (or the result
code o( the last d#RR operation i( no parameter is given;
dbplus>errno
>8;1;3 2 8;0;7 only?
d#plusZerrno 22 Get error code (or last operation
Kescription
int dbplus>errno > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>errno./ Eill return the error code returned #y the last d#RR operation;
ee also dbplus>errcode./;
dbplus>find
>8;1;3 2 8;0;7 only?
d#plusZ(ind 22 et a constraint on a relation
Kescription
int dbplus>find > resource relationA array constraintsA miFed tuple ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>find./ Eill place a constraint on the given relation; Further calls to (unctions li"e
dbplus>curr./ or dbplus>ne+t./ Eill only return tuples matching the given constraints;
5onstraints are triplets o( strings containing o( a domain nameA a comparison operator and a
comparison value; ,he constra6nts parameter array may consist o( a collection o( string arraysA each
o( Ehich contains a domainA an operator and a valueA or o( a single string array containing a multiple
o( three elements;
,he comparison operator may #e one o( the (olloEing stringsC H^^HA H_HA H_^HA H`HA H`^HA Ha^HA HgH (or a
regular eFpression match and HBANDH or HBORH (or #itEise operations;
ee also dbplus>unselect./;
dbplus>first
>8;1;3 2 8;0;7 only?
d#plusZ(irst 22 Get (irst tuple (rom relation
Kescription
int dbplus>first > resource relationA array ituple ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>curr./ Eill read the data (or the (irst tuple (or the given relat6onA ma"e it the current tuple
and pass it #ac" as an associative array in tuple;
,he (unction Eill return zero >a"a; DBPL@Z+RRZNO+RR? on success or a d#RR error code on
(ailure; ee dbplus>errcode./ or the introduction to this chapter (or more in(ormation on d#RR
error codes;
ee also dbplus>curr./A dbplus>pre5./A dbplus>ne+t./A and dbplus>last./;
dbplus>flush
>8;1;3 2 8;0;7 only?
d#plusZ(lush 22 Flush all changes made on a relation
Kescription
int dbplus>flush > resource relation ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>flush./ Eill Erite all changes applied to relat6on since the last (lush to dis";
,he (unction Eill return zero >a"a; DBPL@Z+RRZNO+RR? on success or a d#RR error code on
(ailure; ee dbplus>errcode./ or the introduction to this chapter (or more in(ormation on d#RR
error codes;
dbplus>freealllocBs
>8;1;3 2 8;0;7 only?
d#plusZ(reeallloc"s 22 Free all loc"s held #y this client
Kescription
int dbplus>freealllocBs > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>freealllocBs./ Eill (ree all tuple loc"s held #y this client;
ee also dbplus>getlocB./A dbplus>freelocB./A and dbplus>freerlocBs./;
dbplus>freelocB
>8;1;3 2 8;0;7 only?
d#plusZ(reeloc" 22 Release Erite loc" on tuple
Kescription
int dbplus>freelocB > resource relationA string tname ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>freelocB./ Eill release a Erite loc" on the given tuple previously o#tained #y
dbplus>getlocB./;
ee also dbplus>getlocB./A dbplus>freerlocBs./A and dbplus>freealllocBs./;
dbplus>freerlocBs
>8;1;3 2 8;0;7 only?
d#plusZ(reerloc"s 22 Free all tuple loc"s on given relation
Kescription
int dbplus>freerlocBs > resource relation ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>freerlocBs./ Eill (ree all tuple loc"s held on the given relat6on;
ee also dbplus>getlocB./A dbplus>freelocB./A and dbplus>freealllocBs./;
dbplus>getlocB
>8;1;3 2 8;0;7 only?
d#plusZgetloc" 22 Get a Erite loc" on a tuple
Kescription
int dbplus>getlocB > resource relationA string tname ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>getlocB./ Eill re/uest a Erite loc" on the speci(ied tuple; .t Eill return zero on success or a
non2zero error codeA especially DBPL@Z+RRZLLO5S+DA on (ailure;
ee also dbplus>freelocB./A dbplus>freerlocBs./A and dbplus>freealllocBs./;
dbplus>getuni?ue
>8;1;3 2 8;0;7 only?
d#plusZgetuni/ue 22 Get an id num#er uni/ue to a relation
Kescription
int dbplus>getuni?ue > resource relationA int uni/ueid ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>getuni?ue./ Eill o#tain a num#er guaranteed to #e uni/ue (or the given relat6on and Eill
pass it #ac" in the varia#le given as un6@ue6#;
,he (unction Eill return zero >a"a; DBPL@Z+RRZNO+RR? on success or a d#RR error code on
(ailure; ee dbplus>errcode./ or the introduction to this chapter (or more in(ormation on d#RR
error codes;
dbplus>info
>8;1;3 2 8;0;7 only?
d#plusZin(o 22 Get in(ormation a#out a relation
Kescription
int dbplus>info > resource relationA string "eyA array iresult ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
dbplus>last
>8;1;3 2 8;0;7 only?
d#plusZlast 22 Get last tuple (rom relation
Kescription
int dbplus>last > resource relationA array ituple ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>curr./ Eill read the data (or the last tuple (or the given relat6onA ma"e it the current tuple
and pass it #ac" as an associative array in tuple;
,he (unction Eill return zero >a"a; DBPL@Z+RRZNO+RR? on success or a d#RR error code on
(ailure; ee dbplus>errcode./ or the introduction to this chapter (or more in(ormation on d#RR
error codes;
ee also dbplus>first./A dbplus>curr./A dbplus>pre5./A and dbplus>ne+t./;
dbplus>locBrel
>no version in(ormationA might #e only in 5$?
d#plusZloc"rel 22 Re/uest Erite loc" on relation
Kescription
int dbplus>locBrel > resource relation ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>locBrel./ Eill re/uest a Erite loc" on the given relation; Other clients may still /uery the
relationA #ut canHt alter it Ehile it is loc"ed;
dbplus>ne+t
>8;1;3 2 8;0;7 only?
d#plusZneFt 22 Get neFt tuple (rom relation
Kescription
int dbplus>ne+t > resource relationA array ituple ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>curr./ Eill read the data (or the neFt tuple (or the given relat6onA Eill ma"e it the current
tuple and Eill pass it #ac" as an associative array in tuple;
,he (unction Eill return zero >a"a; DBPL@Z+RRZNO+RR? on success or a d#RR error code on
(ailure; ee dbplus>errcode./ or the introduction to this chapter (or more in(ormation on d#RR
error codes;
ee also dbplus>first./A dbplus>curr./A dbplus>pre5./A and dbplus>last./;
dbplus>open
>8;1;3 2 8;0;7 only?
d#plusZopen 22 Open relation (ile
Kescription
resource dbplus>open > string name ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
,he relation (ile name Eill #e opened; name can #e either a (ile name or a relative or a#solute path
name; ,his Eill #e mapped in any case to an a#solute relation (ile path on a speci(ic host machine
and server;
On success a relation (ile resource >cursor? is returned Ehich must #e used in any su#se/uent
commands re(erencing the relation; Failure leads to a zero return valueA the actual error code may #e
as"ed (or #y calling dbplus>errno./;
dbplus>pre5
>8;1;3 2 8;0;7 only?
d#plusZprev 22 Get previous tuple (rom relation
Kescription
int dbplus>pre5 > resource relationA array ituple ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>curr./ Eill read the data (or the previous tuple (or the given relat6onA Eill ma"e it the
current tuple and Eill pass it #ac" as an associative array in tuple;
,he (unction Eill return zero >a"a; DBPL@Z+RRZNO+RR? on success or a d#RR error code on
(ailure; ee dbplus>errcode./ or the introduction to this chapter (or more in(ormation on d#RR
error codes;
ee also dbplus>first./A dbplus>curr./A dbplus>ne+t./A and dbplus>last./;
dbplus>rchperm
>8;1;3 2 8;0;7 only?
d#plusZrchperm 22 5hange relation permissions
Kescription
int dbplus>rchperm > resource relationA int mas"A string userA string group ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>rchperm./ Eill change access permissions as speci(ied #y mas>A user and Eroup; ,he
values (or these are operating system speci(ic;
dbplus>rcreate
>8;1;3 2 8;0;7 only?
d#plusZrcreate 22 5reates a neE DBRR relation
Kescription
resource dbplus>rcreate > string nameA miFed domlist PA #ool overEriteQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>rcreate./ Eill create a neE relation named name; An eFisting relation #y the same name
Eill only #e overEritten i( the relation is currently not in use and oer7r6te is set to ,R@+;
#oml6st should contain the domain speci(ication (or the neE relation Eithin an array o( domain
description strings; > dbplus>rcreate./ Eill also accept a string Eith space delimited domain
description stringsA #ut it is recommended to use an array?; A domain description string consists o( a
domain name uni/ue to this relationA a slash and a type speci(ication character; ee the d#RR
documentationA especially the d#create>1? manpageA (or a description o( availa#le type speci(iers and
their meanings;
dbplus>rcrte+act
>8;1;3 2 8;0;7 only?
d#plusZrcrteFact 22 5reates an eFact #ut empty copy o( a relation including indices
Kescription
resource dbplus>rcrte+act > string nameA resource relation PA #ool overEriteQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>rcrte+act./ Eill create an eFact #ut empty copy o( the given relat6on under a neE name; An
eFisting relation #y the same name Eill only #e overEritten i( oer7r6te is TRUE and no other
process is currently using the relation;
dbplus>rcrtliBe
>8;1;3 2 8;0;7 only?
d#plusZrcrtli"e 22 5reates an empty copy o( a relation Eith de(ault indices
Kescription
resource dbplus>rcrtliBe > string nameA resource relation PA int overEriteQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>rcrte+act./ Eill create an empty copy o( the given relat6on under a neE nameA #ut Eith
de(ault indices; An eFisting relation #y the same name Eill only #e overEritten i( oer7r6te is TRUE
and no other process is currently using the relation;
dbplus>resol5e
>8;1;3 2 8;0;7 only?
d#plusZresolve 22 Resolve host in(ormation (or relation
Kescription
int dbplus>resol5e > string relationZname ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>resol5e./ Eill try to resolve the given relat6on_name and (ind out internal server idA real
hostname and the data#ase path on this host; ,he (unction Eill return an array containing these
values under the "eys HsidHA HhostH and HhostZpathH or FALSE on error;
ee also dbplus>tcl./;
dbplus>restorepos
>8;1;3 2 8;0;7 only?
d#plusZrestorepos 22 Restore position
Kescription
int dbplus>restorepos > resource relationA array tuple ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
dbplus>rBeys
>8;1;3 2 8;0;7 only?
d#plusZr"eys 22 peci(y neE primary "ey (or a relation
Kescription
resource dbplus>rBeys > resource relationA miFed domlist ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>rBeys./ Eill replace the current primary "ey (or relat6on Eith the com#ination o( domains
speci(ied #y #oml6st;
#oml6st may #e passed as a single domain name string or as an array o( domain names;
dbplus>ropen
>8;1;3 2 8;0;7 only?
d#plusZropen 22 Open relation (ile local
Kescription
resource dbplus>ropen > string name ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>ropen./ Eill open the relation 96le locally (or /uic" access Eithout any clientDserver
overhead; Access is read only and only dbplus>current./ and dbplus>ne+t./ may #e applied to the
returned relation;
dbplus>r?uery
>8;1;3 2 8;0;7 only?
d#plusZr/uery 22 Per(orm local >raE? AOL /uery
Kescription
int dbplus>r?uery > string /uery PA string d#pathQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>r?uery./ per(orms a local >raE? AOL /uery using an AOL interpreter em#edded into the
d#RR client li#rary; dbplus>r?uery./ is (aster than dbplus>a?l./ #ut Eill Eor" on local data only;
dbplus>rrename
>8;1;3 2 8;0;7 only?
d#plusZrrename 22 Rename a relation
Kescription
int dbplus>rrename > resource relationA string name ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>rrename./ Eill change the name o( relat6on to name;
dbplus>rsecinde+
>8;1;3 2 8;0;7 only?
d#plusZrsecindeF 22 5reate a neE secondary indeF (or a relation
Kescription
resource dbplus>rsecinde+ > resource relationA miFed domlistA int type ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>rsecinde+./ Eill create a neE secondary indeF (or relat6on Eith consists o( the domains
speci(ied #y #oml6st and is o( type t?pe
#oml6st may #e passed as a single domain name string or as an array o( domain names;
dbplus>runlinB
>8;1;3 2 8;0;7 only?
d#plusZrunlin" 22 Remove relation (rom (ilesystem
Kescription
int dbplus>runlinB > resource relation ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>unlinB./ Eill close and remove the relat6on;
dbplus>r6ap
>8;1;3 2 8;0;7 only?
d#plusZrzap 22 Remove all tuples (rom relation
Kescription
int dbplus>r6ap > resource relation ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>r6ap./ Eill remove all tuples (rom relat6on;
dbplus>sa5epos
>8;1;3 2 8;0;7 only?
d#plusZsavepos 22 ave position
Kescription
int dbplus>sa5epos > resource relation ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
dbplus>setinde+
>8;1;3 2 8;0;7 only?
d#plusZsetindeF 22 et indeF
Kescription
int dbplus>setinde+ > resource relationA string idFZname ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
dbplus>setinde+bynumber
>8;1;3 2 8;0;7 only?
d#plusZsetindeF#ynum#er 22 et indeF #y num#er
Kescription
int dbplus>setinde+bynumber > resource relationA int idFZnum#er ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
dbplus>s?l
>8;1;3 2 8;0;7 only?
d#plusZs/l 22 Per(orm OL /uery
Kescription
resource dbplus>s?l > string /uery PA string server PA string d#pathQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
dbplus>tcl
>8;1;3 2 8;0;7 only?
d#plusZtcl 22 +Fecute ,5L code on server side
Kescription
int dbplus>tcl > int sidA string script ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A d#RR server Eill prepare a ,5L interpreter (or each client connection; ,his interpreter Eill ena#le
the server to eFecute ,5L code provided #y the client as a sort o( stored procedures to improve the
per(ormance o( data#ase operations #y avoiding clientDserver data trans(ers and conteFt sEitches;
dbplus>tcl./ needs to pass the client connection id the ,5L scr6pt code should #e eFecuted #y;
dbplus>resol5e./ Eill provide this connection id; ,he (unction Eill return Ehatever the ,5L code
returns or a ,5L error message i( the ,5L code (ails;
ee also dbplus>resol5e./;
dbplus>tremo5e
>8;1;3 2 8;0;7 only?
d#plusZtremove 22 Remove tuple and return neE current tuple
Kescription
int dbplus>tremo5e > resource relationA array tuple PA array icurrentQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>tremo5e./ removes tuple (rom relat6on i( it per(ectly matches a tuple Eithin the relation;
currentA i( givenA Eill contain the data o( the neE current tuple a(ter calling dbplus>tremo5e./;
dbplus>undo
>8;1;3 2 8;0;7 only?
d#plusZundo 22 @ndo
Kescription
int dbplus>undo > resource relation ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
dbplus>undoprepare
>8;1;3 2 8;0;7 only?
d#plusZundoprepare 22 Prepare undo
Kescription
int dbplus>undoprepare > resource relation ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
dbplus>unlocBrel
>8;1;3 2 8;0;7 only?
d#plusZunloc"rel 22 Give up Erite loc" on relation
Kescription
int dbplus>unlocBrel > resource relation ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>unlocBrel./ Eill release a Erite loc" previously o#tained #y dbplus>locBrel./;
dbplus>unselect
>8;1;3 2 8;0;7 only?
d#plusZunselect 22 Remove a constraint (rom relation
Kescription
int dbplus>unselect > resource relation ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
5alling dbplus>unselect./ Eill remove a constraint previously set #y dbplus>find./ on relat6on;
dbplus>update
>8;1;3 2 8;0;7 only?
d#plusZupdate 22 @pdate speci(ied tuple in relation
Kescription
int dbplus>update > resource relationA array oldA array neE ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>update./ replaces the tuple given #y ol# Eith the data (rom ne7 i( and only i( ol#
completely matches a tuple Eithin relat6on;
dbplus>+locBrel
>8;1;3 2 8;0;7 only?
d#plusZFloc"rel 22 Re/uest eFclusive loc" on relation
Kescription
int dbplus>+locBrel > resource relation ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>+locBrel./ Eill re/uest an eFclusive loc" on relat6on preventing even read access (rom
other clients;
ee also dbplus>+unlocBrel./;
dbplus>+unlocBrel
>8;1;3 2 8;0;7 only?
d#plusZFunloc"rel 22 Free eFclusive loc" on relation
Kescription
int dbplus>+unlocBrel > resource relation ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
dbplus>+unlocBrel./ Eill release an eFclusive loc" on relat6on previously o#tained #y
dbplus>+locBrel./;
IIIC. db+ ;unctions
Introducci"n
,he d#F module is a data#ase a#straction layer >d# HJHA Ehere HJH is a supported data#ase?; ,he d#F
(unctions alloE you to access all supported data#ases using a single calling convention; ,he d#F2
(unctions themselves do not inter(ace directly to the data#asesA #ut inter(ace to the modules that are
used to support these data#ases;
Me?uirimientos
,o #e a#le to use a data#ase Eith the d#F2moduleA the module must #e either lin"ed or loaded into
P&PA and the data#ase module must #e supported #y the d#F2module; 5urrentlyA the (olloEing
data#ases are supportedA #ut others Eill (olloEC
FrontBase >availa#le (rom P&P 8;1;3?;
Microso(t OL erver
MyOL
ODB5
PostgreOL
y#ase25, >availa#le (rom P&P 8;0;3?;
Oracle >ociM? >availa#le (rom P&P 8;7;3?;
OLite >P&P 4?;
Documentation (or adding additional data#ase support to d#F can #e (ound at
httpCDDEEE;guidance;nlDphpDd#FDdocD;
Instalaci"n
.n order to have these (unctions availa#leA you must compile P&P Eith d#F support #y using the ==
ena1le=#18 option and all options (or the data#ases that Eill #e usedA e;g; (or MyOL you must also
speci(y ==76th=m?s@l:)D0R.; ,o get other supported data#ases to Eor" Eith the d#F2module re(er to
their speci(ic documentation;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. K1I Configuration Jptions
Name Kefault Changeable
d#F;colnamesZcas
e
=unchange
d=
P&PZ.N.Z%,+
M
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
Nota- ,his ini2option is availa#le availa#le (rom P&P 8;7;3;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
#18.colnames_case string
5olumns names can #e returned =unchanged= or converted to =uppercase= or =loEercase=;
,his directive can #e overridden Eith a (lag to db+>?uery./;
Tipos de recursos
,here are tEo resource types used in the d#F module; ,he (irst one is the lin"2ob'ect (or a data#ase
connectionA the second a result2ob'ect Ehich holds the result o( a /uery;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
D(%_MYS.L >integer?
D(%_OD(C >integer?
D(%_P#S.L >integer?
D(%_MSS.L >integer?
D(%_F(S.L >integer?
D(%_OCI, >integer? >availa#le (rom P&P 8;7;3?
D(%_SY(ASECT >integer?
D(%_S.LITE >integer? >P&P 4?
D(%_PERSISTENT >integer?
D(%_RESULT_INFO >integer?
D(%_RESULT_INDE% >integer?
D(%_RESULT_ASSOC >integer?
D(%_RESULT_UN(UFFERED >integer? >P&P 4?
D(%_COLNAMES_UNCHAN#ED >integer? >availa#le (rom P&P 8;7;3?
D(%_COLNAMES_UPPERCASE >integer? >availa#le (rom P&P 8;7;3?
D(%_COLNAMES_LO"ERCASE >integer? >availa#le (rom P&P 8;7;3?
D(%_CMP_NATI$E >integer?
D(%_CMP_TE%T >integer?
D(%_CMP_NUM(ER >integer?
D(%_CMP_ASC >integer?
D(%_CMP_DESC >integer?
Tabla de contenidos
d#FZclose 22 5lose an open connectionDdata#ase
d#FZcompare 22 5ompare tEo roEs (or sorting purposes
d#FZconnect 22 Open a connectionDdata#ase
d#FZerror 22 Report the error message o( the latest (unction call in the module >not 'ust in the
connection?
d#FZescapeZstring 22 +scape a string so it can sa(ely #e used in an s/l2statement
d#FZ(etchZroE 22 Fetches roEs (rom a /uery2result that had the D(%_RESULT_UN(UFFERED (lag
set
d#FZ/uery 22 end a /uery and (etch all results >i( any?
d#FZsort 22 ort a result (rom a d#FZ/uery #y a custom sort (unction
db+>close
>P&P 8 _^ 8;3;KA P&P 4?
d#FZclose 22 5lose an open connectionDdata#ase
Kescription
#ool db+>close > o#'ect lin"Zidenti(ier ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. db+>close./ e+ample
<?php
$linI > dbx%connect3LZX%"P&NO, "localhost", "db", "username", "pass8ord"9
or die3"Rould not connect"9;
echo "Ronnected success#ully";
dbx%close3$linI9;
?>
Nota- AlEays re(er to the module2speci(ic documentation as Eell;
ee also db+>connect./;
db+>compare
>P&P 8 _^ 8;1;3A P&P 4?
d#FZcompare 22 5ompare tEo roEs (or sorting purposes
Kescription
int db+>compare > array roEZaA array roEZ#A string columnZ"ey PA int (lagsQ ?
db+>compare./ returns 0 i( the ro7_a)'column_>e?. is e/ual to ro7_1)'column_>e?.A and 1 or =1
i( the (ormer is greater or is smaller than the latter oneA respectivelyA or vice versa i( the 9laE is set to
D(%_CMP_DESC; db+>compare./ is a helper (unction (or db+>sort./ to ease the ma"e and use o(
the custom sorting (unction;
,he 9laEs can #e set to speci(y comparison directionC
D(%_CMP_ASC 2 ascending order
D(%_CMP_DESC 2 descending order
and the pre(erred comparison typeC
D(%_CMP_NATI$E 2 no type conversion
D(%_CMP_TE%T 2 compare items as strings
D(%_CMP_NUM(ER 2 compare items numerically
One o( the direction and one o( the type constant can #e com#ined Eith #itEise OR operator >l?; ,he
de(ault value (or the 9laEs parameter is D(%_CMP_ASC l D(%_CMP_NATI$E;
E'emplo !. db+>compare./ e+ample
<?php
#unction user%re%order3$a, $b9
:
$r= > dbx%compare3$a, $b, "parentid", LZX%R"%LE&R9;
i# 3!$r=9 :
$r= > dbx%compare3$a, $b, "id", LZX%R"%.+"ZE'9;
;
return $r=;
;
$linI > dbx%connect3LZX%?LZR, "", "db", "username", "pass8ord"9
or die3"Rould not connect"9;
$result > dbx%Query3$linI, "&EOER* id, parentid, description S'?" table ?'LE' ZP id"9;
// data in $result is no8 ordered by id
dbx%sort3$result, "user%re%order"9;
// date in $result is no8 ordered by parentid 3descendinE9, then by id
dbx%close3$linI9;
?>
ee also db+>sort./;
db+>connect
>P&P 8 _^ 8;3;KA P&P 4?
d#FZconnect 22 Open a connectionDdata#ase
Kescription
o#'ect db+>connect > miFed moduleA string hostA string data#aseA string usernameA string passEord
PA int persistentQ ?
db+>connect./ returns an o#'ect on successA FALSE on error; .( a connection has #een made #ut the
data#ase could not #e selectedA the connection is closed and FALSE is returned; ,he pers6stent
parameter can #e set to D(%_PERSISTENTA i( soA a persistent connection Eill #e created;
,he mo#ule parameter can #e either a string or a constantA though the latter (orm is pre(erred; ,he
possi#le values are given #eloEA #ut "eep in mind that they only Eor" i( the module is actually
loaded;
D(%_MYS.L or =mys/l=
D(%_OD(C or =od#c=
D(%_P#S.L or =pgs/l=
D(%_MSS.L or =mss/l=
D(%_F(S.L or =(#s/l= >availa#le (rom P&P 8;1;3?
D(%_SY(ASECT or =sy#aseZct= >availa#le (rom P&P 8;0;3?
D(%_OCI, or =ociM= >availa#le (rom P&P 8;7;3?
D(%_S.LITE or =s/lite= >P&P 4?
,he hostA #ata1aseA username and pass7or# parameters are eFpectedA #ut not alEays used
depending on the connect (unctions (or the a#stracted module;
,he returned o1Uect has three propertiesC
data#ase
.t is the name o( the currently selected data#ase;
handle
.t is a valid handle (or the connected data#aseA and as such it can #e used in module2speci(ic
(unctions >i( re/uired?;
<?php
$linI > dbx%connect3LZX%"P&NO, "localhost", "db", "username", "pass8ord"9;
mysQl%close3$linIF>handle9; // dbx%close3$linI9 8ould be better here
?>
module
.t is used internally #y d#F onlyA and is actually the module num#er mentioned a#ove;
E'emplo !. db+>connect./ e+ample
<?php
$linI > dbx%connect3LZX%?LZR, "", "db", "username", "pass8ord", LZX%E'&4&*E.*9
or die3"Rould not connect"9;
echo "Ronnected success#ully";
dbx%close3$linI9;
?>
Nota- AlEays re(er to the module2speci(ic documentation as Eell;
ee also db+>close./;
db+>error
>P&P 8 _^ 8;3;KA P&P 4?
d#FZerror 22 Report the error message o( the latest (unction call in the module >not 'ust in the
connection?
Kescription
string db+>error > o#'ect lin"Zidenti(ier ?
db+>error./ returns a string containing the error message (rom the last (unction call o( the
a#stracted module >e;g; mys/l module?; .( there are multiple connections in the same moduleA 'ust
the last error is given; .( there are connections on di((erent modulesA the latest error is returned (or
the module speci(ied #y the l6n>_6#ent696er parameter;
E'emplo !. db+>error./ e+ample
<?php
$linI > dbx%connect3LZX%"P&NO, "localhost", "db", "username", "pass8ord"9
or die3"Rould not connect"9;
$result > dbx%Query3$linI, "select id #rom non%existinE%table"9;
i# 3$result >> 29 :
echo dbx%error3$linI9;
;
dbx%close3$linI9;
?>
Nota- AlEays re(er to the module2speci(ic documentation as Eell;
,he error message (or Microso(t OL erver is actually the result o( the
mss?l>get>last>message./ (unction;
,he error message (or Oracle >ociM? is not implemented >yet?;
db+>escape>string
>P&P 8 _^ 8;7;3A P&P 4?
d#FZescapeZstring 22 +scape a string so it can sa(ely #e used in an s/l2statement
Kescription
string db+>escape>string > o#'ect lin"Zidenti(ierA string teFt ?
db+>escape>string./ returns the teFtA escaped Ehere necessary >such as /uotesA #ac"slashes etc?; .t
returns N@LL on error;
E'emplo !. db+>escape>string./ e+ample
<?php
$linI > dbx%connect3LZX%"P&NO, "localhost", "db", "username", "pass8ord"9
or die3"Rould not connect"9;
$text > dbx%escape%strinE3$linI, "4tVMs Quoted and bacIslashed 3VV9."9;
$result > dbx%Query3$linI, "insert into tbl 3txt9 =alues 3M" . $text . "M9"9;
i# 3$result >> 29 :
echo dbx%error3$linI9;
;
dbx%close3$linI9;
?>
ee also db+>?uery./;
db+>fetch>ro3
>P&P 4?
d#FZ(etchZroE 22 Fetches roEs (rom a /uery2result that had the D(%_RESULT_UN(UFFERED (lag
set
Kescription
o#'ect db+>fetch>ro3 > o#'ect resultZidenti(ier ?
db+>fetch>ro3./ returns a roE on successA and 0 on (ailure >e;g; Ehen no more roEs are availa#le?;
Lhen the D(%_RESULT_UN(UFFERED is not set in the /ueryA db+>fetch>ro3./ Eill (ail as all
roEs have already #een (etched into the results data property;
As a side e((ectA the roEs property o( the /uery2result o#'ect is incremented (or each success(ul call
to db+>fetch>ro3./;
E'emplo !. Ho3 to handle the returned 5alue
<?php
$result > dbx%Query3$linI, M&EOER* id, parentid, description S'?" tableM, LZX%'E&+O*%+.Z+SSE'EL9;
echo "<table>Vn";
8hile 3$ro8 > dbx%#etch%ro83$result99 :
echo "<tr>Vn";
#oreach 3$ro8 as $#ield9 :
echo "<td>$#ield</td>";
;
echo "</tr>Vn";
;
echo "</table>Vn";
?>
,he result_6#ent696er parameter is the result o#'ect returned #y a call to db+>?uery./;
,he returned array contains the same in(ormation as any roE Eould have in the d#FZ/uery result
data propertyA including columns accessi#le #y indeF or (ieldname Ehen the (lags (or d#FZguery
Eere set that Eay;
ee also db+>?uery./;
db+>?uery
>P&P 8 _^ 8;3;KA P&P 4?
d#FZ/uery 22 end a /uery and (etch all results >i( any?
Kescription
o#'ect db+>?uery > o#'ect lin"Zidenti(ierA string s/lZstatement PA int (lagsQ ?
db+>?uery./ returns an o#'ect or 1 on successA and 0 on (ailure; ,he result o#'ect is returned only i(
the /uery given in s@l_statement produces a result set >i;e; a +L+5, /ueryA even i( the result set is
empty?;
E'emplo !. Ho3 to handle the returned 5alue
<?php
$linI > dbx%connect3LZX%?LZR, "", "db", "username", "pass8ord"9
or die3"Rould not connect"9;
$result > dbx%Query3$linI, M&EOER* id, parentid, description S'?" tableM9;
i# 3is%object3$result9 9 :
// ... do some stu## here, see detailed examples belo8 ...
// #irst, print out #ield names and types
// then, dra8 a table #illed 8ith the returned #ield =alues
; else :
exit3"Nuery #ailed"9;
;
dbx%close3$linI9;
?>
,he 9laEs parameter is used to control the amount o( in(ormation that is returned; .t may #e any
com#ination o( the (olloEing constants Eith the #itEise OR operator >l?; ,he DBJZ5OLNAM+ZV
(lags override the d#F;colnamesZcase setting (rom php.ini;
D(%_RESULT_INDE%
.t is al7a?s setA that isA the returned o#'ect has a data property Ehich is a 0 dimensional array
indeFed numerically; For eFampleA in the eFpression #ata)2.)R. 2 stands (or the roE >or
record? num#er and R stands (or the column >or (ield? num#er; ,he (irst roE and column are
indeFed at 3;
.( D(%_RESULT_ASSOC is also speci(iedA the returning o#'ect contains the in(ormation
related to D(%_RESULT_INFO tooA even i( it Eas not speci(ied;
D(%_RESULT_INFO
.t provides in(o a#out columnsA such as (ield names and (ield types;
D(%_RESULT_ASSOC
.t e((ects that the (ield values can #e accessed Eith the respective column names used as "eys
to the returned o#'ectHs data property;
Associated results are actually re(erences to the numerically indeFed dataA so modi(ying #ata
)0.)0. causes that #ata)0.)<96el#_name_9or_96rst_column<. is modi(ied as Eell;
D(%_RESULT_UN(UFFERED >P&P 4?
,his (lag Eill not create the data propertyA and the roEs property Eill initially #e 3; @se this
(lag (or large datasetsA and use db+>fetch>ro3./ to retrieve the results roE #y roE;
,he db+>fetch>ro3./ (unction Eill return roEs that are con(ormant to the (lags set Eith this
/uery; .ncidentallyA it Eill also update the roEs each time it is called;
D(%_COLNAMES_UNCHAN#ED >availa#le (rom P&P 8;7;3?
,he case o( the returned column names Eill not #e changed;
D(%_COLNAMES_UPPERCASE >availa#le (rom P&P 8;7;3?
,he case o( the returned column names Eill #e changed to uppercase;
D(%_COLNAMES_LO"ERCASE >availa#le (rom P&P 8;7;3?
,he case o( the returned column names Eill #e changed to loEercase;
Note that D(%_RESULT_INDE% is alEays usedA regardless o( the actual value o( 9laEs parameter;
,his means that only the (olloEing com#inations are e((ectiveC
D(%_RESULT_INDE%
D(%_RESULT_INDE% l D(%_RESULT_INFO
D(%_RESULT_INDE% l D(%_RESULT_INFO l D(%_RESULT_ASSOC 2 this is the
de(aultA i( 9laEs is not speci(ied;
,he returned o1Uect has (our or (ive properties depending on 9laEsC
handle
.t is a valid handle (or the connected data#aseA and as such it can #e used in module speci(ic
(unctions >i( re/uired?;
<?php
$result > dbx%Query3$linI, "&EOER* id S'?" table"9;
mysQl%#ield%len3$resultF>handle, 29;
?>
cols and roEs
,hese contain the num#er o( columns >or (ields? and roEs >or records? respectively;
<?php
$result > dbx%Query3$linI, M&EOER* id S'?" tableM9;
echo $resultF>ro8s; // number o# records
echo $resultF>cols; // number o# #ields
?>
in(o >optional?
.t is returned only i( either D(%_RESULT_INFO or D(%_RESULT_ASSOC is speci(ied in
the 9laEs parameter; .t is a 0 dimensional arrayA that has tEo named roEs >name and t?pe? to
retrieve column in(ormation;
E'emplo *. lists each fieldUs name and type
<?php
$result > dbx%Query3$linI, M&EOER* id S'?" tableM,
LZX%'E&+O*%4.LEX T LZX%'E&+O*%4.S?9;
#or 3$i > 2; $i < $resultF>cols; $i[[ 9 :
echo $resultF>in#o)MnameM/)$i/ . "Vn";
echo $resultF>in#o)MtypeM/)$i/ . "Vn";
;
?>
data
,his property contains the actual resulting dataA possi#ly associated Eith column names as
Eell depending on 9laEs; .( D(%_RESULT_ASSOC is setA it is possi#le to use 'result=&#ata
)2.)*96el#_name*.;
E'emplo 7. outputs the content of data property into HTM: table
<?php
$result > dbx%Query3$linI, M&EOER* id, parentid, description S'?" tableM9;
echo "<table>Vn";
#oreach 3$resultF>data as $ro89 :
echo "<tr>Vn";
#oreach 3$ro8 as $#ield9 :
echo "<td>$#ield</td>";
;
echo "</tr>Vn";
;
echo "</table>Vn";
?>
E'emplo 8. Ho3 to handle )N1);;EMEK ?ueries
<?php
$result > dbx%Query 3$linI, M&EOER* id, parentid, description S'?" tableM, LZX%'E&+O*%+.Z+SSE'EL9;
echo "<table>Vn";
8hile 3$ro8 > dbx%#etch%ro83$result99 :
echo "<tr>Vn";
#oreach 3$ro8 as $#ield9 :
echo "<td>$#ield</td>";
;
echo "</tr>Vn";
;
echo "</table>Vn";
?>
Nota- AlEays re(er to the module2speci(ic documentation as Eell;
5olumn names (or /ueries on an Oracle data#ase are returned in loEercase;
ee also db+>escape>string./A db+>fetch>ro3./ and db+>connect./;
db+>sort
>P&P 8 _^ 8;3;KA P&P 4?
d#FZsort 22 ort a result (rom a d#FZ/uery #y a custom sort (unction
Kescription
#ool db+>sort > o#'ect resultA string userZcompareZ(unction ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- .t is alEays #etter to use ORDER AB S54 clause instead o( db+>sort./A i(
possi#le;
E'emplo !. db+>sort./ e+ample
<?php
#unction user%re%order3$a, $b9
:
$r= > dbx%compare3$a, $b, "parentid", LZX%R"%LE&R9;
i# 3!$r=9 :
$r= > dbx%compare3$a, $b, "id", LZX%R"%.+"ZE'9;
;
return $r=;
;
$linI > dbx%connect3LZX%?LZR, "", "db", "username", "pass8ord"9
or die3"Rould not connect"9;
$result > dbx%Query3$linI, "&EOER* id, parentid, description S'?" tbl ?'LE' ZP id"9;
// data in $result is no8 ordered by id
dbx%sort3$result, "user%re%order"9;
// data in $result is no8 ordered by parentid 3descendinE9, then by id
dbx%close3$linI9;
?>
ee also db+>compare./;
IIC. ;unciones de acceso directo a EA,
Introducci"n
P&P incluye soporte para (unciones de acceso directo a +D tal y como se especi(ican en la secci-n
seFta del est*ndar de PosiF; +stas (unciones permiten realizar operaciones de +D a un nivel in(erior
al de las (unciones gen<ricas de 5 como fopen./ y fread./; Las (unciones de acceso directo a +D
solo de#er)an emplearse cuando se re/uiere un control directo de un determinado dispositivo; +n
todos los dem*s casosA es m*s adecuado el empleo de las (unciones est*ndar del sistema de
archivos;
Nota- +sta eFtensi-n no est* disponi#le en plata(ormas LindoEs
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
Para usar las (unciones de acceso directo a +DA se de#e aWadir el par*metro ==ena1le=#6o a las
opciones de con(iguraci-n de P&P;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
La eFtensi-n de las (unciones de acceso directo a +D de(ine un nuevo tipo de recursoC un descriptor
de archivo devuelto por la (unci-n dio>open./;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
dioZclose 22 5ierra el descriptor de archivo indicado por el par*metro (d
dioZ(cntl 22 Realiza una operaci-n del tipo (cntl de la li#er)a de 5 so#re el descriptor de archivo
indicado por el par*metro (d
dioZopen 22 A#re un archivo cuyo nom#re indica el par*metro =nom#reZarchivo= con las opciones
indicadas por =(lags= y los permisos esta#lecidos con =modo=
dioZread 22 Lee hasta n #ytes del archivo cuyo descriptor es 9# y los devuelve; i no se le indica el
valor de nA se leen hasta 1308 #ytes;
dioZsee" 22 5am#ia el posicionamiento en el archivo cuyo descriptor es 9# a traves de los
par*metros pos y 7hence
dioZstat 22 O#tiene la in(ormaci-n so#re el archivo cuyo descriptor es 9#
dioZtcsetattr 22 5on(igura las opciones de un terminal y la velocidad de un puerto serie
dioZtruncate 22 ,runca el tamaWo del archivo cuyo descriptor es 9# hasta un valor de o99set #ytes
dioZErite 22 +scri#e datos en el archivo cuyo descriptor es 9#
dio>close
>P&P 8 _^ 8;0;3A P&P 4?
dioZclose 22 5ierra el descriptor de archivo indicado por el par*metro (d
Kescripci"n
void dio>close > resource (d ?
La (unci-n dio>close./ cierra el descriptor de archivo indicado por el par*metro 9#;
dio>fcntl
>P&P 8 _^ 8;0;3A P&P 4?
dioZ(cntl 22 Realiza una operaci-n del tipo (cntl de la li#er)a de 5 so#re el descriptor de archivo
indicado por el par*metro (d
Kescripci"n
miFed dio>fcntl > resource (dA int cmd PA miFed argQ ?
La (unci-n dio>fcntl./ realiza la operaci-n indicada por el par*metro cm# so#re el descriptor de
archivo 9#; Algunas operaciones re/uieren argumentos adicionales introducidos a traves del
par*metro arEs;
arE es un array de tipo asociativo siempre /ue cm# es FZ+,LS o FZ+,LLL; +n ese casoA las
claves del array son las siguientesC
=start= 2 lugar donde comienza el #lo/ueo >loc"?
=length= 2 tamaWo del area #lo/ueada; @n valor igual a 3 >cero? indica un #lo/ueo hasta el
(inal del archivo
=Eenth= 2 Lugar desde donde se empieza a contar el tamaWo lZstart; Puede ser ++SZ+,A
++SZ+ND y ++SZ5@R
=type= 2 tipo de #lo/ueo; Puede ser FZRDL5S >#lo/ueo de lectura?A FZLRL5S >#lo/ueo de
escritura? o FZ@NL5S >des#lo/ueo?
cm# puede ser cual/uiera de las siguientes operacionesC
FZ+,LS 2 Activa o desactiva el #lo/ueo; i alguien lo ha #lo/ueado anteriormenteA la
(unci-n dio>fcntl./ devuelve 21;
FZ+,LSL 2 +s similar a FZ+,LSA salvo /ue en esta ocasi-n la (unci-n dio>fcntl./
espera a /ue se li#ere el #lo/ueo en caso de /ue alguien lo haya #lo/ueado anteriormente;
FZG+,LS 2 La (unci-n dio>fcntl./ devuelve un array asociativo como el descrito
previamente si eFiste alguien /ue impide realizar un #lo/ueo; i no eFiste un #lo/ueo
anteriorA la clave =type= se pondra a FZ@NL5S;
FZD@PFD 2 Busca el descriptor de archivo disponi#le con el nBmero mas #a'o y /ue sea
mayor o igual /ue arE y lo convierte en una copia de 9# y devuelve los dos descriptores;
FZ+,FL 2 +sta#lece el valor de las opciones de los descriptores de archivos a los valores
especi(icados en el par*metro arE; Las opciones pueden ser OZAPP+NDAOZNONBLO5S o
OZA%N5; Para poder utilizar la opci-n OZA%N5 es necesario utilizar la eFtensi-n
P5N,L;
dio>open
>P&P 8 _^ 8;0;3A P&P 4?
dioZopen 22 A#re un archivo cuyo nom#re indica el par*metro =nom#reZarchivo= con las opciones
indicadas por =(lags= y los permisos esta#lecidos con =modo=
Kescripci"n
resource dio>open > string nom#reZarchivoA int (lags PA int modoQ ?
La (unci-n dio>open./ a#re un archivo y devuelve un descriptor para su mane'o o FALSE si ha
ocurrido algun error; i el valor de 9laEs es OZ5R+A,A el tercer par*metro mo#o esta#lecer* los
permisos de creaci-n del archivo; +l par*metro 9laEs puede tener uno de los siguientes valoresC
OZRDONL% 2 a#re el archivo para acceso de solo lectura;
OZLRONL% 2 a#re el archivo para acceso de solo escritura;
OZRDLR 2 a#re el archivo para acceso tanto de lectura como de escritura;
+l par*metro 9laEs puede incluir tam#ien cual/uier com#inaci-n de los siguientes valoresC
OZ5R+A, 2 crea el archivo si no eFist)a previamente;
OZ+J5L 2 si se indican de (orma simultanea los valores OZ5R+A, y OZ+J5LA la (unci-n
dio>open./ (alla si el archivo eFist)a previamente;
OZ,R@N5 2 si el archivo eFiste y se permiten las operaciones de escritura so#re elA se
elimina todo el contenido anterior del archivo y su tamaWo se pone a cero;
OZAPP+ND 2 las operaciones de escritura so#re el archivo escri#en los datos al (inal del
archivo;
OZNONBLO5S 2 el archivo se pone en modo no2#lo/ueante;
dio>read
>P&P 8 _^ 8;0;3A P&P 4?
dioZread 22 Lee hasta n #ytes del archivo cuyo descriptor es 9# y los devuelve; i no se le indica el
valor de nA se leen hasta 1308 #ytes;
Kescripci"n
string dio>read > resource (d PA int nQ ?
La (unci-n dio>read./ lee y devuelve n #ytes del archivo cuyo descriptor es 9#; i no se especi(ica
el valor del par*metro nA dio>read./ lee hasta 1308 #ytes y los devuelve;
dio>seeB
>P&P 8 _^ 8;0;3A P&P 4?
dioZsee" 22 5am#ia el posicionamiento en el archivo cuyo descriptor es 9# a traves de los
par*metros pos y 7hence
Kescripci"n
int dio>seeB > resource (dA int posA int Ehence ?
La (unci-n dio>seeB./ se utiliza para cam#iar el posicionamiento en el archivo cuyo descriptor es 9#;
+l par*metro 7hence indica la (orma en /ue de#e ser interpretado el par*metro posC
++SZ+, 2 indica /ue se de#en avanzar pos #ytes desde el comienzo del archivo;
++SZ5@R 2 indica /ue se de#en avanzar pos #ytes a partir de la posici-n actual; +l avance
puede ser tanto positivo como negativo;
++SZ+ND 2 indica /ue se de#en avanzar pos #ytes desde el (inal del archivo; @n avance
negativo implica una posici-n dentro de la longitud original del archivo y un avance positivo
implica una posici-n m*s alla de la longitud original del archivo; +n este Bltimo caso en el
/ue la posici-n se encuentra (uera de los limites del archivo originalA si se realiza una
operaci-n de escrituraA las posiciones comprendidas entre el (inal del archivo original y la
posici-n de comienzo de los nuevos datosA se rellenar*n con ceros;
dio>stat
>P&P 8 _^ 8;0;3A P&P 4?
dioZstat 22 O#tiene la in(ormaci-n so#re el archivo cuyo descriptor es 9#
Kescripci"n
array dio>stat > resource (d ?
La (unci-n dio>stat./ devuelve la in(ormaci-n so#re el archivo cuyo descriptor es 9#; +l valor
devuelto por dio>stat./ es un array asociativo con las siguientes clavesC
=device= 2 dispositivo
=inode= 2 inodo
=mode= 2 modo
=nlin"= 2 numero de =hard lin"s=
=uid= 2 identi(icador de usuario
=gid= 2 identi(icador de grupo
=deviceZtype= 2 tipo de dispositivo >si es un dispositivo con inodos?
=size= 2 tamaWo total en #ytes
=#loc"size= 2 tamaWo de #lo/ue
=#loc"s= 2 numero de #lo/ues ocupados
=atime= 2 hora del ultimo acceso
=mtime= 2 hora de la ultima modi(icacion
=ctime= 2 hora del ultimo cam#io
i se produce un errorA la (unci-n dio>stat./ devuelve un valor N@LL;
dio>tcsetattr
>P&P 8 _^ 8;7;3A P&P 4?
dioZtcsetattr 22 5on(igura las opciones de un terminal y la velocidad de un puerto serie
Kescripci"n
dio>tcsetattr > resource (dA array options ?
La (unci-n dio>tcsetattr./ con(igura las opciones de un terminal y la velocidad en #audios del
recurso resource a#ierto previamente; Las opciones actualmente disponi#les son las siguientesC
H#audH 2 velocidad en #audios del puerto serie 2 puede tomar los valores 7M833A 19033A 9K33A
8M33A 0833A 1M33A 1033A K33A 733A 033A 143A 178A 113A :4 o 43; Por de(ecto se esta#lece una
velocidad de 9K33 #audios;
H#itsH 2 nBmero de #its de los datos 2 puede ser MA :A K o 4; Por de(ecto se esta#lece un valor de
M #its;
HstopH 2 #its de stop 2 pueden ser 1 o 0; Por de(ecto se esta#lece un valor de 1 #it de stop;
HparityH 2 #its de paridad 2 pueden ser 3A 1 o 0; Por de(ecto se esta#lece un valor de 3 #its de
paridad;
E'emplo !. Configurar la 5elocidad de un puerto serie
<?php
$#d > dio%open3M/de=/tty&2M, ?%'L7' T ?%.?R**P T ?%.?.ZO?R]9;
dio%#cntl3$#d,S%&E*SO, ?%&P.R 9;
dio%tcsetattr3$#d, array3
MbaudM >> KG22,
MbitsM >> J,
MstopM >>6,
MparityM >> 2
99;
8hile 369 :
$data > dio%read3$#d,C5G9;
i# 3$data9 :
echo $data;
;
;
?>
dio>truncate
>P&P 8 _^ 8;0;3A P&P 4?
dioZtruncate 22 ,runca el tamaWo del archivo cuyo descriptor es 9# hasta un valor de o99set #ytes
Kescripci"n
#ool dio>truncate > resource (dA int o((set ?
La (unci-n dio>truncate./ trunca el archivo cuyo descriptor es 9# y cam#ia su tamaWo hasta un
valor de o99set #ytes; i la longitud del archivo original era mayor /ue el valor indicadoA el archivo
se trunca y se pierde toda la in(ormaci-n restante; i el valor indicado es mayor /ue la longitud
original del archivoA no se especi(ica si el archivo permanece igual o se eFtiende su longitud hasta
llegar al valor indicado por o99set rellenando con ceros los nuevos #ytes del archivo; Devuelve
TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;;
dio>3rite
>P&P 8 _^ 8;0;3A P&P 4?
dioZErite 22 +scri#e datos en el archivo cuyo descriptor es 9#
Kescripci"n
int dio>3rite > resource (dA string data PA int lenQ ?
La (unci-n dio>3rite./ escri#e hasta len #ytes de los datos indicados por el par*metro #ata en el
archivo cuyo descriptor es 9#; i no se especi(ica el valor de lenA la (unci-n dio>3rite./ escri#e
todos los datos del par*metro #ata en el archivo indicado; La (unci-n dio>3rite./ devuelve el
numero de #ytes escritos en el archivo cuyo descriptor es 9#;
IICI. ;unciones de Kirectorio
Introducci"n
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
DIRECTORY_SEPARATOR >string?
PATH_SEPARATOR >string?
Nota- +l par*metro PATH_SEPARATOR (ue introducido con P&P 8;7;32R50;
Cer tambi%n
Para consultar so#re (unciones relacionadas como dirname./A is>dir./A mBdir./A y rmdir./A vea la
secci-n istema de archivos;
Tabla de contenidos
chdir 22 5am#iar de directorio
chroot 22 5am#iar el directorio ra)z
dir 22 clase directorio
closedir 22 cierra el mane'ador de directorios
getcEd 22 O#tiene el directorio de tra#a'o actual
opendir 22 a#re el mane'ador de directorios
readdir 22 lee las entradas del mane'ador de directorios
reEinddir 22 re#o#inar el mane'ador de directorios
scandir 22 Lista los archivos y directorios u#icados en la ruta especi(icada
chdir
>P&P 7A P&P 8 A P&P 4?
chdir 22 5am#iar de directorio
Kescripci"n
#ool chdir > string directorio ?
5am#iar el directorio actual de P&P a #6rector6o; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo de chdir./
<?php
// directorio actual
echo Eetc8d39 . "Vn";
chdir3Mpublic%htmlM9;
// directorio actual
echo Eetc8d39 . "Vn";
?>
+ste e'emplo producir* la salidaC
/home/=incent
/home/=incent/public%html
Nota- 5uando sa(e2mode >modo2seguro? est* activadoA P&P comprue#a si los
directorios /ue va a utilizar tienen la misma @.D /ue el script /ue est* siendo e'ecutado;
$ea tam#i<n getc3d./;
chroot
>P&P 8 _^ 8;3;4A P&P 4?
chroot 22 5am#iar el directorio ra)z
Kescripci"n
#ool chroot > string directorio ?
5am#ia el directorio ra)z del proceso actual a #6rector6o; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
+sta (unci-n s-lo se encuentra disponi#le si su sistema la soporta y se encuentra usando un entorno
5L.A 5G. o AP. em#e#ido;
Nota- chroot./ re/uiere privilegios de root;
Nota- +sta (unci-n no est* implementada en plata(ormas LindoEs;
dir
>P&P 7A P&P 8 A P&P 4?
dir 22 clase directorio
Kescripcion
neE dir > string directory ?
@n mecanismo semi2orientado a o#'etos para leer directorios; +l parametro #6rector? a#re el
directorio; Dos propiedades estan disponi#les cuando el directorio ha sido a#ierto; La propiedad de
mane'o puede ser usada con otras (unciones de directorios tal como readdir./A re3inddir./ y
closedir./; La propiedad de trayectoria >path? es (i'ada para encaminar el directorio /ue ha sido
a#ierto; ,res metodos estan disponi#lesC leerA re#o#inar y cerrar;
E'emplo !. dir./ E'emplo
$d > dir3"/etc"9;
echo "Handle@ ".$dF>handle."<br>Vn";
echo "ath@ ".$dF>path."<br>Vn";
8hile3$entry>$dF>read399 :
echo $entry."<br>Vn";
;
$dF>close39;
closedir
>P&P 7A P&P 8 A P&P 4?
closedir 22 cierra el mane'ador de directorios
Kescripcion
void closedir > int dirZhandle ?
5ierra la secuencia de directorio determinada por #6r_han#le; La secuencia de#e de ha#er sido
a#ierta previamente con opendir./;
getc3d
>P&P 8 A P&P 4?
getcEd 22 O#tiene el directorio de tra#a'o actual
Kescripci"n
string getc3d > void ?
Devuelve el directorio de tra#a'o actualA o FALSE en caso de (allo;
Nota- +n algunas variantes de @niFA getc3d./ devolver* FALSE si alguno de los
directorios padre no tiene de(inido el modo de lectura o #Bs/uedaA incluso si el
directorio actual lo tiene; $ea chmod./ para m*s in(ormaci-n so#re los modos y
permisos;
E'emplo !. E'emplo de getc3d./
<?php
// directorio actual
echo Eetc8d39 . "Vn";
chdir3Mc=sM9;
// directorio actual
echo Eetc8d39 . "Vn";
?>
+l resultado del e'emplo seria algo similar aC
/home/didou
/home/didou/c=s
$ea tam#i<n chdir./ y chmod./;
opendir
>P&P 7A P&P 8 A P&P 4?
opendir 22 a#re el mane'ador de directorios
Kescripcion
int opendir > string path ?
Devuelve un mane'ador de directorio para ser usado con las llamadas closedir./A readdir./ y
re3inddir./;
readdir
>P&P 7A P&P 8 A P&P 4?
readdir 22 lee las entradas del mane'ador de directorios
Kescripcion
string readdir > int dirZhandle ?
Devuelve el nom#re del siguiente (ichero en el directorio; Los nom#res de (icheros no son devueltos
en ningun orden especial ;
E'emplo !. :istar todos los ficheros en un directorio
<?php
$handle>opendir3M.M9;
echo "Lirectory handle@ $handleVn";
echo "Siles@Vn";
8hile 3$#ile > readdir3$handle99 :
echo "$#ileVn";
;
closedir3$handle9;
?>
,ener en cuenta /ue readdir./ devolvera tam#ien ; y ;; i no /uereis estas entradas podeis #orrarlasC
E'emplo *. :istar todos los ficheros en un directorio e+cepto . y ..
<?php
i# 3$handle > opendir3M.M99 :
8hile 3#alse !>> 3$#ile > readdir3$handle999 :
i# 3$#ile !> "." && $#ile !> ".."9 :
echo "$#ileVn";
;
;
closedir3$handle9;
;
?>
re3inddir
>P&P 7A P&P 8 A P&P 4?
reEinddir 22 re#o#inar el mane'ador de directorios
Kescripcion
void re3inddir > int dirZhandle ?
.nizializa la secuencia de directorio determinada por #6r_han#le al principio del directorio;
scandir
>P&P 4?
scandir 22 Lista los archivos y directorios u#icados en la ruta especi(icada
Kescripci"n
array scandir > string directorio PA int sentidoZdeZordenamiento PA resource conteFtoQQ ?
Devuelve un array de archivos y directorios /ue se encuentran #a'o #6rector6o; i #6rector6o no es
un directorioA entonces el valor #ooleano FALSE es retornadoA y se genera un error de nivel
E_"ARNIN#;
Por de(ectoA el sentido del ordenamiento es ascendente; i es usado el par*metro opcional
sent6#o_#e_or#enam6ento >de(inido como 1?A entonces el sentido ser* descendente;
E'emplo !. )n e'emplo simple de scandir./
<?php
$dir > M/tmpM;
$archi=os6 > scandir3$dir9;
$archi=osC > scandir3$dir, 69;
print%r3$archi=os69;
print%r3$archi=osC9;
?>
Genera una salida comoC
,rray
3
)2/ >> .
)6/ >> ..
)C/ >> bar.php
)</ >> directorio%cualQuiera
)1/ >> #oo.txt
9
,rray
3
)2/ >> #oo.txt
)6/ >> directorio%cualQuiera
)C/ >> bar.php
)</ >> ..
)1/ >> .
9
E'emplo *. Alternati5as a scandir./ con PHP 8
<?php
$dir > "/tmp";
$dh > opendir3$dir9;
8hile 3#alse !>> 3$nombre%archi=o > readdir3$dh999 :
$archi=os)/ > $nombre%archi=o;
;
sort3$archi=os9;
print%r3$archi=os9;
rsort3$archi=os9;
print%r3$archi=os9;
?>
Genera una salida comoC
,rray
3
)2/ >> .
)6/ >> ..
)C/ >> bar.php
)</ >> directorio%cualQuiera
)1/ >> #oo.txt
9
,rray
3
)2/ >> #oo.txt
)6/ >> directorio%cualQuiera
)C/ >> bar.php
)</ >> ..
)1/ >> .
9
,ugerencia- Puede usar una @RL como nom#re de archivo con esta (unci-n si los (open
Erappers han sido activados; 5onsulte fopen./ para m*s detalles so#re c-mo especi(icar
el nom#re de (ichero y Ap<ndice L una lista de protocolos @RL soportados
$ea tam#i<n opendir./A readdir./A glob./A is>dir./A y sort./;
IICII. KJM ;unctions
Introducci"n
,he DOM eFtension is the replacement (or the DOM JML eFtension (rom P&P 8; ,he eFtension
still contains many old (unctionsA #ut they should no longer #e used; .n particularA (unctions that are
not o#'ect2oriented should #e avoided;
,he eFtension alloEs you to operate on an JML document Eith the DOM AP.;
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Clases predefinidas
,he AP. o( the module (olloEs the DOM Level 0 standard as closely as possi#le; 5onse/uentlyA the
AP. is (ully o#'ect2oriented; .t is a good idea to have the DOM standard availa#le Ehen using this
module;
,his module de(ines a num#er o( classesA Ehich are eFplained in the (olloEing ta#les; 5lasses Eith
an Walent in the DOM standard are named DOMFFF;
KJMAttr
+Ftends KJMNode;
M%todos
DOMAttr2_is.d>? 2 5hec"s i( attri#ute is a de(ined .D
Propiedades
Tabla !.
Name Type Mead(only Kescription
name string yes ,he name o( the attri#ute
oEner+lement
DOM+lemen
t
yes
,he element Ehich contains the
attri#ute
schema,ype.n(
o
#ool yes
Not implemented yetA alEays return
TRUE
speci(ied #ool yes
Not implemented yetA alEays return
TRUE
value string no ,he value o( the attri#ute
KJMCharacterKata
+Ftends KJMNode;
M%todos
DOM5haracterData2_appendData>? 2 Append a string to the end o( the character data o( the
node
DOM5haracterData2_deleteData>? 2 Remove a range o( characters (rom the node
DOM5haracterData2_insertData>? 2 .nsert a string at the speci(ied 1K2#it unit o((set
DOM5haracterData2_replaceData>? 2 Replace a su#string Eithin the DOM5haracterData
node
DOM5haracterData2_su#stringData>? 2 +Ftracts a range o( data (rom the node
Propiedades
Tabla *.
Name Type Mead(only Kescription
data
strin
g
no
,he contents o( the
node
length int yes
,he length o( the
contents
KJMKocument
+Ftends KJMNode;
Constructor
DOMDocument2_ZZconstruct>? 2 construct a neE DOMDocument o#'ect
M%todos
DOMDocument2_createAttri#ute>? 2 5reate neE attri#ute
DOMDocument2_createAttri#uteN>? 2 5reate neE attri#ute node Eith an associated
namespace
DOMDocument2_create5DA,Aection>? 2 5reate neE cdata node
DOMDocument2_create5omment>? 2 5reate neE comment node
DOMDocument2_createDocumentFragment>? 2 5reate neE document (ragment
DOMDocument2_create+lement>? 2 5reate neE element node
DOMDocument2_create+lementN>? 2 5reate neE element node Eith an associated
namespace
DOMDocument2_create+ntityRe(erence>? 2 5reate neE entity re(erence node
DOMDocument2_createProcessing.nstruction>? 2 5reates neE P. node
DOMDocument2_create,eFtNode>? 2 5reate neE teFt node
DOMDocument2_get+lementBy.d>? 2 earches (or an element Eith a certain id
DOMDocument2_get+lementsBy,agName>? 2 earches (or all elements Eith given tag name
DOMDocument2_get+lementsBy,agNameN>? 2 earches (or all elements Eith given tag
name in speci(ied namespace
DOMDocument2_importNode>? 2 .mport node into current document
DOMDocument2_load>? 2 Load JML (rom a (ile
DOMDocument2_load&,ML>? 2 Load &,ML (rom a string
DOMDocument2_load&,MLFile>? 2 Load &,ML (rom a (ile
DOMDocument2_loadJML>? 2 Load JML (rom a string
DOMDocument2_normalize>? 2 Normalizes document
DOMDocument2_relaFNG$alidate>? 2 Per(orms relaFNG validation on the document
DOMDocument2_relaFNG$alidateource>? 2 Per(orms relaFNG validation on the document
DOMDocument2_save>? 2 Dumps the internal JML tree #ac" into a (ile
DOMDocument2_save&,ML>? 2 Dumps the internal document into a string using &,ML
(ormatting
DOMDocument2_save&,MLFile>? 2 Dumps the internal document #ac" into a (ile using
&,ML (ormatting
DOMDocument2_saveJML>? 2 Dumps the internal JML tree #ac" into a string
DOMDocument2_schema$alidate>? 2 $alidates a document #ased on a schema
DOMDocument2_schema$alidateource>? 2 $alidates a document #ased on a schema
DOMDocument2_validate>? 2 $alidates the document #ased on its D,D
DOMDocument2_Finclude>? 2 u#stitutes J.ncludes in a DOMDocument O#'ect
Propiedades
Tabla 7.
Name Type
Mead(
only
Kescription
actual+ncoding string yes
con(ig DOM5on(iguration yes
doctype
DOMDocument,yp
e
yes
,he Document ,ype Declaration associated
Eith this document;
Name Type
Mead(
only
Kescription
document+lement DOM+lement yes
,his is a convenience attri#ute that alloEs
direct access to the child node that is the
document element o( the document;
document@R. string no
,he location o( the document or NULL i(
unde(ined;
encoding string no
(ormatOutput #ool no
implementation
DOM.mplementatio
n
yes
,he KJMImplementation o#'ect that handles
this document;
preserveLhitepac
e
#ool no
Do not remove redundant Ehite space; De(ault
to TRUE;
recover #ool no
resolve+Fternals #ool no
et it to TRUE to load eFternal entities (rom a
doctype declaration; ,his is use(ul (or including
character entities in your JML document;
standalone #ool no
strict+rror5hec"ing #ool no
,hroEs DOM+Fception on errors; De(ault to
TRUE;
su#stitute+ntities #ool no
validateOnParse #ool no
Loads and validates against the D,D; De(ault to
FALSE;
version string no
Fml+ncoding string yes
An attri#ute speci(yingA as part o( the JML
declarationA the encoding o( this document; ,his
is NULL Ehen unspeci(ied or Ehen it is not
"noEnA such as Ehen the Document Eas
created in memory;
Fmltandalone #ool no
An attri#ute speci(yingA as part o( the JML
declarationA Ehether this document is
standalone; ,his is FALSE Ehen unspeci(ied;
Fml$ersion string no
An attri#ute speci(yingA as part o( the JML
declarationA the version num#er o( this
document; .( there is no declaration and i( this
document supports the =JML= (eatureA the
value is =1;3=;
KJMKocumentType
+Ftends KJMNode
+ach KJMKocument has a #oct?pe attri#ute Ehose value is either NULL or a
KJMKocumentType o#'ect;
Propiedades
Tabla 8.
Name Type
Mead(
only
Kescription
pu#lic.d string yes ,he pu#lic identi(ier o( the eFternal su#set;
system.d string yes
,he system identi(ier o( the eFternal su#set; ,his
may #e an a#solute @R. or not;
name string yes
,he name o( D,DX i;e;A the name immediately
(olloEing the DOCTB+E "eyEord;
entities DOMNamedNodeMap yes
A KJMNamedNodeMap containing the general
entitiesA #oth eFternal and internalA declared in the
D,D;
notations DOMNamedNodeMap yes
A KJMNamedNodeMap containing the notations
declared in the D,D;
internalu#s
et
string yes
,he internal su#set as a stringA or null i( there is
none; ,his is does not contain the delimiting
s/uare #rac"ets;
KJMElement
+Ftends KJMNode;
M%todos
DOM+lement2_getAttri#ute>? 2 Returns value o( attri#ute
DOM+lement2_getAttri#uteNode>? 2 Returns attri#ute node
DOM+lement2_getAttri#uteNodeN>? 2 Returns attri#ute node
DOM+lement2_getAttri#uteN>? 2 Returns value o( attri#ute
DOM+lement2_get+lementsBy,agName>? 2 Gets elements #y tagname
DOM+lement2_get+lementsBy,agNameN>? 2 Get elements #y namespace@R. and
localName
DOM+lement2_hasAttri#ute>? 2 5hec"s to see i( attri#ute eFists
DOM+lement2_hasAttri#uteN>? 2 5hec"s to see i( attri#ute eFists
DOM+lement2_removeAttri#ute>? 2 Removes attri#ute
DOM+lement2_removeAttri#uteNode>? 2 Removes attri#ute
DOM+lement2_removeAttri#uteN>? 2 Removes attri#ute
DOM+lement2_setAttri#ute>? 2 Adds neE attri#ute
DOM+lement2_setAttri#uteNode>? 2 Adds neE attri#ute node to element
DOM+lement2_setAttri#uteNodeN>? 2 Adds neE attri#ute node to element
DOM+lement2_setAttri#uteN>? 2 Adds neE attri#ute
Propiedades
Tabla 9.
Name Type Mead(only Kescription
schema,ype.n(
o
#ool yes
Not implemented yetA alEays return
TRUE
tagName
strin
g
yes ,he element name
KJMEntity
+Ftends KJMNode
,his inter(ace represents a "noEn entityA either parsed or unparsedA in an JML document;
Propiedades
Tabla <.
Name Type
Mead(
only
Kescription
pu#lic.d
strin
g
yes
,he pu#lic identi(ier associated Eith the entity i( speci(iedA and
NULL otherEise;
system.d
strin
g
yes
,he system identi(ier associated Eith the entity i( speci(iedA and
NULL otherEise; ,his may #e an a#solute @R. or not;
notationName
strin
g
yes
For unparsed entitiesA the name o( the notation (or the entity; For
parsed entitiesA this is NULL;
actual+ncodin
g
strin
g
no
An attri#ute speci(ying the encoding used (or this entity at the time
o( parsingA Ehen it is an eFternal parsed entity; ,his is NULL i( it an
entity (rom the internal su#set or i( it is not "noEn;
encoding
strin
g
yes
An attri#ute speci(yingA as part o( the teFt declarationA the encoding
o( this entityA Ehen it is an eFternal parsed entity; ,his is NULL
otherEise;
version
strin
g
yes
An attri#ute speci(yingA as part o( the teFt declarationA the version
num#er o( this entityA Ehen it is an eFternal parsed entity; ,his is
NULL otherEise;
KJMEntityMeference
+Ftends KJMNode;
KJME+ception
DOM operations raise eFceptions under particular circumstancesA i;e;A Ehen an operation is
impossi#le to per(orm (or logical reasons;
ee also 5ap)tulo 03;
Propiedades
Tabla =.
Name Type Mead(only Kescription
code int yes
An integer indicating the type o( error
generated
KJMImplementation
,he KJMImplementation inter(ace provides a num#er o( methods (or per(orming operations that
are independent o( any particular instance o( the document o#'ect model;
M%todos
DOM.mplementation2_createDocument>? 2 5reates a DOM Document o#'ect o( the
speci(ied type Eith its document element
DOM.mplementation2_createDocument,ype>? 2 5reates an empty DOMDocument,ype
o#'ect
DOM.mplementation2_hasFeature>? 2 ,est i( the DOM implementation implements a
speci(ic (eature
KJMName:ist
Propiedades
Tabla N.
Name Type
Mead(
only
Kescription
length int yes
,he num#er o( pairs >name and namespace@R.? in the list; ,he range o(
valid child node indices is 3 to lenEth = 1 inclusive;
KJMNode
M%todos
DOMNode2_append5hild>? 2 Adds neE child at the end o( the children
DOMNode2_cloneNode>? 2 5lones a node
DOMNode2_hasAttri#utes>? 2 5hec"s i( node has attri#utes
DOMNode2_has5hildNodes>? 2 5hec"s i( node has children
DOMNode2_insertBe(ore>? 2 Adds a neE child #e(ore a re(erence node
DOMNode2_isameNode>? 2 .ndicates i( tEo nodes are the same node
DOMNode2_isupported>? 2 5hec"s i( (eature is supported (or speci(ied version
DOMNode2_loo"upNamespace@R.>? 2 Returns namespace @R. o( the node #ased on the
pre(iF
DOMNode2_loo"upPre(iF>? 2 Returns name space pre(iF o( the node #ased on
namespace@R.
DOMNode2_normalize>? 2 Normalizes the node
DOMNode2_remove5hild>? 2 Removes child (rom list o( children
DOMNode2_replace5hild>? 2 Replaces a child
Propiedades
Tabla O.
Name Type
Mead(
only
Kescription
nodeName string yes
Returns the more accurate name (or the current
node type
node$alue string no ,he value o( this nodeA depending on its type;
node,ype int yes
Gets the type o( the node; One o( the prede(ined
JMLZFFFZNOD+ constants
parentNode DOMNode yes ,he parent o( this node;
Name Type
Mead(
only
Kescription
childNodes DOMNodeList yes
A KJMNode:ist that contains all children o(
this node; .( there are no childrenA this is an
empty KJMNode:ist;
(irst5hild DOMNode yes
,he (irst child o( this node; .( there is no such
nodeA this returns NULL;
last5hild DOMNode yes
,he last child o( this node; .( there is no such
nodeA this returns NULL;
previousi#ling DOMNode yes
,he node immediately preceding this node; .(
there is no such nodeA this returns NULL;
neFti#ling DOMNode yes
,he node immediately (olloEing this node; .(
there is no such nodeA this returns NULL;
attri#utes DOMNamedNodeMap yes
A KJMNamedNodeMap containing the
attri#utes o( this node >i( it is a KJMElement?
or NULL otherEise;
oEnerDocume
nt
DOMDocument yes
,he KJMKocument o#'ect associated Eith this
node;
namespace@R. string yes
,he namespace @R. o( this nodeA or NULL i( it is
unspeci(ied;
pre(iF string no
,he namespace pre(iF o( this nodeA or NULL i( it
is unspeci(ied;
localName string yes
Returns the local part o( the /uali(ied name o(
this node;
#ase@R. string yes
,he a#solute #ase @R. o( this node or NULL i(
the implementation EasnHt a#le to o#tain an
a#solute @R.;
teFt5ontent string no
,his attri#ute returns the teFt content o( this
node and its descendants;
KJMNotation
+Ftends KJMNode
Propiedades
Tabla !D.
Name Type Mead(only
Kescriptio
n
pu#lic.d
strin
g
yes
system.
d
strin
g
yes
KJMProcessingInstruction
+Ftends KJMNode;
Propiedades
Tabla !!.
Name Type Mead(only
Kescriptio
n
target
strin
g
yes
data
strin
g
no
KJMTe+t
M%todos
DOM,eFt2_isLhitespace.n+lement5ontent>? 2 .ndicates Ehether this teFt node contains
Ehitespace
DOM,eFt2_split,eFt>? 2 Brea"s the node into tEo nodes at the speci(ied o((set
Propiedades
Tabla !*.
Name Type Mead(only
Kescriptio
n
Ehole,eF
t
strin
g
yes
KJMIPath
Constructor
DOMJPath2_ZZconstruct>? 2 construct a neE DOMJPath o#'ect
M%todos
DOMJPath2_registerNamespace>? 2 Registers the namespace Eith the DOMJpath o#'ect
DOMJPath2_evaluate>? 2 +valuates the given JPath eFpression and returns a typed result i(
possi#le
DOMJPath2_/uery>? 2 +valuates the given JPath eFpression
Propiedades
Tabla !7.
Name Type Mead(only
Kescriptio
n
documen
t
DOMDocumen
t

E'emplos
Many eFamples in this re(erence re/uire an JML (ile; Le Eill use the booI.xml that contains the
(olloEingC
E'emplo !. chapter.+ml
<?xml =ersion>"6.2" encodinE>"isoFJJ5KF6"?>
<!L?R*PE booI +ZO4R "F//?,&4&//L*L LocZooI X"O (1.6.C//E."
"http@//888.oasisFopen.orE/docbooI/xml/1.6.C/docbooIx.dtd" )
/>
<booI id>"listinE">
<title>"y lists</title>
<chapter id>"booIs">
<title>"y booIs</title>
<para>
<in#ormaltable>
<tEroup cols>"1">
<thead>
<ro8>
<entry>*itle</entry>
<entry>,uthor</entry>
<entry>OanEuaEe</entry>
<entry>4&Z.</entry>
</ro8>
</thead>
<tbody>
<ro8>
<entry>*he -rapes o# 7rath</entry>
<entry>Aohn &teinbecI</entry>
<entry>en</entry>
<entry>26126JG12K</entry>
</ro8>
<ro8>
<entry>*he earl</entry>
<entry>Aohn &teinbecI</entry>
<entry>en</entry>
<entry>26126HH<HX</entry>
</ro8>
<ro8>
<entry>&amarcande</entry>
<entry>,mine "aalou#</entry>
<entry>#r</entry>
<entry>CC5<256C2K</entry>
</ro8>
<!FF *?L?@ 4 ha=e a lot o# remaininE booIs to add.. FF>
</tbody>
</tEroup>
</in#ormaltable>
</para>
</chapter>
</booI>
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
Tabla !8. IM: constants
Constant Calue Kescription
%ML_ELEMENT_NODE >integer? 1 Node is a KJMElement
%ML_ATTRI(UTE_NODE >integer? 0 Node is a KJMAttr
%ML_TE%T_NODE >integer? 7 Node is a KJMTe+t
%ML_CDATA_SECTION_NODE >integer? 8 Node is a KJMCharacterKata
%ML_ENTITY_REF_NODE >integer? 4 Node is a KJMEntityMeference
Constant Calue Kescription
%ML_ENTITY_NODE >integer? K Node is a KJMEntity
%ML_PI_NODE >integer? :
Node is a
KJMProcessingInstruction
%ML_COMMENT_NODE >integer? M Node is a KJMComment
%ML_DOCUMENT_NODE >integer? 9 Node is a KJMKocument
%ML_DOCUMENT_TYPE_NODE >integer? 13 Node is a KJMKocumentType
%ML_DOCUMENT_FRA#_NODE >integer? 11 Node is a KJMKocument;ragment
%ML_NOTATION_NODE >integer? 10 Node is a KJMNotation
%ML_HTML_DOCUMENT_NODE >integer? 17
%ML_DTD_NODE >integer? 18
%ML_ELEMENT_DECL_NODE >integer? 14
%ML_ATTRI(UTE_DECL_NODE >integer? 1K
%ML_ENTITY_DECL_NODE >integer? 1:
%ML_NAMESPACE_DECL_NODE >integer? 1M
%ML_ATTRI(UTE_CDATA >integer? 1
%ML_ATTRI(UTE_ID >integer? 0
%ML_ATTRI(UTE_IDREF >integer? 7
%ML_ATTRI(UTE_IDREFS >integer? 8
%ML_ATTRI(UTE_ENTITY >integer? 4
%ML_ATTRI(UTE_NMTO&EN >integer? :
%ML_ATTRI(UTE_NMTO&ENS >integer? M
%ML_ATTRI(UTE_ENUMERATION >integer? 9
%ML_ATTRI(UTE_NOTATION >integer? 13
Tabla !9. KJME+ception constants
Constant Calue Kescription
DOM_INDE%_SI/E_ERR
>integer?
1
.( indeF or size is negativeA or greater than the alloEed
value;
DOMSTRIN#_SI/E_ERR
>integer?
0
.( the speci(ied range o( teFt does not (it into a
KJM,tring;
DOM_HIERARCHY_RE.UES
T_ERR >integer?
7 .( any node is inserted someEhere it doesnHt #elong
DOM_"RON#_DOCUMENT_E
RR >integer?
8
.( a node is used in a di((erent document than the one that
created it;
DOM_IN$ALID_CHARACTE
R_ERR >integer?
4
.( an invalid or illegal character is speci(iedA such as in a
name;
DOM_NO_DATA_ALLO"ED_
ERR >integer?
K .( data is speci(ied (or a node Ehich does not support data;
Constant Calue Kescription
DOM_NO_MODIFICATION_
ALLO"ED_ERR >integer?
:
.( an attempt is made to modi(y an o#'ect Ehere
modi(ications are not alloEed;
DOM_NOT_FOUND_ERR
>integer?
M
.( an attempt is made to re(erence a node in a conteFt
Ehere it does not eFist;
DOM_NOT_SUPPORTED_ER
R >integer?
9
.( the implementation does not support the re/uested type
o( o#'ect or operation;
DOM_INUSE_ATTRI(UTE_
ERR >integer?
13
.( an attempt is made to add an attri#ute that is already in
use elseEhere;
DOM_IN$ALID_STATE_ER
R >integer?
11
.( an attempt is made to use an o#'ect that is notA or is no
longerA usa#le;
DOM_SYNTA%_ERR >integer? 10 .( an invalid or illegal string is speci(ied;
DOM_IN$ALID_MODIFICA
TION_ERR >integer?
17
.( an attempt is made to modi(y the type o( the underlying
o#'ect;
DOM_NAMESPACE_ERR
>integer?
18
.( an attempt is made to create or change an o#'ect in a
Eay Ehich is incorrect Eith regard to namespaces;
DOM_IN$ALID_ACCESS_E
RR >integer?
14
.( a parameter or an operation is not supported #y the
underlying o#'ect;
DOM_$ALIDATION_ERR
>integer?
1K
.( a call to a method such as insertBe(ore or remove5hild
Eould ma"e the Node invalid Eith respect to =partial
validity=A this eFception Eould #e raised and the operation
Eould not #e done;
Tabla de contenidos
DOMAttr2_is.d>? 22 5hec"s i( attri#ute is a de(ined .D
DOM5haracterData2_appendData>? 22 Append the string to the end o( the character data o( the
node
DOM5haracterData2_deleteData>? 22 Remove a range o( characters (rom the node
DOM5haracterData2_insertData>? 22 .nsert a string at the speci(ied 1K2#it unit o((set
DOM5haracterData2_replaceData>? 22 Replace a su#string Eithin the DOM5haracterData node
DOM5haracterData2_su#stringData>? 22 +Ftracts a range o( data (rom the node
DOMDocument2_ZZconstruct>? 22 5reates a neE DOMDocument o#'ect
DOMDocument2_createAttri#ute>? 22 5reate neE attri#ute
DOMDocument2_createAttri#uteN>? 22 5reate neE attri#ute node Eith an associated namespace
DOMDocument2_create5DA,Aection>? 22 5reate neE cdata node
DOMDocument2_create5omment>? 22 5reate neE comment node
DOMDocument2_createDocumentFragment>? 22 5reate neE document (ragment
DOMDocument2_create+lement>? 22 5reate neE element node
DOMDocument2_create+lementN>? 22 5reate neE element node Eith an associated namespace
DOMDocument2_create+ntityRe(erence>? 22 5reate neE entity re(erence node
DOMDocument2_createProcessing.nstruction>? 22 5reates neE P. node
DOMDocument2_create,eFtNode>? 22 5reate neE teFt node
DOMDocument2_get+lementBy.d>? 22 earches (or an element Eith a certain id
DOMDocument2_get+lementsBy,agName>? 22 earches (or all elements Eith given tag name
DOMDocument2_get+lementsBy,agNameN>? 22 earches (or all elements Eith given tag name in
speci(ied namespace
DOMDocument2_importNode>? 22 .mport node into current document
DOMDocument2_load>? 22 Load JML (rom a (ile
DOMDocument2_load&,ML>? 22 Load &,ML (rom a string
DOMDocument2_load&,MLFile>? 22 Load &,ML (rom a (ile
DOMDocument2_loadJML>? 22 Load JML (rom a string
DOMDocument2_normalize>? 22 Normalizes the document
DOMDocument2_relaFNG$alidate>? 22 Per(orms relaFNG validation on the document
DOMDocument2_relaFNG$alidateource>? 22 Per(orms relaFNG validation on the document
DOMDocument2_save>? 22 Dumps the internal JML tree #ac" into a (ile
DOMDocument2_save&,ML>? 22 Dumps the internal document into a string using &,ML
(ormatting
DOMDocument2_save&,MLFile>? 22 Dumps the internal document into a (ile using &,ML
(ormatting
DOMDocument2_saveJML>? 22 Dumps the internal JML tree #ac" into a string
DOMDocument2_schema$alidate>? 22 $alidates a document #ased on a schema
DOMDocument2_schema$alidateource>? 22 $alidates a document #ased on a schema
DOMDocument2_validate>? 22 $alidates the document #ased on its D,D
DOMDocument2_Finclude>? 22 u#stitutes J.ncludes in a DOMDocument O#'ect
DOM+lement2_getAttri#ute>? 22 Returns value o( attri#ute
DOM+lement2_getAttri#uteNode>? 22 Returns attri#ute node
DOM+lement2_getAttri#uteNodeN>? 22 Returns attri#ute node
DOM+lement2_getAttri#uteN>? 22 Returns value o( attri#ute
DOM+lement2_get+lementsBy,agName>? 22 Gets elements #y tagname
DOM+lement2_get+lementsBy,agNameN>? 22 Get elements #y namespace@R. and localName
DOM+lement2_hasAttri#ute>? 22 5hec"s to see i( attri#ute eFists
DOM+lement2_hasAttri#uteN>? 22 5hec"s to see i( attri#ute eFists
DOM+lement2_removeAttri#ute>? 22 Removes attri#ute
DOM+lement2_removeAttri#uteNode>? 22 Removes attri#ute
DOM+lement2_removeAttri#uteN>? 22 Removes attri#ute
DOM+lement2_setAttri#ute>? 22 Adds neE attri#ute
DOM+lement2_setAttri#uteNode>? 22 Adds neE attri#ute node to element
DOM+lement2_setAttri#uteNodeN>? 22 Adds neE attri#ute node to element
DOM+lement2_setAttri#uteN>? 22 Adds neE attri#ute
DOM.mplementation2_createDocument>? 22 5reates a DOMDocument o#'ect o( the speci(ied type
Eith its document element
DOM.mplementation2_createDocument,ype>? 22 5reates an empty DOMDocument,ype o#'ect
DOM.mplementation2_hasFeature>? 22 ,est i( the DOM implementation implements a speci(ic
(eature
DOMNamedNodeMap2_getNamed.tem>? 22 Retrieves a node speci(ied #y name
DOMNamedNodeMap2_getNamed.temN>? 22 Retrieves a node speci(ied #y local name and
namespace @R.
DOMNamedNodeMap2_item>? 22 Retrieves a node speci(ied #y indeF
DOMNode2_append5hild>? 22 Adds neE child at the end o( the children
DOMNode2_cloneNode>? 22 5lones a node
DOMNode2_hasAttri#utes>? 22 5hec"s i( node has attri#utes
DOMNode2_has5hildNodes>? 22 5hec"s i( node has children
DOMNode2_insertBe(ore>? 22 Adds a neE child #e(ore a re(erence node
DOMNode2_isameNode>? 22 .ndicates i( tEo nodes are the same node
DOMNode2_isupported>? 22 5hec"s i( (eature is supported (or speci(ied version
DOMNode2_loo"upNamespace@R.>? 22 Gets the namespace @R. o( the node #ased on the pre(iF
DOMNode2_loo"upPre(iF>? 22 Gets the namespace pre(iF o( the node #ased on the namespace @R.
DOMNode2_normalize>? 22 Normalizes the node
DOMNode2_remove5hild>? 22 Removes child (rom list o( children
DOMNode2_replace5hild>? 22 Replaces a child
DOMNodelist2_item>? 22 Retrieves a node speci(ied #y indeF
DOM,eFt2_isLhitespace.n+lement5ontent>? 22 .ndicates Ehether this teFt node contains
Ehitespace
DOM,eFt2_split,eFt>? 22 Brea"s this node into tEo nodes at the speci(ied o((set
DOMJPath2_ZZconstruct>? 22 5reates a neE DOMJPath o#'ect
DOMJPath2_evaluate>? 22 +valuates the given JPath eFpression and returns a typed result i(
possi#le;
DOMJPath2_/uery>? 22 +valuates the given JPath eFpression
DOMJPath2_registerNamespace>? 22 Registers the namespace Eith the DOMJpath o#'ect
domZimportZsimpleFml 22 Gets a DOM+lement o#'ect (rom a impleJML+lement o#'ect
KJMAttr(GisId./
DOMAttr2_is.d>? 22 5hec"s i( attri#ute is a de(ined .D
Kescripci"n
class KJMAttr \
#ool isId > void ?
]
,his (unction chec"s i( the attri#ute is a de(ined .D;
According to the DOM standard this re/uires a D,D Ehich de(ines the attri#ute .D to #e o( type .D;
%ou need to validate your document Eith DOMDocument2_validate>? or
DOMDocument::al6#ateOn+arse #e(ore using this (unction;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. KJMAttr(GisId./ E+ample
<?php
$doc > ne8 LomLocument;
// 7e need to =alidate our document be#ore re#erinE to the id
$docF>=alidate?narse > true;
$docF>Ooad3MbooI.xmlM9;
// 7e retrie=e the attribute named id o# the chapter element
$attr > $docF>EetElementsZy*aE.ame3MchapterM9F>item329F>Eet,ttribute.ode3MidM9;
=ar%dump3$attrF>is4d399; // bool3true9
?>
KJMCharacterKata(GappendKata./
DOM5haracterData2_appendData>? 22 Append the string to the end o( the character data o( the
node
Kescripci"n
class KJMCharacterKata \
void appendKata > string data ?
]
Append the string #ata to the end o( the character data o( the node;
:ista de parmetros
#ata
,he string to append;
Calores retornados
No value is returned;
Cer tambi%n
DOM5haracterData2_deleteData>?
DOM5haracterData2_insertData>?
DOM5haracterData2_replaceData>?
DOM5haracterData2_su#stringData
>?
KJMCharacterKata(GdeleteKata./
DOM5haracterData2_deleteData>? 22 Remove a range o( characters (rom the node
Kescripci"n
class KJMCharacterKata \
void deleteKata > int o((setA int count ?
]
Deletes count characters starting (rom position o99set;
:ista de parmetros
o99set
,he o((set (rom Ehich to start removing;
count
,he num#er o( characters to delete; .( the sum o( o99set and count eFceeds the lengthA then all
characters to the end o( the data are deleted;
Calores retornados
No value is returned;
E+ceptions
DOM_INDE%_SI/E_ERR
Raised i( o99set is negative or greater than the num#er o( 1K2#it units in dataA or i( count is
negative;
Cer tambi%n
DOM5haracterData2_appendData>?
DOM5haracterData2_insertData>?
DOM5haracterData2_replaceData>?
DOM5haracterData2_su#stringData
>?
KJMCharacterKata(GinsertKata./
DOM5haracterData2_insertData>? 22 .nsert a string at the speci(ied 1K2#it unit o((set
Kescripci"n
class KJMCharacterKata \
void insertKata > int o((setA string data ?
]
.nserts string #ata at position o99set;
:ista de parmetros
o99set
,he character o((set at Ehich to insert;
#ata
,he string to insert;
Calores retornados
No value is returned;
E+ceptions
DOM_INDE%_SI/E_ERR
Raised i( o99set is negative or greater than the num#er o( 1K2#it units in data;
Cer tambi%n
DOM5haracterData2_appendData>?
DOM5haracterData2_deleteData>?
DOM5haracterData2_replaceData>?
DOM5haracterData2_su#stringData
>?
KJMCharacterKata(GreplaceKata./
DOM5haracterData2_replaceData>? 22 Replace a su#string Eithin the DOM5haracterData node
Kescripci"n
class KJMCharacterKata \
void replaceKata > int o((setA int countA string data ?
]
Replace count characters starting (rom position o99set Eith #ata;
:ista de parmetros
o99set
,he o((set (rom Ehich to start replacing;
count
,he num#er o( characters to replace; .( the sum o( o99set and count eFceeds the lengthA then all
characters to the end o( the data are replaced;
#ata
,he string Eith Ehich the range must #e replaced;
Calores retornados
No value is returned;
E+ceptions
DOM_INDE%_SI/E_ERR
Raised i( o99set is negative or greater than the num#er o( 1K2#it units in dataA or i( count is
negative;
Cer tambi%n
DOM5haracterData2_appendData>?
DOM5haracterData2_deleteData>?
DOM5haracterData2_insertData>?
DOM5haracterData2_su#stringData
>?
KJMCharacterKata(GsubstringKata./
DOM5haracterData2_su#stringData>? 22 +Ftracts a range o( data (rom the node
Kescripci"n
class KJMCharacterKata \
string substringKata > int o((setA int count ?
]
Returns the speci(ied su#string;
:ista de parmetros
o99set
tart o((set o( su#string to eFtract;
count
,he num#er o( characters to eFtract;
Calores retornados
,he speci(ied su#string; .( the sum o( o99set and count eFceeds the lengthA then all 1K2#it units to the
end o( the data are returned;
E+ceptions
DOM_INDE%_SI/E_ERR
Raised i( o99set is negative or greater than the num#er o( 1K2#it units in dataA or i( count is
negative;
Cer tambi%n
DOM5haracterData2_appendData>?
DOM5haracterData2_deleteData>?
DOM5haracterData2_insertData>?
DOM5haracterData2_replaceData>?
KJMKocument(G>>construct./
DOMDocument2_ZZconstruct>? 22 5reates a neE DOMDocument o#'ect
Kescripci"n
class KJMKocument \
>>construct > Pstring version PA string encodingQQ ?
]
5reates a neE KJMKocument o#'ect;
:ista de parmetros
ers6on
,he version num#er o( the document as part o( the JML declaration;
enco#6nE
,he encoding o( the document as part o( the JML declaration;
E'emplos
E'emplo !. Creating a ne3 KJMKocument
<?php
$dom > ne8 L?"Locument3M6.2M, MisoFJJ5KF6M9;
echo $domF>sa=eX"O39; /W <?xml =ersion>"6.2" encodinE>"isoFJJ5KF6"?> W/
?>
Cer tambi%n
DOM.mplementation2_createDocument
>?
KJMKocument(GcreateAttribute./
DOMDocument2_createAttri#ute>? 22 5reate neE attri#ute
Kescripci"n
class KJMKocument \
DOMAttr createAttribute > string name ?
]
,his (unction creates a neE instance o( class KJMAttr; +ste nodo no sera mostrado en el
documento a no ser /ue sea introducido por e'emplo con DOMNode2_append5hild>?;
:ista de parmetros
name
,he name o( the attri#ute;
Calores retornados
,he neE KJMAttr or FALSE i( an error occured;
E+ceptions
DOM_IN$ALID_CHARACTER_ERR
Raised i( name contains an invalid character;
Cer tambi%n
DOMNode2_append5hild>?
DOMDocument2_createAttri#uteN>?
DOMDocument2_create5DA,Aection>?
DOMDocument2_create5omment>?
DOMDocument2_createDocumentFragment>?
DOMDocument2_create+lement>?
DOMDocument2_create+lementN>?
DOMDocument2_create+ntityRe(erence>?
DOMDocument2_createProcessing.nstruction
>?
DOMDocument2_create,eFtNode>?
KJMKocument(GcreateAttributeN,./
DOMDocument2_createAttri#uteN>? 22 5reate neE attri#ute node Eith an associated namespace
Kescripci"n
class KJMKocument \
DOMAttr createAttributeN, > string namespace@R.A string /uali(iedName ?
]
,his (unction creates a neE instance o( class KJMAttr; +ste nodo no sera mostrado en el
documento a no ser /ue sea introducido por e'emplo con DOMNode2_append5hild>?;
:ista de parmetros
namespaceUR0
,he @R. o( the namespace;
@ual696e#Name
,he tag name and pre(iF o( the attri#uteA as pre968:taEname;
Calores retornados
,he neE KJMAttr or FALSE i( an error occured;
E+ceptions
DOM_IN$ALID_CHARACTER_ERR
Raised i( @ual696e#Name contains an invalid character;
DOM_NAMESPACE_ERR
Raised i( @ual696e#Name is a mal(ormed /uali(ied nameA or i( @ual696e#Name has a pre(iF and
namespaceUR0 is NULL;
Cer tambi%n
DOMNode2_append5hild>?
DOMDocument2_createAttri#ute>?
DOMDocument2_create5DA,Aection>?
DOMDocument2_create5omment>?
DOMDocument2_createDocumentFragment>?
DOMDocument2_create+lement>?
DOMDocument2_create+lementN>?
DOMDocument2_create+ntityRe(erence>?
DOMDocument2_createProcessing.nstruction
>?
DOMDocument2_create,eFtNode>?
KJMKocument(GcreateCKATA,ection./
DOMDocument2_create5DA,Aection>? 22 5reate neE cdata node
Kescripci"n
class KJMKocument \
DOM5DA,Aection createCKATA,ection > string data ?
]
,his (unction creates a neE instance o( class KJMCKATA,ection; +ste nodo no sera mostrado en
el documento a no ser /ue sea introducido por e'emplo con DOMNode2_append5hild>?;
:ista de parmetros
#ata
,he content o( the cdata;
Calores retornados
,he neE KJMCKATA,ection or FALSE i( an error occured;
Cer tambi%n
DOMNode2_append5hild>?
DOMDocument2_createAttri#ute>?
DOMDocument2_createAttri#uteN>?
DOMDocument2_create5omment>?
DOMDocument2_createDocumentFragment>?
DOMDocument2_create+lement>?
DOMDocument2_create+lementN>?
DOMDocument2_create+ntityRe(erence>?
DOMDocument2_createProcessing.nstruction
>?
DOMDocument2_create,eFtNode>?
KJMKocument(GcreateComment./
DOMDocument2_create5omment>? 22 5reate neE comment node
Kescripci"n
class KJMKocument \
DOM5omment createComment > string data ?
]
,his (unction creates a neE instance o( class KJMComment; +ste nodo no sera mostrado en el
documento a no ser /ue sea introducido por e'emplo con DOMNode2_append5hild>?;
:ista de parmetros
#ata
,he content o( the comment;
Calores retornados
,he neE KJMComment or FALSE i( an error occured;
Cer tambi%n
DOMNode2_append5hild>?
DOMDocument2_createAttri#ute>?
DOMDocument2_createAttri#uteN>?
DOMDocument2_create5DA,Aection>?
DOMDocument2_createDocumentFragment>?
DOMDocument2_create+lement>?
DOMDocument2_create+lementN>?
DOMDocument2_create+ntityRe(erence>?
DOMDocument2_createProcessing.nstruction
>?
DOMDocument2_create,eFtNode>?
KJMKocument(GcreateKocument;ragment./
DOMDocument2_createDocumentFragment>? 22 5reate neE document (ragment
Kescripci"n
class KJMKocument \
DOMDocumentFragment createKocument;ragment > void ?
]
,his (unction creates a neE instance o( class KJMKocument;ragment; +ste nodo no sera
mostrado en el documento a no ser /ue sea introducido por e'emplo con DOMNode2_append5hild
>?;
Calores retornados
,he neE KJMKocument;ragment or FALSE i( an error occured;
Cer tambi%n
DOMNode2_append5hild>?
DOMDocument2_createAttri#ute>?
DOMDocument2_createAttri#uteN>?
DOMDocument2_create5DA,Aection>?
DOMDocument2_create5omment>?
DOMDocument2_create+lement>?
DOMDocument2_create+lementN>?
DOMDocument2_create+ntityRe(erence>?
DOMDocument2_createProcessing.nstruction
>?
DOMDocument2_create,eFtNode>?
KJMKocument(GcreateElement./
DOMDocument2_create+lement>? 22 5reate neE element node
Kescripci"n
class KJMKocument \
DOM+lement createElement > string name PA string valueQ ?
]
,his (unction creates a neE instance o( class KJMElement; +ste nodo no sera mostrado en el
documento a no ser /ue sea introducido por e'emplo con DOMNode2_append5hild>?;
:ista de parmetros
name
,he tag name o( the element;
alue
,he value o( the element; By de(aultA an empty element Eill #e created; %ou can also set the
value later Eith DOMElement=&no#e(alue;
Calores retornados
Returns a neE instance o( class KJMElement or FALSE i( an error occured;
E+ceptions
DOM_IN$ALID_CHARACTER_ERR
Raised i( name contains an invalid character;
E'emplos
E'emplo !. Creating a ne3 element and inserting it as root
<?php
$dom > ne8 L?"Locument3M6.2M, MisoFJJ5KF6M9;
$element > $domF>createElement3MtestM, M*his is the root element!M9;
// 7e insert the ne8 element as root 3child o# the document9
$domF>appendRhild3$element9;
echo $domF>sa=eX"O39;
?>
+l resultado del e'emplo seriaC
<?xml =ersion>"6.2" encodinE>"isoFJJ5KF6"?>
<test>*his is the root element!</test>
Cer tambi%n
DOMNode2_append5hild>?
DOMDocument2_createAttri#ute>?
DOMDocument2_createAttri#uteN>?
DOMDocument2_create5DA,Aection>?
DOMDocument2_create5omment>?
DOMDocument2_createDocumentFragment>?
DOMDocument2_create+lementN>?
DOMDocument2_create+ntityRe(erence>?
DOMDocument2_createProcessing.nstruction
>?
DOMDocument2_create,eFtNode>?
KJMKocument(GcreateElementN,./
DOMDocument2_create+lementN>? 22 5reate neE element node Eith an associated namespace
Kescripci"n
class KJMKocument \
DOM+lement createElementN, > string namespace@R.A string /uali(iedName PA string valueQ ?
]
,his (unction creates a neE element node Eith an associated namespace; +ste nodo no sera
mostrado en el documento a no ser /ue sea introducido por e'emplo con DOMNode2_append5hild
>?;
:ista de parmetros
namespaceUR0
,he @R. o( the namespace;
@ual696e#Name
,he /uali(ied name o( the elementA as pre968:taEname;
alue
,he value o( the element; By de(aultA an empty element Eill #e created; %ou can also set the
value later Eith DOMElement=&no#e(alue;
Calores retornados
,he neE KJMElement or FALSE i( an error occured;
E+ceptions
DOM_IN$ALID_CHARACTER_ERR
Raised i( @ual696e#Name contains an invalid character;
DOM_NAMESPACE_ERR
Raised i( @ual696e#Name is a ma(ormed /uali(ied name;
E'emplos
E'emplo !. Creating a ne3 element and inserting it as root
<?php
$dom > ne8 L?"Locument3M6.2M, MisoFJJ5KF6M9;
$element > $domF>createElement.&3Mhttp@//888.example.com/XSooM, Mx#oo@testM, M*his is the root element!M9;
// 7e insert the ne8 element as root 3child o# the document9
$domF>appendRhild3$element9;
echo $domF>sa=eX"O39;
?>
+l resultado del e'emplo seriaC
<?xml =ersion>"6.2" encodinE>"isoFJJ5KF6"?>
<x#oo@test xmlns@x#oo>"http@//888.example.com/XSoo">*his is the root element!</x#oo@test>
Cer tambi%n
DOMNode2_append5hild>?
DOMDocument2_createAttri#ute>?
DOMDocument2_createAttri#uteN>?
DOMDocument2_create5DA,Aection>?
DOMDocument2_create5omment>?
DOMDocument2_createDocumentFragment>?
DOMDocument2_create+lement>?
DOMDocument2_create+ntityRe(erence>?
DOMDocument2_createProcessing.nstruction
>?
DOMDocument2_create,eFtNode>?
KJMKocument(GcreateEntityMeference./
DOMDocument2_create+ntityRe(erence>? 22 5reate neE entity re(erence node
Kescripci"n
class KJMKocument \
DOM+ntityRe(erence createEntityMeference > string name ?
]
,his (unction creates a neE instance o( class KJMEntityMeference; +ste nodo no sera mostrado en
el documento a no ser /ue sea introducido por e'emplo con DOMNode2_append5hild>?;
:ista de parmetros
name
,he content o( the entity re(erence;
Calores retornados
,he neE KJMEntityMeference or FALSE i( an error occured;
E+ceptions
DOM_IN$ALID_CHARACTER_ERR
Raised i( name contains an invalid character;
Cer tambi%n
DOMNode2_append5hild>?
DOMDocument2_createAttri#ute>?
DOMDocument2_createAttri#uteN>?
DOMDocument2_create5DA,Aection>?
DOMDocument2_create5omment>?
DOMDocument2_createDocumentFragment>?
DOMDocument2_create+lement>?
DOMDocument2_create+lementN>?
DOMDocument2_createProcessing.nstruction
>?
DOMDocument2_create,eFtNode>?
KJMKocument(GcreateProcessingInstruction
./
DOMDocument2_createProcessing.nstruction>? 22 5reates neE P. node
Kescripci"n
class KJMKocument \
DOMProcessing.nstruction createProcessingInstruction > string target PA string dataQ ?
]
,his (unction creates a neE instance o( class KJMProcessingInstruction; +ste nodo no sera
mostrado en el documento a no ser /ue sea introducido por e'emplo con DOMNode2_append5hild
>?;
:ista de parmetros
tarEet
,he target o( the processing instruction;
#ata
,he content o( the processing instruction;
Calores retornados
,he neE KJMProcessingInstruction or FALSE i( an error occured;
E+ceptions
DOM_IN$ALID_CHARACTER_ERR
Raised i( tarEet contains an invalid character;
Cer tambi%n
DOMNode2_append5hild>?
DOMDocument2_createAttri#ute>?
DOMDocument2_createAttri#uteN>?
DOMDocument2_create5DA,Aection>?
DOMDocument2_create5omment>?
DOMDocument2_createDocumentFragment
>?
DOMDocument2_create+lement>?
DOMDocument2_create+lementN>?
DOMDocument2_create+ntityRe(erence>?
DOMDocument2_create,eFtNode>?
KJMKocument(GcreateTe+tNode./
DOMDocument2_create,eFtNode>? 22 5reate neE teFt node
Kescripci"n
class KJMKocument \
DOM,eFt createTe+tNode > string content ?
]
,his (unction creates a neE instance o( class KJMTe+t; +ste nodo no sera mostrado en el
documento a no ser /ue sea introducido por e'emplo con DOMNode2_append5hild>?;
:ista de parmetros
content
,he content o( the teFt;
Calores retornados
,he neE KJMTe+t or FALSE i( an error occured;
Cer tambi%n
DOMNode2_append5hild>?
DOMDocument2_createAttri#ute>?
DOMDocument2_createAttri#uteN>?
DOMDocument2_create5DA,Aection>?
DOMDocument2_create5omment>?
DOMDocument2_createDocumentFragment>?
DOMDocument2_create+lement>?
DOMDocument2_create+lementN>?
DOMDocument2_create+ntityRe(erence>?
DOMDocument2_createProcessing.nstruction
>?
KJMKocument(GgetElement1yId./
DOMDocument2_get+lementBy.d>? 22 earches (or an element Eith a certain id
Kescripci"n
class KJMKocument \
DOM+lement getElement1yId > string element.d ?
]
,his (unction is similar to DOMDocument2_get+lementsBy,agName>? #ut searches (or an element
Eith a given id;
According to the DOM standard this re/uires a D,D Ehich de(ines the attri#ute .D to #e o( type .D;
%ou need to validate your document Eith DOMDocument2_validate>? or DOMDocument=
&al6#ateOn+arse #e(ore using this (unction;
:ista de parmetros
element0#
,he uni/ue id value (or an element;
Calores retornados
Returns the KJMElement or NULL i( the element is not (ound;
E'emplos
E'emplo !. KJMKocument(GgetElement1yId./ E+ample
<?php
$doc > ne8 LomLocument;
// 7e need to =alidate our document be#ore re#erinE to the id
$docF>=alidate?narse > true;
$docF>Ooad3MbooI.xmlM9;
echo "*he element 8hose id is booIs is@ " . $docF>EetElementZy4d3MbooIsM9F>taE.ame . "Vn";
?>
+l resultado del e'emplo seriaC
*he element 8hose id is booIs is@ chapter
Cer tambi%n
DOMDocument2_get+lementsBy,agName
>?
KJMKocument(GgetElements1yTagName./
DOMDocument2_get+lementsBy,agName>? 22 earches (or all elements Eith given tag name
Kescripci"n
class KJMKocument \
DOMNodeList getElements1yTagName > string name ?
]
,his (unction returns a neE instance o( class KJMNode:ist containing the elements Eith a given
tag name;
:ista de parmetros
name
,he name o( the tag to match on; ,he special value / matches all tags;
Calores retornados
A neE KJMNode:ist o#'ect containing all the matched elements;
Cer tambi%n
DOMDocument2_get+lementsBy,agNameN
>?
KJMKocument(GgetElements1yTagNameN,
./
DOMDocument2_get+lementsBy,agNameN>? 22 earches (or all elements Eith given tag name in
speci(ied namespace
Kescripci"n
class KJMKocument \
DOMNodeList getElements1yTagNameN, > string namespace@R.A string localName ?
]
Returns a KJMNode:ist o( all elements Eith a given local name and a namespace @R.;
:ista de parmetros
namespaceUR0
,he namespace @R. o( the elements to match on; ,he special value / matches all namespaces;
localName
,he local name o( the elements to match on; ,he special value / matches all local names;
Calores retornados
A neE KJMNode:ist o#'ect containing all the matched elements;
E'emplos
E'emplo !. Fet all the IInclude elements
<?php
$xml > <<<E?L
<?xml =ersion>"6.2" ?>
<chapter xmlns@xi>"http@//888.8<.orE/C226/X4nclude">
<title>ZooIs o# the other Euy..</title>
<para>
<xi@include hre#>"booI.xml">
<xi@#allbacI>
<error>xinclude@ booI.xml not #ound</error>
</xi@#allbacI>
</xi@include>
<include>
*his is another namespace
</include>
</para>
</chapter>
E?L;
$dom > ne8 L?"Locument;
// load the X"O strinE de#ined abo=e
$domF>loadX"O3$xml9;
#oreach 3$domF>EetElementsZy*aE.ame.&3Mhttp@//888.8<.orE/C226/X4ncludeM, MWM9 as $element9 :
echo Mlocal name@ M, $elementF>local.ame, M, pre#ix@ M, $elementF>pre#ix, "Vn";
;
?>
+l resultado del e'emplo seriaC
local name@ include, pre#ix@ xi
local name@ #allbacI, pre#ix@ xi
Cer tambi%n
DOMDocument2_get+lementsBy,agName
>?
KJMKocument(GimportNode./
DOMDocument2_importNode>? 22 .mport node into current document
Kescripci"n
class KJMKocument \
DOMNode importNode > DOMNode importedNode PA #ool deepQ ?
]
,his (unction returns a copy o( the node to import and associates it Eith the current document;
:ista de parmetros
6mporte#No#e
,he node to import;
#eep
.( set to TRUEA this method Eill recursively import the su#tree under the 6mporte#No#e;
Calores retornados
,he copied node;
E+ceptions
KJME+ception is throEn i( node cannot #e imported;
KJMKocument(Gload./
DOMDocument2_load>? 22 Load JML (rom a (ile
Kescripci"n
class KJMKocument \
#ool load > string (ilename ?
]
Loads an JML document (rom a (ile;
,his method may also #e called statically to load and create a KJMKocument o#'ect; ,he static
invocation may #e used Ehen no KJMKocument properties need to #e set prior to loading;
:ista de parmetros
96lename
,he path to the JML document;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. Creating a Kocument
<?php
$doc > L?"Locument@@load3MbooI.xmlM9;
echo $docF>sa=eX"O39;
$doc > ne8 L?"Locument39;
$docF>load3MbooI.xmlM9;
echo $docF>sa=eX"O39;
?>
Cer tambi%n
DOMDocument2_loadJML
>?
DOMDocument2_save>?
DOMDocument2_saveJML
>?
KJMKocument(GloadHTM:./
DOMDocument2_load&,ML>? 22 Load &,ML (rom a string
Kescripci"n
class KJMKocument \
#ool loadHTM: > string source ?
]
,he (unction parses the &,ML contained in the string source; @nli"e loading JMLA &,ML does
not have to #e Eell2(ormed to load; ,his (unction may also #e called statically to load and create a
KJMKocument o#'ect; ,he static invocation may #e used Ehen no KJMKocument properties
need to #e set prior to loading;
:ista de parmetros
source
,he &,ML string;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. Creating a Kocument
<?php
$doc > L?"Locument@@loadH*"O3"<html><body>*est<br></body></html>"9;
echo $docF>sa=eH*"O39;
$doc > ne8 L?"Locument39;
$docF>loadH*"O3"<html><body>*est<br></body></html>"9;
echo $docF>sa=eH*"O39;
?>
Cer tambi%n
DOMDocument2_load&,MLFile
>?
DOMDocument2_save&,ML>?
DOMDocument2_save&,MLFile
>?
KJMKocument(GloadHTM:;ile./
DOMDocument2_load&,MLFile>? 22 Load &,ML (rom a (ile
Kescripci"n
class KJMKocument \
#ool loadHTM:;ile > string (ilename ?
]
,he (unction parses the &,ML document in the (ile named 96lename; @nli"e loading JMLA &,ML
does not have to #e Eell2(ormed to load;
,his (unction may also #e called statically to load and create a KJMKocument o#'ect; ,he static
invocation may #e used Ehen no KJMKocument properties need to #e set prior to loading;
:ista de parmetros
96lename
,he path to the &,ML (ile;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. Creating a Kocument
<?php
$doc > L?"Locument@@loadH*"OSile3"#ilename.html"9;
print $docF>sa=eH*"O39;
$doc > ne8 L?"Locument39;
$docF>loadH*"OSile3"#ilename.html"9;
print $docF>sa=eH*"O39;
?>
Cer tambi%n
DOMDocument2_load&,ML>?
DOMDocument2_save&,ML>?
DOMDocument2_save&,MLFile
>?
KJMKocument(GloadIM:./
DOMDocument2_loadJML>? 22 Load JML (rom a string
Kescripci"n
class KJMKocument \
#ool loadIM: > string source ?
]
Loads an JML document (rom a string;
,his method may also #e called statically to load and create a KJMKocument o#'ect; ,he static
invocation may #e used Ehen no KJMKocument properties need to #e set prior to loading;
:ista de parmetros
source
,he string containing the JML;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. Creating a Kocument
<?php
$doc > L?"Locument@@loadX"O3M<root><node/></root>M9;
echo $docF>sa=eX"O39;
$doc > ne8 L?"Locument39;
$docF>loadX"O3M<root><node/></root>M9;
echo $docF>sa=eX"O39;
?>
Cer tambi%n
DOMDocument2_load>?
DOMDocument2_save>?
DOMDocument2_saveJML
>?
KJMKocument(Gnormali6e./
DOMDocument2_normalize>? 22 Normalizes the document
Kescripci"n
class KJMKocument \
void normali6e > void ?
]
Normalizes the document;
Calores retornados
No value is returned;
Cer tambi%n
DOMNode2_normalize
>?
KJMKocument(Grela+NFCalidate./
DOMDocument2_relaFNG$alidate>? 22 Per(orms relaFNG validation on the document
Kescripci"n
class KJMKocument \
#ool rela+NFCalidate > string (ilename ?
]
Per(orms relaFNG validation on the document #ased on the given RNG schema;
:ista de parmetros
96lename
,he RNG (ile;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
DOMDocument2_relaFNG$alidateource
>?
DOMDocument2_schema$alidate>?
DOMDocument2_schema$alidateource
>?
DOMDocument2_validate>?
KJMKocument(Grela+NFCalidate,ource./
DOMDocument2_relaFNG$alidateource>? 22 Per(orms relaFNG validation on the document
Kescripci"n
class KJMKocument \
#ool rela+NFCalidate,ource > string source ?
]
Per(orms relaFNG validation on the document #ased on the given RNG source;
:ista de parmetros
source
A string containing the RNG schema;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
DOMDocument2_relaFNG$alidate>?
DOMDocument2_schema$alidate>?
DOMDocument2_schema$alidateource
>?
DOMDocument2_validate>?
KJMKocument(Gsa5e./
DOMDocument2_save>? 22 Dumps the internal JML tree #ac" into a (ile
Kescripci"n
class KJMKocument \
miFed sa5e > string (ilename ?
]
5reates an JML document (rom the DOM representation; ,his (unction is usually called a(ter
#uilding a neE dom document (rom scratch as in the eFample #eloE;
:ista de parmetros
96lename
,he path to the saved JML document;
Calores retornados
Returns the num#er o( #ytes Eritten or FALSE i( an error occurred;
E'emplos
E'emplo !. ,a5ing a KJM tree into a file
<?php
$doc > ne8 L?"Locument3M6.2M9;
// 8e 8ant a nice output
$docF>#ormat?utput > true;
$root > $docF>createElement3MbooIM9;
$root > $docF>appendRhild3$root9;
$title > $docF>createElement3MtitleM9;
$title > $rootF>appendRhild3$title9;
$text > $docF>create*ext.ode3M*his is the titleM9;
$text > $titleF>appendRhild3$text9;
echo M7rote@ M . $docF>sa=e3"/tmp/test.xml"9 . M bytesM; // 7rote@ HC bytes
?>
Cer tambi%n
DOMDocument2_saveJML
>?
DOMDocument2_load>?
DOMDocument2_loadJML
>?
KJMKocument(Gsa5eHTM:./
DOMDocument2_save&,ML>? 22 Dumps the internal document into a string using &,ML
(ormatting
Kescripci"n
class KJMKocument \
string sa5eHTM: > void ?
]
5reates an &,ML document (rom the DOM representation; ,his (unction is usually called a(ter
#uilding a neE dom document (rom scratch as in the eFample #eloE;
Calores retornados
Returns the &,MLA or FALSE i( an error occurred;
E'emplos
E'emplo !. ,a5ing a HTM: tree into a string
<?php
$doc > ne8 L?"Locument3M6.2M9;
// 8e 8ant a nice output
$docF>#ormat?utput > true;
$root > $docF>createElement3MhtmlM9;
$root > $docF>appendRhild3$root9;
$head > $docF>createElement3MheadM9;
$head > $rootF>appendRhild3$head9;
$title > $docF>createElement3MtitleM9;
$title > $headF>appendRhild3$title9;
$text > $docF>create*ext.ode3M*his is the titleM9;
$text > $titleF>appendRhild3$text9;
echo $docF>sa=eH*"O39;
?>
Cer tambi%n
DOMDocument2_save&,MLFile
>?
DOMDocument2_load&,ML>?
DOMDocument2_load&,MLFile
>?
KJMKocument(Gsa5eHTM:;ile./
DOMDocument2_save&,MLFile>? 22 Dumps the internal document into a (ile using &,ML
(ormatting
Kescripci"n
class KJMKocument \
int sa5eHTM:;ile > string (ilename ?
]
5reates an &,ML document (rom the DOM representation; ,his (unction is usually called a(ter
#uilding a neE dom document (rom scratch as in the eFample #eloE;
:ista de parmetros
96lename
,he path to the saved &,ML document;
Calores retornados
Returns the num#er o( #ytes Eritten or FALSE i( an error occurred;
E'emplos
E'emplo !. ,a5ing a HTM: tree into a file
<?php
$doc > ne8 L?"Locument3M6.2M9;
// 8e 8ant a nice output
$docF>#ormat?utput > true;
$root > $docF>createElement3MhtmlM9;
$root > $docF>appendRhild3$root9;
$head > $docF>createElement3MheadM9;
$head > $rootF>appendRhild3$head9;
$title > $docF>createElement3MtitleM9;
$title > $headF>appendRhild3$title9;
$text > $docF>create*ext.ode3M*his is the titleM9;
$text > $titleF>appendRhild3$text9;
echo M7rote@ M . $docF>sa=eH*"OSile3"/tmp/test.html"9 . M bytesM; // 7rote@ 6CK bytes
?>
Cer tambi%n
DOMDocument2_save&,ML>?
DOMDocument2_load&,ML>?
DOMDocument2_load&,MLFile
>?
KJMKocument(Gsa5eIM:./
DOMDocument2_saveJML>? 22 Dumps the internal JML tree #ac" into a string
Kescripci"n
class KJMKocument \
string sa5eIM: > PDOMNode nodeQ ?
]
5reates an JML document (rom the DOM representation; ,his (unction is usually called a(ter
#uilding a neE dom document (rom scratch as in the eFample #eloE;
:ista de parmetros
no#e
@se this parameter to output only a speci(ic node Eithout JML declaration rather than the
entire document;
Calores retornados
Returns the JMLA or FALSE i( an error occurred;
E+ceptions
DOM_"RON#_DOCUMENT_ERR
Raised i( no#e is (rom another document;
E'emplos
E'emplo !. ,a5ing a KJM tree into a string
<?php
$doc > ne8 L?"Locument3M6.2M9;
// 8e 8ant a nice output
$docF>#ormat?utput > true;
$root > $docF>createElement3MbooIM9;
$root > $docF>appendRhild3$root9;
$title > $docF>createElement3MtitleM9;
$title > $rootF>appendRhild3$title9;
$text > $docF>create*ext.ode3M*his is the titleM9;
$text > $titleF>appendRhild3$text9;
echo "'etrie=inE all the document@Vn";
echo $docF>sa=eX"O39 . "Vn";
echo "'etrie=inE only the title part@Vn";
echo $docF>sa=eX"O3$title9;
?>
+l resultado del e'emplo seriaC
'etrie=inE all the document@
<?xml =ersion>"6.2"?>
<booI>
<title>*his is the title</title>
</booI>
'etrie=inE only the title part@
<title>*his is the title</title>
Cer tambi%n
DOMDocument2_save>?
DOMDocument2_load>?
DOMDocument2_loadJML
>?
KJMKocument(GschemaCalidate./
DOMDocument2_schema$alidate>? 22 $alidates a document #ased on a schema
Kescripci"n
class KJMKocument \
#ool schemaCalidate > string (ilename ?
]
$alidates a document #ased on a the given schema (ile;
:ista de parmetros
96lename
,he path to the schema;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
DOMDocument2_schema$alidateource
>?
DOMDocument2_relaFNG$alidate>?
DOMDocument2_relaFNG$alidateource
>?
DOMDocument2_validate>?
KJMKocument(GschemaCalidate,ource./
DOMDocument2_schema$alidateource>? 22 $alidates a document #ased on a schema
Kescripci"n
class KJMKocument \
#ool schemaCalidate,ource > string source ?
]
$alidates a document #ased on a schema de(ined in the given string;
:ista de parmetros
source
A string containing the schema;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
DOMDocument2_schema$alidate>?
DOMDocument2_relaFNG$alidate>?
DOMDocument2_relaFNG$alidateource
>?
DOMDocument2_validate>?
KJMKocument(G5alidate./
DOMDocument2_validate>? 22 $alidates the document #ased on its D,D
Kescripci"n
class KJMKocument \
#ool 5alidate > void ?
]
$alidates the document #ased on its D,D;
%ou can also use the al6#ateOn+arse property o( KJMKocument to ma"e a D,D validation;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo; .( the document
have no D,D attachedA this method Eill return FALSE;
E'emplos
E'emplo !. E+ample of KTK 5alidation
<?php
$dom > ne8 L?"Locument;
$domF>Ooad3MbooI.xmlM9;
i# 3$domF>=alidate399 :
echo "*his document is =alid!Vn";
;
?>
%ou can also validate your JML (ile Ehile loading itC
<?php
$dom > ne8 L?"Locument;
$domF>=alidate?narse > true;
$domF>Ooad3MbooI.xmlM9;
?>
Cer tambi%n
DOMDocument2_schema$alidate>?
DOMDocument2_schema$alidateource
>?
DOMDocument2_relaFNG$alidate>?
DOMDocument2_relaFNG$alidateource
>?
KJMKocument(G+include./
DOMDocument2_Finclude>? 22 u#stitutes J.ncludes in a DOMDocument O#'ect
Kescripci"n
class KJMKocument \
int +include > Pint optionsQ ?
]
,his method su#stitutes J.ncludes in a DOMDocument o#'ect;
Nota- Due to li#Fml0 automatically resolving entitiesA this method Eill produce
uneFpected results i( the included JML (ile have an attached D,D;
:ista de parmetros
opt6ons
li#Fml parameters; Availa#le since P&P 4;1;3 and Li#Fml 0;K;:;
Calores retornados
Returns the num#er o( J.ncludes in the document;
E'emplos
E'emplo !. KJMKocument(G+include./ e+ample
<?php
$xml > <<<E?L
<?xml =ersion>"6.2" ?>
<chapter xmlns@xi>"http@//888.8<.orE/C226/X4nclude">
<title>ZooIs o# the other Euy..</title>
<para>
<xi@include hre#>"booI.xml">
<xi@#allbacI>
<error>xinclude@ booI.xml not #ound</error>
</xi@#allbacI>
</xi@include>
</para>
</chapter>
E?L;
$dom > ne8 L?"Locument;
// letMs ha=e a nice output
$domF>preser=e7hite&pace > #alse;
$domF>#ormat?utput > true;
// load the X"O strinE de#ined abo=e
$domF>loadX"O3$xml9;
// substitute xincludes
$domF>xinclude39;
echo $domF>sa=eX"O39;
?>
+l resultado del e'emplo seria algo similar aC
<?xml =ersion>"6.2"?>
<chapter xmlns@xi>"http@//888.8<.orE/C226/X4nclude">
<title>ZooIs o# the other Euy..</title>
<para>
<ro8 xml@base>"/home/didou/booI.xml">
<entry>*he -rapes o# 7rath</entry>
<entry>Aohn &teinbecI</entry>
<entry>en</entry>
<entry>26126JG12K</entry>
</ro8>
<ro8 xml@base>"/home/didou/booI.xml">
<entry>*he earl</entry>
<entry>Aohn &teinbecI</entry>
<entry>en</entry>
<entry>26126HH<HX</entry>
</ro8>
<ro8 xml@base>"/home/didou/booI.xml">
<entry>&amarcande</entry>
<entry>,mine "aalou#</entry>
<entry>#r</entry>
<entry>CC5<256C2K</entry>
</ro8>
</para>
</chapter>
KJMElement(GgetAttribute./
DOM+lement2_getAttri#ute>? 22 Returns value o( attri#ute
Kescripci"n
class KJMElement \
string getAttribute > string name ?
]
Gets the value o( the attri#ute Eith name name (or the current node;
:ista de parmetros
name
,he name o( the attri#ute;
Calores retornados
,he value o( the attri#uteA or an empty string i( no attri#ute Eith the given name is (ound;
Cer tambi%n
DOM+lement2_hasAttri#ute>?
DOM+lement2_setAttri#ute>?
DOM+lement2_removeAttri#ute
>?
KJMElement(GgetAttributeNode./
DOM+lement2_getAttri#uteNode>? 22 Returns attri#ute node
Kescripci"n
class KJMElement \
DOMAttr getAttributeNode > string name ?
]
Returns the attri#ute node Eith name name (or the current element;
:ista de parmetros
name
,he name o( the attri#ute;
Calores retornados
,he attri#ute node;
Cer tambi%n
DOM+lement2_hasAttri#ute>?
DOM+lement2_setAttri#uteNode>?
DOM+lement2_removeAttri#uteNode
>?
KJMElement(GgetAttributeNodeN,./
DOM+lement2_getAttri#uteNodeN>? 22 Returns attri#ute node
Kescripci"n
class KJMElement \
DOMAttr getAttributeNodeN, > string namespace@R.A string localName ?
]
Returns the attri#ute node in namespace namespaceUR0 Eith local name localName (or the current
node;
:ista de parmetros
namespaceUR0
,he namespace @R.;
localName
,he local name;
Calores retornados
,he attri#ute node;
Cer tambi%n
DOM+lement2_hasAttri#uteN>?
DOM+lement2_setAttri#uteNodeN>?
DOM+lement2_removeAttri#uteNode
>?
KJMElement(GgetAttributeN,./
DOM+lement2_getAttri#uteN>? 22 Returns value o( attri#ute
Kescripci"n
class KJMElement \
string getAttributeN, > string namespace@R.A string localName ?
]
Gets the value o( the attri#ute in namespace namespaceUR0 Eith local name localName (or the
current node;
:ista de parmetros
namespaceUR0
,he namespace @R.;
localName
,he local name;
Calores retornados
,he value o( the attri#uteA or an empty string i( no attri#ute Eith the given localName and
namespaceUR0 is (ound;
Cer tambi%n
DOM+lement2_hasAttri#uteN>?
DOM+lement2_setAttri#uteN>?
DOM+lement2_removeAttri#uteN
>?
KJMElement(GgetElements1yTagName./
DOM+lement2_get+lementsBy,agName>? 22 Gets elements #y tagname
Kescripci"n
class KJMElement \
DOMNodeList getElements1yTagName > string name ?
]
,his (unction returns a neE instance o( the class KJMNode:ist o( all descendant elements Eith a
given tag nameA in the order in Ehich they are encountered in a preorder traversal o( this element
tree;
:ista de parmetros
name
,he tag name; @se / to return all elements Eithin the element tree;
Calores retornados
,his (unction returns a neE instance o( the class KJMNode:ist o( all matched elements;
Cer tambi%n
DOM+lement2_get+lementsBy,agNameN
>?
KJMElement(GgetElements1yTagNameN,./
DOM+lement2_get+lementsBy,agNameN>? 22 Get elements #y namespace@R. and localName
Kescripci"n
class KJMElement \
DOMNodeList getElements1yTagNameN, > string namespace@R.A string localName ?
]
,his (unction (etch all the descendant elements Eith a given localName and namespaceUR0;
:ista de parmetros
namespaceUR0
,he namespace @R.;
localName
,he local name; @se / to return all elements Eithin the element tree;
Calores retornados
,his (unction returns a neE instance o( the class KJMNode:ist o( all matched elements in the
order in Ehich they are encountered in a preorder traversal o( this element tree;
Cer tambi%n
DOM+lement2
_get+lementsBy,agName>?
KJMElement(GhasAttribute./
DOM+lement2_hasAttri#ute>? 22 5hec"s to see i( attri#ute eFists
Kescripci"n
class KJMElement \
#ool hasAttribute > string name ?
]
.ndicates Ehether attri#ute named name eFists as a mem#er o( the element;
:ista de parmetros
name
,he attri#ute name;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
DOM+lement2_hasAttri#uteN
>?
DOM+lement2_getAttri#ute>?
DOM+lement2_setAttri#ute>?
DOM+lement2_removeAttri#ute
>?
KJMElement(GhasAttributeN,./
DOM+lement2_hasAttri#uteN>? 22 5hec"s to see i( attri#ute eFists
Kescripci"n
class KJMElement \
#ool hasAttributeN, > string namespace@R.A string localName ?
]
.ndicates Ehether attri#ute in namespace namespaceUR0 named localName eFists as a mem#er o(
the element;
:ista de parmetros
namespaceUR0
,he namespace @R.;
localName
,he local name;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
DOM+lement2_hasAttri#ute>?
DOM+lement2_getAttri#uteN>?
DOM+lement2_setAttri#uteN>?
DOM+lement2_removeAttri#uteN
>?
KJMElement(Gremo5eAttribute./
DOM+lement2_removeAttri#ute>? 22 Removes attri#ute
Kescripci"n
class KJMElement \
#ool remo5eAttribute > string name ?
]
Removes attri#ute named name (rom the element;
:ista de parmetros
name
,he name o( the attri#ute;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E+ceptions
DOM_NO_MODIFICATION_ALLO"ED_ERR
Raised i( the node is readonly;
Cer tambi%n
DOM+lement2_hasAttri#ute
>?
DOM+lement2_getAttri#ute
>?
DOM+lement2_setAttri#ute
>?
KJMElement(Gremo5eAttributeNode./
DOM+lement2_removeAttri#uteNode>? 22 Removes attri#ute
Kescripci"n
class KJMElement \
#ool remo5eAttributeNode > DOMAttr oldnode ?
]
Removes attri#ute ol#no#e (rom the element;
:ista de parmetros
ol#no#e
,he attri#ute node;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E+ceptions
DOM_NO_MODIFICATION_ALLO"ED_ERR
Raised i( the node is readonly;
DOM_NOT_FOUND_ERROR
Raised i( ol#no#e is not an attri#ute o( the element;
Cer tambi%n
DOM+lement2_hasAttri#ute>?
DOM+lement2_getAttri#uteNode
>?
DOM+lement2_setAttri#uteNode
>?
KJMElement(Gremo5eAttributeN,./
DOM+lement2_removeAttri#uteN>? 22 Removes attri#ute
Kescripci"n
class KJMElement \
#ool remo5eAttributeN, > string namespace@R.A string localName ?
]
Removes attri#ute is namespace namespaceUR0 named localName (rom the element;
:ista de parmetros
namespaceUR0
,he namespace @R.;
localName
,he local name;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E+ceptions
DOM_NO_MODIFICATION_ALLO"ED_ERR
Raised i( the node is readonly;
Cer tambi%n
DOM+lement2_hasAttri#uteN
>?
DOM+lement2_getAttri#uteN
>?
DOM+lement2_setAttri#uteN
>?
KJMElement(GsetAttribute./
DOM+lement2_setAttri#ute>? 22 Adds neE attri#ute
Kescripci"n
class KJMElement \
#ool setAttribute > string nameA string value ?
]
ets an attri#ute Eith name name to the given value; .( the attri#ute does not eFistA it Eill #e created;
:ista de parmetros
name
,he name o( the attri#ute;
alue
,he value o( the attri#ute;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E+ceptions
DOM_NO_MODIFICATION_ALLO"ED_ERR
Raised i( the node is readonly;
E'emplos
E'emplo !. ,etting an attribute
<?php
$doc > ne8 L?"Locument3"6.2"9;
$node > $docF>createElement3"para"9;
$ne8node > $docF>appendRhild3$node9;
$ne8nodeF>set,ttribute3"aliEn", "le#t"9;
?>
Cer tambi%n
DOM+lement2_hasAttri#ute>?
DOM+lement2_getAttri#ute>?
DOM+lement2_removeAttri#ute
>?
KJMElement(GsetAttributeNode./
DOM+lement2_setAttri#uteNode>? 22 Adds neE attri#ute node to element
Kescripci"n
class KJMElement \
DOMAttr setAttributeNode > DOMAttr attr ?
]
Adds neE attri#ute node attr to element;
:ista de parmetros
attr
,he attri#ute node;
Calores retornados
Returns old node i( the attri#ute has #een replaced or NULL;
E+ceptions
DOM_NO_MODIFICATION_ALLO"ED_ERR
Raised i( the node is readonly;
Cer tambi%n
DOM+lement2_hasAttri#ute>?
DOM+lement2_getAttri#uteNode>?
DOM+lement2_removeAttri#uteNode
>?
KJMElement(GsetAttributeNodeN,./
DOM+lement2_setAttri#uteNodeN>? 22 Adds neE attri#ute node to element
Kescripci"n
class KJMElement \
DOMAttr setAttributeNodeN, > DOMAttr attr ?
]
Adds neE attri#ute node attr to element;
:ista de parmetros
name
,he attri#ute node;
Calores retornados
Returns the old node i( the attri#ute has #een replaced;
E+ceptions
DOM_NO_MODIFICATION_ALLO"ED_ERR
Raised i( the node is readonly;
Cer tambi%n
DOM+lement2_hasAttri#uteN>?
DOM+lement2_getAttri#uteNodeN>?
DOM+lement2_removeAttri#uteNode
>?
KJMElement(GsetAttributeN,./
DOM+lement2_setAttri#uteN>? 22 Adds neE attri#ute
Kescripci"n
class KJMElement \
void setAttributeN, > string namespace@R.A string /uali(iedNameA string value ?
]
ets an attri#ute Eith namespace namespaceUR0 and name name to the given value; .( the attri#ute
does not eFistA it Eill #e created;
:ista de parmetros
namespaceUR0
,he namespace @R.;
@ual696e#Name
,he /uali(ied name o( the attri#uteA as pre968:taEname;
alue
,he value o( the attri#ute;
Calores retornados
No value is returned;
E+ceptions
DOM_NO_MODIFICATION_ALLO"ED_ERR
Raised i( the node is readonly;
DOM_NAMESPACE_ERR
Raised i( @ual696e#Name is a mal(ormed /uali(ied nameA or i( @ual696e#Name has a pre(iF and
namespaceUR0 is NULL;
Cer tambi%n
DOM+lement2_hasAttri#uteN>?
DOM+lement2_getAttri#uteN>?
DOM+lement2_removeAttri#uteN
>?
KJMImplementation(GcreateKocument./
DOM.mplementation2_createDocument>? 22 5reates a DOMDocument o#'ect o( the speci(ied type
Eith its document element
Kescripci"n
class KJMImplementation \
DOMDocument createKocument > Pstring namespace@R. PA string /uali(iedName PA
DOMDocument,ype doctypeQQQ ?
]
5reates a KJMKocument o#'ect o( the speci(ied type Eith its document element;
:ista de parmetros
namespaceUR0
,he namespace @R. o( the document element to create;
@ual696e#Name
,he /uali(ied name o( the document element to create;
#oct?pe
,he type o( document to create or NULL;
Calores retornados
A neE KJMKocument o#'ect; .( namespaceUR0A @ual696e#NameA and #oct?pe are nullA the returned
KJMKocument is empty Eith no document element
E+ceptions
DOM_"RON#_DOCUMENT_ERR
Raised i( #oct?pe has already #een used Eith a di((erent document or Eas created (rom a
di((erent implementation;
DOM_NAMESPACE_ERR
Raised i( there is an error Eith the namespaceA as determined #y namespaceUR0 and
@ual696e#Name;
Cer tambi%n
DOMDocument2_ZZconstruct>?
DOM.mplementation2_createDocument,ype
>?
KJMImplementation(GcreateKocumentType./
DOM.mplementation2_createDocument,ype>? 22 5reates an empty DOMDocument,ype o#'ect
Kescripci"n
class KJMImplementation \
DOMDocument,ype createKocumentType > Pstring /uali(iedName PA string pu#lic.d PA string
system.dQQQ ?
]
5reates an empty KJMKocumentType o#'ect; +ntity declarations and notations are not made
availa#le; +ntity re(erence eFpansions and de(ault attri#ute additions do not occur;
:ista de parmetros
@ual696e#Name
,he /uali(ied name o( the document type to create;
pu1l6c0#
,he eFternal su#set pu#lic identi(ier;
s?stem0#
,he eFternal su#set system identi(ier;
Calores retornados
A neE KJMKocumentType node Eith its o7nerDocument set to NULL;
E+ceptions
DOM_NAMESPACE_ERR
Raised i( there is an error Eith the namespaceA as determined #y @ual696e#Name;
Cer tambi%n
DOM.mplementation2_createDocument
>?
KJMImplementation(Ghas;eature./
DOM.mplementation2_hasFeature>? 22 ,est i( the DOM implementation implements a speci(ic
(eature
Kescripci"n
class KJMImplementation \
#ool has;eature > string (eatureA string version ?
]
,est i( the DOM implementation implements a speci(ic 9eature;
%ou can (ind a list o( all (eatures in the 5on(ormance section o( the DOM speci(ication;
:ista de parmetros
9eature
,he (eature to test;
ers6on
,he version num#er o( the 9eature to test; .n level 0A this can #e either 2.0 or 1.0;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. Testing your KJM Implementation
<?php
$#eatures > array3
MRoreM >> MRore moduleM,
MX"OM >> MX"O moduleM,
MH*"OM >> MH*"O moduleM,
M(ie8sM >> M(ie8s moduleM,
M&tylesheetsM >> M&tyle &heets moduleM,
MR&&M >> MR&& moduleM,
MR&&CM >> MR&&C moduleM,
ME=entsM >> ME=ents moduleM,
M+4E=entsM >> M+ser inter#ace E=ents moduleM,
M"ouseE=entsM >> M"ouse E=ents moduleM,
M"utationE=entsM >> M"utation E=ents moduleM,
MH*"OE=entsM >> MH*"O E=ents moduleM,
M'anEeM >> M'anEe moduleM,
M*ra=ersalM >> M*ra=ersal moduleM
9;

#oreach 3$#eatures as $Iey >> $name9 :
i# 3L?"4mplementation@@hasSeature3$Iey, MC.2M99 :
echo "Has #eature $nameVn";
; else :
echo ""issinE #eature $nameVn";
;
;
?>
Cer tambi%n
DOMNode2_isupported>?
KJMNamedNodeMap(GgetNamedItem./
DOMNamedNodeMap2_getNamed.tem>? 22 Retrieves a node speci(ied #y name
Kescripci"n
class KJMNamedNodeMap \
DOMNode getNamedItem > string name ?
]
Retrieves a node speci(ied #y its no#eName;
:ista de parmetros
name
,he no#eName o( the node to retrieve;
Calores retornados
A node >o( any type? Eith the speci(ied no#eNameA or NULL i( no node is (ound;
Cer tambi%n
DOMNamedNodeMap2_getNamed.temN>?
KJMNamedNodeMap(GgetNamedItemN,./
DOMNamedNodeMap2_getNamed.temN>? 22 Retrieves a node speci(ied #y local name and
namespace @R.
Kescripci"n
class KJMNamedNodeMap \
DOMNode getNamedItemN, > string namespace@R.A string localName ?
]
Retrieves a node speci(ied #y localName and namespaceUR0;
:ista de parmetros
namespaceUR0
,he namespace @R. o( the node to retrieve;
localName
,he local name o( the node to retrieve;
Calores retornados
A node >o( any type? Eith the speci(ied local name and namespace @R.A or NULL i( no node is
(ound;
Cer tambi%n
DOMNamedNodeMap2_getNamed.tem
>?
KJMNamedNodeMap(Gitem./
DOMNamedNodeMap2_item>? 22 Retrieves a node speci(ied #y indeF
Kescripci"n
class KJMNamedNodeMap \
DOMNode item > int indeF ?
]
Retrieves a node speci(ied #y 6n#e8 Eithin the KJMNamedNodeMap o#'ect;
:ista de parmetros
6n#e8
.ndeF into this map;
Calores retornados
,he node at the 6n#e8th position in the mapA or NULL i( that is not a valid indeF >greater than or
e/ual to the num#er o( nodes in this map?;
KJMNode(GappendChild./
DOMNode2_append5hild>? 22 Adds neE child at the end o( the children
Kescripci"n
class KJMNode \
DOMNode appendChild > DOMNode neEnode ?
]
,his (unctions appends a child to an eFisting list o( children or creates a neE list o( children; ,he
child can #e created Eith e;g; DOMDocument2_create+lement>?A DOMDocument2_create,eFtNode
>? etc; or simply #y using any other node;
:ista de parmetros
ne7no#e
,he appended child;
Calores retornados
,he node added;
E+ceptions
DOM_NO_MODIFICATION_ALLO"ED_ERR
Raised i( this node is readonly or i( the previous parent o( the node #eing inserted is readonly;
DOM_HIERARCHY_RE.UEST_ERR
Raised i( this node is o( a type that does not alloE children o( the type o( the ne7no#e nodeA
or i( the node to append is one o( this nodeHs ancestors or this node itsel(;
DOM_"RON#_DOCUMENT_ERR
Raised i( ne7no#e Eas created (rom a di((erent document than the one that created this node;
E'emplos
,he (olloEing eFample Eill add a neE element node to a (resh document;
E'emplo !. Adding a child
<?php
$doc > ne8 L?"Locument;
$node > $docF>createElement3"para"9;
$ne8node > $docF>appendRhild3$node9;
echo $docF>sa=eX"O39;
?>
Cer tambi%n
DOMNode2_remove5hild
>?
DOMNode2_replace5hild>?
KJMNode(GcloneNode./
DOMNode2_cloneNode>? 22 5lones a node
Kescripci"n
class KJMNode \
DOMNode cloneNode > P#ool deepQ ?
]
5reates a copy o( the node;
:ista de parmetros
#eep
.ndicates Ehether to copy all descendant nodes; ,his parameter is de(aulted to FALSE;
Calores retornados
,he cloned node;
KJMNode(GhasAttributes./
DOMNode2_hasAttri#utes>? 22 5hec"s i( node has attri#utes
Kescripci"n
class KJMNode \
#ool hasAttributes > void ?
]
,his method chec"s i( the node has attri#utes; ,he tested node have to #e an
%ML_ELEMENT_NODE;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
DOMNode2_has5hildNodes>?
KJMNode(GhasChildNodes./
DOMNode2_has5hildNodes>? 22 5hec"s i( node has children
Kescripci"n
class KJMNode \
#ool hasChildNodes > void ?
]
,his (unction chec"s i( the node has children;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
DOMNode2_hasAttri#utes
>?
KJMNode(Ginsert1efore./
DOMNode2_insertBe(ore>? 22 Adds a neE child #e(ore a re(erence node
Kescripci"n
class KJMNode \
DOMNode insert1efore > DOMNode neEnode PA DOMNode re(nodeQ ?
]
,his (unction inserts a neE node right #e(ore the re(erence node; .( you plan to do (urther
modi(ications on the appended child you must use the returned node;
:ista de parmetros
ne7no#e
,he neE node;
re9no#e
,he re(erence node; .( not suppliedA ne7no#e is appended to the children;
Calores retornados
,he inserted node;
E+ceptions
DOM_NO_MODIFICATION_ALLO"ED_ERR
Raised i( this node is readonly or i( the previous parent o( the node #eing inserted is readonly;
DOM_HIERARCHY_RE.UEST_ERR
Raised i( this node is o( a type that does not alloE children o( the type o( the ne7no#e nodeA
or i( the node to append is one o( this nodeHs ancestors or this node itsel(;
DOM_"RON#_DOCUMENT_ERR
Raised i( ne7no#e Eas created (rom a di((erent document than the one that created this node;
DOM_NOT_FOUND
Raised i( re9no#e is not a child o( this node;
KJMNode(Gis,ameNode./
DOMNode2_isameNode>? 22 .ndicates i( tEo nodes are the same node
Kescripci"n
class KJMNode \
#ool is,ameNode > DOMNode node ?
]
,his (unction indicates i( tEo nodes are the same node; ,he comparison is not #ased on content
:ista de parmetros
no#e
,he compared node;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
KJMNode(Gis,upported./
DOMNode2_isupported>? 22 5hec"s i( (eature is supported (or speci(ied version
Kescripci"n
class KJMNode \
#ool is,upported > string (eatureA string version ?
]
5hec"s i( the as"ed 9eature is supported (or the speci(ied ers6on;
:ista de parmetros
9eature
,he (eature to test; ee the eFample o( DOM.mplementation2_hasFeature>? (or a list o(
(eatures;
ers6on
,he version num#er o( the 9eature to test;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
DOM.mplementation2_hasFeature
>?
KJMNode(GlooBupNamespace)MI./
DOMNode2_loo"upNamespace@R.>? 22 Gets the namespace @R. o( the node #ased on the pre(iF
Kescripci"n
class KJMNode \
string looBupNamespace)MI > string pre(iF ?
]
Gets the namespace @R. o( the node #ased on the pre968;
:ista de parmetros
pre968
,he pre(iF o( the namespace;
Calores retornados
,he namespace @R. o( the node;
Cer tambi%n
DOMNode2_loo"upPre(iF
>?
KJMNode(GlooBupPrefi+./
DOMNode2_loo"upPre(iF>? 22 Gets the namespace pre(iF o( the node #ased on the namespace @R.
Kescripci"n
class KJMNode \
string looBupPrefi+ > string namespace@R. ?
]
Gets the namespace pre(iF o( the node #ased on the namespace @R.;
:ista de parmetros
namespaceUR0
,he namespace @R.;
Calores retornados
,he pre(iF o( the namespace;
Cer tambi%n
DOMNode2_loo"upNamespace@R.>?
KJMNode(Gnormali6e./
DOMNode2_normalize>? 22 Normalizes the node
Kescripci"n
class KJMNode \
void normali6e > void ?
]
Normalizes the node;
Calores retornados
No value is returned;
Cer tambi%n
DOMDocument2_normalize
>?
KJMNode(Gremo5eChild./
DOMNode2_remove5hild>? 22 Removes child (rom list o( children
Kescripci"n
class KJMNode \
DOMNode remo5eChild > DOMNode oldnode ?
]
,his (unctions removes a child (rom a list o( children;
:ista de parmetros
ol#no#e
,he removed child;
Calores retornados
.( the child could #e removed the (unctions returns the old child;
E+ceptions
DOM_NO_MODIFICATION_ALLO"ED_ERR
Raised i( this node is readonly;
DOM_NOT_FOUND
Raised i( ol#no#e is not a child o( this node;
E'emplos
,he (olloEing eFample Eill delete the chapter element o( our JML document;
E'emplo !. Memo5ing a child
<?php
$doc > ne8 L?"Locument;
$docF>load3MbooI.xmlM9;
$booI > $docF>documentElement;
// 8e retrie=e the chapter and remo=e it #rom the booI
$chapter > $booIF>EetElementsZy*aE.ame3MchapterM9F>item329;
$oldchapter > $booIF>remo=eRhild3$chapter9;
echo $docF>sa=eX"O39;
?>
+l resultado del e'emplo seriaC
<?xml =ersion>"6.2" encodinE>"isoFJJ5KF6"?>
<!L?R*PE booI +ZO4R "F//?,&4&//L*L LocZooI X"O (1.6.C//E." "http@//888.oasisFopen.orE/docbooI/xml/1.6.C/docbooIx.dtd">
<booI id>"listinE">
<title>"y lists</title>

</booI>
Cer tambi%n
DOMNode2_append5hild>?
DOMNode2_replace5hild>?
KJMNode(GreplaceChild./
DOMNode2_replace5hild>? 22 Replaces a child
Kescripci"n
class KJMNode \
DOMNode replaceChild > DOMNode neEnodeA DOMNode oldnode ?
]
,his (unction replaces the child ol#no#e Eith the passed neE node; .( the neE node is already a
child it Eill not #e added a second time; .( the replacement succeeds the old node is returned;
:ista de parmetros
ne7no#e
,he neE node;
ol#no#e
,he old node;
Calores retornados
,he old node or FALSE i( an error occur;
E+ceptions
DOM_NO_MODIFICATION_ALLO"ED_ERR
Raised i( this node is readonly or i( the previous parent o( the node #eing inserted is readonly;
DOM_HIERARCHY_RE.UEST_ERR
Raised i( this node is o( a type that does not alloE children o( the type o( the ne7no#e nodeA
or i( the node to put in is one o( this nodeHs ancestors or this node itsel(;
DOM_"RON#_DOCUMENT_ERR
Raised i( ne7no#e Eas created (rom a di((erent document than the one that created this node;
DOM_NOT_FOUND
Raised i( ol#no#e is not a child o( this node;
Cer tambi%n
DOMNode2_append5hild>?
DOMNode2_remove5hild
>?
KJMNodelist(Gitem./
DOMNodelist2_item>? 22 Retrieves a node speci(ied #y indeF
Kescripci"n
class KJMNode:ist \
DOMNode item > int indeF ?
]
Retrieves a node speci(ied #y 6n#e8 Eithin the KJMNode:ist o#'ect;
,ugerencia- .( you need to "noE the num#er o( nodes in the collectionA use the lenEth
property o( the KJMNode:ist o#'ect;
:ista de parmetros
6n#e8
.ndeF o( the node into the collection;
Calores retornados
,he node at the 6n#e8th position in the KJMNode:istA or NULL i( that is not a valid indeF;
E'emplos
E'emplo !. Tra5ersing all the entries of the table
<?php
$doc > ne8 L?"Locument;
$docF>load3MbooI.xmlM9;
$items > $docF>EetElementsZy*aE.ame3MentryM9;
#or 3$i > 2; $i < $itemsF>lenEth; $i[[9 :
echo $itemsF>item3$i9F>node(alue . "Vn";
;
?>
AlternativelyA you can use (oreachA Ehich is a much more convenient EayC
<?php
#oreach 3$items as $item9 :
echo $itemF>node(alue . "Vn";
;
?>
+l resultado del e'emplo seriaC
*itle
,uthor
OanEuaEe
4&Z.
*he -rapes o# 7rath
Aohn &teinbecI
en
26126JG12K
*he earl
Aohn &teinbecI
en
26126HH<HX
&amarcande
,mine "aalou#
#r
CC5<256C2K
KJMTe+t(Gis2hitespaceInElementContent./
DOM,eFt2_isLhitespace.n+lement5ontent>? 22 .ndicates Ehether this teFt node contains
Ehitespace
Kescripci"n
class KJMTe+t \
#ool is2hitespaceInElementContent > void ?
]
.ndicates Ehether this teFt node contains Ehitespace; ,he teFt node is determined to contain
Ehitespace in element content during the load o( the document;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
KJMTe+t(GsplitTe+t./
DOM,eFt2_split,eFt>? 22 Brea"s this node into tEo nodes at the speci(ied o((set
Kescripci"n
class KJMTe+t \
DOM,eFt splitTe+t > int o((set ?
]
Brea"s this node into tEo nodes at the speci(ied o99setA "eeping #oth in the tree as si#lings;
A(ter #eing splitA this node Eill contain all the content up to the o99set; .( the original node had a
parent nodeA the neE node is inserted as the neFt si#ling o( the original node; Lhen the o99set is
e/ual to the length o( this nodeA the neE node has no data;
:ista de parmetros
o99set
,he o((set at Ehich to splitA starting (rom 3;
Calores retornados
,he neE node o( the same typeA Ehich contains all the content at and a(ter the o99set;
KJMIPath(G>>construct./
DOMJPath2_ZZconstruct>? 22 5reates a neE DOMJPath o#'ect
Kescripci"n
class KJMIPath \
>>construct > DOMDocument doc ?
]
5reates a neE KJMIPath o#'ect;
:ista de parmetros
#oc
,he KJMKocument associated Eith the KJMIPath;
KJMIPath(Ge5aluate./
DOMJPath2_evaluate>? 22 +valuates the given JPath eFpression and returns a typed result i(
possi#le;
Kescripci"n
class KJMIPath \
miFed e5aluate > string eFpression PA DOMNode conteFtnodeQ ?
]
+Fecutes the given JPath e8press6on and returns a typed result i( possi#le;
:ista de parmetros
e8press6on
,he JPath eFpression to eFecute;
conte8tno#e
,he optional conte8tno#e can #e speci(ied (or doing relative JPath /ueries; By de(aultA the
/ueries are relative to the root element;
Calores retornados
Returns a typed result i( possi#le or a KJMNode:ist containing all nodes matching the given
JPath e8press6on;
E'emplos
E'emplo !. Fetting the count of all the english booBs
<?php
$doc > ne8 L?"Locument;
$docF>load3MbooI.xmlM9;
$xpath > ne8 L?"Xath3$doc9;
$tbody > $docF>EetElementsZy*aE.ame3MtbodyM9F>item329;
// our Query is relati=e to the tbody node
$Query > Mcount3ro8/entry). > "en"/9M;
$entries > $xpathF>e=aluate3$Query, $tbody9;
echo "*here are $entries enElish booIsVn";
?>
+l resultado del e'emplo seriaC
*here are C enElish booIs
Cer tambi%n
DOMJPath2_/uery>?
KJMIPath(G?uery./
DOMJPath2_/uery>? 22 +valuates the given JPath eFpression
Kescripci"n
class KJMIPath \
DOMNodeList ?uery > string eFpression PA DOMNode conteFtnodeQ ?
]
+Fecutes the given JPath e8press6on;
:ista de parmetros
e8press6on
,he JPath eFpression to eFecute;
conte8tno#e
,he optional conte8tno#e can #e speci(ied (or doing relative JPath /ueries; By de(aultA the
/ueries are relative to the root element;
Calores retornados
Returns a KJMNode:ist containing all nodes matching the given JPath e8press6on; Any
eFpression Ehich do not return nodes Eill return an empty KJMNode:ist;
E'emplos
E'emplo !. Fetting all the english booBs
<?php
$doc > ne8 L?"Locument;
// 7e donMt 8ant to bother 8ith 8hite spaces
$docF>preser=e7hite&pace > #alse;
$docF>Ooad3MbooI.xmlM9;
$xpath > ne8 L?"Xath3$doc9;
// 7e starts #rom the root element
$Query > M//booI/chapter/para/in#ormaltable/tEroup/tbody/ro8/entry). > "en"/M;
$entries > $xpathF>Query3$Query9;
#oreach 3$entries as $entry9 :
echo "Sound :$entryF>pre=ious&iblinEF>pre=ious&iblinEF>node(alue;," .
" by :$entryF>pre=ious&iblinEF>node(alue;Vn";
;
?>
+l resultado del e'emplo seriaC
Sound *he -rapes o# 7rath, by Aohn &teinbecI
Sound *he earl, by Aohn &teinbecI
Le can also use the conte8tno#e parameter to shorten our eFpressionC
<?php
$doc > ne8 L?"Locument;
$docF>preser=e7hite&pace > #alse;
$docF>load3MbooI.xmlM9;
$xpath > ne8 L?"Xath3$doc9;
$tbody > $docF>EetElementsZy*aE.ame3MtbodyM9F>item329;
// our Query is relati=e to the tbody node
$Query > Mro8/entry). > "en"/M;
$entries > $xpathF>Query3$Query, $tbody9;
#oreach 3$entries as $entry9 :
echo "Sound :$entryF>pre=ious&iblinEF>pre=ious&iblinEF>node(alue;," .
" by :$entryF>pre=ious&iblinEF>node(alue;Vn";
;
?>
Cer tambi%n
DOMJPath2_evaluate
>?
KJMIPath(GregisterNamespace./
DOMJPath2_registerNamespace>? 22 Registers the namespace Eith the DOMJpath o#'ect
Kescripci"n
class KJMIPath \
#ool registerNamespace > string pre(iFA string namespace@R. ?
]
Registers the namespaceUR0 and pre968 Eith the DOMJpath o#'ect;
:ista de parmetros
pre968
,he pre(iF;
namespaceUR0
,he @R. o( the namespace;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
dom>import>simple+ml
>P&P 4?
domZimportZsimpleFml 22 Gets a DOM+lement o#'ect (rom a impleJML+lement o#'ect
Kescripci"n
DOM+lement dom>import>simple+ml > impleJML+lement node ?
,his (unction ta"es the node no#e o( class impleJML and ma"es it into a KJMElement node;
,his neE o#'ect can then #e used as a native KJMElement node;
:ista de parmetros
no#e
,he ,impleIM:Element node;
Calores retornados
,he KJMElement node added or FALSE i( any errors occur;
E'emplos
E'emplo !. Import ,impleIM: into KJM 3ith dom>import>simple+ml./
<?php
$sxe > simplexml%load%strinE3M<booIs><booI><title>blah</title></booI></booIs>M9;
i# 3$sxe >>> #alse9 :
echo MError 8hile parsinE the documentM;
exit;
;
$dom%sxe > dom%import%simplexml3$sxe9;
i# 3!$dom%sxe9 :
echo MError 8hile con=ertinE X"OM;
exit;
;
$dom > ne8 L?"Locument3M6.2M9;
$dom%sxe > $domF>import.ode3$dom%sxe, true9;
$dom%sxe > $domF>appendRhild3$dom%sxe9;
echo $domF>sa=eX"O39;
?>
Cer tambi%n
simple+ml>import>dom
./
IICIII. ;unciones KJM IM:
Introducci"n
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
La eFtensi-n DOM JML ha sido re2estructurada en P&P 8;7;3 para mayor compati#ilidad con el
est*ndar DOM; La eFtensi-n aun contiene varias (unciones vie'asA pero ellas ya no de#en ser usadas;
+n particularA las (unciones /ue no son orientadas a o#'etos de#en evitarse;
La eFtensi-n le permite operar so#re un documento JML con la AP. DOM; ,am#i<n o(rece una
(unci-n dom+ml>+mltree./ para convertir el documento JML completo en un *r#ol de o#'etos
P&P; ActualmenteA este *r#ol de#e ser considerado como de s-lo2escritura 2 es posi#le modi(icarloA
pero tal cosa no tendr)a sentido ya /ue KomKocument>dump>mem./ no puede aplicarse so#re <l;
Por lo tantoA si desea leer un archivo JML y escri#ir una versi-n modi(icadaA use
KomKocument>create>element./A KomKocument>create>te+t>node./A set>attribute./A etc; y
(inalmente la (unci-n KomKocument>dump>mem./;
Nota- +sta eFtension ha sido /uitada a partir de P&P 4 y se puede encontrar en el
repositorio P+5L;
Nota- i necesita soporte DOM JML con P&P 4A puede usar la eFtensi-n DOM;
Me?uirimientos
+sta eFtensi-n hace uso de la #i#lioteca GNOM+ JML; Descargue e instale esta #i#lioteca;
Necesita por lo menos li#Fml20;8;18; Para usar las caracter)sticas DOM JL,A puede usar la
#i#lioteca li#Fslt y las adiciones +JL, de httpCDDEEE;eFslt;orgD; Descargue e instale estas
#i#liotecas si planea usar las caracter)sticas JL, >y las me'oras?; Necesita por lo menos li#Fslt2
1;3;1M;
Instalaci"n
+sta eFtension P+5L no esta ligada a P&P; Mas in(ormacion so#re nuevos lanzamientosA descargas
(icheros de (uentesA in(ormacion so#re los responsa#les asi como un H5&ANG+LOGHA se puede
encontrar a/uiC httpCDDpecl;php;netDpac"ageDdomFml;
+n P&P 8 la (uente de las eFtensiones P+5L pueden encontrarse en el directorio ext/ /ue se eFiste
en las (uentes de P&P o en el enlace P+5L de arri#a; +sta eFtensi-n se encuentra disponi#le
Bnicamente si P&P (ue con(igurado con ==76th=#om):D0R.; Agregue ==76th=#om=8slt):D0R. para
incluir soporte para DOM JL,; D.R es el directorio de instalaci-n de li#Fslt; Agregue ==76th=
#om=e8slt):D0R. para incluir soporte para DOM +JL,A en donde D.R es el directorio de
instalaci-n de li#eFslt;
Los usuarios de EindoEs de#en ha#ilitar php%domxml.dll al interior de php.ini para usar
estas (unciones; +n P&P 8A esta DLL se encuentra en el directorio extensions/ /ue eFiste en los
#inarios de P&P para LindoEs; Podeis descargar esta DLL de las eFtensiones P+5L desde la
pagina P&P DoEnloads o desde httpCDDsnaps;php;netD; AsimismoA hay una DLL adicional /ue de#e
estar disponi#le para su PA,& de sistema para /ue <sta eFtensi-n tra#a'e; +n P&P 8 esta ruta est*
en el directorio dlls/; u nom#reC Para P&P `^ 8;0;3A es libxmlC.dll; Para P&P _^ 8;7;3A es
icon=.dll; % a partir de P&P 4;3;3A iconv se encuentra compilado con sus #inarios LindoEs de
P&P por de(ectoA as) /ue no se necesitan archivos DLL adicionales;
;unciones obsoletas
+Fisten varias (unciones /ue no tienen lugar en el est*ndar DOM y no de#er)an seguir siendo
usadas; +stas (unciones son listadas en la siguiente ta#la; La (unci-n KomNode>append>child./ ha
cam#iado su comportamiento; Ahora agrega un hi'o y no un hermano; i esto a(ecta su aplicaci-nA
use la (unci-n KomNode>append>sibling./A la cual no hace parte del con'unto DOM;
Tabla !. ;unciones obsoletas y sus reempla6os
;unci"n antigua ;unci"n nue5a
Fmldoc dom+ml>open>mem./
Fmldoc(ile dom+ml>open>file./
domFmlZneEZFmldoc dom+ml>ne3>doc./
domFmlZdumpZmem KomKocument>dump>mem./
domFmlZdumpZmemZ(i
le
KomKocument>dump>file./
DomDocumentZdumpZ
memZ(ile
KomKocument>dump>file./
DomDocumentZaddZro
ot
KomKocument>create>element./ seguido por
KomNode>append>child./
DomDocumentZdtd KomKocument>doctype./
DomDocumentZroot KomKocument>document>element./
DomDocumentZchildre
n
KomNode>child>nodes./
DomDocumentZimport
edZnode
No hay reemplazo;
DomNodeZaddZchild
5rear un nuevo nodoA p;e'; con KomKocument>create>element./ y
agregarlo con KomNode>append>child./;
DomNodeZchildren KomNode>child>nodes./
DomNodeZparent KomNode>parent>node./
DomNodeZneEZchild
5rear un nuevo nodoA p;e'; con KomKocument>create>element./ y
agregarlo con KomNode>append>child./;
DomNodeZsetZcontent
5rear un nuevo nodoA p;e'; con KomKocument>create>te+t>node./ y
agregarlo con KomNode>append>child./;
DomNodeZgetZcontent
+l contenido es solo un nodo de teFto y puede consultarse con
KomNode>child>nodes./;
;unci"n antigua ;unci"n nue5a
DomNodeZsetZcontent
+l contenido es solo un nodo de teFto y puede ser agregado con
KomNode>append>child./;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
Tabla *. Constantes IM:
Constante
Calo
r
Kescripci"n
%ML_ELEMENT_NODE >integer? 1 +l nodo es un elemento
%ML_ATTRI(UTE_NODE >integer? 0 +l nodo es un atri#uto
%ML_TE%T_NODE >integer? 7 +l nodo es un segmento de teFto
%ML_CDATA_SECTION_NODE >integer? 8
%ML_ENTITY_REF_NODE >integer? 4
%ML_ENTITY_NODE >integer? K +l nodo es una entidad como in#spX
%ML_PI_NODE >integer? :
+l nodo es una instrucci-n de
procesamiento
%ML_COMMENT_NODE >integer? M +l nodo es un comentario
%ML_DOCUMENT_NODE >integer? 9 +l nodo es un documento
%ML_DOCUMENT_TYPE_NODE >integer? 13
%ML_DOCUMENT_FRA#_NODE >integer? 11
%ML_NOTATION_NODE >integer? 10
%ML_#LO(AL_NAMESPACE >integer? 1
%ML_LOCAL_NAMESPACE >integer? 0
%ML_HTML_DOCUMENT_NODE >integer?
%ML_DTD_NODE >integer?
%ML_ELEMENT_DECL_NODE >integer?
%ML_ATTRI(UTE_DECL_NODE >integer?
%ML_ENTITY_DECL_NODE >integer?
%ML_NAMESPACE_DECL_NODE >integer?
%ML_ATTRI(UTE_CDATA >integer?
%ML_ATTRI(UTE_ID >integer?
%ML_ATTRI(UTE_IDREF >integer?
%ML_ATTRI(UTE_IDREFS >integer?
%ML_ATTRI(UTE_ENTITY >integer?
Constante
Calo
r
Kescripci"n
%ML_ATTRI(UTE_NMTO&EN >integer?
%ML_ATTRI(UTE_NMTO&ENS >integer?
%ML_ATTRI(UTE_ENUMERATION >integer?
%ML_ATTRI(UTE_NOTATION >integer?
%PATH_UNDEFINED >integer?
%PATH_NODESET >integer?
%PATH_(OOLEAN >integer?
%PATH_NUM(ER >integer?
%PATH_STRIN# >integer?
%PATH_POINT >integer?
%PATH_RAN#E >integer?
%PATH_LOCATIONSET >integer?
%PATH_USERS >integer?
%PATH_NUM(ER >integer?
Clases
La AP. del m-dulo sigue el est*ndar DOM de Nivel 0 tan (ielmente como es posi#le; Por
consiguienteA la AP. es completamente orientada a o#'etos; +s una #uena idea tener el est*ndar
DOM a la mano cuando se usa este m-dulo; Aun/ue la AP. es orientada a o#'etosA eFisten varias
(unciones /ue pueden ser llamadas en una (orma no orientada a o#'etosA pasando el o#'eto so#re el
/ue de#e operarse como primer argumento; +stas (unciones eFisten principalmente para conservar
la compati#ilidad con versiones anteriores de esta eFtensi-nA y no de#er)an ser usadas cuando se
creen nuevos scripts;
+sta AP. di(iere de la AP. DOM o(icial en dos (ormas; PrimeroA todos los atri#utos de clase son
implementados como (unciones con el mismo nom#re; +n segundo lugarA los nom#res de (unciones
siguen la convenci-n de nom#res de P&P; esto /uiere decir /ue una (unci-n DOM llamada
last5hild>? ser* escrita como lastZchild>?;
+ste m-dulo de(ine un nBmero de clasesA /ue son listados 2 incluyendo sus m<todos 2 en las
siguientes ta#las; Las clases con un Walente en el est*ndar DOM son llamadas DOMFFF;
Tabla 7. :ista de clases
Nombre de clase Clases padre
DomAttri#ute DomNode
Dom5Data DomNode
Dom5omment Dom5Data C DomNode
DomDocument DomNode
DomDocument,ype DomNode
Nombre de clase Clases padre
Dom+lement DomNode
Dom+ntity DomNode
Dom+ntityRe(erence DomNode
DomProcessing.nstructi
on
DomNode
Dom,eFt Dom5Data C DomNode
Parser
Por el momento aun se llama
DomParser
JPath5onteFt
Tabla 8. Clase KomKocument .KomKocument - KomNode/
Nombre de m%todo Nombre de funci"n Anotaci"n
doctype KomKocument>doctype./
documentZelement KomKocument>document>element./
createZelement KomKocument>create>element./
createZteFtZnode KomKocument>create>te+t>node./
createZcomment KomKocument>create>comment./
createZcdataZsection KomKocument>create>cdata>section./
createZprocessingZinstru
ction
KomKocument>create>processing>instr
uction./

createZattri#ute KomKocument>create>attribute./
createZentityZre(erence
KomKocument>create>entity>reference
./

getZelementsZ#yZtagna
me
KomKocument>get>elements>by>tagna
me./

getZelementZ#yZid KomKocument>get>element>by>id./
dumpZmem KomKocument>dump>mem./
no hace parte del est*ndar
DOM
dumpZ(ile KomKocument>dump>file./
no hace parte del est*ndar
DOM
htmlZdumpZmem KomKocument>html>dump>mem./
no hace parte del est*ndar
DOM
FpathZinit FpathZinit
no hace parte del est*ndar
DOM
FpathZneEZconteFt FpathZneEZconteFt
no hace parte del est*ndar
DOM
FptrZneEZconteFt FptrZneEZconteFt
no hace parte del est*ndar
DOM
Tabla 9. Clase KomElement .KomElement - KomNode/
Nombre de m%todo Nombre de funci"n
Anotaci"
n
tagname KomElement>tagname./
getZattri#ute KomElement>get>attribute./
setZattri#ute KomElement>set>attribute./
removeZattri#ute KomElement>remo5e>attribute./
getZattri#uteZnode KomElement>get>attribute>node./
getZelementsZ#yZtagna
me
KomElement>get>elements>by>tagname
./

hasZattri#ute KomElement>has>attribute./
Tabla <. KomNode class
Nombre de m%todo Anotaci"n
KomNode>node>nam
e./

KomNode>node>5alu
e./

KomNode>node>type
./

KomNode>last>child
./

KomNode>first>child
./

KomNode>child>node
s./

KomNode>pre5ious>s
ibling./

KomNode>ne+t>siblin
g./

KomNode>parent>no
de./

KomNode>o3ner>doc
ument./

KomNode>insert>bef
ore./

KomNode>append>ch
ild./

KomNode>append>si
bling./
No se encuentra en el est*ndar DOM; +sta (unci-n emula el
comportamiento antiguo de KomNode>append>child./;
KomNode>remo5e>ch
ild./

KomNode>has>child>
nodes./

Nombre de m%todo Anotaci"n
KomNode>has>attrib
utes./

KomNode>clone>nod
e./

KomNode>attributes
./

KomNode>unlinB>no
de./
No se encuentra en el est*ndar DOM
KomNode>replace>no
de./
No se encuentra en el est*ndar DOM
KomNode>set>conten
t./
No se encuentra en el est*ndar DOMA o#soleta
KomNode>get>conten
t./
No se encuentra en el est*ndar DOMA o#soleta
KomNode>dump>nod
e./
No se encuentra en el est*ndar DOM
KomNode>is>blanB>n
ode./
No se encuentra en el est*ndar DOM
Tabla =. Clase KomAttribute .KomAttribute - KomNode/
Nombre de
m%todo

Anotaci"
n
name KomAttribute>name./
value KomAttribute>5alue./
speci(ied
KomAttribute>specified
./

Tabla N. Clase KomProcessingInstruction .KomProcessingInstruction - KomNode/
Nombre de
m%todo
Nombre de funci"n
Anotaci"
n
target
KomProcessingInstruction>target
./

data KomProcessingInstruction>data./
Tabla O. Clase Parser
Nombre de
m%todo
Nombre de funci"n
Anotaci"
n
addZchun"
Parser>add>chunB
./

end Parser>end./
Tabla !D. Clase IPathConte+t
Nombre de
m%todo
Nombre de funci"n
Anotaci"
n
eval IPathConte+t>e5al./
evalZeFpression
IPathConte+t>e5al>e+pression
./

registerZns IPathConte+t>register>ns./
Tabla !!. Clase KomKocumentType .KomKocumentType - KomNode/
Nombre de
m%todo
Nombre de funci"n
Anotaci"
n
name KomKocumentType>name./
entities KomKocumentType>entities./
notations KomKocumentType>notations./
pu#licZid KomKocumentType>public>id./
systemZid KomKocumentType>system>id./
internalZsu#set
KomKocumentType>internal>subset
./

La clase DomDtd es derivada de DomNode; Dom5omment es derivada de Dom5Data;
E'emplos
$arios e'emplos en esta re(erencia re/uieren una cadena JML; +n lugar de repetir esta cadena en
cada e'emploA ser* puesta en un archivo el cual ser* incluido en cada e'emplo; +ste archivo de
inclusi-n es mostrado en la siguiente secci-n de e'emplo; AlternativamenteA es posi#le crear un
documento JML y leerlo con KomKocument>open>file./;
E'emplo !. Archi5o de inclusi"n e'emplo.inc con una cadena IM:
<?php
$cadena%xml > "<?xml =ersion>M6.2M standalone>MyesM?>
<!L?R*PE chapter &P&*E" M/share/sEml/.orman%7alsh/db<xml62/db<xml62.dtdM
) <!E.*4*P sp V"spanishV">
/>
<!FF ls#j FF>
<chapter lanEuaEe>MenM><title lanEuaEe>MenM>*itle</title>
<para lanEuaEe>MEeM>
&amp;sp;
<!FF comment FF>
<in#ormaltable 4L>M#indmeM lanEuaEe>M&amp;sp;M>
<tEroup cols>M<M>
<tbody>
<ro8><entry>a6</entry><entry
morero8s>M6M>b6</entry><entry>c6</entry></ro8>
<ro8><entry>aC</entry><entry>cC</entry></ro8>
<ro8><entry>a<</entry><entry>b<</entry><entry>c<</entry></ro8>
</tbody>
</tEroup>
</in#ormaltable>
</para>
</chapter>";
?>
Tabla de contenidos
DomAttri#ute2_name 22 Devuelve el nom#re de un atri#uto
DomAttri#ute2_speci(ied 22 Revisa si el atri#uto est* especi(icado
DomAttri#ute2_value 22 Devuelve el valor del atri#uto
DomDocument2_addZroot 22 Agrega un nodo ra)z Po#soletoQ
DomDocument2_createZattri#ute 22 5rear un nuevo atri#uto
DomDocument2_createZcdataZsection 22 5rear un nuevo nodo cdata
DomDocument2_createZcomment 22 5rea un nuevo nodo de comentario
DomDocument2_createZelementZns 22 5rea un nuevo nodo tipo elemento con un espacio de
nom#res asociado
DomDocument2_createZelement 22 5rear un nuevo nodo de tipo elemento
DomDocument2_createZentityZre(erence 22
DomDocument2_createZprocessingZinstruction 22 5rea un nuevo nodo P.
DomDocument2_createZteFtZnode 22 5rear un nuevo nodo de teFto
DomDocument2_doctype 22 Devuelve el tipo de documento
DomDocument2_documentZelement 22 Devuelve el nodo del elemento ra)z
DomDocument2_dumpZ(ile 22 $uelca el *r#ol JML interno de vuelta a un archivo
DomDocument2_dumpZmem 22 $uelca el *r#ol JML interno de vuelta a una cadena
DomDocument2_getZelementZ#yZid 22 Busca un elemento con cierto id
DomDocument2_getZelementsZ#yZtagname 22
DomDocument2_htmlZdumpZmem 22 $uelca el *r#ol JML interno de vuelta a una cadena como
&,ML
DomDocument2_Finclude 22 Reemplaza sentencias J.nclude en un O#'eto DomDocument
DomDocument,ype2_entities 22 Devuelve una lista de entidades
DomDocument,ype2_internalZsu#set 22 Devuelve el su#2con'unto interno
DomDocument,ype2_name 22 Devuelve el nom#re del tipo de documento
DomDocument,ype2_notations 22 Devuelve una lista de notaciones
DomDocument,ype2_pu#licZid 22 Devuelve el id pB#lico del tipo de documento
DomDocument,ype2_systemZid 22 Devuelve el id de sistema del tipo de documento
Dom+lement2_getZattri#uteZnode 22 Devuelve el nodo del atri#uto dado
Dom+lement2_getZattri#ute 22 Devuelve el valor del atri#uto dado
Dom+lement2_getZelementsZ#yZtagname 22 O#tiene elementos por el nom#re de eti/ueta
Dom+lement2_hasZattri#ute 22 $eri(ica si un atri#uto eFiste en el nodo actual
Dom+lement2_removeZattri#ute 22 +limina un atri#uto
Dom+lement2_setZattri#ute 22 De(ine el valor de un atri#uto
Dom+lement2_tagname 22 Devuelve el nom#re del elemento actual
DomNode2_addZnamespace 22 Agrega una declaraci-n de espacio de nom#res a un nodo
DomNode2_appendZchild 22 Agrega un nuevo hi'o al (inal del grupo de hi'os
DomNode2_appendZsi#ling 22 Agrega un nuevo hermano a un nodo
DomNode2_attri#utes 22 Devuelve la lista de atri#utos
DomNode2_childZnodes 22 Devuelve los hi'os del nodo
DomNode2_cloneZnode 22 5lona un nodo
DomNode2_dumpZnode 22 $uelca un nodo Bnico
DomNode2_(irstZchild 22 Devuelve el primer hi'o del nodo
DomNode2_getZcontent 22 O#tiene el contenido del nodo
DomNode2_hasZattri#utes 22 $eri(ica si un nodo tiene atri#utos
DomNode2_hasZchildZnodes 22 $eri(ica si el nodo tiene hi'os
DomNode2_insertZ#e(ore 22 .nserta un nodo nuevo como hi'o
DomNode2_isZ#lan"Znode 22 $eri(ica si el nodo est* en #lanco
DomNode2_lastZchild 22 Devuelve el Bltimo hi'o del nodo
DomNode2_neFtZsi#ling 22 Devuelve el siguiente hermano del nodo
DomNode2_nodeZname 22 Devuelve el nom#re del nodo
DomNode2_nodeZtype 22 Devuelve el tipo de nodo
DomNode2_nodeZvalue 22 Devuelve el valor de un nodo
DomNode2_oEnerZdocument 22 Devuelve el documento al /ue este nodo pertenece
DomNode2_parentZnode 22 Devuelve el padre del nodo
DomNode2_pre(iF 22 Devuelve el pre(i'o de espacio de nom#res del nodo
DomNode2_previousZsi#ling 22 Devuelve el hermano anterior del nodo
DomNode2_removeZchild 22 +limina un hi'o de una lista de hi'os
DomNode2_replaceZchild 22 Reemplaza un hi'o
DomNode2_replaceZnode 22 Reemplaza el nodo
DomNode2_setZcontent 22 De(ine el contenido del nodo
DomNode2_setZname 22 De(ine el nom#re del nodo
DomNode2_setZnamespace 22 De(ine el espacio de nom#res de un nodo
DomNode2_unlin"Znode 22 +limina el nodo
DomProcessing.nstruction2_data 22 Devuelve los datos de un nodo pi
DomProcessing.nstruction2_target 22 Devuelve el destino de un nodo pi
DomJslttylesheet2_process 22 Aplica la ,rans(ormaci-n JL, so#re un o#'eto DomDocument
DomJslttylesheet2_resultZdumpZ(ile 22 $uelca el resultado de una ,rans(ormaci-n JL, a un
archivo
DomJslttylesheet2_resultZdumpZmem 22 $uelca el resultado de una ,rans(ormaci-n JL, de
vuelta a una cadena
domFmlZneEZdoc 22 5rea un nuevo documento JML vac)o
domFmlZopenZ(ile 22 5rea un o#'eto DOM a partir de un archivo JML
domFmlZopenZmem 22 5rea un o#'eto DOM desde un documento JML
domFmlZversion 22 O#tiene la versi-n de la #i#lioteca JML
domFmlZFmltree 22 5rea un *r#ol de o#'etos P&P a partir de un documento JML
domFmlZFsltZstylesheetZdoc 22 5rea un O#'eto DomJslttylesheet a partir de un O#'eto
DomDocument
domFmlZFsltZstylesheetZ(ile 22 5rea un O#'eto DomJslttylesheet a partir de un documento JL
en un archivo
domFmlZFsltZstylesheet 22 5rea un O#'eto DomJslttylesheet desde un documento JML en una
cadena
FpathZevalZeFpression 22 +valBa la Ruta de @#icaci-n JPath en la cadena entregada
FpathZeval 22 +valBa la Ruta de @#icaci-n JPatch en la cadena dada
FpathZneEZconteFt 22 5rea un nuevo conteFto Fpath
FptrZeval 22 +valBa la Ruta de @#icaci-n JPtr en la cadena dada
FptrZneEZconteFt 22 5rea un nuevo 5onteFto JPath
KomAttribute(Gname
>no version in(ormationA might #e only in 5$?
DomAttri#ute2_name 22 Devuelve el nom#re de un atri#uto
Kescripci"n
string KomAttribute(Gname > void ?
+sta (unci-n devuelve el nom#re del atri#uto;
$ea tam#i<n domattribute>5alue./ para encontrar un e'emplo;
KomAttribute(Gspecified
>no version in(ormationA might #e only in 5$?
DomAttri#ute2_speci(ied 22 Revisa si el atri#uto est* especi(icado
Kescripci"n
#ool KomAttribute(Gspecified > void ?
Revise el est*ndar DOM para una eFplicaci-n detallada;
KomAttribute(G5alue
>no version in(ormationA might #e only in 5$?
DomAttri#ute2_value 22 Devuelve el valor del atri#uto
Kescripci"n
miFed KomAttribute(G5alue > void ?
+sta (unci-n devuelve el valor del atri#uto;
E'emplo !. Jbtener todos los atributos de un nodo
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute; un error al interpretar el documentoVn";
exit;
;
$rai0 > $domF>document%element39;
$atrs > $rai0F>attributes39;
echo M,tributos de M . $rai0F>node%name39 . "Vn";
#oreach 3$atrs as $atributo9 :
echo M F M . $atributoF>name . M @ M . $attributeF>=alue . "Vn";
;
?>
+l resultado del e'emplo seriaC
,tributos de chapter
F lanEuaEe @ en
$ea tam#i<n domattribute>name./;
KomKocument(Gadd>root
>no version in(ormationA might #e only in 5$?
DomDocument2_addZroot 22 Agrega un nodo ra)z Po#soletoQ
Kescripci"n
o#'ect KomKocument(Gadd>root > string nom#re ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Agrega un nodo de elemento ra)z a un documento dom y devuelve el nuevo nodo; +l nom#re del
elemento es dado en el par*metro pasado;
E'emplo !. Creaci"n de una cabecera para un documento HTM: simple
<?php
$doc > domxml%ne8%doc3"6.2"9;
$rai0 > $docF>add%root3"html"9;
$cabecera > $rai0F>ne8%child3"head", ""9;
$cabeceraF>ne8%child3"title", "Hier der *itel"9;
echo htmlentities3$docF>dump%mem399;
?>
KomKocument(Gcreate>attribute
>no version in(ormationA might #e only in 5$?
DomDocument2_createZattri#ute 22 5rear un nuevo atri#uto
Kescripci"n
o#'ect KomKocument(Gcreate>attribute > string nom#reA string valor ?
+sta (unci-n devuelve una nueva instancia de clase KomAttribute; +l nom#re del atri#uto es el
valor del primer par*metro; +l valor del atri#uto es el valor del segundo par*metro; +ste nodo no
sera mostrado en el documento a no ser /ue sea introducido por e'emplo con
domnode>append>child./;
+l valor de retorno es FALSE si ocurre un error;
$ea tam#i<n domnode>append>child./A domdocument>create>element./A
domdocument>create>te+t./A domdocument>create>cdata>section./A
domdocument>create>processing>instruction./A domdocument>create>entity>reference./A y
domnode>insert>before./;
KomKocument(Gcreate>cdata>section
>no version in(ormationA might #e only in 5$?
DomDocument2_createZcdataZsection 22 5rear un nuevo nodo cdata
Kescripci"n
o#'ect KomKocument(Gcreate>cdata>section > string contenido ?
+sta (unci-n devuelve una nueva instancia de la clase KomCKata; +l contenido cdata es el valor
del par*metro pasado; +ste nodo no sera mostrado en el documento a no ser /ue sea introducido por
e'emplo con domnode>append>child./;
+l valor de retorno es FALSE si ocurre un error;
$ea tam#i<n domnode>append>child./A domdocument>create>element./A
domdocument>create>te+t./A domdocument>create>attribute./A
domdocument>create>processing>instruction./A domdocument>create>entity>reference./A y
domnode>insert>before./;
KomKocument(Gcreate>comment
>no version in(ormationA might #e only in 5$?
DomDocument2_createZcomment 22 5rea un nuevo nodo de comentario
Kescripci"n
o#'ect KomKocument(Gcreate>comment > string contenido ?
+sta (unci-n devuelve una nueva instancia de la clase KomComment; +l contenido del comentario
es el valor del par*metro pasado; +ste nodo no sera mostrado en el documento a no ser /ue sea
introducido por e'emplo con domnode>append>child./;
+l valor de retorno es FALSE si ocurre un error;
$ea tam#i<n domnode>append>child./A domdocument>create>element./A
domdocument>create>te+t./A domdocument>create>attribute./A
domdocument>create>processing>instruction./A domdocument>create>entity>reference./A y
domnode>insert>before./;
KomKocument(Gcreate>element>ns
>no version in(ormationA might #e only in 5$?
DomDocument2_createZelementZns 22 5rea un nuevo nodo tipo elemento con un espacio de
nom#res asociado
Kescripci"n
o#'ect KomKocument(Gcreate>element>ns > string uriA string nom#re PA string pre(i'oQ ?
+sta (unci-n devuelve una nueva instancia de la clase KomElement; +l nom#re de eti/ueta del
elemento es el valor del par*metro nom1re pasado; +l @R. del espacio de nom#res es el valor del
par*metro ur6 pasado; i ya eFiste una declaraci-n de espacio de nom#res con la misma uri en el
nodo ra)z del documentoA el pre(i'o de <ste es tomadoA de lo contrario tomar* el /ue se provee en el
par*metro opcional pre96Uo o genera uno aleatorio; +ste nodo no sera mostrado en el documento a no
ser /ue sea introducido por e'emplo con domnode>append>child./;
+l valor de retorno es FALSE si ocurre un error;
$ea tam#i<n domdocument>create>element>ns./A domnode>add>namespace./A
domnode>set>namespace./A domnode>append>child./A domdocument>create>te+t./A
domdocument>create>comment./A domdocument>create>attribute./A
domdocument>create>processing>instruction./A domdocument>create>entity>reference./A y
domnode>insert>before./;
KomKocument(Gcreate>element
>no version in(ormationA might #e only in 5$?
DomDocument2_createZelement 22 5rear un nuevo nodo de tipo elemento
Kescripci"n
o#'ect KomKocument(Gcreate>element > string nom#re ?
+sta (unci-n devuelve una nueva instancia de la clase KomElement; +l nom#re de la eti/ueta del
elemento es el valor del par*metro pasado; +ste nodo no sera mostrado en el documento a no ser
/ue sea introducido por e'emplo con domnode>append>child./;
+l valor de retorno es FALSE si ocurre un error;
$ea tam#i<n domdocument>create>element>ns./A domnode>append>child./A
domdocument>create>te+t./A domdocument>create>comment./A
domdocument>create>attribute./A domdocument>create>processing>instruction./A
domdocument>create>entity>reference./A y domnode>insert>before./;
KomKocument(Gcreate>entity>reference
>no version in(ormationA might #e only in 5$?
DomDocument2_createZentityZre(erence 22
Kescripci"n
o#'ect KomKocument(Gcreate>entity>reference > string contenido ?
+sta (unci-n devuelve una nueva instancia de la clase KomEntityMeference; +l contenido de la
re(erencia a entidad es el valor del par*metro pasado; +ste nodo no sera mostrado en el documento a
no ser /ue sea introducido por e'emplo con domnode>append>child./;
+l valor de retorno es FALSE si ocurre un error;
$ea tam#i<n domnode>append>child./A domdocument>create>element./A
domdocument>create>te+t./A domdocument>create>cdata>section./A
domdocument>create>processing>instruction./A domdocument>create>attribute./A y
domnode>insert>before./;
KomKocument(
Gcreate>processing>instruction
>no version in(ormationA might #e only in 5$?
DomDocument2_createZprocessingZinstruction 22 5rea un nuevo nodo P.
Kescripci"n
o#'ect KomKocument(Gcreate>processing>instruction > string contenido ?
+sta (unci-n devuelve una nueva instancia de la clase KomCKata; +l contenido de la instrucci-n de
procesamiento es el valor del par*metro pasado; +ste nodo no sera mostrado en el documento a no
ser /ue sea introducido por e'emplo con domnode>append>child./;
+l valor de retorno es FALSE si ocurre un error;
$ea tam#i<n domnode>append>child./A domdocument>create>element./A
domdocument>create>te+t./A domdocument>create>cdata>section./A
domdocument>create>attribute./A domdocument>create>entity>reference./A y
domnode>insert>before./;
KomKocument(Gcreate>te+t>node
>no version in(ormationA might #e only in 5$?
DomDocument2_createZteFtZnode 22 5rear un nuevo nodo de teFto
Kescripci"n
o#'ect KomKocument(Gcreate>te+t>node > string contenido ?
+sta (unci-n devuelve una nueva instancia de la clase KomTe+t; +l contenido del teFto es el valor
del par*metro pasado; +ste nodo no sera mostrado en el documento a no ser /ue sea introducido por
e'emplo con domnode>append>child./;
+l valor de retorno es FALSE si ocurre un error;
$ea tam#i<n domnode>append>child./A domdocument>create>element./A
domdocument>create>comment./A domdocument>create>te+t./A
domdocument>create>attribute./A domdocument>create>processing>instruction./A
domdocument>create>entity>reference./A y domnode>insert>before./;
KomKocument(Gdoctype
>no version in(ormationA might #e only in 5$?
DomDocument2_doctype 22 Devuelve el tipo de documento
Kescripci"n
o#'ect KomKocument(Gdoctype > void ?
+sta (unci-n devuelve un o#'eto de la clase KomKocumentType; +n versiones de P&P anteriores a
8;7A esta era la clase KtdA pero el est*ndar DOM no conoce tal clase;
$ea tam#i<n los m<todos de la clase KomKocumentType;
KomKocument(Gdocument>element
>no version in(ormationA might #e only in 5$?
DomDocument2_documentZelement 22 Devuelve el nodo del elemento ra)z
Kescripci"n
o#'ect KomKocument(Gdocument>element > void ?
+sta (unci-n devuelve el nodo de elemento ra)z de un documento;
+l siguiente e'emplo devuelve tan solo el elemento con nom#re 5&AP,+R y lo imprime; +l otro
nodo 22 el comentario 22 no es devuelto;
E'emplo !. Mecuperar el elemento ra6
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "Ha ocurrido un error al procesar el documentoVn";
exit;
;
$rai0 > $domF>document%element39;
print%r3$rai09;
?>
+sto producir* la salidaC
domelement ?bject
3
)type/ >> 6
)taEname/ >> chapter
)2/ >> G
)6/ >> 6<HKG2G1J
9
KomKocument(Gdump>file
>no version in(ormationA might #e only in 5$?
DomDocument2_dumpZ(ile 22 $uelca el *r#ol JML interno de vuelta a un archivo
Kescripci"n
string KomKocument(Gdump>file > string nom#reZarchivo PA #ool modoZcompresion PA #ool
(ormatoQQ ?
5rea un documento JML desde la representaci-n dom; +sta (unci-n es llamada por lo general
despu<s de construir un nuevo documento dom desde ceros como en el e'emplo a continuaci-n; +l
9ormato especi(ica si la salida de#e tener un (ormato eleganteA o no; +l primer par*metro especi(ica
el nom#re del archivo y el segundo par*metroA si de#e comprimirse o no;
E'emplo !. Creaci"n de una cabecera de un documento HTM: simple
<?php
$doc > domxml%ne8%doc3"6.2"9;
$rai0 > $docF>create%element3"H*"O"9;
$rai0 > $docF>append%child3$rai09;
$cabecera > $docF>create%element3"HE,L"9;
$cabecera > $rai0F>append%child3$cabecera9;
$titulo > $docF>create%element3"*4*OE"9;
$titulo > $cabeceraF>append%child3$titulo9;
$texto > $docF>create%text%node3"Este es el t&iacute;tulo"9;
$texto > $tituloF>append%child3$texto9;
$docF>dump%#ile3"/tmp/prueba.xml", #alse, true9;
?>
$ea tam#i<n domdocument>dump>mem./A y domdocument>html>dump>mem./;
KomKocument(Gdump>mem
>no version in(ormationA might #e only in 5$?
DomDocument2_dumpZmem 22 $uelca el *r#ol JML interno de vuelta a una cadena
Kescripci"n
string KomKocument(Gdump>mem > P#ool (ormato PA string codi(icacionQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
5rea un documento JML desde la representaci-n dom; +sta (unci-n es llamada por lo general
despu<s de construir un nuevo documento dom desde ceros como en el e'emplo a continuaci-n; +l
9ormato especi(ica si la salida de#e tener un (ormato eleganteA o no;
E'emplo !. Creaci"n de una cabecera de un documento HTM: simple
<?php
$doc > domxml%ne8%doc3"6.2"9;
$rai0 > $docF>create%element3"H*"O"9;
$rai0 > $docF>append%child3$rai09;
$cabecera > $docF>create%element3"HE,L"9;
$cabecera > $rai0F>append%child3$cabecera9;
$titulo > $docF>create%element3"*4*OE"9;
$titulo > $cabeceraF>append%child3$titulo9;
$texto > $docF>create%text%node3"*his is the title"9;
$texto > $tituloF>append%child3$texto9;
echo "<'E>";
echo htmlentities3$docF>dump%mem3true99;
echo "</'E>";
?>
Nota- +l primer par*metro (ue agregado en P&P 8;7;3;
$ea tam#i<n domdocument>dump>file./A y domdocument>html>dump>mem./;
KomKocument(Gget>element>by>id
>no version in(ormationA might #e only in 5$?
DomDocument2_getZelementZ#yZid 22 Busca un elemento con cierto id
Kescripci"n
o#'ect KomKocument(Gget>element>by>id > string id ?
+sta (unci-n es similar a domdocument>get>elements>by>tagname./A pero #usca un elemento con
un id dado; De acuerdo al est*ndar DOMA esto re/uiere un D,D /ue de(ina el atri#uto .D como de
tipo .DA aun/ue la implementaci-n actual simplemente realiza una #Bs/ueda Fpath por =DDVPG.D ^
HbsHQ=; +sto no es (iel al est*ndar DOMA el cual re/uiere /ue se devuelva un valor nulo si no se
conoce cu*l atri#uto es de tipo id; +s pro#a#le /ue este comportamiento sea corregidoA de modo /ue
no depende del modo /ue opera ahora;
$ea tam#i<n domdocument>get>elements>by>tagname./
KomKocument(Gget>elements>by>tagname
>no version in(ormationA might #e only in 5$?
DomDocument2_getZelementsZ#yZtagname 22
Kescripci"n
array KomKocument(Gget>elements>by>tagname > string nom#re ?
$ea tam#i<n domdocument>add>root./
KomKocument(Ghtml>dump>mem
>no version in(ormationA might #e only in 5$?
DomDocument2_htmlZdumpZmem 22 $uelca el *r#ol JML interno de vuelta a una cadena como
&,ML
Kescripci"n
string KomKocument(Ghtml>dump>mem > void ?
5rea un documento &,ML para la representaci-n dom; Por lo generalA esta (unci-n es llamada
despu<s de construier un nuevo documento dom desde cerosA como en el siguiente e'emplo;
E'emplo !. Creaci"n de una cabecera de documento HTM: simple
<?php
// Rrea el documento
$doc > domxml%ne8%doc3"6.2"9;
$rai0 > $docF>create%element3"html"9;
$rai0 > $docF>append%child3$rai09;
$cabecera > $docF>create%element3"head"9;
$cabecera > $rai0F>append%child3$cabecera9;
$titulo > $docF>create%element3"title"9;
$titulo > $cabeceraF>append%child3$titulo9;
$texto > $docF>create%text%node3"*his is the title"9;
$texto > $tituloF>append%child3$texto9;
echo $docF>html%dump%mem39;
?>
+l resultado del e'emplo seriaC
<html><head><title>*his is the title</title></head></html>
$ea tam#i<n domdocument>dump>file./A y domdocument>html>dump>mem./;
KomKocument(G+include
>no version in(ormationA might #e only in 5$?
DomDocument2_Finclude 22 Reemplaza sentencias J.nclude en un O#'eto DomDocument
Kescripci"n
int KomKocument(G+include > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
+sta (unci-n reemplaza elementos J.nclude en un o#'eto DomDocument;
E'emplo !. ,ustituci"n
<?php
// include.xml contiene @
// <child>prueba</child>
$xml > M<?xml =ersion>"6.2"?>
<root xmlns@xi>"http@//888.8<.orE/C226/X4nclude">
<xi@include hre#>"include.xml">
<xi@#allbacI>
<error>xinclude@ no se encontr&oacute; include.xml</error>
</xi@#allbacI>
</xi@include>
</root>M;
$domxml > domxml%open%mem3$xml9;
$domxmlF>xinclude39;
echo $domxmlF>dump%mem39;
?>
+l resultado del e'emplo seriaC
<?xml =ersion>"6.2"?>
<root xmlns@xi>"http@//888.8<.orE/C226/X4nclude">
<child>prueba</child>
</root>
i include.xml no eFisteA usted ver*C
<?xml =ersion>"6.2"?>
<root xmlns@xi>"http@//888.8<.orE/C226/X4nclude">
<error>xinclude@ no se encontr&oacute; include.xml</error>
</root>
KomKocumentType(Gentities
>no version in(ormationA might #e only in 5$?
DomDocument,ype2_entities 22 Devuelve una lista de entidades
Kescripci"n
array KomKocumentType(Gentities > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KomKocumentType(Ginternal>subset
>no version in(ormationA might #e only in 5$?
DomDocument,ype2_internalZsu#set 22 Devuelve el su#2con'unto interno
Kescripci"n
#ool KomKocumentType(Ginternal>subset > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KomKocumentType(Gname
>no version in(ormationA might #e only in 5$?
DomDocument,ype2_name 22 Devuelve el nom#re del tipo de documento
Kescripci"n
string KomKocumentType(Gname > void ?
+sta (unci-n devuelve el nom#re del tipo de documento;
E'emplo !. Jbtener el nombre del tipo de documento
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute; un error al interpretar el documentoVn";
exit;
;
$tipo%doc > $domF>doctype39;
echo $tipo%docF>name39; // chapter
?>
KomKocumentType(Gnotations
>no version in(ormationA might #e only in 5$?
DomDocument,ype2_notations 22 Devuelve una lista de notaciones
Kescripci"n
array KomKocumentType(Gnotations > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KomKocumentType(Gpublic>id
>no version in(ormationA might #e only in 5$?
DomDocument,ype2_pu#licZid 22 Devuelve el id pB#lico del tipo de documento
Kescripci"n
string KomKocumentType(Gpublic>id > void ?
+sta (unci-n devuelve el id pB#lico del tipo de documento;
+l siguiente e'emplo no produce ninguna salida;
E'emplo !. Mecuperaci"n del id p4blico
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute; un error al anali0ar el documentoVn";
exit;
;
$tipo%doc > $domF>doctype39;
echo $tipo%docF>public%id39;
?>
KomKocumentType(Gsystem>id
>no version in(ormationA might #e only in 5$?
DomDocument,ype2_systemZid 22 Devuelve el id de sistema del tipo de documento
Kescripci"n
string KomKocumentType(Gsystem>id > void ?
Devuelve el id de sistema del tipo de documento;
E'emplo !. Mecuperaci"n del id de sistema
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute; un error mientras se anali0aba el documentoVn";
exit;
;
$tipo%doc > $domF>doctype39;
echo $tipo%docF>system%id39;
?>
+l resultado del e'emplo seriaC
/share/sEml/.orman%7alsh/db<xml62/db<xml62.dtd
KomElement(Gget>attribute>node
>no version in(ormationA might #e only in 5$?
Dom+lement2_getZattri#uteZnode 22 Devuelve el nodo del atri#uto dado
Kescripci"n
o#'ect KomElement(Gget>attribute>node > string nom#re ?
Devuelve el nodo del atri#uto nom1re en el elemento actual; +l par*metro nom1re es sensi#le a
mayBsculas y minBsculas;
i no se encuentra un atri#uto con el nom#re dadoA se devuelve FALSE;
E'emplo !. Jbtener un nodo de atributo
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute; un error al interpretar el documentoVn";
exit;
;
$rai0 > $domF>document%element39;
i# 3$atributo > $rai0F>Eet%attribute%node3MlanEuaEeM99 :
echo MEl idioma es@ M . $atributoF>=alue39 . "Vn";
;
?>
KomElement(Gget>attribute
>no version in(ormationA might #e only in 5$?
Dom+lement2_getZattri#ute 22 Devuelve el valor del atri#uto dado
Kescripci"n
string KomElement(Gget>attribute > string nom#re ?
Devuelve el valor del atri#uto nom1re en el nodo actual; +l par*metro nom1re es sensi#le a
mayBsculas y minBsculas;
A partir de P&P 8;7A si no se encuentra un atri#uto con el nom1re dadoA se devuelve una cadena
vac)a;
E'emplo !. Jbtener el 5alor de un atributo
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute; un error al interpretar el documentoVn";
exit;
;
// obtener chapter
$rai0 > $domF>document%element39;
echo $rai0F>Eet%attribute3MlanEuaEeM99; // en
?>
$ea tam#i<n domelement>set>attribute./
KomElement(Gget>elements>by>tagname
>no version in(ormationA might #e only in 5$?
Dom+lement2_getZelementsZ#yZtagname 22 O#tiene elementos por el nom#re de eti/ueta
Kescripci"n
array KomElement(Gget>elements>by>tagname > string nom#re ?
+sta (unci-n devuelve una matriz con todos los elementos /ue tienen nom1re como su nom#re de
eti/ueta; 5ada elemento de la matriz es de tipo Dom+lement;
E'emplo !. Jbtener el contenido
<?php
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute; un error al anali0ar el documentoVn";
exit;
;
$rai0 > $domF>document%element39;
$matri0%nodos > $rai0F>Eet%elements%by%taEname3"element"9;
#or 3$i > 2; $i<count3$matri0%nodos9; $i[[9 :
$nodo > $matri0%nodos)$i/;
echo "El elemento)$i/ es@ " . $nodoF>Eet%content39;
;
?>
KomElement(Ghas>attribute
>no version in(ormationA might #e only in 5$?
Dom+lement2_hasZattri#ute 22 $eri(ica si un atri#uto eFiste en el nodo actual
Kescripci"n
#ool KomElement(Ghas>attribute > string nom#re ?
+sta (unci-n veri(ica si un atri#uto con el nom1re dado eFiste en el nodo actual;
E'emplo !. Probar la e+istencia de un atributo
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute; un error al interpretar el documentoVn";
exit;
;
$rai0 > $domF>document%element39;
$bu#er > M<htmlM
i# 3$rai0F>has%attribute3MlanEuaEeM99 :
$bu##er .> MlanE>"M . $rai0F>Eet%attribute3MlanEuaEeM9 . M"M;
;
$bu#er .> M>M;
?>
KomElement(Gremo5e>attribute
>no version in(ormationA might #e only in 5$?
Dom+lement2_removeZattri#ute 22 +limina un atri#uto
Kescripci"n
#ool KomElement(Gremo5e>attribute > string nom#re ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KomElement(Gset>attribute
>no version in(ormationA might #e only in 5$?
Dom+lement2_setZattri#ute 22 De(ine el valor de un atri#uto
Kescripci"n
o#'ect KomElement(Gset>attribute > string nom#reA string valor ?
De(ine un antri#uto con el nom#re nom1re con el alor dado; i el atri#uto no eFisteA ser* creado;
E'emplo !. Kefinici"n de un atributo
<?php
$doc > domxml%ne8%doc3"6.2"9;
$nodo > $docF>create%element3"para"9;
$nodo%nue=o > $docF>append%child3$nodo9;
$nodo%nue=oF>set%attribute3"aliEn", "le#t"9;
?>
$ea tam#i<n domelement>get>attribute./;
KomElement(Gtagname
>no version in(ormationA might #e only in 5$?
Dom+lement2_tagname 22 Devuelve el nom#re del elemento actual
Kescripci"n
string KomElement(Gtagname > void ?
Devuelve el nom#re del nodo actual; Llamar esta (unci-n es Walente a acceder a la propiedad
taEnameA o llamar KomElement(Gnode>name./ en el nodo actual;
E'emplo !. Jbtener el nombre del nodo
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute; un error al interpretar el documentoVn";
exit;
;
$rai0 > $domF>document%element39;
echo $rai0F>taEname39; // chapter
echo $rai0F>taEname; // chapter
echo $rai0F>node%name39; // chapter
?>
KomNode(Gadd>namespace
>no version in(ormationA might #e only in 5$?
DomNode2_addZnamespace 22 Agrega una declaraci-n de espacio de nom#res a un nodo
Kescripci"n
#ool KomNode(Gadd>namespace > string uriA string pre(i'o ?
$ea tam#i<n domdocument>create>element>ns./A y domnode>set>namespace./
KomNode(Gappend>child
>no version in(ormationA might #e only in 5$?
DomNode2_appendZchild 22 Agrega un nuevo hi'o al (inal del grupo de hi'os
Kescripci"n
o#'ect KomNode(Gappend>child > o#'ect nodoZnuevo ?
+sta (unci-n agrega un hi'o a una lista eFistente de hi'os o crea una nueva lista de hi'os; +l hi'o
puede ser creadoA por e'emploA con domdocument>create>element./A domdocument>create>te+t
./ etc; o simplemente mediante el uso de otro nodo;
>P&P ` 8;7? Antes de /ue un nuevo hi'o sea agregadoA <ste es duplicado; Por lo tanto el nuevo hi'o
es una nueva copia /ue puede ser modi(icada sin cam#iar el nodo /ue (ue pasado a esta (unci-n; i
el nodo pasado tiene hi'osA ellos ser*n duplicados tam#i<nA lo /ue (acilita la duplicaci-n de grandes
segmentos de un documento JML; +l valor de retorno es el hi'o agregado; i planea realizar
modi(icaciones posteriores so#re el hi'o agregadoA de#e usar el nodo devuelto;
>P&P 8;7;3D8;7;1? +l nuevo hi'o no#o_nueo es enlazado primero desde su conteFto actualA si ya se
trata de un hi'o de DomNode; Por lo tanto el nodo es movido y no una copia del nodo;
>P&P _^ 8;7;0? +l nuevo hi'o no#o_nueo es primera separado de su conteFto actualA si <ste ya
eFiste en el *r#ol; Por lo tanto el nodo es movido y no copiado; +ste de#e ser su comportamiento de
acuerdo a las especi(icaciones del L75; i desea duplicar segmentos grandes de un documento
JMLA use DomNode2_cloneZnode>? antes de agregar;
+l siguiente e'emplo agrega un nuevo nodo tipo elemento a un documento nuevo y de(ine el atri#uto
=align= como =le(t=;
E'emplo !. Agregar un hi'o
<?php
$doc > domxml%ne8%doc3"6.2"9;
$nodo > $docF>create%element3"para"9;
$nodo%nue=o > $docF>append%child3$nodo9;
$nodo%nue=oF>set%attribute3"aliEn", "le#t"9;
?>
+l anterior e'emplo pudo ser escrito tam#i<n comoC
E'emplo *. Agregar un hi'o
<?php
$doc > domxml%ne8%doc3"6.2"9;
$nodo > $docF>create%element3"para"9;
$nodoF>set%attribute3"aliEn", "le#t"9;
$nodo%nue=o > $docF>append%child3$nodo9;
?>
@n e'emplo m*s comple'o se presenta a continuaci-n; Primero #usca cierto elementoA lo duplica
incluyendo sus hi'os y lo agrega como un hermano; Finalmente un nuevo atri#uto es agregado a uno
de los hi'os del nuevo hermano y el documento completo es volcado;
E'emplo 7. Agregar un hi'o
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute; un error al anali0ar el documentoVn";
exit;
;
$elementos > $domF>Eet%elements%by%taEname3"in#ormaltable"9;
print%r3$elementos9;
$elemento > $elementos)2/;
$padre > $elementoF>parent%node39;
$nodo%nue=o > $padreF>append%child3$elemento9;
$hijos > $nodo%nue=oF>children39;
$atr > $hijos)6/F>set%attribute3"aliEn", "le#t"9;
echo "<pre>";
$archi=o%xml > $domF>dump%mem39;
echo htmlentities3$archi=o%xml9;
echo "</pre>";
?>
+l e'emplo anterior pudo crearse tam#i<n con domnode>insert>before./ en lugar de
domnode>append>child./;
$ea tam#i<n domnode>insert>before./A y domnode>clone>node./;
KomNode(Gappend>sibling
>no version in(ormationA might #e only in 5$?
DomNode2_appendZsi#ling 22 Agrega un nuevo hermano a un nodo
Kescripci"n
o#'ect KomNode(Gappend>sibling > o#'ect nodoZnuevo ?
+sta (unci-n agrega un hermano a un nodo eFistente; +l hi'o puede ser creadoA por e'emploA con
domdocument>create>element./A domdocument>create>te+t./ etc; o simplemente mediante el
uso de otro nodo;
Antes de /ue un nuevo hermano sea agregadoA <ste es duplicado; Por lo tantoA el nuevo hi'o es una
copia completamente nueva /ue puede modi(icarse sin cam#iar el nodo /ue (ue pasado a <sta
(unci-n; i el nodo pasado tiene hi'osA ellos ser*n duplicados tam#i<nA lo /ue (acilita enormemente
la duplicaci-n de partes grandes de un documento JML; +l valor de retorno es el hermano
agregado; i planea hacer modi(icaciones posteriores al hermano agregadoA de#e usar el nodo
devuelto;
+sta (unci-n ha sido agregada para o(recer el comportamiento de domnode>append>child./A del
modo /ue (unciona#a hasta P&P 8;0;
$ea tam#i<n domnode>append>before./;
KomNode(Gattributes
>no version in(ormationA might #e only in 5$?
DomNode2_attri#utes 22 Devuelve la lista de atri#utos
Kescripci"n
array KomNode(Gattributes > void ?
+sta (unci-n solo devuelve una matriz de atri#utos si el nodo es de tipo JMLZ+L+M+N,ZNOD+;
>-lo P&P _^ 8;7? i no se encuentran atri#utosA se devuelve N@LL;
KomNode(Gchild>nodes
>no version in(ormationA might #e only in 5$?
DomNode2_childZnodes 22 Devuelve los hi'os del nodo
Kescripci"n
array KomNode(Gchild>nodes > void ?
Devuelve todos los hi'os del nodo;
$ea tam#i<n domnode>ne+t>sibling./A y domnode>pre5ious>sibling./;
KomNode(Gclone>node
>no version in(ormationA might #e only in 5$?
DomNode2_cloneZnode 22 5lona un nodo
Kescripci"n
o#'ect KomNode(Gclone>node > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KomNode(Gdump>node
>no version in(ormationA might #e only in 5$?
DomNode2_dumpZnode 22 $uelca un nodo Bnico
Kescripci"n
string KomNode(Gdump>node > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
$ea tam#i<n domdocument>dump>mem./;
KomNode(Gfirst>child
>no version in(ormationA might #e only in 5$?
DomNode2_(irstZchild 22 Devuelve el primer hi'o del nodo
Kescripci"n
o#'ect KomNode(Gfirst>child > void ?
Devuelve el primer hi'o del nodo;
>-lo P&P _^ 8;7? i no se encuentra un hi'oA se devuelve N@LL;
$ea tam#i<n domnode>last>child./A y domnode>ne+t>sibling./A domnode>pre5ious>sibling./;
KomNode(Gget>content
>no version in(ormationA might #e only in 5$?
DomNode2_getZcontent 22 O#tiene el contenido del nodo
Kescripci"n
string KomNode(Gget>content > void ?
+sta (unci-n devuelve el contenido del nodo mismo;
E'emplo !. Jbtener el contenido
<?php
i# 3!$dom > domxml%open%mem3$codena%xml99 :
echo "?curri&oacute; un error al anali0ar el documentoVn";
exit;
;
$rai0 > $domF>document%element39;
$matri0%nodos > $rai0F>Eet%elements%by%taEname3"element"9;
#or 3$i > 2; $i<count3$matri0%nodos9; $i[[9 :
$nodo > $matri0%nodos)$i/;
echo "El elemento)$i/ is@ " . $nodoF>Eet%content39;
;
?>
KomNode(Ghas>attributes
>no version in(ormationA might #e only in 5$?
DomNode2_hasZattri#utes 22 $eri(ica si un nodo tiene atri#utos
Kescripci"n
#ool KomNode(Ghas>attributes > void ?
+sta (unci-n veri(ica si el nodo tiene atri#utos;
$ea tam#i<n domnode>has>child>nodes./;
KomNode(Ghas>child>nodes
>no version in(ormationA might #e only in 5$?
DomNode2_hasZchildZnodes 22 $eri(ica si el nodo tiene hi'os
Kescripci"n
#ool KomNode(Ghas>child>nodes > void ?
+sta (unci-n veri(ica si el nodo tiene hi'os;
$ea tam#i<n domnode>child>nodes./;
KomNode(Ginsert>before
>no version in(ormationA might #e only in 5$?
DomNode2_insertZ#e(ore 22 .nserta un nodo nuevo como hi'o
Kescripci"n
o#'ect KomNode(Ginsert>before > o#'ect nodoZnuevoA o#'ect nodoZre( ?
+sta (unci-n inserta el nuevo nodoA no#o_nueoA 'usto antes del nodo no#o_re9; +l valor de retorno
es el nodo insertado; i planea hacer modi(icaciones posteriores so#re el hi'o agregadoA de#e usar el
nodo devuelto;
>-lo P&P _^ 8;7? i no#o_nueo ya es parte de un documentoA ser* primero desenlazado de su
conteFto actual; i no#o_re9 es N@LLA entonces no#o_nueo ser* insertado al (inal de la lista de
hi'os;
domnode>insert>before./ es #astante similar a domnode>append>child./ como muestra el
siguiente e'emploA el cual hace lo mismo /ue el e'emplo en domnode>append>child./;
E'emplo !. Agregar un hi'o
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute; un error al anali0ar el documentoVn";
exit;
;
$elementos > $domF>Eet%elements%by%taEname3"in#ormaltable"9;
print%r3$elementos9;
$elemento > $elementos)2/;
$nodo%nue=o > $elementoF>insert%be#ore3$elemento, $elemento9;
$hijos > $nodo%nue=oF>children39;
$atr > $hijos)6/F>set%attribute3"aliEn", "le#t"9;
echo "<pre>";
$archi=o%xml > $domF>dump%mem39;
echo htmlentities3$archi=o%xml9;
echo "</pre>";
?>
$ea tam#i<n domnode>append>child./;
KomNode(Gis>blanB>node
>no version in(ormationA might #e only in 5$?
DomNode2_isZ#lan"Znode 22 $eri(ica si el nodo est* en #lanco
Kescripci"n
#ool KomNode(Gis>blanB>node > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KomNode(Glast>child
>no version in(ormationA might #e only in 5$?
DomNode2_lastZchild 22 Devuelve el Bltimo hi'o del nodo
Kescripci"n
o#'ect KomNode(Glast>child > void ?
Devuelve el Bltimo hi'o del nodo;
>-lo P&P _^ 8;7? i no se encuentra un Bltimo hi'oA se devuelve N@LL;
$ea tam#i<n domnode>first>child./A y domnode>ne+t>sibling./A domnode>pre5ious>sibling./;
KomNode(Gne+t>sibling
>no version in(ormationA might #e only in 5$?
DomNode2_neFtZsi#ling 22 Devuelve el siguiente hermano del nodo
Kescripci"n
o#'ect KomNode(Gne+t>sibling > void ?
+sta (unci-n devuelve el siguiente hermano del nodo actual; i no hay un siguiente hermanoA
devuelve FALSE >` 8;7? o null >_^ 8;7?; +s posi#le usar esta (unci-n para iterar so#re los hi'os de
un nodoA como se muestra en el e'emplo a continuaci-n;
E'emplo !. Iterar sobre los hi'os
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute; un error al anali0ar el documentoVn";
exit;
;
$elementos > $domF>Eet%elements%by%taEname3"tbody"9;
$elemento > $elementos)2/;
$hijo > $elementoF>#irst%child39;
8hile 3$hijo9 :
print%r3$hijo9;
$hijo > $hijoF>next%siblinE39;
;
?>
$ea tam#i<n domnode>pre5ious>sibling./;
KomNode(Gnode>name
>no version in(ormationA might #e only in 5$?
DomNode2_nodeZname 22 Devuelve el nom#re del nodo
Kescripci"n
string KomNode(Gnode>name > void ?
Devuelve el nom#re del nodo; +l nom#re tiene signi(icados di(erentes para los di(erentes tipos de
nodoA como se ilustra en la siguiente ta#la;
Tabla !. ,ignificado de 5alores
Tipo ,ignificado
DomAttri#ute valor del atri#uto
DomAttri#ute
Dom5Dataection secci-n2ncdata
Dom5omment ncomment
DomDocument ndocument
DomDocument,ype
nom#re del tipo de
documento
Dom+lement nom#re de la eti/ueta
Dom+ntity nom#re de la entidad
Dom+ntityRe(erence
nom#re de re(erencia a
entidad
DomNotation nom#re de notaci-n
DomProcessing.nstructio
n
destino
Dom,eFt nteFt
KomNode(Gnode>type
>no version in(ormationA might #e only in 5$?
DomNode2_nodeZtype 22 Devuelve el tipo de nodo
Kescripci"n
int KomNode(Gnode>type > void ?
Devuelve el tipo del nodo; ,odos los tipos posi#les son listados en la ta#la de la introducci-n;
E'emplo !.
<?php
include Mejemplo.incM;
$dom > domxml%open%mem3$cadena%xml9;
$capitulo > $domF>document%element39;
// (eamos los elementos contenidos en capitulo
#oreach3$capituloF>child%nodes39 as $nodo9 :
i# 3$nodoF>node%type39 >> X"O%EOE"E.*%.?LE9 :
echo $nodoF>node%name39 . "Vn";
;
;
?>
+l anterior e'emplo producir* la salidaC
title
para
KomNode(Gnode>5alue
>no version in(ormationA might #e only in 5$?
DomNode2_nodeZvalue 22 Devuelve el valor de un nodo
Kescripci"n
string KomNode(Gnode>5alue > void ?
Devuelve el valor del nodo; +l valor tiene signi(icados di(erentes para los di(erentes tipos de nodosA
como se ilustra en la siguiente ta#la;
Tabla !. ,ignificado de 5alores
Tipo ,ignificado
DomAttri#ute valor del atri#uto
DomAttri#ute
Dom5Dataection contenido
Tipo ,ignificado
Dom5omment contenido del comentario
DomDocument null
DomDocument,ype null
Dom+lement null
Dom+ntity null
Dom+ntityRe(erence null
DomNotation null
DomProcessing.nstructio
n
contenido completo sin
destino
Dom,eFt contenido del teFto
KomNode(Go3ner>document
>no version in(ormationA might #e only in 5$?
DomNode2_oEnerZdocument 22 Devuelve el documento al /ue este nodo pertenece
Kescripci"n
o#'ect KomNode(Go3ner>document > void ?
+sta (unci-n devuelve el documento al /ue pertenece el nodo actual;
+l siguiente e'emplo crear* dos listas id<nticas de hi'os;
E'emplo !. Encontrar el documento de un nodo
<?php
$doc > domxml%ne8%doc3"6.2"9;
$nodo > $docF>create%element3"para"9;
$nodo > $docF>append%child3$nodo9;
$hijos > $docF>children39;
print%r3$hijos9;
$docC > $nodoF>o8ner%document39;
$hijos > $docCF>children39;
print%r3$hijos9;
?>
$ea tam#i<n domnode>insert>before./;
KomNode(Gparent>node
>no version in(ormationA might #e only in 5$?
DomNode2_parentZnode 22 Devuelve el padre del nodo
Kescripci"n
o#'ect KomNode(Gparent>node > void ?
+sta (unci-n devuelve el nodo padre;
>-lo P&P _^ 8;7? i no se encuentra un padreA se devuelve N@LL;
+l siguiente e'emplo mostrar* dos listas id<nticas de hi'os;
E'emplo !. Encontrar el documento de un nodo
<?php
$doc > domxml%ne8%doc3"6.2"9;
$nodo > $docF>create%element3"para"9;
$nodo > $docF>append%child3$nodo9;
$hijos > $docF>children39;
print%r3$hijos9;
$docC > $nodoF>parent%node39;
$hijos > $docCF>children39;
print%r3$hijos9;
?>
KomNode(Gprefi+
>no version in(ormationA might #e only in 5$?
DomNode2_pre(iF 22 Devuelve el pre(i'o de espacio de nom#res del nodo
Kescripci"n
string KomNode(Gprefi+ > void ?
Devuelve el pre(i'o de espacio de nom#res del nodo;
KomNode(Gpre5ious>sibling
>no version in(ormationA might #e only in 5$?
DomNode2_previousZsi#ling 22 Devuelve el hermano anterior del nodo
Kescripci"n
o#'ect KomNode(Gpre5ious>sibling > void ?
+sta (unci-n devuelve el hermano anterior del nodo actual; i no hay un hermano anteriorA devuelve
FALSE >` 8;7? o NULL >_^ 8;7?; +s posi#le usar esta (unci-n para iterar a trav<s de los hi'os de un
nodoA como se muestra en el e'emplo;
$ea tam#i<n domnode>ne+t>sibling./;
KomNode(Gremo5e>child
>no version in(ormationA might #e only in 5$?
DomNode2_removeZchild 22 +limina un hi'o de una lista de hi'os
Kescripci"n
o#'ect KomNode(Gremo5e>child > o#'ect hi'oZantiguo ?
+sta (unci-n elimina un hi'o de una lista de hi'os; i el hi'o no puede ser eliminadoA o no es un hi'oA
la (unci-n devuelve FALSE; i el hi'o puede ser eliminadoA la (unci-n devuelve el hi'o antiguo;
E'emplo !. Eliminar un hi'o
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute; un error al anali0ar el documentoVn";
exit;
;
$elementos > $domF>Eet%elements%by%taEname3"tbody"9;
$elemento > $elementos)2/;
$hijos > $elementoF>child%nodes39;
$hijo > $elementoF>remo=e%child3$hijos)2/9;
echo "<'E>";
$archi=o%xml > $domF>dump%mem3true9;
echo htmlentities3$archi=o%xml9;
echo "</'E>";
?>
$ea tam#i<n domnode>append>child./;
KomNode(Greplace>child
>no version in(ormationA might #e only in 5$?
DomNode2_replaceZchild 22 Reemplaza un hi'o
Kescripci"n
o#'ect KomNode(Greplace>child > o#'ect nodoZantiguoA o#'ect nodoZnuevo ?
>P&P 8;0? +sta (unci-n reemplaza el hi'o no#o_ant6Euo con el nuevo nodo pasado; i el nuevo nodo
ya es un hi'oA no ser* agregado una segunda vez; i el nodo antiguo no puede encontrarseA la (unci-n
devuelve FALSE; i el reemplazo tiene <FitoA se devuelve el nodo antiguo;
>P&P 8;7? +sta (unci-n reemplaza el hi'o no#o_ant6Euo con el no#o_nueo pasadoA incluso si el
nuevo nodo ya es un hi'o del DomNode; i no#o_nueo ya ha#)a sido insertado en el documentoA
primero es desenlazado de su conteFto actual; i el nodo antiguo no puede ser encontradoA la
(unci-n devuelve FALSE; i el reemplazo tiene <FitoA se devuelve el nodo antiguo; >+ste
comportamiento sigue las especi(icaciones del L75?;
$ea tam#i<n domnode>append>child./
KomNode(Greplace>node
>no version in(ormationA might #e only in 5$?
DomNode2_replaceZnode 22 Reemplaza el nodo
Kescripci"n
o#'ect KomNode(Greplace>node > o#'ect nodoZnuevo ?
>P&P 8;0? +sta (unci-n reemplaza un nodo eFistente con el nuevo nodo pasado; Antes del
reemplazoA no#o_nueo es copiado si tiene un padreA para asegurarse de /ue un nodo /ue ya est< en
el documento no sea insertado una segunda vez; +ste comportamiento o#liga a hacer todas las
modi(icaciones en el nodo antes del reemplazoA o retomar el nodo insertado despu<s con (unciones
como domnode>first>child./A domnode>child>nodes./ etc;;
>P&P 8;7? +sta (unci-n reemplaza un nodo eFistente con el nuevo nodo pasado; No sigue siendo
copiado; i no#o_nueo ya ha#)a sido insertado en el documentoA es primero despo'ado del enlace
con su conteFto actual; i el reemplazo tiene <FitoA se devuelve el nodo antiguo;
$ea tam#i<n domnode>append>child./
KomNode(Gset>content
>no version in(ormationA might #e only in 5$?
DomNode2_setZcontent 22 De(ine el contenido del nodo
Kescripci"n
#ool KomNode(Gset>content > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KomNode(Gset>name
>no version in(ormationA might #e only in 5$?
DomNode2_setZname 22 De(ine el nom#re del nodo
Kescripci"n
#ool KomNode(Gset>name > void ?
De(ine el nom#re del nodo;
$ea tam#i<n domnode>node>name./;
KomNode(Gset>namespace
>no version in(ormationA might #e only in 5$?
DomNode2_setZnamespace 22 De(ine el espacio de nom#res de un nodo
Kescripci"n
void KomNode(Gset>namespace > string uri PA string pre(i'oQ ?
De(ine el espacio de nom#res de un nodo a ur6; i ya eFiste una declaraci-n de espacio de nom#res
con el mismo uri en uno de los nodos padres del nodoA tal pre(i'o ser* tomadoA de lo contrario
tomar* a/u<l indicado en el par*metro opcional pre96Uo o generar* uno aleatorio;
$ea tam#i<n domdocument>create>element>ns./A y domnode>add>namespace./
KomNode(GunlinB>node
>no version in(ormationA might #e only in 5$?
DomNode2_unlin"Znode 22 +limina el nodo
Kescripci"n
o#'ect KomNode(GunlinB>node > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KomProcessingInstruction(Gdata
>no version in(ormationA might #e only in 5$?
DomProcessing.nstruction2_data 22 Devuelve los datos de un nodo pi
Kescripci"n
string KomProcessingInstruction(Gdata > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KomProcessingInstruction(Gtarget
>no version in(ormationA might #e only in 5$?
DomProcessing.nstruction2_target 22 Devuelve el destino de un nodo pi
Kescripci"n
string KomProcessingInstruction(Gtarget > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KomIslt,tylesheet(Gprocess
>no version in(ormationA might #e only in 5$?
DomJslttylesheet2_process 22 Aplica la ,rans(ormaci-n JL, so#re un o#'eto DomDocument
Kescripci"n
o#'ect KomIslt,tylesheet(Gprocess > o#'ect DomDocument PA array parametrosZFslt PA #ool
paramZesZFpathQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
$ea tam#i<n dom+ml>+slt>stylesheet./A dom+ml>+slt>stylesheet>file./A y
dom+ml>+slt>stylesheet>doc./
KomIslt,tylesheet(Gresult>dump>file
>no version in(ormationA might #e only in 5$?
DomJslttylesheet2_resultZdumpZ(ile 22 $uelca el resultado de una ,rans(ormaci-n JL, a un
archivo
Kescripci"n
string KomIslt,tylesheet(Gresult>dump>file > o#'ect DomDocumentA string nom#reZarchivo ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
+sta (unci-n s-lo se encuentra disponi#le a partir de P&P 8;7
Dado /ue DomJslttylesheet2_process>? siempre devuelve un DomDocument JML #ien (ormadoA
sin importar el m<todo de salida declarado en `FslCoutput_ y atri#utos o elementos similaresA no es
de mucha utilidad si desea generar datos &,ML 8 o de teFto; Por otra parteA esta (unci-n honra
`FslCoutput method^=htmllteFt=_ y otras directivas de control de salida; $ea el e'emplo para m*s
in(ormaci-n so#re su uso;
E'emplo !. Fuardar el resultado de una transformci"n I,:T en un archi5o
<?php
$nombre%archi=o > "stylesheet.xsl";
$doc%xml > domxml%open%#ile3"datos.xml"9;
$doc%xsl > domxml%xslt%stylesheet%#ile3$nombre%archi=o9;
$resultado > $doc%xslF>process3$doc%xml9;
echo $doc%xslF>result%dump%#ile3$resultado, "nombre%archi=o"9;
?>
$ea tam#i<n dom+ml>+slt>result>dump>mem./A y dom+ml>+slt>process./
KomIslt,tylesheet(Gresult>dump>mem
>no version in(ormationA might #e only in 5$?
DomJslttylesheet2_resultZdumpZmem 22 $uelca el resultado de una ,rans(ormaci-n JL, de
vuelta a una cadena
Kescripci"n
string KomIslt,tylesheet(Gresult>dump>mem > o#'ect DomDocument ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
+sta (unci-n s-lo se encuentra disponi#le a partir de P&P 8;7
Dado /ue DomJslttylesheet2_process>? siempre devuelve un DomDocument JML #ien (ormadoA
sin importar el m<todo de salida declarado en `FslCoutput_ y atri#utos o elementos similaresA no es
de mucha utilidad si desea generar datos &,ML 8 o de teFto; Por otra parteA esta (unci-n honra
`FslCoutput method^=htmllteFt=_ y otras directivas de control de salida; $ea el e'emplo para m*s
in(ormaci-n so#re su uso;
E'emplo !. Imprimir el resultado de una transformaci"n I,:T
<?php
$nombre%archi=o > "stylesheet.xsl";
$doc%xml > domxml%open%#ile3"datos.xml"9;
$doc%xsl > domxml%xslt%stylesheet%#ile3$nombre%archi=o9;
$resultado > $doc%xslF>process3$doc%xml9;
echo $doc%xslF>result%dump%mem3$resultado9;
?>
$ea tam#i<n dom+ml>+slt>result>dump>file./A y dom+ml>+slt>process./
dom+ml>ne3>doc
>P&P 8 _^ 8;0;1?
domFmlZneEZdoc 22 5rea un nuevo documento JML vac)o
Kescripci"n
o#'ect dom+ml>ne3>doc > string version ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
5rea un nuevo documento dom desde ceros y lo devuelve;
$ea tam#i<n domdocument>add>root./
dom+ml>open>file
>P&P 8 _^ 8;0;1?
domFmlZopenZ(ile 22 5rea un o#'eto DOM a partir de un archivo JML
Kescripci"n
o#'ect dom+ml>open>file > string nom#reZarchivo PA int modo PA array ierrorQQ ?
+sta (unci-n analiza el documento JML en el archivo con nom#re nom1re_arch6o y devuelve un
o#'eto de clase =documento Dom=A /ue tiene las propiedades listadas anteriormente; +l archivo es
a#ierto en modo de s-lo2lectura;
+l par*metro opcional mo#o puede ser usado para modi(icar el comportamiento de <sta (unci-n; Fue
agregado en P&P 8;7;3; Puede usar una de las siguientes constantes para este valorC
DOM%ML_LOAD_PARSIN# >predeterminado?A DOM%ML_LOAD_$ALIDATIN# o
DOM%ML_LOAD_RECO$ERIN#; ,am#i<n puede agregar
DOM%ML_LOAD_DONT_&EEP_(LAN&SA DOM%ML_LOAD_SU(STITUTE_ENTITIES y
DOM%ML_LOAD_COMPLETE_ATTRS con una operaci-n OR de #its;
i se usa el par*metro errorA <ste contendr* los mensa'es de error; error de#e ser pasado por
re(erencia; +l par*metro (ue agregado en P&P 8;7;3;
E'emplo !. Abrir un documento IM: desde un archi5o
<?php
i# 3!$dom > domxml%open%#ile3"ejemplo.xml"99 :
echo "?curri&oacute; un error al anali0ar el documentoVn";
exit;
;
$rai0 > $domF>document%element39;
?>
$ea tam#i<n dom+ml>open>mem./A y dom+ml>ne3>doc./;
dom+ml>open>mem
>P&P 8 _^ 8;0;1?
domFmlZopenZmem 22 5rea un o#'eto DOM desde un documento JML
Kescripci"n
o#'ect dom+ml>open>mem > string cadena PA int mode PA array ierrorQQ ?
+sta (unci-n analiza el documento JML en ca#ena y devuelve un o#'eto de clase =documento
Dom=A /ue tiene las propiedades listadas anteriormente; +sta (unci-nA dom+ml>open>file./ o
dom+ml>ne3>doc./ de#e llamarse antes de cual/uier otra (unci-n;
+l par*metro opcional mo#o puede ser usado para modi(icar el comportamiento de <sta (unci-n; Fue
agregado en P&P 8;7;3; $ea dom+ml>open>file./ para los posi#les valores;
i el par*metro error es usadoA <ste contendr* los mensa'es de error; error de#e ser pasado por
re(erencia; +l par*metro (ue agregado en P&P 8;7;3;
E'emplo !. Abrir un documento IM: desde una cadena
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute;n un error al anali0ar el documentoVn";
exit;
;
$rai0 > $domF>document%element39;
?>
$ea tam#i<n dom+ml>open>file./A y dom+ml>ne3>doc./;
dom+ml>5ersion
>P&P 8 _^ 8;1;3?
domFmlZversion 22 O#tiene la versi-n de la #i#lioteca JML
Kescripci"n
string dom+ml>5ersion > void ?
+sta (unci-n devuelve la versi-n de la #i#lioteca JML usada actualmente;
E'emplo !. E'emplo de dom+ml>5ersion./
<?php
echo domxml%=ersion39;
?>
+l resultado del e'emplo seria algo similar aC
C2G2H
dom+ml>+mltree
>P&P 8 _^ 8;0;1?
domFmlZFmltree 22 5rea un *r#ol de o#'etos P&P a partir de un documento JML
Kescripci"n
o#'ect dom+ml>+mltree > string cadena ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
La (unci-n analiza el documento JML en ca#ena y devuelve un *r#ol de o#'etos P&P como el
documento interpretado; +sta (unci-n se encuentra separada de las dem*sA lo /ue /uiere decir /ue
no puede acceder al *r#ol con cual/uiera de las otras (unciones; Modi(icarloA por e'emplo agregando
nodosA no tiene sentido ya /ue no hay (orma de volcar el resultado como un archivo JML; in
em#argoA esta (unci-n puede resultar Btil si /uiere leer un archivo y consultar su contenido;
dom+ml>+slt>stylesheet>doc
>P&P 8 _^ 8;0;3?
domFmlZFsltZstylesheetZdoc 22 5rea un O#'eto DomJslttylesheet a partir de un O#'eto
DomDocument
Kescripci"n
o#'ect dom+ml>+slt>stylesheet>doc > o#'ect DocDocument ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
$ea tam#i<n dom+sltstylesheet(Gprocess./A dom+ml>+slt>stylesheet./A y
dom+ml>+slt>stylesheet>file./;
dom+ml>+slt>stylesheet>file
>P&P 8 _^ 8;0;3?
domFmlZFsltZstylesheetZ(ile 22 5rea un O#'eto DomJslttylesheet a partir de un documento JL
en un archivo
Kescripci"n
o#'ect dom+ml>+slt>stylesheet>file > string archivoZFsl ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
$ea tam#i<n dom+sltstylesheet(Gprocess./A dom+ml>+slt>stylesheet./A y
dom+ml>+slt>stylesheet>doc./
dom+ml>+slt>stylesheet
>P&P 8 _^ 8;0;3?
domFmlZFsltZstylesheet 22 5rea un O#'eto DomJslttylesheet desde un documento JML en una
cadena
Kescripci"n
o#'ect dom+ml>+slt>stylesheet > string documentoZFsl ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
$ea tam#i<n dom+sltstylesheet(Gprocess./A dom+ml>+slt>stylesheet>file./A y
dom+ml>+slt>stylesheet>doc./
+path>e5al>e+pression
>P&P 8 _^ 8;3;8?
FpathZevalZeFpression 22 +valBa la Ruta de @#icaci-n JPath en la cadena entregada
Kescripci"n
o#'ect +path>e5al>e+pression > o#'ect conteFtoZFpathA string eFpresion ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
E'emplo !. E'emplo de +path>e5al>e+pression./
<?php
include3"ejemplo.inc"9;
i# 3!$dom > domxml%open%mem3$cadena%xml99 :
echo "?curri&oacute; un error al interpretar el documentoVn";
exit;
;
$xpath > xpath%ne8%context3$dom9;
=ar%dump3xpath%e=al%expression3$xpath, M/chapter/^lanEuaEeM99;
?>
+l resultado del e'emplo seriaC
object3Xath?bject93C9 :
)"type"/>>
int369
)"nodeset"/>>
array369 :
)2/>>
object3domattribute9359 :
)"type"/>>
int3C9
)"name"/>>
strinE3J9 "lanEuaEe"
)"=alue"/>>
strinE3C9 "en"
)2/>>
int3H9
)6/>>
int36<J221C5G9
;
;
;
$ea tam#i<n +path>e5al./;
+path>e5al
>P&P 8 _^ 8;3;8?
FpathZeval 22 +valBa la Ruta de @#icaci-n JPatch en la cadena dada
Kescripci"n
array +path>e5al > o#'ect conteFtoZFpathA string eFpresionZFpath PA o#'ect nodoZconteFtoQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
+l valor opcional no#o_conte8to puede especi(icarse para realizar consultas JPath relativas;
$ea tam#i<n +path>ne3>conte+t./;
+path>ne3>conte+t
>P&P 8 _^ 8;3;8?
FpathZneEZconteFt 22 5rea un nuevo conteFto Fpath
Kescripci"n
o#'ect +path>ne3>conte+t > o#'ect documentoZdom ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
$ea tam#i<n +path>e5al./;
+ptr>e5al
>P&P 8 _^ 8;3;8?
FptrZeval 22 +valBa la Ruta de @#icaci-n JPtr en la cadena dada
Kescripci"n
int +ptr>e5al > Po#'ect conteFtoZFpathA string cadenaZevalQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+ptr>ne3>conte+t
>P&P 8 _^ 8;3;8?
FptrZneEZconteFt 22 5rea un nuevo 5onteFto JPath
Kescripci"n
string +ptr>ne3>conte+t > Po#'ect gestorZdocQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
IIII. .NET ;unctions
Introducci"n
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
Tabla de contenidos
dotnetZload 22 Loads a DO,N+, module
dotnet>load
>no version in(ormationA might #e only in 5$?
dotnetZload 22 Loads a DO,N+, module
Kescription
int dotnet>load > string assem#lyZname PA string datatypeZname PA int codepageQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
III. ;unciones de Festi"n de Errores y
Megistros
Introducci"n
+stas son (unciones /ue tra#a'an en la gesti-n de errores y registros; Le permiten de(inir sus propias
reglas de gesti-n de erroresA asi como modi(icar el modo en /ue los errores son registrados; +sto le
permite modi(icar y me'orar el reporte de errores para /ue se adapte a sus necesidades;
5on las (unciones de registroA puede enviar mensa'es directamente a otras m*/uinasA a un correo
electr-nico >fo correo electr-nico a una puerta de enlace con un #uscapersonasa?A a #it*coras del
sistemaA etc;A de modo /ue puede registrar y monitorear selectivamente las partes m*s importantes
de sus aplicaciones y sitios Ee#;
Las (unciones de reporte de errores le permiten personalizar el nivel y tipo de retroalimentaci-n de
errores /ue P&P entregaA desde noticias simples a (unciones personalizadas devueltas durante los
errores;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones de Configuraci"n de Errores y Megistro
Nombre Por defecto Modificable
errorZreporting
+ZALL i
g+ZNO,.5+
P&PZ.N.ZALL
displayZerrors =1= P&PZ.N.ZALL
displayZstartupZerrors =3= P&PZ.N.ZALL
logZerrors =3= P&PZ.N.ZALL
logZerrorsZmaFZlen =1308= P&PZ.N.ZALL
ignoreZrepeatedZerror
s
=3= P&PZ.N.ZALL
ignoreZrepeatedZsourc
e
=3= P&PZ.N.ZALL
reportZmemlea"s =1= P&PZ.N.ZALL
trac"Zerrors =3= P&PZ.N.ZALL
htmlZerrors =1= P&PZ.N.ZALL
docre(Zroot == P&PZ.N.ZALL
docre(ZeFt == P&PZ.N.ZALL
Nombre Por defecto Modificable
errorZprependZstring N@LL P&PZ.N.ZALL
errorZappendZstring N@LL P&PZ.N.ZALL
errorZlog N@LL P&PZ.N.ZALL
EarnZplusZoverloadin
g
N@LL P&PZ.N.NN
Para m*s detalles y la de(inici-n de las constantes P&PZ.N.ZV consulte ini>set./;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
error_report6nE integer
+sta#lece el nivel de reporte de errores; +ste par*metro esA o #ien un entero /ue representa un
campo de #itA o constantes con nom#re; Los niveles de errorZreporting y las constantes est*n
descritas en 5onstantes Prede(inidasA y en php.ini; Para de(inir este valor en tiempo de
e'ecuci-nA use la (unci-n error>reporting./; $ea tam#i<n la directiva displayZerrors;
+n P&P 8 y P&P 4A el valor predeterminado es +ZALL i g+ZNO,.5+; +ste valor no muestra
errores de nivel E_NOTICE; Puede /ue usted /uiera mostrarlos durante su actividad de
desarrollo;
Nota- Al ha#ilitar E_NOTICE durante el desarrollo de so(tEare tiene algunos
#ene(icios; Para prop-sitos de depuraci-nC los mensa'es NO,.5+ le advertir*n
so#re posi#les (allos en su c-digo; Por e'emploA se le advertir* so#re el uso de
valores no2asignados; +s eFtremadamente Btil para encontrar errores ortogr*(icos
y ahorrar tiempo de depuraci-n; Los mensa'es NO,.5+ le advertir*n so#re el uso
de un estilo incorrecto; Por e'emploA YmatrizPitemQ est* me'or escrito como
YmatrizPHitemHQ ya /ue P&P intenta darle a =item= un tratamiento de constante; i
no es una constanteA P&P asume /ue es un )ndice de tipo cadena para la matriz;
Nota- +n P&P 4A un nuevo nivel de errorA E_STRICTA se encuentra disponi#le;
Dado /ue E_STRICT no se incluye en E_ALLA usted de#e ha#ilitar
eFpl)citamente este tipo de nivel de error; &a#ilitar E_STRICT durante el
desarrollo tiene algunos #ene(icios; Los mensa'es ,R.5, le ayudar*n a usar los
Bltimos y m*s grandiosos m<todos sugeridos para escri#ir c-digoA por e'emploA le
advertir* so#re el uso de (unciones o#soletas;
+n P&P 7A el valor por de(ecto es LE_ERROR V E_I,RN0N- V E_+,RSEMA lo /ue en la
pr*ctica representa lo mismo; NoteA sin em#argoA /ue dado /ue las constantes en el archivo
php<.ini de P&P 7 no son soportadasA el valor de errorZreporting all) de#e ser num<ricoX
por lo tantoA es 7;
#6spla?_errors boolean
+ste par*metro determina si los errores de#en ser puestos en pantalla como parte de la salida o
si de#en ser ocultados al usuario;
Nota- +s una caracter)stica de apoyo para su proceso de desarrollo y no de#er)a
ser usada nunca en sistemas en producci-n >p;e'; sistemas conectados a internet?;
#6spla?_startup_errors boolean
Aun cuando displayZerrors est< encendidoA los errores /ue ocurren durante la secuencia de
arran/ue de P&P no son desplegados; +s muy recomenda#le mantener displayZstartupZerrors
apagadoA eFcepto en tiempos de depuraci-n;
loE_errors boolean
.ndica si los mensa'es de error de un script de#en ser registrados en la #it*cora de errores del
servidor o errorZlog; +sta opci-n es por lo tanto espoc)(ica al servidor;
Nota- +s altamente recomenda#le /ue use registro de errores en lugar de
despliegue de errores en sitios Ee# en producci-n;
loE_errors_ma8_len integer
+sta#lece la longitud m*Fima de logZerrors en #ytes; +n errorZlog se aWade in(ormaci-n so#re
la (uente; +l valor por de(ecto es 1308A y un valor de 3 permite /ue no se apli/ue ninguna
longitud m*Fima en a#soluto; +sta longitud se aplica tam#i<n a los errores almacenados en el
registroA a los errores /ue se despliegan y a YphpZerrormsg;
5uando se usa un nBmero enteroA el valor del mismo es medido en #ytes; ,am#i<n se puede
usar la notaci-n reducida tal como se descri#e en esta FAO;
6Enore_repeate#_errors boolean
No registrar mensa'es repetidos; Los errores repetidos de#en ocurrir en el mismo archivoA en
la misma l)nea hasta /ue el par*metro ignoreZrepeatedZsource sea esta#lecido como true;
6Enore_repeate#_source boolean
.gnorar la (uente de mensa'e cuando se ignoran los mensa'es repetidos; 5uando este par*metro
est* encendidoA no se registrar* errores con mensa'es repetidos desde di(erentes (uentes de
archivos;
report_memlea>s boolean
i este par*metro est* apagadoA entonces las (ugas de memoria no ser*n mostradas >en stdout
o en el registro?; +ste valor s-lo tiene e(ecto en una compilaci-n de depuraci-nA y si
errorZreporting incluye +ZLARN.NG en la lista permitida;
trac>_errors boolean
5uando est* ha#ilitadoA el Bltimo mensa'e de error estar* siempre presente en la varia#le
YphpZerrormsg;
html_errors boolean
Permite desha#ilitar las eti/uetas &,ML en los mensa'es de error; +l nuevo (ormato para los
errores en &,ML produce mensa'es con enlaces /ue dirigen al usuario a una p*gina /ue
descri#e el error o (unci-n /ue ha causado el error; +stas re(erencias son a(ectadas por
docre(Zroot y docre(ZeFt;
#ocre9_root string
+l nuevo (ormato de error contiene una re(erencia hacia una p*gina /ue descri#e el error o la
(unci-n /ue ha causado el error; +n el caso de p*ginas de un manualA usted puede descargar el
manual en su idioma y esta#lecer esta directiva ini como la @RL de su copia local; i su copia
local del manual puede encontrarse #a'o HDmanualDH entonces puede usar simplemente
docre#%root>/manual/; Adicionalmente de#e esta#lecer un valor de docre(ZeFt /ue
coincida con las eFtensiones de archivo de su copiaX docre#%ext>.html; +s posi#le usar
re(erencias eFternas; Por e'emploA puede usar docre#%root>http@//manual/en/ o
docre#%root>"http@//landoni0e.it/?ho8>url&theme>classic&#ilter
>Oandon &url>http\<,\CS\CS888.php.net\CS";
Por lo general usted /uerr* /ue el valor de docre(Zroot (inalice con una #arra HDH; Pero o#serve
el segundo e'emplo mencionado anteriormenteA el cual no tiene una #arra (inalA ni la necesita;
Nota- +sta es una caracter)stica de apoyo para su desarrollo ya /ue permite
consultar la descripci-n de una (unci-n (*cilmente; in em#argoA nunca de#e ser
utilizada en sistemas en producci-n >p;e'; sistema conectados a internet?;
#ocre9_e8t string
$ea docre(Zroot;
Nota- +l valor de docre(ZeFt de#e comenzar con un punto H;H;
error_prepen#_str6nE string
5adena a mostrar antes de un mensa'e de error;
error_appen#_str6nE string
5adena a mostrar despu<s de un mensa'e de error;
error_loE string
Nom#re del archivo en donde de#er)an registrarse los errores del script; i se utiliza el valor
especial s?sloEA los errores son enviados al gestor de registros del sistema; +n @niFA esto
/uiere decir syslog>7? y en LindoEs N, /uiere decir el =event log=; +l gestor de registro de
actividades no est* soportado #a'o LindoEs 94; $ea tam#i<nC syslog./;
7arn_plus_oerloa#6nE boolean
i se ha#ilitaA esta opci-n hace /ue P&P genere una advertencia cuando se utilice un operador
m*s >Y? con cadenas; +sto (acilita la la#or de encontrar scripts /ue necesitan ser reescritos
para hacer uso del concatenador de cadenas en su lugar >.?;
Constantes predefinidas
Las constantes listadas a/ui est*n siempre disponi#les a trav<s del =nBcleo P&P=;
Nota- +s posi#le usar estos nom#res de constantes en php.ini pero no por (uera de
P&PA como en httpd.con#A en donde de#er)a usar los valores de m*scara de #its en
su lugar;
Tabla *. Errores y Megistro
Calo
r
Constante Kescripci"n Nota
1
E_ERROR
>integer?
+rrores (atales en tiempo de e'ecuci-n; +stos indican errores
de los /ue no es posi#le recuperarseA tales como pro#lemas de
asignaci-n de memoria; e detiene la e'ecuci-n del script;

0
E_"ARNIN#
>integer?
Advertencias en tiempo de e'ecuci-n >errores no2(atales?; La
e'ecuci-n del script no se interrumpe;

8
E_PARSE
>integer?
+rrores de int<rprete en tiempo de compilaci-n; +sto tipo de
errores de#er)an ser generados Bnicamente por el interprete;

M
E_NOTICE
>integer?
Anotaciones en tiempo de e'ecuci-n; .ndican /ue el script se
ha topado con algo /ue puede indicar la presencia de un errorA
pero /ue tam#i<n podr)a ocurrir en el curso normal de la
e'ecuci-n de un script;

1K
E_CORE_ERROR
>integer?
+rrores (atales /ue ocurren durante el arran/ue inicial de
P&P; +s como un E_ERRORA eFcepto /ue es generado por el
nBcleo de P&P;
a partir
de P&P
8
70
E_CORE_"ARNI
N# >integer?
Advertencias >errores no2(atales? /ue ocurren durante el
arran/ue inicial de P&P; +s como un E_"ARNIN#A eFcepto
/ue es generado por el nBcleo de P&P;
a partir
de P&P
8
K8
E_COMPILE_ER
ROR >integer?
+rrores (atales en tiempo de compilaci-n; +s como un
E_ERRORA eFcepto /ue es generado por el Motor de
cripting de Iend;
a partir
de P&P
8
10M
E_COMPILE_"A
RNIN# >integer?
Advertencias en tiempo de compilaci-n >errores no (atales?;
+s como un E_"ARNIN#A eFcepto /ue es generado por el
Motor de cripting de Iend;
a partir
de P&P
8
04K
E_USER_ERROR
>integer?
Mensa'e de error generado por el usuario; +s como un
E_ERRORA eFcepto /ue es generado desde c-digo P&P
usando la (unci-n trigger>error./;
a partir
de P&P
8
410
E_USER_"ARNI
N# >integer?
Mensa'e de advertencia generado por el usuario; +s como un
E_"ARNIN#A eFcepto /ue es generado desde c-digo P&P
usando la (unci-n trigger>error./;
a partir
de P&P
8
1308
E_USER_NOTIC
E >integer?
Anotaci-n generada por el usuario; +s como un E_NOTICEA
eFcepto /ue es generado desde c-digo P&P usando la (unci-n
trigger>error./;
a partir
de P&P
8
038: E_ALL >integer?
,odos los errores y advertenciasA en la medida en /ue sean
soportadosA eFcepto por el nivel E_STRICT;

038M
E_STRICT
>integer?
Noticias de tiempo de e'ecuci-n; &a#ilite este valor para
hacer /ue P&P sugiera cam#ios en su c-digo /ue velar*n por
la me'or interopera#ilidad y por mantener la compati#ilidad
de su c-digo;
a partir
de P&P
4
Los valores re(eridos anteriormente >ya sean num<ricos o sim#-licos? son usados para construir una
m*scara de #its /ue indica cu*les errores reportar; Puede usar los operadores #it a #it para com#inar
estos valores o eFcluir eFpl)citamente ciertos tipos de errores; in em#argoA note /ue Bnicamente HlHA
HgHA HaHA HkH y HiH ser*n entendidos desde php.iniA y /ue ningBn operador #it a #it ser* interpretado
correctamente desde php<.ini;
E'emplos
A continuaci-n podemos apreciar un e'emplo del uso de las capacidades de gesti-n de errores /ue
vienen con P&P; De(inimos una (unci-n de manipulaci-n de errores /ue registra la in(ormaci-n en
un archivo >usando un (ormato JML?A y env)a un correo electr-nico al desarrollador en caso de /ue
un error cr)tico en la l-gica del so(tEare ocurra;
E'emplo !. )so de gesti"n de errores en un script
<?php
// haremos nuestra propia manipulaci&oacute;n de errores
error%reportinE329;
// #uncion de Eestion de errores de#inida por el usuario
#unction EestorLeErroresLe+suario3$num%err, $mens%err, $nombre%archi=o,
$num%linea, $=ars9
:
// marca de #echa/hora para el reEistro de error
$dt > date3"PFmFd H@i@s 3*9"9;
// de#inir una matri0 asociati=a de cadenas de error
// en realidad las unicas entradas Que deberiamos
// considerar son E%7,'.4.-, E%.?*4RE, E%+&E'%E''?',
// E%+&E'%7,'.4.- y E%+&E'%.?*4RE
$tipo%error > array 3
E%E''?' >> "Error",
E%7,'.4.- >> ",d=ertencia",
E%,'&E >> "Error de 4nt&eacute;rprete",
E%.?*4RE >> ",notaci&oacute;n",
E%R?'E%E''?' >> "Error de .&uacute;cleo",
E%R?'E%7,'.4.- >> ",d=ertencia de .&uacute;cleo",
E%R?"4OE%E''?' >> "Error de Rompilaci&oacute;n",
E%R?"4OE%7,'.4.- >> ",d=ertencia de Rompilaci&oacute;n",
E%+&E'%E''?' >> "Error de +suario",
E%+&E'%7,'.4.- >> ",d=ertencia de +suario",
E%+&E'%.?*4RE >> ",notaci&oacute;n de +suario",
E%&*'4R* >> ",notaci&oacute;n de tiempo de ejecuci&oacute;n"
9;
// conjunto de errores de los cuales se almacenara un rastreo
$errores%de%usuario > array3E%+&E'%E''?', E%+&E'%7,'.4.-, E%+&E'%.?*4RE9;

$err > "<errorentry>Vn";
$err .> "Vt<datetime>" . $dt . "</datetime>Vn";
$err .> "Vt<errornum>" . $num%err . "</errornum>Vn";
$err .> "Vt<errortype>" . $tipo%error)$num%err/ . "</errortype>Vn";
$err .> "Vt<errormsE>" . $mens%err . "</errormsE>Vn";
$err .> "Vt<scriptname>" . $nombre%archi=o . "</scriptname>Vn";
$err .> "Vt<scriptlinenum>" . $num%linea . "</scriptlinenum>Vn";
i# 3in%array3$num%err, $errores%de%usuario99 :
$err .> "Vt<=artrace>" . 8ddx%seriali0e%=alue3$=ars, "(ariables"9 . "</=artrace>Vn";
;
$err .> "</errorentry>VnVn";

// para e#ectos de debuE
// echo $err;
// Euardar en el reEistro de errores, y en=iar un correo
// electr&oacute;nico si hay un error cr&iacute;tico de usuario
error%loE3$err, <, "/usr/local/php1/error.loE"9;
i# 3$num%err >> E%+&E'%E''?'9 :
mail3"phpde=^example.com", "Error Rr&iacute;tico de +suario", $err9;
;
;
#unction distancia3$=ect6, $=ectC9
:
i# 3!is%array3$=ect69 TT !is%array3$=ectC99 :
triEEer%error3"ar&aacute;metros incorrectos, se esperan matrices", E%+&E'%E''?'9;
return .+OO;
;
i# 3count3$=ect69 !> count3$=ectC99 :
triEEer%error3"Oos =ectores deben ser del mismo tama&ntilde;o", E%+&E'%E''?'9;
return .+OO;
;
#or 3$i>2; $i<count3$=ect69; $i[[9 :
Cer tambi%n
$ea tam#i<n syslog./;
Tabla de contenidos
de#ugZ#ac"trace 22 Genera un #ac"trace
de#ugZprintZ#ac"trace 22 .mprime un #ac"trace
errorZlog 22 +nv)a un mensa'e de error a algBn lugar
errorZreporting 22 +sta#lece /ue errores de P&P son in(ormados
restoreZerrorZhandler 22 Recupera la anterior (unci-n de mane'o de errores
restoreZeFceptionZhandler 22 Restores the previously de(ined eFception handler (unction
setZerrorZhandler 22 +sta#lece una (unci-n espec)(ica para el mane'o de errores;
setZeFceptionZhandler 22 ets a user2de(ined eFception handler (unction
triggerZerror 22 Genera un mensa'e de errorDavisoDnoti(icaci-n a nivel de usuario
userZerror 22 Alias de trigger>error./
debug>bacBtrace
>P&P 8 _^ 8;7;3A P&P 4?
de#ugZ#ac"trace 22 Genera un #ac"trace
Kescripci"n
array debug>bacBtrace > void ?
debug>bacBtrace./ genera un #ac"trace P&P y devuelve esta in(ormaci-n como un array
asociativo; Los elementos posi#lemente devueltos son re(erenciados en la siguiente ta#laC
Tabla !. Elementos posiblemente de5ueltos por debug>bacBtrace./
Nombre Tipo Kescripci"n
(unction string +l nom#re de la (unci-n actual; $ea tam#i<n ZZF@N5,.ONZZ;
line integer +l nBmero de l)nea actual; $ea tam#i<n ZZL.N+ZZ;
(ile string +l nom#re del archivo actual; $ea tam#i<n ZZF.L+ZZ;
class string +l nom#re de la clase actual; $ea tam#i<n ZZ5LAZZ
type string
+l tipo de llamada actual; i es una llamada de m<todoA se devuelve =2_=; i es
una llamada a un m<todo est*ticoA se devuelve =CC=; i es una llamada de
(unci-nA no se devuelve nada;
args array
i se encuentra al interior de una (unci-nA contiene una lista de los argumentos
de la (unci-n; i se encuentra al interior de un archivo de inclusi-nA contiene
una lista de los nom#res de archivos inclu)dos;
+l siguiente es un e'emplo sencillo;
E'emplo !. E'emplo de debug>bacBtrace./
<?php
// nombre de archi=o@ a.php
#unction una%prueba3$cadena9
:
echo "VnHola@ $cadena";
=ar%dump3debuE%bacItrace399;
;
una%prueba3MamiEoM9;
?>
<?php
// nombre de archi=o@ b.php
include%once M/tmp/a.phpM;
?>
Resultados de e'ecutar /tmp/b.phpC
Hola@ amiEo
array3C9 :
)2/>>
array319 :
)"#ile"/ >> strinE3629 "/tmp/a.php"
)"line"/ >> int3629
)"#unction"/ >> strinE3J9 "prueba%a"
)"arEs"/>>
array369 :
)2/ >> &strinE359 "amiEo"
;
;
)6/>>
array319 :
)"#ile"/ >> strinE3629 "/tmp/b.php"
)"line"/ >> int3C9
)"arEs"/ >>
array369 :
)2/ >> strinE3629 "/tmp/a.php"
;
)"#unction"/ >> strinE36C9 "include%once"
;
;
$ea tam#i<n trigger>error./ y debug>print>bacBtrace./;
debug>print>bacBtrace
>P&P 4?
de#ugZprintZ#ac"trace 22 .mprime un #ac"trace
Kescripci"n
void debug>print>bacBtrace > void ?
debug>print>bacBtrace./ imprime un #ac"trace P&P;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
$ea tam#i<n debug>bacBtrace./;
error>log
>P&P 7A P&P 8 A P&P 4?
errorZlog 22 +nv)a un mensa'e de error a algBn lugar
Kescripci"n
int error>log > string message PA int messageZtype PA string destination PA string eFtraZheadersQQQ ?
+nv)a un mensa'e de error al log de errores del servidor Ee#A a un puerto ,5P o a un (ichero; +l
primer par*metroA messaEe >mensa'e?A es el mensa'e de error /ue de#e ser registrado; +l segundo
par*metroA messaEe_t?pe >tipo de mensa'e? indica el lugar al /ue de#e dirigirseC
Tabla !. error>log./ tipos de log
3
messaEe es enviado al registro de sistema de P&PA utilizando para ello el mecanismo de registro
del istema Operativo >system logger? o un (icheroA dependiendo del valor de la directiva de
con(iguraci-n errorZlog; Por de(ectoA esta es la opci-n /ue se utiliza;
1
messaEe es enviado por correo electr-nico a la direcci-n del par*metro #est6nat6on >destino?;
+ste es el Bnico tipo de mensa'e donde se utiliza el cuarto par*metroA e8tra_hea#ers; +ste tipo
de mensa'e utiliza la misma (uncion /ue emplea mail./;
0
messaEe es enviado a trav<s de la coneFi-n de depuraci-n de P&P; Por tantoA esta opci-n est*
disponi#le s-lo si la depuraci-n remota ha sido activada; +n este caso el par*metro #est6nat6on
especi(ica el nom#re de host o direcci-n .P yA opcionalmenteA el nBmero de puerto del soc"et
/ue reci#e la in(ormaci-n de depuraci-n;
7 messaEe es aWadido al (ichero #est6nat6on;
Nota- 5uando se esta#lece de (orma eFpl)cita un valor de R al par*metro messaEe_t?peA
no se aWade un car*cter de nueva l)nea al (inal de la cadena messaEe;
A5iso
La depuraci-n remota a trav<s de ,5PD.P es una caracter)stica propia de P&P 7 /ue no est*
disponi#le en P&P 8;
E'emplo !. E'emplos de uso de error>log./
<?php
// En=iar una noti#icaci&oacute;n al loE del ser=idor si no se puede
// conectar a la base de datos.
i# 3!?ra%OoEon3$username, $pass8ord99 :
error%loE3"?racle database not a=ailable!", 29;
;
// Ejemplo de noti#icaci&oacute;n mediante correo electr&oacute;nico
i# 3!3$#oo > allocate%ne8%#oo3999 :
error%loE3"ZiE trouble, 8eMre all out o# S??s!", 6,
"operator^example.com"9;
;
// Sormas de uso alternati=as de error%loE39@
error%loE3"Pou messed up!", C, "6CH.2.2.6@H222"9;
error%loE3"Pou messed up!", C, "loEhost"9;
error%loE3"Pou messed up!", <, "/=ar/tmp/myFerrors.loE"9;
?>
error>reporting
>P&P 7A P&P 8 A P&P 4?
errorZreporting 22 +sta#lece /ue errores de P&P son in(ormados
Kescripci"n
int error>reporting > Pint levelQ ?
La (unci-n error>reporting./ permite esta#lecer la directiva errorZreporting en tiempo de
e'ecuci-n; P&P tiene numerosos niveles de erroresA /ue se pueden seleccionar de manera temporal
>mientras dure la e'ecuci-n del script? mediante esta (unci-n;
error>reporting./ esta#lece el nivel de errores /ue noti(ica P&P y devuelve el nivel anterior; +l
par*metro leel se puede esta#lecer mediante una m*scara de #its o mediante algunas constantes
espec)(icas; e recomienda utilizar las constantes para asegurar la compati#ilidad con versiones
(uturas; La causa de esta posi#le incompati#ilidad es /ue a medida /ue se crean nuevos niveles de
erroresA aumenta el rango de nBmeros utilizado para indicarloA por lo /ue podr)an de'ar de (uncionar
los anteriores niveles de errores indicados num<ricamente;
E'emplo !. E'emplos de error>reporting./
<?php
// Leshabilita la noti#icaci&oacute;n de errores
error%reportinE329;
// .oti#ica errores simples de ejecuci&oacute;n
error%reportinE3E%E''?' T E%7,'.4.- T E%,'&E9;
// +tili0ar E%.?*4RE puede ser &uacute;til tambi&eacute;n 3para noti#icar sobre
// =ariables no iniciali0adas y otros errores de escritura ...9
error%reportinE3E%E''?' T E%7,'.4.- T E%,'&E T E%.?*4RE9;
// .oti#ica todos los errores sal=o E%.?*4RE
// Este ni=el es el =alor por de#ecto establecido en el archi=o php.ini
error%reportinE3E%,OO c E%.?*4RE9;
// .oti#ica todos los errores de H 3en H < se puede utili0ar la m&aacute;scara G<9
error%reportinE3E%,OO9;
// Oo siEuiente es Dalente a error%reportinE3E%,OO9;
ini%set3Merror%reportinEM, E%,OO9;
?>
Los niveles de error disponi#les se muestran a continuaci-n; La eFplicaci-n de cada uno de los
niveles de error se encuentra en la secci-n ;
Tabla !. Constantes y mscaras de bits de los ni5eles de error>reporting./
5alor constante
1 +Z+RROR
0 +ZLARN.NG
8 +ZPAR+
M +ZNO,.5+
5alor constante
1K +Z5OR+Z+RROR
70 +Z5OR+ZLARN.NG
K8 +Z5OMP.L+Z+RROR
10M +Z5OMP.L+ZLARN.NG
04K +Z@+RZ+RROR
410 +Z@+RZLARN.NG
1308 +Z@+RZNO,.5+
038: +ZALL
038M +Z,R.5,
A5iso
Las versiones de P&P _ 4;3;3 tam#i<n incluyen el nivel E_STRICT >valor 038M?; E_ALL NO
incluye el nivel E_STRICT;
Puede consultar tam#i<n la directiva displayZerrors y la (unci-n ini>set./;
restore>error>handler
>P&P 8 _^ 8;3;1A P&P 4?
restoreZerrorZhandler 22 Recupera la anterior (unci-n de mane'o de errores
Kescripci"n
void restore>error>handler > void ?
Despu<s de cam#iar la (unci-n /ue mane'a los erroresA se puede utilizar la (unci-n
set>error>handler./ para volver a la anterior (unci-n de mane'o de errores >sea una (unci-n propia
de P&P o una (unci-n de(inida por el usuario?
Puede consultar tam#i<n las (unciones error>reporting./A set>error>handler./A trigger>error./ y
user>error./
restore>e+ception>handler
>P&P 4?
restoreZeFceptionZhandler 22 Restores the previously de(ined eFception handler (unction
Kescripci"n
#ool restore>e+ception>handler > void ?
@sed a(ter changing the eFception handler (unction using set>e+ception>handler./A to revert to the
previous eFception handler >Ehich could #e the #uilt2in or a user de(ined (unction?; ,his (unction
alEays returns TRUE;
ee also set>e+ception>handler./A set>error>handler./A restore>error>handler./
error>reporting./
set>error>handler
>P&P 8 _^ 8;3;1A P&P 4?
setZerrorZhandler 22 +sta#lece una (unci-n espec)(ica para el mane'o de errores;
Kescripci"n
string set>error>handler > string errorZhandler ?
+sta#lece una (unci-n de(inida por el usuario >error_han#ler? para el mane'o de los errores dentro
de un script; Devuelve el anterior mane'ador de errores >si es /ue eFiste alguno? o FALSE si se
produce un error; +sta (unci-n se utiliza para de(inir un m<todo espec)(ico de mane'o de los errores
/ue se producen en tiempo de e'ecuci-n; Por e'emploA se puede utilizar en aplicaciones /ue
re/uieran un tratamiento especial de algunos datosDarchivos cuando se produce un error cr)tico o
cuando se lanza un determinado error >utilizando la (unci-n trigger>error./?
La (unci-n /ue se /uiere utilizar para el mane'o de errores de#e aceptar 0 par*metrosC el c-digo de
error y una cadena de teFto /ue descri#e el error producido; A continuaci-n se muestra un e'emplo
de uso de eFcepciones mediante el lanzamiento de errores y su mane'o con una (unci-n de(inida por
el usuarioC
E'emplo !. Mane'o de errores con las funciones set>error>handler./ y trigger>error./
<?php
// Le#iniciin de las constantes de error del usuario F solo H1
de#ine 3S,*,O,E%+&E'%E''?'9;
de#ine 3E''?',E%+&E'%7,'.4.-9;
de#ine 37,'.4.-,E%+&E'%.?*4RE9;
// Establecer el ni=el de errores noti#icado en este script
error%reportinE 3S,*,O [ E''?' [ 7,'.4.-9;
// Sunciin de manejo de errores
#unction myErrorHandler 3$errno, $errstr9 :
s8itch 3$errno9 :
case S,*,O@
echo "<b>S,*,O</b> )$errno/ $errstr<br>Vn";
echo " Satal error in line ".%%O4.E%%." o# #ile ".%%S4OE%%;
echo ", H ".H%(E'&4?.." 3".H%?&."9<br>Vn";
echo ",bortinE...<br>Vn";
exit F6;
breaI;
case E''?'@
echo "<b>E''?'</b> )$errno/ $errstr<br>Vn";
breaI;
case 7,'.4.-@
echo "<b>7,'.4.-</b> )$errno/ $errstr<br>Vn";
breaI;
de#ault@
echo "+nIo8n error type@ )$errno/ $errstr<br>Vn";
breaI;
;
;
// Sunciin par probar el manejo de errores
#unction scale%by%loE 3$=ect, $scale9 :
i# 3 !is%numeric3$scale9 TT $scale <> 2 9
triEEer%error3"loE3x9 #or x <> 2 is unde#ined, you used@ scale > $scale",
S,*,O9;
i# 3!is%array3$=ect99 :
triEEer%error3"4ncorrect input =ector, array o# =alues expected", E''?'9;
return null;
;
#or 3$i>2; $i<count3$=ect9; $i[[9 :
i# 3!is%numeric3$=ect)$i/99
triEEer%error3"(alue at position $i is not a number, usinE 2 30ero9",
7,'.4.-9;
$temp)$i/ > loE3$scale9 W $=ect)$i/;
;
return $temp;
;
// Establecer la #unciin de manejo de errores
$old%error%handler > set%error%handler3"myErrorHandler"9;
// Oan0amiento de alEunos errores. En primer luEar se de#ine un array mixto con un elemento no numBrico
echo "=ector aVn";
$a > array3C,<,"#oo",5.5,1<.<,C6.669;
print%r3$a9;
// Rrear un nue=o array, Eenerando un a=iso
echo "FFFFVn=ector b F a 8arninE 3b > loE349 W a9Vn";
$b > scale%by%loE3$a, "%49;
print%r3$b9;
// Oo siEuiente produce un error, ya Que se pasa una cadena de texto en luEar de un array
echo "FFFFVn=ector c F an errorVn";
$c > scale%by%loE3"not array",C.<9;
=ar%dump3$c9;
// , continuaciin se produce un error crgtico, ya Que no este de#inido el loEaritmo
// de un nhmero neEati=o o iEual a cero
echo "FFFFVn=ector d F #atal errorVn";
$d > scale%by%loE3$a, FC.59;
5uando se e'ecuta el anterior e'emploA el resultado ser* similar al siguienteC
=ector a
,rray
3
)2/ >> C
)6/ >> <
)C/ >> #oo
)</ >> 5.5
)1/ >> 1<.<
)5/ >> C6.66
9
FFFF
=ector b F a 8arninE 3b > loE349 W a9
<b>7,'.4.-</b> )62C1/ (alue at position C is not a number, usinE 2 30ero9<br />
,rray
3
)2/ >> C.CJK15KHH6GKJJ
)6/ >> <.1<16JKG5H51JC
)C/ >> 2
)</ >> G.CKG261<HC6H6H
)1/ >> 1K.5GGJ2125HCHK
)5/ >> C1.6G5C1HJK2CJ6
9
FFFF
=ector c F an error
<b>E''?'</b> )56C/ 4ncorrect input =ector, array o# =alues expected<br />
.+OO
FFFF
=ector d F #atal error
<b>S,*,O</b> )C5G/ loE3x9 #or x <> 2 is unde#ined, you used@ scale > FC.5<br />
Satal error in line <G o# #ile triEEer%error.php, H 1.2.C 3Oinux9<br />
,bortinE...<br />
@n aspecto importante a tener en cuenta cuando se utiliza un mane'ador propio es /ue el mane'ador
de errores de P&P se desha#ilita por completo >de (orma temporal?; De esta (ormaA los cam#ios
e(ectuados con la (unci-n error>reporting./ no tienen ningBn e(ectoA ya /ue se utilizar*
eFclusivamente la (unci-n mane'adora de errores de(inida por el usuario; No o#stanteA se puede
consultar el valor almacenado en errorZreporting y actuar en consecuencia; Adem*sA es necesario
tener presente /ue el valor almacenado en errorZreporting ser* igual a 3 si la sentencia /ue origin-
el error tiene como pre(i'o el operador G ;
Adem*sA la (unci-n mane'adora de errores de#er* hacer uso de la (unci-n die./ si es necesario; i la
(unci-n mane'adora de errores deuelve un valorA la e'ecucicpqrcdesn del script continuar* en la
sentencia siguiente a la /ue origin- el error;
Nota- i se produce un error antes de /ue se e'ecute el script >por e'emplo cuando se
su#e un archivo?A no se puede utilizar un mane'ador creado por el usuarioA ya /ue en ese
momento aBn no ha sido registrado;
Nota- +l segundo par*metro error_t?pes se introdu'o a partir de P&P 4;
Puede consultar tam#i< las (unciones error>reporting./A restore>error>handler./A trigger>error./
y user>error./
set>e+ception>handler
>P&P 4?
setZeFceptionZhandler 22 ets a user2de(ined eFception handler (unction
Kescripci"n
string set>e+ception>handler > call#ac" eFceptionZhandler ?
ets the de(ault eFception handler i( an eFception is not caught Eithin a tryDcatch #loc"; +Fecution
Eill stop a(ter the e8cept6on_han#ler is called;
,he e8cept6on_han#ler must #e de(ined #e(ore calling set>e+ception>handler./; ,his (unction
needs to accept one parameterA Ehich Eill #e the eFception o#'ect that Eas throEn;
exception_handler > o#'ect eFception ?
e8cept6on
Name o( (unction to #e called Ehen an uncaught eFception occurs;
:ista de parmetros
e8cept6on_han#ler
Name o( (unction to #e called Ehen an uncaught eFception occurs;
Calores retornados
Returns the previously de(ined eFception handlerA or FALSE on error; .( no previous handler Eas
de(inedA an empty string is returned;
E'emplos
E'emplo !. set>e+ception>handler./ e+ample
<?php
#unction exception%handler3$exception9 :
echo "+ncauEht exception@ " , $exceptionF>Eet"essaEe39, "Vn";
;
set%exception%handler3Mexception%handlerM9;
thro8 ne8 Exception3M+ncauEht ExceptionM9;
echo ".ot ExecutedVn";
?>
Cer tambi%n
restore>e+ception>handler./A restore>error>handler./A error>reporting./A in(ormation a#out the
call#ac" typeA A y P&P 4 +Fceptions;
trigger>error
>P&P 8 _^ 8;3;1A P&P 4?
triggerZerror 22 Genera un mensa'e de errorDavisoDnoti(icaci-n a nivel de usuario
Kescripci"n
#ool trigger>error > string errorZmsg PA int errorZtypeQ ?
+sta (unci-n se utiliza generalmente para lanzar mensa'es de error; e puede usar 'unto con el
mane'ador de errores interno de P&P o con (unciones mane'adoras de error creadas por el usuario
>set>error>handler./?; olamente (unciona con la (amilia de constantes +Z@+R y por de(ecto lo
har* con E_USER_NOTICE;
+l valor devuelto ser* FALSE si se especi(ica un valor de error_t?pe incorrecto y TRUE en
cual/uier otro caso;
La mayor utilidad de esta (unci-n es la de generar respuestas personalizadas a las eFcepciones en
tiempo de e'ecuci-n; Por e'emploC
<?php
i# 3assert3$di=isor >> 299 :
triEEer%error3"Rannot di=ide by 0ero", E%+&E'%E''?'9;
;
?>
Nota- Puede consultar la (unci-n set>error>handler./ para ver un e'emplo mcdeos
eFtenso;
Nota- +l par*metro error_msE tiene un l)mite de 1308 caracteres; La (unci-n trunca
cual/uier valor superior a 1308;
Puede consultar tam#i<n las (unciones error>reporting./A set>error>handler./A
restore>error>handler./ y las constantes de nivel de error;
user>error
userZerror 22 Alias de trigger>error./
Kescripci"n
e trata de un alias de la (unci-n trigger>error./;
IIII. ;unciones de E'ecuci"n de Programas
Introducci"n
+stas (unciones proveen medios para e'ecutar comandos en el sistema mismoA y medios para
proveer seguridad con tales comandos;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Cer tambi%n
+stas (unciones se relacionan estrechamente tam#i<n con el operador de comilla invertida;
AsimismoA cuando se encuentre #a'o sa(e modeA de#e considerar la directiva sa(eZmodeZeFecZdir;
Tabla de contenidos
escapeshellarg 22 +scapar una cadena a ser usada como argumento del int<rprete de comandos
escapeshellcmd 22 enmascara los metacaracteres del int<rprete de ordenes
eFec 22 +'ecuta un programa eFterno
passthru 22 +'ecuta un programa eFterno y muestra su salida literal
procZclose 22 5ierra un proceso a#ierto por proc>open./ y devuelve el c-digo de salida del
proceso;
procZgetZstatus 22 O#tiene in(ormaci-n so#re un proceso a#ierto por proc>open./
procZnice 22 Modi(icar la prioridad del proceso actual
procZopen 22 +'ecutar un comando y a#rir apuntadores de archivo para entradaDsalida
procZterminate 22 mata un proceso a#ierto por procZopen
shellZeFec 22 +'ecutar un comando mediante el int<rprete de comandos y devolver la salida
completa como una cadena
system 22 +'ecutar un programa eFterno y mostrar su salida
escapeshellarg
>P&P 8 _^ 8;3;7A P&P 4?
escapeshellarg 22 +scapar una cadena a ser usada como argumento del int<rprete de comandos
Kescripci"n
string escapeshellarg > string arg ?
escapeshellarg./ agrega comillas sencillas alrededor de una cadena y rodea de comillasDescapa
cual/uier comilla sencilla eFistenteA permiti<ndole pasar la cadena directamente a una (unci-n del
int<rprete de comandosA y logrando /ue sea tratada como un solo argumento seguro; +sta (unci-n
de#e ser usada para escapar argumentos individuales a (unciones del int<rprete de comandos /ue
provienen de la entrada del usuario; Las (unciones del int<rprete de comandos incluyen e+ec./A
system./ y el operador de comilla invertida; @na (orma regular de usar esta (unci-n ser)aC
<?php
system3Mls M.escapeshellarE3$dir99;
?>
$ea tam#i<n escapeshellcmd./A e+ec./A popen./A system./A y el operador de comillas invertidas;
escapeshellcmd
>P&P 7A P&P 8 A P&P 4?
escapeshellcmd 22 enmascara los metacaracteres del int<rprete de ordenes
Kescripci"n
string escapeshellcmd > string command ?
Escape,hellCmd./ enmascara cual/uier car*cter en una cadena de caracteres /ue pueda usarse para
introducir (raudulentamente una orden al int<rprete de -rdenes para /ue <ste e'ecute instrucciones
ar#itrarias; +sta (unci-n se de#er)a usar para asegurarse /ue cual/uier dato /ue venga del usuario se
enmascare antes de /ue <ste se le pase a las (unciones e+ec./ o system./A o al operador m >ap-stro(e
invertido? ; @n uso ha#itual podr)a serC
system3Escape&hellRmd3$cmd99
$<ase tam#i<n e+ec./A popen./A system./A y el operador m >ap-stro(e invertido?;
e+ec
>P&P 7A P&P 8 A P&P 4?
eFec 22 +'ecuta un programa eFterno
Kescripci"n
string e+ec > string command PA string array PA int returnZvarQQ ?
e+ec./ e'ecuta la orden indicada en comman#A sin em#argo no produce ninguna salida; implemente
devuelve la Bltima l)nea de la salida resultado de la orden; i necesita e'ecutar una orden y o#tener
directamente todos los datos devueltos por la orden sin ninguna inter(erenciaA use la (unci-n
PassThru./;
i el par*metro arra? eFisteA entonces el array especi(icado se rellenar* con cada una de las l)neas
de la salida producida por la orden; Notar /ue si el array ya contiene algunos elementosA e+ec./ los
aWadir* al (inal del array; i no /uiere /ue la (unci-n aWada dichos elementosA haga un unset./ so#re
el array antes de pas*rselo a e+ec./;
i el par*metro return_ar eFiste a la vez /ue el par*metro arra?A entonces el valor de retorno de la
orden e'ecutada se guardar* en dicha varia#le;
Destacar /ue si usted va a permitir /ue se pasen datos provenientes de usuarios a esta (unci-nA
entonces de#er)a usar Escape,hellCmd./ para asegurarse de /ue los usuarios no pueden engaWar al
sistema para e'ecutar instrucciones ar#itrarias;
$<ase tam#i<n system./A PassThru./A popen./A Escape,hellCmd./A y el operador m >ap-stro(e
invertido?;
passthru
>P&P 7A P&P 8 A P&P 4?
passthru 22 +'ecuta un programa eFterno y muestra su salida literal
Kescripci"n
string passthru > string command PA int returnZvarQ ?
La (unci-n passthru./ es similar a la (unci-n e+ec./ en /ue e'ecuta una orden >comman#?; i eFiste
el par*metro return_arA el valor de estado devuelto por la orden @niF se guardar* ah); +sta (unci-n
de#er)a usarse en lugar de e+ec./ o system./ cuando la salida de la orden @niF sean datos #inarios
/ue de#an ser pasados directamente al navegador; @n uso t)pico de ello es e'ecutar algo como las
utilidades p#mplus las cuales pueden dar como resultado directamente el (lu'o de datos de una
imagen; Poniendo el content2type a 6maEe/E69 y llamando al programa p#mplus para mostrar un gi(A
usted puede crear archivos de -rdenes P&P /ue generen directamente im*genes;
$<ase tam#i<n e+ec./A system./A popen./A Escape,hellCmd./A y el operador m >ap-stro(e invertido?;
proc>close
>P&P 8 _^ 8;7;3A P&P 4?
procZclose 22 5ierra un proceso a#ierto por proc>open./ y devuelve el c-digo de salida del
proceso;
Kescripci"n
int proc>close > resource proceso ?
proc>close./ es similar a pclose./A eFcepto /ue solo tra#a'a con procesos a#iertos por proc>open./;
proc>close./ espera a /ue el proceso termineA y devuelve su c-digo de salida; i tiene pipes a#iertos
con ese procesoA de#e usar fclose./ so#re ellos antes de llamar esta (unci-nA con el prop-sito de
evitar #lo/ueos muertos 2 puede /ue el proceso hi'o no pueda salir mientras los pipes se encuentren
a#iertos;
proc>get>status
>P&P 4?
procZgetZstatus 22 O#tiene in(ormaci-n so#re un proceso a#ierto por proc>open./
Kescripci"n
array proc>get>status > resource proceso ?
proc>get>status./ recupera in(ormaci-n so#re un proceso a#ierto mediante el uso de proc>open./;
Los datos recolectados son devueltos en una matriz /ue contiene los siguientes elementosC
elemento tipo descripci"n
comman
d
string la cadena del comando /ue (ue pasada a proc>open./
pid int id del proceso
running bool TRUE si el proceso aun est* siendo e'ecutadoA FALSE si ha terminado
signaled bool
TRUE si el proceso hi'o ha sido terminado por una seWal no atrapada; +n
EindoEsA este valor siempre es FALSE;
stopped bool
TRUE si el proceso hi'o (ue detenido por una seWal; +n EindoEsA este valor
siempre es FALSE;
eFitcode int
el c-digo de salida devuelto por el proceso >el cual tiene sentido Bnicamente si
runn6nE es FALSE?
termsig int
el nBmero de la seWal /ue caus- /ue el proceso hi'o (inalizara su e'ecuci-n >s-lo
tiene sentido si s6Enale# es TRUE?
stopsig int
el nBmero de la seWal /ue caus- /ue el proceso hi'o detuviera su e'ecuci-n >s-lo
tiene sentido si stoppe# es TRUE?
$ea tam#i<n proc>open./;
proc>nice
>P&P 4?
procZnice 22 Modi(icar la prioridad del proceso actual
Kescripci"n
#ool proc>nice > int incremento ?
proc>nice./ modi(ica la prioridad del proceso actual por la cantidad especi(icada en 6ncremento; @n
6ncremento positivo reducir* la prioridad del proceso actualA mientras /ue un 6ncremento negativo la
incrementar*; i ocurre un errorA como /ue el usuario carezca de permisos para modi(icar la
prioridadA un error de nivel E_"ARNIN# es generadoA y se devuelve FALSE; De otro modoA se
devuelve TRUE;
Nota- proc>nice./ eFistir* Bnicamente si su sistema tiene soporte para HniceH; HniceH est*
de(inido de acuerdo a los est*ndaresC $r8A $.D +J,A A,i,A JDOP+NA BD 8;7;
+sto /uiere decir /ue proc>nice./ no est* disponi#le en EindoEs;
La (unci-n proc>nice./ no se encuentra relacionada con proc>open./ ni sus (unciones asociadas en
ninguna (orma;
proc>open
>P&P 8 _^ 8;7;3A P&P 4?
procZopen 22 +'ecutar un comando y a#rir apuntadores de archivo para entradaDsalida
Kescripci"n
resource proc>open > string cmdA array especZdescriptorA array ipipes PA string cEd PA array env PA
array otrasZopcionesQQQ ?
proc>open./ es similar a popen./ pero provee un grado de control mucho mayor so#re la e'ecuci-n
del programa; cm# es el comando a ser e'ecutado por el int<rprete de comandos; espec_#escr6ptor es
una matriz indeFada en donde la clave representa el nBmero de descriptor y el valor representa el
modo como P&P pasar* ese descriptor al proceso hi'o; p6pes ser* de(inido como una matriz
indeFada de apuntadores a archivo /ue corresponden a los puntos de comunicaci-n con P&P de
todo pipe /ue sea creado; +l valor de retorno es un recurso /ue representa el procesoX usted de#e
li#erarlo usando proc>close./ una vez haya terminado de usarlo;
<?php
$espec%descriptor > array3
2 >> array3"pipe", "r"9, // stdin es un pipe usado por el hijo para lectura
6 >> array3"pipe", "8"9, // stdout es un pipe usado por el hijo para escritura
C >> array3"#ile", "/tmp/errorFoutput.txt", "a"9 // stderr es un archi=o para escritura
9;
$proceso > proc%open3"php", $espec%descriptor, $pipes9;
i# 3is%resource3$proceso99 :
// $pipes ahora luce de esta #orma@
// 2 >> Eestor de escritura conectado con la entrada estandar del hijo
// 6 >> Eestor de lectura conectado con la salida estandar del hijo
// RualQuier mensaje de salida de error sera adicionado a /tmp/errorFoutput.txt
#8rite3$pipes)2/, "<?php echo V"&iexcl;Hola mundo!V"; ?>"9;
#close3$pipes)2/9;
8hile 3!#eo#3$pipes)6/99 :
echo #Eets3$pipes)6/, 62C19;
;
#close3$pipes)6/9;
// Es importante Que cierre todos los pipes antes de llamar
// proc%close para e=itar un bloQueo muerto
$ret=al > proc%close3$proceso9;
echo "el comando ha de=uelto $ret=alVn";
;
?>
P&P 4R50 introduce soporte pty para sistemas con ptys @niF9M; +sto le permite a su script
interactuar con aplicaciones /ue esperan estar ha#lando con una terminal; @na pty tra#a'a como un
pipeA pero es #i2direccionalA as) /ue no hay necesidad de especi(icar un modo de lecturaDescritura; +l
siguiente e'emplo muestra c-mo usar una ptyX note /ue no necesita tener todos los descriptores
ha#lando con una pty; Note tam#i<n /ue solo una pty es creadaA incluso cuando pty se especi(ica 7
veces; +n una versi-n (utura de P&PA puede /ue sea posi#le hacer m*s /ue simplemente leer y
escri#ir a la pty;
<?php
// Rrear una pseudo terminal para el proceso hijo
$espec%descriptor > array3
2 >> array3"pty"9,
6 >> array3"pty"9,
C >> array3"pty"9
9;
$proceso > proc%open3"c=s Fd@pser=er@c=sread^c=s.php.net@/repository loEin", $espec%descriptor, $pipes9;
i# 3is%resource3$proceso99 :
// trabaje con el recurso aQui
;
?>
Los nBmeros de descriptor de archivo en espec_#escr6ptor no est*n limitados a 3A 1 y 0 2 usted
puede especi(icar cual/uier nBmero de descriptor de archivo v*lido y <ste ser* pasado al proceso
hi'o; +sto le permite a su script interoperar con otros scripts /ue corran como =co2procesos=; +n
particularA esto es Btil para pasar contraseWas a programas como PGPA GPG y openssl en un modo
m*s seguro; ,am#i<n es Btil para la lectura de in(ormaci-n de status entregada por a/uellos
programas en descriptores de archivo auFiliares;
Nota- 5ompati#ilidad con EindoEsC Los descriptores m*s all* de 0 >stderr? son
entregados al proceso hi'o como gestores hereda#lesA pero ya /ue la ar/uitectura
EindoEs no asocia nBmeros de descriptor de archivo con gestores de #a'o nivelA el
proceso hi'o no dispone >aun? de un medio para acceder a esos gestores; tdinA stdout y
stderr (uncionan como es de esperar;
Nota- i s-lo necesita un pipe de proceso uni2direccional >una2v)a?A use popen./ en su
lugarA ya /ue es mucho m*s (*cil de usar;
$ea tam#i<n stream>select./A e+ec./A system./A passthru./A popen./A escapeshellcmd./A y el
operador de comilla invertida;
proc>terminate
>P&P 4?
procZterminate 22 mata un proceso a#ierto por procZopen
Kescripci"n
int proc>terminate > resource proceso PA int senyalQ ?
+nv)a una seWal al proceso >creado usando proc>open./? indicando /ue de#er)a terminar;
proc>terminate./ retorna inmediatamente y no espera a /ue el proceso termine;
La sen?al opcional es Btil Bnicamente en sistemas operativos PO.JX puede especi(icar una seWal a
ser enviada al proceso usando la llamada del sistema >6llL2M; La seWal predeterminada es S0-TERM;
proc>terminate./ le permite terminar el proceso y continuar con otras tareas; Puede consultar el
estado del proceso >para ver si ya se ha detenido? usando la (unci-n proc>get>status./;
$ea tam#i<n proc>open./A proc>close./A y proc>get>status./;
shell>e+ec
>P&P 8 A P&P 4?
shellZeFec 22 +'ecutar un comando mediante el int<rprete de comandos y devolver la salida
completa como una cadena
Kescripci"n
string shell>e+ec > string cmd ?
+sta (unci-n es id<ntica al operador de comillas invertidas;
E'emplo !. )n e'emplo de shell>e+ec./
<?php
$salida > shell%exec3Mls FlartM9;
echo "<pre>$salida</pre>";
?>
Nota- +sta (unci-n no est* ha#ilitada en sa(e2mode >modo2seguro?
$ea tam#i<n e+ec./ y escapeshellcmd./;
system
>P&P 7A P&P 8 A P&P 4?
system 22 +'ecutar un programa eFterno y mostrar su salida
Kescripci"n
string system > string comando PA int ivalZretornoQ ?
system./ es similar a la versi-n 5 de la (unci-n de mismo nom#reA dado /ue e'ecuta el coman#o
dado y muestra el resultado; i se entrega una varia#le como segundo argumentoA entonces el c-digo
de status devuelto por el comando e'ecutado ser* escrito en esta varia#le;
A5iso
i se va a permitir /ue datos provenientes del usuario sean enviados a esta (uncionA ha#ria /ue
utilizar escapeshellarg./ o escapeshellcmd./ para asegurarse /ue el usuario no intenta engaWar al
sistema para /ue e'ecute comandos ar#itrarios;
Nota- i arrancamos un programa con esta (uncion y /ueremos de'arlo e'ecutandose en
segundo planoA hay /ue asegurarse /ue el resultado del mismo es redireccionado a un
(ichero u otra salida o P&P se parara hasta /ue la e'ecucion del programa termine;
La llamada a system./ tam#i<n intenta volcar autom*ticamente el #B(er de salida del servidor Ee#
despu<s de cada l)nea de salidaA si P&P est* corriendo como un m-dulo de servidor;
Devuelve la Bltima l)nea de la salida del comando en caso de <FitoA y FALSE si se presenta algBn
(allo;
i necesita e'ecutar un comando y reci#ir de vuelta todo los datos del mismo sin inter(erenciasA use
la (unci-n passthru./;
E'emplo !. E'emplo de system./
<?php
echo M<pre>M;
// "uestra el resultado completo del comando "ls", y de=uel=e la
// ultima linea de la salida en $ultima%linea. ,lmacena el =alor de
// retorno del comando en $ret=al.
$ultima%linea > system3MlsM, $ret=al9;
// 4mprimir in#ormacion adicional
echo M
</pre>
<hr />+ltima linea de la salida@ M . $ultima%linea . M
<hr />(alor de retorno@ M . $ret=al;
?>
Nota- 5uando sa(e mode esta activadoA solamente se pueden e'ecutar los programas /ue
se encuentren en sa(eZmodeZeFecZdir; Por razones practicasA no se permite el uso de ..
en el PA,& del programa;
A5iso
5on sa(e mode activadoA todas las pala#ras /ue siguan al comando inicial son tratadas como un
solo argumento; AsiA echo ? V echo 8 se interpreta como echo *? V echo 8*;
$ea tam#i<n e+ec./A passthru./A popen./A escapeshellcmd./A pcntl>e+ec./ y el operador de comilla
invertida;
IIIII. E+if ;unctions
Introducci"n
Lith the eFi( eFtension you are a#le to Eor" Eith image meta data; For eFampleA you may use eFi(
(unctions to read meta data o( pictures ta"en (rom digital cameras #y Eor"ing Eith in(ormation
stored in the headers o( the !P+G and ,.FF images;
Me?uirimientos
%our P&P must #e compiled in Eith ==ena1le=e869; P&P does not re/uire any additional li#rary (or
the eFi( module; LindoEs users must also have the m#string eFtension ena#led;
Instalaci"n
,o ena#le eFi(2support con(igure P&P Eith ==ena1le=e869
LindoEs users must ena#le #oth the php%mbstrinE.dll and php%exi#.dll DLLHs in
php.ini; ,he php%mbstrinE.dll DLL must #e loaded 1e9ore the php%exi#.dll DLL so
ad'ust your php.ini accordingly;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
+Fi( supports automatically conversion (or @nicode and !. character encodings o( user comments
Ehen module m#string is availa#le; ,his is done #y (irst decoding the comment using the speci(ied
characterset; ,he result is then encoded Eith another characterset Ehich should match your !TT+
output;
Tabla !. E+if configuration options
Name Kefault Changeable
eFi(;encodeZunicode
=.O2MM492
14=
P&PZ.N.ZALL
eFi(;decodeZunicodeZmotorol
a
=@520B+= P&PZ.N.ZALL
eFi(;decodeZunicodeZintel =@520L+= P&PZ.N.ZALL
eFi(;encodeZ'is == P&PZ.N.ZALL
eFi(;decodeZ'isZmotorola =!.= P&PZ.N.ZALL
eFi(;decodeZ'isZintel =!.= P&PZ.N.ZALL
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
e869.enco#e_un6co#e string
e869.enco#e_un6co#e de(ines the characterset @N.5OD+ user comments are handled; ,his
de(aults to .O2MM49214 Ehich should Eor" (or most non Asian countries; ,he setting can #e
empty or must #e an encoding supported #y m#string; .( it is empty the current internal
encoding o( m#string is used;
e869.#eco#e_un6co#e_motorola string
e869.#eco#e_un6co#e_motorola de(ines the image internal characterset (or @nicode encoded
user comments i( image is in motorola #yte order >#ig2endian?; ,his setting cannot #e empty
#ut you can speci(y a list o( encodings supported #y m#string; ,he de(ault is @520B+;
e869.#eco#e_un6co#e_6ntel string
e869.#eco#e_un6co#e_6ntel de(ines the image internal characterset (or @nicode encoded user
comments i( image is in intel #yte order >little2endian?; ,his setting cannot #e empty #ut you
can speci(y a list o( encodings supported #y m#string; ,he de(ault is @520L+;
e869.enco#e_U6s string
e869.enco#e_U6s de(ines the characterset !. user comments are handled; ,his de(aults to an
empty value Ehich (orces the (unctions to use the current internal encoding o( m#string;
e869.#eco#e_U6s_motorola string
e869.#eco#e_U6s_motorola de(ines the image internal characterset (or !. encoded user
comments i( image is in motorola #yte order >#ig2endian?; ,his setting cannot #e empty #ut
you can speci(y a list o( encodings supported #y m#string; ,he de(ault is !.;
e869.#eco#e_U6s_6ntel string
e869.#eco#e_U6s_6ntel de(ines the image internal characterset (or !. encoded user comments i(
image is in intel #yte order >little2endian?; ,his setting cannot #e empty #ut you can speci(y a
list o( encodings supported #y m#string; ,he de(ault is !.;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
E%IF_USE_M(STRIN# >integer?
,he e+if>imagetype./ lists several related #uilt2in constants;
Tabla de contenidos
eFi(Zimagetype 22 Determine the type o( an image
eFi(ZreadZdata 22 Reads the +J.F headers (rom !P+G or ,.FF
eFi(Ztagname 22 Get the header name (or an indeF
eFi(Zthum#nail 22 Retrieve the em#edded thum#nail o( a ,.FF or !P+G image
readZeFi(Zdata 22 Alias o( e+if>read>data./
e+if>imagetype
>P&P 8 _^ 8;7;3A P&P 4?
eFi(Zimagetype 22 Determine the type o( an image
Kescripci"n
int e+if>imagetype > string (ilename ?
e+if>imagetype./ reads the (irst #ytes o( an image and chec"s its signature;
e+if>imagetype./ can #e used to avoid calls to other eFi( (unctions Eith unsupported (ile types or in
con'unction Eith '_SER(ER)<!TT+_,CCE+T<. to chec" Ehether or not the vieEer is a#le to see a
speci(ic image in the #roEser;
:ista de parmetros
96lename
,he image #eing chec"ed;
Calores retornados
Lhen a correct signature is (oundA the appropriate constant value Eill #e returned otherEise the
return value is FALSE; ,he return value is the same value that getimagesi6e./ returns in indeF 0 #ut
e+if>imagetype./ is much (aster;
Megistro de cambios
Cersi"n Kescripci"n
8;7;0
upport (or !P5A !P0A !PJA !B0A JBMA and
LBMP
8;7;3 upport (or L5
Constantes predefinidas
,he (olloEing constants are de(inedA and represent possi#le e+if>imagetype./ return valuesC
Tabla !. Imagetype Constants
Calue Constant
1 IMA#ETYPE_#IF
0 IMA#ETYPE_'PE#
7 IMA#ETYPE_PN#
8 IMA#ETYPE_S"F
4 IMA#ETYPE_PSD
K IMA#ETYPE_(MP
: IMA#ETYPE_TIFF_II >intel #yte order?
M IMA#ETYPE_TIFF_MM >motorola #yte order?
9 IMA#ETYPE_'PC
13 IMA#ETYPE_'P*
11 IMA#ETYPE_'P%
10 IMA#ETYPE_'(*
17 IMA#ETYPE_S"C
18 IMA#ETYPE_IFF
14 IMA#ETYPE_"(MP
1K IMA#ETYPE_%(M
E'emplos
E'emplo !. e+if>imagetype./ e+ample
<?php
i# 3exi#%imaEetype3MimaEe.Ei#M9 !> 4",-E*PE%-4S9 :
echo M*he picture is not a Ei#M;
;
?>
Cer tambi%n
getimagesi6e./
e+if>read>data
>P&P 8 _^ 8;0;3A P&P 4?
eFi(ZreadZdata 22 Reads the +J.F headers (rom !P+G or ,.FF
Kescripci"n
array e+if>read>data > string (ilename PA string sections PA #ool arrays PA #ool thum#nailQQQ ?
e+if>read>data./ reads the +J.F headers (rom a !P+G or ,.FF image (ile; ,his Eay you can read
meta data generated #y digital cameras;
+Fi( headers tend to #e present in !P+GD,.FF images generated #y digital camerasA #ut
un(ortunately each digital camera ma"er has a di((erent idea o( hoE to actually tag their imagesA so
you canHt alEays rely on a speci(ic +Fi( header #eing present;
!e6Eht and I6#th are computed the same Eay getimagesi6e./ does so their values must not #e part
o( any header returned; AlsoA html is a heightDEidth teFt string to #e used inside normal &,ML;
Lhen an +Fi( header contains a 5opyright noteA this itsel( can contain tEo values; As the solution is
inconsistent in the +Fi( 0;13 standardA the 5OMP@,+D section Eill return #oth entries
Cop?r6Eht.+hotoErapher and Cop?r6Eht.E#6tor Ehile the .FD3 sections contains the #yte array Eith
the N@LL character that splits #oth entries; Or 'ust the (irst entry i( the datatype Eas Erong >normal
#ehaviour o( +Fi(?; ,he 5OMP@,+D Eill also contain the entry Cop?r6Eht Ehich is either the
original copyright stringA or a comma separated list o( the photo and editor copyright;
,he tag @ser5omment has the same pro#lem as the 5opyright tag; .t can store tEo values; First the
encoding usedA and second the value itsel(; .( so the .FD section only contains the encoding or a #yte
array; ,he 5OMP@,+D section Eill store #oth in the entries UserCommentEnco#6nE and
UserComment; ,he entry UserComment is availa#le in #oth cases so it should #e used in pre(erence
to the value in .FD3 section;
Nota- LindoEs M+DJP can #oth Eipe the +Fi( headers Ehen connecting to a camera;
More in(ormation availa#le at httpCDDEEE;canon;co;'pD.magingDNO,.5+D3110182
e;html;
:ista de parmetros
96lename
,he name o( the image (ile #eing read; ,his cannot #e an @RL;
sect6ons
.s a comma separated list o( sections that need to #e present in (ile to produce a result array;
.( none o( the re/uested sections could #e (ound the return value is FALSE;
F.L+ FileNameA FileizeA FileDate,imeA ectionsFound
5OMP@,+D
htmlA LidthA &eightA .s5olorA and more i( availa#le; &eight and Lidth are
computed the same Eay getimagesi6e./ does so their values must not #e part
o( any header returned; AlsoA html is a heightDEidth teFt string to #e used
inside normal &,ML;
AN%Z,AG Any in(ormation that has a ,ag e;g; .FD3A +J.FA ;;;
.FD3
All tagged data o( .FD3; .n normal image(iles this contains image size and
so (orth;
,&@MBNA.
L
A (ile is supposed to contain a thum#nail i( it has a second .FD; All tagged
in(ormation a#out the em#edded thum#nail is stored in this section;
5OMM+N, 5omment headers o( !P+G images;
+J.F
,he +J.F section is a su# section o( .FD3; .t contains more detailed
in(ormation a#out an image; Most o( these entries are digital camera related;
arra?s
peci(ies Ehether or not each section #ecomes an array; ,he sect6ons COM+UTEDA
T!UMAN,04A and COMMENT alEays #ecome arrays as they may contain values Ehose
names con(lict Eith other sections;
thum1na6l
Lhen set to TRUE the thum#nail itsel( is read; OtherEiseA only the tagged data is read;
Calores retornados
.t returns an associative array Ehere the array indeFes are the header names and the array values are
the values associated Eith those headers; .( no data can #e returnedA e+if>read>data./ Eill return
FALSE;
Megistro de cambios
Cersi"n Kescripci"n
8;7;3
5an read all em#edded .FD data including arrays >returned as such?; Also the size o( an
em#edded thum#nail is returned in a T!UMAN,04 su#arrayA and can return thum#nails
in ,.FF (ormat; AlsoA there is no longer a maFimum length (or returned values >not until
the memory limit has #een reached?
Cersi"n Kescripci"n
8;7;3
.( P&P has m#string supportA the user comment can automatically change encoding;
AlsoA i( the user comment uses @nicode or !. encoding this encoding Eill automatically
#e changed according to the eFi( ini settings in php.ini
8;7;3
.( the image contains any .FD3 data then 5OMP@,+D contains the entry
ByteOrderMotorola Ehich is 3 (or little2endian >intel? and 1 (or #ig2endian >motorola?
#yte order; AlsoA 5OMP@,+D and @ser5omment no longer only contain the (irst
copyright entry i( the datatype Eas Erong;
E'emplos
E'emplo !. e+if>read>data./ e+ample
<?php
echo "test6.jpE@<br />Vn";
$exi# > exi#%read%data3Mtests/test6.jpEM, M4SL2M9;
echo $exi#>>>#alse ? ".o header data #ound.<br />Vn" @ "4maEe contains headers<br />Vn";
$exi# > exi#%read%data3Mtests/testC.jpEM, 2, true9;
echo "testC.jpE@<br />Vn";
#oreach 3$exi# as $Iey >> $section9 :
#oreach 3$section as $name >> $=al9 :
echo "$Iey.$name@ $=al<br />Vn";
;
;
?>
,he (irst call (ails #ecause the image has no header in(ormation;
+l resultado del e'emplo seria algo similar aC
test6.jpE@
.o header data #ound.
testC.jpE@
S4OE.Sile.ame@ testC.jpE
S4OE.SileLate*ime@ 626HGGG6HG
S4OE.Sile&i0e@ 6C12
S4OE.Sile*ype@ C
S4OE.&ectionsSound@ ,.P%*,-, 4SL2, *H+"Z.,4O, R?""E.*
R?"+*EL.html@ 8idth>"6" heiEht>"6"
R?"+*EL.HeiEht@ 6
R?"+*EL.7idth@ 6
R?"+*EL.4sRolor@ 6
R?"+*EL.Zyte?rder"otorola@ 6
R?"+*EL.+serRomment@ Exi# test imaEe.
R?"+*EL.+serRommentEncodinE@ ,&R44
R?"+*EL.RopyriEht@ hoto 3c9 ".ZoerEer, Edited by ".ZoerEer.
R?"+*EL.RopyriEht.hotoErapher@ hoto 3c9 ".ZoerEer
R?"+*EL.RopyriEht.Editor@ Edited by ".ZoerEer.
4SL2.RopyriEht@ hoto 3c9 ".ZoerEer
4SL2.+serRomment@ ,&R44
*H+"Z.,4O.AE-4nterchanEeSormat@ 6<1
*H+"Z.,4O.AE-4nterchanEeSormatOenEth@ 5C<
R?""E.*.2@ Romment U6.
R?""E.*.6@ Romment UC.
R?""E.*.C@ Romment U<end
*H+"Z.,4O.AE-4nterchanEeSormat@ 6<1
*H+"Z.,4O.*humbnail.HeiEht@ 6
*H+"Z.,4O.*humbnail.HeiEht@ 6
Cer tambi%n
e+if>thumbnail./
getimagesi6e./
e+if>tagname
>P&P 8 _^ 8;0;3A P&P 4?
eFi(Ztagname 22 Get the header name (or an indeF
Kescripci"n
string e+if>tagname > string indeF ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
:ista de parmetros
6n#e8
,he image indeF
Calores retornados
Returns the header nameA or FALSE i( 6n#e8 is unde(ined;
Cer tambi%n
e+if>imagetype./
e+if>thumbnail
>P&P 8 _^ 8;0;3A P&P 4?
eFi(Zthum#nail 22 Retrieve the em#edded thum#nail o( a ,.FF or !P+G image
Kescripci"n
string e+if>thumbnail > string (ilename PA int iEidth PA int iheight PA int iimagetypeQQQ ?
e+if>thumbnail./ reads the em#edded thum#nail o( a ,.FF or !P+G image;
.( you Eant to deliver thum#nails through this (unctionA you should send the mimetype in(ormation
using the header./ (unction;
.t is possi#le that e+if>thumbnail./ cannot create an image #ut can determine its size; .n this caseA
the return value is FALSE #ut 76#th and he6Eht are set;
:ista de parmetros
96lename
,he name o( the image (ile #eing read; ,his image contains an em#edded thum#nail;
76#th
,he return Eidth o( the returned thum#nail;
he6Eht
,he returned height o( the returned thum#nail;
6maEet?pe
,he returned image type o( the returned thum#nail; ,his is either ,.FF or !P+G;
Calores retornados
Returns the em#edded thum#nailA or FALSE i( the image contains no thum#nail;
Megistro de cambios
Cersi"n Kescripci"n
8;7;3
,he optional parameters 76#thA he6EhtA and 6maEet?pe all #ecame
availa#le;
8;7;3 May return thum#nails in the ,.FF (ormat;
E'emplos
E'emplo !. e+if>thumbnail./ e+ample
<?php
i# 3array%Iey%exists3M#ileM, $%'EN+E&*99 :
$imaEe > exi#%thumbnail3$%'EN+E&*)M#ileM/, $8idth, $heiEht, $type9;
; else :
$imaEe > #alse;
;
i# 3$imaEe!>>#alse9 :
header3MRontentFtype@ M .imaEe%type%to%mime%type3$type99;
echo $imaEe;
exit;
; else :
// no thumbnail a=ailable, handle the error here
echo M.o thumbnail a=ailableM;
;
?>
Cer tambi%n
e+if>read>data./
image>type>to>mime>type./
read>e+if>data
readZeFi(Zdata 22 Alias o( e+if>read>data./
Kescripci"n
,his (unction is an alias o( e+if>read>data./;
IIIIII. ;ile Alteration Monitor ;unctions
Introducci"n
FAM monitors (iles and directoriesA noti(ying interested applications o( changes; More in(ormation
a#out FAM is availa#le at httpCDDoss;sgi;comDpro'ectsD(amD;
A P&P script may speci(y a list o( (iles (or FAM to monitor using the (unctions provided #y this
eFtension;
,he FAM process is started Ehen the (irst connection (rom any application to it is opened; .t eFits
a(ter all connections to it have #een closed;
Nota- +sta eFtensi-n no est* disponi#le en plata(ormas LindoEs
Me?uirimientos
,his eFtension uses the (unctions o( the FAM li#raryA developed #y G.; ,here(ore you have to
doEnload and install the FAM li#rary;
Instalaci"n
,o use P&PHs FAM support you must compile P&P ==76th=9am):D0R. Ehere D.R is the location o(
the directory containing the li# and include directories;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
;AM resource
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
Tabla !. ;AM e5ent constants
Constant Kescription
FAMChange3 >integer?
ome value Ehich can #e o#tained Eith (stat>1? changed (or a (ile
or directory;
FAMDelete3 >integer? A (ile or directory Eas deleted or renamed;
FAMStartE4e!5ting
>integer?
An eFecuta#le (ile started eFecuting;
FAMStopE4e!5ting
>integer?
An eFecuta#le (ile that Eas running (inished;
FAMCreate3 >integer? A (ile Eas created in a directory;
FAMMo6e3 >integer? ,his event never occurs;
FAMA!7no8le3ge >integer
?
An event in response to fam>cancel>monitor./;
FAME4ists >integer?
An event upon re/uest to monitor a (ile or directory; Lhen a
directory is monitoredA an event (or that directory and every (ile
contained in that directory is issued;
FAMEn3E4ist >integer? +vent a(ter the last FAM++Fists event;
Tabla de contenidos
(amZcancelZmonitor 22 ,erminate monitoring
(amZclose 22 5lose FAM connection
(amZmonitorZcollection 22 Monitor a collection o( (iles in a directory (or changes
(amZmonitorZdirectory 22 Monitor a directory (or changes
(amZmonitorZ(ile 22 Monitor a regular (ile (or changes
(amZneFtZevent 22 Get neFt pending FAM event
(amZopen 22 Open connection to FAM daemon
(amZpending 22 5hec" (or pending FAM events
(amZresumeZmonitor 22 Resume suspended monitoring
(amZsuspendZmonitor 22 ,emporarily suspend monitoring
fam>cancel>monitor
>P&P 4?
(amZcancelZmonitor 22 ,erminate monitoring
Kescripci"n
#ool fam>cancel>monitor > resource (amA resource (amZmonitor ?
fam>cancel>monitor./ terminates monitoring on a resource previously re/uested using one o( the
9am_mon6tor_ (unctions; .n addition an FAMA!7no8le3ge event occurs;
ee also fam>monitor>file./A fam>monitor>directory./A fam>monitor>collection./A and
fam>suspend>monitor./
fam>close
>P&P 4?
(amZclose 22 5lose FAM connection
Kescripci"n
void fam>close > resource (am ?
fam>close./ closes a connection to the FAM service previously opened using fam>open./;
fam>monitor>collection
>P&P 4?
(amZmonitorZcollection 22 Monitor a collection o( (iles in a directory (or changes
Kescripci"n
resource fam>monitor>collection > resource (amA string dirnameA int depthA string mas" ?
fam>monitor>collection./ re/uests monitoring (or a collection o( (iles Eithin a directory; ,he
actual (iles to #e monitored are speci(ied #y a directory path in #6rnameA the maFimum search #epth
starting (rom this directory and a shell pattern mas> restricting the (ile names to loo" (or;
A FAM event Eill #e generated Ehenever the status o( the (iles change; ,he possi#le event codes
are descri#ed in detail in the constants part o( this section;
ee also fam>monitor>file./A fam>monitor>directory./A fam>cancel>monitor./A
fam>suspend>monitor./A and fam>resume>monitor./;
fam>monitor>directory
>P&P 4?
(amZmonitorZdirectory 22 Monitor a directory (or changes
Kescripci"n
resource fam>monitor>directory > resource (amA string dirname ?
fam>monitor>directory./ re/uests monitoring (or a directory and all contained (iles; A FAM event
Eill #e generated Ehenever the status o( the directory >i;e; the result o( (unction stat./ on that
directory? or its content >i;e; the results o( readdir./? change;
,he possi#le event codes are descri#ed in detail in the constants part o( this section;
ee also fam>monitor>file./A fam>monitor>collection./A fam>cancel>monitor./A
fam>suspend>monitor./A and fam>resume>monitor./;
fam>monitor>file
>P&P 4?
(amZmonitorZ(ile 22 Monitor a regular (ile (or changes
Kescripci"n
resource fam>monitor>file > resource (amA string (ilename ?
fam>monitor>file./ re/uests monitoring (or a single (ile; A FAM event Eill #e generated Ehenever
the (ile status >i;e; the result o( (unction stat./ on that (ile? changes;
,he possi#le event codes are descri#ed in detail in the constants part o( this section;
ee also fam>monitor>directory./A fam>monitor>collection./A fam>cancel>monitor./A
fam>suspend>monitor./A and fam>resume>monitor./;
fam>ne+t>e5ent
>P&P 4?
(amZneFtZevent 22 Get neFt pending FAM event
Kescripci"n
array fam>ne+t>e5ent > resource (am ?
fam>ne+t>e5ent./ returns the neFt pending FAM event; ,he (unction Eill #loc" until an event is
availa#le Ehich can #e chec"ed (or using fam>pending./;
fam>ne+t>e5ent./ Eill return an array that contains a FAM event code in element Hco#eHA the path o(
the (ile this event applies to in element H96lenameH and optionally a hostname in element HhostnameH;
,he possi#le event codes are descri#ed in detail in the constants part o( this section;
ee also fam>pending./;
fam>open
>P&P 4?
(amZopen 22 Open connection to FAM daemon
Kescripci"n
resource fam>open > Pstring appnameQ ?
fam>open./ opens a connection to the FAM service daemon; ,he optional parameter appname
should #e set to a string identi(ying the application (or logging reasons;
ee also fam>close./;
fam>pending
>P&P 4?
(amZpending 22 5hec" (or pending FAM events
Kescripci"n
#ool fam>pending > resource (am ?
fam>pending./ returns TRUE i( events are availa#le to #e (etched using fam>ne+t>e5ent./;
ee also fam>ne+t>e5ent./;
fam>resume>monitor
>P&P 4?
(amZresumeZmonitor 22 Resume suspended monitoring
Kescripci"n
#ool fam>resume>monitor > resource (amA resource (amZmonitor ?
fam>resume>monitor./ resumes monitoring o( a resource previously suspend using
fam>suspend>monitor./;
ee also fam>suspend>monitor./;
fam>suspend>monitor
>P&P 4?
(amZsuspendZmonitor 22 ,emporarily suspend monitoring
Kescripci"n
#ool fam>suspend>monitor > resource (amA resource (amZmonitor ?
fam>suspend>monitor./ temporarily suspend monitoring o( a resource previously re/uested using
one o( the 9am_mon6tor_ (unctions; Monitoring can later #e continued using fam>resume>monitor
./ Eithout the need o( re/uesting a complete neE monitor;
ee also fam>resume>monitor./A and fam>cancel>monitor./;
IIIIC. ;ront1ase ;unctions
Introducci"n
,hese (unctions alloE you to access FrontBase data#ase servers; More in(ormation a#out FrontBase
can #e (ound at httpCDDEEE;(ront#ase;comD;
Documentation (or FrontBase can #e (ound at httpCDDEEE;(ront#ase;comDcgi2
#inDLe#O#'ectsDFrontBase;EoaDEaDproductsPageNcurrentPage^Documentation;
Front#ase support has #een added to P&P 8;3;K;
Me?uirimientos
%ou must install the FrontBase data#ase server or at least the (#s/l client li#raries to use this
(unctions; %ou can get FrontBase (rom httpCDDEEE;(ront#ase;comD;
Instalaci"n
.n order to have these (unctions availa#leA you must compile P&P Eith (#s/l support #y using the ==
76th=91s@l):D0R. option; .( you use this option Eithout speci(ying the path to (#s/lA P&P Eill
search (or the (#s/l client li#raries in the de(ault installation location (or the plat(orm; @sers Eho
installed FrontBase in a non standard directory should alEays speci(y the path to (#s/lC ==76th=
91s@l:/path/to/91s@l; ,his Eill (orce P&P to use the client li#raries installed #y FrontBaseA avoiding
any con(licts;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. ;ront1ase configuration options
Name Kefault Changeable
(#s/l;alloEZpersistent =1=
P&PZ.N.Z%,+
M
(#s/l;generateZEarnings =3=
P&PZ.N.Z%,+
M
(#s/l;autocommit =1=
P&PZ.N.Z%,+
M
Name Kefault Changeable
(#s/l;maFZpersistent =21=
P&PZ.N.Z%,+
M
(#s/l;maFZlin"s =10M=
P&PZ.N.Z%,+
M
(#s/l;maFZconnections =10M=
P&PZ.N.Z%,+
M
(#s/l;maFZresults =10M=
P&PZ.N.Z%,+
M
(#s/l;#atchize =1333=
P&PZ.N.Z%,+
M
(#s/l;de(aultZhost N@LL
P&PZ.N.Z%,+
M
(#s/l;de(aultZuser
=Z%,+M
=
P&PZ.N.Z%,+
M
(#s/l;de(aultZpassEord ==
P&PZ.N.Z%,+
M
(#s/l;de(aultZdata#ase ==
P&PZ.N.Z%,+
M
(#s/l;de(aultZdata#aseZpassEo
rd
==
P&PZ.N.Z%,+
M
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
Tipos de recursos
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
F(S.L_ASSOC >integer?
F(S.L_NUM >integer?
F(S.L_(OTH >integer?
F(S.L_LOC&_DEFERRED >integer?
F(S.L_LOC&_OPTIMISTIC >integer?
F(S.L_LOC&_PESSIMISTIC >integer?
F(S.L_ISO_READ_UNCOMMITTED >integer?
F(S.L_ISO_READ_COMMITTED >integer?
F(S.L_ISO_REPEATA(LE_READ >integer?
F(S.L_ISO_SERIALI/A(LE >integer?
F(S.L_ISO_$ERSIONED >integer?
F(S.L_UN&NO"N >integer?
F(S.L_STOPPED >integer?
F(S.L_STARTIN# >integer?
F(S.L_RUNNIN# >integer?
F(S.L_STOPPIN# >integer?
F(S.L_NOE%EC >integer?
F(S.L_LO(_DIRECT >integer?
F(S.L_LO(_HANDLE >integer?
Tabla de contenidos
(#s/lZa((ectedZroEs 22 Get num#er o( a((ected roEs in previous FrontBase operation
(#s/lZautocommit 22 +na#le or disa#le autocommit
(#s/lZ#lo#Zsize 22 Get the size o( a BLOB
(#s/lZchangeZuser 22 5hange logged in user o( the active connection
(#s/lZclo#Zsize 22 Get the size o( a 5LOB
(#s/lZclose 22 5lose FrontBase connection
(#s/lZcommit 22 5ommits a transaction to the data#ase
(#s/lZconnect 22 Open a connection to a FrontBase erver
(#s/lZcreateZ#lo# 22 5reate a BLOB
(#s/lZcreateZclo# 22 5reate a 5LOB
(#s/lZcreateZd# 22 5reate a FrontBase data#ase
(#s/lZdataZsee" 22 Move internal result pointer
(#s/lZdata#aseZpassEord 22 ets or retrieves the passEord (or a FrontBase data#ase
(#s/lZdata#ase 22 Get or set the data#ase name used Eith a connection
(#s/lZd#Z/uery 22 end a FrontBase /uery
(#s/lZd#Zstatus 22 Get the status (or a given data#ase
(#s/lZdropZd# 22 Drop >delete? a FrontBase data#ase
(#s/lZerrno 22 Returns the numerical value o( the error message (rom previous FrontBase operation
(#s/lZerror 22 Returns the teFt o( the error message (rom previous FrontBase operation
(#s/lZ(etchZarray 22 Fetch a result roE as an associative arrayA a numeric arrayA or #oth
(#s/lZ(etchZassoc 22 Fetch a result roE as an associative array
(#s/lZ(etchZ(ield 22 Get column in(ormation (rom a result and return as an o#'ect
(#s/lZ(etchZlengths 22 Get the length o( each output in a result
(#s/lZ(etchZo#'ect 22 Fetch a result roE as an o#'ect
(#s/lZ(etchZroE 22 Get a result roE as an enumerated array
(#s/lZ(ieldZ(lags 22 Get the (lags associated Eith the speci(ied (ield in a result
(#s/lZ(ieldZlen 22 Returns the length o( the speci(ied (ield
(#s/lZ(ieldZname 22 Get the name o( the speci(ied (ield in a result
(#s/lZ(ieldZsee" 22 et result pointer to a speci(ied (ield o((set
(#s/lZ(ieldZta#le 22 Get name o( the ta#le the speci(ied (ield is in
(#s/lZ(ieldZtype 22 Get the type o( the speci(ied (ield in a result
(#s/lZ(reeZresult 22 Free result memory
(#s/lZgetZautostartZin(o 22 No description given yet
(#s/lZhostname 22 Get or set the host name used Eith a connection
(#s/lZinsertZid 22 Get the id generated (rom the previous .N+R, operation
(#s/lZlistZd#s 22 List data#ases availa#le on a FrontBase server
(#s/lZlistZ(ields 22 List FrontBase result (ields
(#s/lZlistZta#les 22 List ta#les in a FrontBase data#ase
(#s/lZneFtZresult 22 Move the internal result pointer to the neFt result
(#s/lZnumZ(ields 22 Get num#er o( (ields in result
(#s/lZnumZroEs 22 Get num#er o( roEs in result
(#s/lZpassEord 22 Get or set the user passEord used Eith a connection
(#s/lZpconnect 22 Open a persistent connection to a FrontBase erver
(#s/lZ/uery 22 end a FrontBase /uery
(#s/lZreadZ#lo# 22 Read a BLOB (rom the data#ase
(#s/lZreadZclo# 22 Read a 5LOB (rom the data#ase
(#s/lZresult 22 Get result data
(#s/lZroll#ac" 22 Roll#ac" a transaction to the data#ase
(#s/lZselectZd# 22 elect a FrontBase data#ase
(#s/lZsetZlo#Zmode 22 et the LOB retrieve mode (or a FrontBase result set
(#s/lZsetZpassEord 22 5hange the passEord (or a given user
(#s/lZsetZtransaction 22 et the transaction loc"ing and isolation
(#s/lZstartZd# 22 tart a data#ase on local or remote server
(#s/lZstopZd# 22 top a data#ase on local or remote server
(#s/lZta#lename 22 Get ta#le name o( (ield
(#s/lZusername 22 Get or set the host user used Eith a connection
(#s/lZEarnings 22 +na#le or disa#le FrontBase Earnings
fbs?l>affected>ro3s
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZa((ectedZroEs 22 Get num#er o( a((ected roEs in previous FrontBase operation
Kescripci"n
int fbs?l>affected>ro3s > Presource lin"Zidenti(ierQ ?
fbs?l>affected>ro3s./ returns the num#er o( roEs a((ected #y the last .N+R,A @PDA,+ or
D+L+,+ /uery associated Eith l6n>_6#ent696er; .( the lin" identi(ier isnHt speci(iedA the last lin"
opened #y fbs?l>connect./ is assumed;
Nota- .( you are using transactionsA you need to call fbs?l>affected>ro3s./ a(ter your
.N+R,A @PDA,+A or D+L+,+ /ueryA not a(ter the commit;
.( the last /uery Eas a D+L+,+ /uery Eith no L&+R+ clauseA all o( the records Eill have #een
deleted (rom the ta#le #ut this (unction Eill return zero;
Nota- Lhen using @PDA,+A FrontBase Eill not update columns Ehere the neE value
is the same as the old value; ,his creates the possi#ility that fbs?l>affected>ro3s./ may
not actually e/ual the num#er o( roEs matchedA only the num#er o( roEs that Eere
literally a((ected #y the /uery;
.( the last /uery (ailedA this (unction Eill return 21;
ee alsoC fbs?l>num>ro3s./;
fbs?l>autocommit
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZautocommit 22 +na#le or disa#le autocommit
Kescripci"n
#ool fbs?l>autocommit > resource lin"Zidenti(ier PA #ool OnO((Q ?
fbs?l>autocommit./ returns the current autocommit status; .( the optional OnO(( parameter is given
the auto commit status Eill #e changed; Lith OnO(( set to TRUE each statement Eill #e committed
automaticallyA i( no errors Eas (ound; Lith OnO(( set to FALSE the user must commit or roll#ac"
the transaction using either fbs?l>commit./ or fbs?l>rollbacB./;
ee alsoC fbs?l>commit./ and fbs?l>rollbacB./
fbs?l>blob>si6e
>P&P 8 _^ 8;0;3A P&P 4?
(#s/lZ#lo#Zsize 22 Get the size o( a BLOB
Kescripci"n
int fbs?l>blob>si6e > string #lo#Zhandle PA resource lin"Zidenti(ierQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
fbs?l>change>user
>no version in(ormationA might #e only in 5$?
(#s/lZchangeZuser 22 5hange logged in user o( the active connection
Kescripci"n
resource fbs?l>change>user > string userA string passEord PA string data#ase PA resource
lin"Zidenti(ierQQ ?
fbs?l>change>user./ changes the logged in user o( the current active connectionA or the connection
given #y the optional parameter lin"Zidenti(ier; .( a data#ase is speci(iedA this Eill de(ault or current
data#ase a(ter the user has #een changed; .( the neE user and passEord authorization (ailsA the
current connected user stays active;
fbs?l>clob>si6e
>P&P 8 _^ 8;0;3A P&P 4?
(#s/lZclo#Zsize 22 Get the size o( a 5LOB
Kescripci"n
int fbs?l>clob>si6e > string clo#Zhandle PA resource lin"Zidenti(ierQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
fbs?l>close
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZclose 22 5lose FrontBase connection
Kescripci"n
#ool fbs?l>close > Presource lin"Zidenti(ierQ ?
ReturnsC TRUE on successA FALSE on error;
fbs?l>close./ closes the connection to the FrontBase server thatHs associated Eith the speci(ied lin"
identi(ier; .( l6n>_6#ent696er isnHt speci(iedA the last opened lin" is used;
@sing fbs?l>close./ isnHt usually necessaryA as non2persistent open lin"s are automatically closed at
the end o( the scriptHs eFecution;
E'emplo !. fbs?l>close./ e+ample
<?php
$linI > #bsQl%connect3"localhost", "%&P&*E"", "secret"9
or die3"Rould not connect"9;
echo "Ronnected success#ully";
#bsQl%close3$linI9;
?>
ee alsoC fbs?l>connect./ and fbs?l>pconnect./;
fbs?l>commit
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZcommit 22 5ommits a transaction to the data#ase
Kescripci"n
#ool fbs?l>commit > Presource lin"Zidenti(ierQ ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
fbs?l>commit./ ends the current transaction #y Eriting all insertsA updates and deletes to the dis"
and unloc"ing all roE and ta#le loc"s held #y the transaction; ,his command is only needed i(
autocommit is set to (alse;
ee alsoC fbs?l>autocommit./ and fbs?l>rollbacB./
fbs?l>connect
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZconnect 22 Open a connection to a FrontBase erver
Kescripci"n
resource fbs?l>connect > Pstring hostname PA string username PA string passEordQQQ ?
Returns a positive FrontBase lin" identi(ier on successA or an error message on (ailure;
fbs?l>connect./ esta#lishes a connection to a FrontBase server; ,he (olloEing de(aults are assumed
(or missing optional parametersC hostname ^ HNULLHA username ^ HZ%,+MH and pass7or# ^
empty passEord;
.( a second call is made to fbs?l>connect./ Eith the same argumentsA no neE lin" Eill #e
esta#lishedA #ut insteadA the lin" identi(ier o( the already opened lin" Eill #e returned;
,he lin" to the server Eill #e closed as soon as the eFecution o( the script endsA unless itHs closed
earlier #y eFplicitly calling fbs?l>close./;
E'emplo !. fbs?l>connect./ e+ample
<?php
$linI > #bsQl%connect3"localhost", "%&P&*E"", "secret"9
or die3"Rould not connect"9;
echo "Ronnected success#ully";
#bsQl%close3$linI9;
?>
ee also fbs?l>pconnect./ and fbs?l>close./;
fbs?l>create>blob
>P&P 8 _^ 8;0;3A P&P 4?
(#s/lZcreateZ#lo# 22 5reate a BLOB
Kescripci"n
string fbs?l>create>blob > string #lo#Zdata PA resource lin"Zidenti(ierQ ?
ReturnsC A resource handle to the neEly created #lo#;
fbs?l>create>blob./ creates a #lo# (rom #lo#Zdata; ,he returned resource handle can #e used Eith
insert and update commands to store the #lo# in the data#ase;
E'emplo !. fbs?l>create>blob./ e+ample
<?php
$linI > #bsQl%pconnect3"localhost", "%&P&*E"", "secret"9
or die3"Rould not connect"9;
$#ilename > "blob#ile.bin";
$#p > #open3$#ilename, "rb"9;
$blobdata > #read3$#p, #ilesi0e3$#ilename99;
#close3$#p9;

$blobHandle > #bsQl%create%blob3$blobdata, $linI9;

$sQl > "4.&E'* 4.*? ZO?Z%*,ZOE 3ZO?Z%R?O+".9 (,O+E& 3$blobHandle9;";
$rs > #bsQl%Query3$sQl, $linI9;
?>
ee alsoC fbs?l>create>clob./A fbs?l>read>blob./A fbs?l>read>clob./A and fbs?l>set>lob>mode./;
fbs?l>create>clob
>P&P 8 _^ 8;0;3A P&P 4?
(#s/lZcreateZclo# 22 5reate a 5LOB
Kescripci"n
string fbs?l>create>clob > string clo#Zdata PA resource lin"Zidenti(ierQ ?
ReturnsC A resource handle to the neEly created 5LOB;
fbs?l>create>clob./ creates a clo# (rom clo#Zdata; ,he returned resource handle can #e used Eith
insert and update commands to store the clo# in the data#ase;
E'emplo !. fbs?l>create>clob./ e+ample
<?php
$linI > #bsQl%pconnect3"localhost", "%&P&*E"", "secret"9
or die3"Rould not connect"9;
$#ilename > "clob%#ile.txt";
$#p > #open3$#ilename, "rb"9;
$clobdata > #read3$#p, #ilesi0e3$#ilename99;
#close3$#p9;

$clobHandle > #bsQl%create%clob3$clobdata, $linI9;

$sQl > "4.&E'* 4.*? RO?Z%*,ZOE 3RO?Z%R?O+".9 (,O+E& 3$clobHandle9;";
$rs > #bsQl%Query3$sQl, $linI9;
?>
ee alsoC fbs?l>create>blob./A fbs?l>read>blob./A fbs?l>read>clob./A and fbs?l>set>lob>mode./;
fbs?l>create>db
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZcreateZd# 22 5reate a FrontBase data#ase
Kescripci"n
#ool fbs?l>create>db > string data#aseZname PA resource lin"Zidenti(ier PA string
data#aseZoptionsQQ ?
fbs?l>create>db./ attempts to create a neE data#ase named #ata1ase_name on the server
associated Eith the speci(ied connection l6n>_6#ent696er;
E'emplo !. fbs?l>create>db./ e+ample
<?php
$linI > #bsQl%pconnect3"localhost", "%&P&*E"", "secret"9
or die3"Rould not connect"9;
i# 3#bsQl%create%db3"my%db"99 :
echo "Latabase created success#ullyVn";
; else :
print#3"Error creatinE database@ \sVn", #bsQl%error399;
;
?>
ee alsoC fbs?l>drop>db./;
fbs?l>data>seeB
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZdataZsee" 22 Move internal result pointer
Kescripci"n
#ool fbs?l>data>seeB > resource resultZidenti(ierA int roEZnum#er ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
fbs?l>data>seeB./ moves the internal roE pointer o( the FrontBase result associated Eith the
speci(ied result identi(ier to point to the speci(ied roE num#er; ,he neFt call to fbs?l>fetch>ro3./
Eould return that roE;
Ro7_num1er starts at 3;
E'emplo !. fbs?l>data>seeB./ e+ample
<?php
$linI > #bsQl%pconnect3"localhost", "%&P&*E"", "secret"9
or die3"Rould not connect"9;
#bsQl%select%db3"samp%db"9
or die3"Rould not select database"9;
$Query > "&EOER* last%name, #irst%name S'?" #riends;";
$result > #bsQl%Query3$Query9
or die3"Nuery #ailed"9;
// #etch ro8s in re=erse order
#or 3$i > #bsQl%num%ro8s3$result9 F 6; $i >>2; $iFF9 :
i# 3!#bsQl%data%seeI3$result, $i99 :
print#3"Rannot seeI to ro8 \dVn", $i9;
continue;
;
i# 3!3$ro8 > #bsQl%#etch%object3$result999
continue;
echo $ro8F>last%name . $ro8F>#irst%name . "<br />Vn";
;
#bsQl%#ree%result3$result9;
?>
fbs?l>database>pass3ord
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZdata#aseZpassEord 22 ets or retrieves the passEord (or a FrontBase data#ase
Kescripci"n
string fbs?l>database>pass3ord > resource lin"Zidenti(ier PA string data#aseZpassEordQ ?
ReturnsC ,he data#ase passEord associated Eith the lin" identi(ier;
fbs?l>database>pass3ord./ sets and retrieves the data#ase passEord used #y the connection; i( a
data#ase is protected #y a data#ase passEordA the user must call this (unction #e(ore calling
fbs?l>select>db./; i( the second optional parameter is given the (unction sets the data#ase passEord
(or the speci(ied lin" identi(ier; .( no lin" identi(ier is speci(iedA the last opened lin" is assumed; .(
no lin" is openA the (unction Eill try to esta#lish a lin" as i( fbs?l>connect./ Eas calledA and use it;
,his (unction does not change the data#ase passEord in the data#ase nor can it #e used to retrieve
the data#ase passEord (or a data#ase;
E'emplo !. fbs?l>create>clob./ e+ample
<?php
$linI > #bsQl%pconnect3"localhost", "%&P&*E"", "secret"9
or die3"Rould not connect"9;
#bsQl%database%pass8ord3$linI, "secret db pass8ord"9;
#bsQl%select%db3$database, $linI9;
?>
ee alsoC fbs?l>connect./A fbs?l>pconnect./ and fbs?l>select>db./;
fbs?l>database
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZdata#ase 22 Get or set the data#ase name used Eith a connection
Kescripci"n
string fbs?l>database > resource lin"Zidenti(ier PA string data#aseQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
fbs?l>db>?uery
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZd#Z/uery 22 end a FrontBase /uery
Kescripci"n
resource fbs?l>db>?uery > string data#aseA string /uery PA resource lin"Zidenti(ierQ ?
ReturnsC A positive FrontBase result identi(ier to the /uery resultA or FALSE on error;
fbs?l>db>?uery./ selects a data#ase and eFecutes a /uery on it; .( the optional lin" identi(ier isnHt
speci(iedA the (unction Eill try to (ind an open lin" to the FrontBase server and i( no such lin" is
(ound itHll try to create one as i( fbs?l>connect./ Eas called Eith no arguments
ee also fbs?l>connect./;
fbs?l>db>status
>P&P 8 _^ 8;1;3A P&P 4?
(#s/lZd#Zstatus 22 Get the status (or a given data#ase
Kescripci"n
int fbs?l>db>status > string data#aseZname PA resource lin"Zidenti(ierQ ?
ReturnsC An integer value Eith the current status;
fbs?l>db>status./ re/uests the current status o( the data#ase speci(ied #y #ata1ase_name; .( the
l6n>_6#ent696er is omitted the de(ault lin"Zidenti(ier Eill #e used;
,he return value can #e one o( the (olloEing constantsC
FALSE 2 ,he eFec handler (or the host Eas invalid; ,his error Eill occur Ehen the
lin"Zidenti(ier connects directly to a data#ase #y using a port num#er; FB+Fec can #e
availa#le on the server #ut no connection has #een made (or it;
FBOLZ@NSNOLN 2 ,he tatus is un"noEn;
FBOLZ,OPP+D 2 ,he data#ase is not running; @se fbs?l>start>db./ to start the
data#ase;
FBOLZ,AR,.NG 2 ,he data#ase is starting;
FBOLZR@NN.NG 2 ,he data#ase is running and can #e used to per(orm OL operations;
FBOLZ,OPP.NG 2 ,he data#ase is stopping;
FBOLZNO+J+5 2 FB+Fec is not running on the server and it is not possi#le to get the
status o( the data#ase;
ee alsoC fbs?l>start>db./ and fbs?l>stop>db./;
fbs?l>drop>db
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZdropZd# 22 Drop >delete? a FrontBase data#ase
Kescripci"n
#ool fbs?l>drop>db > string data#aseZname PA resource lin"Zidenti(ierQ ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
fbs?l>drop>db./ attempts to drop >remove? an entire data#ase (rom the server associated Eith the
speci(ied lin" identi(ier;
fbs?l>errno
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZerrno 22 Returns the numerical value o( the error message (rom previous FrontBase operation
Kescripci"n
int fbs?l>errno > Presource lin"Zidenti(ierQ ?
Returns the error num#er (rom the last (#s/l (unctionA or 0 >zero? i( no error occurred;
+rrors coming #ac" (rom the (#s/l data#ase #ac"end donHt issue Earnings; .nsteadA use fbs?l>errno
./ to retrieve the error code; Note that this (unction only returns the error code (rom the most
recently eFecuted (#s/l (unction >not including fbs?l>error./ and fbs?l>errno./?A so i( you Eant to
use itA ma"e sure you chec" the value #e(ore calling another (#s/l (unction;
<?php
#bsQl%connect3"marliesle"9;
echo #bsQl%errno39 . "@ " . #bsQl%error39 . "<br />";
#bsQl%select%db3"nonexistentdb"9;
echo #bsQl%errno39 . "@ " . #bsQl%error39 . "<br />";
$conn > #bsQl%Query3"&EOER* W S'?" nonexistenttable;"9;
echo #bsQl%errno39 . "@ " . #bsQl%error39 . "<br />";
?>
ee alsoC fbs?l>error./ and fbs?l>3arnings./;
fbs?l>error
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZerror 22 Returns the teFt o( the error message (rom previous FrontBase operation
Kescripci"n
string fbs?l>error > Presource lin"Zidenti(ierQ ?
Returns the error teFt (rom the last (#s/l (unctionA or << >the empty string? i( no error occurred;
+rrors coming #ac" (rom the (#s/l data#ase #ac"end donHt issue Earnings; .nsteadA use fbs?l>error
./ to retrieve the error teFt; Note that this (unction only returns the error teFt (rom the most recently
eFecuted (#s/l (unction >not including fbs?l>error./ and fbs?l>errno./?A so i( you Eant to use itA
ma"e sure you chec" the value #e(ore calling another (#s/l (unction;
<?php
#bsQl%connect3"marliesle"9;
echo #bsQl%errno39 . "@ " . #bsQl%error39 . "<br />";
#bsQl%select%db3"nonexistentdb"9;
echo #bsQl%errno39 . "@ " . #bsQl%error39 . "<br />";
$conn > #bsQl%Query3"&EOER* W S'?" nonexistenttable;"9;
echo #bsQl%errno39 . "@ " . #bsQl%error39 . "<br />";
?>
ee alsoC fbs?l>errno./ and fbs?l>3arnings./;
fbs?l>fetch>array
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZ(etchZarray 22 Fetch a result roE as an associative arrayA a numeric arrayA or #oth
Kescripci"n
array fbs?l>fetch>array > resource result PA int resultZtypeQ ?
Returns an array that corresponds to the (etched roEA or FALSE i( there are no more roEs;
fbs?l>fetch>array./ is an eFtended version o( fbs?l>fetch>ro3./; .n addition to storing the data in
the numeric indices o( the result arrayA it also stores the data in associative indicesA using the (ield
names as "eys;
.( tEo or more columns o( the result have the same (ield namesA the last column Eill ta"e
precedence; ,o access the other column>s? o( the same nameA you must the numeric indeF o( the
column or ma"e an alias (or the column;
select t6.#6 as #oo tC.#6 as bar #rom t6, tC
An important thing to note is that using fbs?l>fetch>array./ is NO, signi(icantly sloEer than using
fbs?l>fetch>ro3./A Ehile it provides a signi(icant added value;
,he optional second argument result_t?pe in fbs?l>fetch>array./ is a constant and can ta"e the
(olloEing valuesC FBOLZAO5A FBOLZN@MA and FBOLZBO,&;
For (urther detailsA see also fbs?l>fetch>ro3./ and fbs?l>fetch>assoc./;
E'emplo !. fbs?l>fetch>array./ e+ample
<?php
#bsQl%connect3$host, $user, $pass8ord9;
$result > #bsQl%db%Query3"database", "select user%id, #ullname #rom table"9;
8hile 3$ro8 > #bsQl%#etch%array3$result99 :
echo "user%id@ " . $ro8)"user%id"/ . "<br />Vn";
echo "user%id@ " . $ro8)2/ . "<br />Vn";
echo "#ullname@ " . $ro8)"#ullname"/ . "<br />Vn";
echo "#ullname@ " . $ro8)6/ . "<br />Vn";
;
#bsQl%#ree%result3$result9;
?>
fbs?l>fetch>assoc
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZ(etchZassoc 22 Fetch a result roE as an associative array
Kescripci"n
array fbs?l>fetch>assoc > resource result ?
Returns an associative array that corresponds to the (etched roEA or FALSE i( there are no more
roEs;
fbs?l>fetch>assoc./ is Walent to calling fbs?l>fetch>array./ Eith FBOLZAO5 (or the optional
second parameter; .t only returns an associative array; ,his is the Eay fbs?l>fetch>array./
originally Eor"ed; .( you need the numeric indices as Eell as the associativeA use fbs?l>fetch>array
./;
.( tEo or more columns o( the result have the same (ield namesA the last column Eill ta"e
precedence; ,o access the other column>s? o( the same nameA you must use fbs?l>fetch>array./
and have it return the numeric indices as Eell;
An important thing to note is that using fbs?l>fetch>assoc./ is NO, signi(icantly sloEer than using
fbs?l>fetch>ro3./A Ehile it provides a signi(icant added value;
For (urther detailsA see also fbs?l>fetch>ro3./ and fbs?l>fetch>array./;
E'emplo !. fbs?l>fetch>assoc./ e+ample
<?php
#bsQl%connect3$host, $user, $pass8ord9;
$result > #bsQl%db%Query3"database", "select W #rom table"9;
8hile 3$ro8 > #bsQl%#etch%assoc3$result99 :
echo $ro8)"user%id"/;
echo $ro8)"#ullname"/;
;
#bsQl%#ree%result3$result9;
?>
fbs?l>fetch>field
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZ(etchZ(ield 22 Get column in(ormation (rom a result and return as an o#'ect
Kescripci"n
o#'ect fbs?l>fetch>field > resource result PA int (ieldZo((setQ ?
Returns an o#'ect containing (ield in(ormation;
fbs?l>fetch>field./ can #e used in order to o#tain in(ormation a#out (ields in a certain /uery result;
.( the (ield o((set isnHt speci(iedA the neFt (ield that EasnHt yet retrieved #y fbs?l>fetch>field./ is
retrieved;
,he properties o( the o#'ect areC
name 2 column name
ta#le 2 name o( the ta#le the column #elongs to
maFZlength 2 maFimum length o( the column
notZnull 2 1 i( the column cannot #e NULL
type 2 the type o( the column
E'emplo !. fbs?l>fetch>field./ e+ample
<?php
#bsQl%connect3$host, $user, $pass8ord9
or die3"Rould not connect"9;
$result > #bsQl%db%Query3"database", "select W #rom table"9
or die3"Nuery #ailed"9;
U Eet column metadata
$i > 2;
8hile 3$i < #bsQl%num%#ields3$result99 :
echo "4n#ormation #or column $i@<br />Vn";
$meta > #bsQl%#etch%#ield3$result9;
i# 3!$meta9 :
echo ".o in#ormation a=ailable<br />Vn";
;
echo "<pre>
max%lenEth@ $metaF>max%lenEth
name@ $metaF>name
not%null@ $metaF>not%null
table@ $metaF>table
type@ $metaF>type
</pre>";
$i[[;
;
#bsQl%#ree%result3$result9;
?>
ee also fbs?l>field>seeB./;
fbs?l>fetch>lengths
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZ(etchZlengths 22 Get the length o( each output in a result
Kescripci"n
array fbs?l>fetch>lengths > resource result ?
ReturnsC An array that corresponds to the lengths o( each (ield in the last roE (etched #y
fbs?l>fetch>ro3./A or FALSE on error;
fbs?l>fetch>lengths./ stores the lengths o( each result column in the last roE returned #y
fbs?l>fetch>ro3./A fbs?l>fetch>array./ and fbs?l>fetch>ob'ect./ in an arrayA starting at o((set 3;
ee alsoC fbs?l>fetch>ro3./;
fbs?l>fetch>ob'ect
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZ(etchZo#'ect 22 Fetch a result roE as an o#'ect
Kescripci"n
o#'ect fbs?l>fetch>ob'ect > resource result PA int resultZtypeQ ?
Returns an o#'ect Eith properties that correspond to the (etched roEA or FALSE i( there are no more
roEs;
fbs?l>fetch>ob'ect./ is similar to fbs?l>fetch>array./A Eith one di((erence 2 an o#'ect is returnedA
instead o( an array; .ndirectlyA that means that you can only access the data #y the (ield namesA and
not #y their o((sets >num#ers are illegal property names?;
,he optional argument result_t?pe is a constant and can ta"e the (olloEing valuesC
FBOLZAO5A FBOLZN@MA and FBOLZBO,&;
peed2EiseA the (unction is identical to fbs?l>fetch>array./A and almost as /uic" as
fbs?l>fetch>ro3./ >the di((erence is insigni(icant?;
E'emplo !. fbs?l>fetch>ob'ect./ e+ample
<?php
#bsQl%connect3$host, $user, $pass8ord9;
$result > #bsQl%db%Query3"database", "select W #rom table"9;
8hile 3$ro8 > #bsQl%#etch%object3$result99 :
echo $ro8F>user%id;
echo $ro8F>#ullname;
;
#bsQl%#ree%result3$result9;
?>
ee alsoC fbs?l>fetch>array./ and fbs?l>fetch>ro3./;
fbs?l>fetch>ro3
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZ(etchZroE 22 Get a result roE as an enumerated array
Kescripci"n
array fbs?l>fetch>ro3 > resource result ?
ReturnsC An array that corresponds to the (etched roEA or FALSE i( there are no more roEs;
fbs?l>fetch>ro3./ (etches one roE o( data (rom the result associated Eith the speci(ied result
identi(ier; ,he roE is returned as an array; +ach result column is stored in an array o((setA starting at
o((set 3;
u#se/uent call to fbs?l>fetch>ro3./ Eould return the neFt roE in the result setA or FALSE i( there
are no more roEs;
ee alsoC fbs?l>fetch>array./A fbs?l>fetch>ob'ect./A fbs?l>data>seeB./A fbs?l>fetch>lengths./A
and fbs?l>result./;
fbs?l>field>flags
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZ(ieldZ(lags 22 Get the (lags associated Eith the speci(ied (ield in a result
Kescripci"n
string fbs?l>field>flags > resource result PA int (ieldZo((setQ ?
fbs?l>field>flags./ returns the (ield (lags o( the speci(ied (ield; ,he (lags are reported as a single
Eord per (lag separated #y a single spaceA so that you can split the returned value using e+plode./;
fbs?l>field>len
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZ(ieldZlen 22 Returns the length o( the speci(ied (ield
Kescripci"n
int fbs?l>field>len > resource result PA int (ieldZo((setQ ?
fbs?l>field>len./ returns the length o( the speci(ied (ield;
fbs?l>field>name
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZ(ieldZname 22 Get the name o( the speci(ied (ield in a result
Kescripci"n
string fbs?l>field>name > resource result PA int (ieldZindeFQ ?
fbs?l>field>name./ returns the name o( the speci(ied (ield indeF; result must #e a valid result
identi(ier and 96el#_6n#e8 is the numerical o((set o( the (ield;
Nota- 96el#_6n#e8 starts at 3;
e;g; ,he indeF o( the third (ield Eould actually #e 0A the indeF o( the (ourth (ield Eould
#e 7 and so on;
E'emplo !. fbs?l>field>name./ e+ample
<?php
// *he users table consists o# three #ields@
// user%id
// username
// pass8ord.
$res > #bsQl%db%Query3"users", "select W #rom users", $linI9;
echo #bsQl%#ield%name3$res, 29 . "Vn";
echo #bsQl%#ield%name3$res, C9;
?>
+l resultado del e'emplo seriaC
user%id
pass8ord
fbs?l>field>seeB
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZ(ieldZsee" 22 et result pointer to a speci(ied (ield o((set
Kescripci"n
#ool fbs?l>field>seeB > resource result PA int (ieldZo((setQ ?
ee"s to the speci(ied (ield o((set; .( the neFt call to fbs?l>fetch>field./ doesnHt include a (ield
o((setA the (ield o((set speci(ied in fbs?l>field>seeB./ Eill #e returned;
ee alsoC fbs?l>fetch>field./;
fbs?l>field>table
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZ(ieldZta#le 22 Get name o( the ta#le the speci(ied (ield is in
Kescripci"n
string fbs?l>field>table > resource result PA int (ieldZo((setQ ?
Returns the name o( the ta#le that the speci(ied (ield is in;
fbs?l>field>type
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZ(ieldZtype 22 Get the type o( the speci(ied (ield in a result
Kescripci"n
string fbs?l>field>type > resource result PA int (ieldZo((setQ ?
fbs?l>field>type./ is similar to the fbs?l>field>name./ (unction; ,he arguments are identicalA #ut
the (ield type is returned instead; ,he (ield type Eill #e one o( =int=A =real=A =string=A =#lo#=A and
others as detailed in the FrontBase documentation;
E'emplo !. fbs?l>field>type./ e+ample
<?php
#bsQl%connect3"localhost", "%&P&*E"", ""9;
#bsQl%select%db3"8isconsin"9;
$result > #bsQl%Query3"&EOER* W S'?" oneI;"9;
$#ields > #bsQl%num%#ields3$result9;
$ro8s > #bsQl%num%ro8s3$result9;
$i > 2;
$table > #bsQl%#ield%table3$result, $i9;
echo "Pour M" . $table . "M table has " . $#ields . " #ields and " . $ro8s . " records <br />";
echo "*he table has the #ollo8inE #ields <br />";
8hile 3$i < $#ields9 :
$type > #bsQl%#ield%type3$result, $i9;
$name > #bsQl%#ield%name3$result, $i9;
$len > #bsQl%#ield%len3$result, $i9;
$#laEs > #bsQl%#ield%#laEs3$result, $i9;
echo $type . " " . $name . " " . $len . " " . $#laEs . "<br />";
$i[[;
;
#bsQl%close39;
?>
fbs?l>free>result
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZ(reeZresult 22 Free result memory
Kescripci"n
#ool fbs?l>free>result > resource result ?
fbs?l>free>result./ Eill (ree all memory associated Eith the result identi(ier result;
fbs?l>free>result./ only needs to #e called i( you are concerned a#out hoE much memory is #eing
used (or /ueries that return large result sets; All associated result memory is automatically (reed at
the end o( the scriptHs eFecution;
fbs?l>get>autostart>info
>P&P 8 _^ 8;1;3A P&P 4?
(#s/lZgetZautostartZin(o 22 No description given yet
Kescripci"n
array fbs?l>get>autostart>info > Presource lin"Zidenti(ierQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
fbs?l>hostname
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZhostname 22 Get or set the host name used Eith a connection
Kescripci"n
string fbs?l>hostname > resource lin"Zidenti(ier PA string hostZnameQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
fbs?l>insert>id
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZinsertZid 22 Get the id generated (rom the previous .N+R, operation
Kescripci"n
int fbs?l>insert>id > Presource lin"Zidenti(ierQ ?
fbs?l>insert>id./ returns the .D generated (or an column de(ined as D+FA@L, @N.O@+ #y the
previous .N+R, /uery using the given l6n>_6#ent696er; .( l6n>_6#ent696er isnHt speci(iedA the last
opened lin" is assumed;
fbs?l>insert>id./ returns 3 i( the previous /uery does not generate an D+FA@L, @N.O@+ value; .(
you need to save the value (or laterA #e sure to call (#s/lZinsertZid>? immediately a(ter the /uery that
generates the value;
Nota- ,he value o( the FrontBase OL (unction fbs?l>insert>id./ alEays contains the
most recently generated D+FA@L, @N.O@+ valueA and is not reset #etEeen /ueries;
fbs?l>list>dbs
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZlistZd#s 22 List data#ases availa#le on a FrontBase server
Kescripci"n
resource fbs?l>list>dbs > Presource lin"Zidenti(ierQ ?
fbs?l>list>dbs./ Eill return a result pointer containing the data#ases availa#le (rom the current (#s/l
daemon; @se the fbs?l>tablename./ (unction to traverse this result pointer;
E'emplo !. fbs?l>list>dbs./ e+ample
$linI > #bsQl%connect3MlocalhostM, MmynameM, MsecretM9;
$db%list > #bsQl%list%dbs3$linI9;
8hile 3$ro8 > #bsQl%#etch%object3$db%list99 :
echo $ro8F>Latabase . "Vn";
;
+l resultado del e'emplo seriaC
database6
databaseC
database<
...
Nota- ,he a#ove code Eould 'ust as easily Eor" Eith fbs?l>fetch>ro3./ or other
similar (unctions;
fbs?l>list>fields
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZlistZ(ields 22 List FrontBase result (ields
Kescripci"n
resource fbs?l>list>fields > string data#aseZnameA string ta#leZname PA resource lin"Zidenti(ierQ ?
fbs?l>list>fields./ retrieves in(ormation a#out the given ta#lename; Arguments are the data#ase
name and the ta#le name; A result pointer is returned Ehich can #e used Eith fbs?l>field>flags./A
fbs?l>field>len./A fbs?l>field>name./A and fbs?l>field>type./;
A result identi(ier is a positive integer; ,he (unction returns FALSE i( an error occurs; A string
descri#ing the error Eill #e placed in 'phperrmsEA and unless the (unction Eas called as W91s@lLM
then this error string Eill also #e printed out;
E'emplo !. fbs?l>list>fields./ e+ample
<?php
$linI > #bsQl%connect3MlocalhostM, MmynameM, MsecretM9;
$#ields > #bsQl%list%#ields3"database6", "table6", $linI9;
$columns > #bsQl%num%#ields3$#ields9;
#or 3$i > 2; $i < $columns; $i[[9 :
echo #bsQl%#ield%name3$#ields, $i9 . "Vn";;
;
?>
+l resultado del e'emplo seriaC
#ield6
#ieldC
#ield<
...
fbs?l>list>tables
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZlistZta#les 22 List ta#les in a FrontBase data#ase
Kescripci"n
resource fbs?l>list>tables > string data#ase PA resource lin"Zidenti(ierQ ?
fbs?l>list>tables./ ta"es a data#ase name and returns a result pointer much li"e the
fbs?l>db>?uery./ (unction; ,he fbs?l>tablename./ (unction should #e used to eFtract the actual
ta#le names (rom the result pointer;
fbs?l>ne+t>result
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZneFtZresult 22 Move the internal result pointer to the neFt result
Kescripci"n
#ool fbs?l>ne+t>result > resource resultZid ?
Lhen sending more than one OL statement to the server or eFecuting a stored procedure Eith
multiple results Eill cause the server to return multiple result sets; ,his (unction Eill test (or
additional results availa#le (orm the server; .( an additional result set eFists it Eill (ree the eFisting
result set and prepare to (etch the Eords (rom the neE result set; ,he (unction Eill return TRUE i( an
additional result set Eas availa#le or FALSE otherEise;
E'emplo !. fbs?l>ne+t>result./ e+ample
<?php
$linI > #bsQl%connect3"localhost", "%&P&*E"", "secret"9;
#bsQl%select%db3""yLZ", $linI9;
$&NO > "&elect W #rom table6; select W #rom tableC;";
$rs > #bsQl%Query3$&NO, $linI9;
do :
8hile 3$ro8 > #bsQl%#etch%ro83$rs99 :
;
; 8hile 3#bsQl%next%result3$rs99;
#bsQl%#ree%result3$rs9;
#bsQl%close3$linI9;
?>
fbs?l>num>fields
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZnumZ(ields 22 Get num#er o( (ields in result
Kescripci"n
int fbs?l>num>fields > resource result ?
fbs?l>num>fields./ returns the num#er o( (ields in a result set;
ee alsoC fbs?l>db>?uery./A fbs?l>?uery./A fbs?l>fetch>field./A and fbs?l>num>ro3s./;
fbs?l>num>ro3s
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZnumZroEs 22 Get num#er o( roEs in result
Kescripci"n
int fbs?l>num>ro3s > resource result ?
fbs?l>num>ro3s./ returns the num#er o( roEs in a result set; ,his command is only valid (or
+L+5, statements; ,o retrieve the num#er o( roEs returned (rom a .N+R,A @PDA,+ or
D+L+,+ /ueryA use fbs?l>affected>ro3s./;
E'emplo !. fbs?l>num>ro3s./ e+ample
<?php
$linI > #bsQl%connect3"localhost", "username", "pass8ord"9;
#bsQl%select%db3"database", $linI9;
$result > #bsQl%Query3"&EOER* W S'?" table6;", $linI9;
$num%ro8s > #bsQl%num%ro8s3$result9;
echo "$num%ro8s 'o8sVn";
?>
ee alsoC fbs?l>affected>ro3s./A fbs?l>connect./A fbs?l>select>db./A and fbs?l>?uery./;
fbs?l>pass3ord
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZpassEord 22 Get or set the user passEord used Eith a connection
Kescripci"n
string fbs?l>pass3ord > resource lin"Zidenti(ier PA string passEordQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
fbs?l>pconnect
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZpconnect 22 Open a persistent connection to a FrontBase erver
Kescripci"n
resource fbs?l>pconnect > Pstring hostname PA string username PA string passEordQQQ ?
ReturnsC A positive FrontBase persistent lin" identi(ier on successA or FALSE on error;
fbs?l>pconnect./ esta#lishes a connection to a FrontBase server; ,he (olloEing de(aults are
assumed (or missing optional parametersC host ^ HlocalhostHA username ^ =Z%,+M= and pass7or#
^ empty passEord;
,o set Front#ase server port num#erA use fbs?l>select>db./;
fbs?l>pconnect./ acts very much li"e fbs?l>connect./ Eith tEo ma'or di((erences;
FirstA Ehen connectingA the (unction Eould (irst try to (ind a >persistent? lin" thatHs already open Eith
the same hostA username and passEord; .( one is (oundA an identi(ier (or it Eill #e returned instead o(
opening a neE connection;
econdA the connection to the OL server Eill not #e closed Ehen the eFecution o( the script ends;
.nsteadA the lin" Eill remain open (or (uture use;
,his type o( lin"s is there(ore called HpersistentH;
fbs?l>?uery
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZ/uery 22 end a FrontBase /uery
Kescripci"n
resource fbs?l>?uery > string /uery PA resource lin"Zidenti(ier PA int #atchZsizeQQ ?
fbs?l>?uery./ sends a /uery to the currently active data#ase on the server thatHs associated Eith the
speci(ied lin" identi(ier; .( l6n>_6#ent696er isnHt speci(iedA the last opened lin" is assumed; .( no lin" is
openA the (unction tries to esta#lish a lin" as i( fbs?l>connect./ Eas called Eith no argumentsA and
use it;
Nota- ,he /uery string shall alEays end Eith a semicolon;
fbs?l>?uery./ returns TRUE >non2zero? or FALSE to indicate Ehether or not the /uery succeeded;
A return value o( TRUE means that the /uery Eas legal and could #e eFecuted #y the server; .t does
not indicate anything a#out the num#er o( roEs a((ected or returned; .t is per(ectly possi#le (or a
/uery to succeed #ut a((ect no roEs or return no roEs;
,he (olloEing /uery is syntactically invalidA so fbs?l>?uery./ (ails and returns FALSEC
E'emplo !. fbs?l>?uery./ e+ample
<?php
$result > #bsQl%Query3"&EOER* W 7HE'E 6>6"9
or die 3"4n=alid Query"9;
?>
,he (olloEing /uery is semantically invalid i( m?_col is not a column in the ta#le m?_t1lA so
fbs?l>?uery./ (ails and returns FALSEC
E'emplo *. fbs?l>?uery./ e+ample
<?php
$result > #bsQl%Query 3"&EOER* my%col S'?" my%tbl"9
or die 3"4n=alid Query"9;
?>
fbs?l>?uery./ Eill also (ail and return FALSE i( you donHt have permission to access the ta#le>s?
re(erenced #y the /uery;
Assuming the /uery succeedsA you can call fbs?l>num>ro3s./ to (ind out hoE many roEs Eere
returned (or a +L+5, statement or fbs?l>affected>ro3s./ to (ind out hoE many roEs Eere
a((ected #y a D+L+,+A .N+R,A R+PLA5+A or @PDA,+ statement;
For +L+5, statementsA fbs?l>?uery./ returns a neE result identi(ier that you can pass to
fbs?l>result./; Lhen you are done Eith the result setA you can (ree the resources associated Eith it
#y calling fbs?l>free>result./; AlthoughA the memory Eill automatically #e (reed at the end o( the
scriptHs eFecution;
ee alsoC fbs?l>affected>ro3s./A fbs?l>db>?uery./A fbs?l>free>result./A fbs?l>result./A
fbs?l>select>db./A and fbs?l>connect./;
fbs?l>read>blob
>P&P 8 _^ 8;0;3A P&P 4?
(#s/lZreadZ#lo# 22 Read a BLOB (rom the data#ase
Kescripci"n
string fbs?l>read>blob > string #lo#Zhandle PA resource lin"Zidenti(ierQ ?
ReturnsC A string containing the BLOB speci(ied #y #lo#Zhandle;
fbs?l>read>blob./ reads BLOB data (rom the data#ase; .( a select statement contains BLOB andDor
5LOB columns FrontBase Eill return the data directly Ehen data is (etched; ,his de(ault #ehavior
can #e changed Eith fbs?l>set>lob>mode./ so the (etch (unctions Eill return handles to BLOB and
5LOB data; .( a handle is (etched a user must call fbs?l>read>blob./ to get the actual BLOB data
(rom the data#ase;
E'emplo !. fbs?l>read>blob./ e+ample
<?php
$linI > #bsQl%pconnect3"localhost", "%&P&*E"", "secret"9
or die3"Rould not connect"9;
$sQl > "&EOER* ZO?Z%R?O+". S'?" ZO?Z%*,ZOE;";
$rs > #bsQl%Query3$sQl, $linI9;
$ro8%data > #bsQl%#etch%ro83$rs9;
// $ro8%data)2/ 8ill no8 contain the blob data #or the #irst ro8
#bsQl%#ree%result3$rs9;

$rs > #bsQl%Query3$sQl, $linI9;
#bsQl%set%lob%mode3$rs, SZ&NO%O?Z%H,.LOE9;
$ro8%data > #bsQl%#etch%ro83$rs9;
// $ro8%data)2/ 8ill no8 contain a handle to the ZO?Z data in the #irst ro8
$blob%data > #bsQl%read%blob3$ro8%data)2/9;
#bsQl%#ree%result3$rs9;

?>
ee alsoC fbs?l>create>blob./A fbs?l>read>blob./A fbs?l>read>clob./A and fbs?l>set>lob>mode./;
fbs?l>read>clob
>P&P 8 _^ 8;0;3A P&P 4?
(#s/lZreadZclo# 22 Read a 5LOB (rom the data#ase
Kescripci"n
string fbs?l>read>clob > string clo#Zhandle PA resource lin"Zidenti(ierQ ?
ReturnsC A string containing the 5LOB speci(ied #y clo#Zhandle;
fbs?l>read>clob./ reads 5LOB data (rom the data#ase; .( a select statement contains BLOB andDor
5LOB columns FrontBase Eill return the data directly Ehen data is (etched; ,his de(ault #ehavior
can #e changed Eith fbs?l>set>lob>mode./ so the (etch (unctions Eill return handles to BLOB and
5LOB data; .( a handle is (etched a user must call fbs?l>read>clob./ to get the actual 5LOB data
(rom the data#ase;
E'emplo !. fbs?l>read>clob./ e+ample
<?php
$linI > #bsQl%pconnect3"localhost", "%&P&*E"", "secret"9
or die3"Rould not connect"9;
$sQl > "&EOER* RO?Z%R?O+". S'?" RO?Z%*,ZOE;";
$rs > #bsQl%Query3$sQl, $linI9;
$ro8%data > #bsQl%#etch%ro83$rs9;
// $ro8%data)2/ 8ill no8 contain the clob data #or the #irst ro8
#bsQl%#ree%result3$rs9;

$rs > #bsQl%Query3$sQl, $linI9;
#bsQl%set%lob%mode3$rs, SZ&NO%O?Z%H,.LOE9;
$ro8%data > #bsQl%#etch%ro83$rs9;
// $ro8%data)2/ 8ill no8 contain a handle to the RO?Z data in the #irst ro8
$clob%data > #bsQl%read%clob3$ro8%data)2/9;
#bsQl%#ree%result3$rs9;

?>
ee alsoC fbs?l>create>blob./A fbs?l>read>blob./A fbs?l>read>clob./A and fbs?l>set>lob>mode./;
fbs?l>result
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZresult 22 Get result data
Kescripci"n
miFed fbs?l>result > resource result PA int roE PA miFed (ieldQQ ?
fbs?l>result./ returns the contents o( one cell (rom a FrontBase result set; ,he (ield argument can
#e the (ieldHs o((setA or the (ieldHs nameA or the (ieldHs ta#le dot (ieldHs name >ta#ledname;(ieldname?;
.( the column name has #een aliased >Hselect (oo as #ar (rom;;;H?A use the alias instead o( the column
name;
Lhen Eor"ing on large result setsA you should consider using one o( the (unctions that (etch an
entire roE >speci(ied #eloE?; As these (unctions return the contents o( multiple cells in one (unction
callA theyHre M@5& /uic"er than fbs?l>result./; AlsoA note that speci(ying a numeric o((set (or the
(ield argument is much /uic"er than speci(ying a (ieldname or ta#lename;(ieldname argument;
5alls to fbs?l>result./ should not #e miFed Eith calls to other (unctions that deal Eith the result set;
Recommended high2per(ormance alternativesC fbs?l>fetch>ro3./A fbs?l>fetch>array./A and
fbs?l>fetch>ob'ect./;
fbs?l>rollbacB
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZroll#ac" 22 Roll#ac" a transaction to the data#ase
Kescripci"n
#ool fbs?l>rollbacB > Presource lin"Zidenti(ierQ ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
fbs?l>rollbacB./ ends the current transaction #y rolling #ac" all statements issued since last
commit; ,his command is only needed i( autocommit is set to (alse;
ee alsoC fbs?l>autocommit./ and fbs?l>commit./
fbs?l>select>db
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZselectZd# 22 elect a FrontBase data#ase
Kescripci"n
#ool fbs?l>select>db > Pstring data#aseZname PA resource lin"Zidenti(ierQQ ?
fbs?l>select>db./ sets the current active data#ase on the server thatHs associated Eith the speci(ied
lin" identi(ier; .( no lin" identi(ier is speci(iedA the last opened lin" is assumed; .( no lin" is openA
the (unction Eill try to esta#lish a lin" as i( fbs?l>connect./ Eas calledA and use it;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,he client contacts FB+Fec to o#tain the port num#er to use (or the connection to the data#ase; .(
the data#ase name is a num#er the system Eill use that as a port num#er and it Eill not as" FB+Fec
(or the port num#er; ,he FrontBase server can #e stared as FRontBase 2FB+Fec^No 2port^`port
num#er_ `data#ase name_;
+very su#se/uent call to fbs?l>?uery./ Eill #e made on the active data#ase;
i( the data#ase is protected Eith a data#ase passEordA the user must call fbs?l>database>pass3ord
./ #e(ore selecting the data#ase;
ee also fbs?l>connect./A fbs?l>pconnect./A fbs?l>database>pass3ord./A and fbs?l>?uery./;
fbs?l>set>lob>mode
>P&P 8 _^ 8;0;3A P&P 4?
(#s/lZsetZlo#Zmode 22 et the LOB retrieve mode (or a FrontBase result set
Kescripci"n
#ool fbs?l>set>lob>mode > resource resultA string data#aseZname ?
ReturnsC TRUE on successA FALSE on error;
fbs?l>set>lob>mode./ sets the mode (or retrieving LOB data (rom the data#ase; Lhen BLOB and
5LOB data is stored in FrontBase it can #e stored direct or indirect; Direct stored LOB data Eill
alEays #e (etched no matter the setting o( the lo# mode; .( the LOB data is less than 410 #ytes it
Eill alEays #e stored directly;
FBOLZLOBZD.R+5, 2 LOB data is retrieved directly; Lhen data is (etched (rom the
data#ase Eith fbs?l>fetch>ro3./A and other (etch (unctionsA all 5LOB and BLOB columns
Eill #e returned as ordinary columns; ,his is the de(ault value on a neE FrontBase result;
FBOLZLOBZ&ANDL+ 2 LOB data is retrieved as handles to the data; Lhen data is
(etched (rom the data#ase Eith fbs?l>fetch>ro3 ./A and other (etch (unctionsA LOB data Eill
#e returned as a handle to the data i( the data is stored indirect or the data i( it is stored
direct; .( a handle is returned it Eill #e a 0: #yte string (ormatted as
=GH333333333333333333333333H=;
ee alsoC fbs?l>create>blob./A fbs?l>create>clob./A fbs?l>read>blob./A and fbs?l>read>clob./;
fbs?l>set>pass3ord
>P&P 4?
(#s/lZsetZpassEord 22 5hange the passEord (or a given user
Kescripci"n
#ool fbs?l>set>pass3ord > resource lin"Zidenti(ierA string userA string passEordA string
oldZpassEord ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
fbs?l>set>transaction
>P&P 8 _^ 8;0;3A P&P 4?
(#s/lZsetZtransaction 22 et the transaction loc"ing and isolation
Kescripci"n
void fbs?l>set>transaction > resource lin"Zidenti(ierA int Loc"ingA int .solation ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
fbs?l>start>db
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZstartZd# 22 tart a data#ase on local or remote server
Kescripci"n
#ool fbs?l>start>db > string data#aseZname PA resource lin"Zidenti(ier PA string data#aseZoptionsQQ ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
fbs?l>start>db./
ee alsoC fbs?l>db>status./ and fbs?l>stop>db./;
fbs?l>stop>db
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZstopZd# 22 top a data#ase on local or remote server
Kescripci"n
#ool fbs?l>stop>db > string data#aseZname PA resource lin"Zidenti(ierQ ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
fbs?l>stop>db./
ee alsoC fbs?l>db>status./ and fbs?l>start>db./;
fbs?l>tablename
>P&P 8 _^ 8;0;3A P&P 4?
(#s/lZta#lename 22 Get ta#le name o( (ield
Kescripci"n
string fbs?l>tablename > resource resultA int i ?
fbs?l>tablename./ ta"es a result pointer returned #y the fbs?l>list>tables./ (unction as Eell as an
integer indeF and returns the name o( a ta#le; ,he fbs?l>num>ro3s./ (unction may #e used to
determine the num#er o( ta#les in the result pointer;
E'emplo !. fbs?l>tablename./ e+ample
<?php
#bsQl%connect3"localhost", "%&P&*E"", ""9;
$result > #bsQl%list%tables3"8isconsin"9;
$i > 2;
8hile 3$i < #bsQl%num%ro8s3$result99 :
$tb%names)$i/ > #bsQl%tablename3$result, $i9;
echo $tb%names)$i/ . "<br />";
$i[[;
;
?>
fbs?l>username
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZusername 22 Get or set the host user used Eith a connection
Kescripci"n
string fbs?l>username > resource lin"Zidenti(ier PA string usernameQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
fbs?l>3arnings
>P&P 8 _^ 8;3;KA P&P 4?
(#s/lZEarnings 22 +na#le or disa#le FrontBase Earnings
Kescripci"n
#ool fbs?l>3arnings > P#ool OnO((Q ?
Returns TRUE i( Earnings is turned on otherEise FALSE;
fbs?l>3arnings./ ena#les or disa#les FrontBase Earnings;
IIIC. ;unciones del ;ormato de Katos de
;ormulario
Introducci"n
+l Formato de Datos de Formulario >FDF? es un (ormato para la gesti-n de (ormularios al interior
de documentos PDF; +s recomenda#le /ue lea la documentaci-n en
httpCDDpartners;ado#e;comDasnDacro#atD(orms;'sp para m*s in(ormaci-n so#re lo /ue FDF esA y el
modo de usarlo en general;
La idea general de FDF es similar a la de los (ormularios &,ML; La di(erencia es #*sicamente el
(ormato en /ue los datos son transmitidos al servidor cuando el #ot-n de env)o es pulsado >el cual
viene a ser el Formato de Datos de Formulario? y el (ormato del (ormulario mismo >el cual es el
Formato de Documento Porta#leA PDF?; +l procesamiento de los datos FDF es una de las
caracter)sticas o(recidas por las (unciones (d(; Pero hay m*s; ,am#i<n es posi#le tomar un
(ormulario PDF eFistente y po#lar los campos de entrada con datos sin modi(icar el (ormulario
mismo; +n tal casoA es posi#le crear un documento FDF >fdf>create./?A de(inir los valores de cada
campo de entrada >fdf>set>5alue./? y asociarlo con un (ormulario PDF >fdf>set>file./?; Finalmente
de#e ser enviado al navegador con el tipo Mime appl6cat6on/n#.9#9; +l plugin lector de Acro#at en
su navegador reconoce el tipo MimeA lee el (ormulario PDF asociado y aplica los datos del
documento FDF;
i echa un vistazo a un documento FDF con un editor de teFtoA encontrar* un o#'eto de cat*logo con
el nom#re 3D3; ,al o#'eto puede contener cierto nBmero de entradas como 36el#sA 3A Status etc;;
Las entradas usadas con m*s (recuencia son 36el#sA la cual apunta a una lista de campos de entradaA
y 3 /ue contiene el nom#re de archivo del documento PDF al /ue pertenecen estos datos; +sas
entradas son re(erenciadas en la documentaci-n FDF como DF2Sey o Dtatus2Sey; La modi(icaci-n
de estas entradas se realiza por medio de (unciones como fdf>set>file./ y fdf>set>status./; Los
campos son mo(idicados con fdf>set>5alue./A fdf>set>opt./ etc;;
Me?uirimientos
+s necesario el tool"it DS para FDF disponi#le en
httpCDDpartners;ado#e;comDasnDacro#atD(orms;'sp; A partir de P&P 8;7 necesita por lo menos la
versi-n 4;3 del DS; La #i#lioteca del tool"it FDF se encuentra disponi#le en (orma #inaria
BnicamenteA las plata(ormas soportadas por Ado#e son Lin70A LinuFA olaris y A.J;
Instalaci"n
%ou must compile P&P Eith ==76th=9#9t>):D0R.;
Nota- .( you run into pro#lems con(iguring P&P Eith (d(t" supportA chec" Ehether the
header (ile #d#tI.h and the li#rary lib#d#tI.so are at the right place; ,he
con(igure script supports #oth the directory structure o( the FDF DS distri#ution and
the usual L4'/include D L4'/lib layoutA so you can point it either directly to the
unpac"ed distri#ution directory or put the header (ile and the appropriate li#rary (or your
plat(orm into e;g; /usr/local/include and /usr/local/lib and con(igure
Eith ==76th=9#9t>:/usr/local;
Note to 2in7* )sers- .n order to ena#le this module on a LindoEs environmentA you
must copy #d#tI.dll (rom the DLL (older o( the P&PDLin70 #inary pac"age to the
%,+M70 (older o( your EindoEs machine; >+FC R@V74..*V&P&*E"<C or
R@V74.L?7&V&P&*E"<C?
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
fdf
La mayor)a de (unciones (d( re/uieren un recurso 9#9 como su primer par*metro; @n recurso 9#9 es
un gestor con un archivo (d( a#ierto; Los recursos 9#9 pueden o#tenerse usando fdf>create./A
fdf>open./ y fdf>open>string./;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
FDF$al5e >integer?
FDFStat5s >integer?
FDFFile >integer?
FDFID >integer?
FDFF9 >integer?
FDFSetF9 >integer?
FDFClearF9 >integer?
FDFFlags >integer?
FDFSetF >integer?
FDFClrF >integer?
FDFAP >integer?
FDFAS >integer?
FDFA!tion >integer?
FDFAA >integer?
FDFAPRe9 >integer?
FDFIF >integer?
FDFEnter >integer?
FDFE4it >integer?
FDFDo8n >integer?
FDFUp >integer?
FDFFor:at >integer?
FDF$ali3ate >integer?
FDF&e;stro7e >integer?
FDFCal!5late >integer?
FDFNor:alAP >integer?
FDFRollo6erAP >integer?
FDFDo8nAP >integer?
E'emplos
Los siguientes e'emplos muestran Bnicamente la evaluaci-n de datos del (ormulario;
E'emplo !. E5aluaci"n de un documento ;K;
<?php
// ,brir un #d# desde la cadena de entrada entreEara por la extension
// El #ormulario pd# contenia =arios campos de entrada de texto con los
// nombres =olumen, #echa, comentario, editorial, editor, y dos
// cuadros de =eri#icacion mostrar%editorial y mostrar%editor.
$#d# > #d#%open%strinE3$H**%SLS%L,*,9;
$=olumen > #d#%Eet%=alue3$#d#, "=olumen"9;
echo "El campo =olumen tiene el =alor M<b>$=olumen</b>M<br />";
$#echa > #d#%Eet%=alue3$#d#, "#echa"9;
echo "El campo #echa tiene el =alor M<b>$#echa</b>M<br />";
$comentario > #d#%Eet%=alue3$#d#, "comentario"9;
echo "El campo comentario tiene el =alor M<b>$comentario</b>M<br />";
i# 3#d#%Eet%=alue3$#d#, "mostrar%editorial"9 >> "?n"9 :
$editorial > #d#%Eet%=alue3$#d#, "editorial"9;
echo "El campo editorial tiene el =alor M<b>$editorial</b>M<br />";
; else
echo "Oa editorial no ser&aacute; mostrada.<br />";
i# 3#d#%Eet%=alue3$#d#, "mostrar%editor"9 >> "?n"9 :
$editor > #d#%Eet%=alue3$#d#, "editor"9;
echo "El campo editor tiene el =alor M<b>$editor</b>M<br />";
; else
echo "El editor no ser&aacute; mostrado.<br />";
#d#%close3$#d#9;
?>
Tabla de contenidos
(d(ZaddZdocZ'avascript 22 Adds 'avascript code to the FDF document
(d(ZaddZtemplate 22 Adds a template into the FDF document
(d(Zclose 22 5errar un documento FDF
(d(Zcreate 22 5rear un documento FDF
(d(ZenumZvalues 22 5all a user de(ined (unction (or each document value
(d(Zerrno 22 Return error code (or last (d( operation
(d(Zerror 22 Return error description (or (d( error code
(d(ZgetZap 22 Get the appearance o( a (ield
(d(ZgetZattachment 22 +Ftracts uploaded (ile em#edded in the FDF
(d(ZgetZencoding 22 Get the value o( the D+ncoding "ey
(d(ZgetZ(ile 22 O#tener el valor de la clave DF
(d(ZgetZ(lags 22 Gets the (lags o( a (ield
(d(ZgetZopt 22 Gets a value (rom the opt array o( a (ield
(d(ZgetZstatus 22 O#tener el valor de la clave D,A,@
(d(ZgetZvalue 22 O#tener el valor de un campo
(d(ZgetZversion 22 Gets version num#er (or FDF AP. or (ile
(d(Zheader 22 ets FDF2speci(ic output headers
(d(ZneFtZ(ieldZname 22 O#tener el nom#re del siguiente campo
(d(ZopenZstring 22 Read a FDF document (rom a string
(d(Zopen 22 A#rir un documento FDF
(d(ZremoveZitem 22 ets target (rame (or (orm
(d(ZsaveZstring 22 Returns the FDF document as a string
(d(Zsave 22 Guardar un documeto FDF
(d(ZsetZap 22 A'usta la apariencia de un campo
(d(ZsetZencoding 22 ets FDF character encoding
(d(ZsetZ(ile 22 Fi'ar el valor de la clave DF
(d(ZsetZ(lags 22 ets a (lag o( a (ield
(d(ZsetZ'avascriptZaction 22 ets an 'avascript action o( a (ield
(d(ZsetZonZimportZ'avascript 22 Adds 'avascript code to #e eFecuted Ehen Acro#at opens the FDF
(d(ZsetZopt 22 ets an option o( a (ield
(d(ZsetZstatus 22 Fi'a el valor de la clave D,A,@
(d(ZsetZsu#mitZ(ormZaction 22 ets a su#mit (orm action o( a (ield
(d(ZsetZtargetZ(rame 22 et target (rame (or (orm display
(d(ZsetZvalue 22 Fi'ar el valor de un campo
(d(ZsetZversion 22 ets version num#er (or a FDF (ile
fdf>add>doc>'a5ascript
>P&P 8 _^ 8;7;3A P&P 4?
(d(ZaddZdocZ'avascript 22 Adds 'avascript code to the FDF document
Kescription
#ool fdf>add>doc>'a5ascript > resource (d(docA string scriptZnameA string scriptZcode ?
Adds a script to the FDFA Ehich Acro#at then adds to the doc2level scripts o( a documentA once the
FDF is imported into it; .t is strongly suggested to use HhrH (or line#rea"s Eithin scr6pt_co#e;
E'emplo !. Adding [a5a,cript code to a ;K;
<?php
$#d# > #d#%create39;
#d#%add%doc%ja=ascript3$#d#, "lus?ne", "#unction lus?ne3x9Vr:Vr return x[6;Vr;Vr"9;
#d#%sa=e3$#d#9;
?>
Eill create a FDF li"e thisC
\SLSF6.C
\_`aj_`ak_`a _`lmn
6 2 obj
<<
/SLS << /Aa=a&cript << /Loc ) 3lus?ne93#unction lus?neV3xV9Vr:Vr return x[6;Vr;Vr9/ >> >>
>>
endobj
trailer
<<
/'oot 6 2 '
>>
\\E?S
fdf>add>template
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(d(ZaddZtemplate 22 Adds a template into the FDF document
Kescription
#ool fdf>add>template > resource (d(docA int neEpageA string (ilenameA string templateA int
rename ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
fdf>close
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
(d(Zclose 22 5errar un documento FDF
Kescripci"n
void fdf>close > int (d(Zdocument ?
La (unci-n fdf>close./ cierra un documento FDF;
$ea tam#i<n fdf>open./;
fdf>create
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
(d(Zcreate 22 5rear un documento FDF
Kescripci"n
int fdf>create > void ?
La (unci-n fdf>create./ crea un documento FDF nuevo; +sta (unci-n se necesita si se desea rellenar
los campos de entrada en un documento PDF;
E'emplo !. Mellenando un documento PK;
<?php
$out#d# > #d#%create39;
#d#%set%=alue3$out#d#, "=olumen", $=olume, 29;
#d#%set%#ile3$out#d#, "http@/test#d#/resultlabel.pd#"9;
#d#%sa=e3$out#d#, "outtest.#d#"9;
#d#%close3$out#d#9;
Header3"RontentFtype@ application/=nd.#d#"9;
$#p > #open3"outtest.#d#", "r"9;
#passthru3$#p9;
unlinI3"outtest.#d#"9;
?>
$ea tam#i<n fdf>close./A fdf>sa5e./A fdf>open./;
fdf>enum>5alues
>P&P 8 _^ 8;7;3A P&P 4?
(d(ZenumZvalues 22 5all a user de(ined (unction (or each document value
Kescription
#ool fdf>enum>5alues > resource (d(docA call#ac" (unction PA miFed userdataQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
fdf>errno
>P&P 8 _^ 8;7;3A P&P 4?
(d(Zerrno 22 Return error code (or last (d( operation
Kescription
int fdf>errno > void ?
fdf>errno./ returns the error code set #y the last FDF (unction call; ,his is zero (or a success(ull
operation or a non2zero error code on (ailure; A teFtual description may #e o#tained using the
fdf>error./ (unction;
ee also fdf>error./;
fdf>error
>P&P 8 _^ 8;7;3A P&P 4?
(d(Zerror 22 Return error description (or (d( error code
Kescription
string fdf>error > Pint errorZcodeQ ?
fdf>error./ returns a teFtual description (or the (d( error code given in error_co#e; ,he (unction
uses the internal error code set #y the last operation i( no error_co#e is givenA so 9#9_errorLM is a
convenient shortcut (or 9#9_errorL9#9_errnoLMM;
ee also fdf>errno./;
fdf>get>ap
>P&P 8 _^ 8;7;3A P&P 4?
(d(ZgetZap 22 Get the appearance o( a (ield
Kescription
#ool fdf>get>ap > resource (d(ZdocumentA string (ieldA int (aceA string (ilename ?
,he fdf>get>ap./ (unction gets the appearance o( a 96el# >i;e; the value o( the DAP "ey? and stores it
in a (ile; ,he possi#le values o( 9ace are FDFNor:alAPA FDFRollo6erAP and FDFDo8nAP;
,he appearance is stored in 96lename;
fdf>get>attachment
>P&P 8 _^ 8;7;3A P&P 4?
(d(ZgetZattachment 22 +Ftracts uploaded (ile em#edded in the FDF
Kescription
array fdf>get>attachment > resource (d(ZdocumentA string (ieldnameA string savepath ?
+Ftracts a (ile uploaded #y means o( the =(ile selection= (ield 96el#name and stores it under saepath;
saepath may #e the name o( a plain (ile or an eFisting directory in Ehich the (ile is to #e created
under its original name; Any eFisting (ile under the same name Eill #e overEritten;
Nota- ,here seems to #e no other Eay to (ind out the original (ilename #ut to store the
(ile using a directory as saepath and chec" (or the #asename it Eas stored under;
,he returned array contains the (olloEing (ieldsC
path 2 path Eere the (ile got stored
s6De 2 size o( the stored (ile in #ytes
t?pe 2 mimetype i( given in the FDF
E'emplo !. ,toring an uploaded file
<?php
$#d# > #d#%open%strinE3$H**%SLS%L,*,9;
$data > #d#%Eet%attachment3$#d#, "#ilename", "/tmpdir"9;
echo "*he uploaded #ile is stored in $data)path/";
?>
fdf>get>encoding
>P&P 8 _^ 8;7;3A P&P 4?
(d(ZgetZencoding 22 Get the value o( the D+ncoding "ey
Kescription
string fdf>get>encoding > resource (d(Zdocument ?
,he fdf>get>encoding./ returns the value o( the D+ncoding "ey; An empty string is returned i( the
de(ault PDFDoc+ncodingD@nicode scheme is used;
ee also fdf>set>encoding./;
fdf>get>file
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
(d(ZgetZ(ile 22 O#tener el valor de la clave DF
Kescripci"n
string fdf>get>file > int (d(Zdocument ?
La (unci-n fdf>set>file./ devuelve el valor de la clave DF;
$ea tam#i<n fdf>set>file./;
fdf>get>flags
>P&P 8 _^ 8;7;3A P&P 4?
(d(ZgetZ(lags 22 Gets the (lags o( a (ield
Kescription
int fdf>get>flags > resource (d(docA string (ieldnameA int Ehich(lags ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
fdf>get>opt
>P&P 8 _^ 8;7;3A P&P 4?
(d(ZgetZopt 22 Gets a value (rom the opt array o( a (ield
Kescription
miFed fdf>get>opt > resource (d(do(A string (ieldname PA int elementQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
fdf>get>status
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
(d(ZgetZstatus 22 O#tener el valor de la clave D,A,@
Kescripci"n
string fdf>get>status > int (d(Zdocument ?
La (unci-n fdf>get>status./ devuelve el valor de la clave D,A,@;
$ea tam#i<n fdf>set>status./;
fdf>get>5alue
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
(d(ZgetZvalue 22 O#tener el valor de un campo
Kescripci"n
string fdf>get>5alue > int (d(ZdocumentA string (ieldname ?
La (unci-n fdf>get>5alue./ devuelve el valor de un campo;
$ea tam#i<n fdf>set>5alue./;
fdf>get>5ersion
>P&P 8 _^ 8;7;3A P&P 4?
(d(ZgetZversion 22 Gets version num#er (or FDF AP. or (ile
Kescription
string fdf>get>5ersion > Presource (d(ZdocumentQ ?
,his (unction Eill return the (d( version (or the given 9#9_#ocumentA or the tool"it AP. version
num#er i( no parameter is given;
For the current FDF tool"it 4;3 the AP. version num#er is H4;3H and the document version num#er is
either H1;0HA H1;7H or H1;8H;
ee also fdf>set>5ersion./;
fdf>header
>P&P 8 _^ 8;7;3A P&P 4?
(d(Zheader 22 ets FDF2speci(ic output headers
Kescription
#ool fdf>header > void ?
,his is a convenience (unction to set appropriate &,,P headers (or FDF output; .t sets the Content=
t?pe: to appl6cat6on/n#.9#9;
fdf>ne+t>field>name
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
(d(ZneFtZ(ieldZname 22 O#tener el nom#re del siguiente campo
Kescripci"n
string fdf>ne+t>field>name > int (d(ZdocumentA string (ieldname ?
La (unci-n fdf>ne+t>field>name./ devuelve el nom#re del campo tras el campo 96el#name o el
nom#re del primer campo si el segundo par*metro es NULL;
$ea tam#i<n fdf>set>field./A fdf>get>field./;
fdf>open>string
>P&P 8 _^ 8;7;3A P&P 4?
(d(ZopenZstring 22 Read a FDF document (rom a string
Kescription
resource fdf>open>string > string (d(Zdata ?
,he fdf>open>string./ (unction reads (orm data (rom a string; 9#9_#ata must contain the data as
returned (rom a PDF (orm or created using fdf>create./ and fdf>sa5e>string./;
%ou can fdf>open>string./ together Eith '!TT+_3D3_D,T, to process (d( (orm input (rom a
remote client;
E'emplo !. Accessing the form data
<?php
$#d# > #d#%open%strinE3$H**%SLS%L,*,9;
/W ... W/
#d#%close3$#d#9;
?>
ee also fdf>open./A fdf>close./A fdf>create./ and fdf>sa5e>string./;
fdf>open
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
(d(Zopen 22 A#rir un documento FDF
Kescripci"n
int fdf>open > string (ilename ?
La (unci-n fdf>open./ a#re un archivo con datos de (ormulario; +ste archivo de#e contener los
datos tal y como se devuelven en un (ormulario PDF; Actualmente dicho archivo de#e crearse
=manualmente= usando la (unci-n fopen./ y escri#iendo en <ste el contenido de &,,PZFDFZDA,A
usando f3rite./; No eFiste un mecanismo similar al de los (ormularios &,ML donde se crea una
varia#le para cada campo de entrada;
E'emplo !. Accediendo a los datos del formulario
<?php
// -uarda los datos SLS en un archi=o temporal
$#d##p > #open3"test.#d#", "8"9;
#8rite3$#d##p, $H**%SLS%L,*,, strlen3$H**%SLS%L,*,99;
#close3$#d##p9;
// ,bre archi=o temporal y e=alha los datos
$#d# > #d#%open3"test.#d#"9;
...
#d#%close3$#d#9;
?>
$ea tam#i<n fdf>close./;
fdf>remo5e>item
>P&P 8 _^ 8;7;3A P&P 4?
(d(ZremoveZitem 22 ets target (rame (or (orm
Kescription
#ool fdf>remo5e>item > resource (d(docA string (ieldnameA int item ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
fdf>sa5e>string
>P&P 8 _^ 8;7;3A P&P 4?
(d(ZsaveZstring 22 Returns the FDF document as a string
Kescription
string fdf>sa5e>string > resource (d(Zdocument ?
,he fdf>sa5e>string./ (unction returns the FDF document as a string;
E'emplo !. Metrie5ing ;K; as a string
<?php
$#d# > #d#%create39;
#d#%set%=alue3$#d#, "#oo", "bar"9;
$str > #d#%sa=e%strinE3$#d#9;
#d#%close3$#d#9;
echo $str;
?>
Eill output something li"e
\SLSF6.C
\_`aj_`ak_`a _`lmn
6 2 obj
<<
/SLS << /Sields C 2 ' >>
>>
endobj
C 2 obj
)
<< /* 3#oo9/( 3bar9>>
/
endobj
trailer
<<
/'oot 6 2 '
>>
\\E?S
ee also fdf>sa5e./A fdf>open>string./A fdf>create./ and fdf>close./;
fdf>sa5e
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
(d(Zsave 22 Guardar un documeto FDF
Kescripci"n
int fdf>sa5e > string (ilename ?
La (unci-n fdf>sa5e./ guarda un documento FDF; +l "it de FDF proporciona una (orma de volcar el
documento a stdout si el par*metro 96lename es H;H; +sto no (unciona si el P&P se utiliza como un
m-dulo del apache; +n tal caso se de#er* escri#ir a un (ichero y utilizar p; e'; fpassthru./ para
visualizarlo;
$ea tam#i<n fdf>close./ y el e'emplo para fdf>create./;
fdf>set>ap
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
(d(ZsetZap 22 A'usta la apariencia de un campo
Kescripci"n
void fdf>set>ap > int (d(ZdocumentA string (ieldZnameA int (aceA string (ilenameA int pageZnum#er ?
La (unci-n fdf>set>ap./ a'usta la apariencia de un campo >p; e'; el valor de la clave DAP?; Los
valores posi#les de 9ace son 1^FDFNormalAPA 0^FDFRolloverAPA 7^FDFDoEnAP;
fdf>set>encoding
>P&P 8 _^ 8;1;3A P&P 4?
(d(ZsetZencoding 22 ets FDF character encoding
Kescription
#ool fdf>set>encoding > resource (d(ZdocumentA string encoding ?
fdf>set>encoding./ sets the character encoding in FDF document 9#9_#ocument; enco#6nE should #e
the valid encoding name; 5urrently the (olloEing values are supportedC =Sh69t=b0S=A =U!C=A
=-A2=A=A6E36e=; An empty string resets the encoding to the de(ault PDFDoc+ncodingD@nicode
scheme;
fdf>set>file
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
(d(ZsetZ(ile 22 Fi'ar el valor de la clave DF
Kescripci"n
void fdf>set>file > int (d(ZdocumentA string (ilename ?
La (unci-n fdf>set>file./ (i'a el valor de la clave DF; La clave DF es simplemente una re(erencia a un
(ormulario PDF /ue se va a rellenar con datos; +n un entorno Ee# es un @RL >p;e';
httpCDtest(d(Dresultla#el;pd(?;
$ea tam#i<n fdf>get>file./ y el e'emplo para fdf>create./;
fdf>set>flags
>P&P 8 _^ 8;3;0A P&P 4?
(d(ZsetZ(lags 22 ets a (lag o( a (ield
Kescription
#ool fdf>set>flags > resource (d(ZdocumentA string (ieldnameA int EhichFlagsA int neEFlags ?
,he fdf>set>flags./ sets certain (lags o( the given (ield 96el#name;
ee also fdf>set>opt./;
fdf>set>'a5ascript>action
>P&P 8 _^ 8;3;0A P&P 4?
(d(ZsetZ'avascriptZaction 22 ets an 'avascript action o( a (ield
Kescription
#ool fdf>set>'a5ascript>action > resource (d(ZdocumentA string (ieldnameA int triggerA string script ?
fdf>set>'a5ascript>action./ sets a 'avascript action (or the given (ield 96el#name;
ee also fdf>set>submit>form>action./;
fdf>set>on>import>'a5ascript
>P&P 8 _^ 8;7;3A P&P 4?
(d(ZsetZonZimportZ'avascript 22 Adds 'avascript code to #e eFecuted Ehen Acro#at opens the FDF
Kescription
#ool fdf>set>on>import>'a5ascript > resource (d(docA string script PA #ool #e(oreZdataZimportQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also fdf>add>doc>'a5ascript./A y fdf>set>'a5ascript>action./;
fdf>set>opt
>P&P 8 _^ 8;3;0A P&P 4?
(d(ZsetZopt 22 ets an option o( a (ield
Kescription
#ool fdf>set>opt > resource (d(ZdocumentA string (ieldnameA int elementA string str1A string str0 ?
,he fdf>set>opt./ sets options o( the given (ield 96el#name;
ee also fdf>set>flags./;
fdf>set>status
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
(d(ZsetZstatus 22 Fi'a el valor de la clave D,A,@
Kescripci"n
void fdf>set>status > int (d(ZdocumentA string status ?
La (unci-n fdf>set>status./ (i'a el valor de la clave D,A,@;
$ea tam#i<n fdf>get>status./;
fdf>set>submit>form>action
>P&P 8 _^ 8;3;0A P&P 4?
(d(ZsetZsu#mitZ(ormZaction 22 ets a su#mit (orm action o( a (ield
Kescription
#ool fdf>set>submit>form>action > resource (d(ZdocumentA string (ieldnameA int triggerA string
scriptA int (lags ?
,he fdf>set>submit>form>action./ sets a su#mit (orm action (or the given (ield 96el#name;
ee also fdf>set>'a5ascript>action./;
fdf>set>target>frame
>P&P 8 _^ 8;7;3A P&P 4?
(d(ZsetZtargetZ(rame 22 et target (rame (or (orm display
Kescription
#ool fdf>set>target>frame > resource (d(ZdocumentA string (rameZname ?
ets the target (rame to display a result PDF de(ined Eith fdf>sa5e>file./ in;
ee also fdf>sa5e>file./;
fdf>set>5alue
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
(d(ZsetZvalue 22 Fi'ar el valor de un campo
Kescripci"n
void fdf>set>5alue > int (d(ZdocumentA string (ieldnameA string valueA int isName ?
La (unci-n fdf>set>5alue./ (i'a el valor de un campo; +l par*metro (inal determina si el valor del
campo se de#er* convertir a un Nom#re PDF >6sName ^ 1? o convertir en una 5adena PDF >6sName
^ 3?;
$ea tam#i<n fdf>get>5alue./;
fdf>set>5ersion
>P&P 8 _^ 8;7;3A P&P 4?
(d(ZsetZversion 22 ets version num#er (or a FDF (ile
Kescription
string fdf>set>5ersion > resource (d(ZdocumentA string version ?
,his (unction Eill set the (d( ers6on (or the given 9#9_#ocument; ome (eatures supported #y this
eFtension are only availa#le in neEer (d( versions; For the current FDF tool"it 4;3 ers6on may #e
either H1;0HA H1;7H or H1;8H;
ee also fdf>get>5ersion./;
IIICI. ;unciones filePro
+stas (unciones permiten acceso en modo de solo2lectura a datos guardados en #ases de datos
(ilePro;
(ilePro es una marca registrada de (P ,echnologiesA .nc; Mas in(ormacion so#re (ilePro puede
encontrarse en httpCDDEEE;(ptech;comD;
Tabla de contenidos
(ileproZ(ieldcount 22 encuentra cuantos campos eFisten en una #ase de datos (ilePro
(ileproZ(ieldname 22 o#tiene el nom#re de un campo
(ileproZ(ieldtype 22 o#tiene el tipo de campo
(ileproZ(ieldEidth 22 o#tiene la anchura de un campo
(ileproZretrieve 22 eFtrae in(ormacion de una #ase de datos (ilePro
(ileproZroEcount 22 encuentra cuantas (ilas eFisten en una #ase de datos (ilePro
(ilepro 22 lee y veri(ica el (ichero de mapeo
filepro>fieldcount
>P&P 7A P&P 8 A P&P 4?
(ileproZ(ieldcount 22 encuentra cuantos campos eFisten en una #ase de datos (ilePro
Kescripcion
int filepro>fieldcount > void ?
Devuelve el numero de campos >columnas? eFistentes en la #ase de datos (ilePro a#ierta;
$er tam#ien filepro./;
filepro>fieldname
>P&P 7A P&P 8 A P&P 4?
(ileproZ(ieldname 22 o#tiene el nom#re de un campo
Kescripcion
string filepro>fieldname > int (ieldZnum#er ?
Devuelve el nom#re del campo correspondiente a 96el#_num1er;
filepro>fieldtype
>P&P 7A P&P 8 A P&P 4?
(ileproZ(ieldtype 22 o#tiene el tipo de campo
Kescripcion
string filepro>fieldtype > int (ieldZnum#er ?
Devuelve el tipo de campo del campo correspondiente a 96el#_num1er;
filepro>field3idth
>P&P 7A P&P 8 A P&P 4?
(ileproZ(ieldEidth 22 o#tiene la anchura de un campo
Kescripcion
int filepro>field3idth > int (ieldZnum#er ?
Devuelve la anchura de el campo correspondiente a 96el#_num1er;
filepro>retrie5e
>P&P 7A P&P 8 A P&P 4?
(ileproZretrieve 22 eFtrae in(ormacion de una #ase de datos (ilePro
Kescripcion
string filepro>retrie5e > int roEZnum#erA int (ieldZnum#er ?
Devuelve la in(ormacion de la #ase de datos contenida en la localizacion especi(icada;
filepro>ro3count
>P&P 7A P&P 8 A P&P 4?
(ileproZroEcount 22 encuentra cuantas (ilas eFisten en una #ase de datos (ilePro
Kescripcion
int filepro>ro3count > void ?
Devuelve el numero de (ilas >entradas? eFistentes en la #ase de datos (ilePro a#ierta;
$er tam#ien filepro./;
filepro
>P&P 7A P&P 8 A P&P 4?
(ilepro 22 lee y veri(ica el (ichero de mapeo
Kescripcion
#ool filepro > string directory ?
Lee y veri(ica el (ichero de mapeoA guardando la relacion de campos e in(ormacion;
Ningun #lo/ueo es realizadoA por elloA no se de#eria modi(icar la #ase de datos (ilePro cuando
puede ser a#ierta con P&P;
IIICII. ;unciones del ,istema de Archi5os
Introducci"n
Me?uirimientos
No se re/uieren #i#liotecas eFternas para compilar esta eFtensi-nA pero si desea /ue P&P o(rezca
soporte para LF >archivos grandes? en LinuFA entonces necesita tener una versi-n reciente de gli#c
y necesita compilar P&P con las siguientes #anderas del compiladorC =D_4,R-E304E_SOURCE
=D_304E_O33SET_A0TS:X;;
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones de Configuraci"n del ,istema de Archi5os y ,ecuencias
Nombre Predeterminado Modificable
alloEZurlZ(open =1= P&PZ.N.Z%,+M
userZagent N@LL P&PZ.N.ZALL
de(aultZsoc"etZtimeout =K3= P&PZ.N.ZALL
(rom N@LL NN
autoZdetectZlineZending
s
=O((= P&PZ.N.ZALL
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
allo7_url_9open boolean
+sta opci-n ha#ilita las envolturas (open tipo @RL /ue le permiten acceder a o#'etos @RL
como archivos; +Fisten envolturas predeterminadas para el acceso de archivos remotos
usando los protocolos (tp o httpA algunas eFtensiones como zli# pueden registrar envolturas
adicionales;
Nota- +ste par*metro puede ser de(inido Bnicamente en php;ini de#ido a razones
de seguridad;
Nota- +sta opci-n (ue introducida inmediatamente despu<s del lanzamiento de la
versi-n 8;3;7; Para versiones anteriores aA e incluyendo la 8;3;7A solo puede
desha#ilitar esta caracter)stica en tiempo de compilaci-n usando el par*metro de
con(iguraci-n ==#6sa1le=url=9open=7rapper;
A5iso
+n versiones de EindoEs anteriores a P&P 8;7;3A las siguientes (unciones no soportan el acceso de
archivos remotosC include./A include>once./A re?uire./A re?uire>once./ y las (unciones
imagecreate(romJJJ en la eFtensi-n Re(erencia L..A 3unc6ones para 6m[Eenes ;
user_aEent string
De(inir el agente de usuario /ue P&P env)a;
#e9ault_soc>et_t6meout integer
,iempo de espera predeterminado >en segundos? para secuencias #asadas en soc"ets;
Nota- +sta opci-n de con(iguraci-n (ue introducida en P&P 8;7;3
9rom:*UoeWe8ample.com* string
De(inir la contraseWa de (tp an-nimo >su direcci-n de correo electr-nico?;
auto_#etect_l6ne_en#6nEs boolean
5uando est* ha#ilitada esta opci-nA P&P eFamina los datos le)dos por fgets./ y file./ para ver
si est* usando convenciones de (inal de l)neo tipo @niFA M2Dos o Macintosh;
+sto le permite a P&P interoperar con sistemas MacintoshA pero tiene un valor predeterminado
de O((A ya /ue hay un impacto ligero de rendimiento cuando se detectan las convenciones
+OL para la primera l)neaA y tam#i<n por/ue las personas /ue usen retornos de carro como
separador de elementos #a'o sistemas @niF perci#ir)an un comportamiento /ue no es
compati#le con versiones anteriores;
Nota- +sta opci-n de con(iguraci-n (ue introducida en P&P 8;7;3
Tipos de recursos
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
#LO(_(RACE >integer?
#LO(_ONLYDIR >integer?
#LO(_MAR& >integer?
#LO(_NOSORT >integer?
#LO(_NOCHEC& >integer?
#LO(_NOESCAPE >integer?
PATHINFO_DIRNAME >integer?
PATHINFO_(ASENAME >integer?
PATHINFO_E%TENSION >integer?
FILE_USE_INCLUDE_PATH >integer?
FILE_APPEND >integer?
FILE_I#NORE_NE"_LINES >integer?
FILE_S&IP_EMPTY_LINES >integer?
Cer tambi%n
Para (unciones relacionadasA vea tam#i<n las secciones Directorio y +'ecuci-n de Programas;
Para una lista de las varias envolturas de @RL /ue pueden ser usadas como archivos remotosA y su
eFplicaci-nA vea tam#i<n Ap<ndice L;
Tabla de contenidos
#asename 22 Devuelve la parte del path correspondiente al nom#re del (ichero
chgrp 22 5am#ia el grupo de un (ichero
chmod 22 5am#ia permisos de un (ichero
choEn 22 5am#ia el propietario de un (ichero
clearstatcache 22 Limpia la cache de estado de un (ichero
copy 22 5opia un (ichero
delete 22 @na entrada manual inBtil
dirname 22 Devuelve la parte del path correspondiente al directorio
dis"Z(reeZspace 22 Devuelve el espacio disponi#le en el directorio
dis"ZtotalZspace 22 Devuelve el tamaWo total de un directorio
dis"(reespace 22 Devuelve el espacio disponi#le en un directorio
(close 22 5ierra el apuntador a un (ichero a#ierto
(eo( 22 $eri(ica si el apuntador a un (ichero est* al (inal del (ichero >end2o(2(ile?
((lush 22 $ac)a la salida hacia un archivo
(getc 22 O#tiene un caracter del (ichero apuntado
(getcsv 22 O#tiene una l)nea del (ichero apuntado y eFtrae los campos 5$
(gets 22 O#tiene una l)nea desde el apuntador de archivo
(getss 22 O#tiene una l)na desde el apuntador de archivo y elimina las eti/uetas &,ML
(ileZeFists 22 $eri(ica si un archivo o directorio eFiste
(ileZgetZcontents 22 Lee un archivo entero en una cadena
(ileZputZcontents 22 +scri#ir una cadena so#re un archivo
(ile 22 Lee un archivo entero hacia una matriz
(ileatime 22 O#tiene la hora del Bltimo acceso al archivo
(ilectime 22 O#tiene la hora de modi(icaci-n del inode del archivo
(ilegroup 22 O#tiene el grupo del archivo
(ileinode 22 O#tiene el inode del archivo
(ilemtime 22 O#tiene la hora de modi(icaci-n del archivo
(ileoEner 22 O#tiene el dueWo del archivo
(ileperms 22 O#tiene los permisos del archivo
(ilesize 22 O#tiene el tamaWo del archivo
(iletype 22 O#tiene el tipo de archivo
(loc" 22 Aviso de #lo/ueo de archivos porta#le
(nmatch 22 5omparar un nom#re de archivo contra un patr-n
(open 22 A#re un archivo o @RL
(passthru 22 .mprime todos los datos restantes en un apuntador de archivo
(putcsv 22 Format line as 5$ and Erite to (ile pointer
(puts 22 Alias de f3rite./
(read 22 Lectura de archivos segura con material #inario
(scan( 22 Procesa la entrada desde un archivo de acuerdo a un (ormato
(see" 22 Realiza una #Bs/ueda so#re un apuntador de archivo
(stat 22 O#tiene in(ormaci-n so#re un archivo usando un apuntador de archivo a#ierto
(tell 22 .ndica la posici-n de lecturaDescritura del apuntador de archivo
(truncate 22 ,runca un archivo a la longitud dada
(Erite 22 +scritura so#re archivosA segura con material #inario
glo# 22 +ncontrar nom#res de ruta coincidentes con un patr-n
isZdir 22 .ndica si el nom#re de archivo es un directorio
isZeFecuta#le 22 .ndica si el archivo es e'ecuta#le
isZ(ile 22 .ndica si el archivo es un archivo regular
isZlin" 22 .ndica si el archivo es un enlace sim#-lico
isZreada#le 22 .ndica si es posi#le leer el archivo
isZuploadedZ(ile 22 .ndica si un archivo (ue cargado a trav<s de &,,P PO,
isZErita#le 22 .ndica si el nom#re de archivo es escri#i#le
isZEritea#le 22 Alias de is>3ritable./
lin" 22 5rea un enlace (uerte
lin"in(o 22 5onsigue in(ormaci-n so#re un enlace
lstat 22 +ntrega in(ormaci-n so#re un archivo o enlace sim#-lico
m"dir 22 5rea un directorio
moveZuploadedZ(ile 22 Mueve un archivo cargado a una nueva u#icaci-n
parseZiniZ(ile 22 Procesar un archivo de con(iguraci-n
pathin(o 22 Devuelve in(ormaci-n so#re la ruta de un archivo
pclose 22 5ierra un apuntador de archivo de proceso
popen 22 A#re un apuntador de archivo de proceso
read(ile 22 .mprime un archivo
readlin" 22 Devuelve el o#'etivo de un enlace sim#-lico
realpath 22 Devuelve el nom#re de ruta a#soluto simpli(icado
rename 22 Renom#ra un archivo o directorio
reEind 22 Retroceder la posici-n de un apuntador de archivo
rmdir 22 +limina un directorio
setZ(ileZ#u((er 22 Alias de stream>set>3rite>buffer./
stat 22 +ntrega in(ormaci-n so#re un archivo
symlin" 22 5rea un enlace sim#-lico
tempnam 22 5rear un archivo con un nom#re Bnico
tmp(ile 22 5rea un archivo temporal
touch 22 +sta#lece la hora de acceso y modi(icaci-n de un archivo
umas" 22 5am#ia la umas" actual
unlin" 22 +limina un archivo
basename
>P&P 7A P&P 8 A P&P 4?
#asename 22 Devuelve la parte del path correspondiente al nom#re del (ichero
Kescripci"n
string basename > string path ?
Dada una cadena >string? /ue contiene el path de un (icheroA esta (unci-n devuelve el nom#re #ase
del (ichero;
+n LindoEsA tanto la #arra >/? como la #arra inversa >Q? pueden usarse como caracter separador en
el path; +n otros entornosA se usa la #arra directa >/?;
E'emplo !. E'emplo de basename./
$path > "/home/httpd/html/index.php<";
$#ile > basename3$path9; // $#ile toma el =alor "index.php<"
$er tam#i<nC dirname./
chgrp
>P&P 7A P&P 8 A P&P 4?
chgrp 22 5am#ia el grupo de un (ichero
Kescripci"n
int chgrp > string (ilenameA miFed group ?
,rata de cam#iar el grupo al /ue pertenece el (ichero (ilename al grupo group; -lo el superusuario
puede cam#iar el grupo de un (ichero ar#itrariamenteX otros usuarios pueden cam#iar el grupo del
(ichero a cual/uier grupo del cual el usuario sea miem#ro;
Devuelve TRUE en caso de <FitoX en otro caso devuelve FALSE;
+n LindoEsA no hace nada y devuelve TRUE;
$er tam#i<n cho3n./ y chmod./;
chmod
>P&P 7A P&P 8 A P&P 4?
chmod 22 5am#ia permisos de un (ichero
Kescripci"n
int chmod > string (ilenameA int mode ?
,rata de cam#iar los permisos del (ichero especi(icado por 96lename a los permisos dados por mo#e;
5uidado /ue mo#e no es asumido de (orma autom*tica como un valor octal; Para asegurar /ue se
hace la operaci-n esperada necesitas anteponer un cero >3? como pre(i'o del par*metro mo#eC
chmod3 "/somedir/some#ile", H55 9; // decimal; probablemente incorrecto
chmod3 "/somedir/some#ile", 2H55 9; // octal; =alor correcto de mode
Devuelve TRUE en caso de <Fito y FALSE en otro caso;
$er tam#i<n cho3n./ y chgrp./;
cho3n
>P&P 7A P&P 8 A P&P 4?
choEn 22 5am#ia el propietario de un (ichero
Kescripci"n
int cho3n > string (ilenameA miFed user ?
,rata de cam#iar el propietario del (ichero (ilename al usuario user; -lo el superusuario puede
cam#iar el propietario de un (ichero;
Devuelve TRUE en caso de <FitoX en otro caso devuelve FALSE;
Nota- +n LindoEsA no hace nada y devuelve TRUE;
$er tam#i<n cho3n./ y chmod./;
clearstatcache
>P&P 7A P&P 8 A P&P 4?
clearstatcache 22 Limpia la cache de estado de un (ichero
Kescripci"n
void clearstatcache > void ?
.nvocar la llamada del sistema stat o lstat es #astante costoso en la mayor)a de los sistemas; Por lo
tantoA el resultado de la Bltima llamada a cual/uiera de las (unciones de estado >listadas a#a'o? es
guardado para usarlo en la pr-Fima llamada de este tipo empleando el mismo nom#re de (ichero; i
deseas (orzar un nuevo che/ueo del estado del (icheroA por e'emplo si el (ichero est* siendo
che/ueado muchas veces y puede cam#iar o desaparecerA usa esta (unci-n para #orrar los resultados
almacenados en memoria de la Bltima llamada;
+ste valor s-lo es cacheado durante el tiempo de vida de una petici-n simple;
+ntre las (unciones a(ectadas se incluyen stat./A lstat./A file>e+ists./A is>3riteable./A is>readable./A
is>e+ecutable./A is>file./A is>dir./A is>linB./A filectime./A fileatime./A filemtime./A fileinode./A
filegroup./A fileo3ner./A filesi6e./A filetype./A y fileperms./;
copy
>P&P 7A P&P 8 A P&P 4?
copy 22 5opia un (ichero
Kescripci"n
int copy > string sourceA string dest ?
&ace una copia de un (ichero; Devuelve TRUE si la copia tiene <FitoA y FALSE en otro caso;
E'emplo !. E'emplo de copy./
i# 3!copy3$#ile, $#ile.M.baIM99 :
print3"#ailed to copy $#ile...<br>Vn"9;
;
$er tam#i<nC rename./;
delete
>no version in(ormationA might #e only in 5$?
delete 22 @na entrada manual inBtil
Kescripci"n
void delete > string (ile ?
+sto es una entrada manual inBtil para satis(acer a esas personas /ue est*n #uscando unlinB./ o
unset./ en el lugar Wocado;
$er tam#i<nC unlinB./ para #orrar (icherosA unset./ para #orrar varia#les;
dirname
>P&P 7A P&P 8 A P&P 4?
dirname 22 Devuelve la parte del path correspondiente al directorio
Kescripci"n
string dirname > string path ?
Dada una cadena >string? conteniendo el path a un (icheroA esta (unci-n devolver* el nom#re del
directorio;
+n LindoEsA tanto la #arra >/? como la #arra inversa >Q? son usadas como separadores de caracteres;
+n otros entornosA de#e usarse la #arra directa >/?;
E'emplo !. E'emplo de dirname./
$path > "/etc/pass8d";
$#ile > dirname3$path9; // $#ile toma el =alor "/etc"
$er tam#i<nC basename./
disB>free>space
>P&P 8 _^ 8;1;3A P&P 4?
dis"Z(reeZspace 22 Devuelve el espacio disponi#le en el directorio
Kescripci"n
(loat disB>free>space > string directorio ?
Dada una cadena /ue contiene un directorioA esta (unci-n devolver* el nBmero de #ytes disponi#les
en el sistema de archivos o partici-n de disco correspondiente;
E'emplo !. E'emplo de disB>free>space./
<?php
// $d# contiene el numero de bytes disponibles en "/"
$d# > disI%#ree%space3"/"9;
// En 7indo8s@
disI%#ree%space3"R@"9;
disI%#ree%space3"L@"9;
?>
Nota- +sta (uncion no (uncionara con (icheros remotos ya /ue el (ichero a eFaminar
tiene /ue estar disponi#le desde el sistema de (icheros del servidor;
$ea tam#i<n disB>total>space./
disB>total>space
>P&P 8 _^ 8;1;3A P&P 4?
dis"ZtotalZspace 22 Devuelve el tamaWo total de un directorio
Kescripci"n
(loat disB>total>space > string directorio ?
Dada una cadena /ue contiene un directorioA esta (unci-n devolver* el nBmero total de #ytes en el
sistema de archivos o partici-n de disco correspondiente;
E'emplo !. E'emplo de disB>total>space./
<?php
// $d# contiene el numero total de bytes disponible en "/"
$d# > disI%total%space3"/"9;
// En 7indo8s@
disI%total%space3"R@"9;
disI%total%space3"L@"9;
?>
Nota- +sta (uncion no (uncionara con (icheros remotos ya /ue el (ichero a eFaminar
tiene /ue estar disponi#le desde el sistema de (icheros del servidor;
$ea tam#i<n disB>free>space./
disBfreespace
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
dis"(reespace 22 Devuelve el espacio disponi#le en un directorio
Kescripci"n
(loat disBfreespace > string directory ?
Dada una cadena >string? conteniendo el nom#re de un directorioA esta (unci-n devolver* el nBmero
de #ytes disponi#les en el disco correspondiente;
E'emplo !. E'emplo de disBfreespace./
$d# > disI#reespace3"/"9; // $d# contiene el numero de bytes
// disponibles en "/"
fclose
>P&P 7A P&P 8 A P&P 4?
(close 22 5ierra el apuntador a un (ichero a#ierto
Kescription
int fclose > int (p ?
e cierra el (ichero apuntado por (p;
Devuelve TRUE en caso de <Fito y FALSE en caso de (allo;
+l apuntador al (ichero de#e ser v*lido y de#e apuntarse a un (ichero a#ierto con <Fito con fopen./ o
con fsocBopen./;
feof
>P&P 7A P&P 8 A P&P 4?
(eo( 22 $eri(ica si el apuntador a un (ichero est* al (inal del (ichero >end2o(2(ile?
Kescripci"n
int feof > int (p ?
Devuelve TRUE si el apuntador del (ichero est* en +OF o si ocurre un errorX en otro caso devuelve
FALSE;
,he (ile pointer must #e validA and must point to a (ile +l apuntador al (ichero de#e ser v*lidoA y
de#e apuntar a un (ichero a#ierto con <Fito por fopen./A popen./A o fsocBopen./;
fflush
>P&P 8 _^ 8;3;1A P&P 4?
((lush 22 $ac)a la salida hacia un archivo
Kescripci"n
#ool fflush > resource gestor ?
+sta (unci-n o#liga a /ue se produzca la escritura de la salida acumulada en #B(er al recurso
apuntado por el gestor de archivo Eestor; Devuelve TRUE si todo se llev- a ca#o correctamenteA
FALSE en caso de (allo;
+l puntero de (ichero de#e de ser valido y de#e de apuntar a un (ichero a#ierto con eFito por fopen./
o fsocBopen./;
fgetc
>P&P 7A P&P 8 A P&P 4?
(getc 22 O#tiene un caracter del (ichero apuntado
Kescripci"n
string fgetc > int (p ?
Devuelve una cadena >string? conteniendo un simple caracter leido del (ichero apuntado por (p;
Devuelve FALSE para +OF >como hace feof./?;
+l apuntador al (ichero de#e ser validoA y de#e apuntar a un (ichero a#ierto con <Fito por fopen./A
popen./A o fsocBopen./;
$er tam#i<n fread./A fopen./A popen./A fsocBopen./A y fgets./;
fgetcs5
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
(getcsv 22 O#tiene una l)nea del (ichero apuntado y eFtrae los campos 5$
Kescripci"n
array fgetcs5 > int (pA int length PA string delimiterQ ?
Parecida a (gets>? eFcepto /ue (getcsv>? parsea la l)nea /ue lee #uscando campos en (ormato 5$ y
devuelve un array conteniendo los campos leidos; +l delimitador de campo es una comaA a menos
/ue se especi(i/ue otro delimitador con el tercer par*metro opcional;
(p de#e ser un apuntador v*lido a un (ichero a#ierto con <Fito por fopen./A popen./A o fsocBopen./
la longitud de#e ser mayor /ue la l)nea m*s larga /ue pueda encontrarse en le (ichero 5$
>permitiendo arrastrar caracteres de (in de l)nea?
(getcsv>? devuelve FALSE en caso de errorA incluyendo el (in de (ichero;
NO,AC @na l)nea en #lanco en un (ichero 5$ se devuelve como un array /ue contiene un Bnico
campo nuloA y esto no ser* tratado como un error;
E'emplo !. E'emplo de fgetcs5./ ( :eer e imprimir el contenido completo de un fichero C,C
<?php
$ro8 > 6;
$#p > #open 3"test.cs=","r"9;
8hile 3$data > #Eetcs= 3$#p, 6222, ","99 :
$num > count 3$data9;
print "<p> $num #ields in line $ro8@ <br />";
$ro8[[;
#or 3$c>2; $c<$num; $c[[9 :
print $data)$c/ . "<br />";
;
;
#close 3$#p9;
?>
fgets
>P&P 7A P&P 8 A P&P 4?
(gets 22 O#tiene una l)nea desde el apuntador de archivo
Kescripci"n
string fgets > resource gestor PA int longitudQ ?
Devuelve una cadena de hasta lonE6tu# 2 1 #ytes le)dos desde el archivo apuntado por Eestor; La
lectura termina cuando se han le)do lonE6tu# 2 1 #ytesA se alcanza un salto de l)nea >el cual se
incluye en el valor devuelto?A o en +OF >lo /ue ocurra primero?; i no se especi(ica una longitudA el
valor predeterminado es de 1"A o 1308 #ytes;
i ocurre un errorA devuelve FALSE;
+rrores comunesC
A/uellos acostum#rados a la sem*ntice de fgets./ en H5HA de#e notar la di(erencia en el modo en /ue
EO3 es devuelto;
+l puntero de (ichero de#e de ser valido y de#e de apuntar a un (ichero a#ierto con eFito por fopen./
o fsocBopen./;
A continuaci-n se presenta un e'emplo simpleC
E'emplo !. :ectura de un archi5o lnea a lnea
<?php
$Eestor > #open3"/tmp/archi=o%entrada.txt", "r"9;
8hile 3!#eo#3$Eestor99 :
$bu#er > #Eets3$Eestor, 12KG9;
echo $bu#er;
;
#close3$Eestor9;
?>
Nota- +l par*metro lonE6tu# se hizo opcional en P&P 8;0;3A si se omiteA se asume 1308
como la longitud de l)nea; A partir de P&P 8;7A al omitir lonE6tu#A la lectura de la
secuencia continuar* hasta /ue se alcance el (inal de la l)nea; i la mayor)a de l)neas en
el archivo superan los MSBA es m*s e(iciente en t<rminos de recursos espici(icar la
longitud m*Fima de l)nea en su script;
Nota- +sta (unci-n es segura con material #inario desde P&P 8;7; Las versiones
anteriores no conta#an con <sta caracter)stica;
Nota- i su(re pro#lemas con +!+ no reconociendo los (inales de l)nea cuando lee
archivos creados en un Macintosh >o leyendo archivos so#re uno?A puede pro#ar
activando la opci-n de con(iguraci-n autoZdetectZlineZendings;
$ea tam#i<n fread./A fgetc./A stream>get>line./A fopen./A popen./A fsocBopen./A y
stream>set>timeout./;
fgetss
>P&P 7A P&P 8 A P&P 4?
(getss 22 O#tiene una l)na desde el apuntador de archivo y elimina las eti/uetas &,ML
Kescripci"n
string fgetss > resource gestor PA int longitud PA string eti/uetasZpermisi#lesQQ ?
.d<ntica a fgets./A eFcepto /ue (getss intenta eliminar cual/uier eti/ueta &,ML y P&P del teFto /ue
lee;
Puede usar el opcional tercer par*metro para especi(icar las eti/uetas /ue no desea remover;
Nota- et6@uetas_perm6s61les se agreg- en P&P 7;3;17A P&P 8;3;3;
+l par*metro lonE6tu# es opcional desde P&P 4;
Nota- i su(re pro#lemas con +!+ no reconociendo los (inales de l)nea cuando lee
archivos creados en un Macintosh >o leyendo archivos so#re uno?A puede pro#ar
activando la opci-n de con(iguraci-n autoZdetectZlineZendings;
$ea tam#i<n fgets./A fopen./A fsocBopen./A popen./A y strip>tags./;
file>e+ists
>P&P 7A P&P 8 A P&P 4?
(ileZeFists 22 $eri(ica si un archivo o directorio eFiste
Kescripci"n
#ool file>e+ists > string nom#reZarchivo ?
Devuelve TRUE si el archivo o directorio especi(icado por nom1re_arch6o eFisteX o FALSE de lo
contrario;
+n EindoEsA use //nombre%computadora/recurso/nombre%archi=o o
VVnombre%computadoraVrecursoVnombre%archi=o para revisar archivos en recursos
compartidos de red;
E'emplo !. Probar si un archi5o e+iste
<?php
$nombre%archi=o > M/ruta/hacia/#oo.txtM;
i# 3#ile%exists3$nombre%archi=o99 :
echo "El archi=o $nombre%archi=o existe";
; else :
echo "El archi=o $nombre%archi=o no existe";
;
?>
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
$ea tam#i<n is>readable./A is>3ritable./A is>file./ y file./;
file>get>contents
>P&P 8 _^ 8;7;3A P&P 4?
(ileZgetZcontents 22 Lee un archivo entero en una cadena
Kescripci"n
string file>get>contents > string nom#reZarchivo PA #ool usarZrutaZinclusion PA resource conteFtoQQ ?
Funci-n id<ntica a file./A con la eFcepci-n de /ue file>get>contents./ devuelve el archivo en una
cadena; +n caso de (alloA file>get>contents./ devolver* FALSE;
file>get>contents./ es el modo pre(erido para leer los contenidos de un archivo en una cadena; +sta
(unci-n usa las t<cnicas de asignaci-n de memoria /ue soporte su O para incrementar su
rendimiento;
E'emplo !. )so de file>get>contents./ con una )MI
i est* a#riendo una @R. con caracteres especialesA como espaciosA necesita codi(icar la @R. con
urlencode./;
<?php
$url > Mhttp@//example.com/con caracteres chistososM;
list3$protocolo, $uri9 > split3M//M, $url9;
$html > #ile%Eet%contents3$protocolo . M//M . urlencode3$uri99;
?>
Nota- +sta (unci-n es segura #inariamente;
,ugerencia- Puede usar una @RL como nom#re de archivo con esta (unci-n si los (open
Erappers han sido activados; 5onsulte fopen./ para m*s detalles so#re c-mo especi(icar
el nom#re de (ichero y Ap<ndice L una lista de protocolos @RL soportados
Nota- oporte de conteFto (ue introducido con P&P;4;3;3;
A5iso
5uando se usa LA Microso(t .. violara el protocoloA cerrando la coneFion sin mandar un
indicador closeZnoti(y; P&P avisara de esto con este mensa'e =LC Fatal Protocol +rror=A cuando
llegue al (inal de los datos; @na solucion a este pro#lema es #a'ar el nivel de aviso de errores del
sistema para /ue no incluya advertencias; P&P 8;7;: y versiones posteriores detectan servidores
.. con este pro#lema y suprime la advertencia; i usais la (uncion fsocBopen./ para crear un
soc"et sslCDDA tendreis /ue suprimir la advertencia eFplicitamente;
$ea tam#i<n fgets./A file./A fread./A include./A y readfile./;
file>put>contents
>P&P 4?
(ileZputZcontents 22 +scri#ir una cadena so#re un archivo
Kescripci"n
int file>put>contents > string nom#reZarchivoA string datos PA int #anderas PA resource conteFtoQQ ?
.d<ntico a llamar fopen./A f3rite./A y fclose./ sucesivamente; La (unci-n devuelve la cantidad de
#ytes /ue (ueron escritos en el archivo;
1an#eras puede reci#ir FILE_USE_INCLUDE_PATH o FILE_APPENDA sin em#argoA la opci-n
FILE_USE_INCLUDE_PATH de#e ser usada con precauci-n;
Nota- +sta (unci-n es segura #inariamente;
,ugerencia- Puede usar una @RL como nom#re de archivo con esta (unci-n si los (open
Erappers han sido activados; 5onsulte fopen./ para m*s detalles so#re c-mo especi(icar
el nom#re de (ichero y Ap<ndice L una lista de protocolos @RL soportados
$ea tam#i<n fopen./A f3rite./A fclose./A y file>get>contents./;
file
>P&P 7A P&P 8 A P&P 4?
(ile 22 Lee un archivo entero hacia una matriz
Kescripci"n
array file > string nom#reZarchivo PA int usarZrutaZinclusion PA resource conteFtoQQ ?
Funci-n id<ntica a readfile./A eFcepto /ue file./ devuelve el archivo en una matriz; 5ada elemento
de la matriz corresponde a una l)nea en el archivoA con el salto de l)nea aun incluido; i ocurre un
(alloA file./ devuelve FALSE;
+s posi#le usar el par*metro opcional usar_ruta_6nclus6onA y de(inirlo como =1=A si desea #uscar por
el archivo en includeZpathA tam#i<n;
<?php
// ?btiene un archi=o en una matri0. En este ejemplo usaremos H**
// para obtener el codiEo #uente H*"O de una +'O.
$lineas > #ile3Mhttp@//888.example.com/M9;
// 'ecorrer nuestra matri0, mostrar el codiEo H*"O como codiEo #uente
// H*"O, y los numeros de linea tambien.
#oreach 3$lineas as $linea%num >> $linea9 :
echo "O&iacute;nea U<b>:$linea%num;</b> @ " . htmlspecialchars3$linea9 . "<br />Vn";
;
// ?tro ejemplo, obtenEames una paEina 8eb como una cadena. (ea
// tambien #ile%Eet%contents39.
$html > implode3MM, #ile3Mhttp@//888.example.com/M99;
?>
,ugerencia- Puede usar una @RL como nom#re de archivo con esta (unci-n si los (open
Erappers han sido activados; 5onsulte fopen./ para m*s detalles so#re c-mo especi(icar
el nom#re de (ichero y Ap<ndice L una lista de protocolos @RL soportados
Nota- 5ada l)nea en la matriz resultante incluye el (inal de l)neaA as) /ue aun necesita
usar rtrim./ si no /uiere conservar el (inal de l)nea;
Nota- i su(re pro#lemas con +!+ no reconociendo los (inales de l)nea cuando lee
archivos creados en un Macintosh >o leyendo archivos so#re uno?A puede pro#ar
activando la opci-n de con(iguraci-n autoZdetectZlineZendings;
Nota- A partir de P&P 8;7;3A puede usar file>get>contents./ para devolver el contenido
de un archivo como una cadena;
+n P&P 8;7;3 file./A se volvi- una (unci-n segura con material #inario;
Nota- oporte de conteFto (ue introducido con P&P;4;3;3;
A5iso
5uando se usa LA Microso(t .. violara el protocoloA cerrando la coneFion sin mandar un
indicador closeZnoti(y; P&P avisara de esto con este mensa'e =LC Fatal Protocol +rror=A cuando
llegue al (inal de los datos; @na solucion a este pro#lema es #a'ar el nivel de aviso de errores del
sistema para /ue no incluya advertencias; P&P 8;7;: y versiones posteriores detectan servidores
.. con este pro#lema y suprime la advertencia; i usais la (uncion fsocBopen./ para crear un
soc"et sslCDDA tendreis /ue suprimir la advertencia eFplicitamente;
$ea tam#i<n readfile./A fopen./A fsocBopen./A popen./A file>get>contents./A y include./;
fileatime
>P&P 7A P&P 8 A P&P 4?
(ileatime 22 O#tiene la hora del Bltimo acceso al archivo
Kescripci"n
int fileatime > string nom#reZarchivo ?
Devuelve la hora en /ue se accedi- al archivo por Bltima vezA o FALSE en caso de un error; La hora
es devuelta como una marca de tiempo @niF;
NotaC +l valor atime de un archivo de#e cam#iar cada vez /ue los #lo/ues de datos de <ste sean
le)dos; +sto puede resultar costoso en t<rminos de rendimiento cuando una aplicaci-n accede
regularmente a un nBmero muy grande de archivos o directorios; Algunos sistemas de archivos @niF
pueden ser montados desha#ilitando los actualizaciones atime para incrementar el rendimiento de
tales aplicaciones; Las colas de noticias @+N+, son un e'emplo comBn; +n tales sistemas de
archivos esta (unci-n resultar* inBtil;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
E'emplo !. E'emplo de fileatime./
<?php
// imprime p.ej. se accedio a un%archi=o.txt en@ Lecember CK C22C CC@6G@C<.
$nombre%archi=o > Mun%archi=o.txtM;
i# 3#ile%exists3$nombre%archi=o99 :
echo "se accedio a $nombre%archi=o en@ " . date3"S d P H@i@s.", #ileatime3$nombre%archi=o99;
;
?>
$ea tam#i<n filemtime./A fileinode./A y date./;
filectime
>P&P 7A P&P 8 A P&P 4?
(ilectime 22 O#tiene la hora de modi(icaci-n del inode del archivo
Kescripci"n
int filectime > string nom#reZarchivo ?
Devuelve la hora en /ue el archivo (ue cam#iado por Bltima vezA o FALSE en caso de (allo; La hora
es devuelta como una marca de tiempo @niF;
NotaC +n la mayor)a de sistemas de archivos en @niFA un archivo se considera cam#iado cuando los
datos del inode cam#ianX es decirA cuando la in(ormaci-n de permisosA el dueWoA grupo u otros meta2
datos son actualizados; $ea tam#i<n filemtime./ >/ue es lo /ue pro#a#lemente /uiera usar cuando
desea crear pies de p*gina tipo =Modi(icado por Bltima vez= en p*ginas Ee#? y fileatime./;
Note tam#i<n /ue en algunos teFtos so#re @niFA el valor ctime de un archivo se detalla como la hora
de creaci-n del archivo; +sto es (also; No eFiste una hora de creaci-n para archivos @niF en la
mayor)a de sistemas de archivos usados en @niF;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
E'emplo !. E'emplo de fileatime./
<?php
// imprime p.ej. un%archi=o.txt #ue modi#icado en@ Lecember CK C22C CC@6G@C<.
$nombre%archi=o > Mun%archi=o.txtM;
i# 3#ile%exists3$nombre%archi=o99 :
echo "$nombre%archi=o #ue modi#icado en@ " . date3"S d P H@i@s.", #ilectime3$nombre%archi=o99;
;
?>
$ea tam#i<n filemtime./
filegroup
>P&P 7A P&P 8 A P&P 4?
(ilegroup 22 O#tiene el grupo del archivo
Kescripci"n
int filegroup > string nom#reZarchivo ?
Devuelve el .D de grupo del archivoA o FALSE en caso de (allo; +l .D de grupo es devuelto en
(ormato num<ricoA use posi+>getgrgid./ para convertirlo en un nom#re de grupo; +n caso de (alloA
se devuelve FALSE y se genera un error de nivel E_"ARNIN#;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
$ea tam#i<n fileo3ner./A y sa(eZmodeZgid;
fileinode
>P&P 7A P&P 8 A P&P 4?
(ileinode 22 O#tiene el inode del archivo
Kescripci"n
int fileinode > string nom#reZarchivo ?
Devuelve el nBmero inode del archivoA o FALSE en caso de un error;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
$ea tam#i<n stat./
filemtime
>P&P 7A P&P 8 A P&P 4?
(ilemtime 22 O#tiene la hora de modi(icaci-n del archivo
Kescripci"n
int filemtime > string nom#reZarchivo ?
Devuelve la hora en /ue el archivo (ue modi(icado por Bltima vezA o FALSE en caso de (allo; La
hora es devuelta como una marca de tiempo @niFA la cual es apropiada para la (unci-n date./;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
+sta (unci-n devuelve la hora en /ue los #lo/ues de datos de un archivo reci#ieron una escrituraA es
decirA la hora en /ue el contenido del archivo cam#i-;
E'emplo !. E'emplo de filemtime./
<?php
// imprime, p.ej. un%archi=o.txt #ue modi#icado@ Lecember CK C22C CC@6G@C<.
$nombre%archi=o > Mun%archi=o.txtM;
i# 3#ile%exists3$nombre%archi=o99 :
echo "$nombre%archi=o #ue modi#icado@ " . date 3"S d P H@i@s.", #ilemtime3$nombre%archi=o99;
;
?>
$ea tam#i<n filectime./A stat./A touch./A y getlastmod./;
fileo3ner
>P&P 7A P&P 8 A P&P 4?
(ileoEner 22 O#tiene el dueWo del archivo
Kescripci"n
int fileo3ner > string nom#reZarchivo ?
Devuelve el .D de usuario del dueWo del archivoA o FALSE en caso de (allo; +l .D de usuario es
devuelto en (ormato num<ricoA uso posi+>getp3uid./ para convertirlo en un nom#re de usuario;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
$ea tam#i<n stat./
fileperms
>P&P 7A P&P 8 A P&P 4?
(ileperms 22 O#tiene los permisos del archivo
Kescripci"n
int fileperms > string nom#reZarchivo ?
Devuelve los permisos del archivoA o FALSE en caso de (allo;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
E'emplo !. Kesplegar los permisos como un 5alor octal
<?php
echo substr3sprint#3M\oM, #ileperms3M/tmpM99, F19;
echo substr3sprint#3M\oM, #ileperms3M/etc/pass8dM99, F19;
?>
+sto producir)a la salidaC
6HHH
2G11
E'emplo *. Mostrar los permisos completos
<?php
$perms > #ileperms3M/etc/pass8dM9;
i# 33$perms & 2xR2229 >> 2xR2229 :
// &ocIet
$in#o > MsM;
; elsei# 33$perms & 2x,2229 >> 2x,2229 :
// Enlace &imbolico
$in#o > MlM;
; elsei# 33$perms & 2xJ2229 >> 2xJ2229 :
// 'eEular
$in#o > MFM;
; elsei# 33$perms & 2xG2229 >> 2xG2229 :
// ZloQue especial
$in#o > MbM;
; elsei# 33$perms & 2x12229 >> 2x12229 :
// Lirectorio
$in#o > MdM;
; elsei# 33$perms & 2xC2229 >> 2xC2229 :
// Raracter especial
$in#o > McM;
; elsei# 33$perms & 2x62229 >> 2x62229 :
// ipe S4S?
$in#o > MpM;
; else :
// Lesconocido
$in#o > MuM;
;
// Luenyo
$in#o .> 33$perms & 2x26229 ? MrM @ MFM9;
$in#o .> 33$perms & 2x22J29 ? M8M @ MFM9;
$in#o .> 33$perms & 2x22129 ?
33$perms & 2x2J229 ? MsM @ MxM 9 @
33$perms & 2x2J229 ? M&M @ MFM99;
// -roup
$in#o .> 33$perms & 2x22C29 ? MrM @ MFM9;
$in#o .> 33$perms & 2x22629 ? M8M @ MFM9;
$in#o .> 33$perms & 2x222J9 ?
33$perms & 2x21229 ? MsM @ MxM 9 @
33$perms & 2x21229 ? M&M @ MFM99;
// 7orld
$in#o .> 33$perms & 2x22219 ? MrM @ MFM9;
$in#o .> 33$perms & 2x222C9 ? M8M @ MFM9;
$in#o .> 33$perms & 2x22269 ?
33$perms & 2x2C229 ? MtM @ MxM 9 @
33$perms & 2x2C229 ? M*M @ MFM99;
echo $in#o;
?>
+sto producir)a la salidaC
FrFFrFFrFF
$ea tam#i<n is>readable./A y stat./
filesi6e
>P&P 7A P&P 8 A P&P 4?
(ilesize 22 O#tiene el tamaWo del archivo
Kescripci"n
int filesi6e > string nom#reZarchivo ?
Devuelve el tamaWo del archivo en #ytesA o FALSE en caso de (allo;
Nota- Dado /ue el tipo entero de P&P tiene signo y muchas plata(ormas usan enteros de
70 #itsA filesi6e./ puede devolver resultados inesperados para archivos con un tamaWo
mayor de 0GB; Para archivos entre 0GB y 8GB de tamaWoA esto puede resolverse por lo
general usando spr6nt9L*Tu*C 96les6DeL'arch6oMM;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
E'emplo !. E'emplo de filesi6e./
<?php
// imprime, p.ej. un%archi=o.txt@ 62C1 bytes
$nombre%archi=o > Mun%archi=o.txtM;
echo $nombre%archi=o . M@ M . #ilesi0e3$nombre%archi=o9 . M bytesM;
?>
$ea tam#i<n file>e+ists./
filetype
>P&P 7A P&P 8 A P&P 4?
(iletype 22 O#tiene el tipo de archivo
Kescripci"n
string filetype > string nom#reZarchivo ?
Devuelve el tipo del archivo; Los posi#les valores son (i(oA charA dirA #loc"A lin"A (ileA y un"noEn;
Devuelve FALSE si ocurre un error; filetype./ producir* siempre un mensa'e E_NOTICE si el
llamado a stat (alla o el tipo de archivo es desconocido;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
E'emplo !. E'emplo de filetype./
<?php
echo #iletype3M/etc/pass8dM9; // #ile
echo #iletype3M/etc/M9; // dir
?>
$ea tam#i<n is>dir./A is>file./A is>linB./A file>e+ists./A stat./A y mime>content>type./;
flocB
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
(loc" 22 Aviso de #lo/ueo de archivos porta#le
Kescripci"n
#ool flocB > resource gestorA int operacion PA int i#lo/ueariaQ ?
P&P soporta una manera porta#le de #lo/uear archivos enteros de por medio de avisos >lo /ue
/uiere decir /ue todos los programas /ue acceden al archivo de#en usar el mismo mecanismo de
#lo/ueoA o no (uncionar*?;
Nota- flocB./ es o#ligatorio #a'o LindoEs;
flocB./ opera so#re EestorA /ue de#e ser un apuntador a un archivo a#ierto; operac6on es uno de los
siguientes valoresC
Para ad/uirir un #lo/ueo compartido >de lectura?A de(ina operac6on a LOC&_SH >o use 1
antes de P&P 8;3;1?;
Para ad/uirir un #lo/ueo eFclusizo >de escritura?A de(ina operac6on a LOC&_E% >o use 0
antes de P&P 8;3;1?;
Para li#erar un #lo/ueo >compartido o eFclusivo?A de(ina operac6on a LOC&_UN >o use 7
antes de P&P 8;3;1?;
i no desea /ue flocB./ #lo/uee mientras operaA agregue LOC&_N( >8 antes de P&P 8;3;1? a
operac6on;
flocB./ le permite e'ecutar un modelo de lecturaDescritura simple /ue puede ser usado en
pr*cticamente cual/uier plata(orma >incluyendo la mayor)a de derivaciones de @niF e incluso
LindoEs?; +l tercer argumento opcional reci#e el valor TRUE si el aviso producir)a un #lo/ueo >la
condici-n +LO@LDBLO5S?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo de flocB./
<?php
$aa > #open3"/tmp/bloQueo.txt", "8["9;
i# 3#locI3$aa, O?R]%EX99 : // reali0ar un bloQueo exclusi=o
#8rite3$aa, "Escribir alEo aQuiVn"9;
#locI3$aa, O?R]%+.9; // liberar el a=iso
; else :
echo "&iexcl;.o se pudo bloQuear el archi=o!";
;
#close3$aa9;
?>
Nota- Dado /ue flocB./ re/uiere un apuntador de archivoA puede /ue necesite usar un
archivo especial de #lo/ueo para proteger el acceso a un archivo /ue pretende truncar
a#ri<ndolo en modo de escritura >con un argumento =E= o =ER= a fopen./?;
A5iso
flocB./ no tra#a'ar* so#re NF y muchos otros sistemas de archivos en red; Revise la
documentaci-n de su sistema operativo para m*s detalles;
+n algunos sistemas operativos flocB./ se implementa al nivel de proceso; 5uando usa una AP. de
servidor multi2hilos como .AP.A fes posi#le /ue no pueda depender en flocB./ para proteger
archivos contra otros scripts P&P corriendo en hilos paralelos en la misma instancia de servidora
flocB./ no es soportado en sistemas de archivos anticuados como 3,T y sus derivadosA y por lo
tanto siempre devolver* FALSE #a'o tales entornos >esto es especialmente cierto para usuarios de
LindoEs 9M?;
fnmatch
>P&P 8 _^ 8;7;3A P&P 4?
(nmatch 22 5omparar un nom#re de archivo contra un patr-n
Kescripci"n
#ool fnmatch > string patronA string cadena PA int #anderasQ ?
fnmatch./ veri(ica si la ca#ena pasada coincide con el comod)n de int<rprete de comandos dadoA
patron;
+sto es especialmente Btil para nom#res de archivosA pero tam#i<n puede ser usado so#re cadenas
comunes; +l usuario promedio puede encontrarse (amiliarizado con patrones de int<rprete de
comandosA oA por lo menos en su (orma m*s simpleA con los comodines <%< y </<A as) /ue el uso de
fnmatch./ en lugar de ereg./ o preg>match./ para el procesamiento de eFpresiones de #Bs/ueda
puede ser mucho m*s conveniente para usuarios no2programadores;
E'emplo !. Cerificar un nombre de color contra un patr"n de comodines de int%rprete de
comandos.
<?php
i# 3#nmatch3"WEr)ae/y", $color99 :
echo "alEuna #orma de Eris 3Eray9 ...";
;
?>
A5iso
Por ahoraA esta (unci-n no se encuentra disponi#le en LindoEs ni otros sistemas no2compati#les
con PO.J;
$ea tam#i<n glob./A ereg./A preg>match./ y la p*gina man @niF so#re 9nmatchLRM para consultar
los nom#res de #anderas >mientras no est<n documentados a/u)?;
fopen
>P&P 7A P&P 8 A P&P 4?
(open 22 A#re un archivo o @RL
Kescripci"n
resource fopen > string nom#reZarchivoA string modo PA #ool usarZrutaZinclusion PA resource
conteFtoZzQQ ?
fopen./ asocia un recurso con nom#reA especi(icado por nom1re_arch6oA a una secuencia; i
nom1re_arch6o es de la (orma =es/uemaCDD;;;=A se asume /ue es una @RL y P&P #uscar* por un
gestor de protocolo >tam#i<n conocido como envoltura? para tal es/uema; i no hay envolturas
registradas para ese protocoloA P&P emitir* una noticia para ayudarle a rastrear pro#lemas
potenciales en su scriptA y luego continBa como si nom1re_arch6o indicara un archivo corriente;
i P&P decide /ue nom1re_arch6o hace re(erencia a un archivo localA entonces intentar* a#rir una
secuencia so#re ese archivo; +l archivo de#e ser ase/ui#le para P&PA as) /ue de#e asegurarse de /ue
los permisos de acceso del archivo sean los apropiados; i tiene ha#ilitado sa(e modeA o
openZ#asedirA pueden aplicarse mayores restricciones;
i P&P decide /ue nom1re_arch6o hace re(erencia a un protocolo registradoA y ese protocolo est*
registrado como una @RL de redA P&P veri(icar* /ue alloEZurlZ(open se encuentre ha#ilitado; i no
es as)A P&P emitir* una advertencia y la llamada a (open (allar*;
Nota- La lista de protocolos soportados puede encontrarse en Ap<ndice L; Algunos
protocolos >tam#i<n conocidos como enolturas? soportan un conte8to u opciones
php.ini; Re(i<rase a la p*gina espec)(ica del protocolo en uso para una lista de
opciones /ue pueden de(inirse; >Por e'emploA el valor php.ini user_aEent usado por
la envoltura http? Para una descripci-n de los conte8tos y el par*metro conte8to_DA
consulte Re(erencia 5JJA 3unc6ones #e Secuenc6as ;
Nota- oporte de conteFto (ue introducido con P&P;4;3;3;
+l par*metro mo#o especi(ica el tipo de acceso /ue re/uiere para la secuencia; Puede ser cual/uiera
de los siguientes valoresC
Tabla !. )na lista de modos posibles para fopen./ usando &odo
&od
o
Kescripci"n
<r< Apertura para s-lo lecturaX u#ica el apuntador de archivo al comienzo del mismo;
<rY< Apertura para lectura y escrituraX u#ica el apuntador de archivo al comienzo del mismo;
<7<
Apertura para s-lo escrituraX u#ica el apuntador de archivo al comienzo de <ste y lo trunca
a una longitud de cero; i el archivo no eFisteA intenta crearlo;
<7Y<
Apertura para lectura y escrituraX u#ica el apuntador de archivo al comienzo de <ste y lo
trunca a una longitud cero; i el archivo no eFisteA intenta crearlo;
<a<
Apertura para s-lo escrituraX u#ica el apuntador de archivo al (inal del mismo; i el archivo
no eFisteA intenta crearlo;
<aY<
Apertura para lectura y escrituraX u#ica el apuntador de archivo al (inal del mismo; i el
archivo no eFisteA intenta crearlo;
<8<
5reaci-n y apertura para s-lo escrituraX u#ica el apuntador de archivo al comienzo de <ste;
i el archivo ya eFisteA la llamada a fopen./ (allar* devolviendo FALSE y generando un
error de nivel E_"ARNIN#; i el archivo no eFisteA intenta crearlo; +sto es Walente a
especi(icar las #anderas O_EFC4VO_CRE,T en la llamada de sistema openL2M interna; +sta
opci-n es soportada en P&P 8;7;0 y versiones posterioresA y s-lo (unciona con archivos
locales;
<8Y<
5reaci-n y apertura para lectura y escrituraX u#ica el apuntador de archivo al comienzo de
<ste; i el archivo ya eFisteA la llamada a fopen./ (allar* devolviendo FALSE y generando
un error de nivel E_"ARNIN#; i el archivo no eFisteA intenta crearlo; +sto es Walente a
especi(icar las #anderas O_EFC4VO_CRE,T en la llamada de sistema openL2M interna; +sta
opci-n es soportada en P&P 8;7;0 y versiones posterioresA y s-lo (unciona con archivos
locales;
Nota- Di(erentes (amilias de sistemas operativos tienen di(erentes convenciones so#re el
(inal2de2l)nea; 5uando escri#e a un archivo de teFto y desea insertar un salto de l)neaA
necesita usar los caracteres correctos de (inal2de2l)nea para su sistema operativo; Los
sistemas #asados en @niF usan Qn como el caracter de (inal de l)neaA los sistemas
#asados en LindoEs usan QrQn como los caracteres de (inal de l)neaA y los sistemas
#asados en Macintosh usan Qr como el caracter de (inal de l)nea;
i usa los caracteres de (inal de l)nea Wocados cuando crea sus archivosA puede /ue
encuentre /ue otras aplicaciones /ue a#ren esos archivos lucir*n =eFtraWo=;
LindoEs o(rece una #andera de traducci-n de modo2teFto ><t<? la cual traducir*
transparentemente Qn a QrQn cuando tra#a'e con el archivo; +n contrasteA tam#i<n puede
usar <1< para (orzar el modo #inarioA el cual no traduce sus datos; Para usar <stas
#anderasA indi/ue <1< o <t< como el Bltimo caracter del par*metro mo#o;
+l modo de traducci-n predeterminado depende de la AP. y la versi-n de P&P /ue usaA
as) /ue es recomenda#le especi(icar siempre la #andera apropiada por razones de
porta#ilidad; De#er)a usar el modo <t< si tra#a'a con archivos de teFto2plano y usa Qn para
delimitar los (inales de l)nea en su scriptA pero espera /ue sus archivos sean legi#les en
aplicaciones como el #loc de notas; De#er)a usar el modo <1< en todos los dem*s casos;
i no especi(ica la #andera H#H cuando tra#a'a con archivos #inariosA puede eFperimentar
pro#lemas con sus datosA incluyendo archivos de im*gen corruptos y pro#lemas
eFtraWos con los caracteres QrQn;
+or raDones #e porta16l6#a#C es 1astante recomen#a1le @ue s6empre usa la 1an#era <1<
cuan#o a1re arch6os con fopen'(.
De nueoC por raDones #e porta16l6#a#C es as6m6smo mu? recomen#a1le @ue re=escr61a
el c`#6Eo @ue use o #epen#a #el mo#o <t< para @ue use los 96nales #e l\nea correctos ? el
mo#o <1< en su luEar.
, part6r #e +!+ ;.R.2C el mo#o pre#eterm6na#o es #e96n6r 16nar6o para to#as las
plata9ormas @ue #6st6nEuen entre mo#os 16nar6o ? #e te8to. S6 t6ene pro1lemas con sus
scr6pts #espucs #e actual6DarseC 6ntente usar la 1an#era <t< como una soluc6`n temporal
hasta @ue ha?a hecho su scr6pt m[s porta1le como se menc6ona m[s arr61a.
+l tercer par*metroA opcionalA usar_ruta_6nclus6on puede de(inirse como H1H o TRUE si desea #uscar
por el archivo en includeZpathA tam#i<n;
i la apertura (allaA la (unci-n devuelve FALSE y se genera un error de nivel E_"ARNIN#; +s
posi#le usar G para suprimir tal advertencia;
E'emplo !. E'emplos de fopen./
<?php
$Eestor > #open3"/home/rasmus/archi=o.txt", "r"9;
$Eestor > #open3"/home/rasmus/archi=o.Ei#", "8b"9;
$Eestor > #open3"http@//888.example.com/", "r"9;
$Eestor > #open3"#tp@//usuario@contrasenya^example.com/un%archi=o.txt", "8"9;
?>
i eFperimenta pro#lemas con la lectura y escritura so#re archivosA y est* usando la versi-n tipo
m-dulo de servidor de P&PA recuerde asegurarse de /ue los archivos y directorios /ue est* usando
sean ase/ui#les para el proceso del servidor;
+n la plata(orma LindoEsA tenga cuidado de escapar cual/uier #arra invertida usada en la ruta al
arcivoA o use #arras hace adelante;
<?php
$Eestor > #open3"c@VVdatosVVin#o.txt", "r"9;
?>
A5iso
5uando se usa LA Microso(t .. violara el protocoloA cerrando la coneFion sin mandar un
indicador closeZnoti(y; P&P avisara de esto con este mensa'e =LC Fatal Protocol +rror=A cuando
llegue al (inal de los datos; @na solucion a este pro#lema es #a'ar el nivel de aviso de errores del
sistema para /ue no incluya advertencias; P&P 8;7;: y versiones posteriores detectan servidores
.. con este pro#lema y suprime la advertencia; i usais la (uncion fsocBopen./ para crear un
soc"et sslCDDA tendreis /ue suprimir la advertencia eFplicitamente;
Nota- 5uando sa(e2mode >modo2seguro? est* activadoA P&P comprue#a si los
directorios /ue va a utilizar tienen la misma @.D /ue el script /ue est* siendo e'ecutado;
$ea tam#i<n Ap<ndice LA fclose./A fgets./A fread./A f3rite./A fsocBopen./A file./A file>e+ists./A
is>readable./A stream>set>timeout./A y popen./;
fpassthru
>P&P 7A P&P 8 A P&P 4?
(passthru 22 .mprime todos los datos restantes en un apuntador de archivo
Kescripci"n
int fpassthru > resource gestor ?
Lee hasta +OF en el apuntador de archivo dado a partir de la posici-n actual y escri#e los resultados
en el #B(er de salida;
i ocurre un errorA fpassthru./ devuelve FALSE; De lo contrarioA fpassthru./ devuelve el nBmero
de caracteres le)dos desde Eestor y pasados a la salida;
+l puntero de (ichero de#e de ser valido y de#e de apuntar a un (ichero a#ierto con eFito por fopen./
o fsocBopen./;
Puede /ue necesite llamar re3ind./ para resta#lecer el apuntador de archivo al comienzo de <ste si
ya ha escrito datos en el archivo; +l archivo es cerrado cuando fpassthru./ ha terminado de leerlo
>causando /ue Eestor se vuelva inBtil?;
i tan s-lo /uiere volcar el contenido de un archivo al #B(er de salidaA sin modi(icarlo o #uscar un
desplazamiento en particularA puede /ue /uiera usar la (unci-n readfile./A la cual le ahorra la
llamada a fopen./;
Nota- 5uando se usa fpassthru./ so#re un archivo #inario en sistemas LindoEsA de#e
asegurarse de a#rir el archivo en modo #inarioA agregando el valor 1 al modo usado en la
llamada a fopen./;
+s recomenda#le usar la #andera 1 cuando trate con archivos #inariosA incluso si su
sistema no lo re/uiereA de modo /ue sus scripts sean m*s porta#les;
E'emplo !. )so de fpassthru./ con archi5os binarios
<?php
// abrir el archi=o en modo binario
$nombre > ".VpublicVde=VimEVoI.pnE";
$aa > #open3$nombre, MrbM9;
// en=iar las cabeceras correctas
header3"RontentF*ype@ imaEe/pnE"9;
header3"RontentFOenEth@ " . #ilesi0e3$nombre99;
// =olcar la imaEen y detener el script
#passthru3$aa9;
exit;
?>
$ea tam#i<n readfile./A fopen./A popen./A y fsocBopen./
fputcs5
>no version in(ormationA might #e only in 5$?
(putcsv 22 Format line as 5$ and Erite to (ile pointer
Kescription
int fputcs5 > resource handle PA array (ields PA string delimiter PA string enclosureQQQ ?
fputcs5./ (ormats a line >passed as a 96el#s array? as 5$ and Erite it to the speci(ied (ile han#le;
Returns the length o( the Eritten stringA or FALSE on (ailure;
,he optional #el6m6ter parameter sets the (ield delimiter >one character only?; De(aults as a commaC
C;
,he optional enclosure parameter sets the (ield enclosure >one character only? and de(aults to a
dou#le /uotation mar"C *;
E'emplo !. fputcs5./ e+ample
<?php
$list > array 3
Maaa,bbb,ccc,ddddM,
M6C<,15G,HJKM,
M"aaa","bbb"M
9;
$#p > #open3M#ile.cs=M, M8M9;
#oreach 3$list as $line9 :
#putcs=3$#p, split3M,M, $line99;
;
#close3$#p9;
?>
Nota- i su(re pro#lemas con +!+ no reconociendo los (inales de l)nea cuando lee
archivos creados en un Macintosh >o leyendo archivos so#re uno?A puede pro#ar
activando la opci-n de con(iguraci-n autoZdetectZlineZendings;
ee also fgetcs5./;
fputs
(puts 22 Alias de f3rite./
Kescripci"n
+sta (unci-n es un alias de f3rite./;
fread
>P&P 7A P&P 8 A P&P 4?
(read 22 Lectura de archivos segura con material #inario
Kescripci"n
string fread > resource gestorA int longitud ?
fread./ lee hasta lonE6tu# #ytes desde el apuntador de archivo indicado por Eestor; La lectura se
detiene cuando se han le)do lonE6tu# #ytesA se alcanza +OF >el (inal de archivo?A o >en el caso de
secuencias de red? cuando un pa/uete se encuentra disponi#leA a/uello /ue ocurra primero;
<?php
// obtiene el contenido de un archi=o en una cadena
$nombre%archi=o > "/usr/local/alEo.txt";
$Eestor > #open3$nombre%archi=o, "r"9;
$contenido > #read3$Eestor, #ilesi0e3$nombre%archi=o99;
#close3$Eestor9;
?>
A5iso
+n sistemas /ue di(erencian entre archivos #inarios y de teFto >es decirA LindoEs? el archivo de#e
ser a#ierto con el valor H#H incluido en el par*metro de modo de fopen./;
<?php
$nombre%archi=o > "c@VVarchi=osVVuna%imaEen.Ei#";
$Eestor > #open3$nombre%archi=o, "rb"9;
$contenido > #read3$Eestor, #ilesi0e3$nombre%archi=o99;
#close3$Eestor9;
?>
A5iso
5uando se lee desde secuencias de red o pipesA como es el caso cuando se leen archivos remotos o
desde popen./ y fsocBopen./A la lectura se detendr* despu<s de /ue un pa/uete est< disponi#le;
+sto /uiere decir /ue de#e recolectar los datos en segmentosA como se muestra en el e'emplo a
continuaci-n;
<?php
$Eestor > #open3"http@//888.example.com/", "rb"9;
$contenido > MM;
8hile 3!#eo#3$Eestor99 :
$contenido .> #read3$Eestor, J6KC9;
;
#close3$Eestor9;
?>
Nota- i tan solo desea o#tener el contenido de un archivo en una cadenaA use
file>get>contents./A ya /ue tiene un rendimiento mucho mayor /ue el c-digo anterior;
$ea tam#i<n f3rite./A fopen./A fsocBopen./A popen./A fgets./A fgetss./A fscanf./A file./A y fpassthru
./;
fscanf
>P&P 8 _^ 8;3;1A P&P 4?
(scan( 22 Procesa la entrada desde un archivo de acuerdo a un (ormato
Kescripci"n
miFed fscanf > resource gestorA string (ormato PA miFed i;;;Q ?
La (unci-n fscanf./ es similar a sscanf./A pero toma su entrada desde un archivo asociado con
Eestor e interpreta la entrada de acuerdo al 9ormato especi(icadoA el cual es descrito en la
documentaci-n de sprintf./; i s-lo se pasan dos par*metros a esta (unci-nA los valores procesados
ser*n devueltos como una matriz; De otro modoA si se pasan par*metros opcionalesA la (unci-n
devolver* el nBmero de valores asignados; Los par*metros opcionales de#en ser pasados por
re(erencia;
5ual/uier espacio en #lanco en la cadena de (ormato crea una correspondencia con cual/uier
espacio en #lanco en la secuencia de entrada; +sto /uiere decir /ue incluso una ta#ulaci-n Qt en la
cadena de (ormato puede coincidir con un caracter de espacio sencillo en la secuencia de entrada;
E'emplo !. E'emplo de fscanf./
<?php
$Eestor > #open3"usuarios.txt","r"9;
8hile 3$in#o%usuario > #scan#3$Eestor, "\sVt\sVt\sVn"99 :
list 3$nombre, $pro#esion, $cod%pais9 > $in#o%usuario;
//... hacer alEo con los =alores
;
#close3$Eestor9;
?>
E'emplo *. Contenido de usuarios.t+t
ja=ier arEonauta pe
hiroshi escultor jp
robert desempleado us
luiEi #lorista it
Nota- Antes de P&P 8;7;3A el m*Fimo nBmero de caracteres le)dos desde el archivo era
410 >o hasta el primer hnA lo /ue primero ocurriera?; A partir de P&P 8;7;3 se leer*n y
analizar*n l)neas de longitudes ar#itrariamente grandes;
$ea tam#i<n fread./A fgets./A fgetss./A sscanf./A printf./A y sprintf./;
fseeB
>P&P 7A P&P 8 A P&P 4?
(see" 22 Realiza una #Bs/ueda so#re un apuntador de archivo
Kescripci"n
int fseeB > resource gestorA int desplazamiento PA int desdeQ ?
+sta#lece el indicador de posici-n para el archivo re(erenciado por Eestor; La nueva posici-nA
medida en #ytes desde el comienzo del archivoA so o#tiene al sumar #esplaDam6ento con la posici-n
especi(icada por #es#eA cuyos valores se de(inen como se indica a continuaci-nC
SEE&_SET 2 De(ine la posici-n igual a #esplaDam6ento #ytes;
SEE&_CUR 2 De(ine la posici-n como la posici-n actual m*s #esplaDam6ento;
SEE&_END 2 De(ine la posici-n como el (inal2de2archivo m*s #esplaDam6ento; >Para moverse a
una posici-n anterior al (inal2de2archivoA es necesario pasar un valor negativo en #esplaDam6ento;?
i no se especi(ica #es#eA se asume /ue sea SEE&_SET;
De tener <FitoA la (unci-n devuelve 3X de lo contrario devuelve 21; Note /ue realizar una reu#icaci-n
m*s all* del (inal de archivo no se considera un error;
E'emplo !. E'emplo de fseeB./
<?php
$da > #open3MalEun%archi=o.txtM9;
// leer datos
$datos > #Eets3$da, 12KG9;
// mo=erse de =uelta al comien0o del archi=o
// iEual Que re8ind3$da9;
#seeI3$da, 29;
?>
Puede /ue no sea posi#le usar la (unci-n so#re apuntadores de archivo devueltos por fopen./ si usan
los (ormatos =httpCDD= o =(tpCDD=; fseeB./ produce tam#i<n resultados inde(inidos para secuencias de
adici-n >a#iertas con la #andera =a=?;
Nota- +l argumento #es#e (ue agregado despu<s de P&P 8;3;3;
$ea tam#i<n ftell./ y re3ind./;
fstat
>P&P 8 A P&P 4?
(stat 22 O#tiene in(ormaci-n so#re un archivo usando un apuntador de archivo a#ierto
Kescripci"n
array fstat > resource gestor ?
ReBne las estad)sticas del archivo a#ierto por el apuntador a archivo Eestor; +sta (unci-n es similar
a la (unci-n stat./A eFcepto /ue opera so#re un apuntador de archivo a#ierto en lugar de un nom#re
de archivo;
Devuelve una matriz con las estad)sticas del archivoX el (ormato de la matriz es descrito en la p*gina
del manual so#re stat./;
E'emplo !. E'emplo de fstat./
<?php
// abrir un archi=o
$da > #open3"/etc/pass8d", "r"9;
// reunir estadisticas
$#stat > #stat3$da9;
// cerrar el archi=o
#close3$da9;
// imprimir solo la parte asociati=a
print%r3array%slice3$#stat, 6<99;
?>
esto producir* C
,rray
3
)de=/ >> HH6
)ino/ >> 1JJH21
)mode/ >> <<6JJ
)nlinI/ >> 6
)uid/ >> 2
)Eid/ >> 2
)rde=/ >> 2
)si0e/ >> 6661
)atime/ >> 62G62GH6J6
)mtime/ >> 625G6<G5CG
)ctime/ >> 625G6<G5CG
)blIsi0e/ >> 12KG
)blocIs/ >> J
9
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
Nota- +sta (uncion no (uncionara con (icheros remotos ya /ue el (ichero a eFaminar
tiene /ue estar disponi#le desde el sistema de (icheros del servidor;
ftell
>P&P 7A P&P 8 A P&P 4?
(tell 22 .ndica la posici-n de lecturaDescritura del apuntador de archivo
Kescripci"n
int ftell > resource gestor ?
Devuelve la posici-n del apuntador de archivo indicado por EestorX es decirA su desplazamiento al
interior de la secuencia de archivo;
i ocurre un errorA devuelve FALSE;
+l apuntador de archivo de#e ser v*lidoA y de#e apuntar a un archivo a#ierto satis(actoriamente por
fopen./ o popen./; ftell./ entrega resultados inde(inidos para secuencias de adici-n >a#iertas con la
#andera =a=?;
E'emplo !. E'emplo de ftell./
<?php
// abre un archi=o y lee alEunos datos
$da > #open3"/etc/pass8d", "r"9;
$datos > #Eets3$da, 6C9;
// en donde estamos ?
echo #tell3$da9; // 66
#close3$da9;
?>
$ea tam#i<n fopen./A popen./A fseeB./A and re3ind./;
ftruncate
>P&P 8 A P&P 4?
(truncate 22 ,runca un archivo a la longitud dada
Kescripci"n
#ool ftruncate > resource gestorA int tamanyo ?
,oma el apuntador de archivoA EestorA y trunca el archivo a la longitud taman?o; Devuelve TRUE si
todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- +n versiones anteriores a P&P 8;7;7A ftruncate./ devuelve un valor integer de 1
cuando tiene <FitoA en lugar del valor boolean TRUE;
$ea tam#i<n fopen./ y fseeB./;
f3rite
>P&P 7A P&P 8 A P&P 4?
(Erite 22 +scritura so#re archivosA segura con material #inario
Kescripci"n
int f3rite > resource gestorA string cadena PA int longitudQ ?
f3rite./ escri#e los contenidos de ca#ena a la secuencia de archivo apuntada por Eestor; i el
argumento lonE6tu# es entregadoA la escritura se detendr* despu<s de /ue lonE6tu# #ytes hayan sido
escritosA o al alcanzar el (inal de ca#enaA a/uello /ue ocurra primero;
f3rite./ devuelve el nBmero de #ytes escritosA o FALSE en caso de (allo;
Note /ue si se utiliza el argumento lonE6tu#A entonces la opci-n de con(iguraci-n
magicZ/uotesZruntime ser* ignorada y no se eliminar*n caracteres de #arra desde la ca#ena;
Nota- +n los sistemas /ue di(erencian entre archivos #inarios y de teFto >es decirA
LindoEs? el archivo de#e ser a#ierto incluyendo el valor H#H en el par*metro de modo de
fopen./;
E'emplo !. )n e'emplo sencillo de f3rite
<?php
$nombre%archi=o > Mprueba.txtM;
$contenido > ",EreEar esto al archi=oVn";
// ,seEurarse primero de Que el archi=o existe y puede escribirse sobre el.
i# 3is%8ritable3$nombre%archi=o99 :
// En nuestro ejemplo estamos abriendo $nombre%archi=o en modo de adicion.
// El apuntador de archi=o se encuentra al #inal del archi=o, asi Que
// alli es donde ira $contenido cuando llamemos #8rite39.
i# 3!$Eestor > #open3$nombre%archi=o, MaM99 :
echo ".o se puede abrir el archi=o 3$nombre%archi=o9";
exit;
;
// Escribir $contenido a nuestro arci=o abierto.
i# 3#8rite3$Eestor, $contenido9 >>> S,O&E9 :
echo ".o se puede escribir al archi=o 3$nombre%archi=o9";
exit;
;

echo "&Eacute;xito, se escribi&oacute; 3$contenido9 al archi=o 3$nombre%archi=o9";

#close3$Eestor9;
; else :
echo ".o se puede escribir sobre el archi=o $nombre%archi=o";
;
?>
$ea tam#i<n fread./A fopen./A fsocBopen./A popen./A y file>put>contents./;
glob
>P&P 8 _^ 8;7;3A P&P 4?
glo# 22 +ncontrar nom#res de ruta coincidentes con un patr-n
Kescripci"n
array glob > string patr-n PA int #anderasQ ?
La (unci-n glob./ realiza una #Bs/ueda por todos los nom#res de ruta /ue coincidan con patr`n de
acuerdo a las reglas usadas por la (unci-n glo#>? de la #i#lioteca de 5A las cuales son muy similares
a las reglas usadas por int<rpretes de comandos comunes; No se realiza eFpansi-n de tildes o
par*metros;
Devuelve una matriz /ue contiene los archivosDdirectorios coincidentesA o FALSE si ocurre un error;
Banderas v*lidasC
#LO(_MAR& 2 Agrega una #arra a cada elemento devuelto
#LO(_NOSORT 2 Devuelve los archivos como aparecen en el directorio >sin ordenar?
#LO(_NOCHEC& 2 Devuelve el patr-n de #Bs/ueda si no se han encontrado archivos
coincidentes
#LO(_NOESCAPE 2 Las #arras invertidas no indican metacaracteres
#LO(_(RACE 2 +Fpande \aA#Ac] para /ue coincida con HaHA H#HA o HcH
#LO(_ONLYDIR 2 Devuelve Bnicamente entradas de directorios /ue coinciden con el
patr-n
Nota- Antes de P&P 8;7;7 #LO(_ONLYDIR no esta#a disponi#le en EindoEs y otros
sistemas /ue no usan la #i#lioteca de 5 GN@;
E'emplo !. Modo con5eniente de reempla6ar opendir./ y amigos con glob./.
<?php
#oreach 3Elob3"W.txt"9 as $nombre%archi=o9 :
echo "$nombre%archi=o tam " . #ilesi0e3$nombre%archi=o9 . "Vn";
;
?>
La salida se ver* algo comoC
#unclist.txt si0e 11GJG
#uncsummary.txt si0e CGHGC5
QuicIre#.txt si0e 6<HJC2
Nota- +sta (uncion no (uncionara con (icheros remotos ya /ue el (ichero a eFaminar
tiene /ue estar disponi#le desde el sistema de (icheros del servidor;
$ea tam#i<n opendir./A readdir./A closedir./A y fnmatch./;
is>dir
>P&P 7A P&P 8 A P&P 4?
isZdir 22 .ndica si el nom#re de archivo es un directorio
Kescripci"n
#ool is>dir > string nom#reZarchivo ?
Devuelve TRUE si el archivo con el nom#re dado eFiste y es un directorio; i nom1re_arch6o es un
nom#re de archivo relativoA <ste ser* analizado relativo al directorio de tra#a'o actual;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
E'emplo !. E'emplo de is>dir./
<?
=ar%dump3is%dir3Mun%archi=o.txtM99 . "Vn";
=ar%dump3is%dir3Mdirectorio%#also/abcM99 . "Vn";
=ar%dump3is%dir3M..M99; //un directorio arriba
?>
+l e'emplo anterior producir)a la salidaC
bool3#alse9
bool3#alse9
bool3true9
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
$ea tam#i<n chdir./A dirA opendir./A is>file./ y is>linB./;
is>e+ecutable
>P&P 7A P&P 8 A P&P 4?
isZeFecuta#le 22 .ndica si el archivo es e'ecuta#le
Kescripci"n
#ool is>e+ecutable > string nom#reZarchivo ?
Devuelve TRUE si el archivo con el nom#re dado eFiste y es e'ecuta#le;
is>e+ecutable./ apareci- en LindoEs en la versi-n 4;3;3 de P&P;
E'emplo !. E'emplo de is>e+ecutable./
<?php
$archi=o > M/home/=incent/alEun%archi=o.shM;
i# 3is%executable3$archi=o99 :
echo $archi=o.M es ejecutableM;
; else :
echo $archi=o.M no es ejecutableM;
;
?>
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
$ea tam#i<n is>file./ y is>linB./;
is>file
>P&P 7A P&P 8 A P&P 4?
isZ(ile 22 .ndica si el archivo es un archivo regular
Kescripci"n
#ool is>file > string nom#reZarchivo ?
Devuelve TRUE si el archivo con el nom#re dado eFiste y es un archivo regular;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
$ea tam#i<n is>dir./ y is>linB./;
is>linB
>P&P 7A P&P 8 A P&P 4?
isZlin" 22 .ndica si el archivo es un enlace sim#-lico
Kescripci"n
#ool is>linB > string nom#reZarchivo ?
Devuelve TRUE si el archivo con el nom#re dado eFiste y es un enlace sim#-lico;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
$ea tam#i<n is>dir./A is>file./A y readlinB./;
is>readable
>P&P 7A P&P 8 A P&P 4?
isZreada#le 22 .ndica si es posi#le leer el archivo
Kescripci"n
#ool is>readable > string nom#reZarchivo ?
Devuelve TRUE si el archivo eFiste y es posi#le leerlo;
,enga en cuenta /ue P&P puede estar accediendo al archivo #a'o el id de usuario #a'o el /ue corre
el servidor Ee# >usualmente Hno#odyH?; Las limitaciones dol modo seguro no son tomadas en cuenta;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
$ea tam#i<n is>3ritable./A file>e+ists./A y fgets./;
is>uploaded>file
>P&P 7_^ 7;3;1:A P&P 8 _^ 8;3;7A P&P 4?
isZuploadedZ(ile 22 .ndica si un archivo (ue cargado a trav<s de &,,P PO,
Kescripci"n
#ool is>uploaded>file > string nom#reZarchivo ?
Devuelve TRUE si el archivo dado por nom1re_arch6o (ue cargado a trav<s de &,,P PO,; +sto
es Btil para ayudar a veri(icar /ue un usuario malicioso no ha intentado engaWar al script haci<ndole
tra#a'ar so#re archivos con los /ue no de#er)a tra#a'ar22por e'emploA /etc/pass8d;
+ste tipo de che/ueo es especialmente importante si eFiste alguna posi#ilidad de /ue cual/uier cosa
realizada con archivos cargados pueda revelar sus contenidos al usuarioA o incluso a otros usuarios
en el mismo sistema;
is>uploaded>file./ se encuentra disponi#le Bnicamente en versiones de P&P 7 superiores a P&P
7;3;1KA y en versiones de P&P 8 superiores a 8;3;0; i est* atrapado usando una versi-n anteriorA
puede usar la siguiente (unci-n para protegerseC
Nota- +l siguiente e'emplo no tra#a'ar* con versiones de P&P 8 superiores a 8;3;0;
Depende en la (uncionalidad interna de P&P /ue (ue modi(icada luego de esa versi-n;
E'emplo !. E'emplo de is>uploaded>file./
<?php
/W rueba de usuario para =eri#icar un archi=o carEado. W/
#unction is%uploaded%#ile3$nombre%archi=o9
:
i# 3!$archi=o%tmp > Eet%c#E%=ar3Mupload%tmp%dirM99 :
$archi=o%tmp > dirname3tempnam3MM, MM99;
;
$archi=o%tmp .> M/M . basename3$nombre%archi=o9;
/W El usuario puede tener una barra #inal en php.ini... W/
return 3ereE%replace3M/[M, M/M, $archi=o%tmp9 >> $nombre%archi=o9;
;
/W ,si es como se usa, ya Que tampoco se cuenta con
W mo=e%uploaded%#ile39 en estas =ersiones antiEuas@ W/
i# 3is%uploaded%#ile3$H**%?&*%S4OE&)Marchi=o%de%usuarioM/99 :
copy3$H**%?&*%S4OE&)Marchi=o%de%usuarioM/, "/luEar/a/colocar/el/archi=o/carEado"9;
; else :
echo "osible ataQue de archi=o entrante@ nombre de archi=o M$H**%?&*%S4OE&)archi=o%de%usuario/M.";
;
?>
$ea tam#i<n mo5e>uploaded>file./A y la secci-n Gesti-n de carga de archivos para un e'empo de
uso sencillo;
is>3ritable
>P&P 8 A P&P 4?
isZErita#le 22 .ndica si el nom#re de archivo es escri#i#le
Kescripci"n
#ool is>3ritable > string nom#reZarchivo ?
Devuelve TRUE si nom1re_arch6o eFiste y es escri#i#le; +l argumento de nom#re de archivo
puede ser un nom#re de directorioA permiti<ndole revisar si un directorio es escri#i#le;
,enga en mente /ue P&P puede estar accediendo al archivo #a'o el id de usuario con el /ue corre el
servidor Ee# >usualmente Hno#odyH?; No se tienen en cuenta limitaciones del modo seguro;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
$ea tam#i<n is>readable./A file>e+ists./A y f3rite./;
is>3riteable
isZEritea#le 22 Alias de is>3ritable./
Kescripci"n
+sta (unci-n es un alias de is>3ritable./;
linB
>P&P 7A P&P 8 A P&P 4?
lin" 22 5rea un enlace (uerte
Kescripci"n
int linB > string targetA string lin" ?
linB./ crea un enlace (uerte;
$er tam#i<n symlinB./ para crear enlaces d<#ilesA y readlinB./ 'unto con linBinfo./;
linBinfo
>P&P 7A P&P 8 A P&P 4?
lin"in(o 22 5onsigue in(ormaci-n so#re un enlace
Kescripci"n
int linBinfo > string path ?
linBinfo./ da el campo stZdev de la eFtructura stat de @N.J 5 devuelto por la llamada al sistema
lstat; +sta (unci-n se usa para veri(icar si un enlace >apuntado por path? eFiste realmente >usando el
mismo m<todo /ue la macro Z.LNS de(inida en stat;h?; Devuelve 3 o FALSE en caso de error;
$er tam#i<n symlinB./A linB./A y readlinB./;
lstat
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
lstat 22 +ntrega in(ormaci-n so#re un archivo o enlace sim#-lico
Kescripci"n
array lstat > string nom#reZarchivo ?
ReBne las estad)sticas del archivo o enlace sim#-lico con el nom#re nom1re_arch6o; +sta (unci-n
es id<ntica a la (unci-n stat./A con la eFcepci-n de /ue si el par*metro nom1re_arch6o es un enlace
sim#-licoA se devuelve el status del enlace sim#-licoA no el del archivo apuntado por el enlace
sim#-lico;
5onsulte la p*gina del manual so#re stat./ para in(ormaci-n so#re la estructura de la matriz /ue
lstat./ devuelve;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
$ea tam#i<n stat./;
mBdir
>P&P 7A P&P 8 A P&P 4?
m"dir 22 5rea un directorio
Kescripci"n
int mBdir > string pathnameA int mode ?
,rata de crear el directorio especi(icado por pathname;
,en en cuenta /ue de#es especi(iar el modo como un nBmero octalA lo /ue signi(ica /ue de#es
anteponerle un 3 al nBmero;
mIdir 3"/path/to/my/dir", 2H229;
Devuelve TRUE en caso de <Fito y FALSE en caso de (allo;
$er tam#i<n rmdir./;
mo5e>uploaded>file
>P&P 8 _^ 8;3;7A P&P 4?
moveZuploadedZ(ile 22 Mueve un archivo cargado a una nueva u#icaci-n
Kescripci"n
#ool mo5e>uploaded>file > string nom#reZarchivoA string destino ?
+sta (unci-n realiza un che/ueo para asegurar /ue el archivo indicado por nom1re_arch6o sea un
archivo cargado v*lido >lo /ue /uiere decir /ue (ue cargado a trav<s del mecanismo de carga &,,P
PO, de P&P?; i el archivo es v*lidoA ser* movido al nom#re de archivo dado por #est6no;
i nom1re_arch6o no es un archivo cargado v*lidoA entonces no se tomar* ninguna acci-nA y
mo5e>uploaded>file./ devolver* FALSE;
i nom1re_arch6o es un archivo cargado v*lidoA pero no puede ser movido por alguna raz-nA no se
tomar* ninguna acci-nA y mo5e>uploaded>file./ devolver* FALSE; AdicionalmenteA se emitir* una
advertencia;
+ste tipo de che/ueo es especialmente importante si hay algBn chance de /ue cual/uier cosa hecha
con archivos cargados pueda revelar sus contenidos al usuarioA o incluso a otros usuarios en el
mismo sistema;
Nota- 5uando sa(e2mode >modo2seguro? est* activadoA P&P comprue#a si los archivos
o directorios /ue va a utilizar tienen la misma @.D /ue el script /ue est* siendo
e'ecutado;
Nota- La (unci-n mo5e>uploaded>file./ no se ve a(ectada por las restricciones sa(e
mode normales; +sto no es inseguro ya /ue mo5e>uploaded>file./ solo opera con
archivos cargados a trav<s de P&P;
A5iso
i el archivo de destino ya eFisteA ser* so#rescrito;
$ea tam#i<n is>uploaded>file./A y la secci-n Gesti-n de carga de archivos para un e'emplo de uso
simple;
parse>ini>file
>P&P 8 A P&P 4?
parseZiniZ(ile 22 Procesar un archivo de con(iguraci-n
Kescripci"n
array parse>ini>file > string nom#reZarchivo PA #ool procesarZseccionesQ ?
parse>ini>file./ lee el contenido del archivo ini especi(icado en nom1re_arch6oA y devuelve los
par*metros /ue incluye en una matriz asociativa; Al de(inir el Bltimo par*metro procesar_secc6ones
como TRUEA reci#e una matriz multidimensionalA con los nom#res de secciones y par*metros
incluidos; +l valor predeterminado para procesar_secc6ones es FALSE
Nota- +sta (unci-n no tiene relaci-n alguna con el archivo php.ini; [ste ya ha sido
procesado al momento de e'ecutar su script; +sta (unci-n puede ser usada para leer los
archivos de con(iguraci-n de su propia aplicaci-n;
Nota- i un valor en el archivo ini contiene caracteres no2al(anum<ricosA <ste necesita
ser rodeado por comillas do#les >=?;
Nota- A partir de P&P 8;0;1A esta (unci-n se ve a(ectada tam#i<n por sa(e mode y
openZ#asedir;
Nota- +Fisten pala#ras reservadas /ue no de#en ser usadas como claves en archivos ini;
+ntre estas se encuentranC nullA yesA noA trueA y (alse;
La estructura del archivo ini es similar al de php.ini;
,am#i<n pueden procesarse 5onstantes en el archivo iniA de tal modo /ue si de(ine una constante
como un valor ini antes de e'ecutar parse>ini>file./A <sta ser* integrada en los resultados; olo son
evaluados los valores ini; Por e'emploC
E'emplo !. Contenidos de e<e:plo.ini
; Este es un archi=o de con#iEuracion de ejemplo
; Oos comentarios comien0an con M;M, como en php.ini
)primera%seccion/
uno > 6
cinco > 5
animal > ,A,'?
)seEunda%seccion/
ruta > /usr/local/bin
+'O > "http@//888.example.com/fnombreusuario"
E'emplo *. E'emplo de parse>ini>file./
<?php
de#ine3M,A,'?M, M,=e LodoM9;
// rocesar sin secciones
$matri0%ini > parse%ini%#ile3"ejemplo.ini"9;
print%r3$matri0%ini9;
// rocesar con secciones
$matri0%ini > parse%ini%#ile3"ejemplo.ini", true9;
print%r3$matri0%ini9;
?>
Producir)aC
,rray
3
)uno/ >> 6
)cinco/ >> 5
)animal/ >> ,=e Lodo
)ruta/ >> /usr/local/bin
)+'O/ >> http@//888.example.com/fnombreusuario
9
,rray
3
)primera%seccion/ >> ,rray
3
)uno/ >> 6
)cinco/ >> 5
)animal/ > ,=e Lodo
9
)seEunda%seccion/ >> ,rray
3
)ruta/ >> /usr/local/bin
)+'O/ >> http@//888.example.com/fnombreusuario
9
9
Las claves y los nom#res de secci-n /ue consisten de nBmeros son evaluadas como enteros de P&PA
de modo /ue los nBmeros /ue comienzan con 3 son evaluados como valores octales y los nBmeros
/ue comienzan con 3F son evaluados como heFadecimales;
pathinfo
>P&P 8 _^ 8;3;7A P&P 4?
pathin(o 22 Devuelve in(ormaci-n so#re la ruta de un archivo
Kescripci"n
array pathinfo > string ruta PA int opcionesQ ?
pathinfo./ devuelve una matriz asociativa /ue contiene in(ormaci-n so#re ruta; Los siguientes
elementos de la matriz son devueltosC #6rnameA 1asename y e8tens6on;
Puede especi(icar cu*les elementos son devueltos con el par*metro opcional opc6ones; [ste se
compone de PATHINFO_DIRNAMEA PATHINFO_(ASENAME y PATHINFO_E%TENSION; u
comportamiento predeterminado es devolver todos los elementos;
E'emplo !. E'emplo de pathinfo./
<?php
$partes%ruta > pathin#o3M/888/htdocs/index.htmlM9;
echo $partes%ruta)MdirnameM/ . "Vn";
echo $partes%ruta)MbasenameM/ . "Vn";
echo $partes%ruta)MextensionM/ . "Vn";
?>
Producir)aC
/888/htdocs
index.html
html
Nota- Para in(ormaci-n so#re la recuperaci-n de in(ormaci-n so#re la ruta actualA lea la
secci-n relevante en varia#les reservadas prede(inidas;
$ea tam#i<n dirname./A basename./A parse>url./ y realpath./;
pclose
>P&P 7A P&P 8 A P&P 4?
pclose 22 5ierra un apuntador de archivo de proceso
Kescripci"n
int pclose > resource gestor ?
5ierra un apuntador de archivo a un pipe a#ierto por popen./;
+l apuntador de archivo de#e ser v*lidoA y de#e ha#er sido devuelto por un llamado satis(actorio a
popen./;
Devuelve el status de terminaci-n del proceso /ue (ue e'ecutado;
$ea tam#i<n popen./;
popen
>P&P 7A P&P 8 A P&P 4?
popen 22 A#re un apuntador de archivo de proceso
Kescripci"n
resource popen > string comandoA string modo ?
A#re un pipe con un proceso e'ecutado al #i(urcar el comando dado en el primer par*metro;
Devuelve un apuntador de archivo id<ntico al devuelto por fopen./A con la eFcepci-n de /ue es
unidireccional >puede ser usado s-lo para lectura o escritura? y de#e ser cerrado con pclose./; +ste
apuntador puede ser usado con fgets./A fgetss./A y f3rite./;
i ocurre un errorA se devuelve FALSE;
Nota- i est* #uscando soporte #idireccional >en dos v)as?A use proc>open./;
E'emplo !. E'emplo de popen./
<?php
$Eestor > popen3"/bin/ls", "r"9;
?>
i el comando a ser e'ecutado no es encontradoA se devuelve un recurso v*lido; +sto puede parecer
eFtraWoA pero tiene sentidoX le permite acceder a cual/uier mensa'e de error devuelto por el
int<rprete de comandosC
<?php
error%reportinE3E%,OO9;
/W ,EreEar redireccion de modo Que tenEamos stderr. W/
$Eestor > popen3M/ruta/hacia/basura C>&6M, MrM9;
echo "M$EestorM; " . Eettype3$Eestor9 . "Vn";
$read > #read3$Eestor, C2KG9;
echo $read;
pclose3$Eestor9;
?>
Nota- 5uando sa(e mode esta activadoA solamente se pueden e'ecutar los programas /ue
se encuentren en sa(eZmodeZeFecZdir; Por razones practicasA no se permite el uso de ..
en el PA,& del programa;
A5iso
5on sa(e mode activadoA todas las pala#ras /ue siguan al comando inicial son tratadas como un
solo argumento; AsiA echo ? V echo 8 se interpreta como echo *? V echo 8*;
$ea tam#i<n pclose./A fopen./A y proc>open./;
readfile
>P&P 7A P&P 8 A P&P 4?
read(ile 22 .mprime un archivo
Kescripci"n
int readfile > string nom#reZarchivo PA #ool usarZrutaZinclusion PA resource conteFtoQQ ?
Lee un archivo y lo escri#e al #B(er de salida;
Devuelve el nBmero de #ytes le)dos desde el archivo; i ocurre un errorA FALSE es devuelto y a
menos /ue la (unci-n sea llamada como Greadfile./A se genera un mensa'e de error;
,ugerencia- Puede usar una @RL como nom#re de archivo con esta (unci-n si los (open
Erappers han sido activados; 5onsulte fopen./ para m*s detalles so#re c-mo especi(icar
el nom#re de (ichero y Ap<ndice L una lista de protocolos @RL soportados
Puede usar el segundo par*metro opcional y de(inirlo como TRUEA si desea #uscar por el archivo en
includeZpathA tam#i<n;
$ea tam#i<n fpassthru./A file./A fopen./A include./A re?uire./A 5irtual./A file>get>contents./A y
Ap<ndice L;
readlinB
>P&P 7A P&P 8 A P&P 4?
readlin" 22 Devuelve el o#'etivo de un enlace sim#-lico
Kescripci"n
string readlinB > string path ?
readlinB./ hace lo mismo /ue la (unci-n 5 readlin" 5 y devuelve el contenido del path del enlace
sim#-lico o 3 en caso de error;
$er tam#i<n symlinB./A readlinB./ y linBinfo./;
realpath
>P&P 8 A P&P 4?
realpath 22 Devuelve el nom#re de ruta a#soluto simpli(icado
Kescripci"n
string realpath > string ruta ?
realpath./ eFpande todos los enlaces sim#-licos y revuelve todas las re(erencias a HD;DHA HD;;DH y
caracteres HDH eFtra en la ruta de entradaA y devuelve el nom#re de ruta a#soluto simpli(icado; La ruta
resultante no tendr* enlaces sim#-licosA ni componentes HD;DH o HD;;DH;
realpath./ devuelve FALSE en caso de (alloA p;e'; si el archivo no eFiste;
E'emplo !. E'emplo de realpath./
<?php
$ruta%real > realpath3"../../index.php"9;
?>
$ea tam#i<n basename./A dirname./A y pathinfo./;
rename
>P&P 7A P&P 8 A P&P 4?
rename 22 Renom#ra un archivo o directorio
Kescripci"n
#ool rename > string nom#reZantiguoA string nom#reZnuevo PA resource conteFtoQ ?
.ntenta renom#rar nom1re_ant6Euo a nom1re_nueo;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo con rename./
<?php
rename3"/tmp/archi=o%temp.txt", "/home/usuario/loEin/docs/mi%archi=o.txt"9;
?>
Nota- Antes de P&P 8;7;7A rename./ no pod)a renom#rar archivos a trav<s de
particiones di(erentes #a'o sistemas #asados en @niF;
Nota- A partir de P&P 4;3;3A rename./ puede usarse tam#i<n con alEunas envolturas
@RL; 5onsulte Ap<ndice L para un listado de las envolturas /ue soporta rename./;
Nota- La envoltura usada en nom1re_ant6Euo DEAE coincidir con la envoltura usada en
nom1re_nueo;
Nota- +l par*metro conte8to (ue agregado en P&P 4;3;3;
$ea tam#i<n copy./A unlinB./A y mo5e>uploaded>file./;
re3ind
>P&P 7A P&P 8 A P&P 4?
reEind 22 Retroceder la posici-n de un apuntador de archivo
Kescripci"n
#ool re3ind > resource gestor ?
De(ine el indicador de posici-n de archivo para Eestor como el comienzo de la secuencia de
archivo;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
+l apuntador de archivo de#e ser v*lidoA y de#e apuntar a un archivo a#ierto satis(actoriamente
mediante fopen./;
Nota- i ha a#ierto el archivo en modo de adici-n >=a=?A cual/uier in(ormaci-n /ue
escri#a al archivo ser* siempre agregada al (inal de <steA independientemente de la
posici-n del archivo;
$ea tam#i<n fseeB./ y ftell./;
rmdir
>P&P 7A P&P 8 A P&P 4?
rmdir 22 +limina un directorio
Kescripci"n
int rmdir > string dirname ?
,rata de eliminar el directorio indicado por pathname; +l directorio de#e estar vacioA y los permisos
relevantes de#en permitir esto;
i ocurre un errorA devuelve 3;
$er tam#i<n mBdir./;
set>file>buffer
setZ(ileZ#u((er 22 Alias de stream>set>3rite>buffer./
Kescripci"n
+sta (unci-n es un alias de stream>set>3rite>buffer./;
stat
>P&P 7A P&P 8 A P&P 4?
stat 22 +ntrega in(ormaci-n so#re un archivo
Kescripci"n
array stat > string nom#reZarchivo ?
ReBne las estad)sticas del archivo con el nom#re nom1re_arch6o; i nom1re_arch6o es un enlace
sim#-licoA las estad)sticas son del archivo mismoA no del enlace; lstat./ es una (unci-n id<ntica a
stat./A con la eFcepci-n de /ue utiliza la in(ormaci-n de status de los enlaces sim#-licos;
+n caso de (allosA stat./ devuelve FALSE; ,am#i<n arro'ar* una advertencia;
Devuelve una matriz con las estad)sticas del archivoA con los siguientes elementos; +sta matriz
comienza en cero; Adem*s de devolver estos atri#utos en una matriz num<ricaA <stos pueden ser
accesados con )ndices asociativosA como se nota al lado de cada par*metroX esta alternativa est*
disponi#le a partir de P&P 8;3;KC
Tabla !. ;ormato de resultados de stat./ y fstat./
Num%rico
Asociati5o .desde PHP
8.D.</
Kescripci"n
3 dev nBmero de dispositivo
1 ino nBmero de inode
0 mode modo de protecci-n inode
7 nlin" nBmero de enlaces
8 uid id de usuario del dueWo
4 gid id de grupo del dueWo
K rdev tipo de dispositivoA si hay dispositivo inode V
: size tamaWo en #ytes
M atime hora del Bltimo acceso >marca de tiempo @niF?
9 mtime hora de la Bltima modi(icaci-n >marca de tiempo @niF?
Num%rico
Asociati5o .desde PHP
8.D.</
Kescripci"n
13 ctime
hora del Bltimo cam#io del inode >marca de tiempo
@niF?
11 #l"size tamaWo de #lo/ue de +D del sistema de archivos V
10 #loc"s nBmero de #lo/ues reservados
V 2 v*lido Bnicamente en sistemas /ue soportan el tipo stZ#l"size22los dem*s sistemas >como
LindoEs? devuelven 21;
Nota- Los resultados de esta (unci-n son guardados; 5onsultar clearstatcache./ para
m*s detalles;
,ugerencia- A partir de P&P 4;3;3A esta (uncion tam#ien puede usarse con alEunas
@RL como nom#re de (ichero; 5onsultar Ap<ndice LA para o#tener una lista con soporte
para la (uncionalidad stat./;
$ea tam#i<n lstat./A fstat./A filemtime./A y filegroup./;
symlinB
>P&P 7A P&P 8 A P&P 4?
symlin" 22 5rea un enlace sim#-lico
Kescripci"n
int symlinB > string targetA string lin" ?
symlinB./ crea un enlace sim#-lico del o#'etivo tarEet con el nom#re especi(icado por l6n>;
$er tam#i<n linB./ para crear enlaces (uertesA y readlinB./ 'unto con linBinfo./;
tempnam
>P&P 7A P&P 8 A P&P 4?
tempnam 22 5rear un archivo con un nom#re Bnico
Kescripci"n
string tempnam > string dirA string pre(i'o ?
5rea un archivo con un nom#re Bnico en el directorio especi(icado; i el directorio no eFisteA
tempnam./ puede generar un archivo en el directorio temporal del sistemaA y devolver su nom#re;
+n versiones anteriores a P&P 8;3;KA el comportamiento de la (unci-n tempnam./ depend)a del
sistema; +n LindoEsA la varia#le de entorno ,MP so#rescri#)a el par*metro #6rA en LinuF la
varia#le ,MPD.R tiene precedenciaA mientras /ue $R8 siempre usa su par*metro #6r si el
directorio al /ue apunta eFiste; 5onsulte la documentaci-n de su sistema so#re la (unci-n tempnam
>7? si necesita mayor claridad al respecto;
Nota- i P&P no puede crear un archivo en el par*metro #6r especi(icadoA pasa a usar el
valor predeterminado del sistema;
Devuelve el nuevo nom#re de archivo temporalA o FALSE en caso de (allo;
E'emplo !. E'emplo de tempnam./
<?php
$nombre%temp > tempnam3"/tmp", "S??"9;
$Eestor > #open3$nombre%temp, "8"9;
#8rite3$Eestor, "escribiendo al archi=o temporal"9;
#close3$Eestor9;
// haEa alEo aQui
unlinI3$nombre%temp9;
?>
Nota- +l comportamiento de esta (unci-n cam#i- en 8;3;7; +l archivo temporal es
creado tam#i<n para evitar una condici-n de carrera en donde el archivo puede aparecer
en el sistema de archivos entre el periodo en /ue se genera la cadena y antes de /ue el
script se dedi/ue a crear el archivo; Note /ue necesita eliminar el archivo en caso de /ue
no lo necesite m*sA ya /ue <sto no se hace autom*ticamente
$ea tam#i<n tmpfile./ y unlinB./;
tmpfile
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
tmp(ile 22 5rea un archivo temporal
Kescripci"n
resource tmpfile > void ?
5rea un archivo temporal con un nom#re Bnico en modo de escrituraA devolviendo un gestor de
archivo similar al /ue devuelve fopen./; +l archivo es eliminado autom*ticamente cuando sea
cerrado >usando fclose./?A o cuando el script (inalice;
Para m*s detallesA consulte la documentaci-n de su sistema so#re la (unci-n tmp96leLRMA as) como el
archivo de ca#ecera stdio.h;
E'emplo !. E'emplo de tmpfile./
<?php
$temp > tmp#ile39;
#8rite3$temp, "escribiendo sobre el archi=o temporal"9;
#close3$temp9; // esto elimina el archi=o
?>
$ea tam#i<n tempnam./;
touch
>P&P 7A P&P 8 A P&P 4?
touch 22 +sta#lece la hora de acceso y modi(icaci-n de un archivo
Kescripci"n
#ool touch > string nom#reZarchivo PA int hora PA int horaZaccesoQQ ?
.ntenta esta#lecer la hora de acceso y modi(icaci-n del archivo con el nom#re dado al valor indicado
por el par*metro hora; i la opci-n hora no se especi(icaA se usa la hora actual; +sto es Walente a lo
/ue hace utime >algunas veces conocido como utimes?; i la tercera opci-n hora_acceso se
especi(icaA la hora de acceso del nom#re de archivo dado se esta#lece al valor de hora_acceso; Note
/ue la hora de acceso siempre se modi(icaA inpedendientemente del nBmero de par*metros;
i el archivo no eFisteA <ste es creado; Devuelve TRUE si todo se llev- a ca#o correctamenteA
FALSE en caso de (allo;
E'emplo !. E'emplo de touch./
<?php
i# 3touch3$.ombre,rchi=o99 :
echo "Oa hora de modi#icaci&oacute;n de $.ombre,rchi=o ha sido modi#icada
a la #echa y hora de hoy";
; else :
echo "Oamentablemente no #ue posible cambiar la hora de
modi#icaci&oacute;n de $.ombre,rchi=o";
;
?>
umasB
>P&P 7A P&P 8 A P&P 4?
umas" 22 5am#ia la umas" actual
Kescripci"n
int umasB > int mas" ?
umasB./ (i'a las umas" P&P con la mascara i 3::: y y devuelve la antigua umas"; 5uando P&P se
est* usando como un m-dulo del servidorA la umas" se restaura cuando cada petici-n es (inalizada;
umasB./ sin argumentos s-lamente devuelve la umas" actual;
unlinB
>P&P 7A P&P 8 A P&P 4?
unlin" 22 +limina un archivo
Kescripci"n
#ool unlinB > string nom#reZarchivo PA resource conteFtoQ ?
+limina nom1re_arch6o; +s similar a la (unci-n unlin">? de 5 en @niF; Devuelve TRUE si todo se
llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- A partir de P&P 4;3;3A la (unci-n unlinB./ puede ser usada tam#i<n con alEunas
envolturas de @RL; Re(i<rase a Ap<ndice L para consultar un listado de las envolturas
con soporte para unlinB./;
Nota- +l par*metro conte8to (ue agregado a partir de P&P 4;3;3;
$ea tam#i<n rmdir./ para la eliminaci-n de directorios;
IIICIII. ;ri1iKi ;unctions
Introducci"n
FriBiDi is a (ree implementation o( the @nicode Bidirectional Algorithm;
Me?uirimientos
%ou must doEnload and install the FriBiDi pac"age;
Instalaci"n
+sta eFtension P+5L no esta ligada a P&P; Mas in(ormacion so#re nuevos lanzamientosA descargas
(icheros de (uentesA in(ormacion so#re los responsa#les asi como un H5&ANG+LOGHA se puede
encontrar a/uiC httpCDDpecl;php;netDpac"ageD(ri#idi;
.n order to use these (unctions you must compile P&P Eith Fri#idi support #y using the ==76th=
9r616#6):D0R. con(igure option;
LindoEs users Eill ena#le php%#ribidi.dll inside o( php.ini in order to use these
(unctions; Podeis descargar esta DLL de las eFtensiones P+5L desde la pagina P&P DoEnloads o
desde httpCDDsnaps;php;netD;
Configuraci"n en tiempo de e'ecuci"n
Tipos de recursos
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
FRI(IDI_CHARSET_UTF, >integer?
FRI(IDI_CHARSET_,,2=_1 >integer?
FRI(IDI_CHARSET_,,2=_, >integer?
FRI(IDI_CHARSET_CP)*22 >integer?
FRI(IDI_CHARSET_CP)*21 >integer?
FRI(IDI_CHARSET_ISIRI_>>+* >integer?
Tabla de contenidos
(ri#idiZlog0vis 22 5onvert a logical string to a visual one
fribidi>log*5is
>P&P 8 _^ 8;3;8?
(ri#idiZlog0vis 22 5onvert a logical string to a visual one
Kescription
string fribidi>log*5is > string strA string directionA int charset ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
IIIII. ;unciones ;TP
Introducci"n
Las (unciones en esta eFtensi-n implementan acceso de cliente a servidores de archivos /ue
entiendan el Protocolo de ,rans(erencia de Archivos >F,PA por sus siglas en .ngl<s?A tal y como se
de(ine en httpCDDEEE;(a/s;orgDr(csDr(c949; +sta eFtensi-n tiene como prop-sito el acceso detallado a
un servidor F,PA #rindando un amplio rango de control al script /ue se encuentre e'ecutando; i
s-lo desea leer desde un archivo o escri#ir so#re un archivo en un servidor F,PA considere el uso de
la envoltura 9tp:// con las (unciones del sistema de archivosA medio /ue provee una inter(az m*s
simple e intuitiva;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
Para usar las (unciones F,P con su con(iguraci-n P&PA de#e agregar la opci-n ==ena1le=9tp cuando
instale P&P 8A o ==76th=9tp cuando use P&P 7;
La versi-n para LindoEs de +!+ tiene soporte nativo para esta eFtensi-n; No se necesita cargar
ninguna eFtensi-n adicional para usar estas (unciones;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n usa un tipo de recursoA /ue es el identi(icador de enlace de la coneFi-n F,P devuelto
por ftp>connect./;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
FTP_ASCII >integer?
FTP_TE%T >integer?
FTP_(INARY >integer?
FTP_IMA#E >integer?
FTP_TIMEOUT_SEC >integer?
$ea ftp>set>option./ para m*s in(ormaci-n;
Las siguientes constantes (ueron introducidas en P&P 8;7;3;
FTP_AUTOSEE& >integer?
$ea ftp>set>option./ para m*s in(ormaci-n;
FTP_AUTORESUME >integer?
Determinar autom*ticamente la posici-n de continuaci-n y la posici-n de comienzo para
peticiones G+, y P@, >(unciona Bnicamente si F,PZA@,O++S est* ha#ilitado?
FTP_FAILED >integer?
La trans(erencia asincr-nica ha (allado
FTP_FINISHED >integer?
La trans(erencia asincr-nica ha terminado
FTP_MOREDATA >integer?
La trans(erencia asincr-nica est* aun activa
E'emplos
E'emplo !. E'emplo de ;TP
<?php
// establecer una conexion basica
$id%con > #tp%connect3$ser=idor%#tp9;
// inicio de sesion con nombre de usuario y contrasenya
$resultado%loEin > #tp%loEin3$id%con, $nombre%usuario%#tp, $contrasenya%#tp9;
// cheQuear la conexion
i# 33!$id%con9 TT 3!$resultado%loEin99 :
echo "&iexcl;Oa conexi&oacute;n S* ha #allado!";
echo "&e ha intentado la conexion con $ser=idor%#tp para el " .
"usuario $nombre%usuario%#tp";
exit;
; else :
echo "Ronectado con $ser=idor%#tp, para el usuario $nombre%usuario%#tp";
;
// carEar el archi=o
$carEa > #tp%put3$id%con, $archi=o%destino, $archi=o%#uente, S*%Z4.,'P9;
// cheQuear el status de la carEa
i# 3!$carEa9 :
echo "&iexcl;Oa carEa S* ha #allado!";
; else :
echo "&e ha carEado $archi=o%#uente a $ser=idor%#tp como $archi=o%destino";
;
// cierra la secuencia S*
#tp%close3$id%con9;
?>
Tabla de contenidos
(tpZalloc 22 Reserva espacio para /ue un archivo sea cargado
(tpZcdup 22 5am#ia al directorio padre
(tpZchdir 22 5am#ia de directorio en un servidor F,P
(tpZchmod 22 +sta#lecer permisos en un archivo via F,P
(tpZclose 22 5ierra una coneFi-n F,P
(tpZconnect 22 +sta#lece una coneFi-n F,P
(tpZdelete 22 +limina un archivo en el servidor F,P
(tpZeFec 22 olicita la e'ecuci-n de un programa en el servidor F,P
(tpZ(get 22 Descarga un archivo desde el servidor F,P y lo guarda en un archivo a#ierto
(tpZ(put 22 5arga un archivo a#ierto al servidor F,P
(tpZgetZoption 22 Recupera varios comportamientos de tiempo de e'ecuci-n de la secuencia F,P
actual
(tpZget 22 Descarga un archivo desde el servidor F,P
(tpZlogin 22 5omienza la sesion en una coneFi-n F,P
(tpZmdtm 22 Devuelve la Bltima hora de modi(icaci-n del archivo dado
(tpZm"dir 22 5rea un directorio
(tpZn#Zcontinue 22 5ontinBa recuperandoDenviando un archivo >modo no2#lo/ueo?
(tpZn#Z(get 22 Recupera un archivo desde el servidor F,P y lo escri#e so#re un archivo a#ierto
>modo no2#lo/ueo?
(tpZn#Z(put 22 Almacena un archivo desde un archivo a#ierto en el servidor F,P >modo no2#lo/ueo?
(tpZn#Zget 22 Recupera un archivo desde el servidor F,P y lo escri#e so#re un archivo local >modo
no2#lo/ueo?
(tpZn#Zput 22 Almacena un archivo en el servidor F,P >modo no2#lo/ueo?
(tpZnlist 22 Devuelve una lista de archivos en el directorio dado
(tpZpasv 22 Activa o desactiva el modo pasivo;
(tpZput 22 5arga un archivo al servidor F,P
(tpZpEd 22 Devuelve el nom#re del directorio actual
(tpZ/uit 22 5ierra una coneFi-n F,P
(tpZraE 22 +nv)a un comando ar#itrario a un servidor F,P
(tpZraElist 22 Devuelve una lista detallada de archivos en el directorio dado
(tpZrename 22 Renom#ra un archivo en el servidor F,P
(tpZrmdir 22 Borra un directorio
(tpZsetZoption 22 +sta#lecer varias opciones F,P de tiempo de e'ecuci-n
(tpZsite 22 +nv)a un comando .,+ al servidor
(tpZsize 22 Devuelve el tamaWo del archivo dado
(tpZsslZconnect 22 A#re una coneFi-n segura L2F,P
(tpZsystype 22 Devuelve el identi(icador de tipo de sistema del servidor F,P remoto;
ftp>alloc
>P&P 4?
(tpZalloc 22 Reserva espacio para /ue un archivo sea cargado
Kescripci"n
#ool ftp>alloc > resource secuenciaZ(tpA int tamZarchivo PA string iresultadoQ ?
+nv)a un comando ALLO al servidor F,P remoto para u#icar tam_arch6o #ytes de espacio;
Devuelve TRUE en caso de tener <FitoA o FALSE en caso de (allo;
Nota- Muchos servidores F,P no o(recen soporte para este comando; +stos servidores
pueden devolver un c-digo de (allo >FALSE? /ue indica /ue el comando no es
soportadoA o un c-digo de <Fito >TRUE? para indicar /ue la pre2u#icaci-n no es
necesaria y el cliente de#e continuar como si la operaci-n hu#iera sido eFitosa; De#ido a
estoA puede ser me'or reservar esta (unci-n para servidores /ue re/uieren la preu#icaci-n
eFpl)citamente;
@na representaci-n teFtual de la respuesta de los servidores ser* devuelta por re(erencia en
resulta#o si se entrega la varia#le;
E'emplo !. E'emplo de ftp>alloc./
<?php
$archi=o > "/home/usuario/miarchi=o";
/W conexion con el ser=idor W/
$id%con > #tp%connect3M#tp.example.comM9;
$resultado%loEin > #tp%loEin3$id%con, ManonymousM, Musuario^example.comM9;
i# 3#tp%alloc3$id%con, #ilesi0e3$archi=o9, $resultado99 :
echo "El espacio #ue reser=ado satis#actoriamente en el ser=idor. En=iando $archi=o.Vn";
#tp%put3$id%con, M/incomminE/miarchi=oM, $archi=o, S*%Z4.,'P9;
; else :
echo ".o #ue posible reser=ar espacio en el ser=idor. El ser=idor dijo@ $resultadoVn";
;
#tp%close3$id%con9;
?>
$ea tam#i<nC ftp>put./A y ftp>fput./;
ftp>cdup
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZcdup 22 5am#ia al directorio padre
Kescripci"n
int ftp>cdup > int (tpZstream ?
i tiene <FitoA devuelve TRUE; +n caso de errorA devuelve FALSE;
5am#ia al directorio padre;
ftp>chdir
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZchdir 22 5am#ia de directorio en un servidor F,P
Kescripci"n
int ftp>chdir > int (tpZstreamA string directory ?
i tiene <FitoA devuelve TRUE; +n caso de errorA devuelve FALSE;
5am#ia al directorio especi(icado por el par*metro #6rector?;
ftp>chmod
>P&P 4?
(tpZchmod 22 +sta#lecer permisos en un archivo via F,P
Kescripci"n
int ftp>chmod > resource secuenciaZ(tpA int modoA string nom#reZarchivo ?
+sta#lece los permisos so#re el archivo remoto especi(icado por nom1re_arch6o a mo#oA dado
como un valor octal;
Devuelve mo#o en caso de tener <FitoA o FALSE de lo contrario;
E'emplo !. E'emplo de ftp>chmod./
<?php
$archi=o > Mpublic%html/index.phpM;
// con#iEurar una conexion basica
$id%con > #tp%connect3$ser=idor%#tp9;
// iniciar sesion con nombre de usuario y contrasenya
$resultado%loEin > #tp%loEin3$id%con, $nombre%usuario%#tp, $contrasenya%#tp9;
// intentar chmod en $archi=o con el =alor G11
i# 3#tp%chmod3$id%con, 2G11, $archi=o9 !>> #alse9 :
echo "se e#ectu&oacute; chmod sobre $archi=o satis#actoriamente con el =alor G11Vn";
; else :
echo "no se pudo reali0ar chmod sobre $archi=oVn";
;
// cerrar la conexion
#tp%close3$id%con9;
?>
Devuelve los nuevos permisos del archivo en caso de <FitoA o FALSE si ocurre un (allo;
$ea tam#i<n chmod./;
ftp>close
>P&P 8 _^ 8;0;3A P&P 4?
(tpZclose 22 5ierra una coneFi-n F,P
Kescripci"n
#ool ftp>close > resource secuenciaZ(tp ?
ftp>close./ cierra secuenc6a_9tp y li#era el resource; Despu<s de llamar esta (unci-nA no puede
continuar usando la coneFi-n F,P y de#e crear una nueva con ftp>connect./;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo de ftp>close./
<?php
// establecer una conexion basica
$id%con > #tp%connect3$ser=idor%#tp9;
// iniciar sesion con nombre de usuario y contrasenya
$resultado%loEin > #tp%loEin3$id%con, $nombre%usuario, $contrasenya%#tp9;
// imprimir el directorio actual
echo #tp%p8d3$id%con9; // /
// cerrar esta conexion
#tp%close3$id%con9;
?>
$ea tam#i<n ftp>connect./
ftp>connect
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZconnect 22 +sta#lece una coneFi-n F,P
Kescripci"n
int ftp>connect > string host PA int portQ ?
i tiene <FitoA devuelve un (lu'o F,P; +n caso de errorA devuelve FALSE;
ftp>connect./ esta#lece una coneFi-n F,P al host especi(icado; +l par*metro port especi(ica un
puerto alternativo al /ue conectar; i se omite o es ceroA se usa el puerto F,P por de(ectoA 01;
ftp>delete
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZdelete 22 +limina un archivo en el servidor F,P
Kescripci"n
#ool ftp>delete > resource secuenciaZ(tpA string ruta ?
ftp>delete./ elimina el archivo especi(icado por ruta desde el servidor F,P;
E'emplo !. E'emplo de ftp>delete./
<?php
$archi=o > Mpublic%html/antiEuo.txtM;
// establecer conexion basica
$id%con > #tp%connect3$ser=idor%#tp9;
// iniciar sesion con nombre de usuario y contrasenya
$resultado%loEin > #tp%loEin3$id%con, $#tp%nombre%usuario, $#tp%contrasenya9;
// intento de eliminar $archi=o
i# 3#tp%delete3$id%con, $archi=o99 :
echo "$archi=o se elimin&oacute; satis#actoriamenteVn";
; else :
echo "no se pudo eliminar $archi=oVn";
;
// cerrar la conexion
#tp%close3$id%con9;
?>
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ftp>e+ec
>P&P 8 _^ 8;3;7A P&P 4?
(tpZeFec 22 olicita la e'ecuci-n de un programa en el servidor F,P
Kescripci"n
#ool ftp>e+ec > resource secuenciaZ(tpA string comando ?
+nv)a una petici-n .,+ +J+5 coman#o al servidor F,P; Devuelve TRUE si el comando tuvo <Fito
>el servidor env)a el c-digo de respuestaC 200?X o FALSE de lo contrario;
E'emplo !. E'emplo de ftp>e+ec./
<?php
$comando > Mls Fal >archi=os.txtM;
$id%con > #tp%connect3$ser=idor%#tp9;
$resultado%loEin > #tp%loEin3$id%con, $nombre%usuario%#tp, $contrasenya%usuario%#tp9;
i# 3#tp%exec3$id%con, $comando99 :
echo "$comando #ue ejecutado satis#actoriamente<br />Vn";
; else :
echo Mno se pudo ejecutar M . $comando;
;
?>
$ea tam#i<n ftp>ra3./;
ftp>fget
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZ(get 22 Descarga un archivo desde el servidor F,P y lo guarda en un archivo a#ierto
Kescripci"n
#ool ftp>fget > resource secuenciaZ(tpA resource gestorA string archivoZremotoA int modo PA int
posZreanudarQ ?
ftp>fget./ recupera arch6o_remoto desde el servidor F,PA y lo escri#e en el apuntador de archivo
dadoA Eestor; +l mo#o de trans(erencia especi(icado de#e ser un valor entre FTP_ASCII y
FTP_(INARY;
E'emplo !. E'emplo de ftp>fget./
<?php
// abrir alEun archi=o para lectura
$archi=o > MalEun%archi=o.txtM;
$da > #open3$archi=o, M8M9;
// establecer la conexion basica
$id%con > #tp%connect3$ser=idor%#tp9;
// iniciar sesion con nombre de usuario y contrasenya
$resultado%loEin > #tp%loEin3$id%con, $#tp%nombre%usuario, $#tp%contrasenya9;
// intento por descarEar $archi=o
i# 3#tp%#Eet3$id%con, $da, $archi=o, S*%,&R44, 699 :
echo "&e ha escrito satis#actoriamente sobre $archi=oVn";
; else :
echo "Hubo un problema con $archi=oVn";
;
// cerrar la conexion y el Eestor de archi=o
#tp%close3$id%con9;
#close3$da9;
?>
Nota- +l par*metro pos_reanu#ar (ue agregado en P&P 8;7;3;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
$ea tam#i<n ftp>get./A ftp>nb>get./ y ftp>nb>fget./;
ftp>fput
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZ(put 22 5arga un archivo a#ierto al servidor F,P
Kescripci"n
#ool ftp>fput > resource secuenciaZ(tpA string archivoZremotoA resource gestorA int modo PA int
posZinicioQ ?
ftp>fput./ carga los datos desde el apuntador de archivo Eestor hasta /ue se llega al (inal del
archivo; Los resultados son almacenados en arch6o_remoto en el servidor F,P; +l mo#o de
trans(erencia especi(icado de#e ser un valor entre FTP_ASCII y FTP_(INARY;
E'emplo !. E'emplo de ftp>fput./
<?php
// abrir alEun archi=o para lectura
$archi=o > Msome#ile.txtM;
$da > #open3$archi=o, MrM9;
// con#iEurar la conexion basica
$id%con > #tp%connect3$ser=idor%#tp9;
// iniciar sesion con nombre de usuario y contrasenya
$resultado%loEin > #tp%loEin3$id%con, $#tp%nombre%usuario, $#tp%contrasenya9;
// trata de carEar $archi=o
i# 3#tp%#put3$id%con, $archi=o, $da, S*%,&R4499 :
echo "&e ha carEado $archi=o satis#actoriamenteVn";
; else :
echo "Hubo un problema durante la carEa de $archi=oVn";
;
// cerrar la conexion y el Eestor de archi=o
#tp%close3$id%con9;
#close3$da9;
?>
Nota- +l par*metro pos_6n6c6o (ue aWadido en P&P 8;7;3;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
$ea tam#i<n ftp>put./A ftp>nb>fput./A y ftp>nb>put./;
ftp>get>option
>P&P 8 _^ 8;0;3A P&P 4?
(tpZgetZoption 22 Recupera varios comportamientos de tiempo de e'ecuci-n de la secuencia F,P
actual
Kescripci"n
miFed ftp>get>option > resource secuenciaZ(tpA int opcion ?
Devuelve el valor en caso de <Fito o FALSE si la opc6on dada no es soportada; +n el Bltimo casoA
un mensa'e de advertencia es producido tam#i<n;
+sta (unci-n devuelve el valor para la opc6on solicitadaA de la secuenc6a_9tp especi(icada;
ActualmenteA las siguientes opciones son soportadasC
Tabla !. Jpciones ;TP de tiempo de e'ecuci"n soportadas
F,PZ,.M+O@,Z+
5
Devuelve el tiempo m*Fimo de espera actual usado para las operaciones de
red;
E'emplo !. E'emplo de ftp>get>option./
<?php
// ?btiene el tiempo de espera de la secuencia S* dada
$timeout > #tp%Eet%option3$id%con, S*%*4"E?+*%&ER9;
?>
$ea tam#i<n ftp>set>option./;
ftp>get
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZget 22 Descarga un archivo desde el servidor F,P
Kescripci"n
#ool ftp>get > resource secuenciaZ(tpA string archivoZlocalA string archivoZremotoA int modo PA int
posZreanudarQ ?
ftp>get./ recupera arch6o_remoto desde el servidor F,PA y lo guarda localmente en arch6o_local;
+l mo#o de trans(erencia especi(icado de#e ser un valor entre FTP_ASCII o FTP_(INARY;
Nota- +l par*metro pos_reanu#ar (ue aWadido en P&P 8;7;3;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo de ftp>get./
<?php
// de#inir alEunas =ariables
$archi=o%local > Mlocal.0ipM;
$archi=o%ser=idor > Mser=idor.0ipM;
// con#iEurar conexion basica
$id%con > #tp%connect3$ser=idor%#tp9;
// iniciar sesion con nombre de usuario y contrasenya
$resultado%loEin > #tp%loEin3$id%con, $#tp%nombre%usuario, $#tp%contrasenya9;
// intentar la descarEa de $archi=o%ser=idor y Euardarlo en $archi=o%local
i# 3#tp%Eet3$id%con, $archi=o%local, $archi=o%ser=idor, S*%Z4.,'P99 :
echo "&e ha Euardado satis#actoriamente en $archi=o%localVn";
; else :
echo "Ha ocurrido un problemaVn";
;
// cerrar la conexion
#tp%close3$id%con9;
?>
$ea tam#i<n ftp>fget./A ftp>nb>get./ y ftp>nb>fget./;
ftp>login
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZlogin 22 5omienza la sesion en una coneFi-n F,P
Kescripci"n
int ftp>login > int (tpZstreamA string usernameA string passEord ?
i tiene <FitoA devuelve TRUE; +n caso de errorA devuelve FALSE;
.nicia una sesion >env)a identi(icador de usuario y contraseWa? en el (lu'o F,P especi(icado;
ftp>mdtm
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZmdtm 22 Devuelve la Bltima hora de modi(icaci-n del archivo dado
Kescripci"n
int ftp>mdtm > resource secuenciaZ(tpA string archivoZremoto ?
ftp>mdtm./ revisa la Bltima (echa de modi(icaci-n de un archivoA y la devuelve como una marca de
tiempo @niF; i ocurre un errorA o el archivo no eFisteA se devuelve 21;
Devuelve una marca de tiempo @niF de tener <FitoA o 21 en caso de (allo;
E'emplo !. E'emplo de ftp>mdtm./
<?php
$archi=o > MalEun%archi=o.txtM;
// con#iEurar la conexion basica
$id%con > #tp%connect3$ser=idor%#tp9;
// iniciar sesion con nombre de usuario y contrasenya
$resultado%loEin > #tp%loEin3$id%con, $#tp%nombre%usuario, $#tp%contrasenya9;
// obtener la ultima #echa/hora de modi#icacion
$bu# > #tp%mdtm3$id%con, $archi=o9;
i# 3$bu# !> F69 :
// alEun%archi=o.txt #ue modi#icado por ultima =e0 en@ "arch CG C22< 61@6G@16.
echo "$archi=o #ue modi#icado por &uacute;ltima =e0 en@ " . date3"S d P H@i@s.", $bu#9;
; else :
echo ".o se pudo obtener mdtime";
;
// cerrar la conexion
#tp%close3$id%con9;
?>
Nota- fNo todos los servidores soportan esta caracter)sticaa
Nota- ftp>mdtm./ no (unciona con directorios;
ftp>mBdir
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZm"dir 22 5rea un directorio
Kescripci"n
string ftp>mBdir > int (tpZstreamA string directory ?
i tiene <FitoA devuelve el nom#re del directorio reci<n creado; +n caso de errorA devuelve FALSE;
5rea el directorio especi(icado por el par*metro #6rector?;
ftp>nb>continue
>P&P 8 _^ 8;7;3A P&P 4?
(tpZn#Zcontinue 22 5ontinBa recuperandoDenviando un archivo >modo no2#lo/ueo?
Kescripci"n
int ftp>nb>continue > resource secuenciaZ(tp ?
5ontinBa la recuperaci-nDenv)o de un archivo en modo de no2#lo/ueo;
E'emplo !. E'emplo de ftp>nb>continue./
<?php
// 4niciar la descarEa
$ret > #tp%nb%Eet3$mi%conexion, "prueba", "OE,"E", S*%Z4.,'P9;
8hile 3$ret >> S*%"?'EL,*,9 :
// Rontinuar con la descarEa...
$ret > #tp%nb%continue3$mi%conexion9;
;
i# 3$ret !> S*%S4.4&HEL9 :
echo "Hubo un error en la descarEa del archi=o...";
exit369;
;
?>
Devuelve FTP_FAILED o FTP_FINISHED o FTP_MOREDATA;
ftp>nb>fget
>P&P 8 _^ 8;7;3A P&P 4?
(tpZn#Z(get 22 Recupera un archivo desde el servidor F,P y lo escri#e so#re un archivo a#ierto
>modo no2#lo/ueo?
Kescripci"n
int ftp>nb>fget > resource secuenciaZ(tpA resource gestorA string archivoZremotoA int modo PA int
posZcontinuacionQ ?
ftp>nb>fget./ recupera arch6o_remoto desde el servidor F,PA y lo escri#e so#re el apuntador de
archivo dadoA Eestor; +l mo#o de trans(erencia dado de#e ser FTP_ASCII o FTP_(INARY; La
di(erencia entre <sta (unci-n y ftp>fget./ es /ue <sta (unci-n recupera el archivo asincr-nicamenteA
de modo /ue su programa puede realizar otras operaciones mientras el archivo est* siendo
descargado;
E'emplo !. E'emplo de ftp>nb>fget./
<?php
// abrir un archi=o para lectura
$archi=o > Mindex.phpM;
$da > #open3$archi=o, M8M9;
$id%con > #tp%connect3$ser=idor%#tp9;
$resultado%loEin > #tp%loEin3$id%con, $nombre%usuario%#tp, $contrasenya%#tp9;
// 4niciar la descarEa
$ret > #tp%nb%#Eet3$id%con, $da, $archi=o, S*%Z4.,'P9;
8hile 3$ret >> S*%"?'EL,*,9 :
// HaEa lo Que desee
echo ".";
// Rontinuar la descarEa...
$ret > #tp%nb%continue3$id%con9;
;
i# 3$ret !> S*%S4.4&HEL9 :
echo "Hubo un error en la descarEa del archi=o...";
exit369;
;
// cerrar el apuntador de archi=o
#close3$da9;
?>
Devuelve FTP_FAILEDA FTP_FINISHEDA o FTP_MOREDATA;
$ea tam#i<n ftp>nb>get./A ftp>nb>continue./A ftp>fget./A y ftp>get./;
ftp>nb>fput
>P&P 8 _^ 8;7;3A P&P 4?
(tpZn#Z(put 22 Almacena un archivo desde un archivo a#ierto en el servidor F,P >modo no2#lo/ueo?
Kescripci"n
int ftp>nb>fput > resource secuenciaZ(tpA string archivoZremotoA resource gestorA int modo PA int
posZcomienzoQ ?
ftp>nb>fput./ carga los datos desde el apuntador de archivo Eestor hasta /ue alcanza el (in de
archivo; Los resultados son almacenados en arch6o_remoto en el servidor F,P; +l mo#o de
trans(erencia especi(icado de#e ser FTP_ASCII o FTP_(INARY; La di(erencia entre <sta (unci-n
y ftp>fput./ es /ue <sta (unci-n carga el archivo asincr-nicamenteA de modo /ue su programa puede
realizar otras operaciones mientras /ue el archivo est* siendo cargado;
E'emplo !. E'emplo de ftp>nb>fput./
<?php
$archi=o > Mindex.phpM;
$da > #open3$archi=o, MrM9;
$id%con > #tp%connect3$ser=idor%#tp9;
$resultado%loEin > #tp%loEin3$id%con, $nombre%usuario%#tp, $contrasenya%#tp9;
// 4niciar la carEa
$ret > #tp%nb%#put3$id%con, $arci=o, $da, S*%Z4.,'P9;
8hile 3$ret >> S*%"?'EL,*,9 :
// HaEa lo Que desee
echo ".";
// Rontinuar la carEa...
$ret > #tp%nb%continue3$id%con9;
;
i# 3$ret !> S*%S4.4&HEL9 :
echo "Hubo un error en la carEa del archi=o...";
exit369;
;
#close3$da9;
?>
Devuelve FTP_FAILEDA FTP_FINISHEDA o FTP_MOREDATA;
$ea tam#i<n ftp>nb>put./A ftp>nb>continue./A ftp>put./ y ftp>fput./;
ftp>nb>get
>P&P 8 _^ 8;7;3A P&P 4?
(tpZn#Zget 22 Recupera un archivo desde el servidor F,P y lo escri#e so#re un archivo local >modo
no2#lo/ueo?
Kescripci"n
int ftp>nb>get > resource secuenciaZ(tpA string archivoZlocalA string archivoZremotoA int modo PA int
posZcontinuacionQ ?
ftp>nb>get./ recupera el arch6o_remoto desde el servidor F,PA y lo guarda localmente en
arch6o_local; +l mo#o de trans(erencia especi(icado de#e ser FTP_ASCII o FTP_(INARY;La
di(erencia entre <sta (unci-n y ftp>get./ es /ue <sta (unci-n recupera el archivo asincr-nicamenteA
de modo /ue su programa puede realizar otras operaciones mientras el archivo est* siendo
descargado;
Devuelve FTP_FAILEDA FTP_FINISHEDA o FTP_MOREDATA;
E'emplo !. E'emplo de ftp>nb>get./
<?php
// 4niciar la descarEa
$ret > #tp%nb%Eet3$mi%conexion, "test", "'E,L"E", S*%Z4.,'P9;
8hile 3$ret >> S*%"?'EL,*,9 :

// HaEa lo Que Quiera
echo ".";
// Rontinuar la descarEa...
$ret > #tp%nb%continue3$mi%conexion9;
;
i# 3$ret !> S*%S4.4&HEL9 :
echo "Hubo un error descarEando el archi=o...";
exit369;
;
?>
E'emplo *. Meanudando una descarga con ftp>nb>get./
<?php
// 4niciar
$ret > #tp%nb%Eet3$mi%conexion, "test", "'E,L"E", S*%Z4.,'P,
#ilesi0e3"test"99;
// ?@ $ret > #tp%nb%Eet3$mi%conexion, "test", "'E,L"E",
// S*%Z4.,'P, S*%,+*?'E&+"E9;
8hile 3$ret >> S*%"?'EL,*,9 :

// HaEa lo Que Quiera
echo ".";
// Rontinuar descarEando...
$ret > #tp%nb%continue3$mi%conexion9;
;
i# 3$ret !> S*%S4.4&HEL9 :
echo "Hubo un error descarEando el archi=o...";
exit369;
;
?>
E'emplo 7. Meanudar una descarga en la posici"n !DD sobre un archi5o nue5o con ftp>nb>get
./
<?php
// Leshabilitar ,utoseeI
#tp%set%option3$mi%conexion, S*%,+*?&EE], S,O&E9;
// 4niciar
$ret > #tp%nb%Eet3$mi%conexion, "archi=o%nue=o", "'E,L"E", S*%Z4.,'P, 6229;
8hile 3$ret >> S*%"?'EL,*,9 :
/W ... W/

// Rontinuar descarEa...
$ret > #tp%nb%continue3$mi%conexion9;
;
?>
+n el e'emplo anteriorA "archi=o%nue=o" es 133 #ytes m*s pe/ueWa /ue "'E,L"E" en el
servidor F,PA ya /ue comenzamos la lectura en la posici-n 133; i no hemos desha#ilitado
FTP_AUTOSEE&A los primeros 133 #ytes de "archi=o%nue=o" ser*n <Q0<;
$ea tam#i<n ftp>nb>fget./A ftp>nb>continue./A ftp>get./A y ftp>fget./;
ftp>nb>put
>P&P 8 _^ 8;7;3A P&P 4?
(tpZn#Zput 22 Almacena un archivo en el servidor F,P >modo no2#lo/ueo?
Kescripci"n
int ftp>nb>put > resource secuenciaZ(tpA string archivoZremotoA string archivoZlocalA int modo PA int
posZcomienzoQ ?
ftp>nb>put./ almacena arch6o_local en el servidor F,PA como arch6o_remoto; +l mo#o de
trans(erencia especi(icado de#e ser FTP_ASCII o FTP_(INARY; La di(erencia entre <sta (unci-n
y ftp>put./ es /ue <sta carga el archivo asincr-nicamenteA de modo /ue su programa puede realizar
otras operaciones mientras el archivo est* siendo cargado;
Devuelve FTP_FAILEDA FTP_FINISHEDA o FTP_MOREDATA;
E'emplo !. E'emplo de ftp>nb>put./
<?php
// 4niciar la carEa
$ret > #tp%nb%put3$mi%conexion, "test.remoto", "test.local", S*%Z4.,'P9;
8hile 3$ret >> S*%"?'EL,*,9 :

// HaEa lo Que Quiera
echo ".";
// Rontinuar la carEa...
$ret > #tp%nb%continue3$mi%conexion9;
;
i# 3$ret !> S*%S4.4&HEL9 :
echo "Hubo un error carEando el archi=o...";
exit369;
;
?>
E'emplo *. Meanudando una carga con ftp>nb>put./
<?php
// 4niciar
$ret > #tp%nb%put3$mi%conexion, "test.remoto", "test.local",
S*%Z4.,'P, #tp%si0e3"test.remoto"99;
// ?@ $ret > #tp%nb%put3$mi%conexion, "test.remoto", "test.local",
// S*%Z4.,'P, S*%,+*?'E&+"E9;
8hile 3$ret >> S*%"?'EL,*,9 :

// HaEa lo Que Quiera
echo ".";
// Rontinuar la carEa...
$ret > #tp%nb%continue3$mi%conexion9;
;
i# 3$ret !> S*%S4.4&HEL9 :
echo "Hubo un error carEando el archi=o...";
exit369;
;
?>
$ea tam#i<n ftp>nb>fput./A ftp>nb>continue./A ftp>put./A y ftp>fput./;
ftp>nlist
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZnlist 22 Devuelve una lista de archivos en el directorio dado
Kescripci"n
array ftp>nlist > resource secuenciaZ(tpA string directorio ?
Devuelve una matriz con nom#res de archivo del directorio especi(icado de tener <FitoA o FALSE si
se presenta un (allo;
E'emplo !. E'emplo de ftp>nlist./
<?php
// con#iEurar la conexion basica
$id%con > #tp%connect3$ser=idor%#tp9;
// iniciar sesion con nombre de usuario y contrasenya
$resultado%loEin > #tp%loEin3$id%con, $#tp%nombre%usuario, $#tp%contrasenya9;
// obtener los contenidos del directorio actual
$contenidos > #tp%nlist3$id%con, "."9;
// imprimir $contenidos
=ar%dump3$contenidos9;
?>
+l e'emplo anterior imprimir* una salida similar aC
array3<9 :
)2/>>
strinE3669 "public%html"
)6/>>
strinE3629 "public%#tp"
)C/>>
strinE3<9 "888"
$ea tam#i<n ftp>ra3list./;
ftp>pas5
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZpasv 22 Activa o desactiva el modo pasivo;
Kescripci"n
int ftp>pas5 > int (tpZstreamA int pasv ?
i tiene <FitoA devuelve TRUE; +n caso de errorA devuelve FALSE;
ftp>pas5./ activa el modo pasivo si el par*metro pas es TRUE >desactiva el modo pasivo si pas es
FALSE;? +n modo pasivoA las coneFiones de datos son iniciadas por el clienteA en lugar de ser
iniciadas por el servidor;
ftp>put
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZput 22 5arga un archivo al servidor F,P
Kescripci"n
#ool ftp>put > resource secuenciaZ(tpA string archivoZremotoA string archivoZlocalA int modo PA int
posZinicioQ ?
ftp>put./ almacena arch6o_local en el servidor F,PA como arch6o_remoto; +l mo#o de
trans(erencia especi(icado de#e ser FTP_ASCII o FTP_(INARY;
Nota- +l par*metro pos_6n6c6o (ue agregado en P&P 8;7;3;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo de ftp>put./
<?php
$archi=o > MalEunFarchi=o.txtM;
$archi=o%remoto > Mleame.txtM;
// con#iEurar la conexion basica
$id%con > #tp%connect3$ser=idor%#tp9;
// iniciar sesion con nombre de usuario y contrasenya
$resultado%loEin > #tp%loEin3$id%con, $#tp%nombre%usuario, $#tp%contrasenya9;
// carEar un archi=o
i# 3#tp%put3$id%con, $archi=o%remoto, $archi=o, S*%,&R4499 :
echo "se ha carEado $archi=o satis#actoriamenteVn";
; else :
echo "Hubo un problema durante la trans#erencia de $archi=oVn";
;
// cerrar la conexion
#tp%close3$id%con9;
?>
$ea tam#i<n ftp>fput./A ftp>nb>fput./A y ftp>nb>put./;
ftp>p3d
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZpEd 22 Devuelve el nom#re del directorio actual
Kescripci"n
int ftp>p3d > int (tpZstream ?
Devuelve el directorio actualA o FALSE en caso de error;
ftp>?uit
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZ/uit 22 5ierra una coneFi-n F,P
Kescripci"n
int ftp>?uit > int (tpZstream ?
ftp>connect./ cierra el (lu'o F,P 9tp_stream;
ftp>ra3
>P&P 4?
(tpZraE 22 +nv)a un comando ar#itrario a un servidor F,P
Kescripci"n
array ftp>ra3 > resource secuenciaZ(tpA string comando ?
+nv)a un coman#o ar#itrario al servidor F,P; Devuelve la respuesta del servidor como una matriz
de cadenas; No se realiza procesamiento alguno con la cadena de respuestaA ni determina ftp>ra3./
si el comando tuvo <Fito;
E'emplo !. )so de ftp>ra3./ para iniciar una sesi"n con un ser5idor ;TP manualmente.
<?php
$desc > #tp%connect3"#tp.example.com"9;
/W Esto es iEual a@
#tp%loEin3$desc, "joeblo8", "secret"9; W/
#tp%ra83$desc, "+&E' joeblo8"9;
#tp%ra83$desc, ",&& secret"9;
?>
$ea tam#i<nC ftp>e+ec./
ftp>ra3list
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZraElist 22 Devuelve una lista detallada de archivos en el directorio dado
Kescripci"n
array ftp>ra3list > resource secuenciaZ(tpA string directorio PA #ool recursivoQ ?
ftp>ra3list./ e'ecuta el comando F,P L.,A y devuelve el resultado en (orma de matriz; 5ada
elemento de la matriz corresponde a una l)nea de teFto; La salida no es procesada en (orma alguna;
+l identi(icador de tipo de sistema devuelto por ftp>systype./ puede ser usado para determinar la
(orma en /ue los resultados de#er)an ser interpretados;
+l par*metro opcional recurs6o se encuentra disponi#le a partir de P&P 8;7;3;
E'emplo !. E'emplo de ftp>ra3list./
<?php
// establecer una conexion basica
$id%con > #tp%connect3$ser=idor%#tp9;
// iniciar sesion con nombre de usuario y contrasenya
$resultado%loEin > #tp%loEin3$id%con, $#tp%nombre%usuario, $#tp%contrasenya9;
// obtener la lista de archi=os de /
$bu#er > #tp%ra8list3$id%con, M/M9;
// cerrar la conexion
#tp%close3$id%con9;
// imprimir el contenido del bu#er
=ar%dump3$bu#er9;
?>
+l e'emplo anterior producir* una salida similar aC cd cd
array3<9 :
)2/>>
strinE3G59 "dr8xrFxFFF < =incent =incent 12KG Aul 6C 6C@6G public%#tp"
)6/>>
strinE3GG9 "dr8xrFxFFF 65 =incent =incent 12KG .o= < C6@<6 public%html"
)C/>>
strinE3H<9 "lr8xr8xr8x 6 =incent =incent 66 Aul 6C 6C@6G 888 F> public%html"
;
$ea tam#i<n ftp>nlist./;
ftp>rename
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZrename 22 Renom#ra un archivo en el servidor F,P
Kescripci"n
#ool ftp>rename > resource secuenciaZ(tpA string originalA string destino ?
ftp>rename./ renom#ra el archivo o directorio llamado actualmente or6E6nal al nuevo nom#re
#est6noA usando la secuencia F,P secuenc6a_9tp;
E'emplo !. E'emplo de ftp>rename./
<?php
$archi=o%=iejo > Mun%archi=o.txt.baIM;
$archi=o%nue=o > Mun%archi=o.txtM;
// establecer la conexion basica
$id%con > #tp%connect3$#tp%ser=er9;
// iniciar sesion con nombre de usuario y contrasenya
$resultado%loEin > #tp%loEin3$id%con, $#tp%nombre%usuario, $#tp%contrasenya9;
// tratar de renombrar $archi=o%=iejo a $archi=o%nue=o
i# 3#tp%rename3$id%con, $archi=o%=iejo, $archi=o%nue=o99 :
echo "se ha renombrado $archi=o%=iejo a $archi=o%nue=o con &eacute;xitoVn";
; else :
echo "Hubo un problema al renombrar $archi=o%=iejo a $archi=o%nue=oVn";
;
// cerrar la conexion
#tp%close3$id%con9;
?>
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ftp>rmdir
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZrmdir 22 Borra un directorio
Kescripci"n
int ftp>rmdir > int (tpZstreamA string directory ?
i tiene <FitoA devuelve TRUE; +n caso de errorA devuelve FALSE;
Borra el directorio especi(icado por el par*metro #6rector?;
ftp>set>option
>P&P 8 _^ 8;0;3A P&P 4?
(tpZsetZoption 22 +sta#lecer varias opciones F,P de tiempo de e'ecuci-n
Kescripci"n
#ool ftp>set>option > resource secuenciaZ(tpA int opcionA miFed valor ?
Devuelve TRUE si la opci-n pudo de(inirseX FALSE de lo contrario; @n mensa'e de advertencia ser*
producido si la opc6on no es soportadaA o el alor pasado no coincide con el valor esperado para la
opc6on dada;
+sta (unci-n controla varias opciones de tiempo de e'ecuci-n para la secuencia F,P especi(icada; +l
par*metro alor depende de cu*l par*metro opc6on es seleccionado para ser alterado; +n la
actualidadA las siguientes opciones son soportadasC
Tabla !. Jpciones ;TP de tiempo de e'ecuci"n soportadas
F,PZ,.M+O@,
Z+5
Modi(ica el tiempo m*Fimo de espera en segundos usado para todas las
(unciones de red; alor de#e ser un entero mayor a 3; +l tiempo de espera
predeterminado es 93 segundos;
F,PZA@,O++
S
5uando se encuentra ha#ilitadoA las peticiones G+, o P@, con un par*metro
pos_cont6nuac6on o pos_com6enDo #uscar*n primero la posici-n solicitada
dentro del archivo; +ste par*metro est* ha#ilitado por de(ecto;
E'emplo !. E'emplo de ftp>set>option./
<?php
// Establecer el tiempo de espera de red a 62 seEundos
#tp%set%option3$id%con, S*%*4"E?+*%&ER, 629;
?>
$ea tam#i<n ftp>get>option./;
ftp>site
>P&P 7_^ 7;3;14A P&P 8 A P&P 4?
(tpZsite 22 +nv)a un comando .,+ al servidor
Kescripci"n
#ool ftp>site > resource secuenciaZ(tpA string cmd ?
ftp>site./ env)a el comando especi(icado por cm# al servidor F,P; Los comandos .,+ no se
encuentran estandarizadosA y var)an de un servidor a otro; on Btiles para la gesti-n de cosas como
permisos de archivos y mem#res)as de grupos;
E'emplo !. En5o de un comando ,ITE a un ser5idor ftp
<?php
/W Ronectarse con el ser=idor S* W/
$con > #tp%connect3M#tp.example.comM9;
i# 3!$con9 die3M.o #ue posible conectarse con #tp.example.comM9;
/W 4niciar sesion como "usuario" con la contrasenya "pass" W/
i# 3!#tp%loEin3$con, MusuarioM, MpassM99 die3MError iniciando sesion en #tp.example.comM9;
/W ,plicar el comando "&4*E RH"?L 2G22 /home/usuario/archi=opri=ado"
W al ser=idor #tp W/
i# 3#tp%site3$con, MRH"?L 2G22 /home/usuario/archi=opri=adoM99 :
echo "Romando ejecutado satis#actoriamente.Vn";
; else :
die3MEl comando ha #allado.M9;
;
?>
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
$ea tam#i<nC ftp>ra3./
ftp>si6e
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZsize 22 Devuelve el tamaWo del archivo dado
Kescripci"n
int ftp>si6e > resource secuenciaZ(tpA string archivoZremoto ?
ftp>si6e./ devuelve el tamaWo de un arch6o_remoto en #ytes; i ocurre un errorA o si el archivo
dado no eFistoA o es un directorioA el valor 21 es devuelto; No todos los servidores soportan esta
caracter)stica;
Devuelve el tamaWo del archivo de tener <FitoA o 21 en caso de (allo;
E'emplo !. E'emplo de ftp>si6e./
<?php
$archi=o > Mun%archi=o.txtM;
// establecer la conexion basica
$id%con > #tp%connect3$ser=idor%#tp9;
// iniciar sesion con nombre de usuario y contrasenya
$resultado%loEin > #tp%loEin3$id%con, $#tp%nombre%usuario, $#tp%contrasenya9;
// obtener el tamanyo de $archi=o
$res > #tp%si0e3$id%con, $archi=o9;
i# 3$res !> F69 :
echo "el tama&ntilde;o de $#ile es $res bytes";
; else :
echo "no pudo obtenerse el tama&ntilde;o";
;
// cerrar la conexion
#tp%close3$id%con9;
?>
$ea tam#i<n ftp>ra3list./;
ftp>ssl>connect
>P&P 8 _^ 8;7;3A P&P 4?
(tpZsslZconnect 22 A#re una coneFi-n segura L2F,P
Kescripci"n
resource ftp>ssl>connect > string host PA int puerto PA int tiempoZesperaQQ ?
Devuelve una secuencia L2F,P en caso de <FitoA o FALSE si ocurre un (allo;
ftp>ssl>connect./ a#re una coneFi-n L2F,P con el host especi(icado; +l par*metro puerto
especi(ica un puerto alternativo para realizar la coneFi-n; i es omitido o de(inido como ceroA
entonces ser* usado el puerto F,P predeterminadoA 01;
+l par*metro t6empo_espera especi(ica el tiempo m*Fimo de espera para todas las operaciones de
red su#secuentes; i se omiteA el valor predeterminado es 93 segundos; +l tiempo de espera puede
ser modi(icado y consultado en cual/uier momento con ftp>set>option./ y ftp>get>option./;
E'emplo !. E'emplo de ftp>ssl>connect./
<?php
// establecer una conexion ssl basica
$id%con > #tp%ssl%connect3$ser=idor%#tp9;
// iniciar sesion con nombre de usuario y contrasenya
$resultado%loEin > #tp%loEin3$id%con, $nombre%usuario%#tp, $contrasenya%#tp9;
echo #tp%p8d3$id%con9; // /
// cerrar la conexion ssl
#tp%close3$id%con9;
?>
Por?u% esta funci"n puede no e+istir- ftp>ssl>connect./ se encuentra disponi#le
Bnicamente si el soporte para OpenL est* ha#ilitado en su versi-n de P&P; i no est*
de(inida y ha compilado el soporte para F,PA entonces <sta es la causa; Para LindoEsA
de#e compilar sus propios #inarios de P&P para contar con soporte para esta (unci-n;
$ea tam#i<n ftp>connect./;
ftp>systype
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
(tpZsystype 22 Devuelve el identi(icador de tipo de sistema del servidor F,P remoto;
Kescripci"n
int ftp>systype > int (tpZstream ?
Devuelve el tipo de sistema remotoA o FALSE en caso de error;
I:. ;unciones de Festi"n de ;unciones
Introducci"n
+stas (unciones gestionan varias operaciones involucradas con el tra#a'o con (unciones;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
callZuserZ(uncZarray 22 5all a user (unction given Eith an array o( parameters
callZuserZ(unc 22 5all a user (unction given #y the (irst parameter
createZ(unction 22 5reate an anonymous >lam#da2style? (unction
(uncZgetZarg 22 Devuelve un elemento de la lista de argumentos;
(uncZgetZargs 22 Devuelve un array /ue contiene la lista de argumentos de una (unci-n;
(uncZnumZargs 22 Devuelve el nBmero de argumentos pasados a la (unci-n;
(unctionZeFists 22 Devuelve TRUE si la (unci-n dada ha sido de(inida
getZde(inedZ(unctions 22 Returns an array o( all de(ined (unctions
registerZshutdoEnZ(unction 22 Registra una (unci-n para su e'ecuci-n en el cierre;
registerZtic"Z(unction 22 Register a (unction (or eFecution on each tic"
unregisterZtic"Z(unction 22 De2register a (unction (or eFecution on each tic"
call>user>func>array
>P&P 8 _^ 8;3;8A P&P 4?
callZuserZ(uncZarray 22 5all a user (unction given Eith an array o( parameters
Kescription
miFed call>user>func>array > call#ac" (unctionA array paramZarr ?
5all a user de(ined (unction given #y 9unct6onA Eith the parameters in param_arr; For eFampleC
E'emplo !. call>user>func>array./ e+ample
<?php
#unction debuE3$=ar, $=al9
:
echo "WWWLEZ+--4.-Vn(,'4,ZOE@ $=arVn(,O+E@";
i# 3is%array3$=al9 TT is%object3$=al9 TT is%resource3$=al99 :
print%r3$=al9;
; else :
echo "Vn$=alVn";
;
echo "WWWVn";
;
$c > mysQl%connect39;
$host > $%&E'(E')"&E'(E'%.,"E"/;
call%user%#unc%array3MdebuEM, array3"host", $host99;
call%user%#unc%array3MdebuEM, array3"c", $c99;
call%user%#unc%array3MdebuEM, array3"%?&*", $%?&*99;
?>
ee also call>user>func./A and in(ormation a#out the call#ac" type
call>user>func
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
callZuserZ(unc 22 5all a user (unction given #y the (irst parameter
Kescription
miFed call>user>func > string (unctionZname PA miFed parameter PA miFed ;;;QQ ?
5all a user de(ined (unction given #y the 9unct6on_name parameter; ,a"e the (olloEingC
#unction barber 3$type9 :
print "Pou 8anted a $type haircut, no problem";
;
call%user%#unc 3MbarberM, "mushroom"9;
call%user%#unc 3MbarberM, "sha=e"9;
create>function
>P&P 8 _^ 8;3;1A P&P 4?
createZ(unction 22 5reate an anonymous >lam#da2style? (unction
Kescription
string create>function > string argsA string code ?
5reates an anonymous (unction (rom the parameters passedA and returns a uni/ue name (or it;
@sually the arEs Eill #e passed as a single /uote delimited stringA and this is also recommended (or
the co#e; ,he reason (or using single /uoted stringsA is to protect the varia#le names (rom parsingA
otherEiseA i( you use dou#le /uotes there Eill #e a need to escape the varia#le namesA e;g; Q'aar;
%ou can use this (unctionA to >(or eFample? create a (unction (rom in(ormation gathered at run timeC
E'emplo !. Creating an anonymous function 3ith create>function./
<?php
$ne8#unc > create%#unction3M$a,$bM, Mreturn "ln3$a9 [ ln3$b9 > " . loE3$a W $b9;M9;
echo ".e8 anonymous #unction@ $ne8#uncVn";
echo $ne8#unc3C, "%E9 . "Vn";
// outputs
// .e8 anonymous #unction@ lambda%6
// ln3C9 [ ln3C.H6JCJ6JCJ15K9 > 6.GK<61H6J255KK
?>
OrA perhaps to have general handler (unction that can apply a set o( operations to a list o(
parametersC
E'emplo *. MaBing a general processing function 3ith create>function./
<?php
#unction process3$=ar6, $=arC, $#arr9
:
#or 3$#>2; $# < count3$#arr9; $#[[9 :
echo $#arr)$#/3$=ar6, $=arC9 . "Vn";
;
;
// create a bunch o# math #unctions
$#6 > Mi# 3$a >>29 :return "bWacC > ".$bWsQrt3$a9;; else :return #alse;;M;
$#C > "return V"min3bcC[a, acC,b9 > V".min3V$aWV$a[V$b,V$bWV$b[V$a9;";
$#< > Mi# 3$a > 2 && $b !> 29 :return "ln3a9/b > ".loE3$a9/$b; ; else : return #alse; ;M;
$#arr > array3
create%#unction3M$x,$yM, Mreturn "some triE@ ".3sin3$x9 [ $xWcos3$y99;M9,
create%#unction3M$x,$yM, Mreturn "a hypotenuse@ ".sQrt3$xW$x [ $yW$y9;M9,
create%#unction3M$a,$bM, $#69,
create%#unction3M$a,$bM, $#C9,
create%#unction3M$a,$bM, $#<9
9;
echo "Vn+sinE the #irst array o# anonymous #unctionsVn";
echo "parameters@ C.<115, "%4Vn";
process3C.<115, "%4, $#arr9;
// no8 maIe a bunch o# strinE processinE #unctions
$Earr > array3
create%#unction3M$b,$aM, Mi# 3strncmp3$a, $b, <9 >> 29 return "WW V"$aV" M.
Mand V"$bV"VnWW OooI the same to me! 3looIinE at the #irst < chars9";M9,
create%#unction3M$a,$bM, M; return "R'Rs@ " . crc<C3$a9 . " , ".crc<C3b9;M9,
create%#unction3M$a,$bM, M; return "similar3a,b9 > " . similar%text3$a, $b, &$p9 . "3$p\9";M9
9;
echo "Vn+sinE the second array o# anonymous #unctionsVn";
process3"*8as brillinE and the slithy to=es", "*8as the niEht", $Earr9;
?>
and Ehen you run the code a#oveA the output Eill #eC
+sinE the #irst array o# anonymous #unctions
parameters@ C.<115, "%4
some triE@ F6.GCK6HC525HHKK
a hypotenuse@ <.K6KKJ5CJH6266
bWacC > 1.J62<<6<<615C5
min3bcC[a, acC,b9 > J.G<JCHCK2<5JKJ
ln3a/b9 > 2.CH6CCCKKC6C5K1
+sinE the second array o# anonymous #unctions
WW "*8as the niEht" and "*8as brillinE and the slithy to=es"
WW OooI the same to me! 3looIinE at the #irst < chars9
R'Rs@ FHC5<J6CJC , 6K2J<<JGJ6
similar3a,b9 > 66315.J<<<<<<<<<<<\9
But perhaps the most common use (or o( lam#da2style >anonymous? (unctions is to create call#ac"
(unctionsA (or eFample Ehen using array>3alB./ or usort./
E'emplo 7. )sing anonymous functions as callbacB functions
<?php
$a= > array3"the ", "a ", "that ", "this "9;
array%8alI3$a=, create%#unction3M&$=,$IM, M$= > $= . "manEo";M99;
print%r3$a=9;
?>
outputsC
,rray
3
)2/ >> the manEo
)6/ >> a manEo
)C/ >> that manEo
)</ >> this manEo
9
an array o( strings ordered (rom shorter to longer
<?php
$s= > array3"small", "larEer", "a biE strinE", "it is a strinE thinE"9;
print%r3$s=9;
?>
outputsC
,rray
3
)2/ >> small
)6/ >> larEer
)C/ >> a biE strinE
)</ >> it is a strinE thinE
9
sort it (rom longer to shorter
<?php
usort3$s=, create%#unction3M$a,$bM,Mreturn strlen3$b9 F strlen3$a9;M99;
print%r3$s=9;
?>
outputsC
,rray
3
)2/ >> it is a strinE thinE
)6/ >> a biE strinE
)C/ >> larEer
)</ >> small
9
func>get>arg
>P&P 8 A P&P 4?
(uncZgetZarg 22 Devuelve un elemento de la lista de argumentos;
Kescripci"n
int func>get>arg > int argZnum ?
Devuelve el argumento /ue est* en la posici-n arE_num en la lista de argumentos de una (unci-n
de(inida por el usuario; Los argumentos de la (unci-n se cuentan comenzando por la posici-n cero;
func>get>arg./ generar* un aviso si se llama desde (uera de la de(inici-n de la (unci-n;
i arE_num es mayor /ue el nBmero de argumentos pasados realmenteA se generar* un aviso y
func>get>arg./ devolver* FALSE;
<?php
#unction #oo39 :
$numarEs > #unc%num%arEs39;
echo ".umber o# arEuments@ $numarEs<br>Vn";
i# 3 $numarEs >> C 9 :
echo "&econd arEument is@ " . #unc%Eet%arE3 6 9 . "<br>Vn";
;
;
#oo3 6, C, < 9;
?>
func>get>arg./ puede utilizarse con'untamente con func>num>args./ y func>get>args./ para
permitir a las (unciones de(inidas por el usuario /ue acepten listas de argumentos de longitud
varia#le;
Nota- +sta (unci-n (ue aWadida en P&P 8;
func>get>args
>P&P 8 A P&P 4?
(uncZgetZargs 22 Devuelve un array /ue contiene la lista de argumentos de una (unci-n;
Kescripci"n
int func>get>args > void ?
Devuelve un array en el /ue cada elemento es el miem#ro correspondiente de la lista de argumentos
de la (unci-n de(inida por el usuario actual; func>get>args./ generar* un aviso si es llamada desde
(uera de la de(inici-n de la (unci-n;
<?php
#unction #oo39 :
$numarEs > #unc%num%arEs39;
echo ".umber o# arEuments@ $numarEs<br>Vn";
i# 3 $numarEs >> C 9 :
echo "&econd arEument is@ " . #unc%Eet%arE3 6 9 . "<br>Vn";
;
$arE%list > #unc%Eet%arEs39;
#or 3 $i > 2; $i < $numarEs; $i[[ 9 :
echo ",rEument $i is@ " . $arE%list)$i/ . "<br>Vn";
;
;
#oo3 6, C, < 9;
?>
func>get>args./ puede utilizarse con'untamente con func>num>args./ y func>get>arg./ para
permitir a las (unciones de(inidas por el usuario /ue acepten listas de argumentos de longitud
varia#le;
Nota- +sta (unci-n (ue aWadida en P&P 8;
func>num>args
>P&P 8 A P&P 4?
(uncZnumZargs 22 Devuelve el nBmero de argumentos pasados a la (unci-n;
Kescripci"n
int func>num>args > void ?
Devuelve el nBmero de argumentos pasados a la (unci-n actual de(inida por el usuario;
func>num>args./ generar* un aviso si es llamada desde (uera de la de(inici-n de la (unci-n;
<?php
#unction #oo39 :
$numarEs > #unc%num%arEs39;
echo ".umber o# arEuments@ $numarEsVn";
;
#oo3 6, C, < 9; // rints M.umber o# arEuments@ <M
?>
func>num>args./ puede utilizarse con'untamente con func>get>arg./ y func>get>args./ para
permitir a las (unciones de(inidas por el usuario /ue acepten listas de argumentos de longitud
varia#le;
Nota- +sta (unci-n (ue aWadida en P&P 8;
function>e+ists
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
(unctionZeFists 22 Devuelve TRUE si la (unci-n dada ha sido de(inida
Kescripci"n
int function>e+ists > string (unctionZname ?
5onsulta la lista de (unciones de(inidas #uscando 9unct6on_name >nom#re de (unci-n?; Devuelve
TRUE si encuentra el nom#re de (unci-n dadoA FALSE en otro caso;
get>defined>functions
>P&P 8 _^ 8;3;8A P&P 4?
getZde(inedZ(unctions 22 Returns an array o( all de(ined (unctions
Kescription
array get>defined>functions > void ?
,his (unction returns an multidimensional array containing a list o( all de(ined (unctionsA #oth #uilt2
in >internal? and user2de(ined; ,he internal (unctions Eill #e accessi#le via 'arr)*6nternal*.A and the
user de(ined ones using 'arr)*user*. >see eFample #eloE?;
<?php
#unction myro83$id, $data9
:
return "<tr><th>$id</th><td>$data</td></tr>Vn";
;
$arr > Eet%de#ined%#unctions39;
print%r3$arr9;
?>
Lill output something along the lines o(C
,rray
3
)internal/ >> ,rray
3
)2/ >> 0end%=ersion
)6/ >> #unc%num%arEs
)C/ >> #unc%Eet%arE
)</ >> #unc%Eet%arEs
)1/ >> strlen
)5/ >> strcmp
)G/ >> strncmp
...
)H52/ >> bcscale
)H56/ >> bccomp
9
)user/ >> ,rray
3
)2/ >> myro8
9
9
ee also function>e+ists./A get>defined>5ars./ and get>defined>constants./;
register>shutdo3n>function
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
registerZshutdoEnZ(unction 22 Registra una (unci-n para su e'ecuci-n en el cierre;
Kescripci"n
int register>shutdo3n>function > string (unc ?
Registra la (unci-n nom#rada en 9unc para /ue se e'ecute cuando el script procese su (inalizaci-n;
AvisoC
De#ido a /ue no se permite ningBn tipo de salida en el navegador en esta (unci-nA no ser* capaz de
depurarla utilizando sentencias como print o echo;
register>ticB>function
>P&P 8 _^ 8;3;7A P&P 4?
registerZtic"Z(unction 22 Register a (unction (or eFecution on each tic"
Kescription
void register>ticB>function > call#ac" (unction PA miFed arg PA miFed ;;;QQ ?
Registers the (unction named #y 9unc to #e eFecuted Ehen a tic" is called; AlsoA you may pass an
array consisting o( an o#'ect and a method as the 9unc;
E'emplo !. register>ticB>function./ e+ample
<?php
// usinE a #unction as the callbacI
reEister%ticI%#unction3Mmy%#unctionM, true9;
// usinE an objectF>method
$object > ne8 my%class39;
reEister%ticI%#unction3array3&$object, Mmy%methodM9, true9;
?>
ee also declare./ and unregister>ticB>function./;
unregister>ticB>function
>P&P 8 _^ 8;3;7A P&P 4?
unregisterZtic"Z(unction 22 De2register a (unction (or eFecution on each tic"
Kescription
void unregister>ticB>function > string (unctionZname ?
De2registers the (unction named #y 9unct6on_name so it is no longer eFecuted Ehen a tic" is called;
I:I. Fette+t
Introducci"n
Las (unciones getteFt implementan una inter(az de programaci-n de oporte de Lengua'e Nativo
>NL por sus siglas en .ngl<s? /ue puede ser usada para internacionalizar sus aplicaciones P&P; Por
(avor re(i<rase a la documentaci-n de getteFt en su sistema para una eFplicaci-n detallada de <stas
(uncionesA o consulte los documentos en httpCDDEEE;gnu;orgDso(tEareDgetteFtDmanualDgetteFt;html;
Me?uirimientos
Para usar <stas (uncionesA de#e descargar e instalar el pa/uete GN@ getteFt desde
httpCDDEEE;gnu;orgDso(tEareDgetteFtDgetteFt;html;
Instalaci"n
Para incluir soporte para GN@ getteFt en su instalaci-n de P&PA de#e agregar la opci-n ==76th=
Eette8t):D0R. donde D.R es el directorio de instalaci-n de getteFtA por de(ecto /usr/local;
Nota para )suarios de 2in7*- Para ha#ilitar este m-dulo en un entorno LindoEsA
de#e copiar Enu%Eettext.dll desde el directorio DLL del pa/uete #inario de
P&PDLin70 a la carpeta %,+M70 de su m*/uina EindoEs; >+'C
R@V74..*V&P&*E"<C o R@V74.L?7&V&P&*E"<C?; A partir de P&P 8;0;7 el
nom#re cam#i- a libintlF6.dllA esto re/uiere /ue icon=.dll tam#i<n sea
copiado; libintlF6.dll no se necesita a partir de P&P 8;7;MA icon=.dll no se
necesita a partir de P&P 4;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
#indZteFtdomainZcodeset 22 +speci(icar la codi(icaci-n de caracteres con la /ue ser*n devueltos los
mensa'es del cat*logo DOM.N.O
#indteFtdomain 22 +sta#lece la ruta para un dominio
dcgetteFt 22 o#rescri#e el dominio para una #Bs/ueda Bnica
dcngetteFt 22 $ersi-n plural de dcgetteFt
dgetteFt 22 Omite el dominio actual
dngetteFt 22 $ersi-n plural de dgetteFt
getteFt 22 Realiza una #us/ueda del mensa'e en el dominio actual
ngetteFt 22 $ersi-n plural de getteFt
teFtdomain 22 +sta#lece el dominio actual
bind>te+tdomain>codeset
>P&P 8 _^ 8;0;3A P&P 4?
#indZteFtdomainZcodeset 22 +speci(icar la codi(icaci-n de caracteres con la /ue ser*n devueltos los
mensa'es del cat*logo DOM.N.O
Kescripci"n
string bind>te+tdomain>codeset > string dominioA string 'uegoZcaracteres ?
5on bind>te+tdomain>codeset./A puede de(inir la codi(icaci-n de los mensa'es provenientes de
#om6n6oA devueltos por gette+t./ y (unciones similares;
bindte+tdomain
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
#indteFtdomain 22 +sta#lece la ruta para un dominio
Kescripci"n
string bindte+tdomain > string domainA string directory ?
La (unci-n bindte+tdomain./ esta#lece la ruta para el dominio;
dcgette+t
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
dcgetteFt 22 o#rescri#e el dominio para una #Bs/ueda Bnica
Kescripci"n
string dcgette+t > string dominioA string mensa'eA int categoria ?
+sta (unci-n le permite so#rescri#ir el dominio actual para una #Bs/ueda Bnica de mensa'e;
,am#i<n le permite especi(icar una cateEor6a;
$ea tam#i<n gette+t./;
dcngette+t
>P&P 8 _^ 8;0;3A P&P 4?
dcngetteFt 22 $ersi-n plural de dcgetteFt
Kescripci"n
string dcngette+t > string dominioA string idZmensa'e1A string idZmensa'e0A int nA int categoria ?
+sta (unci-n le permite so#rescri#ir el dominio actual para una consulta Bnica de mensa'e en plural;
,am#i<n le permite especi(icar una cateEor6a;
$ea tam#i<n ngette+t./;
dgette+t
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
dgetteFt 22 Omite el dominio actual
Kescripci"n
string dgette+t > string domainA string message ?
La (unci-n dgette+t./ permite omitir el dominio actual para una Bnica #us/ueda;
dngette+t
>P&P 8 _^ 8;0;3A P&P 4?
dngetteFt 22 $ersi-n plural de dgetteFt
Kescripci"n
string dngette+t > string dominioA string idZmensa'e1A string idZmensa'e0A int n ?
La (unci-n dngette+t./ le permite so#rescri#ir el dominio actual para una consulta Bnica de mensa'e
en plural;
$ea tam#i<n ngette+t./;
gette+t
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
getteFt 22 Realiza una #us/ueda del mensa'e en el dominio actual
Kescripci"n
string gette+t > string message ?
+sta (unci-n devuelve la traducci-n de la cadena si encuentra una en la ta#la de traduccionesA o el
mensa'e enviado si no se encuentra ninguna; Puede usar un car*cter de su#rayado como un alias
para esta (unci-n;
E'emplo !. gette+t./(checB
<?php
// Establece el idioma en alemen
puten= 3"O,.->de"9;
// Especi#ica la locali0aciin de las tablas de traducciin
bindtextdomain 3"myH,pp", "./locale"9;
// EliEe un dominio
textdomain 3"myH,pp"9;
// 4mprime un mensaje de prueba
print 3Eettext 3"7elcome to "y H ,pplication"99;
?>
ngette+t
>P&P 8 _^ 8;0;3A P&P 4?
ngetteFt 22 $ersi-n plural de getteFt
Kescripci"n
string ngette+t > string idZmensa'e1A string idZmensa'e0A int n ?
ngette+t./ devuelve la (orma plural correcta del mensa'e identi(icado por 6#_mensaUe1 e
6#_mensaUe2 para el conteo n; Algunos idiomas tienen m*s de una (orma para mensa'es plurales
dependiendo del conteo;
E'emplo !. E'emplo de ngette+t./
<?php
setlocale3OR%,OO, Mcs%RYM9;
print#3nEettext3"\d =entana", "\d =entanas", 69, 69; // 6 oIno
print#3nEettext3"\d =entana", "\d =entanas", C9, C9; // C oIna
print#3nEettext3"\d =entana", "\d =entanas", 59, 59; // 5 oIen
?>
te+tdomain
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
teFtdomain 22 +sta#lece el dominio actual
Kescripci"n
int te+tdomain > Pstring li#raryQ ?
+sta (unci-n esta#lece el dominio en el /ue se realizar*n las #us/uedas provocadas por las llamadas
a gette+t./A normalmente el nom#re dado a la aplicaci-n; e devuelve el dominio anterior; Puede
llamar a la (unci-n sin par*metros para o#tener el dominio actual sin necesidad de cam#iarlo;
I:II. FMP ;unctions
Introducci"n
,hese (unctions alloE you to Eor" Eith ar#itrary2length integers using the GN@ MP li#rary;
,hese (unctions have #een added in P&P 8;3;8;
Nota- Most GMP (unctions accept GMP num#er argumentsA de(ined as resource #eloE;
&oEeverA most o( these (unctions Eill also accept numeric and string argumentsA given
that it is possi#le to convert the latter to a num#er; AlsoA i( there is a (aster (unction that
can operate on integer argumentsA it Eould #e used instead o( the sloEer (unction Ehen
the supplied arguments are integers; ,his is done transparentlyA so the #ottom line is that
you can use integers in every (unction that eFpects GMP num#er; ee also the gmp>init
./ (unction;
A5iso
.( you Eant to eFplicitly speci(y a large integerA speci(y it as a string; .( you donHt do thatA P&P Eill
interpret the integer2literal (irstA possi#ly resulting in loss o( precisionA even #e(ore -M+ comes
into play;
Nota- ,his eFtension is availa#le on LindoEs plat(orms since P&P 4;1;3;
Me?uirimientos
%ou can doEnload the GMP li#rary (rom httpCDDEEE;sEoF;comDgmpD; ,his site also has the GMP
manual availa#le;
%ou Eill need GMP version 0 or #etter to use these (unctions; ome (unctions may re/uire more
recent version o( the GMP li#rary;
Instalaci"n
.n order to have these (unctions availa#leA you must compile P&P Eith GMP support #y using the ==
76th=Emp option;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
#MP_ROUND_/ERO >integer?
#MP_ROUND_PLUSINF >integer?
#MP_ROUND_MINUSINF >integer?
E'emplos
E'emplo !. ;actorial function using FMP
<?php
#unction #act3$x9
:
$return > 6;
#or 3$i>C; $i < $x; $i[[9 :
$return > Emp%mul3$return, $i9;
;
return $return;
;
echo Emp%str=al3#act3622299 . "Vn";
?>
,his Eill calculate (actorial o( 1333 >pretty #ig num#er? very (ast;
Cer tambi%n
More mathematical (unctions can #e (ound in the sections B5Math Ar#itrary Precision Mathematics
Functions and Mathematical Functions;
Tabla de contenidos
gmpZa#s 22 A#solute value
gmpZadd 22 Add num#ers
gmpZand 22 Logical AND
gmpZclr#it 22 5lear #it
gmpZcmp 22 5ompare num#ers
gmpZcom 22 5alculates oneHs complement
gmpZdivZ/ 22 Divide num#ers
gmpZdivZ/r 22 Divide num#ers and get /uotient and remainder
gmpZdivZr 22 Remainder o( the division o( num#ers
gmpZdiv 22 Divide num#ers
gmpZdiveFact 22 +Fact division o( num#ers
gmpZ(act 22 Factorial
gmpZgcd 22 5alculate G5D
gmpZgcdeFt 22 5alculate G5D and multipliers
gmpZhamdist 22 &amming distance
gmpZinit 22 5reate GMP num#er
gmpZintval 22 5onvert GMP num#er to integer
gmpZinvert 22 .nverse #y modulo
gmpZ'aco#i 22 !aco#i sym#ol
gmpZlegendre 22 Legendre sym#ol
gmpZmod 22 Modulo operation
gmpZmul 22 Multiply num#ers
gmpZneg 22 Negate num#er
gmpZor 22 Logical OR
gmpZper(ectZs/uare 22 Per(ect s/uare chec"
gmpZpopcount 22 Population count
gmpZpoE 22 Raise num#er into poEer
gmpZpoEm 22 Raise num#er into poEer Eith modulo
gmpZpro#Zprime 22 5hec" i( num#er is =pro#a#ly prime=
gmpZrandom 22 Random num#er
gmpZscan3 22 can (or 3
gmpZscan1 22 can (or 1
gmpZset#it 22 et #it
gmpZsign 22 ign o( num#er
gmpZs/rt 22 /uare root
gmpZs/rtrem 22 /uare root Eith remainder
gmpZstrval 22 5onvert GMP num#er to string
gmpZsu# 22 u#tract num#ers
gmpZFor 22 Logical JOR
gmp>abs
>P&P 8 _^ 8;3;8A P&P 4?
gmpZa#s 22 A#solute value
Kescription
resource gmp>abs > resource a ?
Returns a#solute value o( a;
gmp>add
>P&P 8 _^ 8;3;8A P&P 4?
gmpZadd 22 Add num#ers
Kescription
resource gmp>add > resource aA resource # ?
Add tEo GMP num#ers; ,he result Eill #e GMP num#er representing the sum o( the arguments;
gmp>and
>P&P 8 _^ 8;3;8A P&P 4?
gmpZand 22 Logical AND
Kescription
resource gmp>and > resource aA resource # ?
5alculates logical AND o( tEo GMP num#ers;
gmp>clrbit
>P&P 8 _^ 8;3;8A P&P 4?
gmpZclr#it 22 5lear #it
Kescription
resource gmp>clrbit > resource iaA int indeF ?
5lears >sets to 3? #it 6n#e8 in a;
gmp>cmp
>P&P 8 _^ 8;3;8A P&P 4?
gmpZcmp 22 5ompare num#ers
Kescription
int gmp>cmp > resource aA resource # ?
Returns positive value i( a & 1A zero i( a : 1 and negative value i( a $ 1;
gmp>com
>P&P 8 _^ 8;3;8A P&P 4?
gmpZcom 22 5alculates oneHs complement
Kescription
resource gmp>com > resource a ?
Returns the oneHs complement o( a;
E'emplo !. gmp>com./ e+ample
<?php
$com > Emp%com3"6C<1"9;
echo Emp%str=al3$com9 . "Vn";
?>
,he printout o( the a#ove program Eill #eC
F6C<5
gmp>di5>?
>P&P 8 _^ 8;3;8A P&P 4?
gmpZdivZ/ 22 Divide num#ers
Kescription
resource gmp>di5>? > resource aA resource # PA int roundQ ?
Divides a #y 1 and returns the integer result; ,he result rounding is de(ined #y the roun#A Ehich can
have the (olloEing valuesC
-M+_ROUND_^EROC ,he result is truncated toEards 3;
-M+_ROUND_+4US0N3C ,he result is rounded toEards Y6n96n6t?;
-M+_ROUND_M0NUS0N3C ,he result is rounded toEards =6n96n6t?;
,his (unction can also #e called as gmp>di5./;
ee also gmp>di5>r./A gmp>di5>?r./
gmp>di5>?r
>P&P 8 _^ 8;3;8A P&P 4?
gmpZdivZ/r 22 Divide num#ers and get /uotient and remainder
Kescription
array gmp>di5>?r > resource nA resource d PA int roundQ ?
,he (unction divides n #y # and returns arrayA Eith the (irst element #eing )n/#. >the integer result o(
the division? and the second #eing Ln = )n/#. / #M >the remainder o( the division?;
ee the gmp>di5>?./ (unction (or description o( the roun# argument;
E'emplo !. Ki5ision of FMP numbers
<?php
$a > Emp%init 3"2x16GJC6HK#b#5"9;
$res > Emp%di=%Qr 3$a, "2xLESEH5"9;
print#3"'esult is@ Q F \s, r F \s",
Emp%str=al 3$res)2/9, Emp%str=al 3$res)6/99;
?>
ee also gmp>di5>?./A gmp>di5>r./;
gmp>di5>r
>P&P 8 _^ 8;3;8A P&P 4?
gmpZdivZr 22 Remainder o( the division o( num#ers
Kescription
resource gmp>di5>r > resource nA resource d PA int roundQ ?
5alculates remainder o( the integer division o( n #y #; ,he remainder has the sign o( the n argumentA
i( not zero;
ee the gmp>di5>?./ (unction (or description o( the roun# argument;
ee also gmp>di5>?./A gmp>di5>?r./
gmp>di5
>P&P 8 _^ 8;3;8A P&P 4?
gmpZdiv 22 Divide num#ers
Kescription
resource gmp>di5 > resource aA resource # ?
,his (unction is an alias to gmp>di5>?./;
gmp>di5e+act
>P&P 8 _^ 8;3;8A P&P 4?
gmpZdiveFact 22 +Fact division o( num#ers
Kescription
resource gmp>di5e+act > resource nA resource d ?
Divides n #y #A using (ast =eFact division= algorithm; ,his (unction produces correct results only
Ehen it is "noEn in advance that # divides n;
gmp>fact
>P&P 8 _^ 8;3;8A P&P 4?
gmpZ(act 22 Factorial
Kescription
resource gmp>fact > int a ?
5alculates (actorial >a_? o( a;
gmp>gcd
>P&P 8 _^ 8;3;8A P&P 4?
gmpZgcd 22 5alculate G5D
Kescription
resource gmp>gcd > resource aA resource # ?
5alculate greatest common divisor o( a and 1; ,he result is alEays positive even i( either o( or #oth
input operands are negative;
gmp>gcde+t
>P&P 8 _^ 8;3;8A P&P 4?
gmpZgcdeFt 22 5alculate G5D and multipliers
Kescription
array gmp>gcde+t > resource aA resource # ?
5alculates gA sA and tA such that a/s Y 1/t : E : Ec#LaC1MA Ehere gcd is gretest common divisor;
Returns array Eith respective elements gA s and t;
gmp>hamdist
>P&P 8 _^ 8;3;8A P&P 4?
gmpZhamdist 22 &amming distance
Kescription
int gmp>hamdist > resource aA resource # ?
Returns the hamming distance #etEeen a and a; Both operands should #e non2negative;
gmp>init
>P&P 8 _^ 8;3;8A P&P 4?
gmpZinit 22 5reate GMP num#er
Kescription
resource gmp>init > miFed num#er ?
5reates a GMP num#er (rom integer or string; tring representation can #e decimal or heFadecimal;
.n the latter caseA the string should start Eith 08;
E'emplo !. Creating FMP number
<?php
$a > Emp%init 36C<15G9;
$b > Emp%init 3"2xSSSSLEZ,RLSELSHC22"9;
?>
Nota- .t is not necessary to call this (unction i( you Eant to use integer or string in place
o( GMP num#er in GMP (unctionsA li"e gmp>add./; Function arguments are
automatically converted to GMP num#ersA i( such conversion is possi#le and neededA
using the same rules as gmp>init./;
gmp>int5al
>P&P 8 _^ 8;3;8A P&P 4?
gmpZintval 22 5onvert GMP num#er to integer
Kescription
int gmp>int5al > resource gmpnum#er ?
,his (unction alloEs to convert GMP num#er to integer;
A5iso
,his (unction returns use(ul result only i( the num#er actually (its the P&P integer >i;e;A signed
long type?; .( you Eant 'ust to print the GMP num#erA use gmp>str5al./;
gmp>in5ert
>P&P 8 _^ 8;3;8A P&P 4?
gmpZinvert 22 .nverse #y modulo
Kescription
resource gmp>in5ert > resource aA resource # ?
5omputes the inverse o( a modulo 1; Returns FALSE i( an inverse does not eFist;
gmp>'acobi
>P&P 8 _^ 8;3;8A P&P 4?
gmpZ'aco#i 22 !aco#i sym#ol
Kescription
int gmp>'acobi > resource aA resource p ?
5omputes !aco#i sym#ol o( a and p; p should #e odd and must #e positive;
gmp>legendre
>P&P 8 _^ 8;3;8A P&P 4?
gmpZlegendre 22 Legendre sym#ol
Kescription
int gmp>legendre > resource aA resource p ?
5ompute the Legendre sym#ol o( a and p; p should #e odd and must #e positive;
gmp>mod
>P&P 8 _^ 8;3;8A P&P 4?
gmpZmod 22 Modulo operation
Kescription
resource gmp>mod > resource nA resource d ?
5alculates n modulo #; ,he result is alEays non2negativeA the sign o( # is ignored;
gmp>mul
>P&P 8 _^ 8;3;8A P&P 4?
gmpZmul 22 Multiply num#ers
Kescription
resource gmp>mul > resource aA resource # ?
Multiplies a #y 1 and returns the result;
gmp>neg
>P&P 8 _^ 8;3;8A P&P 4?
gmpZneg 22 Negate num#er
Kescription
resource gmp>neg > resource a ?
Returns 2a;
gmp>or
>P&P 8 _^ 8;3;8A P&P 4?
gmpZor 22 Logical OR
Kescription
resource gmp>or > resource aA resource # ?
5alculates logical inclusive OR o( tEo GMP num#ers;
gmp>perfect>s?uare
>P&P 8 _^ 8;3;8A P&P 4?
gmpZper(ectZs/uare 22 Per(ect s/uare chec"
Kescription
#ool gmp>perfect>s?uare > resource a ?
Returns TRUE i( a is a pre(ect s/uareA FALSE otherEise;
ee alsoC gmp>s?rt./A gmp>s?rtrm./;
gmp>popcount
>P&P 8 _^ 8;3;8A P&P 4?
gmpZpopcount 22 Population count
Kescription
int gmp>popcount > resource a ?
Return the population count o( a;
gmp>po3
>P&P 8 _^ 8;3;8A P&P 4?
gmpZpoE 22 Raise num#er into poEer
Kescription
resource gmp>po3 > resource #aseA int eFp ?
Raise 1ase into poEer e8p; ,he case o( 3k3 yields 1; e8p cannot #e negative;
gmp>po3m
>P&P 8 _^ 8;3;8A P&P 4?
gmpZpoEm 22 Raise num#er into poEer Eith modulo
Kescription
resource gmp>po3m > resource #aseA resource eFpA resource mod ?
5alculate >1ase raised into poEer e8p? modulo mo#; .( e8p is negativeA result is unde(ined;
gmp>prob>prime
>P&P 8 _^ 8;3;8A P&P 4?
gmpZpro#Zprime 22 5hec" i( num#er is =pro#a#ly prime=
Kescription
int gmp>prob>prime > resource a PA int repsQ ?
.( this (unction returns 3A a is de(initely not prime; .( it returns 1A then a is =pro#a#ly= prime; .( it
returns 0A then a is surely prime; Reasona#le values o( reps vary (rom 4 to 13 >de(ault #eing 13?X a
higher value loEers the pro#a#ility (or a non2prime to pass as a =pro#a#le= prime;
,he (unction uses Miller2Ra#inHs pro#a#ilistic test;
gmp>random
>P&P 8 _^ 8;3;8A P&P 4?
gmpZrandom 22 Random num#er
Kescription
resource gmp>random > int limiter ?
Generate a random num#er; ,he num#er Eill #e up to l6m6ter Eords long; .( l6m6ter is negativeA
negative num#ers are generated;
gmp>scanD
>P&P 8 _^ 8;3;8A P&P 4?
gmpZscan3 22 can (or 3
Kescription
int gmp>scanD > resource aA int start ?
cans aA starting Eith #it startA toEards more signi(icant #itsA until the (irst clear #it is (ound;
Returns the indeF o( the (ound #it;
gmp>scan!
>P&P 8 _^ 8;3;8A P&P 4?
gmpZscan1 22 can (or 1
Kescription
int gmp>scan! > resource aA int start ?
cans aA starting Eith #it startA toEards more signi(icant #itsA until the (irst set #it is (ound; Returns
the indeF o( the (ound #it;
gmp>setbit
>P&P 8 _^ 8;3;8A P&P 4?
gmpZset#it 22 et #it
Kescription
resource gmp>setbit > resource iaA int indeF PA #ool setZclearQ ?
ets #it 6n#e8 in a; set_clear de(ines i( the #it is set to 3 or 1; By de(ault the #it is set to 1;
gmp>sign
>P&P 8 _^ 8;3;8A P&P 4?
gmpZsign 22 ign o( num#er
Kescription
int gmp>sign > resource a ?
Return sign o( a 2 1 i( a is positive and 21 i( itHs negative;
gmp>s?rt
>P&P 8 _^ 8;3;8A P&P 4?
gmpZs/rt 22 /uare root
Kescription
resource gmp>s?rt > resource a ?
5alculates s/uare root o( a;
gmp>s?rtrem
>P&P 8 _^ 8;3;8A P&P 4?
gmpZs/rtrem 22 /uare root Eith remainder
Kescription
array gmp>s?rtrem > resource a ?
Returns array Ehere (irst element is the integer s/uare root o( a >see also gmp>s?rt./?A and the
second is the remainder >i;e;A the di((erence #etEeen a and the (irst element s/uared?;
E'emplo !. gmp>s?rtrem./ e+ample
<?php
list3$sQrt6, $sQrt6rem9 > Emp%sQrtrem3"K"9;
list3$sQrtC, $sQrtCrem9 > Emp%sQrtrem3"H"9;
list3$sQrt<, $sQrt<rem9 > Emp%sQrtrem3"621J5HG"9;
echo Emp%str=al3$sQrt69 . ", " . Emp%str=al3$sQrt6rem9 . "Vn";
echo Emp%str=al3$sQrtC9 . ", " . Emp%str=al3$sQrtCrem9 . "Vn";
echo Emp%str=al3$sQrt<9 . ", " . Emp%str=al3$sQrt<rem9 . "Vn";
?>
,he printout o( the a#ove program Eill #eC
<, 2
C, <
62C1, 2
gmp>str5al
>P&P 8 _^ 8;3;8A P&P 4?
gmpZstrval 22 5onvert GMP num#er to string
Kescription
string gmp>str5al > resource gmpnum#er PA int #aseQ ?
5onvert GMP num#er to string representation in #ase 1ase; ,he de(ault #ase is 13; AlloEed values
(or the #ase are (rom 0 to 7K;
E'emplo !. Con5erting FMP number to string
<?php
$a > Emp%init3"2x16GJC6HK#b#5"9;
print# 3"Lecimal@ \s, <GFbased@ \s", Emp%str=al3$a9, Emp%str=al3$a,<G99;
?>
gmp>sub
>P&P 8 _^ 8;3;8A P&P 4?
gmpZsu# 22 u#tract num#ers
Kescription
resource gmp>sub > resource aA resource # ?
u#tract 1 (rom a and returns the result;
gmp>+or
>P&P 8 _^ 8;3;8A P&P 4?
gmpZFor 22 Logical JOR
Kescription
resource gmp>+or > resource aA resource # ?
5alculates logical eFclusive OR >JOR? o( tEo GMP num#ers;
I:III. ;unciones HTTP
Introducci"n
+stas (unciones le permiten manipular la salida /ue se env)a de vuelta al navegador remoto al nivel
del protocolo &,,P;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
header 22 +nviar una ca#ecera &,,P pura
headersZlist 22 Devuelve una lista de ca#eceras de respuesta enviadas >o listas para ser enviadas?
headersZsent 22 5he/uea si se han enviado ca#ecerasA y d-nde
setcoo"ie 22 +nv)a una coo"ie
setraEcoo"ie 22 end a coo"ie Eithout urlencoding the coo"ie value
header
>P&P 7A P&P 8 A P&P 4?
header 22 +nviar una ca#ecera &,,P pura
Kescripci"n
void header > string cadena PA #ool reemplazar PA int codZrespuestaZhttpQQ ?
La (unci-n header./ es usada para enviar ca#eceras &,,P puras; 5onsulte la especi(icaci-n
&,,PD1;1 para m*s in(ormaci-n so#re las ca#eceras &,,P;
+l par*metro opcional reemplaDar indica si la ca#ecera de#e reemplazar una ca#ecera previa
seme'anteA o si de#e agregar una segunda ca#ecera del mismo tipo; Por de(ecto esta (unci-n procede
a reemplazarA pero si pasa FALSE como el segundo argumentoA puede o#ligar a /ue se env)en
mBltiples ca#eceras del mismo tipo; Por e'emploC
<?php
header3M777F,uthenticate@ .eEotiateM9;
header3M777F,uthenticate@ .*O"M, #alse9;
?>
+l segundo par*metro opcionalA co#_respuesta_httpA o#liga a /ue el c-digo de respuesta &,,P sea
el valor especi(icado; >+ste par*metro se encuentra disponi#le a partir de P&P 8;7;3;?
+Fisten dos llamadas de ca#ecera /ue son casos especiales; +l primero es una ca#ecera /ue
comience con la cadena =!TT+/= >no es importante la di(erencia entre mayBsculas y minBsculas?A la
cual ser* usada para elegir el c-digo de status &,,P a enviar; Por e'emploA si ha con(igurado a
Apache para /ue use un script P&P a la hora de gestionar peticiones por archivos ineFistentes
>usando la directiva ErrorDocument?A puede /ue /uiera asegurarse de /ue su script genere el c-digo
de status apropiado;
<?php
header3"H**/6.2 121 .ot Sound"9;
?>
Nota- La l)nea de ca#ecera con el status &,,P ser* siempre la primera en ser enviada al
clienteA independientemente de /ue la llamada a header./ correspondiente sea la
primera o no; +l status puede ser so#rescrito llamando header./ con una nueva l)nea de
status en cual/uier momentoA a menos /ue las ca#eceras &,,P ya hayan sido enviadas;
Nota- +n P&P 7A esto (unciona Bnicamente cuando P&P ha sido compilado como un
m-dulo de Apache; Puede conseguir el mismo e(ecto usando la ca#ecera Status;
<?php
header3"&tatus@ 121 .ot Sound"9;
?>
+l segundo caso especial es la ca#ecera =LocationC=; No solo env)a esta ca#ecera de vuelta al
navegadorA sino /ue tam#i<n devuelve un c-digo de status RED0RECT >730? al navegador a menos
/ue algBn c-digo de status R88 haya sido enviado ya;
<?php
header3"Oocation@ http@//888.example.com/"9; /W 'ediriEir al na=eEador W/
/W ,seEurarse de Que no se ejecute el codiEo adicional cuando se redireccione. W/
exit;
?>
Nota- &,,PD1;1 re/uiere una @R. a#soluta como argumento a LocationC incluyendo el
es/uemaA el nom#re del host y una ruta a#solutaA aun/ue algunos clientes aceptan @R.s
relativas; @sualmente puede usar '_SER(ER)<!TT+_!OST<.A '_SER(ER
)<+!+_SE43<. y dirname./ para construir una @R. a#soluta a partir de una relativaC
<?php
header3"Oocation@ http@//" . $%&E'(E')MH**%H?&*M/
. dirname3$%&E'(E')MH%&EOSM/9
. "/" . $url%relati=a9;
?>
5on (recuenciaA los scripts P&P generan contenido din*mico /ue no de#e ser almacenado en cach<
por el navegador del cliente o cual/uier cach< de proFy entre el servidor y el navegador del cliente;
Muchos proFys y clientes pueden ser o#ligados a desha#ilitar el uso de cach<s conC
<?php
// Secha en el pasado
header3"Expires@ "on, CG Aul 6KKH 25@22@22 -"*"9;
// siempre modi#icado
header3"OastF"odi#ied@ " . Emdate3"L, d " P H@i@s"9 . " -"*"9;

// H**/6.6
header3"RacheFRontrol@ noFstore, noFcache, mustFre=alidate"9;
header3"RacheFRontrol@ postFchecI>2, preFchecI>2", #alse9;
// H**/6.2
header3"raEma@ noFcache"9;
?>
Nota- Puede /ue encuentre /ue sus p*ginas no son puestas en cach< aun cuando no use
todas las ca#eceras enteriores; +Fiste un nBmero de opciones /ue puede /ue se
encuentren a disposici-n de los usuarios en sus navegadores para modi(icar sus
comportamientos de cach< predeterminados; Al enviar las anteriores ca#ecerasA usted
de#er)a so#rescri#ir cual/uier par*metro de con(iguraci-n /ue de otra (orma podr)a estar
causando /ue la salida de su script sea puesta en cach<;
AdicionalmenteA session>cache>limiter./ y el par*metro de con(iguraci-n
sess6on.cache_l6m6ter pueden ser usados para generar autom*ticamente las ca#eceras de
uso de cach< apropiadas cuando se est*n usando sesiones;
Recuerde /ue la (unci-n header./ de#e ser llamada antes de /ue cual/uier salida sea enviadaA ya sea
mediante eti/uetas &,ML normalesA l)neas en #lanco de un archivoA o desde P&P; +s un error
#astante comBn interpretar c-digo eFtra con include./A re?uire./A o alguna otra (unci-n de acceso
de archivosA y terminar con espacios o l)neas en #lanco /ue son impresas antes de un llamado a
header./; +l mismo pro#lema eFiste cuando se usa un archivo P&PD&,ML Bnico;
<html>
<?php
/W Esto produce un error. .ote la salida anterior, Que se reali0a
W antes de llamar a header39 W/
header3MOocation@ http@//888.example.com/M9;
?>
Nota- A partir de P&P 8A puede usar #B(eres de salida para evitar este pro#lemaA con el
e(ecto lateral de /ue toda su salida al navegador es colocada en un #B(er en el servidor
hasta /ue usted la env)e; Puede lograr esto usando ob>start./ y ob>end>flush./ en su
scriptA o al de(inir la directiva de con(iguraci-n output_1u99er6nE en su php.ini u
otros archivos de con(iguraci-n;
i desea /ue el usuario reci#a un cuadro de di*logo para almacenar los datos /ue usted env)aA como
en el caso de un archivo PDF generado al vueloA puede usar la ca#ecera 5ontent2Disposition para
indicar un nom#re de archivo recomendado y o#ligar a /ue el navegador despliegue un di*logo de
guardado;
<?php
// En=iaremos un LS
header3MRontentFtype@ application/pd#M9;
// &e =a a llamar descarEa.pd#
header3MRontentFLisposition@ attachment; #ilename>"descarEa.pd#"M9;
// Oa #uente del LS se encuentra en oriEinal.pd#
read#ile3MoriEinal.pd#M9;
?>
Nota- +Fiste un pro#lema en Microso(t .nternet +Fplorer 8;31 /ue impide /ue esto
(uncione; No eFiste (orma de evitar este inconveniente; &ay tam#i<n un (allo en
Microso(t .nternet +Fplorer 4;4 /ue inter(iere con estoA el cual puede ser resuelto al
actualizarse a ervice Pac" 0 o superior;
Nota- i se encuentra ha#ilitado el modo seguroA el uid del script es agregado a la
secci-n realm de la ca#ecera III=,uthent6cate si de(ine <sta ca#ecera >usada para
Autenticaci-n &,,P?;
$ea tam#i<n headers>sent./A setcooBie./A y la secci-n so#re autenticaci-n &,,P;
headers>list
>P&P 4?
headersZlist 22 Devuelve una lista de ca#eceras de respuesta enviadas >o listas para ser enviadas?
Kescripci"n
array headers>list > void ?
headers>list./ devolver* una matriz indeFada num<ricamente de ca#eceras a ser enviadas al
navegador D cliente; Para determinar si estas ca#eceras ya han sido enviadas o noA use headers>sent
./;
E'emplo !. E'emplos de uso de headers>list./
<?php
/W setcooIie39 aEreEa una cabecera de respuesta propia W/
setcooIie3M#ooM, MbarM9;
/W Le#inir una cabecera de respuesta personali0ada.
Esta es iEnorada por la mayoria de clientes W/
header3"XF&ampleF*est@ #oo"9;
/W Especi#icar contenido de texto plano en nuestra respuesta W/
header3MRontentFtype@ text/plainM9;
/W Nue cabeceras =an a ser en=iadas? W/
=ar%dump3headers%list399;
?>
esto producir* la siguiente salidaC
array319 :
)2/>>
strinE3CK9 "XFo8eredFZy@ H/5.2.2"
)6/>>
strinE36K9 "&etFRooIie@ #oo>bar"
)C/>>
strinE36J9 "XF&ampleF*est@ #oo"
)</>>
strinE3C19 "RontentFtype@ text/plain"
;
$ea tam#i<nC headers>sent./A header./A y setcooBie./;
headers>sent
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
headersZsent 22 5he/uea si se han enviado ca#ecerasA y d-nde
Kescripci"n
#ool headers>sent > Pstring iarchivo PA int ilineaQQ ?
headers>sent./ devolver* FALSE si no se han enviado ca#eceras &,,PA o TRUE de lo contrario; i
los par*metros opcionales arch6o y l6nea son de(inidosA headers>sent./ colocar* el nom#re de
archivo y nBmero de l)nea de las (uentes P&P en donde inici- la salida en las varia#les arch6o y
l6nea;
No puede agregar m*s l)neas de ca#eceras usando la (unci-n header./ una vez el #lo/ue de
ca#eceras ha sido enviado; @sando esta (unci-n al menos puede prevenir la recepci-n de mensa'es
de error relacionados con ca#eceras &,,P; Otra opci-n es usar BB(eres de alida;
Nota- Los par*metros opcionales arch6o y l6nea (ueron aWadidos en P&P 8;7;3;
E'emplo !. E'emplos de uso de headers>sent./
<?php
// &i no se han en=iado cabeceras, en=iar una
i# 3!headers%sent399 :
header3MOocation@ http@//888.example.com/M9;
exit;
;

// +n ejemplo del uso de las parametros opcionales archi=o y linea, a
// partir de H 1.<.2.
// .ote Que $nombre%archi=o y $num%linea son pasados para su uso posterior.
// .o les asiEne =alores con anterioridad.
i# 3!headers%sent3$nombre%archi=o, $num%linea99 :
header3MOocation@ http@//888.example.com/M9;
exit;
// robablemente Quiera producir un error aQui.
; else :
echo "Oas cabeceras ya #ueron en=iadas en $nombre%archi=o en la linea " .
"$num%lineaVn.o es posible redireccionar, por ahora por #a=or " .
"pulse este <a hre#>V"http@//888.example.comV">enlace</a> en su " .
"luEarVn";
exit;
;
?>
$ea tam#i<n ob>start./A trigger>error./A y header./ para una discusi-n m*s detallada de los temas
involucrados;
setcooBie
>P&P 7A P&P 8 A P&P 4?
setcoo"ie 22 +nv)a una coo"ie
Kescripci"n
int setcooBie > string nameA string valueA int eFpireA string pathA string domainA int secure ?
setcooBie./ de(ine una coo"ie para ser enviada con el resto de la in(ormaci-n de la ca#ecera; Las
coo"ies de#en enviarse antes de mandar cual/uier otra ca#ecera >esta es una restricci-n de las
coo"iesA no de P&P?; +sto re/uiere /ue sitBe las llamadas a esta (unci-n antes de cual/uier eti/ueta
$html& o $hea#&;
,odos los par*metros eFcepto name son opcionales; i s-lo se especi(ica el par*metro nameA la
coo"ie con ese nom#re se #orrar* del cliente remoto; ,am#i<n puede sustituir cual/uier par*metro
por una cadena de teFto vac)a >**? y saltar as) ese par*metro; Los par*metros e8p6re y secure son
nBmeros enteros y no se pueden saltar con una cadena de teFto vac)a; +n su lugar utilice un cero >0?;
+l par*metro e8p6re es un entero de tiempo t)pico de @N.J tal como lo devuelven las (unciones
time./ o mBtime./; +l par*metro secure indica /ue la coo"ie se de#e transmitir Bnica y
eFclusivamente so#re una coneFi-n segura &,,P;
Fallos ha#itualesC
Las coo"ies no se hacen visi#les hasta la siguiente carga de una p*gina para la /ue la coo"ie de#a
estar visi#le;
Las llamadas mBltiples a setcooBie./ en el mismo script se e'ecutar*n en orden inverso; i est*
intentando #orrar una coo"ie antes de insertar otraA de#e situar la llamada de inserci-n antes de la de
#orrado;
A continuaci-n se muestran algunos e'emplosCC
E'emplo !. setcooBie./E e'emplos
setcooIie3"*estRooIie","*est (alue"9;
setcooIie3"*estRooIie",$=alue,time39[<G229; /W expire in 6 hour W/
setcooIie3"*estRooIie",$=alue,time39[<G22,"/frasmus/",".utoronto.ca",69;
,enga en cuenta /ue el campo value de la coo"ie se codi(ica como @RL >urlencode?
autom*ticamente cuando env)a la coo"ie; 5uando <sta se reci#eA se descodi(ica aut-maticamente y
se asigna a una varia#le con el mismo nom#re /ue el nom#re de la coo"ie; Para ver el contenido de
nuestra coo"ie de prue#a en un scriptA simplemente utilice uno de los siguientes e'emplosC
echo $*estRooIie;
echo $H**%R??]4E%(,'&)"*estRooIie"/;
,am#i<n puede utilizar arrays de coo"ies empleando la notaci-n de array en el nom#re de la coo"ie;
+sto tiene como e(ecto esta#lecer tantas coo"ies como elementos de arrayA pero cuando el script
reci#e la coo"ieA se guardan los valores en un array con el nom#re de la coo"ieC
setcooIie3 "cooIie)three/", "cooIiethree" 9;
setcooIie3 "cooIie)t8o/", "cooIiet8o" 9;
setcooIie3 "cooIie)one/", "cooIieone" 9;
i# 3 isset3 $cooIie 9 9 :
8hile3 list3 $name, $=alue 9 > each3 $cooIie 9 9 :
echo "$name >> $=alue<br>Vn";
;
;
Para o#tener m*s in(ormaci-n so#re las coo"iesA consulte la especi(icaci-n de coo"ies de NetscapeA
/ue se encuentra en httpCDDEp;netscape;comDneEsre(DstdDcoo"ieZspec;html;
Microso(t .nternet +Fplorer 8 con ervice Pac" 1 no (unciona correctamente con las coo"ies /ue
tienen asociado el par*metro path;
Netscape 5ommunicator 8;34 y Microso(t .nternet +Fplorer 7;F (uncionan aparentemente de manera
incorrecta cuando no se especi(ican los par*metros path y time;
setra3cooBie
>P&P 4?
setraEcoo"ie 22 end a coo"ie Eithout urlencoding the coo"ie value
Kescription
#ool setra3cooBie > string name PA string value PA int eFpire PA string path PA string domain PA #ool
secureQQQQQ ?
setra3cooBie./ is eFactly the same as setcooBie./ eFcept that the coo"ie value Eill not #e
automatically urlencoded Ehen sent to the #roEser;
ee also header./A setcooBie./ and the coo"ies section;
I:IC. ;unciones para Hyper3a5e
Introducci"n
&yperEave ha sido desarrollado en el ..5M en Graz; 5omenz- con el nom#re &yper2G y cam#i- a
&yperEave cuando (ue comercializado >i lo recuerdo #ienA (ue en 199K?;
&yperEave no es so(tEare gratuiro; La versi-n actualA 8;1A est* disponi#le en EEE;hyperEave;com;
e puede solicitar gratuitamente una versi-n limitada >73 d)as?;
&yperEave es un sistema de in(ormaci-n similar a una #ase de datos >&.A &yperEave .n(ormation
erver 2 ervidor &yperEave de .n(ormaci-n?; u o#'etivo es el almacenamiento y manipulaci-n de
documentos; @n documento puede ser cual/uier #lo/ue posi#le de datos /ue tam#i<n puede ser
almacenado en un archivo; 5ada documento se acompaWa por su registro de o#'eto; +l registro de
o#'eto contiene metadatos para el documento; Los metadatos son una lista de atri#utos /ue pueden
ser eFtendidos por el usuario; 5iertos atri#utos siempre son (i'ados por el servidor &yperEaveA otros
pueden ser modi(icados por el usuario; @n atri#uto es un par nom#reDvalor de la (orma
nom#re^valor; +l registro completo del o#'eto tiene tantos de estos pares como guste el usuario; +l
nom#re de un atri#uto no tiene por/u< ser BnicoA p; e'; un t)tulo puede aparecer varias veces en el
registro de un o#'eto; +sto tiene sentido si se desea especi(icar un t)tulo en di(erentes idiomas; +n
dicho caso eFiste la convenci-n de /ue cada valor de t)tulo est< precedido por la a#reviatura de dos
letras del idiomaA seguida por dos puntosA como p; e'; HenC,itle in +nglishH o HesC,)tulo en +spaWolH;
Otros atri#utos tales como descripciones o pala#ras clave son canditatos potenciales a esta
di(erenciaci-n; ,am#i<n se pueden reemplazar las a#reviaturas de idioma por cual/uier otra cadena
siempre y cuando est<n separadas por los dos puntos del resto del valor del atri#uto;
5ada registro de o#'eto tiene una representaci-n nativa como cadena con cada par nom#reDvalor
separado por una l)nea nueva; La eFtensi-n &yperEave tam#i<n conoce una segunda representaci-n
/ue consiste en un array asociativo donde el nom#re del atri#uto es la clave; Los valores de atri#uto
multilingjes en s) mismos (orman otro array asociativo donde la clave es la a#reviatura del idioma;
Realmente cual/uier atri#uto mBltiple (orma una ta#la asociativa donde la cadena a la iz/uierda de
los dos puntos en el valor de atri#uto es la clave; >+sto no se ha implementado por completo; -lo
los atri#utos ,itleA Description y SeyEord son tratados adecuadamente;?
Aparte de los documentosA todos los hiper2enlaces contenidos en un documento son almacenados
tam#i<n como registros de o#'eto; 5uando el documento sea insertado en la #ase de datosA los hiper2
enlaces /ue haya en un documento ser*n #orrados del mismo y almacenados como o#'etos
individuales; +l registro de o#'eto del enlace contiene in(ormaci-n acerca de d-nde comienza y
d-nde termina; Para recuperar el documento original se de#er* recuperar el documento sin los
enlaces y la lista de los mismos para reinsertarla >Las (unciones h3>pipedocument./ y h3>gette+t
./ hacen esto para usted?; La venta'a de separar los enlaces del documento es o#via; @na vez un
documento al /ue apunta un enlace cam#ia de nom#reA el enlace puede modi(icarse (*cilmente; +l
documento /ue contiene el enlace no se ve a(ectado; .ncluso se puede aWadir un enlace a un
documento sin alterarlo;
Decir /ue h3>pipedocument./ y h3>gette+t./ hacen autom*ticamente la inserci-n de enlaces no es
tan simple como suena; .nsertar los enlaces implica una cierta 'erar/u)a en los documentos; +n un
servidor Ee# esto viene dado por el sistema de archivosA pero el &yperEave tiene su propia
'erar/u)a y los nom#res no representan la posici-n de un o#'eto en dicha 'erar/u)a; Por tantoA la
creaci-n de los enlaces precisa primeramente de realizar un mapeado entre el espacio de nom#res y
la 'erar/u)a del &yperEave y el espacio de nom#res respectivo de una 'erar/u)a de Ee#; La
di(erencia (undamental entre &yperEave y la Ee# es la distinci-n clara entre nom#res y 'erar/u)a
/ue se da en el primero; +l nom#re no contiene ninguna in(ormaci-n so#re la posici-n del o#'eto en
la 'erar/u)a; +n la Ee#A el nom#re tam#i<n contiene la in(ormaci-n so#re la posici-n en la 'erar/u)a
del o#'eto; +sto nos lleva a dos posi#les (ormas de mapeo; O #ien se re(le'an la 'erar/u)a del
&yperEave y el nom#re del o#'eto &yperEave en el @RL o s-lo el nom#re; Para (acilitar las cosasA
se utiliza el segundo m<todo; +l o#'eto &yperEave de nom#re HmiZo#'etoH es mapeado a
HhttpCDDhostDmiZo#'etoH sin importar d-nde reside dentro de la 'erar/u)a de &yperEave; @n o#'eto con
el nom#re HpadreDmiZo#'etoH podr)a ser el hi'o de HmiZo#'etoH en la 'erar/u)a &yperEaveA aun/ue en
el espacio de nom#res Ee# aparezca 'ustamente lo opuesto y el usuario pueda ser llevado a
con(usi-n; +sto s-lo se puede evitar seleccionando nom#res de o#'etos razona#les;
&echa esta decisi-n surge un segundo pro#lema; U5-mo implicar al P&PN el @RL
httpCDDhostDmiZo#'eto no llamar* a ningBn script P&P a no ser /ue se le diga al servidor /ue lo
trans(orme en p; e'; HhttpCDDhostDscriptZphp7DmiZo#'etoH y /ue el HscriptZphp7H luego evalBe la varia#le
YPA,&Z.NFO y recupere el o#'eto con nom#re HmiZo#'etoH del servidor &yperEave; &ay s-lo un
pe/ueWo inconveniente /ue se puede resolver (*cilmente; 5uando se reescri#e cual/uier @RL no se
permite el acceso a ningBn otro documento en el servidor Ee#; @n script de P&P para #uscar en el
servidor &yperEave ser)a imposi#le; Por lo tanto se necesitar* al menos una segunda regla de
reescritura para /ue eFcluya ciertos @RLA como los /ue empiecen p; e'; por httpCDDhostD&yperEave;
B*sicamente esto ser)a compartir un espacio de nom#res entre el servidor Ee# y el servidor
&yperEave;
Los enlaces se insertan en los documentos #as*ndose en el mecanismo citado m*s arri#a;
e vuelve m*s complicado si el P&P no se est* e'ecutando como m-dulo del servidor o como script
5G.A sino /ue se e'ecuta como aplicaci-nA p; e'; para volcar el contenido del servidor de &yperEave
a un 5D2ROM; +n dicho caso tiene sentido mantener la 'erar/u)a &yperEave y mapearla en el
sistema de archivos; +sto entra con(licto con los nom#res de los o#'etos si estos re(le'an su propia
'erar/u)a >p; e'; eligiendo nom#res /ue comienzan por HDH?; Por tantoA la HDH tendr* /ue ser reemplazada
por otro car*cterA p; e'; HZH para continuar;
+l protocolo de red para comunicarse con el servidor &yperEave se denomina &G25P >&yper2G
5lientDerver ProtocolA Protocolo &yper2G 5lienteDervidor?; +st* #asado en mensa'es /ue inician
ciertas accionesA p; e'; o#tener el registro de un o#'eto; +n versiones anteriores del ervidor
&yperEave se distri#uyeron dos clientes nativos >&armonyA Amadeus? para la comunicaci-n con el
servidor; Am#os desaparecieron cuando se comercializ- el &yperEave; Para sustitu)rlo se
proporcion- el llamado Eavemaster; +l Eavemaster es como un conversor de protocolo de &,,P a
&G25P; La idea es realizar toda la administraci-n de la #ase de datos y la visualizaci-n de
documentos con una inter(az Ee#; +l Eavemaster implementa una serie de posicionadores para
acciones /ue permiten personalizar la inter(az; Dicho con'unto de posicionadores se denomina el
Lengua'e PLA5+; +l PLA5+ no posee muchas de las caracter)sticas de un lengua'e de
programaci-n real y las eFtensiones al mismo Bnicamente alargan la lista de posicionadores; +sto ha
o#ligado al uso de !avacript /ueA en mi opini-nA no hace la vida m*s (*cil;
AWadir soporte de &yperEave al P&P rellenar)a el espacio /ue de'a la (alta de un lengua'e de
programaci-n /ue permita personalizar la inter(az; +l P&P implementa todos los mensa'es de(inidos
en el &G25P pero adem*s proporciona comandos m*s poderososA p; e'; recuperar documentos
completos;
+l &yperEave tiene su propia terminolog)a para dar nom#re a ciertos tipos de in(ormaci-n; +sta ha
sido ampliamente eFtendida y anulada; 5asi todas las (unciones operan en uno de los siguientes
tipos de datos;
.D de o#'etoC @n valor entero Bnico paara cada o#'eto del servidor &yperEave; ,am#i<n es
uno de los atri#utos del registro de o#'eto >O#'ect.D?; Los .D de o#'eto se usan generalmente
como par*metros de entrada /ue especi(ican a un o#'eto;
registro de o#'etoC @na cadena con pares atri#uto2valor con la (orma atri#uto^valos; Los
pares est*n separados unos de otros por un retorno de carro; @n registro de o#'eto puede
convertirse (*cilmente en una ta#la >array? de o#'etos usando h3>ob'ect*array./; $arias
(unciones devuelven registros de o#'eto; Los nom#res de dichas (unciones terminan en o#';
ta#la de o#'etosC @na ta#la asociativa con todos los atri#utos de un o#'eto; La clave es el
nom#re del atri#uto; i un atri#uto aparece m*s de una vez en un registro de o#'eto ser*
convertido en otra ta#la asociativa o indizada; Los atri#utos /ue dependen del idioma >como
el t)tuloA claves o descripci-n? se convertir*n en una ta#la asociativa con la a#reviatura del
idioma como clave; +l resto de los atri#utos mBltiples crear*n una ta#la indizada; Las
(unciones de P&P nunca devuelven ta#las de o#'etos;
hEZdocumentC +ste es un nuevo tipo de datos /ue almacena el documento actualA p; e';
&,MLA PDFA etc; +st* algo optimizado para documentos &,ML pero puede usarse para
cual/uier (ormato;
$arias (unciones /ue devuelven una ta#la de registros de o#'eto tam#i<n devuelven una ta#la
asociativa con in(ormaci-n estad)stica so#re los mismos; La ta#la es el Bltimo elemento del registro
de o#'eto; La ta#la estad)stica contiene los siguientes elementosC
&idden
NBmero de registros de o#'eto con el atri#uto Presentation&ints puesto a &idden;
5ollection&ead
NBmero de registros de o#'eto con el atri#uto Presentation&ints puesto a 5ollection&ead;
Full5ollection&ead
NBmero de registros de o#'eto con el atri#uto Presentation&ints puesto a Full5ollection&ead;
5ollection&eadNr
Tndice a una ta#la de regitros de o#'eto con el atri#uto Presentation&ints puesto a
5ollection&ead;
Full5ollection&eadNr
Tndice a una ta#la de regitros de o#'eto con el atri#uto Presentation&ints puesto a
Full5ollection&ead;
,otal
,otalC NBmero de registros de o#'eto;
Integraci"n con Apache
La eFtensi-n &yperEave se utiliza me'or cuando el P&P se compila como un m-dulo de Apache;
+n tal caso el servidor &yperEave su#yacente puede ser ocultado casi por completo de los usuarios
si el Apache utiliza su motor de re2escritura; Las siguientes instrucciones eFplicar*n esto;
5omo el P&P con soporte &yperEave inclu)do en el Apache se ha diseWado para sustituir la
soluci-n nativa de &yperEave #asada en LavemasterA asumir< /ue el servidor Apache s-lo sirve
como inter(az Ee# para el &yperEave; +sto no es necesarioA pero simpli(ica la con(iguraci-n; +l
concepto es #astante sencillo; Primeramente necesita un script P&P /ue evalBe la varia#le
+,T!_0N3O y /ue trate su valor como el nom#re de un o#'eto &yperEave; Llamemos a este script
H&yperEaveH; +l @RL httpCDDnom#re;servidorD&yperEaveDnom#reZdeZo#'eto devolver)a entonces el
o#'eto &yperEave llamado Hnom#reZdeZo#'etoH; Dependiendo del tipo del o#'etoA as) reaccionar* el
script; i es una colecci-nA pro#a#lemente devolver* un lista de hi'os; i es un documento devolver*
el tipo M.M+ y el contenido; e puede me'orar ligeramente si se usa el motor de re2escritura del
Apache; Desde el punto de vista del usuario ser* m*s sencillo si el @RL
httpCDDnom#re;servidorDnom#re de o#'eto devuelve el o#'eto; La regla de reescritura es muy sencillaC
'e8rite'ule c/3.W9 /usr/local/apache/htdocs/Hyper7a=e/$6 )O/
Ahora todo @RL apunta a un o#'eto en el servidor &yperEave; +sto provoca un pro#lema sencillo
de resolver; No hay (orma de e'ecutar otro scriptA p; e'; para #uscarA salvo el script H&yperEaveH; +sto
se puede solucionar con otra regla de reescritura como la siguienteC
'e8rite'ule c/h8/3.W9 /usr/local/apache/htdocs/h8/$6 )O/
+sta reservar* el directorio /usr/local/apache/htdocs/h8 para script adicionales y otros
archivos; -lo hay /ue asegurarse /ue esta regla se evalBa antes de la otra; -lo hay un pe/ueWo
inconvenienteC todos los o#'etos &yperEave cuyo nom#re comienza por HhEDH ser*n ocultados; as)
/ue asegBrese /ue no utiliza dichos nom#res; i necesita m*s directoriosA p; e'; para im*genesA
simplemente aWada m*s reglas o sitBe los archivos en un solo directorio; Por BltimoA no olvide
conectar el motor de re2escritura con
'e8riteEnEine on
Mi eFperiencia me ha demostrado /ue necesitar* los siguientes scriptsC
para devolver el script en s)
para permitir las #Bs/uedas
para identi(icarse
para a'ustar su per(il
uno para cada (unci-n adicional como mostrar los atri#utos del o#'etoA mostrar in(ormaci-n
so#re usuariosA mostrar el estado del servidorA etc;
Pendientes
ABn hay varias cosas pendientesC
hEZ.nsertDocument de#e dividirse en h3>InsertJb'ect./ y h3>PutKocument./;
Los nom#res de algunas (unciones aBn no est*n (i'ados;
Muchas (unciones precisan la coneFi-n actual como primer par*metro; +sto o#liga a escri#ir
muchoA lo cual no es con (recuencia necesario si s-lo hay una coneFi-n a#ierta; @na
coneFi-n por de(ecto me'orar)a esto;
La conversi-n de registro de o#'eto a ta#la de o#'eto necesita manipular cual/uier atri#uto
mBltiple;
Tabla de contenidos
hEZArray0O#'rec 22 convierte atri#utos de ta#la de o#'eto a registro de o#'eto
hEZchangeo#'ect 22 5hanges attri#utes o( an o#'ect >o#solete?
hEZ5hildren 22 id de o#'eto de los hi'os
hEZ5hildrenO#' 22 registros de o#'eto de los hi'os
hEZ5lose 22 cierra la coneFi-n &yperEave
hEZ5onnect 22 a#re una coneFi-n
hEZconnectionZin(o 22 Prints in(ormation a#out the connection to &yperEave server
hEZ5p 22 copia o#'etos
hEZDeleteo#'ect 22 #orra o#'etos
hEZDocByAnchor 22 id del o#'eto al /ue pertenece un enlace
hEZDocByAnchorO#' 22 registro de o#'eto al /ue pertenece un enlace
hEZDocumentZAttri#utes 22 O#'ect record o( hEZdocument
hEZDocumentZBody,ag 22 Body tag o( hEZdocument
hEZDocumentZ5ontent 22 Returns content o( hEZdocument
hEZDocumentZet5ontent 22 etsDreplaces content o( hEZdocument
hEZDocumentZize 22 ize o( hEZdocument
hEZdummy 22 &yperEave dummy (unction
hEZ+dit,eFt 22 recupera documento de teFto
hEZ+rror 22 nBmero de error
hEZ+rrorMsg 22 devuelve un mensa'e de error
hEZFreeZDocument 22 li#era un documentoZhE
hEZGetAnchors 22 id de o#'eto de los enlaces de un documento
hEZGetAnchorsO#' 22 registros de o#'eto de los enlaces de un documento
hEZGetAndLoc" 22 devuelve registro de o#'eto y lo #lo/uea
hEZGet5hild5oll 22 id de o#'eto de colecciones hi'as
hEZGet5hild5ollO#' 22 registros de o#'eto de colecciones hi'as
hEZGet5hildDoc5oll 22 id de o#'eto de documentos hi'os de una colecci-n
hEZGet5hildDoc5ollO#' 22 registros de o#'eto de documentos hi'os de una colecci-n
hEZGetO#'ect 22 registro de o#'eto
hEZGetO#'ectByOuery 22 #uscar o#'eto
hEZGetO#'ectByOuery5oll 22 #uscar o#'eto en colecci-n
hEZGetO#'ectByOuery5ollO#' 22 #uscar o#'eto en colecci-n
hEZGetO#'ectByOueryO#' 22 #uscar o#'eto
hEZGetParents 22 id de o#'eto de los padres
hEZGetParentsO#' 22 registros de o#'eto de los padres
hEZgetrellin" 22 Get lin" (rom source to dest relative to rootid
hEZGetRemote 22 O#tiene un documento remoto
hEZGetRemote5hildren 22 O#tiene el hi'o del documento remoto
hEZGetrcByDestO#' 22 Devuelve los enlaces /ue apuntan al o#'eto
hEZGet,eFt 22 o#tiene un documento de teFto
hEZgetusername 22 nom#re del usuario actualmente conectado
hEZ.denti(y 22 identi(icarse como usuario
hEZ.n5ollections 22 comprue#a si los id de o#'eto est*n en las colecciones
hEZ.n(o 22 in(ormaci-n so#re coneFi-n
hEZ.ns5oll 22 insertar colecci-n
hEZ.nsDoc 22 insertar documento
hEZinsertanchors 22 .nserts only anchors into teFt
hEZ.nsertDocument 22 su#ir cual/uier o#'eto
hEZ.nsertO#'ect 22 inserta un registro de o#'eto
hEZmapid 22 Mapea in id glo#al a un id virtual local
hEZModi(yo#'ect 22 modi(ica el registro de o#'eto
hEZMv 22 mueve o#'etos
hEZNeEZDocument 22 crear nuevo documento
hEZO#'rec0Array 22 convierte atri#utos de registro de o#'eto a ta#la de o#'etos
hEZOutputZDocument 22 Prints hEZdocument
hEZp5onnect 22 hacer una coneFi-n de #ase de datos permanente
hEZPipeDocument 22 recupera cual/uier documento
hEZRoot 22 .D del o#'eto ra)z
hEZsetlin"root 22 et the id to Ehich lin"s are calculated
hEZstat 22 Returns status string
hEZ@nloc" 22 des#lo/uea o#'eto
hEZLho 22 Lista de los usuarios actualmente conectados
h3>Array*Jb'rec
>P&P 7_^ 7;3;8A P&P 8 ?
hEZArray0O#'rec 22 convierte atri#utos de ta#la de o#'eto a registro de o#'eto
Kescripci"n
strin h3>array*ob'rec > array ta#laZo#'etos ?
5onvierte una ta1la_o1Uetos en un registro de o#'eto; Los atri#utos mBltiples como H,)tuloH en
distintos idiomas son tratados correctamente;
$ea tam#i<n h3>ob'rec*array./;
h3>changeob'ect
>P&P 7_^ 7;3;7A P&P 8 ?
hEZchangeo#'ect 22 5hanges attri#utes o( an o#'ect >o#solete?
Kescription
void h3>changeob'ect > int lin"A int o#'idA array attri#utes ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
h3>Children
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ5hildren 22 id de o#'eto de los hi'os
Kescripci"n
array h3>children > int coneFi-nA int .Do#'eto ?
Devuelve una ta#la de id de o#'eto; 5ada uno de ellos pertenece a un hi'o de la colecci-n cuyo .D es
0Do1Ueto; La ta#la contiene tanto los documentos como las colecciones hi'as;
h3>ChildrenJb'
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ5hildrenO#' 22 registros de o#'eto de los hi'os
Kescripci"n
array h3>childrenob' > int coneFi-nA int .Do#'eto ?
Devuelve una ta#la de registros de o#'eto; 5ada uno de ellos pertenece a un hi'o de la colecci-n
cuyo .D es 0Do1Ueto; La ta#la contiene tanto los documentos como las colecciones hi'as;
h3>Close
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ5lose 22 cierra la coneFi-n &yperEave
Kescripci"n
int h3>close > int coneFi-n ?
Devuelve FALSE si la coneFi-n no es un )ndice v*lido de coneFi-nA y TRUE en caso contrario;
5ierra la coneFi-n dada con el servidor de &yperEave;
h3>Connect
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ5onnect 22 a#re una coneFi-n
Kescripci"n
int h3>connect > string servidorA int puertoA string usuarioA string clave ?
A#re una coneFi-n con un servidor &yperEave y devuelve un )ndice de coneFi-n si hay <FitoA o
FALSE si la coneFi-n no se pudo realizar; 5ada argumento de#e ser una cadena entrecomillada
salvo el nBmero de puerto; Los argumentos de usuar6o y clae son opcionales y pueden omitirse; +n
tal caso no se realizar* identi(icaci-n alguna con el servidor; +s similar a identi(icarse como el
usuario HanonymousH; +sta (unci-n devuelve un )ndice de coneFi-n /ue se necesita para otras
(unciones &yperEave; Puede tener varias coneFiones a#iertas a la vez; Recuerde /ue la clave no
est* encriptada;
$ea tam#i<n h3>pConnect./;
h3>connection>info
>P&P 7_^ 7;3;7A P&P 8 ?
hEZconnectionZin(o 22 Prints in(ormation a#out the connection to &yperEave server
Kescription
void h3>connection>info > int lin" ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
h3>Cp
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ5p 22 copia o#'etos
Kescripci"n
int h3>cp > int coneFi-nA array ta#laZidZo#'etoA int id destino ?
5opia los o#'etos cuyos id se especi(ican en el segundo par*metro a la colecci-n identi(icada como
6# #est6no;
+l valor devuelto es el nBmero de o#'etos copiados;
$ea tam#i<n h3>m5./;
h3>Keleteob'ect
>P&P 7_^ 7;3;7A P&P 8 ?
hEZDeleteo#'ect 22 #orra o#'etos
Kescripci"n
int h3>deleteob'ect > int coneFi-nA int o#'etoZaZ#orrar ?
Borra el o#'eto con el id dado como segundo par*metro; Borrar* todas las instancias del mismo;
Devuelve TRUE si no hay error o FALSE en caso contrario;
$ea tam#i<n h3>m5./;
h3>Koc1yAnchor
>P&P 7_^ 7;3;7A P&P 8 ?
hEZDocByAnchor 22 id del o#'eto al /ue pertenece un enlace
Kescripci"n
int h3>docbyanchor > int coneFi-nA int .Denlace ?
Devuelve el id de o#'eto del documento al /ue pertenece el 0Denlace;
h3>Koc1yAnchorJb'
>P&P 7_^ 7;3;7A P&P 8 ?
hEZDocByAnchorO#' 22 registro de o#'eto al /ue pertenece un enlace
Kescripci"n
string h3>docbyanchorob' > int coneFi-nA int .Denlace ?
Devuelve el registro de o#'eto del documento al /ue pertenece el 0Denlace;
h3>Kocument>Attributes
>P&P 7_^ 7;3;7A P&P 8 ?
hEZDocumentZAttri#utes 22 O#'ect record o( hEZdocument
Kescription
string h3>document>attributes > int hEZdocument ?
Returns the o#'ect record o( the document;
For #ac"Eard compati#ilityA h3>documentattributes./ is also accepted; ,his is deprecatedA
hoEever;
ee also h3>document>bodytag./A and h3>document>si6e./;
h3>Kocument>1odyTag
>P&P 7_^ 7;3;7A P&P 8 ?
hEZDocumentZBody,ag 22 Body tag o( hEZdocument
Kescription
string h3>document>bodytag > int hEZdocument PA string pre(iFQ ?
Returns the BOD% tag o( the document; .( the document is an &,ML document the BOD% tag
should #e printed #e(ore the document;
ee also h3>document>attributes./A and h3>document>si6e./;
For #ac"Eard compati#ilityA h3>documentbodytag./ is also accepted; ,his is deprecatedA hoEever;
h3>Kocument>Content
>P&P 7_^ 7;3;7A P&P 8 ?
hEZDocumentZ5ontent 22 Returns content o( hEZdocument
Kescription
string h3>document>content > int hEZdocument ?
Returns the content o( the document; .( the document is an &,ML document the content is
everything a(ter the BOD% tag; .n(ormation (rom the &+AD and BOD% tag is in the stored in the
o#'ect record;
ee also h3>document>attributes./A h3>document>si6e./A and h3>document>setcontent./;
h3>Kocument>,etContent
>P&P 8 ?
hEZDocumentZet5ontent 22 etsDreplaces content o( hEZdocument
Kescription
string h3>document>setcontent > int hEZdocumentA string content ?
ets or replaces the content o( the document; .( the document is an &,ML document the content is
everything a(ter the BOD% tag; .n(ormation (rom the &+AD and BOD% tag is in the stored in the
o#'ect record; .( you provide this in(ormation in the content o( the document tooA the &yperEave
server Eill change the o#'ect record accordingly Ehen the document is inserted; Pro#a#ly not a very
good idea; .( this (unctions (ails the document Eill retain its old content;
ee also h3>document>attributes./A h3>document>si6e./A and h3>document>content./;
h3>Kocument>,i6e
>P&P 7_^ 7;3;7A P&P 8 ?
hEZDocumentZize 22 ize o( hEZdocument
Kescription
int h3>document>si6e > int hEZdocument ?
Returns the size in #ytes o( the document;
ee also h3>document>bodytag./A and h3>document>attributes./;
For #ac"Eard compati#ilityA h3>documentsi6e./ is also accepted; ,his is deprecatedA hoEever;
h3>dummy
>P&P 7_^ 7;3;7A P&P 8 ?
hEZdummy 22 &yperEave dummy (unction
Kescription
string h3>dummy > int lin"A int idA int msgid ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
h3>EditTe+t
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ+dit,eFt 22 recupera documento de teFto
Kescripci"n
int h3>editte+t > int coneFi-nA int documentoZhE ?
+nv)a el documento de teFto al servidor; +l registro de o#'eto del documento no puede ser
modi(icado mientras el documento es editado; +sta (unci-n s-lo (uncionar* para o#'etos puros de
teFto; No a#rir* ninguna coneFi-n especial de datos y por tanto #lo/uea la coneFi-n de control
durante la trans(erencia;
$ea tam#i<n h3>PipeKocument./A h3>;reeKocument./A h3>Kocument1odyTag./A
h3>Kocument,i6e./A h3>JutputKocument./A h3>FetTe+t./;
h3>Error
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ+rror 22 nBmero de error
Kescripci"n
int h3>error > int coneFi-n ?
Devuelve el Bltimo nBmero de error; i el valor devuelto es 3 no ha ha#ido errores; +l error est*
relacionado con el Bltimo comando;
h3>ErrorMsg
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ+rrorMsg 22 devuelve un mensa'e de error
Kescripci"n
string h3>errormsg > int coneFi-n ?
Devuelve una cadena /ue contiene el Bltimo mensa'e de error o HNo +rrorH; i devuelve FALSE es
/ue la (unci-n (racas-; +l mensa'e est* relacionado con el Bltimo comando;
h3>;ree>Kocument
>P&P 7_^ 7;3;7A P&P 8 ?
hEZFreeZDocument 22 li#era un documentoZhE
Kescripci"n
int h3>free>document > int documentoZhE ?
Li#era la memoria ocupada por el documento &yperEave;
h3>FetAnchors
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGetAnchors 22 id de o#'eto de los enlaces de un documento
Kescripci"n
array h3>getanchors > int coneFi-nA int .Do#'eto ?
Devuelve una ta#la de id de o#'eto con los enlaces del documento cuyo .D es 0Do1Ueto;
h3>FetAnchorsJb'
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGetAnchorsO#' 22 registros de o#'eto de los enlaces de un documento
Kescripci"n
array h3>getanchorsob' > int coneFi-nA int .Do#'eto ?
Devuelve una ta#la de registros de o#'eto con los enlaces del documento cuyo .D es 0Do1Ueto;
h3>FetAnd:ocB
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGetAndLoc" 22 devuelve registro de o#'eto y lo #lo/uea
Kescripci"n
string h3>getandlocB > int coneFi-nA int .Do#'eto ?
Devuelve el registro de o#'eto para el o#'eto con .D 0Do1Ueto; ,am#i<n #lo/uear* el o#'etoA de
modo /ue otros usuarios no podr*n acceder al mismo hasta /ue sea des#lo/ueado;
$ea tam#i<n h3>)nlocB./A h3>FetJb'ect./;
h3>FetChildColl
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGet5hild5oll 22 id de o#'eto de colecciones hi'as
Kescripci"n
array h3>getchildcoll > int coneFi-nA int .Do#'eto ?
Devuelve una ta#la de id de o#'eto; 5ada .D de o#'eto pertenece a una colecci-n hi'a de la colecci-n
con .D 0Do1Ueto; La (unci-n no devolver* documentos hi'os;
$ea tam#i<n h3>FetChildren./A h3>FetChildKocColl./;
h3>FetChildCollJb'
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGet5hild5ollO#' 22 registros de o#'eto de colecciones hi'as
Kescripci"n
array h3>getchildcollob' > int coneFi-nA int .Do#'eto ?
Devuelve una ta#la de registros de o#'eto; 5ada uno de ellos pertenece a una colecci-n hi'a de la
colecci-n con .D 0Do1Ueto; La (unci-n no devolver* documentos hi'os;
$ea tam#i<n h3>ChildrenJb'./A h3>FetChildKocCollJb'./;
h3>FetChildKocColl
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGet5hildDoc5oll 22 id de o#'eto de documentos hi'os de una colecci-n
Kescripci"n
array h3>getchilddoccoll > int coneFi-nA int .Do#'eto ?
Devuelve una ta#la de id de o#'eto para los documentos hi'os de una colecci-n;
$ea tam#i<n h3>FetChildren./A h3>FetChildColl./;
h3>FetChildKocCollJb'
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGet5hildDoc5ollO#' 22 registros de o#'eto de documentos hi'os de una colecci-n
Kescripci"n
array h3>getchilddoccollob' > int coneFi-nA int .Do#'eto ?
Devuelve una ta#la de registros de o#'eto para los documentos hi'os de una colecci-n;
$ea tam#i<n h3>ChildrenJb'./A h3>FetChildCollJb'./;
h3>FetJb'ect
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGetO#'ect 22 registro de o#'eto
Kescripci"n
array h3>getob'ect > int coneFi-nA PintlarrayQ .Do#'etoA string consulta ?
Devuelve el registro de o#'eto para el o#'eto cuyo .D es 0Do1Ueto si el segundo par*metro es un
entero; i es una ta#la la (unci-n devolver* una ta#la de registros de o#'eto; +n tal casoA el Bltimo
par*metroA /ue es una cadena de consultaA tam#i<n es evaluado;
La cadena de consulta tiene la sint*Fis siguienteC
`eFpr_ CC^ =>= `eFpr_ =?= l
=a= `eFpr_ l DV NO VD
`eFpr_ =ll= `eFpr_ l DV O VD
`eFpr_ =ii= `eFpr_ l DV % VD
`atri#uto_ `operador_ `valor_
`atri#uto_ CC^ DV cual/uier atri#uto >,)tuloA AutorA ,ipoDocumento ;;;? VD
`operador_ CC^ =^= l DV igual VD
=`= l DV menor /ue >comparaci-n de cadenas? VD
=_= l DV mayor /ue >comparaci-n de cadenas? VD
=g= DV eFpresi-n regular VD
La consulta permite seleccionar elementos de la lista de o#'etos dada; Al contrario de otras
(unciones de #Bs/uedaA esta consulta no puede utilizar atri#utos indizados; +l nBmero de registros
de o#'eto devueltos depende de la consulta y de si est* permitido el acceso al o#'eto;
$ea tam#i<n h3>FetAnd:ocB./A h3>FetJb'ect1y$uery./;
h3>FetJb'ect1y$uery
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGetO#'ectByOuery 22 #uscar o#'eto
Kescripci"n
array h3>getob'ectby?uery > int coneFi-nA string consultaA int maFZresultados ?
Busca o#'etos en todo el servidor y devuelve una ta#la de id de o#'eto; +l nBmero m*Fimo de
resultados ser* ma8_resulta#os; i ma8_resulta#os vale 21A el nBmero m*Fimo de resultados es
ilimitado;
La consulta (uncionar* s-lo con atri#utos indizados;
$ea tam#i<n h3>FetJb'ect1y$ueryJb'./;
h3>FetJb'ect1y$ueryColl
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGetO#'ectByOuery5oll 22 #uscar o#'eto en colecci-n
Kescripci"n
array h3>getob'ectby?uerycoll > int coneFi-nA int .Do#'etoA string consultaA int maFZresultados ?
Busca o#'etos en la colecci-n cuyo .D es 0Do1Ueto y devuelve una ta#la de .D de o#'eto; +l nBmero
m*Fimo de resultados ser* ma8_resulta#os; i ma8_resulta#os vale 21A el nBmero m*Fimo de
resultados es ilimitado;
La consulta (uncionar* s-lo con atri#utos indizados;
$ea tam#i<n h3>FetJb'ect1y$ueryCollJb'./;
h3>FetJb'ect1y$ueryCollJb'
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGetO#'ectByOuery5ollO#' 22 #uscar o#'eto en colecci-n
Kescripci"n
array h3>getob'ectby?uerycollob' > int coneFi-nA int .Do#'etoA string consultaA int maFZresultados
?
Busca o#'etos en la colecci-n cuyo .D es 0Do1Ueto y devuelve una ta#la de registros de o#'eto; +l
nBmero m*Fimo de resultados ser* ma8_resulta#os; i ma8_resulta#os vale 21A el nBmero m*Fimo
de resultados es ilimitado;
La consulta (uncionar* s-lo con atri#utos indizados;
$ea tam#i<n h3>FetJb'ect1y$ueryColl./;
h3>FetJb'ect1y$ueryJb'
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGetO#'ectByOueryO#' 22 #uscar o#'eto
Kescripci"n
array h3>getob'ectby?ueryob' > int coneFi-nA string consultaA int maFZresultados ?
Busca o#'etos en todo el servidor y devuelve una ta#la de registros de o#'eto; +l nBmero m*Fimo de
resultados ser* ma8_resulta#os; i ma8_resulta#os vale 21A el nBmero m*Fimo de resultados es
ilimitado;
La consulta (uncionar* s-lo con atri#utos indizados;
$ea tam#i<n h3>FetJb'ect1y$uery./;
h3>FetParents
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGetParents 22 id de o#'eto de los padres
Kescripci"n
array h3>getparents > int coneFi-nA int .Do#'eto ?
Devuelve una ta#la indizada de id de o#'eto; 5ada una pertenece a un padre del o#'eto con .D
0Do1Ueto;
h3>FetParentsJb'
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGetParentsO#' 22 registros de o#'eto de los padres
Kescripci"n
array h3>getparentsob' > int coneFi-nA int .Do#'eto ?
Devuelve una ta#la indizada de registros de o#'eto 'unto a una ta#la asociativa con in(ormaci-n
estad)stica so#re estos; La ta#la asociativa es el Bltimo elemento de la ta#la devuelta; 5ada registro
de o#'eto pertenece a un padre del o#'eto con .D 0Do1Ueto;
h3>getrellinB
>P&P 7_^ 7;3;7A P&P 8 ?
hEZgetrellin" 22 Get lin" (rom source to dest relative to rootid
Kescription
string h3>getrellinB > int lin"A int rootidA int sourceidA int destid ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
h3>FetMemote
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGetRemote 22 O#tiene un documento remoto
Kescripci"n
int h3>getremote > int coneFi-nA int .Do#'eto ?
Devuelve un documento remoto; Los documentos remotos en la notaci-n de &yperEave son los
o#tenidos de una (uente eFterna; Los documentos remotos t)picos son p*ginas Ee# eFternas o
consultas a #ases de datos; Para poder acceder a las (uentes eFternas a trav<s de documentos
remotosA el &yperEave presenta el &G. >&yperEave GateEay .nter(ace 2 .nter(az de Pasarela de
&yperEave? /ue es similar al 5G.; ActualmenteA s-lo se puede acceder a servidores (tp y http y a
algunas #ases de datos; Llamar a h3>FetMemote./ devuelve el documento de la (uente eFterna; i
desea usar esta (unci-n de#e (amiliarizarse con los &G.; De#er)a considerar el usar P&P en lugar
del &yperEave para acceder a (uentes eFternas; AWadir soporte de #ases de datos a trav<s de una
pasarela &yperEave ser)a m*s di()cil /ue hacerlo en P&P;
$ea tam#i<n h3>FetMemoteChildren./;
h3>FetMemoteChildren
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGetRemote5hildren 22 O#tiene el hi'o del documento remoto
Kescripci"n
int h3>getremotechildren > int coneFi-nA string registro de o#'eto ?
Devuelve el hi'o de un documento remoto; Los hi'os de documentos remotos son en s) mismos
documentos remotos; +sto tiene sentido cuando se a(ina una consulta de #ases de datos y se eFplica
en la Gu)a de Programaci-n de &yperEave; i el nBmero de hi'os es 1 la (unci-n devolver* el
documento en s) mismo (ormateado con la .nter(az de Pasarela de &yperEave >&G.?; i el nBmero
de hi'os es mayor de 1 devolver* una ta#la de registros de o#'etoA con cada uno posi#le candidato
para otra llamada a h3>FetMemoteChildren./; Dichos registros de o#'eto son virtuales y no
eFisten en el servidor &yperEaveA y por lo tanto no poseen un .D de o#'eto v*lido; La apariencia
eFacta de dicho registro de o#'eto depende del &G.; i desea usar esta (unci-n de#er* estar muy
(amiliarizado con los &G.; ,am#i<n de#er)a considerar el uso del P&P en lugar de &yperEave para
acceder a (uentes eFternas; AWadir soporte de #ases de datos a trav<s de una pasarela de &yperEave
resulta m*s di()cil /ue hacerlo en P&P;
$ea tam#i<n h3>FetMemote./;
h3>Fet,rc1yKestJb'
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGetrcByDestO#' 22 Devuelve los enlaces /ue apuntan al o#'eto
Kescripci"n
array h3>getsrcbydestob' > int coneFi-nA int .Do#'eto ?
Devuelve los registros de o#'eto de todos los enlaces /ue apuntan al o#'eto con .D 0Do1Ueto; +l
o#'eto puede ser tanto un documento como un enlace de tipo destino;
$ea tam#i<n h3>FetAnchors./;
h3>FetTe+t
>P&P 7_^ 7;3;7A P&P 8 ?
hEZGet,eFt 22 o#tiene un documento de teFto
Kescripci"n
int h3>gette+t > int coneFi-nA int .Do#'eto PA miFed .DraizDpre(i'oQ ?
Devuelve el documento con .D de o#'eto 0Do1Ueto; i el documento tiene enlaces /ue pueden ser
insertadosA ser*n insertados ahora; +l par*metro opcional 0Dra6D/pre96Uo puede ser una cadena o un
entero; i es un entero determina la (orma en /ue los enlaces se insertan en el documento; Por
de(ecto es 3 y los enlaces se crean a partir del nom#re del o#'eto de destino de los mismos; +sto es
Btil para aplicaciones Ee#; i un enlace apunta a un o#'eto con nom#re HpeliculaZinternetH el enlace
&,ML ser* `A &R+F^=DpeliculaZinternet=_; La posici-n actual del o#'eto de destino en la
'erar/u)a de documentos es despreciada; ,endr* /ue a'ustar su navegador Ee# para /ue reescri#a
dicho @RL aA por e'emploA HDmiZscript;php7DpeliculaZinternetH; HmiZscript;php7H de#er* evaluar
YPA,&Z.NFO y recuperar el documento; ,odos los enlaces tendr*n el pre(i'o HDmiZscript;php7H; i
no desea este e(ecto puede (i'ar el par*metro opcional 0Dra6D/pre96Uo al pre(i'o /ue desee en su lugar;
+n este caso de#er* ser una cadena;
i el 0Dra6D/pre96Uo es un entero distinto de 3A el enlace se construye con todos los nom#res de
o#'eto comenzando con el o#'eto de id 0Dra6D/pre96UoA separado por una #arra relativa al o#'eto
actual; i por e'emplo el documento anterior HpeliculaZinternetH est* situado en Ha2#2c2
peliculaZinternetH donde H2H es el separador entre niveles 'er*r/uicos en el servidor &yperEave y el
documento (uente est* situado en Ha2#2d2(uenteHA el enlace &,ML resultante ser)aC `A
&R+F^=;;DcDpeliculaZinternet=_; +sto es Btil cuando desea #a'arse el contenido completo del
servidor al disco y mapear la 'erar/u)a de documentos en el sistema de archivos;
+sta (unci-n s-lo tra#a'ar* en documentos de teFto puros; No se a#rir* una coneFi-n de datos
especial y por tanto #lo/uear* la coneFi-n de control durante la trans(erencia;
$ea tam#i<n h3>PipeKocument./A h3>;reeKocument./A h3>Kocument1odyTag./A
h3>Kocument,i6e./A h3>JutputKocument./;
h3>getusername
>P&P 7_^ 7;3;7A P&P 8 ?
hEZgetusername 22 nom#re del usuario actualmente conectado
Kescripci"n
string h3>getusername > int coneFi-n ?
Devuelve el nom#re de usuario de la coneFi-n;
h3>Identify
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ.denti(y 22 identi(icarse como usuario
Kescripci"n
int h3>identify > string nom#reA string clave ?
Le identi(ica como el usuario nom1re y clae; La identi(icaci-n s-lo es v*lida para la sesi-n actual;
No pienso /ue esta (unci-n sea necesaria con mucha (recuancia; +n muchos casos ser* m*s (*cil
identi(icarse al a#rir la coneFi-n;
$ea tam#i<n h3>Connect./;
h3>InCollections
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ.n5ollections 22 comprue#a si los id de o#'eto est*n en las colecciones
Kescripci"n
array h3>incollections > int coneFi-nA array ta#laZidZo#'etoA array ta#laZidZcoleccionesA int
coleccionesZdevueltas ?
5omprue#a si el con'unto de o#'etos >documentos o colecciones? especi(icado por el par*metro
ta1la_6#_o1Ueto es parte de las colecciones enumeradas en ta1la_6#_colecc6ones; 5uando el cuarto
par*metro colecc6ones_#eueltas es 3A el su#con'unto de id de o#'eto /ue es parte de las colecciones
>es decirA los documentos o colecciones hi'os de una o m*s colecciones de id de colecciones o de
sus su#coleccionesA recursivamente? es devuelto en (orma de ta#la; 5uando el cuarto par*metro es 1A
sin em#argoA el con'unto de colecciones /ue tienen uno o m*s o#'etos de este su#con'unto como
hi'os es devuelto como ta#la; +sta opci-n permite a un clienteA p; e';A remarcar en una visualizaci-n
gr*(ica la parte de la 'erar/u)a de colecciones /ue contiene las coincidencias de una consulta previa;
h3>Info
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ.n(o 22 in(ormaci-n so#re coneFi-n
Kescripci"n
string h3>info > int coneFi-n ?
Devuelve in(ormaci-n so#re la coneFi-n actual; La cadena devuelta tiene el siguiente (ormatoC
`5adenaservidor_A `An(itri-n_A `Puerto_A `@suario_A `Puerto del @suario_A `.ntercam#io de
#ytes_
h3>InsColl
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ.ns5oll 22 insertar colecci-n
Kescripci"n
int h3>inscoll > int coneFi-nA int .Do#'etoA array ta#laZo#'etos ?
.nserta una nueva colecci-n con los atri#utos de la ta1la_o1Uetos en la colecci-n cuyo .D de o#'eto
es 0Do1Ueto;
h3>InsKoc
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ.nsDoc 22 insertar documento
Kescripci"n
int h3>insdoc > int coneFi-nA int .DpadreA string registroZdeZo#'etoA string teFto ?
.nserta un nuevo documento con los atri#utos del reE6stro_#e_o1Ueto en la colecci-n cuyo .D de
o#'eto es 0Dpa#re; +sta (unci-n inserta tanto un registro de o#'eto s-lo como un registro de o#'eto y
el teFto puro en A5.. dado en te8to si este es especi(icado; si desea insertar un documento general
de cual/uier tipoA utilice en su lugar h3>insertdocument./;
$ea tam#i<n h3>InsertKocument./A h3>InsColl./;
h3>insertanchors
>P&P 8 _^ 8;3;8?
hEZinsertanchors 22 .nserts only anchors into teFt
Kescription
string h3>insertanchors > int hEdocA array anchorecsA array dest PA array urlpre(iFesQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
h3>InsertKocument
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ.nsertDocument 22 su#ir cual/uier o#'eto
Kescripci"n
int h3>insertdocument > int coneFi-nA int idZpadreA int documentoZhE ?
u#e un documento a la colecci-n dada por 6#_pa#re; +l documento de#e ser creado antes con la
(unci-n h3>Ne3Kocument./; AsegBrese /ue el registro de o#'eto del nuevo documento contenga
al menos los atri#utosC ,ypeA Document,ypeA ,itle y Name >as)A en ingl<s?; Posi#lemente desee (i'ar
tam#i<n el Mime,ype; La (unci-n devuelve la id de o#'eto del nuevo documentoA o FALSE;
$ea tam#i<n h3>PipeKocument./;
h3>InsertJb'ect
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ.nsertO#'ect 22 inserta un registro de o#'eto
Kescripci"n
int h3>insertob'ect > int coneFi-nA string reg de o#'etoA string parametro ?
.nserta un o#'eto en el servidor; +ste puede consistir en cual/uier o#'eto hyperEave v*lido; $ea la
documentaci-n so#re el &G25P si desea in(ormaci-n detallada so#re cu*les tienen /ue ser los
par*metros;
NotaC i se desea insertar un enlaceA el atri#uto Position siempre se (i'ar* a un valor comienzoD(inal
o a Hinvisi#leH; Las posiciones invisi#les se necesitan si la anotaci-n no tiene enlace correspondiente
en el teFto anotado;
$ea tam#i<n h3>PipeKocument./A h3>InsertKocument./A h3>InsKoc./A h3>InsColl./;
h3>mapid
>P&P 7_^ 7;3;17A P&P 8 ?
hEZmapid 22 Mapea in id glo#al a un id virtual local
Kescripci"n
int h3>mapid > int coneFi-nA int id servidorA int id o#'eto ?
Mapea un id de o#'eto glo#al en un servidor hyperEaveA incluso con a/uellos a los /ue no se ha
conectado con h3>connect./A so#re un id virtual de o#'eto; +ste id virtual se puede utilizar como
cual/uier otro id de o#'etoA p; e'; para o#tener el registro de o#'eto por medio de h3>getob'ect./; +l
id de servidor es la primera parte del id glo#al de o#'eto >GOid? de a/uel /ue es realmene el nBmero
.P eFpresado como entero;
NotaC Para usar esta (unci-n de#er* activar el indicador FZD.,R.B@,+DA /ue actualmenes s-lo se
puede (i'ar en tiempo de compilaci-n desde hgZcomm;c; Por de(ecto est* inactivo; Lea el
comentario al principio de hgZcomm;c
h3>Modifyob'ect
>P&P 7_^ 7;3;:A P&P 8 ?
hEZModi(yo#'ect 22 modi(ica el registro de o#'eto
Kescripci"n
int h3>modifyob'ect > int coneFi-nA int o#'etoZaZcam#iarA array eliminarA array aWadirA int modo ?
+ste comando permite eliminarA aWadirA o modi(icar atri#utos individuales de un registro de o#'eto;
+l o#'eto est* especi(icado por el .D de o#'eto o1Ueto_a_cam16ar; La primera ta#laA el6m6narA es la
lista de atri#utos a eliminar; La segunda ta#laA aaa#6rA es la lista de atri#utos a aWadir; Para
modi(icar un atri#utoA hay /ue #orrar el antiguo y aWadir uno nuevo; h3>modifyob'ect./ siempre
eliminar* los atri#utos antes de aWadir los nuevos eFcepto si el valor del atri#uto a eliminar no es
una cadena o una ta#la;
+l Bltimo par*metro determina si la modi(icaci-n se realiza de manera recursiva; 1 /uiere decir /ue
sea recursiva; i alguno de los o#'etos no se puede modi(icarA ser* ignorado sin avisar; .ncluso
h3>error./ podr)a no indicar un error aun/ue alguno de los o#'etos no pueda ser modi(icado;
Las claves de am#as ta#las son los nom#res de los atri#utos; +l valor de cada elemento de la ta#la
puede ser una ta#laA una cadena o cual/uier otra cosa; i es una ta#laA cada valor de atri#uto se
construye como la clave de cada elemento m*s dos puntos y el valor de cada elemento; i es una
cadena se toma como valor del atri#uto; @na cadena vac)a producir* la supresi-n completa del
atri#uto; i el valor no es ni cadena ni ta#laA sino otra cosaA p; e'; un enteroA no se realizar*
operaci-n alguna en el atri#uto; +sto es necesario se desea aWadir un atri#uto completamente nuevoA
no solamente un nuevo valor para un atri#uto eFistente; i la ta#la eliminar contuviera una cadena
vac)a para dicho atri#utoA este se intentar)a suprimirA lo /ue (allar)a por/ue este no eFiste; La
siguiente adici-n de un nuevo valor para dicho atri#uto tam#i<n (allar*; Fi'ando el valor para dicho
atri#uto p; e'; a 3 har* /ue ni si/uiera se intente eliminarA pero (uncionar* la adici-n del mismo;
i desea cam#iar el atri#uto HNom#reH con el valor actual Hli#rosH por el de Hart)culosH de#er* crear dos
ta#las y llamar a h3>modifyob'ect./;
E'emplo !. modificando un atributo
// $conexion es una conexiin con el ser=idor Hyper8a=e
// $idobj es la 4L del objeto a modi#icar
$tablasupr > array3".ombre" >> "libros"9;
$tablaanad > array3".ombre" >> "artgculos"9;
$h8%modi#yobject3$conexion, $idobj, $tablasupr, $tablaanad9;
Para #orrarDaWadir un par nom#re^valor deDa el registro de o#'etoA simplemente pase la ta#la
eliminarDaWadir y (i'e el BltimoDtercer par*metro a ta#la vac)a; i el atri#uto es el primero con dicho
nom#re /ue se aWadeA (i'e el valor del atri#uto en la ta#la eliminar a un valor entero;
E'emplo *. aWadiendo un atributo completamente nue5o
// $conexion es una conexiin con el ser=idor Hyper8a=e
// $idobj es la 4L del objeto a modi#icar
$tablasupr > array3".ombre" >> 29;
$tablaanad > array3".ombre" >> "artgculos"9;
$h8%modi#yobject3$conexion, $idobj, $tablasupr, $tablaanad9;
Nota- Los atri#utos plurilingjesA p; e'; H,)tuloHA se pueden modi(icar de dos maneras; O
#ien proporcionando los valores de los atri#utos en su (orma nativa Hlengua'eHCHt)tuloHA
#ien proporcionando una ta#la con los elementos para cada lengua'e segBn se descri#e
m*s arri#a; +l e'emplo anterior podr)a /uedar entoncesC
E'emplo 7. modificando el atributo Ttulo
$tablasupr > array3"*gtulo" >> "es@Oibros"9;
$tablaanad > array3"*gtulo" >> "es@,rtgculos"9;
$h8%modi#yobject3$conexion, $idobj, $tablasupr, $tablaanad9;
o
E'emplo 8. modificando el atributo Ttulo
$tablasupr > array3"*gtulo" >> array3"es" >> "Oibros"99;
$tablaanad > array3"*gtulo" >> array3"es" >> ",rtgculos", "Ee">>",rtiIel"99;
$h8%modi#yobject3$conexion, $idobj, $tablasupr, $tablaanad9;
+sto elimina el t)tulo espaWol HLi#rosH y aWade el t)tulo espaWol HArt)culosH y el t)tulo alem*n HArti"elH;
E'emplo 9. eliminando atributos
$tablasupr > array3"*gtulo" >> ""9;
$tablaanad > array3"*Ditulo" >> "es@,rtgculos"9;
$h8%modi#yobject3$conexion, $idobj, $tablasupr, $tablaanad9;
Nota- +sto eliminar* todos los atri#utos con el nom#re H,)tuloH y aWadir* un nuevo
atri#uto H,)tuloH; +sto es Btil cuando se desea eliminar atri#utos de (orma recursiva;
Nota- i necesita eliminar todos los atri#utos con un cierto nom#re tendr* /ue pasar una
cadena vac)a como el valor del atri#uto;
Nota- -lo los atri#utos H,itleHA HDescriptionH y HSeyEordH >as)A en ingl<s? mane'ar*n de
(orma apropiada el pre(i'o de idioma; i estos atri#utos no llevaran pre(i'o de idiomaA se
les asignari* el pre(i'o HFFH;
Nota- +l atri#uto HNameH es #astante especial; +n algunos casos no puede ser
completamente eliminado; O#tendr* un mensa'e de error H5hange o( #ase attri#uteH
>H5am#io de atri#uto #aseHA no est* muy claro cuando ocurre?; Por tantoA tendr* siempre
/ue aWadir un nuevo atri#uto Name primero y luego eliminar el anterior;
Nota- No de#e rodear esta (unci-n de llamadas a h3>getandlocB./ ni a h3>unlocB./;
h3>modifyob'ect./ ya lo hace internamente;
Devuelve TRUE si no hay error o FALSE en caso contrario;
h3>M5
>P&P 7_^ 7;3;7A P&P 8 ?
hEZMv 22 mueve o#'etos
Kescripci"n
int h3>m5 > int coneFi-nA array ta#la de id de o#'etoA int id origenA int id destino ?
Mueve los o#'etos cuyas id se especi(ican en el segundo par*metro desde la colecci-n con id 6#
or6Een hasta la colecci-n con el id 6# #est6no; i el id de destino es 3A los o#'etos ser*n disociados de
la colecci-n origen; i esta (uese la Bltima instancia del o#'etoA este ser)a #orrado; i desea #orrar
todas las instancias de una vezA utilice h3>deleteob'ect./;
+l valor devuelto es el nBmero de o#'etos movidos;
$ea tam#i<n h3>cp./A h3>deleteob'ect./;
h3>Ne3>Kocument
>P&P 7_^ 7;3;7A P&P 8 ?
hEZNeEZDocument 22 crear nuevo documento
Kescripci"n
int h3>ne3>document > string registroZdeZo#'etoA string datosZdocumentoA int tamaZdocumento ?
Devuelve un nuevo documento &yperEave en el /ue los datos del documento est*n (i'ados a
#atos_#ocumento y el registro de o#'eto a reE6stro_#e_o1Ueto; La longitud de los #atos_#ocumento
de#e pasarse en tama_#ocumento; +sta (unci-n no inserta el documento en el servidor &yperEave;
$ea tam#i<n h3>;reeKocument./A h3>Kocument,i6e./A h3>Kocument1odyTag./A
h3>JutputKocument./A h3>InsertKocument./;
h3>Jb'rec*Array
>P&P 7_^ 7;3;7A P&P 8 ?
hEZO#'rec0Array 22 convierte atri#utos de registro de o#'eto a ta#la de o#'etos
Kescripci"n
array h3>ob'rec*array > string registroZdeZo#'eto ?
5onvierte un reE6stro_#e_o1Ueto en una ta#la de o#'etos; Las claves de la ta#la resultante son los
nom#res de los atri#utos; Los atri#utos mBltiples como H,)tuloH en distintos idiomas (orman su
propia ta#la; Las claves de esta ta#la son las partes a la iz/uierda de los dos puntos del valor del
atri#uto; ActualmenteA s-lo los atri#utos H,itleHA HDescriptionH y HSeyEordH >as)A en ingl<s? son
correctamente tratados; Otros atri#utos mBltiples generan una ta#la indizada; ActualmenteA s-lo el
atri#uto HGroupH es tratado correctamente;
$ea tam#i<n h3>array*ob'rec./;
h3>Jutput>Kocument
>P&P 7_^ 7;3;7A P&P 8 ?
hEZOutputZDocument 22 Prints hEZdocument
Kescription
int h3>output>document > int hEZdocument ?
Prints the document Eithout the BOD% tag;
For #ac"Eard compati#ilityA h3>outputdocument./ is also accepted; ,his is deprecatedA hoEever;
h3>pConnect
>P&P 7_^ 7;3;7A P&P 8 ?
hEZp5onnect 22 hacer una coneFi-n de #ase de datos permanente
Kescripci"n
int h3>pconnect > string servidorA int puertoA string usuarioA string clave ?
Devuelve un )ndice de coneFi-n si hay <FitoA o FALSE si la coneFi-n no puede hacerse; A#re una
coneFi-n permanente a un servidor &yperEave; 5ada uno de los argumentos de#e ser una cadena
entrecomillada eFcepto el nBmero de puerto; +l argumento usuar6o y la clae son opcionales y
pueden omitirse; +n tal caso no se realizar* ninguna identi(icaci-n con el servidor; +s similar a la
identi(icaci-n an-nima del usuario; +sta (unci-n devuelve un )ndice de coneFi-n /ue se necesita
para otras (unciones de &yperEave; e pueden tener varias coneFiones permanentes a#iertas a la
vez;
$ea tam#i<n h3>Connect./;
h3>PipeKocument
>P&P 7_^ 7;3;7A P&P 8 ?
hEZPipeDocument 22 recupera cual/uier documento
Kescripci"n
int h3>pipedocument > int coneFi-nA int .Do#'eto ?
Devuelve el documento &yperEave cuyo .D de o#'eto es 0Do1Ueto; i el documento tiene enlaces
/ue pueden ser insertadosA de#er*n ha#erse insertado ya; +l documento ser* trans(erido a trav<s de
una coneFi-n de datos especial /ue no #lo/uea la coneFi-n de control;
$ea tam#i<n h3>FetTe+t./ para sa#er m*s so#re inserci-n de enlacesA h3>;reeKocument./A
h3>Kocument,i6e./A h3>Kocument1odyTag./A h3>JutputKocument./;
h3>Moot
>P&P 7_^ 7;3;7A P&P 8 ?
hEZRoot 22 .D del o#'eto ra)z
Kescripci"n
int h3>root > ?
Devuelve la .D de o#'eto de la colecci-n hiper2ra)z; Actualmente siempre vale 3; La colecci-n hi'a
de la hiper2ra)z es la colecci-n ra)z del servidor al /ue se ha conectado;
h3>setlinBroot
>P&P 7_^ 7;3;7A P&P 8 ?
hEZsetlin"root 22 et the id to Ehich lin"s are calculated
Kescription
void h3>setlinBroot > int lin"A int rootid ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
h3>stat
>P&P 7_^ 7;3;7A P&P 8 ?
hEZstat 22 Returns status string
Kescription
string h3>stat > int lin" ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
h3>)nlocB
>P&P 7_^ 7;3;7A P&P 8 ?
hEZ@nloc" 22 des#lo/uea o#'eto
Kescripci"n
int h3>unlocB > int coneFi-nA int .Do#'eto ?
Des#lo/uea un documento para /ue otros usuarios puedan acceder al mismo de nuevo;
$ea tam#i<n h3>FetAnd:ocB./;
h3>2ho
>P&P 7_^ 7;3;7A P&P 8 ?
hEZLho 22 Lista de los usuarios actualmente conectados
Kescripci"n
int h3>3ho > int coneFi-n ?
Devuelve una ta#la de los usuarios actualmente conectados al servidor &yperEave; 5ada elemento
de esta ta#la contiene en s) mismo los elementos .DA nom#reA sistemaA oninceDate
>conectadoDesdeFecha?A onince,ime >conectadoDesde&ora?A ,otal,ime >,iempo,otal? y sel(
>propio?; Hsel(H es 1 si esta l)nea corresponde al usuario /ue realiz- la petici-n;
I:C. Hyper3a5e API ;unctions
Introducci"n
&yperEave has #een developed at ..5M in Graz; .t started Eith the name &yper2G and changed to
&yperEave Ehen it Eas commercialised >in 199K?;
&yperEave is not (ree so(tEare; ,he current versionA 4;4A is availa#le at
httpCDDEEE;hyperEave;comD; A time limited version can #e ordered (or (ree >73 days?;
ee also the &yperEave module;
&yperEave is an in(ormation system similar to a data#ase >&.A &yperEave .n(ormation erver?; .ts
(ocus is the storage and management o( documents; A document can #e any possi#le piece o( data
that may as Eell #e stored in (ile; +ach document is accompanied #y its o#'ect record; ,he o#'ect
record contains meta data (or the document; ,he meta data is a list o( attri#utes Ehich can #e
eFtended #y the user; 5ertain attri#utes are alEays set #y the &yperEave serverA other may #e
modi(ied #y the user;
Me?uirimientos
ince 0331 there is a &yperEave DS availa#le; .t supports !avaA !avacript and 5RR; ,his P&P
+Ftension is #ased on the 5RR inter(ace; .n order to activate the hEapi support in P&P you Eill
have to install the &yperEave DS (irst;
Instalaci"n
A(ter installing the &yperEave DSA con(igure P&P Eith ==76th=h7ap6):D0R.;
Integration 3ith Apache
,he integration Eith Apache and possi#le other servers is already descri#ed in the &yperEave
module Ehich has #een the (irst eFtension to connect a &yperEave erver;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Hyper3a5e API configuration options
Name Kefault Changeable
hEapi;alloEZpersisten
t
=3= P&PZ.N.Z%,+M
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Classes
,he AP. provided #y the &LZAP. eFtension is (ully o#'ect oriented; .t is very similar to the 5RR
inter(ace o( the &yperEave DS; .t consist o( the (olloEing classes;
H2>API
H2>API>Jb'ect
H2>API>Attribute
H2>API>Error
H2>API>Content
H2>API>Meason
ome #asic classes li"e H2>API>,tringA H2>API>,tring>ArrayA etc;A Ehich eFist in the
&yperEave DS have not #een implemented since P&P has poEer(ul replacements (or them;
+ach class has certain methodA Ehose names are identical to its counterparts in the &yperEave
DS; Passing arguments to this (unction di((ers (rom all the other P&P eFtensions #ut is close to the
5RR AP. o( the &L DS; .nstead o( passing several parameters they are all put into an associated
array and passed as one parameter; ,he names o( the "eys are identical to those documented in the
&L DS; ,he common parameters are listed #eloE; .( other parameters are re/uired they Eill #e
documented i( needed;
ob'ectIdentifier ,he name or id o( an o#'ectA e;g; =rootcollection=A =3FM:7AM:KM
3F33333330=;
parentIdentifier ,he name or id o( an o#'ect Ehich is considered to #e a parent;
ob'ect An instance o( class &LZAP.ZO#'ect;
parameters An instance o( class &LZAP.ZO#'ect;
5ersion ,he version o( an o#'ect;
mode An integer value determine the Eay an operation is eFecuted;
attribute,elector Any array o( stringsA each containing a name o( an attri#ute; ,his is used
i( you retrieve the o#'ect record and Eant to include certain attri#utes;
ob'ect$uery A /uery to select certain o#'ect out o( a list o( o#'ects; ,his is used to reduce
the num#er o( o#'ects Ehich Eas delivered #y a (unction li"e h3>api(Gchildren./ or
h3>api(Gfind./;
Nota- Methods returning boolean can return TRUEA FALSE or H2>API>Error o#'ect;
Tabla de contenidos
hEZapiZattri#ute2_"ey 22 Returns "ey o( the attri#ute
hEZapiZattri#ute2_langdepvalue 22 Returns value (or a given language
hEZapiZattri#ute2_value 22 Returns value o( the attri#ute
hEZapiZattri#ute2_values 22 Returns all values o( the attri#ute
hEZapiZattri#ute 22 5reates instance o( class hEZapiZattri#ute
hEZapi2_chec"in 22 5hec"s in an o#'ect
hEZapi2_chec"out 22 5hec"s out an o#'ect
hEZapi2_children 22 Returns children o( an o#'ect
hEZapiZcontent2_mimetype 22 Returns mimetype
hEZapiZcontent2_read 22 Read content
hEZapi2_content 22 Returns content o( an o#'ect
hEZapi2_copy 22 5opies physically
hEZapi2_d#stat 22 Returns statistics a#out data#ase server
hEZapi2_dcstat 22 Returns statistics a#out document cache server
hEZapi2_dstanchors 22 Returns a list o( all destination anchors
hEZapi2_dsto(srcanchor 22 Returns destination o( a source anchor
hEZapiZerror2_count 22 Returns num#er o( reasons
hEZapiZerror2_reason 22 Returns reason o( error
hEZapi2_(ind 22 earch (or o#'ects
hEZapi2_(tstat 22 Returns statistics a#out (ullteFt server
hEapiZhgcsp 22 Returns o#'ect o( class hEZapi
hEZapi2_hEstat 22 Returns statistics a#out &yperEave server
hEZapi2_identi(y 22 Log into &yperEave erver
hEZapi2_in(o 22 Returns in(ormation a#out server con(iguration
hEZapi2_insert 22 .nserts a neE o#'ect
hEZapi2_insertanchor 22 .nserts a neE o#'ect o( type anchor
hEZapi2_insertcollection 22 .nserts a neE o#'ect o( type collection
hEZapi2_insertdocument 22 .nserts a neE o#'ect o( type document
hEZapi2_lin" 22 5reates a lin" to an o#'ect
hEZapi2_loc" 22 Loc"s an o#'ect
hEZapi2_move 22 Moves o#'ect #etEeen collections
hEZapiZcontent 22 5reate neE instance o( class hEZapiZcontent
hEZapiZo#'ect2_assign 22 5lones o#'ect
hEZapiZo#'ect2_attredita#le 22 5hec"s Ehether an attri#ute is edita#le
hEZapiZo#'ect2_count 22 Returns num#er o( attri#utes
hEZapiZo#'ect2_insert 22 .nserts neE attri#ute
hEZapiZo#'ect 22 5reates a neE instance o( class hEZapiZo#'ect
hEZapiZo#'ect2_remove 22 Removes attri#ute
hEZapiZo#'ect2_title 22 Returns the title attri#ute
hEZapiZo#'ect2_value 22 Returns value o( attri#ute
hEZapi2_o#'ect 22 Retrieve attri#ute in(ormation
hEZapi2_o#'ect#yanchor 22 Returns the o#'ect an anchor #elongs to
hEZapi2_parents 22 Returns parents o( an o#'ect
hEZapiZreason2_description 22 Returns description o( reason
hEZapiZreason2_type 22 Returns type o( reason
hEZapi2_remove 22 Delete an o#'ect
hEZapi2_replace 22 Replaces an o#'ect
hEZapi2_setcommittedversion 22 5ommits version other than last version
hEZapi2_srcanchors 22 Returns a list o( all source anchors
hEZapi2_srcso(dst 22 Returns source o( a destination o#'ect
hEZapi2_unloc" 22 @nloc"s a loc"ed o#'ect
hEZapi2_user 22 Returns the oEn user o#'ect
hEZapi2_userlist 22 Returns a list o( all logged in users
h3>api>attribute(GBey
>no version in(ormationA might #e only in 5$?
hEZapiZattri#ute2_"ey 22 Returns "ey o( the attri#ute
Kescription
string h3>api>attribute(GBey > void ?
Returns the name o( the attri#ute;
ee also h3api>attribute>5alue./;
h3>api>attribute(Glangdep5alue
>no version in(ormationA might #e only in 5$?
hEZapiZattri#ute2_langdepvalue 22 Returns value (or a given language
Kescription
string h3>api>attribute(Glangdep5alue > string language ?
Returns the value in the given language o( the attri#ute;
ee also h3api>attribute>5alue./;
h3>api>attribute(G5alue
>no version in(ormationA might #e only in 5$?
hEZapiZattri#ute2_value 22 Returns value o( the attri#ute
Kescription
string h3>api>attribute(G5alue > void ?
Returns the value o( the attri#ute;
ee also h3api>attribute>Bey./A h3api>attribute>5alues./;
h3>api>attribute(G5alues
>no version in(ormationA might #e only in 5$?
hEZapiZattri#ute2_values 22 Returns all values o( the attri#ute
Kescription
array h3>api>attribute(G5alues > void ?
Returns all values o( the attri#ute as an array o( strings;
ee also h3api>attribute>5alue./;
h3>api>attribute
>no version in(ormationA might #e only in 5$?
hEZapiZattri#ute 22 5reates instance o( class hEZapiZattri#ute
Kescription
&LZAP.ZAttri#ute h3>api>attribute > Pstring name PA string valueQQ ?
5reates a neE instance o( hEZapiZattri#ute Eith the given name and value;
h3>api(GchecBin
>no version in(ormationA might #e only in 5$?
hEZapi2_chec"in 22 5hec"s in an o#'ect
Kescription
#ool h3>api(GchecBin > array parameter ?
,his (unction chec"s in an o#'ect or a Ehole hierarchy o( o#'ects; ,he parameters array contains the
re/uired element Ho#'ect.denti(ierH and the optional element HversionHA HcommentHA HmodeH and
Ho#'ectOueryH; HversionH sets the version o( the o#'ect; .t consists o( the ma'or and minor version
separated #y a period; .( the version is not setA the minor version is incremented; HmodeH can #e one
o( the (olloEing valuesC
&LZAP.Z5&+5S.NZNORMAL
5hec"s in and commits the o#'ect; ,he o#'ect must #e a document;
&LZAP.Z5&+5S.NZR+5@R.$+
.( the o#'ect to chec" in is a collectionA all children Eill #e chec"ed in recursively i( they are
documents; ,rying to chec" in a collection Eould result in an error;
&LZAP.Z5&+5S.NZFOR5+Z$+R.ONZ5ON,ROL
5hec"s in an o#'ect even i( it is not under version control;
&LZAP.Z5&+5S.NZR+$+R,Z.FZNO,Z5&ANG+D
5hec" i( the neE version is di((erent (rom the last version; @nless this is the case the o#'ect
Eill #e chec"ed in;
&LZAP.Z5&+5S.NZS++PZ,.M+ZMOD.F.+D
Seeps the time modi(ied (rom the most recent o#'ect;
&LZAP.Z5&+5S.NZNOZA@,OZ5OMM.,
,he o#'ect is not automatically committed on chec"2in;
ee also h3api>checBout./;
h3>api(GchecBout
>no version in(ormationA might #e only in 5$?
hEZapi2_chec"out 22 5hec"s out an o#'ect
Kescription
#ool h3>api(GchecBout > array parameter ?
,his (unction chec"s out an o#'ect or a Ehole hierarchy o( o#'ects; ,he parameters array contains
the re/uired element Ho#'ect.denti(ierH and the optional element HversionHA HmodeH and Ho#'ectOueryH;
HmodeH can #e one o( the (olloEing valuesC
H"_API_CHEC&IN_NORMAL
5hec"s out an o#'ect; ,he o#'ect must #e a document;
H"_API_CHEC&IN_RECURSI$E
.( the o#'ect to chec" out is a collectionA all children Eill #e chec"ed out recursively i( they are
documents; ,rying to chec" out a collection Eould result in an error;
ee also h3api>checBin./;
h3>api(Gchildren
>no version in(ormationA might #e only in 5$?
hEZapi2_children 22 Returns children o( an o#'ect
Kescription
array h3>api(Gchildren > array parameter ?
Retrieves the children o( a collection or the attri#utes o( a document; ,he children can #e (urther
(iltered #y speci(ying an o#'ect /uery; ,he parameter array contains the re/uired elements
Ho#'ect.denti(ierH and the optional elements Hattri#uteelectorH and Ho#'ectOueryH;
,he return value is an array o( o#'ects o( type H2>API>Jb'ect or H2>API>Error;
ee also h3api>parents./;
h3>api>content(Gmimetype
>no version in(ormationA might #e only in 5$?
hEZapiZcontent2_mimetype 22 Returns mimetype
Kescription
string h3>api>content(Gmimetype > void ?
Returns the mimetype o( the content;
h3>api>content(Gread
>no version in(ormationA might #e only in 5$?
hEZapiZcontent2_read 22 Read content
Kescription
string h3>api>content(Gread > string #u((erA integer len ?
Reads len #ytes (rom the content into the given #u((er;
h3>api(Gcontent
>no version in(ormationA might #e only in 5$?
hEZapi2_content 22 Returns content o( an o#'ect
Kescription
&LZAP.Z5ontent h3>api(Gcontent > array parameter ?
,his (unction returns the content o( a document as an o#'ect o( type h3>api>content; ,he
parameter array contains the re/uired elements Ho#'ectidenti(ierH and the optional element HmodeH;
,he mode can #e one o( the constants H"_API_CONTENT_ALLLIN&SA
H"_API_CONTENT_REACHA(LELIN&S or H"_API_CONTENT_PLAIN;
H"_API_CONTENT_ALLLIN&S means to insert all anchors even i( the destination is not
reacha#le; H"_API_CONTENT_REACHA(LELIN&S tells h3>api>content./ to insert only
reacha#le lin"s and H"_API_CONTENT_PLAIN Eill lead to document Eithout any lin"s;
h3>api(Gcopy
>no version in(ormationA might #e only in 5$?
hEZapi2_copy 22 5opies physically
Kescription
hEZapiZo#'ect h3>api(Gcopy > array parameter ?
,his (unction Eill ma"e a physical copy including the content i( it eFists and returns the neE o#'ect
or an error o#'ect; ,he parameter array contains the re/uired elements Ho#'ect.denti(ierH and
HdestinationParent.denti(ierH; ,he optional parameter is Hattri#uteelectorHm
ee also h3api>mo5e./A h3api>linB./;
h3>api(Gdbstat
>no version in(ormationA might #e only in 5$?
hEZapi2_d#stat 22 Returns statistics a#out data#ase server
Kescription
hEZapiZo#'ect h3>api(Gdbstat > array parameter ?
ee also h3api>dcstat./A h3api>h3stat./A h3api>ftstat./;
h3>api(Gdcstat
>no version in(ormationA might #e only in 5$?
hEZapi2_dcstat 22 Returns statistics a#out document cache server
Kescription
hEZapiZo#'ect h3>api(Gdcstat > array parameter ?
ee also h3api>h3stat./A h3api>dbstat./A h3api>ftstat./;
h3>api(Gdstanchors
>no version in(ormationA might #e only in 5$?
hEZapi2_dstanchors 22 Returns a list o( all destination anchors
Kescription
array h3>api(Gdstanchors > array parameter ?
Retrieves all destination anchors o( an o#'ect; ,he parameter array contains the re/uired element
Ho#'ect.denti(ierH and the optional elements Hattri#uteelectorH and Ho#'ectOueryH;
ee also h3api>srcanchors./;
h3>api(Gdstofsrcanchor
>no version in(ormationA might #e only in 5$?
hEZapi2_dsto(srcanchor 22 Returns destination o( a source anchor
Kescription
hEZapiZo#'ect h3>api(Gdstofsrcanchor > array parameter ?
Retrieves the destination o#'ect pointed #y the speci(ied source anchors; ,he destination o#'ect can
either #e a destination anchor or a Ehole document; ,he parameters array contains the re/uired
element Ho#'ect.denti(ierH and the optional element Hattri#uteelectorH;
ee also h3api>srcanchors./A h3api>dstanchors./A h3api>ob'ectbyanchor./;
h3>api>error(Gcount
>no version in(ormationA might #e only in 5$?
hEZapiZerror2_count 22 Returns num#er o( reasons
Kescription
int h3>api>error(Gcount > void ?
Returns the num#er o( error reasons;
ee also h3api>error>reason./;
h3>api>error(Greason
>no version in(ormationA might #e only in 5$?
hEZapiZerror2_reason 22 Returns reason o( error
Kescription
&LZAP.ZReason h3>api>error(Greason > void ?
Returns the (irst error reason;
ee also h3api>error>count./;
h3>api(Gfind
>no version in(ormationA might #e only in 5$?
hEZapi2_(ind 22 earch (or o#'ects
Kescription
array h3>api(Gfind > array parameter ?
,his (unctions searches (or o#'ects either #y eFecuting a "ey orDand (ull teFt /uery; ,he (ound
o#'ects can (urther #e (iltered #y an optional o#'ect /uery; ,hey are sorted #y their importance; ,he
second search operation is relatively sloE and its result can #e limited to a certain num#er o( hits;
,his alloEs to per(orm an incremental searchA each returning 'ust a su#set o( all (ound documentsA
starting at a given indeF; ,he parameter array contains the H"ey/ueryH orDand H(ullteFt/ueryH
depending on Eho you Eould li"e to search; Optional parameters are Ho#'ect/ueryHA HscopeHA
HlanguagesH and Hattri#uteselectorH; .n case o( an incremental search the optional parameters
Hstart.ndeFHA num#erO(O#'ects,oGetH and HeFactMatch@nitH can #e passed;
h3>api(Gftstat
>no version in(ormationA might #e only in 5$?
hEZapi2_(tstat 22 Returns statistics a#out (ullteFt server
Kescription
hEZapiZo#'ect h3>api(Gftstat > array parameter ?
ee also h3api>dcstat./A h3api>dbstat./A h3api>h3stat./;
h3api>hgcsp
>no version in(ormationA might #e only in 5$?
hEapiZhgcsp 22 Returns o#'ect o( class hEZapi
Kescription
&LZAP. h3api>hgcsp > string hostname PA int portQ ?
Opens a connection to the &yperEave server on host hostname; ,he protocol used is &G5P; .( you
do not pass a port num#erA 81M is used;
ee also h3api>h3tp./;
h3>api(Gh3stat
>no version in(ormationA might #e only in 5$?
hEZapi2_hEstat 22 Returns statistics a#out &yperEave server
Kescription
hEZapiZo#'ect h3>api(Gh3stat > array parameter ?
ee also h3api>dcstat./A h3api>dbstat./A h3api>ftstat./;
h3>api(Gidentify
>no version in(ormationA might #e only in 5$?
hEZapi2_identi(y 22 Log into &yperEave erver
Kescription
#ool h3>api(Gidentify > array parameter ?
Logs into the &yperEave erver; ,he parameter array must contain the elements HusernameH and
HpassEordH;
,he return value Eill #e an o#'ect o( type H2>API>Error i( identi(ication (ailed or ,R@+ i( it Eas
success(ul;
h3>api(Ginfo
>no version in(ormationA might #e only in 5$?
hEZapi2_in(o 22 Returns in(ormation a#out server con(iguration
Kescription
array h3>api(Ginfo > array parameter ?
ee also h3api>dcstat./A h3api>dbstat./A h3api>ftstat./A h3api>h3stat./;
h3>api(Ginsert
>no version in(ormationA might #e only in 5$?
hEZapi2_insert 22 .nserts a neE o#'ect
Kescription
hEZapiZo#'ect h3>api(Ginsert > array parameter ?
.nsert a neE o#'ect; ,he o#'ect type can #e userA groupA document or anchor; Depending on the type
other o#'ect attri#utes has to #e set; ,he parameter array contains the re/uired elements Ho#'ectH and
HcontentH >i( the o#'ect is a document? and the optional parameters HparametersHA HmodeH and
Hattri#uteelectorH; ,he Ho#'ectH must contain all attri#utes o( the o#'ect; HparametersH is an o#'ect as
Eell holding (urther attri#utes li"e the destination >attri#ute "ey is HParentH?; HcontentH is the content
o( the document; HmodeH can #e a com#ination o( the (olloEing (lagsC
H"_API_INSERT_NORMAL
,he o#'ect in inserted into the server;
H"_API_INSERT_FORCE_$ERSION_CONTROL
H"_API_INSERT_AUTOMATIC_CHEC&OUT
H"_API_INSERT_PLAIN
H"_API_INSERT_&EEP_TIME_MODIFIED
H"_API_INSERT_DELAY_INDE%IN#
ee also h3api>replace./;
h3>api(Ginsertanchor
>no version in(ormationA might #e only in 5$?
hEZapi2_insertanchor 22 .nserts a neE o#'ect o( type anchor
Kescription
hEZapiZo#'ect h3>api(Ginsertanchor > array parameter ?
,his (unction is a shortcut (or h3api>insert./; .t inserts an o#'ect o( type anchor and sets some o(
the attri#utes re/uired (or an anchor; ,he parameter array contains the re/uired elements Ho#'ectH and
Hdocument.denti(ierH and the optional elements Hdestination.denti(ierHA HparameterHA HhintH and
Hattri#uteelectorH; ,he Hdocument.denti(ierH speci(ies the document Ehere the anchor shall #e
inserted; ,he target o( the anchor is set in Hdestination.denti(ierH i( it already eFists; .( the target does
not eFists the element HhintH has to #e set to the name o( o#'ect Ehich is supposed to #e inserted
later; Once it is inserted the anchor target is resolved automatically;
ee also h3api>insertdocument./A h3api>insertcollection./A h3api>insert./;
h3>api(Ginsertcollection
>no version in(ormationA might #e only in 5$?
hEZapi2_insertcollection 22 .nserts a neE o#'ect o( type collection
Kescription
hEZapiZo#'ect h3>api(Ginsertcollection > array parameter ?
,his (unction is a shortcut (or h3api>insert./; .t inserts an o#'ect o( type collection and sets some
o( the attri#utes re/uired (or a collection; ,he parameter array contains the re/uired elements Ho#'ectH
and Hparent.denti(ierH and the optional elements HparameterH and Hattri#uteelectorH; ee h3api>insert
./ (or the meaning o( each element;
ee also h3api>insertdocument./A h3api>insertanchor./A h3api>insert./;
h3>api(Ginsertdocument
>no version in(ormationA might #e only in 5$?
hEZapi2_insertdocument 22 .nserts a neE o#'ect o( type document
Kescription
hEZapiZo#'ect h3>api(Ginsertdocument > array parameter ?
,his (unction is a shortcut (or h3api>insert./; .t inserts an o#'ect Eith content and sets some o( the
attri#utes re/uired (or a document; ,he parameter array contains the re/uired elements Ho#'ectHA
Hparent.denti(ierH and HcontentH and the optional elements HmodeHA HparameterH and Hattri#uteelectorH;
ee h3api>insert./ (or the meaning o( each element;
ee also h3api>insert./ h3api>insertanchor./A h3api>insertcollection./;
h3>api(GlinB
>no version in(ormationA might #e only in 5$?
hEZapi2_lin" 22 5reates a lin" to an o#'ect
Kescription
#ool h3>api(GlinB > array parameter ?
5reates a lin" to an o#'ect; Accessing this lin" is li"e accessing the o#'ect to lin"s points to; ,he
parameter array contains the re/uired elements Ho#'ect.denti(ierH and HdestinationParent.denti(ierH;
HdestinationParent.denti(ierH is the target collection;
,he (unction returns TRUE on success or an error o#'ect;
ee also h3api>copy./;
h3>api(GlocB
>no version in(ormationA might #e only in 5$?
hEZapi2_loc" 22 Loc"s an o#'ect
Kescription
#ool h3>api(GlocB > array parameter ?
Loc"s an o#'ect (or eFclusive editing #y the user calling this (unction; ,he o#'ect can #e only
unloc"ed #y this user or the system user; ,he parameter array contains the re/uired element
Ho#'ect.denti(ierH and the optional parameters HmodeH and Ho#'ect/ueryH; HmodeH determines hoE an
o#'ect is loc"ed; H"_API_LOC&_NORMAL meansA an o#'ect is loc"ed until it is unloc"ed;
H"_API_LOC&_RECURSI$E is only valid (or collection and loc"s all o#'ects Eithin the
collection and possi#le su#collections; H"_API_LOC&_SESSION meansA an o#'ect is loc"ed only
as long as the session is valid;
ee also h3api>unlocB./;
h3>api(Gmo5e
>no version in(ormationA might #e only in 5$?
hEZapi2_move 22 Moves o#'ect #etEeen collections
Kescription
#ool h3>api(Gmo5e > array parameter ?
ee also h3>ob'rec*array./;
h3>api>content
>no version in(ormationA might #e only in 5$?
hEZapiZcontent 22 5reate neE instance o( class hEZapiZcontent
Kescription
&LZAP.Z5ontent h3>api>content > string contentA string mimetype ?
5reates a neE content o#'ect (rom the string content; ,he mimetype is set to m6met?pe;
h3>api>ob'ect(Gassign
>no version in(ormationA might #e only in 5$?
hEZapiZo#'ect2_assign 22 5lones o#'ect
Kescription
#ool h3>api>ob'ect(Gassign > array parameter ?
5lones the attri#utes o( an o#'ect;
h3>api>ob'ect(Gattreditable
>no version in(ormationA might #e only in 5$?
hEZapiZo#'ect2_attredita#le 22 5hec"s Ehether an attri#ute is edita#le
Kescription
#ool h3>api>ob'ect(Gattreditable > array parameter ?
h3>api>ob'ect(Gcount
>no version in(ormationA might #e only in 5$?
hEZapiZo#'ect2_count 22 Returns num#er o( attri#utes
Kescription
int h3>api>ob'ect(Gcount > array parameter ?
h3>api>ob'ect(Ginsert
>no version in(ormationA might #e only in 5$?
hEZapiZo#'ect2_insert 22 .nserts neE attri#ute
Kescription
#ool h3>api>ob'ect(Ginsert > &LZAP.ZAttri#ute attri#ute ?
Adds an attri#ute to the o#'ect; Returns TRUE on success and otherEise FALSE;
ee also h3api>ob'ect>remo5e./;
h3>api>ob'ect
>no version in(ormationA might #e only in 5$?
hEZapiZo#'ect 22 5reates a neE instance o( class hEZapiZo#'ect
Kescription
hEZapiZo#'ect h3>api>ob'ect > array parameter ?
ee also h3api>locB./;
h3>api>ob'ect(Gremo5e
>no version in(ormationA might #e only in 5$?
hEZapiZo#'ect2_remove 22 Removes attri#ute
Kescription
#ool h3>api>ob'ect(Gremo5e > string name ?
Removes the attri#ute Eith the given name; Returns TRUE on success and otherEise FALSE;
ee also h3api>ob'ect>insert./;
h3>api>ob'ect(Gtitle
>no version in(ormationA might #e only in 5$?
hEZapiZo#'ect2_title 22 Returns the title attri#ute
Kescription
string h3>api>ob'ect(Gtitle > array parameter ?
h3>api>ob'ect(G5alue
>no version in(ormationA might #e only in 5$?
hEZapiZo#'ect2_value 22 Returns value o( attri#ute
Kescription
string h3>api>ob'ect(G5alue > string name ?
Returns the value o( the attri#ute Eith the given name or FALSE i( an error occurred;
h3>api(Gob'ect
>no version in(ormationA might #e only in 5$?
hEZapi2_o#'ect 22 Retrieve attri#ute in(ormation
Kescription
hEZapiZo#'ect h3>api(Gob'ect > array parameter ?
,his (unction retrieves the attri#ute in(ormation o( an o#'ect o( any version; .t Eill not return the
document content; ,he parameter array contains the re/uired elements Ho#'ect.denti(ierH and the
optional elements Hattri#uteelectorH and HversionH;
,he returned o#'ect is an instance o( class H2>API>Jb'ect on success or H2>API>Error i( an
error occurred;
,his simple eFample retrieves an o#'ect and chec"s (or errors;
E'emplo !. Metrie5e an ob'ect
<?php
#unction handle%error3$error9
:
$reason > $errorF>reason329;
echo "*ype@ <b>";
s8itch 3$reasonF>type399 :
case 2@
echo "Error";
breaI;
case 6@
echo "7arninE";
breaI;
case C@
echo ""essaEe";
breaI;
;
echo "</b><br />Vn";
echo "Lescription@ " . $reasonF>description3"en"9 . "<br />Vn";
;
#unction list%attr3$obj9
:
echo "<table>Vn";
$count > $objF>count39;
#or 3$i>2; $i<$count; $i[[9 :
$attr > $objF>attribute3$i9;
print#3"<tr><td aliEn>V"riEhtV" bEcolor>V"Uc2c2c2V"><b>\s</b></td><td bEcolor>V"US2S2S2V">\s</td></tr>Vn",
$attrF>Iey39, $attrF>=alue399;
;
echo "</table>Vn";
;
$h8api > h8api%hEcsp3$E%con#iE)H?&*.,"E/9;
$parms > array3"object4denti#ier">>"rootcollection", "attribute&elector">>array3"*itle", ".ame", "Locument*ype"99;
$root > $h8apiF>object3$parms9;
i# 3Eet%class3$root9 >> "H7%,4%Error"9 :
handle%error3$root9;
exit;
;
list%attr3$root9;
?>
ee also h3api>content./;
h3>api(Gob'ectbyanchor
>no version in(ormationA might #e only in 5$?
hEZapi2_o#'ect#yanchor 22 Returns the o#'ect an anchor #elongs to
Kescription
hEZapiZo#'ect h3>api(Gob'ectbyanchor > array parameter ?
,his (unction retrieves an o#'ect the speci(ied anchor #elongs to; ,he parameter array contains the
re/uired element Ho#'ect.denti(ierH and the optional element Hattri#uteelectorH;
ee also h3api>dstofsrcanchor./A h3api>srcanchors./A h3api>dstanchors./;
h3>api(Gparents
>no version in(ormationA might #e only in 5$?
hEZapi2_parents 22 Returns parents o( an o#'ect
Kescription
array h3>api(Gparents > array parameter ?
Retrieves the parents o( an o#'ect; ,he parents can #e (urther (iltered #y speci(ying an o#'ect /uery;
,he parameter array contains the re/uired elements Ho#'ectidenti(ierH and the optional elements
Hattri#uteselectorH and Ho#'ect/ueryH;
,he return value is an array o( o#'ects o( type H2>API>Jb'ect or H2>API>Error;
ee also h3api>children./;
h3>api>reason(Gdescription
>no version in(ormationA might #e only in 5$?
hEZapiZreason2_description 22 Returns description o( reason
Kescription
string h3>api>reason(Gdescription > void ?
Returns the description o( a reason
h3>api>reason(Gtype
>no version in(ormationA might #e only in 5$?
hEZapiZreason2_type 22 Returns type o( reason
Kescription
&LZAP.ZReason h3>api>reason(Gtype > void ?
Returns the type o( a reason;
h3>api(Gremo5e
>no version in(ormationA might #e only in 5$?
hEZapi2_remove 22 Delete an o#'ect
Kescription
#ool h3>api(Gremo5e > array parameter ?
Removes an o#'ect (rom the speci(ied parent; 5ollections Eill #e removed recursively; %ou can pass
an optional o#'ect /uery to remove only those o#'ects Ehich match the /uery; An o#'ect Eill #e
deleted physically i( it is the last instance; ,he parameter array contains the re/uired elements
Ho#'ectidenti(ierH and Hparentidenti(ierH; .( you Eant to remove a user or group Hparentidenti(ierH can #e
s"ipped; ,he optional parameter HmodeH determines hoE the deletion is per(ormed; .n normal mode
the o#'ect Eill not #e removed physically until all instances are removed; .n physical mode all
instances o( the o#'ect Eill #e deleted immediately; .n removelin"s mode all re(erences to and (rom
the o#'ects Eill #e deleted as Eell; .n nonrecursive the deletion is not per(ormed recursive;
Removing a collection Ehich is not empty Eill cause an error;
ee also h3api>mo5e./;
h3>api(Greplace
>no version in(ormationA might #e only in 5$?
hEZapi2_replace 22 Replaces an o#'ect
Kescription
hEZapiZo#'ect h3>api(Greplace > array parameter ?
Replaces the attri#utes and the content o( an o#'ect ,he parameter array contains the re/uired
elements Ho#'ect.denti(ierH and Ho#'ectH and the optional parameters HcontentHA HparametersHA HmodeH and
Hattri#uteelectorH; Ho#'ect.denti(ierH contains the o#'ect to #e replaced; Ho#'ectH contains the neE
o#'ect; HcontentH contains the neE content; HparametersH contain eFtra in(ormation (or &,ML
documents; &,MLZLanguage is the letter a##reviation o( the language o( the title; &,MLZBase
sets the #ase attri#ute o( the &,ML document; HmodeH can #e a com#ination o( the (olloEing (lagsC
H"_API_REPLACE_NORMAL
,he o#'ect on the server is replace Eith the o#'ect passed;
H"_API_REPLACE_FORCE_$ERSION_CONTROL
H"_API_REPLACE_AUTOMATIC_CHEC&OUT
H"_API_REPLACE_AUTOMATIC_CHEC&IN
H"_API_REPLACE_PLAIN
H"_API_REPLACE_RE$ERT_IF_NOT_CHAN#ED
H"_API_REPLACE_&EEP_TIME_MODIFIED
ee also h3api>insert./;
h3>api(Gsetcommitted5ersion
>no version in(ormationA might #e only in 5$?
hEZapi2_setcommittedversion 22 5ommits version other than last version
Kescription
hEZapiZo#'ect h3>api(Gsetcommitted5ersion > array parameter ?
5ommits a version o( a document; ,he committed version is the one Ehich is visi#le to users Eith
read access; By de(ault the last version is the committed version;
ee also h3api>checBin./A h3api>checBout./A h3api>re5ert./;
h3>api(Gsrcanchors
>no version in(ormationA might #e only in 5$?
hEZapi2_srcanchors 22 Returns a list o( all source anchors
Kescription
array h3>api(Gsrcanchors > array parameter ?
Retrieves all source anchors o( an o#'ect; ,he parameter array contains the re/uired element
Ho#'ect.denti(ierH and the optional elements Hattri#uteelectorH and Ho#'ectOueryH;
ee also h3api>dstanchors./;
h3>api(Gsrcsofdst
>no version in(ormationA might #e only in 5$?
hEZapi2_srcso(dst 22 Returns source o( a destination o#'ect
Kescription
array h3>api(Gsrcsofdst > array parameter ?
Retrieves all the source anchors pointing to the speci(ied destination; ,he destination o#'ect can
either #e a destination anchor or a Ehole document; ,he parameters array contains the re/uired
element Ho#'ect.denti(ierH and the optional element Hattri#uteelectorH and Ho#'ectOueryH; ,he (unction
returns an array o( o#'ects or an error;
ee also h3api>dstofsrcanchor./;
h3>api(GunlocB
>no version in(ormationA might #e only in 5$?
hEZapi2_unloc" 22 @nloc"s a loc"ed o#'ect
Kescription
#ool h3>api(GunlocB > array parameter ?
@nloc"s a loc"ed o#'ect; Only the user Eho has loc"ed the o#'ect and the system user may unloc"
an o#'ect; ,he parameter array contains the re/uired element Ho#'ect.denti(ierH and the optional
parameters HmodeH and Ho#'ect/ueryH; ,he meaning o( HmodeH is the same as in (unction h3api>locB
./;
Returns TRUE on success or an o#'ect o( class &LZAP.Z+rror;
ee also h3api>locB./;
h3>api(Guser
>no version in(ormationA might #e only in 5$?
hEZapi2_user 22 Returns the oEn user o#'ect
Kescription
hEZapiZo#'ect h3>api(Guser > array parameter ?
ee also h3api>userlist./;
h3>api(Guserlist
>no version in(ormationA might #e only in 5$?
hEZapi2_userlist 22 Returns a list o( all logged in users
Kescription
array h3>api(Guserlist > array parameter ?
ee also h3api>user./;
I:CI. ;unciones Inter1ase
Tabla de contenidos
i#aseZaddZuser 22 Add a user to a security data#ase >only (or .BK or later?
i#aseZa((ectedZroEs 22 Return the num#er o( roEs that Eere a((ected #y the previous /uery
i#aseZ#ac"up 22 .nitiates a #ac"up tas" in the service manager and returns immediately
i#aseZ#lo#Zadd 22 Add data into a neEly created #lo#
i#aseZ#lo#Zcancel 22 5ancel creating #lo#
i#aseZ#lo#Zclose 22 5lose #lo#
i#aseZ#lo#Zcreate 22 5reate a neE #lo# (or adding data
i#aseZ#lo#Zecho 22 Output #lo# contents to #roEser
i#aseZ#lo#Zget 22 Get len #ytes data (rom open #lo#
i#aseZ#lo#Zimport 22 5reate #lo#A copy (ile in itA and close it
i#aseZ#lo#Zin(o 22 Return #lo# length and other use(ul in(o
i#aseZ#lo#Zopen 22 Open #lo# (or retrieving data parts
i#aseZclose 22
i#aseZcommitZret 22 5ommit a transaction Eithout closing it
i#aseZcommit 22 5ommit a transaction
i#aseZconnect 22
i#aseZd#Zin(o 22 Re/uest statistics a#out a data#ase
i#aseZdeleteZuser 22 Delete a user (rom a security data#ase >only (or .BK or later?
i#aseZdropZd# 22 Drops a data#ase
i#aseZerrcode 22 Return an error code
i#aseZerrmsg 22 Return error messages
i#aseZeFecute 22
i#aseZ(etchZassoc 22 Fetch a result roE (rom a /uery as an associative array
i#aseZ(etchZo#'ect 22 Get an o#'ect (rom a .nterBase data#ase
i#aseZ(etchZroE 22
i#aseZ(ieldZin(o 22 Get in(ormation a#out a (ield
i#aseZ(reeZeventZhandler 22 5ancels a registered event handler
i#aseZ(reeZ/uery 22
i#aseZ(reeZresult 22
i#aseZgenZid 22 .ncrements the named generator and returns its neE value
i#aseZmaintainZd# 22 +Fecute a maintenance command on the data#ase server
i#aseZmodi(yZuser 22 Modi(y a user to a security data#ase >only (or .BK or later?
i#aseZnameZresult 22 Assigns a name to a result set
i#aseZnumZ(ields 22 Get the num#er o( (ields in a result set
i#aseZnumZparams 22 Return the num#er o( parameters in a prepared /uery
i#aseZparamZin(o 22 Return in(ormation a#out a parameter in a prepared /uery
i#aseZpconnect 22
i#aseZprepare 22
i#aseZ/uery 22
i#aseZrestore 22 .nitiates a restore tas" in the service manager and returns immediately
i#aseZroll#ac"Zret 22 Roll #ac" a transaction Eithout closing it
i#aseZroll#ac" 22 Roll #ac" a transaction
i#aseZserverZin(o 22 Re/uest in(ormation a#out a data#ase server
i#aseZserviceZattach 22 5onnect to the service manager
i#aseZserviceZdetach 22 Disconnect (rom the service manager
i#aseZsetZeventZhandler 22 Register a call#ac" (unction to #e called Ehen events are posted
i#aseZtime(mt 22
i#aseZtrans 22 Begin a transaction
i#aseZEaitZevent 22 Lait (or an event to #e posted #y the data#ase
ibase>add>user
>P&P 8 _^ 8;0;3A P&P 4?
i#aseZaddZuser 22 Add a user to a security data#ase >only (or .BK or later?
Kescription
#ool ibase>add>user > resource serviceZhandleA string userZnameA string passEord PA string
(irstZname PA string middleZname PA string lastZnameQQQ ?
P&P 8 uses sererA #1a_user_name and #1a_user_pass7or# instead o( ser6ce_han#le parameter;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also ibase>modify>user./ and ibase>delete>user./;
ibase>affected>ro3s
>P&P 4?
i#aseZa((ectedZroEs 22 Return the num#er o( roEs that Eere a((ected #y the previous /uery
Kescription
int ibase>affected>ro3s > Presource lin"Zidenti(ierQ ?
,his (unction returns the num#er o( roEs that Eere a((ected #y the previous /uery that Eas eFecuted
(rom Eithin the transaction conteFt speci(ied #y l6n>_6#ent696er; .( l6n>_6#ent696er is a connection
resourceA its de(ault transaction is used;
ee also ibase>?uery./ and ibase>e+ecute./;
ibase>bacBup
>P&P 4?
i#aseZ#ac"up 22 .nitiates a #ac"up tas" in the service manager and returns immediately
Kescription
miFed ibase>bacBup > resource serviceZhandleA string sourceZd#A string destZ(ile PA int options PA
#ool ver#oseQQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ibase>blob>add
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZ#lo#Zadd 22 Add data into a neEly created #lo#
Kescription
#ool ibase>blob>add > resource #lo#ZhandleA string data ?
ibase>blob>add./ adds data into a #lo# created Eith ibase>blob>create./; Devuelve TRUE si todo
se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also ibase>blob>cancel./A ibase>blob>close./A ibase>blob>create./ and ibase>blob>import./;
ibase>blob>cancel
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZ#lo#Zcancel 22 5ancel creating #lo#
Kescription
#ool ibase>blob>cancel > resource #lo#Zhandle ?
,his (unction Eill discard a BLOB created #y ibase>create>blob./ i( it has not yet #een closed #y
ibase>blob>close./; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also ibase>blob>close./A ibase>blob>create./ and ibase>blob>import./;
ibase>blob>close
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZ#lo#Zclose 22 5lose #lo#
Kescription
miFed ibase>blob>close > resource #lo#Zhandle ?
,his (unction closes a BLOB that has either #een opened (or reading #y ibase>open>blob./ or has
#een opened (or Eriting #y ibase>create>blob./; .( the BLOB Eas #eing readA this (unction returns
TRUE on successA i( the BLOB Eas #eing Eritten toA this (unction returns a string containing the
BLOB id that has #een assigned to it #y the data#ase; On (ailureA this (unction returns FALSE;
ee also ibase>blob>cancel./ and ibase>blob>open./;
ibase>blob>create
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZ#lo#Zcreate 22 5reate a neE #lo# (or adding data
Kescription
resource ibase>blob>create > Presource lin"Zidenti(ierQ ?
ibase>blob>create./ creates a neE BLOB (or (illing Eith data; .t returns a BLOB handle (or later
use Eith ibase>blob>add./ or FALSE on (ailure;
ee also ibase>blob>add./A ibase>blob>cancel./A ibase>blob>close./ and ibase>blob>import./;
ibase>blob>echo
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZ#lo#Zecho 22 Output #lo# contents to #roEser
Kescription
#ool ibase>blob>echo > resource lin"Zidenti(ierA string #lo#Zid ?
#ool ibase>blob>echo > string #lo#Zid ?
,his (unction opens a BLOB (or reading and sends its contents directly to standard output >the
#roEserA in most cases?; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de
(allo;
ee also ibase>blob>open./A ibase>blob>close./ and ibase>blob>get./;
ibase>blob>get
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZ#lo#Zget 22 Get len #ytes data (rom open #lo#
Kescription
string ibase>blob>get > resource #lo#ZhandleA int len ?
,his (unction returns at most len #ytes (rom a BLOB that has #een opened (or reading #y
ibase>blob>open./; Returns FALSE on (ailure;
<?php
$sQl > "&EOER* blob%=alue S'?" table";
$result > ibase%Query3$sQl9;
$data > ibase%#etch%object3$result9;
$blob%data > ibase%blob%in#o3$dataF>ZO?Z%(,O+E9;
$blob%hndl > ibase%blob%open3$dataF>ZO?Z%(,O+E9;
echo ibase%blob%Eet3$blob%hndl, $blob%data)2/9;
?>
Lhilst this eFample doesnHt do much more than a Hi#aseZ#lo#Zecho>Ydata2_BLOBZ$AL@+?H Eould
doA it does shoE you hoE to get in(ormation into a Yvaria#le to manipulate as you please;
Nota- .t is not possi#le to read (rom a BLOB that has #een opened (or Eriting #y
ibase>blob>create./;
ee also ibase>blob>open./A ibase>blob>close./ and ibase>blob>echo./;
ibase>blob>import
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZ#lo#Zimport 22 5reate #lo#A copy (ile in itA and close it
Kescription
string ibase>blob>import > resource lin"Zidenti(ierA resource (ileZhandle ?
string ibase>blob>import > resource (ileZhandle ?
,his (unction creates a BLOBA reads an entire (ile into itA closes it and returns the assigned BLOB
id; ,he (ile handle is a handle returned #y fopen./; Returns FALSE on (ailure;
E'emplo !. ibase>blob>import./ e+ample
<?php
$dbh > ibase%connect3$host, $username, $pass8ord9;
$#ilename > M/tmp/barM;
$#d > #open3$#ilename, MrM9;
i# 3$#d9 :
$blob > ibase%blob%import3$dbh, $#d9;
#close3$#d9;
i# 3!is%strinE3$blob99 :
// import #ailed
; else :
$Query > "4.&E'* 4.*? #oo 3name, data9 (,O+E& 3M$#ilenameM, ?9";
$prepared > ibase%prepare3$dbh, $Query9;
i# 3!ibase%execute3$prepared, $blob99 :
// record insertion #ailed
;
;
; else :
// unable to open the data #ile
;
?>
ee also ibase>blob>add./A ibase>blob>cancel./A ibase>blob>close./ and ibase>blob>create./;
ibase>blob>info
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZ#lo#Zin(o 22 Return #lo# length and other use(ul in(o
Kescription
array ibase>blob>info > resource lin"Zidenti(ierA string #lo#Zid ?
array ibase>blob>info > string #lo#Zid ?
Returns an array containing in(ormation a#out a BLOB; ,he in(ormation returned consists o( the
length o( the BLOBA the num#er o( segments it containsA the size o( the largest segmentA and
Ehether it is a stream BLOB or a segmented BLOB;
ibase>blob>open
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZ#lo#Zopen 22 Open #lo# (or retrieving data parts
Kescription
resource ibase>blob>open > resource lin"Zidenti(ierA string #lo#Zid ?
resource ibase>blob>open > string #lo#Zid ?
ibase>blob>open./ opens an eFisting BLOB (or reading; .t returns a BLOB handle (or later use Eith
ibase>blob>get./ or FALSE on (ailure;
ee also ibase>blob>close./A ibase>blob>echo./ and ibase>blob>get./;
ibase>close
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
i#aseZclose 22
Kescripcion
ibase>close > ?
ibase>commit>ret
>P&P 4?
i#aseZcommitZret 22 5ommit a transaction Eithout closing it
Kescription
#ool ibase>commit>ret > Presource lin"ZorZtransZidenti(ierQ ?
.( called Eithout an argumentA this (unction commits the de(ault transaction o( the de(ault lin"; .( the
argument is a connection identi(ierA the de(ault transaction o( the corresponding connection Eill #e
committed; .( the argument is a transaction identi(ierA the corresponding transaction Eill #e
committed; ,he transaction conteFt Eill #e retainedA so statements eFecuted (rom Eithin this
transaction Eill not #e invalidated; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE
en caso de (allo;
ibase>commit
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZcommit 22 5ommit a transaction
Kescription
#ool ibase>commit > Presource lin"ZorZtransZidenti(ierQ ?
.( called Eithout an argumentA this (unction commits the de(ault transaction o( the de(ault lin"; .( the
argument is a connection identi(ierA the de(ault transaction o( the corresponding connection Eill #e
committed; .( the argument is a transaction identi(ierA the corresponding transaction Eill #e
committed; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ibase>connect
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
i#aseZconnect 22
Kescripcion
ibase>connect > ?
ibase>db>info
>P&P 4?
i#aseZd#Zin(o 22 Re/uest statistics a#out a data#ase
Kescription
string ibase>db>info > resource serviceZhandleA string d#A int action PA int argumentQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ibase>delete>user
>P&P 8 _^ 8;0;3A P&P 4?
i#aseZdeleteZuser 22 Delete a user (rom a security data#ase >only (or .BK or later?
Kescription
#ool ibase>delete>user > resource serviceZhandleA string userZname ?
P&P 8 uses sererA #1a_user_name and #1a_user_pass7or# instead o( ser6ce_han#le parameter;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also ibase>add>user./ and ibase>modify>user./;
ibase>drop>db
>P&P 4?
i#aseZdropZd# 22 Drops a data#ase
Kescription
#ool ibase>drop>db > Presource connectionQ ?
,his (unctions drops a data#ase that Eas opened #y either ibase>connect./ or ibase>pconnect./;
,he data#ase is closed and deleted (rom the server; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
ee also ibase>connect./ and ibase>pconnect./;
ibase>errcode
>P&P 4?
i#aseZerrcode 22 Return an error code
Kescription
int ibase>errcode > void ?
Returns the error code that resulted (rom the most recent .nterBase (unction call; Returns FALSE i(
no error occurred;
ee also ibase>errmsg./;
ibase>errmsg
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZerrmsg 22 Return error messages
Kescription
string ibase>errmsg > void ?
Returns the error message that resulted (rom the most recent .nterBase (unction call; Returns
FALSE i( no error occurred;
ee also ibase>errcode./;
ibase>e+ecute
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
i#aseZeFecute 22
Kescripcion
ibase>e+ecute > ?
ibase>fetch>assoc
>P&P 8 _^ 8;7;3A P&P 4?
i#aseZ(etchZassoc 22 Fetch a result roE (rom a /uery as an associative array
Kescription
array ibase>fetch>assoc > resource result PA int (etchZ(lagQ ?
ibase>fetch>assoc./ returns an associative array that corresponds to the (etched roE; u#se/uent
calls Eill return the neFt roE in the result setA or FALSE i( there are no more roEs;
ibase>fetch>assoc./ (etches one roE o( data (rom the result; .( tEo or more columns o( the result
have the same (ield namesA the last column Eill ta"e precedence; ,o access the other column>s? o(
the same nameA you either need to access the result Eith numeric indices #y using ibase>fetch>ro3
./ or use alias names in your /uery;
9etch_9laE is a com#ination o( the constants .BA+Z,+J, and .BA+Z@N.J,.M+ ORed together;
Passing .BA+Z,+J, Eill cause this (unction to return BLOB contents instead o( BLOB ids;
Passing .BA+Z@N.J,.M+ Eill cause this (unction to return dateDtime values as @niF timestamps
instead o( as (ormatted strings;
ee also ibase>fetch>ro3./ and ibase>fetch>ob'ect./;
ibase>fetch>ob'ect
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZ(etchZo#'ect 22 Get an o#'ect (rom a .nterBase data#ase
Kescription
o#'ect ibase>fetch>ob'ect > resource resultZid PA int (etchZ(lagQ ?
Fetches a roE as a pseudo2o#'ect (rom a result_6# o#tained either #y ibase>?uery./ or
ibase>e+ecute./;
<?php
$dbh > ibase%connect3$host, $username, $pass8ord9;
$stmt > M&EOER* W S'?" tblnameM;
$sth > ibase%Query3$dbh, $stmt9;
8hile 3$ro8 > ibase%#etch%object3$sth99 :
echo $ro8F>email . "Vn";
;
ibase%close3$dbh9;
?>
u#se/uent calls to ibase>fetch>ob'ect./ return the neFt roE in the result setA or FALSE i( there are
no more roEs;
9etch_9laE is a com#ination o( the constants .BA+Z,+J, and .BA+Z@N.J,.M+ ORed together;
Passing .BA+Z,+J, Eill cause this (unction to return BLOB contents instead o( BLOB ids;
Passing .BA+Z@N.J,.M+ Eill cause this (unction to return dateDtime values as @niF timestamps
instead o( as (ormatted strings;
ee also ibase>fetch>ro3./ and ibase>fetch>assoc./;
ibase>fetch>ro3
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
i#aseZ(etchZroE 22
Kescripcion
ibase>fetch>ro3 > ?
ibase>field>info
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZ(ieldZin(o 22 Get in(ormation a#out a (ield
Kescription
array ibase>field>info > resource resultA int (ieldZnum#er ?
Returns an array Eith in(ormation a#out a (ield a(ter a select /uery has #een run; ,he array is in the
(orm o( nameA aliasA relationA lengthA type;
<?php
$rs > ibase%Query3"&EOER* W S'?" tablename"9;
$coln > ibase%num%#ields3$rs9;
#or 3$i > 2; $i < $coln; $i[[9 :
$col%in#o > ibase%#ield%in#o3$rs, $i9;
echo "name@ ". $col%in#o)MnameM/. "Vn";
echo "alias@ ". $col%in#o)MaliasM/. "Vn";
echo "relation@ ". $col%in#o)MrelationM/. "Vn";
echo "lenEth@ ". $col%in#o)MlenEthM/. "Vn";
echo "type@ ". $col%in#o)MtypeM/. "Vn";
;
?>
ee alsoC ibase>num>fields./;
ibase>free>e5ent>handler
>P&P 4?
i#aseZ(reeZeventZhandler 22 5ancels a registered event handler
Kescription
#ool ibase>free>e5ent>handler > resource event ?
,his (unction causes the registered event handler speci(ied #y eent to #e cancelled; ,he call#ac"
(unction Eill no longer #e called (or the events it Eas registered to handle; Devuelve TRUE si todo
se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also ibase>set>e5ent>handler./;
ibase>free>?uery
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
i#aseZ(reeZ/uery 22
Kescripcion
ibase>free>?uery > ?
ibase>free>result
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
i#aseZ(reeZresult 22
Kescripcion
ibase>free>result > ?
ibase>gen>id
>P&P 4?
i#aseZgenZid 22 .ncrements the named generator and returns its neE value
Kescription
int ibase>gen>id > string generator PA int increment PA resource lin"Zidenti(ierQQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ibase>maintain>db
>P&P 4?
i#aseZmaintainZd# 22 +Fecute a maintenance command on the data#ase server
Kescription
#ool ibase>maintain>db > resource serviceZhandleA string d#A int action PA int argumentQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ibase>modify>user
>P&P 8 _^ 8;0;3A P&P 4?
i#aseZmodi(yZuser 22 Modi(y a user to a security data#ase >only (or .BK or later?
Kescription
#ool ibase>modify>user > resource serviceZhandleA string userZnameA string passEord PA string
(irstZname PA string middleZname PA string lastZnameQQQ ?
P&P 8 uses sererA #1a_user_name and #1a_user_pass7or# instead o( ser6ce_han#le parameter;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also ibase>add>user./ and ibase>delete>user./;
ibase>name>result
>P&P 4?
i#aseZnameZresult 22 Assigns a name to a result set
Kescription
#ool ibase>name>result > resource resultA string name ?
,his (unction assigns a name to a result set; ,his name can #e used later in @PDA,+lD+L+,+ ;;;
L&+R+ 5@RR+N, OF name statements; Devuelve TRUE si todo se llev- a ca#o correctamenteA
FALSE en caso de (allo;
<?php
$result > ibase%Query3"&EOER* #ield6,#ieldC S'?" table S?' +L,*E"9;
ibase%name%result3$result, "my%cursor"9;
$updateQry > ibase%prepare3"+L,*E table &E* #ieldC > ? 7HE'E R+''E.* ?S my%cursor"9;
#or 3$i > 2; ibase%#etch%ro83$result9; [[$i9 :
ibase%execute3$updateQry, $i9;
;
?>
ee also ibase>prepare./ and ibase>e+ecute./;
ibase>num>fields
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZnumZ(ields 22 Get the num#er o( (ields in a result set
Kescription
int ibase>num>fields > resource resultZid ?
Returns an integer containing the num#er o( (ields in a result set;
<?php
$rs > ibase%Query3"&EOER* W S'?" tablename"9;
$coln > ibase%num%#ields3$rs9;
#or 3$i > 2; $i < $coln; $i[[9 :
$col%in#o > ibase%#ield%in#o3$rs, $i9;
echo "name@ " . $col%in#o)MnameM/ . "Vn";
echo "alias@ " . $col%in#o)MaliasM/ . "Vn";
echo "relation@ " . $col%in#o)MrelationM/ . "Vn";
echo "lenEth@ " . $col%in#o)MlenEthM/ . "Vn";
echo "type@ " . $col%in#o)MtypeM/ . "Vn";
;
?>
ee alsoC ibase>field>info./;
ibase>num>params
>P&P 4?
i#aseZnumZparams 22 Return the num#er o( parameters in a prepared /uery
Kescription
int ibase>num>params > resource /uery ?
,his (unction returns the num#er o( parameters in the prepared /uery speci(ied #y @uer?; ,his is the
num#er o( #inding arguments that must #e present Ehen calling ibase>e+ecute./;
ee also ibase>prepare./ and ibase>param>info./;
ibase>param>info
>P&P 4?
i#aseZparamZin(o 22 Return in(ormation a#out a parameter in a prepared /uery
Kescription
array ibase>param>info > resource /ueryA int paramZnum#er ?
Returns an array Eith in(ormation a#out a parameter a(ter a /uery has #een prepared; ,he array is in
the (orm o( nameA aliasA relationA lengthA type;
ee also ibase>field>info./ and ibase>num>params./;
ibase>pconnect
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
i#aseZpconnect 22
Kescripcion
ibase>pconnect > ?
ibase>prepare
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
i#aseZprepare 22
Kescripcion
ibase>prepare > ?
ibase>?uery
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
i#aseZ/uery 22
Kescripcion
ibase>?uery > ?
ibase>restore
>P&P 4?
i#aseZrestore 22 .nitiates a restore tas" in the service manager and returns immediately
Kescription
miFed ibase>restore > resource serviceZhandleA string sourceZ(ileA string destZd# PA int options PA
#ool ver#oseQQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ibase>rollbacB>ret
>P&P 4?
i#aseZroll#ac"Zret 22 Roll #ac" a transaction Eithout closing it
Kescription
#ool ibase>rollbacB>ret > Presource lin"ZorZtransZidenti(ierQ ?
.( called Eithout an argumentA this (unction rolls #ac" the de(ault transaction o( the de(ault lin"; .(
the argument is a connection identi(ierA the de(ault transaction o( the corresponding connection Eill
#e rolled #ac"; .( the argument is a transaction identi(ierA the corresponding transaction Eill #e
rolled #ac"; ,he transaction conteFt Eill #e retainedA so statements eFecuted (rom Eithin this
transaction Eill not #e invalidated; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE
en caso de (allo;
ibase>rollbacB
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZroll#ac" 22 Roll #ac" a transaction
Kescription
#ool ibase>rollbacB > Presource lin"ZorZtransZidenti(ierQ ?
.( called Eithout an argumentA this (unction rolls #ac" the de(ault transaction o( the de(ault lin"; .(
the argument is a connection identi(ierA the de(ault transaction o( the corresponding connection Eill
#e rolled #ac"; .( the argument is a transaction identi(ierA the corresponding transaction Eill #e
rolled #ac"; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ibase>ser5er>info
>P&P 4?
i#aseZserverZin(o 22 Re/uest in(ormation a#out a data#ase server
Kescription
string ibase>ser5er>info > resource serviceZhandleA int action ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ibase>ser5ice>attach
>P&P 4?
i#aseZserviceZattach 22 5onnect to the service manager
Kescription
resource ibase>ser5ice>attach > string hostA string d#aZusernameA string d#aZpassEord ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ibase>ser5ice>detach
>P&P 4?
i#aseZserviceZdetach 22 Disconnect (rom the service manager
Kescription
#ool ibase>ser5ice>detach > resource serviceZhandle ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ibase>set>e5ent>handler
>P&P 4?
i#aseZsetZeventZhandler 22 Register a call#ac" (unction to #e called Ehen events are posted
Kescription
resource ibase>set>e5ent>handler > call#ac" eventZhandlerA string eventZname1 PA string
eventZname0 PA string ;;;QQ ?
resource ibase>set>e5ent>handler > resource connectionA call#ac" eventZhandlerA string
eventZname1 PA string eventZname0 PA string ;;;QQ ?
,his (unction registers a P&P user (unction as event handler (or the speci(ied events; ,he call#ac" is
called Eith the event name and the lin" resource as arguments Ehenever one o( the speci(ied events
is posted #y the data#ase; ,he call#ac" must return FALSE i( the event handler should #e canceled;
Any other return value is ignored; ,his (unction accepts up to 14 event arguments;
<?php
#unction e=ent%handler3$e=ent%name, $linI9
:
i# 3$e=ent%name>>".E7 ?'LE'"9 :
// process ne8 order
ibase%Query3$linI, "+L,*E orders &E* status>MhandledM"9;
; else i# 3$e=ent%name>>"LZ%&H+*L?7."9 :
// #ree e=ent handler
return #alse;
;
;
ibase%set%e=ent%handler3$linI, "e=ent%handler", ".E7%?'LE'", "LZ%&H+*L?7."9;
?>
,he return value is an event resource; ,his resource can #e used to (ree the event handler using
ibase>free>e5ent>handler./;
ee also ibase>free>e5ent>handler./ and ibase>3ait>e5ent./;
ibase>timefmt
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
i#aseZtime(mt 22
Kescripcion
ibase>timefmt > ?
ibase>trans
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
i#aseZtrans 22 Begin a transaction
Kescription
resource ibase>trans > Pint transZargs PA resource lin"Zidenti(ierQQ ?
Begins a transaction;
trans_arEs can #e a com#ination o( .BA+ZR+ADA .BA+ZLR.,+A .BA+Z5OMM.,,+DA
.BA+Z5ON.,+N5%A .BA+Z5ON5@RR+N5%A .BA+ZR+5Z$+R.ONA
.BA+ZR+5ZNOZ$+R.ONA .BA+ZLA., and .BA+ZNOLA.,;
Nota- ,he #ehaviour o( this (unction has #een changed in P&P 4;3;3; ,he (irst call to
ibase>trans./ Eill not return the de(ault transaction o( a connection; All transactions
started #y ibase>trans./ Eill #e rolled #ac" at the end o( the script i( they Eere not
committed or rolled #ac" #y either ibase>commit./ or ibase>rollbacB./;
Nota- .n P&P 4;3;3; and upA this (unction Eill accept multiple trans_arEs and
l6n>_6#ent696er arguments; ,his alloEs transactions over multiple data#ase connectionsA
Ehich are committed using a 02phase commit algorithm; ,his means you can rely on the
updates to either succeed in every data#aseA or (ail in every data#ase; .t does NO, mean
you can use ta#les (rom di((erent data#ases in the same /uerya
.( you use transactions over multiple data#asesA you Eill have to speci(y #oth the l6n>_6#
and transact6on_6# in calls to ibase>?uery./ and ibase>prepare./;
ibase>3ait>e5ent
>P&P 4?
i#aseZEaitZevent 22 Lait (or an event to #e posted #y the data#ase
Kescription
string ibase>3ait>e5ent > string eventZname1 PA string eventZname0 PA string ;;;QQ ?
string ibase>3ait>e5ent > resource connectionA string eventZname1 PA string eventZname0 PA
string ;;;QQ ?
,his (unction suspends eFecution o( the script until one o( the speci(ied events is posted #y the
data#ase; ,he name o( the event that Eas posted is returned; ,his (unction accepts up to 14 event
arguments;
ee also ibase>set>e5ent>handler./ and ibase>free>e5ent>handler./;
I:CII. ;unciones ICAP XobsoletasY
Introducci"n
Nota- .cap ser* eliminado en el (uturo cercano; Ni este m-duloA ni las versiones de la
#i#lioteca icap siguen siendo soportadas; i desea usar (uncionalidad de calendario en
P&PA use mcal en su lugar;
Me?uirimientos
La #i#lioteca icap tiene /ue estar instaladaA la cual no es soportada ni se encuentra disponi#le ahora;
Instalaci"n
Para hacer /ue estas (unciones tra#a'enA necesita compilar P&P con ==76th=6cap;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
icapZclose 22 5ierra un stream .5AP
icapZcreateZcalendar 22 5reate a neE calendar
icapZdeleteZcalendar 22 Delete a calendar
icapZdeleteZevent 22 Borra un evento de un calendario .5AP
icapZ(etchZevent 22 O#tiene un evento del stream de calendarioD
icapZlistZalarms 22 Devuelve una lista de los eventos /ue una alarma ha disparado en el instante
dado
icapZlistZevents 22 Devuelve una lista de eventos entre dos instantes dados
icapZopen 22 A#re una coneFi-n .5AP
icapZrenameZcalendar 22 Rename a calendar
icapZreopen 22 Reopen .5AP stream to neE calendar
icapZsnooze 22 Apaga la alarma de un evento
icapZstoreZevent 22 Almacena un evento en un calendario .5AP
icap>close
>no version in(ormationA might #e only in 5$?
icapZclose 22 5ierra un stream .5AP
Kescripci"n
int icap>close > int streamZicapA int #anderas ?
5ierra el stream .5AP dado;
icap>create>calendar
>P&P 8 `^ 8;0;7?
icapZcreateZcalendar 22 5reate a neE calendar
Kescription
string icap>create>calendar > int streamZidA string calendar ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
icap>delete>calendar
>P&P 8 `^ 8;0;7?
icapZdeleteZcalendar 22 Delete a calendar
Kescription
string icap>delete>calendar > int streamZidA string calendar ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
icap>delete>e5ent
>P&P 8 `^ 8;0;7?
icapZdeleteZevent 22 Borra un evento de un calendario .5AP
Kescripci"n
int icap>delete>e5ent > int idZevento ?
icap>delete>e5ent./ #orra el evento de calendario especi(icado por el 6#_eento;
Devuelve TRUE;
icap>fetch>e5ent
>P&P 8 `^ 8;0;7?
icapZ(etchZevent 22 O#tiene un evento del stream de calendarioD
Kescripci"n
o#'ect icap>fetch>e5ent > stream streamZicapA id idZeventoA options opciones ?
icap>fetch>e5ent./ o#tiene el evento del stream de calendario especi(icado por el par*metro
6#_eento;
Devuelve un o#'eto de evento compuesto porC
int id 2 .D de dicho evento;
int pu#lic 2 TRUE si el evento es pB#licoA FALSE si es privado;
string category 2 5adena con la categor)a del evento;
string title 2 5adena de t)tulo del evento;
string description 2 5adena de descripci-n del evento;
int alarm 2 NBmero de minutos antes /ue el evento env)e una alarmaDrecordatorio;
o#'ect start 2 O#'eto /ue contiene una entrada datetime >(echaDhora?;
o#'ect end 2 O#'eto /ue contiene una entrada datetime;
,odas las entradas datetime consisten en un o#'eto compuesto porC
int year 2 aWo
int month 2 mes
int mday 2 d)a del mes
int hour 2 hora
int min 2 minutos
int sec 2 segundos
icap>list>alarms
>P&P 8 `^ 8;0;7?
icapZlistZalarms 22 Devuelve una lista de los eventos /ue una alarma ha disparado en el instante
dado
Kescripci"n
array icap>list>alarms > stream streamZicapA datetime instanteZalarma ?
Devuelve una ta#la de identi(icadores de evento para los /ue una alarma de#iera apagarse en el
instante indicado;
La (unci-n icap>list>alarms./ toma una estructura datetime para un stream de calendario; e
devuelve una ta#la de los identi(icadores de evento de todas las alarmas /ue de#ieran apagarse en el
instante indicado;
,odas las entradas datetime consisten en un o#'eto compuesto porC
int year 2 aWo
int month 2 mes
int mday 2 d)a del mes
int hour 2 hora
int min 2 minutos
int sec 2 segundos
icap>list>e5ents
>P&P 8 `^ 8;0;7?
icapZlistZevents 22 Devuelve una lista de eventos entre dos instantes dados
Kescripci"n
array icap>list>e5ents > stream streamZicapA datetime instanteZinicioA datetime instanteZ(inal ?
Devuelve una ta#la de .D de evento /ue est*n entre los dos instantes dados;
La (unci-n icap>list>e5ents./ toma un instante de inicio y uno de (inal para un stream de
calendario; e devuelve una ta#la de .D de evento /ue est*n entre los instantes dados;
,odas las entradas datetime consisten en un o#'eto compuesto porC
int year 2 aWo
int month 2 mes
int mday 2 d)a del mes
int hour 2 hora
int min 2 minutos
int sec 2 segundos
icap>open
>P&P 8 `^ 8;0;7?
icapZopen 22 A#re una coneFi-n .5AP
Kescripci"n
stream icap>open > string calendarioA string usuarioA string claveA string opciones ?
i hay <Fito devuelve un stream >(lu'o? .5APA o FALSE en caso de error;
icap>open./ a#re una coneFi-n .5AP con el servidor de calen#ar6o especi(icado; i se especi(ica el
par*metro opcional opc6onesA tam#i<n <ste es pasado a dicho #uz-n;
icap>rename>calendar
>P&P 8 `^ 8;0;7?
icapZrenameZcalendar 22 Rename a calendar
Kescription
string icap>rename>calendar > int streamZidA string oldZnameA string neEZname ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
icap>reopen
>P&P 8 `^ 8;0;7?
icapZreopen 22 Reopen .5AP stream to neE calendar
Kescription
int icap>reopen > int streamZidA string calendar PA int optionsQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
icap>snoo6e
>P&P 8 `^ 8;0;7?
icapZsnooze 22 Apaga la alarma de un evento
Kescripci"n
int icap>snoo6e > int idZevento ?
icap>snoo6e./ apaga la alarma del evento de calendario especi(icado por el 6#_eento;
Returns TRUE;
icap>store>e5ent
>P&P 8 `^ 8;0;7?
icapZstoreZevent 22 Almacena un evento en un calendario .5AP
Kescripci"n
int icap>store>e5ent > int streamZicapA o#'ect evento ?
icap>store>e5ent./ Guarda un evento en un calendario .5AP; @n o#'eto de evento consiste enC
int pu#lic 2 1 si es pB#licoA 3 si es privadoX
string category 2 5adena con la categor)a del evento;
string title 2 5adena de t)tulo del evento;
string description 2 5adena de descripci-n del evento;
int alarm 2 NBmero de minutos antes /ue el evento env)e una alarmaDrecordatorio;
o#'ect start 2 O#'eto /ue contiene una entrada datetime >(echaDhora?;
o#'ect end 2 O#'eto /ue contiene una entrada datetime;
,odas las entradas datetime consisten en un o#'eto compuesto porC
int year 2 aWo
int month 2 mes
int mday 2 d)a del mes
int hour 2 hora
int min 2 minutos
int sec 2 segundos
Devuelve TRUE en caso de <Fito y FALSE en caso de error;
I:CIII. ;unciones icon5
Introducci"n
+ste m-dulo contiene una inter(az con la (acilidad de conversi-n de 'uegos de caracteres iconv; 5on
<ste m-duloA es posi#le convertir una cadena representada por un 'uego de caracteres local a una
representada por otro 'uego de caracteresA /ue puede ser el 'uego de caracteres @nicode; Los 'uegos
de caracteres soportados dependen de la implementaci-n de iconv en su sistema; Note /ue la
(unci-n iconv en algunos sistemas puede /ue no (uncione como lo espera; +n tal casoA ser)a una
#uena idea instalar la #i#lioteca li#iconv GN@; +s muy pro#a#le /ue consiga unos resultados m*s
consistentes;
A partir de P&P 4;3;3A esta eFtensi-n viene con varias (unciones utilitarias /ue le ayudan a escri#ir
scripts multi2lingjes; +chemos un vistazo a las siguientes secciones para eFplorar las nuevas
caracter)sticas;
Me?uirimientos
No necesita de nada si el sistema /ue usa es uno de los sistemas recientes compati#les con PO.JA
ya /ue las #i#liotecas 5 est*ndar /ue vienen con ellos o(recen la (acilidad iconv; De otro modoA es
necesario instalar la #i#lioteca li#iconv en su sistema;
Instalaci"n
Para usar las (unciones de <ste m-duloA el #inario P&P de#e ser compilado con la siguiente l)nea de
con(iguraci-nC ==76th=6con):D0R.;
Nota para )suarios de 2indo3s\]^_- Para ha#ilitar <ste m-dulo en un entorno
LindoEscdetA necesita colocar un archivo DLL llamado 6con.#ll o 6con=1.R.#ll
>antes de 8;0;1?A el cual hace parte del pa/uete #inario P&PDLin70A en un directorio
especi(icado por la varia#le de entorno +,T! o uno de los directorios de sistema de su
instalaci-n de LindoEscdet;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones de configuraci"n de icon5
Nombre Predeterminado Modificable
iconv;inputZencoding .5ON$Z.NP@,Z+N5OD.NG P&PZ.N.ZALL
Nombre Predeterminado Modificable
iconv;outputZencoding .5ON$ZO@,P@,Z+N5OD.NG P&PZ.N.ZALL
iconv;internalZencodin
g
.5ON$Z.N,+RNALZ+N5OD.NG P&PZ.N.ZALL
Para m*s detalles so#re las constantes P&PZ.N.ZV y su de(inici-nA vea ini>set./;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
Desde P&P 8;7;3A es posi#le identi(icarA en tiempo de e'ecuci-nA /u< implementaci-n de 6con es
adoptada por esta eFtensi-n;
Tabla *. Constantes de icon%
Nombre Tipo Kescripci"n
.5ON$Z.MPL string
+l nom#re de la
implementaci-n
.5ON$Z$+R.ON string
La versi-n de la
implementaci-n
Nota- +scri#ir scripts /ue dependan de la implementaci-n con <stas constantes no se
recomienda en a#soluto;
A partir de P&P 4;3;3A las siguientes constantes se encuentran disponi#les tam#i<nC
Tabla 7. Constantes de icon% disponibles desde PHP 9.D.D
Nombre Tipo Kescripci"n
.5ON$ZM.M+ZD+5OD+Z,R.5, integer
@na m*scara de #its usada para
icon5>mime>decode./
.5ON$ZM.M+ZD+5OD+Z5ON,.N@+ZO
NZ+RROR
integer
@na m*scara de #its usada para
icon5>mime>decode./
Cer tambi%n
$ea tam#i<n las (unciones GN@ Recode;
Tabla de contenidos
iconvZgetZencoding 22 Retrieve internal con(iguration varia#les o( iconv eFtension
iconvZmimeZdecodeZheaders 22 Decodes multiple M0ME header (ields at once
iconvZmimeZdecode 22 Decodes a M0ME header (ield
iconvZmimeZencode 22 5omposes a M0ME header (ield
iconvZsetZencoding 22 et current setting (or character encoding conversion
iconvZstrlen 22 Returns the character count o( string
iconvZstrpos 22 Finds position o( (irst occurrence o( a needle Eithin a haystac"
iconvZstrrpos 22 Finds the last occurrence o( a needle Eithin the speci(ied range o( haystac"
iconvZsu#str 22 5ut out part o( a string
iconv 22 5onvert string to re/uested character encoding
o#ZiconvZhandler 22 5onvert character encoding as output #u((er handler
icon5>get>encoding
>P&P 8 _^ 8;3;4A P&P 4?
iconvZgetZencoding 22 Retrieve internal con(iguration varia#les o( iconv eFtension
Kescription
miFed icon5>get>encoding > Pstring typeQ ?
icon5>get>encoding./ returns the current value o( the internal con(iguration varia#le i( success(ulA
or FALSE on (ailure;
,he value o( the optional t?pe can #eC
all
inputZencoding
outputZencoding
internalZencoding
.( t?pe is omitted or set to =all=A icon5>get>encoding./ returns an array that stores all these
varia#les;
E'emplo !. icon5>get>encoding./ e+ample
<pre>
<?php
icon=%set%encodinE3"internal%encodinE", "+*SFJ"9;
icon=%set%encodinE3"output%encodinE", "4&?FJJ5KF6"9;
=ar%dump3icon=%Eet%encodinE3MallM99;
?>
</pre>
,he printout o( the a#ove program Eill #eC
,rray
3
)input%encodinE/ >> 4&?FJJ5KF6
)output%encodinE/ >> 4&?FJJ5KF6
)internal%encodinE/ >> +*SFJ
9
ee also icon5>set>encoding./ and ob>icon5>handler./;
icon5>mime>decode>headers
>P&P 4?
iconvZmimeZdecodeZheaders 22 Decodes multiple M0ME header (ields at once
Kescription
array icon5>mime>decode>headers > string encodedZheaders PA int mode PA string charsetQQ ?
Returns an associative array that holds a Ehole set o( M0ME header (ields speci(ied #y
enco#e#_hea#ers on successA or FALSE i( an error occurs during the decoding;
+ach "ey o( the return value represents an individual (ield name and the corresponding element
represents a (ield value; .( more than one (ield o( the same name are presentA
icon5>mime>decode>headers./ automatically incorporates them into a numerically indeFed array
in the order o( occurrence;
mo#e determines the #ehaviour in the event icon5>mime>decode>headers./ encounters a
mal(ormed M0ME header (ield; %ou can speci(y any com#ination o( the (olloEing #itmas"s;
Tabla !. 1itmasBs acceptable to icon5>mime>decode>headers./
Calue Constant Kescription
1
.5ON$ZM.M+ZD+5
OD+Z,R.5,
.( setA the given header is decoded in (ull con(ormance Eith the
standards de(ined in RF5038:; ,his option is disa#led #y de(ault
#ecause there are a lot o( #ro"en mail user agents that donHt (olloE
the speci(ication and donHt produce correct M0ME headers;
0
.5ON$ZM.M+ZD+5
OD+Z5ON,.N@+ZO
NZ+RROR
.( setA icon5>mime>decode>headers./ attempts to ignore any
grammatical errors and continue to process a given header;
,he optional charset parameter speci(ies the character set to represent the result #y; .( omittedA
iconv;internalZcharset Eill #e used;
E'emplo !. icon5>mime>decode>headers./ e+ample
<?php
$headers%strinE > <<<E?S
&ubject@ >?+*SFJ?Z?+HOL=-Y6bmcE+HOL=-Y6bmc>?>
*o@ example^example.com
Late@ *hu, 6 Aan 6KH2 22@22@22 [2222
"essaEeF4d@ <example^example.com>
'ecei=ed@ #rom localhost 3localhost )6CH.2.2.6/9 by localhost
8ith &"* id example #or <example^example.com>
*hu, 6 Aan 6KH2 22@22@22 [2222 3+*R9
3en=elopeF#rom exampleFreturnF2222Fexample>example.com^example.com9
'ecei=ed@ 3Qmail 2 in=oIed by uid G55<19; 6 *hu C22< 22@22@22 [2222
E?S;
$headers > icon=%mime%decode%headers3$headers%strinE, 2, "4&?FJJ5KF6"9;
print%r3$headers9;
?>
+l resultado del e'emplo seriaC
,rray
3
)&ubject/ >> ro#unE ro#unE
)*o/ >> example^example.com
)Late/ >> *hu, 6 Aan 6KH2 22@22@22 [2222
)"essaEeF4d/ >> <example^example.com>
)'ecei=ed/ >> ,rray
3
)2/ >> #rom localhost 3localhost )6CH.2.2.6/9 by localhost 8ith &"* id example #or <example^example.com>; *hu, 6 Aan 6KH2 22@22@22 [2222 3+*R9 3en=elopeF#rom exampleFreturnF2222Fexample>example.com^example.com9
)6/ >> 3Qmail 2 in=oIed by uid G55<19; 6 *hu C22< 22@22@22 [2222
9
9
ee also icon5>mime>decode./A mb>decode>mimeheader./A imap>mime>header>decode./A
imap>base<8./ and imap>?print./;
icon5>mime>decode
>P&P 4?
iconvZmimeZdecode 22 Decodes a M0ME header (ield
Kescription
string icon5>mime>decode > string encodedZheader PA int mode PA string charsetQQ ?
Returns a decoded M0ME (ield on successA or FALSE i( an error occurs during the decoding;
mo#e determines the #ehaviour in the event icon5>mime>decode./ encounters a mal(ormed M0ME
header (ield; %ou can speci(y any com#ination o( the (olloEing #itmas"s;
Tabla !. 1itmasBs acceptable to icon5>mime>decode./
Calue Constant Kescription
1
.5ON$ZM.M+ZD+5
OD+Z,R.5,
.( setA the given header is decoded in (ull con(ormance Eith the
standards de(ined in RF5038:; ,his option is disa#led #y de(ault
#ecause there are a lot o( #ro"en mail user agents that donHt (olloE
the speci(ication and donHt produce correct M0ME headers;
0
.5ON$ZM.M+ZD+5
OD+Z5ON,.N@+ZO
NZ+RROR
.( setA icon5>mime>decode./ attempts to continue to process the
given header even though an error occurs;
,he optional charset parameter speci(ies the character set to represent the result #y; .( omittedA
iconv;internalZcharset Eill #e used;
E'emplo !. icon5>mime>decode./ e+ample
<?php
// *his yields "&ubject@ ro#unE ro#unE"
echo icon=%mime%decode3"&ubject@ >?+*SFJ?Z?+HOL=-Y6bmcE+HOL=-Y6bmc>?>",
2, "4&?FJJ5KF6"9;
?>
ee also icon5>mime>decode>headers./A mb>decode>mimeheader./A
imap>mime>header>decode./A imap>base<8./ and imap>?print./;
icon5>mime>encode
>P&P 4?
iconvZmimeZencode 22 5omposes a M0ME header (ield
Kescription
string icon5>mime>encode > string (ieldZnameA string (ieldZvalue PA array pre(erencesQ ?
5omposes and returns a string that represents a valid M0ME header (ieldA Ehich loo"s li"e the
(olloEingC
&ubject@ >?4&?FJJ5KF6?N?r>SR#unE%#>SRr?> Ent8er#en =on einer "4"E Iop#0eile
.n the a#ove eFampleA =u#'ect= is the (ield name and the portion that #egins Eith =^N.O2MM492
1N;;;= is the (ield value;
%ou can control the #ehaviour o( icon5>mime>encode./ #y speci(ying an associative array that
contains con(iguration items to the optional third parameter pre9erences; ,he items supported #y
icon5>mime>encode./ are listed #eloE; Note that item names are treated case2sensitive;
Tabla !. Configuration items supported by icon5>mime>encode./
Item Type Kescription Kefault 5alue E+ample
scheme boolean
peci(ies the method to encode a (ield value #y;
,he value o( this item may #e either =B= or =O=A
Ehere =B= stands (or 1aseX; encoding scheme and
=O= stands (or @uote#=pr6nta1le encoding scheme;
B B
input2
charset
string
peci(ies the character set in Ehich the (irst
parameter 96el#_name and the second parameter
96el#_alue are presented; .( not givenA
icon5>mime>encode./ assumes those parameters
are presented to it in the iconv;internalZcharset ini
setting;
iconv;internalZ
charset
.O2
MM4921
output2
charset
string
peci(ies the character set to use to compose the
M0ME header; .( not givenA the same value as
6nput=charset Eill #e used;
the same value
as 6nput=
charset
@,F2M
line2
length
integer
peci(ies the maFimum length o( the header lines;
,he resulting header is =(olded= to a set o(
multiple lines in case the resulting header (ield
Eould #e longer than the value o( this parameterA
according to RF50M00 2 .nternet Message Format;
.( not givenA the length Eill #e limited to :K
characters;
:K 99K
line2
#rea"2
chars
string
peci(ies the se/uence o( characters to append to
each line as an end2o(2line sign Ehen =(olding= is
per(ormed on a long header (ield; .( not givenA this
de(aults to =hrhn= >CR 43?; Note that this
parameter is alEays treated as an A5.. string
regardless o( the value o( 6nput=charset;
hrhn hn
E'emplo !. icon5>mime>encode./ e+ample-
<?php
$pre#erences > array3
"inputFcharset" >> "4&?FJJ5KF6",
"outputFcharset" >> "+*SFJ",
"lineFlenEth" >> HG,
"lineFbreaIFchars" >> "Vn"
9;
$pre#erences)"scheme"/ > "N";
// *his yields "&ubject@ >?+*SFJ?N?r>R<>ZR#unE%r>R<>ZR#unE?>"
echo icon=%mime%encode3"&ubject", "ro#unE ro#unE", $pre#erences9;
$pre#erences)"scheme"/ > "Z";
// *his yields "&ubject@ >?+*SFJ?Z?+HOL=-Y6bmcE+HOL=-Y6bmc>?>"
echo icon=%mime%encode3"&ubject", "ro#unE ro#unE", $pre#erences9;
?>
ee also imap>binary./A mb>encode>mimeheader./ and imap>Nbit./;
icon5>set>encoding
>P&P 8 _^ 8;3;4A P&P 4?
iconvZsetZencoding 22 et current setting (or character encoding conversion
Kescription
#ool icon5>set>encoding > string typeA string charset ?
icon5>set>encoding./ changes the value o( the internal con(iguration varia#le speci(ied #y t?pe to
charset; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,he value o( t?pe can #e any one o( thoseC
inputZencoding
outputZencoding
internalZencoding
E'emplo !. icon5>set>encoding./ e+ample-
<?php
icon=%set%encodinE3"internal%encodinE", "+*SFJ"9;
icon=%set%encodinE3"output%encodinE", "4&?FJJ5KF6"9;
?>
ee also icon5>get>encoding./ and ob>icon5>handler./;
icon5>strlen
>P&P 4?
iconvZstrlen 22 Returns the character count o( string
Kescription
int icon5>strlen > string str PA string charsetQ ?
Returns the character count o( str;
.n contrast to strlen./A icon5>strlen./ counts the occurrences o( characters in the given #yte
se/uence str on the #asis o( the speci(ied character setA the result o( Ehich is not necessarily
identical to the length o( the string in #yte;
.( charset parameter is omittedA str is assumed to #e encoded in iconv;internalZcharset;
ee also strlen./ and mb>strlen./;
icon5>strpos
>P&P 4?
iconvZstrpos 22 Finds position o( (irst occurrence o( a needle Eithin a haystac"
Kescription
int icon5>strpos > string haystac"A string needle PA int o((set PA string charsetQQ ?
Returns the numeric position o( the (irst occurrence o( nee#le in ha?stac>;
,he optional o99set parameter speci(ies the position (rom Ehich the search should #e per(ormed;
.( nee#le is not (oundA icon5>strpos./ Eill return FALSE;
A5iso
+sta (unci-n puede devolver FALSEA pero tam#i<n puede devolver un valor no2#ooleano /ue ser*
evaluado FALSEA como por e'emplo 0 o ==; Por (avorA lea la secci-n Booleans para m*s
in(ormaci-n; @tilice el operador ^^^ para compro#ar el valor devuelto por esta (unci-n;
.( ha?stac> or nee#le is not a stringA it is converted to a string and applied as the ordinal value o( a
character;
.n contrast to strpos./A the return value o( icon5>strpos./ is the num#er o( characters that appear
#e(ore the needleA rather than the o((set in #ytes to the position Ehere the needle has #een (ound;
,he characters are counted on the #asis o( the speci(ied character set charset;
.( charset parameter is omittedA str6nE are assumed to #e encoded in iconv;internalZcharset;
ee also strpos./A icon5>strrpos./ and mb>strpos./;
icon5>strrpos
>P&P 4?
iconvZstrrpos 22 Finds the last occurrence o( a needle Eithin the speci(ied range o( haystac"
Kescription
string icon5>strrpos > string haystac"A string needle PA string charsetQ ?
Returns the numeric position o( the last occurrence o( nee#le in ha?stac>;
.( nee#le is not (oundA icon5>strrpos./ Eill return FALSE;
A5iso
+sta (unci-n puede devolver FALSEA pero tam#i<n puede devolver un valor no2#ooleano /ue ser*
evaluado FALSEA como por e'emplo 0 o ==; Por (avorA lea la secci-n Booleans para m*s
in(ormaci-n; @tilice el operador ^^^ para compro#ar el valor devuelto por esta (unci-n;
.( ha?stac> or nee#le is not a stringA it is converted to a string and applied as the ordinal value o( a
character;
.n contrast to strpos./A the return value o( icon5>strrpos./ is the num#er o( characters that appear
#e(ore the needleA rather than the o((set in #ytes to the position Ehere the needle has #een (ound;
,he characters are counted on the #asis o( the speci(ied character set charset;
ee also strrpos./A icon5>strpos./ and mb>strrpos./;
icon5>substr
>P&P 4?
iconvZsu#str 22 5ut out part o( a string
Kescription
string icon5>substr > string strA int o((set PA int length PA string charsetQQ ?
Returns the portion o( str speci(ied #y the start and lenEth parameters;
.( start is non2negativeA icon5>substr./ cuts the portion out o( str #eginning at startHth characterA
counting (rom zero;
.( start is negativeA icon5>substr./ cuts out the portion #eginning at the positionA start characters
aEay (rom the end o( str;
.( lenEth is given and is positiveA the return value Eill contain at most lenEth characters o( the
portion that #egins at start >depending on the length o( str6nE?; .( str is shorter than start characters
longA FALSE Eill #e returned;
.( negative lenEth is passedA icon5>substr./ cuts the portion out o( str (rom the startHth character up
to the character that is lenEth characters aEay (rom the end o( the string; .n case start is also
negativeA the start position is calculated #e(orehand according to the rule eFplained a#ove;
Note that o99set and lenEth parameters are alEays deemed to represent o((sets that are calculated on
the #asis o( the character set determined #y charsetA Ehilst the counterpart substr./ alEays ta"es
these (or #yte o((sets; .( charset is not givenA the character set is determined #y the
iconv;internalZencoding ini setting;
ee also substr./A mb>substr./ and mb>strcut./;
icon5
>P&P 8 _^ 8;3;4A P&P 4?
iconv 22 5onvert string to re/uested character encoding
Kescription
string icon5 > string inZcharsetA string outZcharsetA string str ?
Per(orms a character set conversion on the string str (rom 6n_charset to out_charset; Returns the
converted string or FALSE on (ailure;
.( you append the string //TR,NS40T to out_charset transliteration is activated; ,his means that
Ehen a character canHt #e represented in the target charsetA it can #e approFimated through one or
several similarly loo"ing characters; .( you append the string //0-NOREA characters that cannot #e
represented in the target charset are silently discarded; OtherEiseA str is cut (rom the (irst illegal
character;
E'emplo !. icon5./ e+ample-
<?php
echo icon=3"4&?FJJ5KF6", "+*SFJ", "*his is a test."9;
?>
ob>icon5>handler
>P&P 8 _^ 8;3;4A P&P 4?
o#ZiconvZhandler 22 5onvert character encoding as output #u((er handler
Kescription
array ob>icon5>handler > string contentsA int status ?
.t converts the string encoded in 6nternal_enco#6nE to output_enco#6nE;
6nternal_enco#6nE and output_enco#6nE should #e de(ined #y icon5>set>encoding./ or in the
con(iguration (ile php.ini;
E'emplo !. ob>icon5>handler./ e+ample-
<?php
ob%start3"ob%icon=%handler"9; // start output bu##erinE
?>
ee also icon5>get>encoding./A icon5>set>encoding./ and output2control (unctions;
I:II. IK7 ;unctions
Introducci"n
,hese (unctions let you read and manipulate .D7 tags; .D7 tags are used in MP7 (iles to store title o(
the songA as Eell as in(ormation a#out the artistA al#umA genreA year and trac" num#er;
ince version 3;0 it is also possi#le to eFtract teFt (rames (rom .D7 v0;0R tags;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
id7 is part o( P+5L and can #e installed using the P+AR installer; ,o compile P&P Eith id7
supportA doEnload the sourcecodeA put it in php2srcDeFtDid7 and compile P&P using 22ena#le2id7;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Predefined Constants
Most o( the id7 (unctions either let you speci(y or return a tag version; .n order to speci(y the
version please use on o( these constants;
ID>_$)_0 >integer?
ID>_$)_0 is used i( you are Eor"ing Eith .D7 $1;3 tags; ,hese tags may contain the (ields
titleA artistA al#umA genreA year and comment;
ID>_$)_) >integer?
ID>_$)_) is used i( you are Eor"ing Eith .D7 $1;1 tags; ,hese tags may all in(ormation
contained in v1;3 tags plus the trac" num#er;
ID>_$*_) >integer?
ID>_$*_) is used i( you are Eor"ing Eith .D7 $0;1 tags;
ID>_$*_* >integer?
ID>_$*_* is used i( you are Eor"ing Eith .D7 $0;0 tags;
ID>_$*_> >integer?
ID>_$*_> is used i( you are Eor"ing Eith .D7 $0;7 tags;
ID>_$*_+ >integer?
ID>_$*_+ is used i( you are Eor"ing Eith .D7 $0;8 tags;
ID>_(EST >integer?
ID>_(EST is used i( Eould li"e to let the id7 (unctions determine Ehich tag version should
#e used;
Tabla de contenidos
id7ZgetZ(rameZlongZname 22 Get the long name o( an .D7v0 (rame
id7ZgetZ(rameZshortZname 22 Get the short name o( an .D7v0 (rame
id7ZgetZgenreZid 22 Get the id (or a genre
id7ZgetZgenreZlist 22 Get all possi#le genre values
id7ZgetZgenreZname 22 Get the name (or a genre id
id7ZgetZtag 22 Get all in(ormation stored in an .D7 tag
id7ZgetZversion 22 Get version o( an .D7 tag
id7ZremoveZtag 22 Remove an eFisting .D7 tag
id7ZsetZtag 22 @pdate in(ormation stored in an .D7 tag
id7>get>frame>long>name
>no version in(ormationA might #e only in 5$?
id7ZgetZ(rameZlongZname 22 Get the long name o( an .D7v0 (rame
Kescription
string id7>get>frame>long>name > string (rame.d ?
id7>get>frame>long>name./ returns the long name (or an .D7v0 (rame;
E'emplo !. id7>get>frame>long>name./ e+ample
<?php
$lonE.ame > id<%Eet%#rame%lonE%name3"*?OP"9;
echo $lonE.ame;
?>
,his Eill outputC
?riEinal lyricist3s9/text 8riter3s9
ee also id7>get>frame>short>name./;
id7>get>frame>short>name
>no version in(ormationA might #e only in 5$?
id7ZgetZ(rameZshortZname 22 Get the short name o( an .D7v0 (rame
Kescription
string id7>get>frame>short>name > string (rame.d ?
id7>get>frame>short>name./ returns the short name (or an .D7v0 (rame;
E'emplo !. id7>get>frame>short>name./ e+ample
<?php
$short.ame > id<%Eet%#rame%short%name3"*?OP"9;
echo $short.ame;
?>
,his Eill outputC
oriEinalOyricist
,he values returned #y id7>get>short>name./ are used in the array returned #y id7>get>tag./;
ee also id7>get>frame>long>name./;
id7>get>genre>id
>no version in(ormationA might #e only in 5$?
id7ZgetZgenreZid 22 Get the id (or a genre
Kescription
int id7>get>genre>id > string genre ?
id7>get>genre>id./ returns the id (or a genre; .( the speci(ied genre is not availa#le in the genre listA
id7>get>genre>id./ Eill return FALSE
.n an .D7 tagA the genre is stored using a integer ranging (rom 3 to 18:;
E'emplo !. id7>get>genre>id./ e+ample
<?php
$id > id<%Eet%Eenre%id3",lternati=e"9;
echo $id;
?>
,his Eill outputC
C2
ee also id7>get>genre>list./ and id7>get>genre>name./;
id7>get>genre>list
>no version in(ormationA might #e only in 5$?
id7ZgetZgenreZlist 22 Get all possi#le genre values
Kescription
array id7>get>genre>list > void ?
id7>get>genre>list./ returns an array containing all possi#le genres that may #e stored in an .D7
tag; ,his list has #een created #y +ric Semp and later eFtended #y LinAmp;
,his (unction is use(ul to provide you users a list o( genres (rom Ehich they may choose one; Lhen
updating the .D7 tag you Eill alEays have to speci(y the genre as an integer ranging (rom 3 to 18:;
E'emplo !. id7>get>genre>list./ e+ample
<?php
$Eenres > id<%Eet%Eenre%list39;
print%r3$Eenres9;
?>
,his Eill outputC
,rray
3
)2/ >> Zlues
)6/ >> Rlassic 'ocI
)C/ >> Rountry
)</ >> Lance
)1/ >> Lisco
)5/ >> SunI
)G/ >> -runEe
)H/ >> HipFHop
)J/ >> Aa00
)K/ >> "etal
)62/ >> .e8 ,Ee
)66/ >> ?ldies
)6C/ >> ?ther
)6</ >> op
)61/ >> '&Z
)65/ >> 'ap
)6G/ >> 'eEEae
)6H/ >> 'ocI
)6J/ >> *echno
)6K/ >> 4ndustrial
)C2/ >> ,lternati=e
)C6/ >> &Ia
)CC/ >> Leath "etal
)C</ >> ranIs
)C1/ >> &oundtracI
)C5/ >> EuroF*echno
)CG/ >> ,mbient
)CH/ >> *ripFHop
)CJ/ >> (ocal
)CK/ >> Aa00[SunI
)<2/ >> Susion
)<6/ >> *rance
)<C/ >> Rlassical
)<</ >> 4nstrumental
)<1/ >> ,cid
)<5/ >> House
)<G/ >> -ame
)<H/ >> &ound Rlip
)<J/ >> -ospel
)<K/ >> .oise
)12/ >> ,lternati=e 'ocI
)16/ >> Zass
)1C/ >> &oul
)1</ >> unI
)11/ >> &pace
)15/ >> "editati=e
)1G/ >> 4nstrumental op
)1H/ >> 4nstrumental 'ocI
)1J/ >> Ethnic
)1K/ >> -othic
)52/ >> LarI8a=e
)56/ >> *echnoF4ndustrial
)5C/ >> Electronic
)5</ >> opFSolI
)51/ >> Eurodance
)55/ >> Lream
)5G/ >> &outhern 'ocI
)5H/ >> Romedy
)5J/ >> Rult
)5K/ >> -anEsta
)G2/ >> *op 12
)G6/ >> Rhristian 'ap
)GC/ >> op/SunI
)G</ >> AunEle
)G1/ >> .ati=e +&
)G5/ >> Rabaret
)GG/ >> .e8 7a=e
)GH/ >> sychadelic
)GJ/ >> 'a=e
)GK/ >> &ho8tunes
ee also id7>get>genre>name./ and id7>get>genre>id./;
id7>get>genre>name
>no version in(ormationA might #e only in 5$?
id7ZgetZgenreZname 22 Get the name (or a genre id
Kescription
string id7>get>genre>name > int genreZid ?
id7>get>genre>name./ returns the name (or a genre id;
.n an .D7 tagA the genre is stored using a integer ranging (rom 3 to 18:;
E'emplo !. id7>get>genre>name./ e+ample
<?php
$Eenre > id<%Eet%Eenre%name3C29;
echo $Eenre;
?>
,his Eill outputC
,lternati=e
ee also id7>get>genre>list./ and id7>get>genre>id./;
id7>get>tag
>no version in(ormationA might #e only in 5$?
id7ZgetZtag 22 Get all in(ormation stored in an .D7 tag
Kescription
array id7>get>tag > string (ilename PA int versionQ ?
id7>get>tag./ is used to get all in(ormation stored in the id7 tag o( the speci(ied (ile;
Nota- .nstead o( a (ilename you may also pass a valid stream resource;
,he optional ers6on parameter alloEs you to speci(y the version o( the tag as MP7 (iles may
contain #othA version 1;F and version 0;F tags;
E'emplo !. id7>get>tag./ e+ample
<?php
$taE > id<%Eet%taE3 "path/to/example.mp<" 9;
print%r3$taE9;
?>
,his Eill output something li"eC
,rray
3
)title/ >> L.F<J16G
)artist/ >> 'e@VOeEion
)album/ >> 'e#lections
)year/ >> C221
)Eenre/ >> 6K
9
,he "ey Eenre Eill contain an integer #etEeen 3 and 18:; %ou may use id7>get>genre>name./ to
convert it to a human reada#le string;
ince version 3;0 id7>get>tag./ also supports .D7 tags o( version 0;0A 0;7 and 0;8; ,o eFtract
in(ormation (rom these tagsA pass one o( the constants .D7Z$0Z0A .D7Z$0Z7 or .D7Z$0Z8 as the
second parameter;
E'emplo *. id7>get>tag./ e+ample
<?php
$taE > id<%Eet%taE3 "path/to/exampleC.mp<", 4L<%(C%< 9;
print%r3$taE9;
?>
,his Eill output something li"eC
,rray
3
)copyriEht/ >> Lirty "ac
)oriEinal,rtist/ >> Lirty "ac
)composer/ >> "arcus -_`apt0e
)artist/ >> Lirty "ac
)title/ >> Oittle ZiE "an
)album/ >> LemoF*ape
)tracI/ >> 5/6C
)Eenre/ >> 36H9'ocI
)year/ >> C226
9
.D7 v0;F tags can contain a lot more in(ormation a#out the MP7 (ile than .D7 v1;F tags;
ee also id7>set>tag./A id7>remo5e>tag./ and id7>get>5ersion./;
id7>get>5ersion
>no version in(ormationA might #e only in 5$?
id7ZgetZversion 22 Get version o( an .D7 tag
Kescription
int id7>get>5ersion > string (ilename ?
id7>get>5ersion./ retrieves the version>s? o( the .D7 tag>s? in the MP7 (ile; As a tag can contain
.D7 v1;F and v0;F tagsA the return value o( this (unction should #e #itEise compared Eith the
prede(ined constants ID>_$)_0A ID>_$)_) and ID>_$*;
Nota- .nstead o( a (ilename you may also pass a valid stream resource;
E'emplo !. id7>get>5ersion./ e+ample
<?php
$=ersion > id<%Eet%=ersion3 "path/to/example.mp<" 9;
i# 3$=ersion & 4L<%(6%29 :
echo "Rontains a 6.x taEVn";
;
i# 3$=ersion & 4L<%(6%69 :
echo "Rontains a 6.6 taEVn";
;
i# 3$=ersion & 4L<%(C9 :
echo "Rontains a C.x taEVn";
;
?>
,his Eill output something li"eC
Rontains a 6.x taE
Rontains a 6.6 taE
.( a (ile contains an .D7 v1;1 tagA it alEays contains a 1;3 tagA as version 1;1 is 'ust an eFtension o(
1;3;
ee also id7>get>tag./A id7>set>tag./ and id7>remo5e>tag./;
id7>remo5e>tag
>no version in(ormationA might #e only in 5$?
id7ZremoveZtag 22 Remove an eFisting .D7 tag
Kescription
#ool id7>remo5e>tag > string (ilename PA int versionQ ?
id7>remo5e>tag./ is used to remove the in(ormation stored o( an .D7 tag; .( no tag has #een
presentA it Eill return FALSE and leave the (ile as it Eas;
Nota- .nstead o( a (ilename you may also pass a valid stream resource;
,he optional ers6on parameter alloEs you to speci(y the version o( the tag as MP7 (iles may
contain #othA version 1;F and version 0;F tags;
E'emplo !. id7>remo5e>tag./ e+ample
<?php
$result > id<%remo=e%taE3 "path/to/example.mp<", 4L<%(6%2 9;
i# 3$result >>> true9 :
echo "*aE succes#ully remo=edVn";
;
?>
.( the (ile is Erita#le and contained a 1;3 tagA this Eill outputC
*aE succes#ully remo=ed
Nota- 5urrently id7>remo5e>tag./ only supports version 1;3 and 1;1; .( you choose to
remove a 1;3 tag and the (ile contains a 1;1 tagA this tag Eill #e removedA as v1;1 is only
an eFtension o( 1;3;
ee also id7>get>tag./A id7>set>tag./ and id7>get>5ersion./;
id7>set>tag
>no version in(ormationA might #e only in 5$?
id7ZsetZtag 22 @pdate in(ormation stored in an .D7 tag
Kescription
#ool id7>set>tag > string (ilenameA array tag PA int versionQ ?
id7>set>tag./ is used to change the in(ormation stored o( an .D7 tag; .( no tag has #een presentA it
Eill #e added to the (ile;
Nota- .nstead o( a (ilename you may also pass a valid stream resource;
,he optional ers6on parameter alloEs you to speci(y the version o( the tag as MP7 (iles may
contain #othA version 1;F and version 0;F tags;
E'emplo !. id7>set>tag./ e+ample
<?php
$data > array3
"title" >> "'e@&tart",
"artist" >> "'e@VOeEion",
"comment" >> ", nice tracI"
9;
$result > id<%set%taE3 "path/to/example.mp<", $data, 4L<%(6%2 9;
i# 3$result >>> true9 :
echo "*aE succes#ully updatedVn";
;
?>
.( the (ile is Erita#leA this Eill outputC
*aE succes#ully updated
Nota- 5urrently id7>set>tag./ only supports version 1;3 and 1;1;
,he (olloEing "eys may #e used in the associative arrayC
Tabla !. `eys in the associati5e array
Bey possible 5alue
a5ailable in
5ersion
title string Eith maFimum o( 73 characters v1;3A v1;1
artist string Eith maFimum o( 73 characters v1;3A v1;1
al#um string Eith maFimum o( 73 characters v1;3A v1;1
year 8 digits v1;3A v1;1
genre integer value #etEeen 3 and 18: v1;3A v1;1
commen
t
string Eith maFimum o( 73 characters >0M in
v1;1?
v1;3A v1;1
trac" integer #etEeen 3 and 044 v1;1
ee also id7>get>tag./A id7>remo5e>tag./ and id7>get>5ersion./;
:. ;unciones de Informi+
Introducci"n
+l controlador de .n(ormiF para .n(ormiF >.D? :;FA + :;FA @niversal erver >.@? 9;F y .D 0333
es implementado en =i(F;ec= y =php7Zi(F;h= en el directorio de la eFtensi-n in(ormiF; +l soporte
para .D :;F es razona#lemente completoA con soporte para columnas B%,+ y ,+J,; +l soporte
para .@ 9;F se encuentra parcialmente terminadoC los nuevos tipos de datos se encuentran all)A pero
el soporte para LOB y 5LOB aun est* en construcci-n
Me?uirimientos
Notas de configuraci"n- Necesita alguna versi-n de +OLD5 para compilar el
controlador para .n(ormiF de P&P; Las versiones de +OLD5 a partir de :;0F de#en
tra#a'ar #ien; +OLD5 es ahora parte del DS de 5liente de .n(ormiF;
AsegBrese de /ue la varia#le =.NFORM.JD.R= haya sido de(inidaA y de /ue
Y.NFORM.JD.RD#in se encuentre en su PA,& antes de e'ecutar el script =con(igure=;
Instalaci"n
,o #e a#le to use the (unctions de(ined in this module you must compile your P&P interpreter using
the con(igure line ==76th_6n9orm68):D0R.A Ehere D.R is the .n(ormiF #ase install directoryA de(aults
to nothing;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Nota- Ma"e sure that the .n(ormiF environment varia#les .NFORM.JD.R and
.NFORM.J+R$+R are availa#le to the P&P i(F driverA and that the .NFORM.J #in
directory is in the PA,&; 5hec" this #y running a script that contains a call to phpinfo./
#e(ore you start testing; ,he phpinfo./ output should list these environment varia#les;
,his is true (or #oth 5G. php and Apache modZphp; %ou may have to set these
environment varia#les in your Apache startup script;
,he .n(ormiF shared li#raries should also #e availa#le to the loader >chec"
LDZL.BRAR%ZPA,& or ld;so;con(Dldcon(ig?;
,ome notes on the use of 1:J1s .TEIT and 1@TE columns/- BLOBs are normally
addressed #y BLOB identi(iers; elect /ueries return a =#lo# id= (or every B%,+ and
,+J, column; %ou can get at the contents Eith =stringZvar ^ i(FZgetZ#lo#>Y#lo#Zid?X=
i( you choose to get the BLOBs in memory >EithC =i(FZ#lo#in(ile>3?X=?; .( you pre(er to
receive the content o( BLOB columns in a (ileA use =i(FZ#lo#in(ile>1?X=A and
=i(FZgetZ#lo#>Y#lo#Zid?X= Eill get you the (ilename; @se normal (ile .DO to get at the
#lo# contents;
For insertDupdate /ueries you must create these =#lo# idHs= yoursel( Eith
=if+>create>blob./X=; %ou then plug the #lo# idHs into an arrayA and replace the #lo#
columns Eith a /uestion mar" >N? in the /uery string; For updatesDinsertsA you are
responsi#le (or setting the #lo# contents Eith if+>update>blob./;
,he #ehaviour o( BLOB columns can #e altered #y con(iguration varia#les that also can
#e set at runtimeC
con(iguration varia#leC i(F;teFtasvarchar
con(iguration varia#leC i(F;#yteasvarchar
runtime (unctionsC
i(FZteFtasvarchar>3?C use #lo# idHs (or select /ueries Eith ,+J, columns
i(FZ#yteasvarchar>3?C use #lo# idHs (or select /ueries Eith B%,+ columns
i(FZteFtasvarchar>1?C return ,+J, columns as i( they Eere $AR5&AR columnsA so that
you donHt need to use #lo# idHs (or select /ueries;
i(FZ#yteasvarchar>1?C return B%,+ columns as i( they Eere $AR5&AR columnsA so
that you donHt need to use #lo# idHs (or select /ueries;
con(iguration varia#leC i(F;#lo#in(ile
runtime (unctionC
i(FZ#lo#in(ileZmode>3?C return B%,+ columns in memoryA the #lo# id lets you get at the
contents;
i(FZ#lo#in(ileZmode>1?C return B%,+ columns in a (ileA the #lo# id lets you get at the
(ile name;
.( you set i(FZteFtD#yteasvarchar to 1A you can use ,+J, and B%,+ columns in select
/ueries 'ust li"e normal >#ut rather long? $AR5&AR (ields; ince all strings are
=counted= in P&PA this remains =#inary sa(e=; .t is up to you to handle this correctly; ,he
returned data can contain anythingA you are responsi#le (or the contents;
.( you set i(FZ#lo#in(ile to 1A use the (ile name returned #y i(FZgetZ#lo#>;;? to get at the
#lo# contents; Note that in this case %O@ AR+ R+PON.BL+ FOR D+L+,.NG ,&+
,+MPORAR% F.L+ 5R+A,+D B% .NFORM.J Ehen (etching the roE; +very neE
roE (etched Eill create neE temporary (iles (or every B%,+ column;
,he location o( the temporary (iles can #e in(luenced #y the environment varia#le
=#lo#dir=A de(ault is =;= >the current directory?; omething li"eC putenv
>#lo#dir^tmp#lo#=?X Eill ease the cleaning up o( temp (iles accidentally le(t #ehind
>their names all start Eith =#l#=?;
Automatically trimming 0char0 .,$:CHAM and ,$:NCHAM/ data- ,his can #e
set Eith the con(iguration varia#le
i(F;charasvarcharC i( set to 1 trailing spaces Eill #e automatically trimmedA to save you
some =chopping=;
NULL 5alues- ,he con(iguration varia#le i(F;null(ormat >and the runtime (unction
if+>nullformat./? Ehen set to TRUE Eill return NULL columns as the string =NULL=A
Ehen set to FALSE they return the empty string; ,his alloEs you to discriminate
#etEeen NULL columns and empty columns;
Tabla !. Informi+ configuration options
Name Kefault Changeable
i(F;alloEZpersistent =1= P&PZ.N.Z%,+M
i(F;maFZpersistent =21= P&PZ.N.Z%,+M
i(F;maFZlin"s =21= P&PZ.N.Z%,+M
i(F;de(aultZhost N@LL P&PZ.N.Z%,+M
i(F;de(aultZuser N@LL P&PZ.N.Z%,+M
i(F;de(aultZpassEor
d
N@LL P&PZ.N.Z%,+M
i(F;#lo#in(ile =1= P&PZ.N.ZALL
i(F;teFtasvarchar =3= P&PZ.N.ZALL
i(F;#yteasvarchar =3= P&PZ.N.ZALL
i(F;charasvarchar =3= P&PZ.N.ZALL
i(F;null(ormat =3= P&PZ.N.ZALL
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
698.allo7_pers6stent boolean
Lhether to alloE persistent .n(ormiF connections;
698.ma8_pers6stent integer
,he maFimum num#er o( persistent .n(ormiF connections per process;
698.ma8_l6n>s integer
,he maFimum num#er o( .n(ormiF connections per processA including persistent connections;
698.#e9ault_host string
,he de(ault host to connect to Ehen no host is speci(ied in if+>connect./ or if+>pconnect./;
DoesnHt apply in sa(e mode;
698.#e9ault_user string
,he de(ault user id to use Ehen none is speci(ied in if+>connect./ or if+>pconnect./; DoesnHt
apply in sa(e mode;
698.#e9ault_pass7or# string
,he de(ault passEord to use Ehen none is speci(ied in if+>connect./ or if+>pconnect./;
DoesnHt apply in sa(e mode;
698.1lo16n96le boolean
et to TRUE i( you Eant to return #lo# columns in a (ileA FALSE i( you Eant them in memory;
%ou can override the setting at runtime Eith if+>blobinfile>mode./;
698.te8tasarchar boolean
et to TRUE i( you Eant to return ,+J, columns as normal strings in select statementsA
FALSE i( you Eant to use #lo# id parameters; %ou can override the setting at runtime Eith
if+>te+tas5archar./;
698.1?teasarchar boolean
et to TRUE i( you Eant to return B%,+ columns as normal strings in select /ueriesA FALSE
i( you Eant to use #lo# id parameters; %ou can override the setting at runtime Eith
if+>te+tas5archar./;
698.charasarchar boolean
et to TRUE i( you Eant to trim trailing spaces (rom 5&AR columns Ehen (etching them;
698.null9ormat boolean
et to TRUE i( you Eant to return NULL columns as the literal string =NULL=A FALSE i( you
Eant them returned as the empty string ==; %ou can override this setting at runtime Eith
if+>nullformat./;
Tipos de recursos
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
i(FZa((ectedZroEs 22 O#tiene el nBmero de registros procesados por una consulta
i(FZ#lo#in(ileZmode 22 De(ine el modo por de(ecto para los #lo# en todas las consultas de selecci-n
i(FZ#yteasvarchar 22 De(ine el modo por de(ecto para los campos de tipo #yte
i(FZclose 22 5ierra una coneFi-n con .n(ormiF
i(FZconnect 22 A#rir una coneFi-n con un servidor .n(ormiF
i(FZcopyZ#lo# 22 Duplica el o#'eto #lo# dado
i(FZcreateZ#lo# 22 5rea un o#'eto #lo#
i(FZcreateZchar 22 5rea un o#'eto char
i(FZdo 22 +'ecuta una sentencia OL preparada previamente
i(FZerror 22 Devuelve el c-digo de error de la Bltima llamada a .n(ormiF
i(FZerrormsg 22 Devuelve el mensa'e de error de la Bltima llamada a .n(ormiF
i(FZ(etchZroE 22 O#tiene registros como un array >vector? enumerado
i(FZ(ieldproperties 22 .ndica las propiedades de los campos de una consulta OL
i(FZ(ieldtypes 22 O#tiene los campos de una consulta OL
i(FZ(reeZ#lo# 22 Borra el o#'eto #lo#
i(FZ(reeZchar 22 +limina un o#'eto char
i(FZ(reeZresult 22 Li#era los recursos de una consulta
i(FZgetZ#lo# 22 O#tiene el contenido de un o#'eto #lo#
i(FZgetZchar 22 O#tiene el contenido de un o#'eto char
i(FZgets/lca 22 Despu<s de una consultaA o#tiene el contenido de s/lca;s/lerrdP3;;4Q
i(FZhtmlt#lZresult 22 Muestra todos los registros de una consulta en una ta#la &,ML
i(FZnull(ormat 22 De(ine el valor por de(ecto cuando se leen valores nulos
i(FZnumZ(ields 22 Devuelve el nBmero de columnas en una consulta
i(FZnumZroEs 22 5uenta los registros ya le)dos de una consulta
i(FZpconnect 22 A#re una coneFi-n permanente con .n(ormiF
i(FZprepare 22 Preparar una sentencia2OL para su e'ecuci-n
i(FZ/uery 22 +nviar una consulta .n(ormiF
i(FZteFtasvarchar 22 De(ine el modo por de(ecto para los campos de tipo teFt
i(FZupdateZ#lo# 22 Actualiza el contenido de un o#'eto #lo#
i(FZupdateZchar 22 Actualiza el contenido de un o#'eto char
i(FusZcloseZslo# 22 5ierra un o#'eto slo#
i(FusZcreateZslo# 22 5rea un o#'eto slo# y lo a#re
i(FusZ(reeZslo# 22 +limina un o#'eto slo#
i(FusZopenZslo# 22 A#re un o#'eto slo#
i(FusZreadZslo# 22 Lee un nBmero de #ytes >n#ytes? de un o#'eto slo#
i(FusZsee"Zslo# 22 +sta#lece la posici-n de archivo o #Bs/ueda actual
i(FusZtellZslo# 22 Devuelve la posici-n de archivo o #Bs/ueda actual
i(FusZEriteZslo# 22 +scri#e una cadena en un o#'eto slo#
if+>affected>ro3s
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
i(FZa((ectedZroEs 22 O#tiene el nBmero de registros procesados por una consulta
Kescripci"n
int if+>affected>ro3s > int resultZid ?
result_6# es un identi(icador v*lido del resultado de if+>?uery./ o if+>prepare./;
Devuelve el nBmero de (ilas procesadas por una consulta representada por un result_6#
>identi(icador de resultado?;
Para insercionesA actualizaciones y #orrados el nBmero es eFactamente los registros procesados
>s/lerrdP0Q?; Para las consultas de selecci-n es una estimaci-n >s/lerrdP3Q?; No con()es en <l;
+s Btil llamarla despu<s de e'ecutar if+>prepare./ pues as) podemos limitar las consultas a nBmero
razona#le de registros;
+Famina tam#i<nC if+>num>ro3s./
E'emplo !. N4mero de registros procesados por una consulta
$rid > i#x%prepare 3"select W #rom emp 8here name liIe " . $name, $connid9;
i# 3! $rid9 :
... error ...
;
$ro8count > i#x%a##ected%ro8s 3$rid9;
i# 3$ro8count > 62229 :
print# 3"*oo many ro8s in result set 3\d9Vn<br>", $ro8count9; // Lemasiados reEistros en el resultado
die 3"lease restrict your Query<br>Vn"9; // or #a=or, restrinEe tu consulta
;
if+>blobinfile>mode
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FZ#lo#in(ileZmode 22 De(ine el modo por de(ecto para los #lo# en todas las consultas de selecci-n
Kescripci"n
void if+>blobinfile>mode > int mode ?
De(ine el modo por de(ecto para los #lo# en todas las consultas de selecci-n; +l modo >mode? =3=
/uiere decir /ue guarda en memoria los #lo#s de tipo B%,+ y modo =1= signi(ica guardarlos en un
archivo;
if+>byteas5archar
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FZ#yteasvarchar 22 De(ine el modo por de(ecto para los campos de tipo #yte
Kescripci"n
void if+>byteas5archar > int mode ?
De(ine el modo por de(ecto para los campos de tipo #yte en todas las consultas de selecci-n; Modo
>mode? =3= devolver* un identi(icador de #lo# y =1= dar* el contenido en un campo de tipo varchar;
if+>close
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
i(FZclose 22 5ierra una coneFi-n con .n(ormiF
Kescripci"n
int if+>close > Pint lin"Zidenti(ierQ ?
DevuelveC TRUE siempre;
if+>close./ cierra un enlace a una #ase de datos .n(ormiF /ue est< asociado con el identi(icador de
enlace >lin"Zidenti(ier?; i el identi(icador de enlace no es especi(icadoA el Bltimo enlace a#ierto es
asumido;
O#serva /ue esto no es necesario ha#itualmente ya /ue las coneFiones no permanentes son cerradas
autom*ticamente al (inalizar el gui-n >script?;
if+>close./ no cerrar* enlaces persistentes generados por if+>pconnect./;
+Famina tam#i<nC if+>connect./A y if+>pconnect./;
E'emplo !. Cierre de una cone+i"n a Informi+
$conn%id > i#x%connect 3mydb^ol%sr=, "itsme", "mypass8ord"9;
... alEunas consultas y cidiEo ...
i#x%close3$conn%id9;
if+>connect
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
i(FZconnect 22 A#rir una coneFi-n con un servidor .n(ormiF
Kescripci"n
int if+>connect > Pstring #aseZdatos PA string idZusuario PA string contrasenyaQQQ ?
Devuelve un identi(icador de coneFi-n en caso de tener <FitoA o FALSE si ocurre un (allo;
if+>connect./ esta#lece una coneFi-n con un servidor .n(ormiF; ,odos los argumentos son
opcionalesA y si ellos (altanA los valores predeterminados son tomados del archivo de con(iguraci-n
>i(F;de(aultZhost para el host >las #i#liotecas .n(ormiF usar*n el valor de entorno
0N3ORM0FSER(ER si no se encuentra de(inido?A i(F;de(aultZuser para el usuarioA
i(F;de(aultZpassEord para la contraseWa >ninguna si no se de(ine?;
+n caso de /ue una segunda llamada sea realizada a if+>connect./ con los mismos argumentosA no
se esta#lecer* un enlace nuevoA en su lugarA el identi(icador del enlace ya a#ierto ser* devuelto;
+l enlace con el servidor ser* cerrado tan pronto como la e'ecuci-n del script (inaliceA a menos /ue
<ste sea cerrado antes mediante una llamada eFpl)cita a if+>close./;
E'emplo !. Cone+i"n con una base de datos Informi+
<?php
$id%con > i#x%connect 3"mi%bd^ol%sr=6", "yo%mismo", "mi%contrasenya"9;
?>
$ea tam#i<n if+>pconnect./ y if+>close./;
if+>copy>blob
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FZcopyZ#lo# 22 Duplica el o#'eto #lo# dado
Kescripci"n
int if+>copy>blob > int #id ?
Duplica el o#'eto #lo# dado; 16# es el identi(icador del o#'eto #lo# a copiar;
Devuelve FALSE si hu#o errorA en otro caso el identi(icador del nuevo o#'eto #lo#;
if+>create>blob
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FZcreateZ#lo# 22 5rea un o#'eto #lo#
Kescripci"n
int if+>create>blob > int tipoA int modoA string param ?
5rea un o#'eto #lo#;
tipoC 1 ^ ,+J,A 3 ^ B%,+
modoC 3 ^ el o#'eto #lo# mantiene el contenido en memoriaA 1 ^ el o#'eto #lo# mantiene el
contenido en un archivo;
paramC si mode ^ 3C apuntador al contenidoA si mode ^ 1C apuntador a la cadena de archivo;
Devuelve FALSE en caso de (alloA o de lo contrario un nuevo id de o#'eto #lo#;
if+>create>char
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
i(FZcreateZchar 22 5rea un o#'eto char
Kescripci"n
int if+>create>char > string param ?
5rea un o#'eto char; param ser* el contenido del char;
if+>do
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FZdo 22 +'ecuta una sentencia OL preparada previamente
Kescripci"n
int if+>do > int resultZid ?
Devuelve TRUE si se realiz-A FALSE si hu#o algBn error;
+'ecuta una consulta preparada anteriormente o a#re un cursor para ella;
No li#era result_6# si hu#o un error;
,am#i<n de(ine el nBmero real de registros procesados para consultas /ue no sean de selecci-n y se
puede o#tener mediante if+>affected>ro3s./;
+Famina tam#i<nC if+>prepare./ >hay un e'emplo?;
if+>error
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
i(FZerror 22 Devuelve el c-digo de error de la Bltima llamada a .n(ormiF
Kescripci"n
string if+>error > void ?
Los c-digos de error de .n(ormiF >OL,A,+ i OL5OD+? son representados como se especi(ica
a continuaci-nC
F POL,A,+ ^ aa ### OL5OD+^ccccQ
donde F ^ un espacio C no hu#o error
+ C hu#o error
N C no hay m*s datos
L C aviso
N C no de(inido
i el car*cter =F= es cual/uier otra cosa di(erente a un espacioA OL,A,+ y OL5OD+ descri#en
el error con mayor detalle;
+Famina el manual de .n(ormiF para el signi(icado de OL,A,+ y OL5OD+;
Devuelve en una cadena un caracter descri#iendo el resultado de una sentencia y los valores
OL,A,+ y OL5OD+ asociados con la Bltima sentencia OL e'ecutada; +l (ormato de la
cadena es =>char? POL,A,+^>dos d)gitos? >tres d)gitos? OL5OD+^>un d)gitos?Q=; +l primer
car*cter puede ser H H >un espacio? >no hu#o error?A HIH >la sentencia provoc- un aviso?A HEH >la
consulta produ'o un error? o HNH >la sentencia no devolvi- ningBn dato?;
+Famina tam#i<nC if+>errormsg./
if+>errormsg
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FZerrormsg 22 Devuelve el mensa'e de error de la Bltima llamada a .n(ormiF
Kescripci"n
string if+>errormsg > Pint errorcodeQ ?
Devuelve el mensa'e de error asociado con el error m*s reciente de .n(ormiF; i de(inismos el
par*metro opcional =errorco#e= >c-digo de error?A nos dar* el mensa'e de error correspondiente a
ese c-digo;
+Famina tam#i<nC if+>error./
print#3"\sVn<br>", i#x%errormsE3FC2699;
if+>fetch>ro3
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
i(FZ(etchZroE 22 O#tiene registros como un array >vector? enumerado
Kescripci"n
array if+>fetch>ro3 > int resultZid PA miFed positionQ ?
Devuelve un array >vector? correspondiente a la (ila le)da o FALSE si no hay m*s registros;
Las columnas #lo# son devueltas como identi(icadores de #lo# enteros >integer? para usarlos con
if+>get>blob./ a menos /ue hayas usado i(FZteFtasvarchar>1? o i(FZ#yteasvarchar>1?A en cuyo caso
los #lo#s son devueltos como cadenas de teFto; Devuelve FALSE si hu#o error;
result_6# es un identi(icador v*lido del resultado de if+>?uery./ o if+>prepare./ >s-lo para
consultas de selecci-n?;
pos6t6on es un par*metro opcional para una operaci-n de lectura so#re un cursor de tipo =scroll=C
=N+J,= >siguiente?A =PR+$.O@= >anterior?A =5@RR+N,= >actual?A =F.R,= >primero?A =LA,=
>Bltimo? o un nBmero; i se especi(ica un nBmeroA un registro concreto es le)do; +ste par*metro
opcional es s-lo v*lido para cursores de tipo scroll;
if+>fetch>ro3./ lee el contenido de un registro de la consulta representada por el identi(icador de
resultado indicado; La (ila >registro? es devuelta en un array; 5ada columna es guarda en un arrayA
empezando <ste desde cero;
Las llamadas posteriores a if+>fetch>ro3./ devolver*n el registro siguiente en el resultado de la
consultaA o FALSE si no hay m*s (ilas;
E'emplo !. :eer registros
$rid > i#x%prepare 3"select W #rom emp 8here name liIe " . $name,
$connid, 4SX%&R'?OO9;
i# 3! $rid9 :
... error ...
;
$ro8count > i#x%a##ected%ro8s3$rid9;
i# 3$ro8count > 62229 :
print# 3"*oo many ro8s in result set 3\d9Vn<br>", $ro8count9; // Lemasiados reEistros en el resultado
die 3"lease restrict your Query<br>Vn"9; // or #a=or, restrinEe tu consulta
;
i# 3! i#x%do 3$rid99 :
... error ...
;
$ro8 > i#x%#etch%ro8 3$rid, ".EX*"9;
8hile 3is%array3$ro899 :
#or3reset3$ro89; $#ieldname>Iey3$ro89; next3$ro899 :
$#ield=alue > $ro8)$#ieldname/;
print# 3"\s > \s,", $#ieldname, $#ield=alue9;
;
print#3"Vn<br>"9;
$ro8 > i#x%#etch%ro8 3$rid, ".EX*"9;
;
i#x%#ree%result 3$rid9;
if+>fieldproperties
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
i(FZ(ieldproperties 22 .ndica las propiedades de los campos de una consulta OL
Kescripci"n
array if+>fieldproperties > int resultZid ?
Dada una consulta representada por result_6# devuelve un array con los nom#res de campo como
llaves y las propiedades como datos; FALSE es devuelto si hu#o error;
Devuelve las propiedades OL de cada campo como un array; Las propiedades son codi(icadas as)C
=OL,%P+XlongitudXprecisi-nXescalaX.N@LLABL+= siendo OL,%P+ el tipo de dato de(inido en
.n(ormiF como puede ser =OL$5&AR= etc; e .N@LLABL+ >puede ser nulo? igual a =%= s) o =N=
no;
E'emplo !. Propiedades de los campos de una consulta ,$:
<?php
$properties > i#x%#ieldtypes 3$resultid9;
i# 3! isset3$properties99 :
... error ...
;
#or 3$i > 2; $i < count3$properties9; $i[[9 :
$#name > Iey 3$properties9;
print# 3"\s@Vt type > \sVn", $#name, $properties)$#name/9;
next 3$properties9;
;
?>
if+>fieldtypes
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
i(FZ(ieldtypes 22 O#tiene los campos de una consulta OL
Kescripci"n
array if+>fieldtypes > int resultZid ?
Dada una consulta representada por result_6# devuelve un array con los nom#res de campo como
llaves y los tipos como datos; i no tuvo <Fito da FALSE;
E'emplo !. Nombres y tipos de campos de una consulta ,$:
<?php
$types > i#x%#ieldtypes 3$resultid9;
i# 3! isset 3$types99 :
... error ...
;
#or 3$i > 2; $i < count3$types9; $i[[9 :
$#name > Iey3$types9;
print#3"\s @Vt type > \sVn", $#name, $types)$#name/9;
next3$types9;
;
?>
if+>free>blob
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FZ(reeZ#lo# 22 Borra el o#'eto #lo#
Kescripci"n
int if+>free>blob > int #id ?
+limina el o#'eto #lo# representado por el identi(icador 16#; Devuelve FALSE si se produ'o errorA
en otro caso TRUE;
if+>free>char
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
i(FZ(reeZchar 22 +limina un o#'eto char
Kescripci"n
int if+>free>char > int #id ?
Borra el o#'eto char representado por el identi(icador del char 16#; Devuelve FALSE si se produ'o
un errorA en otro caso TRUE;
if+>free>result
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
i(FZ(reeZresult 22 Li#era los recursos de una consulta
Kescripci"n
int if+>free>result > int resultZid ?
Li#era los recursos representados por el identi(icador result_6# de una consulta; Devuelve FALSE si
hu#o error;
if+>get>blob
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FZgetZ#lo# 22 O#tiene el contenido de un o#'eto #lo#
Kescripci"n
int if+>get>blob > int #id ?
Devuelve el contenido de un o#'eto #lo# representado por su identi(icador 16#;
if+>get>char
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
i(FZgetZchar 22 O#tiene el contenido de un o#'eto char
Kescripci"n
int if+>get>char > int #id ?
Devuelve el contenido de un o#'eto char representado por su identi(icador 16#;
if+>gets?lca
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
i(FZgets/lca 22 Despu<s de una consultaA o#tiene el contenido de s/lca;s/lerrdP3;;4Q
Kescripci"n
array if+>gets?lca > int resultZid ?
result_6# es un identi(icador v*lido del resultado de if+>?uery./ o if+>prepare./;
Devuelve una seudo (ila >array asociativo? con los valores de s/lca;s/lerrdP3Q a s/lca;s/lerrdP4Q de
una consulta e'ecutadaA representada <sta con un identi(icador de resultado result_6#;
Para insercionesA actualizaciones y #orrados los valores devueltos son a/uellos de(inidos por el
servidor despu<s de /ue la consulta sea e'ecutada; +sto da acceso al nBmero de registros procesados
y al valor de una columna de tipo serial en una consulta de inserci-n; Para consultas de selecci-nA
los valores son guardados cuando se prepara la sentencia; ,am#i<n permite conocer el nBmero
estimado de registros procesados; +l uso de esta (unci-n evita el so#recoste de e'ecutar la consulta
=select d#in(o>Hs/lca;s/lerrdFH?=A como o#tener los valores guardados por el conector para .n(ormiF
en el momento apropiado;
E'emplo !. Jbtener los 5alores s?lca.s?lerrdX+Y
/W suponiendo Que la primera columna de la tabla MsometableM es de tipo serial W/
$Qid > i#x%Query3"insert into sometable =alues32, MCnd columnM, Manother columnM ", $connid9;
i# 3! $Qid9 :
... error ...
;
$sQlca > i#x%EetsQlca 3$Qid9;
$serial%=alue > $sQlca)"sQlerrd6"/;
echo "*he serial =alue o# the inserted ro8 is @ " . $serial%=alue<br>Vn"; // El =alor de tipo serial del reEistro insertado es@
if+>htmltbl>result
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
i(FZhtmlt#lZresult 22 Muestra todos los registros de una consulta en una ta#la &,ML
Kescripci"n
int if+>htmltbl>result > int resultZid PA string htmlZta#leZoptionsQ ?
Devuelve el nBmero de registros le)dos o FALSE si hu#o error;
Muestra todas las (ilas de la consulta result_6# dentro de una ta#la html; +l argumento segundoA
opcionalA es una cadena de par*metros del tag `ta#le_
E'emplo !. Mostrar resultado como una tabla HTM:
$rid > i#x%prepare 3"select W #rom emp 8here name liIe " . $name,
$connid, 4SX%&R'?OO9;
i# 3! $rid9 :
... error ...
;
$ro8count > i#x%a##ected%ro8s 3$rid9;
i# 3$ro8count > 62229 :
print# 3"*oo many ro8s in result set 3\d9Vn<br>", $ro8count9; // Lemasiados reEistros en el resultado
die 3"lease restrict your Query<br>Vn"9; // or #a=or, restrinEe tu consulta
;
i# 3! i#x%do3$rid9 :
... error ...
;
i#x%htmltbl%result 3$rid, "border>V"CV""9;
i#x%#ree%result3$rid9;
if+>nullformat
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FZnull(ormat 22 De(ine el valor por de(ecto cuando se leen valores nulos
Kescripci"n
void if+>nullformat > int mode ?
De(ine el valor por de(ecto cuando se leen valores nulos; Modo >mode? =3= devuelve ==A y modo =1=
devuelve =NULL=;
if+>num>fields
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
i(FZnumZ(ields 22 Devuelve el nBmero de columnas en una consulta
Kescripci"n
int if+>num>fields > int resultZid ?
Dada una consulta representada por result_6# devuelve el nBmero de columnas o FALSE si se
produ'o un error;
Despu<s de preparar o e'ecutar una consultaA una llamada a esta (unci-n te da el nBmero de
columnas en la consulta;
if+>num>ro3s
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
i(FZnumZroEs 22 5uenta los registros ya le)dos de una consulta
Kescripci"n
int if+>num>ro3s > int resultZid ?
Da el nBmero de registros ya le)dos de una consulta representada por un result_6# despu<s de llamar
a if+>?uery./ o if+>do./;
if+>pconnect
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
i(FZpconnect 22 A#re una coneFi-n permanente con .n(ormiF
Kescripci"n
int if+>pconnect > Pstring data#ase PA string userid PA string passEordQQQ ?
Devuelve un identi(icador positivo de enlace persistente si hu#o coneFi-nA o FALSE si se produ'o
un error;
if+>pconnect./ actBa muy parecido a if+>connect./ con dos principales di(erencias;
+sta (unci-n se comporta eFactamente igual /ue if+>connect./ cuando P&P no es e'ecutado como
un m-dulo de Apache; La primera di(erencia es cuando se conectaA la (unci-n intentar* encontrar un
enlace >persistente? /ue eFista con el mismo servidorA usuario y contraseWa; i es halladoA el
identi(icador del enlace ser* devuelto en vez de a#rir una nueva coneFi-n;
egundoA la coneFi-n al servidor no se cerrar* cuando la e'ecuci-n del gui-n >script? (inalice; +n
vez de estoA la coneFi-n permanecer* a#ierta para usos (uturos >if+>close./ no cerrar* el enlace
creado por if+>pconnect./?;
+ste tipo de enlace esA por tantoA llamado HpersistenteH
+Famina tam#i<nC if+>connect./;
if+>prepare
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FZprepare 22 Preparar una sentencia2OL para su e'ecuci-n
Kescripci"n
int if+>prepare > string consultaA int idZcon PA int tipoZcursorA miFed matrizZidZ#lo#Q ?
Devuelve un entero 6#_resulta#o para su uso por if+>do./; De(ine 96las_a9ecta#as para su
recuperaci-n a trav<s de la (unci-n if+>affected>ro3s./;
Prepara consulta so#re la coneFi-n 6#_con; Para consultas =tipo select=A se declara y a#re un cursor;
+l par*metro opcional t6po_cursor le permite hacer de <ste un cursor =scroll= o =hold=; +s una
m*scara de #its y puede ser .FJZ5ROLLA .FJZ&OLDA o am#osA unidos por el operador l-gico
OR;
Para cual/uiera de los tipos de consultaA el nBmero estimado de (ilas a(ectadas es almacenado para
su recuperaci-n por if+>affected>ro3s./;
i tiene columnas BLOB >B%,+ o ,+J,? en la consultaA puede agregar un par*metro
matr6D_6#_1lo1 /ue contenga los =ids #lo#= correspondientesA y de#er)a reemplazar esas columnas
con un =N= en el teFto de la consulta;
i los contenidos de la columna ,+J, >o B%,+? lo permitenA puede usar tam#i<n
=i(FZteFtasvarchar>1?= y =i(FZ#yteasvarchar>1?=; +sto le permite tratar columnas ,+J, >o B%,+?
como si (ueran columnas $AR5&AR ordinarias >pero largas? para las consultas selectA y no de#e
preocuparse por idHs #lo#;
5on i(FZteFtasvarchar>3? o i(FZ#yteasvarchar>3? >la situaci-n predeterminada?A las consultas select
devolver*n columnas BLOB como idHs #lo# >valor entero?; Puede o#tener el valor del #lo# como
una cadena o un archivo con las (unciones #lo# >vea m*s adelante?;
$ea tam#i<nC if+>do./;
if+>?uery
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
i(FZ/uery 22 +nviar una consulta .n(ormiF
Kescripci"n
int if+>?uery > string consultaA int idZenlace PA int tipoZcursor PA miFed matrizZidZ#lo#QQ ?
Devuelve un identi(icador de resultado positivo si tuvo <FitoA o FALSE si ocurri- un error;
@n recurso =idZresultado= es usado por otras (unciones para o#tener los resultados de la consulta;
De(ine =(ilasZa(ectadas= para su consulta a trav<s de la (unci-n if+>affected>ro3s./;
if+>?uery./ env)a una consulta a la #ase de datos activa actualmente en el servidorA la cual est*
asociada con el identi(icador de enlace dado;
+'ecuta consulta so#re la coneFi-n 6#_enlace; +n el caso de consultas =tipo2select=A un cursor es
declarado y a#ierto; +l par*metro opcional t6po_cursor le permite hacer /ue <ste sea un cursor
=scroll= o =hold=; +s una m*scara de #its y puede ser .FJZ5ROLLA .FJZ&OLDA o am#os unidos
mediante la operaci-n l-gica OR; Las consultas /ue no son de selecci-n son de =e'ecuci-n
inmediata=; .FJZ5ROLL e .FJZ&OLD son constantes sim#-licasA y como tales no de#en
encontrarse entre comillas; i omite este par*metroA el cursor ser* un cursor secuencial normal;
Para cual/uier tipo de consultaA el nBmero >estimado o real? de (ilas a(ectadas es almacenado para su
consulta mediante if+>affected>ro3s./;
i tiene columnas BLOB >B%,+ o ,+J,? en una consulta de actualizaci-nA puede aWadir un
par*metro matr6D_6#_1lo1 /ue contenga los =ids de #lo#= correspondientesA y de#er)a reemplazar
esas columnas con un =N= en el teFto de la consulta;
i el contenido de la columna ,+J, >o B%,+? lo permiteA puede usar tam#i<n =i(FZteFtasvarchar
>1?= y =i(FZ#yteasvarchar>1?=; +sto le permite tratar columnas ,+J, >o B%,+? como si (ueran
columnas normales >pero largas? de tipo $AR5&AR para consultas selectA y no necesita
complicarse con idHs de #lo#;
5on i(FZteFtasvarchar>3? o i(FZ#yteasvarchar>3? >la situaci-n predeterminada?A las consultas select
devolver*n columnas BLOB como idHs #lo# >valores enteros?; Puede o#tener el valor del #lo# como
una cadena o archivo con las (unciones #lo# >vea m*s adelante?;
E'emplo !. Mostrar todas las filas de la tabla 0ordenes0 como una tabla HTM:
<?php
i#x%textas=archar369; // usar "modo de texto" para blobs
$id%res > i#x%Query3"select W #rom ordenes", $id%con9;
i# 3! $id%res9 :
print#3".o se pueden seleccionar &oacute;rdenes@ \sVn<br />\s<br />Vn", i#x%error399;
i#x%errormsE39;
die;
;
i#x%htmltbl%result3$id%res, "border>V"6V""9;
i#x%#ree%result3$id%res9;
?>
E'emplo *. Insertar algunos 5alores en la tabla 0catalogo0
<?php
// crear idMs blob para una columna byte y text
$textid > i#x%create%blob32, 2, "*ext column in memory"9;
$byteid > i#x%create%blob36, 2, "Zyte column in memory"9;
// almacenar idMs blob en una matri0 id%blob
$matri0%id%blob)/ > $textid;
$matri0%id%blob)/ > $byteid;
// ejecutar consulta
$consulta > "insert into cataloEo 3num%bodeEa, cod%manu, " .
"descr%cat,imaEen%cat9 =alues36,MH'?M,?,?9";
$id%res > i#x%Query3$consulta, $id%con, $matri0%id%blob9;
i# 3! $id%res9 :
/W ... error ... W/
;
// liberar el id de resultado
i#x%#ree%result3$id%res9;
?>
$ea tam#i<n if+>connect./;
if+>te+tas5archar
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FZteFtasvarchar 22 De(ine el modo por de(ecto para los campos de tipo teFt
Kescripci"n
void if+>te+tas5archar > int mode ?
De(ine el modo por de(ecto para los campos de tipo teFt en todas las consultas de selecci-n; Modo
>mode? =3= devolver* un identi(icador de #lo# y =1= dar* el contenido en un campo de tipo varchar;
if+>update>blob
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FZupdateZ#lo# 22 Actualiza el contenido de un o#'eto #lo#
Kescripci"n
if+>update>blob > int #idA string content ?
Actualiza el contenido de un o#'eto #lo# representado por su identi(icador 16#; content es una
cadena con el nuevo contenido; Devuelve FALSE si hu#o errorA en otro caso TRUE;
if+>update>char
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
i(FZupdateZchar 22 Actualiza el contenido de un o#'eto char
Kescripci"n
int if+>update>char > int #idA string content ?
Actualiza el contenido de un o#'eto char representado por su identi(icador 16#; content es una
cadena con la in(ormaci-n nueva; Devuelve FALSE si se produ'o un errorA en otro caso TRUE;
if+us>close>slob
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FusZcloseZslo# 22 5ierra un o#'eto slo#
Kescripci"n
int if+us>close>slob > int #id ?
5ierra un o#'eto slo# representado por su identi(icador de slo# 16#; Devuelve FALSE si hu#o errorA
TRUE en otro caso;
if+us>create>slob
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FusZcreateZslo# 22 5rea un o#'eto slo# y lo a#re
Kescripci"n
int if+us>create>slob > int mode ?
5rea un o#'eto slo# y lo a#re; ModosC 1 ^ LOZRDONL%A 0 ^ LOZLRONL%A 8 ^ LOZAPP+NDA M
^ LOZRDLRA 1K ^ LOZB@FF+RA 70 ^ LOZNOB@FF+R o una com#inaci-n de ellos; ,am#i<n
puedes usar nom#res de constantes .FJZLOZRDONL%A .FJZLOZLRONL%A etc; Devuelve
FALSE si hu#o errorA en otro caso el identi(icador del nuevo o#'eto slo#;
if+us>free>slob
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FusZ(reeZslo# 22 +limina un o#'eto slo#
Kescripci"n
int if+us>free>slob > int #id ?
Borra un o#'eto slo#; 16# es el identi(icador del o#'eto slo#; Devuelve FALSE si hu#o errorA TRUE
en otro caso;
if+us>open>slob
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FusZopenZslo# 22 A#re un o#'eto slo#
Kescripci"n
int if+us>open>slob > long #idA int mode ?
A#re un o#'eto slo#; 16# ser* un identi(icador de slo# /ue v*lido; ModosC 1 ^ LOZRDONL%A 0 ^
LOZLRONL%A 8 ^ LOZAPP+NDA M ^ LOZRDLRA 1K ^ LOZB@FF+RA 70 ^ LOZNOB@FF+R o
una com#inaci-n de ellos; Devuelve FALSE si hu#o errorA en otro caso el identi(icador del nuevo
o#'eto slo#;
if+us>read>slob
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FusZreadZslo# 22 Lee un nBmero de #ytes >n#ytes? de un o#'eto slo#
Kescripci"n
int if+us>read>slob > long #idA long n#ytes ?
Lee un nBmero de #ytes >n#ytes? de un o#'eto slo#; 16# es un identi(icador de slo# v*lido y n1?tes es
el nBmero de #ytes a leer; Devuelve FALSE si hu#o errorA sino la cadena;
if+us>seeB>slob
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FusZsee"Zslo# 22 +sta#lece la posici-n de archivo o #Bs/ueda actual
Kescripci"n
int if+us>seeB>slob > int #idA int modoA int desplazamiento ?
+sta#lece la posici-n de archivo o #Bs/ueda actual de un o#'eto slo# a#ierto; 16# de#e ser un .D de
un slo# eFistente; ModosC 3 ^ LOZ++SZ+,A 1 ^ LOZ++SZ5@RA 0 ^ LOZ++SZ+ND y
#esplaDam6ento es un desplazamiento en #ytes; Devuelve FALSE en caso de errorA o la posici-n de
#Bs/ueda en cual/uier otro caso;
if+us>tell>slob
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FusZtellZslo# 22 Devuelve la posici-n de archivo o #Bs/ueda actual
Kescripci"n
int if+us>tell>slob > int #id ?
Devuelve la posici-n de archivo o #Bs/ueda actual de un o#'eto slo# a#iertoA 16# de#e ser un .D de
un slo# eFistente; Devuelve FALSE en caso de (alloA o en cual/uier otro caso la posici-n de
#Bs/ueda;
if+us>3rite>slob
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
i(FusZEriteZslo# 22 +scri#e una cadena en un o#'eto slo#
Kescripci"n
int if+us>3rite>slob > long #idA string content ?
+scri#e una cadena en un o#'eto slo#; 16# es un identi(icador de slo# v*lido y content el contenido a
escri#ir; Devuelve FALSE si hu#o errorA sino el nBmero de #ytes escritos;
:I. II, Administration ;unctions
Introducci"n
+sta eFtension P+5L no esta ligada a P&P; ,his eFtension is availa#le (or Lin70 only; .t provides
(unctions to administrate Microso(t .nternet .n(ormation erver >..?; ,he eFtension includes
(unction to create Ee# sites and virtual directories as Eell as con(iguring security and script
mapping; ,hese (unctions have #een added in P&P 8;
.n order to use these (unctions you must ena#le the php%iis#unc.dll DLL inside o( php.ini;
Podeis descargar esta DLL de las eFtensiones P+5L desde la pagina P&P DoEnloads o desde
httpCDDsnaps;php;netD;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
iisZaddZserver 22 5reates a neE virtual Ee# server
iisZgetZdirZsecurity 22 Gets Directory ecurity
iisZgetZscriptZmap 22 Gets script mapping on a virtual directory (or a speci(ic eFtension
iisZgetZserverZ#yZcomment 22 Return the instance num#er associated Eith the 5omment
iisZgetZserverZ#yZpath 22 Return the instance num#er associated Eith the Path
iisZgetZserverZrights 22 Gets server rights
iisZgetZserviceZstate 22 tarts the service de(ined #y ervice.d
iisZremoveZserver 22 Removes the virtual Ee# server indicated #y erver.nstance
iisZsetZappZsettings 22 5reates application scope (or a virtual directory
iisZsetZdirZsecurity 22 ets Directory ecurity
iisZsetZscriptZmap 22 ets script mapping on a virtual directory
iisZsetZserverZrights 22 ets server rights
iisZstartZserver 22 tarts the virtual Ee# server
iisZstartZservice 22 tarts the service de(ined #y ervice.d
iisZstopZserver 22 tops the virtual Ee# server
iisZstopZservice 22 tops the service de(ined #y ervice.d
iis>add>ser5er
>no version in(ormationA might #e only in 5$?
iisZaddZserver 22 5reates a neE virtual Ee# server
Kescription
int iis>add>ser5er > string pathA string commentA string serverZipA int portA string hostZnameA int
rightsA int startZserver ?
iis>get>dir>security
>no version in(ormationA might #e only in 5$?
iisZgetZdirZsecurity 22 Gets Directory ecurity
Kescription
int iis>get>dir>security > int serverZinstanceA string virtualZpath ?
iis>get>script>map
>no version in(ormationA might #e only in 5$?
iisZgetZscriptZmap 22 Gets script mapping on a virtual directory (or a speci(ic eFtension
Kescription
int iis>get>script>map > int serverZinstanceA string virtualZpathA string scriptZeFtension ?
iis>get>ser5er>by>comment
>no version in(ormationA might #e only in 5$?
iisZgetZserverZ#yZcomment 22 Return the instance num#er associated Eith the 5omment
Kescription
int iis>get>ser5er>by>comment > string comment ?
iis>get>ser5er>by>path
>no version in(ormationA might #e only in 5$?
iisZgetZserverZ#yZpath 22 Return the instance num#er associated Eith the Path
Kescription
int iis>get>ser5er>by>path > string path ?
+ach virtual server in .. is associated Eith an instance num#er; iis>get>ser5er>by>path./ Finds
the instance num#er (rom the actual path to the root directory;
iis>get>ser5er>rights
>no version in(ormationA might #e only in 5$?
iisZgetZserverZrights 22 Gets server rights
Kescription
int iis>get>ser5er>rights > int serverZinstanceA string virtualZpath ?
iis>get>ser5ice>state
>no version in(ormationA might #e only in 5$?
iisZgetZserviceZstate 22 tarts the service de(ined #y ervice.d
Kescription
int iis>get>ser5ice>state > string serviceZid ?
iis>remo5e>ser5er
>no version in(ormationA might #e only in 5$?
iisZremoveZserver 22 Removes the virtual Ee# server indicated #y erver.nstance
Kescription
int iis>remo5e>ser5er > int serverZinstance ?
iis>set>app>settings
>no version in(ormationA might #e only in 5$?
iisZsetZappZsettings 22 5reates application scope (or a virtual directory
Kescription
int iis>set>app>settings > int serverZinstanceA string virtualZpathA string applicationZscope ?
iis>set>dir>security
>no version in(ormationA might #e only in 5$?
iisZsetZdirZsecurity 22 ets Directory ecurity
Kescription
int iis>set>dir>security > int serverZinstanceA string virtualZpathA int directoryZ(lags ?
iis>set>script>map
>no version in(ormationA might #e only in 5$?
iisZsetZscriptZmap 22 ets script mapping on a virtual directory
Kescription
int iis>set>script>map > int serverZinstanceA string virtualZpathA string scriptZeFtensionA string
engineZpathA int alloEZscripting ?
iis>set>ser5er>rights
>no version in(ormationA might #e only in 5$?
iisZsetZserverZrights 22 ets server rights
Kescription
int iis>set>ser5er>rights > int serverZinstanceA string virtualZpathA int directoryZ(lags ?
iis>start>ser5er
>no version in(ormationA might #e only in 5$?
iisZstartZserver 22 tarts the virtual Ee# server
Kescription
int iis>start>ser5er > int serverZinstance ?
iis>start>ser5ice
>no version in(ormationA might #e only in 5$?
iisZstartZservice 22 tarts the service de(ined #y ervice.d
Kescription
int iis>start>ser5ice > string serviceZid ?
iis>stop>ser5er
>no version in(ormationA might #e only in 5$?
iisZstopZserver 22 tops the virtual Ee# server
Kescription
int iis>stop>ser5er > int serverZinstance ?
iis>stop>ser5ice
>no version in(ormationA might #e only in 5$?
iisZstopZservice 22 tops the service de(ined #y ervice.d
Kescription
int iis>stop>ser5ice > string serviceZid ?
:II. ;unciones para imgenes
Puede usar las (unciones para im*genes en P&P para o#tener el tamaWo de im*genes !P+GA G.FA
PNGA LFA ,.FF y !P+G0333A y si tiene instalada la #i#lioteca GD >disponi#le en
httpCDDEEE;#outell;comDgdD? tam#i<n podr* crear y manipular im*genes;
i tiene P&P compilado con ==ena1le=e869 puede tra#a'ar con la in(ormaci-n guardada en las
ca#eceras de las im*genes !P+G y ,.FF; +stas (unciones no re/uieren la #i#lioteca GD;
Los (ormatos de im*genes /ue puede manipular dependen de la versi-n de GD /ue instale y de
cual/uier otra #i#lioteca /ue GD pueda necesitar para acceder a esos (ormatos de imagen; Las
versiones de GD anteriores a la GD21;K soportan im*genes en (ormato gi( y no soportan pngA
mientras /ue las versiones superiores a la GD21;K soportan el (ormato png y no el gi(;
Antes de poder leer y escri#ir im*genes en (ormato 'pegA de#er* o#tener e instalar 'peg2K#
>disponi#le en (tpCDD(tp;uu;netDgraphicsD'pegD?A y despu<s recompilar GD para poder hacer uso de
'peg2K#; ,am#i<n tendr* /ue compilar P&P con la opci-n ==76th=UpeE=#6r:/ruta/a/UpeE=X1;
Para aWadir el soporte de (uentes ,ype 1A puede instalar t1li# >disponi#le en
(tpCDDsunsite;unc;eduDpu#DLinuFDli#sDgraphicsD?A y entonces aWadir la opci-n ==76th=t1l61):#6r. al
recompilar;
Tabla de contenidos
gdZin(o 22 Retrieve in(ormation a#out the currently installed GD li#rary
getimagesize 22 O#tener el tamaWo de una imagen
imageZtypeZtoZeFtension 22 Get (ile eFtension (or image type
imageZtypeZtoZmimeZtype 22 Get Mime2,ype (or image2type returned #y getimagesizeA
eFi(ZreadZdataA eFi(Zthum#nailA eFi(Zimagetype
image0E#mp 22 Output image to #roEser or (ile
imagealpha#lending 22 et the #lending mode (or an image
imageantialias 22 hould antialias (unctions #e used or not
.mageArc 22 Di#u'a una elipse parcial
.mage5har 22 Di#u'a un car*cter horizontalmente
.mage5har@p 22 Di#u'a un car*cter vertical
.mage5olorAllocate 22 Reserva un color para una imagen
imagecolorallocatealpha 22 Allocate a color (or an image
.mage5olorAt 22 O#tiende el )ndice del color de un piFel
.mage5olor5losest 22 O#tiene el )ndice del color m*s cercano al color especi(icado
imagecolorclosestalpha 22 Get the indeF o( the closest color to the speci(ied color R alpha
imagecolorclosesthE# 22 Get the indeF o( the color Ehich has the hueA Ehite and #lac"ness nearest
to the given color
imagecolordeallocate 22 De2allocate a color (or an image
.mage5olor+Fact 22 Devuelve el )ndice del color especi(icado
imagecoloreFactalpha 22 Get the indeF o( the speci(ied color R alpha
imagecolormatch 22 Ma"es the colors o( the palette version o( an image more closely match the true
color version
.mage5olorResolve 22 Devuelve el )ndice del color especi(icado o su posi#le alternativa m*s
cercana
imagecolorresolvealpha 22 Get the indeF o( the speci(ied color R alpha or its closest possi#le
alternative
.mage5oloret 22 +sta#lece el color para el )ndice de la paleta especi(icado
.mage5olorsFor.ndeF 22 O#tiene los colores de un )ndice
.mage5olors,otal 22 +ncuentra el nBmero de colores de la paleta de una imagen
.mage5olor,ransparent 22 De(ine un color como transparente
imagecopy 22 5opy part o( an image
imagecopymerge 22 5opy and merge part o( an image
imagecopymergegray 22 5opy and merge part o( an image Eith gray scale
imagecopyresampled 22 5opia y reescala parte de una imagen con remuestreo
.mage5opyResized 22 5opia y redimensiona parte de una imagen
.mage5reate 22 5rea una nueva imagen
imagecreate(romgd0 22 5reate a neE image (rom GD0 (ile or @RL
imagecreate(romgd0part 22 5reate a neE image (rom a given part o( GD0 (ile or @RL
imagecreate(romgd 22 5reate a neE image (rom GD (ile or @RL
imagecreate(romgi( 22 5rear una nueva imagen a partir de un archivo o @RL
imagecreate(rom'peg 22 5rea una imagen nueva desde un archivo o @RL
imagecreate(rompng 22 5rea una imagen nueva desde un archivo o @RL
imagecreate(romstring 22 5reate a neE image (rom the image stream in the string
imagecreate(romE#mp 22 5reate a neE image (rom (ile or @RL
imagecreate(romF#m 22 5reate a neE image (rom (ile or @RL
imagecreate(romFpm 22 5reate a neE image (rom (ile or @RL
imagecreatetruecolor 22 5rea una imagen nueva en color real >true color?
.mageDashedLine 22 Di#u'a una l)nea discontinua
.mageDestroy 22 Destruye una imagen
imageellipse 22 DraE an ellipse
.mageFill 22 Relleno
image(illedarc 22 DraE a partial ellipse and (ill it
image(illedellipse 22 DraE a (illed ellipse
.mageFilledPolygon 22 Di#u'a un pol)gono relleno
.mageFilledRectangle 22 di#u'a un rect*ngulo relleno
.mageFill,oBorder 22 Relleno de un color especi(ico
image(ilter 22 Applies a (ilter to an image
.mageFont&eight 22 Devuelve la altura de una (uente
.mageFontLidth 22 Devuelve la anchura de una (uente
image(t##oF 22 Give the #ounding #oF o( a teFt using (onts via (reetype0
image(tteFt 22 Lrite teFt to the image using (onts using Free,ype 0
imagegammacorrect 22 Apply a gamma correction to a GD image
imagegd0 22 Output GD0 image to #roEser or (ile
imagegd 22 Output GD image to #roEser or (ile
imagegi( 22 Producir la salida de una imagen al navegador o a un archivo
.mage.nterlace 22 Activa o desactiva el entrelazado
imageistruecolor 22 Finds Ehether an image is a truecolor image
image'peg 22 Output image to #roEser or (ile
imagelayere((ect 22 et the alpha #lending (lag to use the #undled li#gd layering e((ects
.mageLine 22 Di#u'a una l)nea
imageload(ont 22 5argar una (uente nueva
imagepalettecopy 22 5opy the palette (rom one image to another
imagepng 22 Output a PNG image to either the #roEser or a (ile
.magePolygon 22 Di#u'a un pol)gono
.magePBBoF 22 Devuelve el #orde /ue rodea un rect*ngulo de teFto usando (uentes Postcript
,ype1
.mageP5opyFont 22 hace una copia de una (uente ya cargada para (uturas modi(icaciones
.mageP+ncodeFont 22 5am#ia el vector de codi(icaci-n de caracteres de una (uente
imagepseFtend(ont 22 +Ftend or condense a (ont
.magePFreeFont 22 Li#era la memoria usada por un (uente Postcript ,ype 1
imagepsload(ont 22 5argar una (uente Postcript ,ipo 1 desde un archivo
imagepsslant(ont 22 lant a (ont
.mageP,eFt 22 Para di#u'ar una cadena de teFto so#re una imagen usando (uentes Postcript
,ype1
.mageRectangle 22 Di#u'a un rect*ngulo
imagerotate 22 Rotate an image Eith a given angle
imagesavealpha 22 et the (lag to save (ull alpha channel in(ormation >as opposed to single2color
transparency? Ehen saving PNG images
imageset#rush 22 et the #rush image (or line draEing
.mageetPiFel 22 Di#u'a un piFel
imagesetstyle 22 et the style (or line draEing
imagesetthic"ness 22 et the thic"ness (or line draEing
imagesettile 22 et the tile image (or (illing
.magetring 22 Di#u'a una cadena de teFto horizintalmente
.magetring@p 22 Di#u'a una cadena de teFto verticalmente
.mageJ 22 O#tiene la anchura de la imagen
.mage% 22 O#tiene la altura de la imagen
imagetruecolortopalette 22 5onvert a true color image to a palette image
imagett(##oF 22 +ntrega la ca'a circundante de un teFto usando (uentes ,rue,ype
imagett(teFt 22 +scri#ir un teFto so#re la imagen usando (uentes ,rue,ype
imagetypes 22 Return the image types supported #y this P&P #uild
imageE#mp 22 Output image to #roEser or (ile
imageF#m 22 Output JBM image to #roEser or (ile
iptcem#ed 22 +m#ed #inary .P,5 data into a !P+G image
iptcparse 22 Parse a #inary .P,5 httpCDDEEE;iptc;orgD #loc" into single tags;
'peg0E#mp 22 5onvert !P+G image (ile to LBMP image (ile
png0E#mp 22 5onvert PNG image (ile to LBMP image (ile
gd>info
>P&P 8 _^ 8;7;3A P&P 4?
gdZin(o 22 Retrieve in(ormation a#out the currently installed GD li#rary
Kescription
array gd>info > void ?
Returns an associative array descri#ing the version and capa#ilities o( the installed GD li#rary;
Tabla !. Elements of array returned by gd>info./
Attribute Meaning
GD $ersion string value descri#ing the installed l61E# version;
Attribute Meaning
Freetype
upport
boolean value; TRUE i( Freetype upport is installed;
Freetype
Lin"age
string value descri#ing the Eay in Ehich Freetype Eas lin"ed; +Fpected values areC
HEith (reetypeHA HEith ,,F li#raryHA and HEith un"noEn li#raryH; ,his element Eill
only #e de(ined i( 3reet?pe Support evaluated to TRUE;
,1Li#
upport
boolean value; TRUE i( T1461 support is included;
G.F Read
upport
boolean value; TRUE i( support (or rea#6nE -03 images is included;
G.F 5reate
upport
boolean value; TRUE i( support (or creat6nE -03 images is included;
!PG upport boolean value; TRUE i( b+- support is included;
PNG
upport
boolean value; TRUE i( +N- support is included;
LBMP
upport
boolean value; TRUE i( IAM+ support is included;
JBM
upport
boolean value; TRUE i( FAM support is included;
E'emplo !. )sing gd>info./
<?php
=ar%dump3Ed%in#o399;
?>
,he typical output is C
array3K9 :
)"-L (ersion"/>>
strinE3C19 "bundled 3C.2 compatible9"
)"Sree*ype &upport"/>>
bool3#alse9
)"*6Oib &upport"/>>
bool3#alse9
)"-4S 'ead &upport"/>>
bool3true9
)"-4S Rreate &upport"/>>
bool3#alse9
)"A- &upport"/>>
bool3#alse9
)".- &upport"/>>
bool3true9
)"7Z" &upport"/>>
bool3true9
)"XZ" &upport"/>>
bool3#alse9
;
ee also imagepng./A image'peg./A imagegif./A image3bmp./A and imagetypes./;
getimagesi6e
>P&P 7A P&P 8 A P&P 4?
getimagesize 22 O#tener el tamaWo de una imagen
Kescripci"n
array getimagesi6e > string nom#reZarchivo PA array iin(oZimagenQ ?
La (unci-n getimagesi6e./ determinar* el tamaWo de cual/uier archivo de imagen G.FA !PGA PNGA
LFA L5A PDA ,.FFA BMPA .FFA !P0A !PJA !B0A !P5A JBMA o LBMP y devuelve las
dimensionesA 'unto con el tipo de archivo y una cadena de teFto de alturaDancho a ser usada al
interior de una eti/ueta &,ML 0M- normal;
i no es posi#le acceder a la imagen nom1re_arch6oA o si no es una imagen v*lidaA getimagesi6e./
devolver* FALSE y generar* un error de nivel E_I,RN0N-;
Nota- +l soporte para !P5A !P0A !PJA !B0A JBMA y LBMP apareci- en P&P 8;7;0; +l
soporte para L5 eFiste a partir de P&P 8;7;3 y el soporte ,.FF (ue agregado en P&P
8;0;3
Nota- +l soporte de !P+G 0333 (ue agregado en P&P 8;7;0; Note /ue !P5 y !P0 son
capaces de tener componentes con di(erentes pro(undidades de #it; +n este casoA el valor
para =#its= es la pro(undidad de #it m*s alta encontrada; AsimismoA los archivos !P0
pueden contener mBltiples secuencias de c-digo !P+G 0333; +n este casoA getimagesi6e
./ devuelve los valores para la primera secuencia de c-digo /ue encuentra en la ra)z del
archivo;
Nota- La (unci-n getimagesi6e./ no re/uiere de la #i#lioteca de im*genes GD;
Devuelve una matriz con 8 elementos; +l )ndice 3 contiene el ancho de la imagen en p)Feles; +l
)ndice 1 contiene la altura; +l )ndice 0 es una #andera /ue indica el tipo de imagenC 1 ^ G.FA 0 ^
!PGA 7 ^ PNGA 8 ^ LFA 4 ^ PDA K ^ BMPA : ^ ,.FF>orden de #ytes intel?A M ^ ,.FF>orden de
#ytes motorola?A 9 ^ !P5A 13 ^ !P0A 11 ^ !PJA 10 ^ !B0A 17 ^ L5A 18 ^ .FFA 14 ^ LBMPA 1K ^
JBM; +stos valores corresponden a las constantes .MAG+,%P+ /ue (ueron agregadas en P&P
8;7;3; +l )ndice 7 es una cadena de teFto con el valor correcto height^=yyy= Eidth^=FFF= /ue puede
ser usado directamente en una eti/ueta .MG;
E'emplo !. getimagesi6e .archi5o/
<?php
list3$ancho, $altura, $tipo, $atr9 > EetimaEesi0e3"imE/bandera.jpE"9;
echo "<imE src>V"imE/bandera.jpEV" $attr alt>V"ejemplo de EetimaEesi0e39V" />";
?>
+l soporte para @RLs (ue agregado en P&P 8;3;4
E'emplo *. getimagesi6e .)M:/
<?php
$tam > EetimaEesi0e3"http@//888.example.com/Ei#s/loEo.Ei#"9;
// si el nombre de archi=o contiene un espacio, codi#icarlo apropiadamente
$tam > EetimaEesi0e3"http@//888.example.com/Ei#s/lo\C2Eo.Ei#"9;
?>
5on las im*genes !PG se devuelven dos )ndices adicionalesC channels y 16ts; channels ser* 7 para
(otos RGB y 8 para (otos 5M%S; 16ts es el nBmero de #its por cada color;
A partir de P&P 8;7;3A 16ts y channels se encuentran presentes para otros tipos de im*genes tam#i<n;
in em#argoA la presencia de <stos valores puede ser un poco con(usa; 5omo un e'emploA G.F
siempre usa 7 canales por p)FelA pero el nBmero de #its por p)Fel no puede ser calculado para un
G.F animado con una ta#la de colores glo#al;
Puede /ue algunos (ormatos no contengan una imagen o /ue contengan mBltiples im*genes; +n
estos casosA puede /ue getimagesi6e./ no sea capaz de determinar el tamaWo de la imagen
apropiadamente; getimagesi6e./ devolver* cero como valor de ancho y altura en tales casos;
A partir de P&P 8;7;3A getimagesi6e./ devuelve tam#i<n un par*metro adicionalA m6meA /ue
corresponde con el tipo M.M+ de la imagen; +sta in(ormaci-n puede ser usada para despachar
im*genes con las ca#eceras &,,P 5ontent2type correctasC
E'emplo 7. getimagesi6e./ y los tipos MIME
<?php
$tam > EetimaEesi0e3$nombre%archi=o9;
$da>#open3$nombre%archi=o, "rb"9;
i# 3$tam && $da9 :
header3"RontentFtype@ :$tam)MmimeM/;"9;
#passthru3$da9;
exit;
; else :
// error
;
?>
+l par*metro opcional 6n9o_6maEen le permite eFtraer algunos datos eFtendidos desde el archivo de
imagen; +n la actualidadA esto devolver* los di(erentes marcadores APP de !PG como una matriz
asociativa; Algunos programas usan estos marcadores para em#e#er in(ormaci-n de teFto en
im*genes; @n uso muy comBn es el em#e#er in(ormaci-n .P,5 httpCDDEEE;iptc;orgD en el marcador
APP17; Puede usar la (unci-n iptcparse./ para convertir el marcador APP17 #inario hacia algo
legi#le;
E'emplo 8. getimagesi6e./ de5ol5iendo IPTC
<?php
$tam > EetimaEesi0e3"imaEen%prueba.jpE", $in#o9;
i# 3isset3$in#o)",6<"/99 :
$iptc > iptcparse3$in#o)",6<"/9;
=ar%dump3$iptc9;
;
?>
$ea tam#i<n image>type>to>mime>type./A e+if>imagetype./A e+if>read>data./ y e+if>thumbnail
./;
image>type>to>e+tension
>no version in(ormationA might #e only in 5$?
imageZtypeZtoZeFtension 22 Get (ile eFtension (or image type
Kescription
string image>type>to>e+tension > int imagetype PA #ool includeZdotQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
image>type>to>mime>type
>P&P 8 _^ 8;7;3A P&P 4?
imageZtypeZtoZmimeZtype 22 Get Mime2,ype (or image2type returned #y getimagesizeA
eFi(ZreadZdataA eFi(Zthum#nailA eFi(Zimagetype
Kescription
string image>type>to>mime>type > int imagetype ?
,he image>type>to>mime>type./ (unction Eill determine the Mime2,ype (or an .MAG+,%P+
constant;
E'emplo !. image>type>to>mime>type .file/
<?php
header3"RontentFtype@ " . imaEe%type%to%mime%type34",-E*PE%.-99;
?>
,he returned values are as (olloEs
Tabla !. Meturned 5alues Constants
i&aget)pe Meturned 5alue
IMA#ETYPE_#IF 6maEe/E69
IMA#ETYPE_'PE# 6maEe/UpeE
IMA#ETYPE_PN# 6maEe/pnE
IMA#ETYPE_S"F appl6cat6on/8=shoc>7ae=9lash
IMA#ETYPE_PSD 6maEe/ps#
IMA#ETYPE_(MP 6maEe/1mp
IMA#ETYPE_TIFF_II >intel #yte order? 6maEe/t699
IMA#ETYPE_TIFF_MM >motorola #yte order? 6maEe/t699
IMA#ETYPE_'PC appl6cat6on/octet=stream
IMA#ETYPE_'P* 6maEe/Up2
IMA#ETYPE_'P% appl6cat6on/octet=stream
IMA#ETYPE_'(* appl6cat6on/octet=stream
IMA#ETYPE_S"C appl6cat6on/8=shoc>7ae=9lash
IMA#ETYPE_IFF 6maEe/699
IMA#ETYPE_"(MP 6maEe/n#.7ap.71mp
IMA#ETYPE_%(M 6maEe/81m
Nota- ,his (unction does not re/uire the GD image li#rary;
ee also getimagesi6e./A e+if>imagetype./A e+if>read>data./ and e+if>thumbnail./;
image*3bmp
>P&P 8 _^ 8;3;4A P&P 4?
image0E#mp 22 Output image to #roEser or (ile
Kescription
int image*3bmp > resource image PA string (ilename PA int thresholdQQ ?
image*3bmp./ creates the LBMP (ile in (ilename (rom the image 6maEe; ,he 6maEe argument is
the return (rom imagecreate./;
,he (ilename argument is optionalA and i( le(t o((A the raE image stream Eill #e output directly; By
sending an imageDvnd;Eap;E#mp content2type using header./A you can create a P&P script that
outputs LBMP images directly;
E'emplo !. image*3bmp./ e+ample
<?php
$#ile > Mphp.pnEM;
$imaEe > imaEecreate#rompnE3$#ile9;
header3MRontentFtype@ M . imaEe%type%to%mime%type34",-E*PE%7Z"99;
imaEeC8bmp3$imaEe9; // output the stream directly
?>
Nota- LBMP support is only availa#le i( P&P Eas compiled against GD21;M or later;
ee also image3bmp./;
imagealphablending
>P&P 8 _^ 8;3;KA P&P 4?
imagealpha#lending 22 et the #lending mode (or an image
Kescription
#ool imagealphablending > resource imageA #ool #lendmode ?
imagealphablending./ alloEs (or tEo di((erent modes o( draEing on truecolor images; .n #lending
modeA the alpha channel component o( the color supplied to all draEing (unctionA such as
imagesetpi+el./ determines hoE much o( the underlying color should #e alloEed to shine through;
As a resultA gd automatically #lends the eFisting color at that point Eith the draEing colorA and
stores the result in the image; ,he resulting piFel is opa/ue; .n non2#lending modeA the draEing
color is copied literally Eith its alpha channel in(ormationA replacing the destination piFel; Blending
mode is not availa#le Ehen draEing on palette images; .( 1len#mo#e is TRUEA then #lending mode
is ena#ledA otherEise disa#led; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en
caso de (allo;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
imageantialias
>P&P 8 _^ 8;7;0A P&P 4?
imageantialias 22 hould antialias (unctions #e used or not
Kescription
#ool imageantialias > resource imA #ool on ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- +sta (uncion esta disponi#le solamente si P&P se ha compilado con la version de
las #i#liotecas GD distri#uidas con P&P;
ee also imagecreatetruecolor./;
ImageArc
>P&P 7A P&P 8 A P&P 4?
.mageArc 22 Di#u'a una elipse parcial
Kescripci"n
int imagearc > int imA int cFA int cyA int EA int hA int sA int eA int col ?
.mageArc di#u'a una elipse parcial centrada en cFA cy >la es/uina superior iz/uierda es 3A3? en la
imagen /ue representa im; E y h especi(ican la anchura y altura respectivamente mientras /ue los
puntos de inicio y (inal vienen indicados por los par*metros s y e en grados;
ImageChar
>P&P 7A P&P 8 A P&P 4?
.mage5har 22 Di#u'a un car*cter horizontalmente
Kescripci"n
int imagechar > int imA int (ontA int FA int yA string cA int col ?
.mage5har di#u'a el primer car*cter de c en la imagen identi(icada como 6# con su es/uina superior
iz/uierda en 8A ? >arri#a iz/uierda es 3A3? con el color col; i la (uente es 1A 0A 7A 8 o 4 se usa una
(uente prede(inida >nBmeros mayores corresponden con tamaWos mayores?;
$ea tam#i<n imageloadfont./;
ImageChar)p
>P&P 7A P&P 8 A P&P 4?
.mage5har@p 22 Di#u'a un car*cter vertical
Kescripci"n
int imagecharup > int imA int (ontA int FA int yA string cA int col ?
.mage5har@p di#u'a el caracter c verticalmente en la imagen identi(icado como im en las
coordenadas FA y >arri#a iz/uierda es 3A3? con el color col; i la (uente es 1A 0A 7A 8 o 4 se usa una
(uente prede(inida;
$ea tam#i<n imageloadfont./;
ImageColorAllocate
>P&P 7A P&P 8 A P&P 4?
.mage5olorAllocate 22 Reserva un color para una imagen
Kescripci"n
int imagecolorallocate > int imA int redA int greenA int #lue ?
.mage5olorAllocate devuelve un identi(icador del color representado por la mezcla de los
componentes RGB dados; +l par*metro im es el resultado de la (unci-n imagecreate./;
.mage5olorAlocate tiene /ue ser invocada para crear cada color /ue va a ser usado por la imagen
/ue representa im;
$8hite > 4maEeRolor,llocate3$im, C55,C55,C559;
$blacI > 4maEeRolor,llocate3$im, 2,2,29;
imagecolorallocatealpha
>P&P 8 _^ 8;7;0A P&P 4?
imagecolorallocatealpha 22 Allocate a color (or an image
Kescription
int imagecolorallocatealpha > resource imageA int redA int greenA int #lueA int alpha ?
imagecolorallocatealpha./ #ehaves identically to imagecolorallocate./ Eith the addition o( the
transparency parameter alpha Ehich may have a value #etEeen 0 and 127; 0 indicates completely
opa/ue Ehile 127 indicates completely transparent;
Returns FALSE i( the allocation (ailed;
E'emplo !. E+ample of using imagecolorallocatealpha./
<?php
$si0e > <22;
$imaEe>imaEecreatetruecolor3$si0e, $si0e9;
// somethinE to Eet a 8hite bacIEround 8ith blacI border
$bacI > imaEecolorallocate3$imaEe, C55, C55, C559;
$border > imaEecolorallocate3$imaEe, 2, 2, 29;
imaEe#illedrectanEle3$imaEe, 2, 2, $si0e F 6, $si0e F 6, $bacI9;
imaEerectanEle3$imaEe, 2, 2, $si0e F 6, $si0e F 6, $border9;
$yello8%x > 622;
$yello8%y > H5;
$red%x > 6C2;
$red%y > 6G5;
$blue%x > 6JH;
$blue%y > 6C5;
$radius > 652;
// allocate colors 8ith alpha =alues
$yello8 > imaEecolorallocatealpha3$imaEe, C55, C55, 2, H59;
$red > imaEecolorallocatealpha3$imaEe, C55, 2, 2, H59;
$blue > imaEecolorallocatealpha3$imaEe, 2, 2, C55, H59;
// dra8inE < o=erlapped circle
imaEe#illedellipse3$imaEe, $yello8%x, $yello8%y, $radius, $radius, $yello89;
imaEe#illedellipse3$imaEe, $red%x, $red%y, $radius, $radius, $red9;
imaEe#illedellipse3$imaEe, $blue%x, $blue%y, $radius, $radius, $blue9;
// donMt #orEet to output a correct header!
header3MRontentFtype@ imaEe/pnEM9;
// and #inally, output the result
imaEepnE3$imaEe9;
imaEedestroy3$imaEe9;
?>
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
ee also imagecolorallocate./ and imagecolordeallocate./;
ImageColorAt
>P&P 7A P&P 8 A P&P 4?
.mage5olorAt 22 O#tiende el )ndice del color de un piFel
Kescripci"n
int imagecolorat > int imA int FA int y ?
Devuelve el )ndice del color del piFel especi(icado en la posici-n de la imagen;
$ea tam#i<n imagecolorset./ y imagecolorsforinde+./;
ImageColorClosest
>P&P 7A P&P 8 A P&P 4?
.mage5olor5losest 22 O#tiene el )ndice del color m*s cercano al color especi(icado
Kescripci"n
int imagecolorclosest > int imA int redA int greenA int #lue ?
Devuelve el )ndice del color de la paleta de la imagen /ue sea m*s =cercano= al valor RGB
especi(icado;
La =distancia= entre el color deseado y cada color de la paleta es calculada como si los valores RGB
representasen puntos en un espacio tridimensional;
$ea tam#i<n imagecolore+act./;
imagecolorclosestalpha
>P&P 8 _^ 8;3;KA P&P 4?
imagecolorclosestalpha 22 Get the indeF o( the closest color to the speci(ied color R alpha
Kescription
int imagecolorclosestalpha > resource imageA int redA int greenA int #lueA int alpha ?
Returns the indeF o( the color in the palette o( the image Ehich is =closest= to the speci(ied RGB
value and alpha level;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
ee also imagecolore+actalpha./;
imagecolorclosesth3b
>P&P 8 _^ 8;3;1A P&P 4?
imagecolorclosesthE# 22 Get the indeF o( the color Ehich has the hueA Ehite and #lac"ness nearest
to the given color
Kescription
int imagecolorclosesth3b > resource imageA int redA int greenA int #lue ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
imagecolordeallocate
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
imagecolordeallocate 22 De2allocate a color (or an image
Kescription
int imagecolordeallocate > resource imageA int color ?
,he imagecolordeallocate./ (unction de2allocates a color previously allocated Eith
imagecolorallocate./ or imagecolorallocatealpha./;
<?php
$8hite > imaEecolorallocate3$im, C55, C55, C559;
imaEecolordeallocate3$im, $8hite9;
?>
ee also imagecolorallocate./ and imagecolorallocatealpha./;
ImageColorE+act
>P&P 7A P&P 8 A P&P 4?
.mage5olor+Fact 22 Devuelve el )ndice del color especi(icado
Kescripci"n
int imagecolore+act > int imA int redA int greenA int #lue ?
Devuelve el )ndice del color especi(icado de la paleta de la imagen;
i el color no eFiste en la paleta de la imagenA se devuelve el valor 21;
$ea tam#i<n imagecolorclosest./;
imagecolore+actalpha
>P&P 8 _^ 8;3;KA P&P 4?
imagecoloreFactalpha 22 Get the indeF o( the speci(ied color R alpha
Kescription
int imagecolore+actalpha > resource imageA int redA int greenA int #lueA int alpha ?
Returns the indeF o( the speci(ied colorRalpha in the palette o( the image;
.( the color does not eFist in the imageHs paletteA 21 is returned;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
ee also imagecolorclosestalpha./;
imagecolormatch
>P&P 8 _^ 8;7;3A P&P 4?
imagecolormatch 22 Ma"es the colors o( the palette version o( an image more closely match the true
color version
Kescription
#ool imagecolormatch > resource image1A resource image0 ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
6maEe1 must #e ,ruecolorA 6maEe2 must #e PaletteA and #oth 6maEe1 and 6maEe2 must #e the same
size;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- +sta (uncion esta disponi#le solamente si P&P se ha compilado con la version de
las #i#liotecas GD distri#uidas con P&P;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
ee also imagecreatetruecolor./;
ImageColorMesol5e
>P&P 7_^ 7;3;0A P&P 8 A P&P 4?
.mage5olorResolve 22 Devuelve el )ndice del color especi(icado o su posi#le alternativa m*s
cercana
Kescripci"n
int imagecolorresol5e > int imA int redA int greenA int #lue ?
+sta (unci-n garantiza el resultado de un )ndice de color para un color solicitadoA ya sea el color
eFacto o su alternativa m*s cercana;
$ea tam#i<n imagecolorclosest./;
imagecolorresol5ealpha
>P&P 8 _^ 8;3;KA P&P 4?
imagecolorresolvealpha 22 Get the indeF o( the speci(ied color R alpha or its closest possi#le
alternative
Kescription
int imagecolorresol5ealpha > resource imageA int redA int greenA int #lueA int alpha ?
,his (unction is guaranteed to return a color indeF (or a re/uested colorA either the eFact color or the
closest possi#le alternative;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
ee also imagecolorclosestalpha./;
ImageColor,et
>P&P 7A P&P 8 A P&P 4?
.mage5oloret 22 +sta#lece el color para el )ndice de la paleta especi(icado
Kescripci"n
#ool imagecolorset > int imA int indeFA int redA int greenA int #lue ?
+sta#lece el )ndice especi(icado de la paleta con el color introduciod; +sto es Btil para crear e(ectos
de rellenado en imagenes con paletas sin la so#recarga de tener /ue realizar el rellenado;
$ea tam#i<n imagecolorat./;
ImageColors;orInde+
>P&P 7A P&P 8 A P&P 4?
.mage5olorsFor.ndeF 22 O#tiene los colores de un )ndice
Kescripci"n
array imagecolorsforinde+ > int imA int indeF ?
Devuelve una matriz asociativa con las claves redA green y #lue /ue contienen los valores
apropiados para el color especi(icado en el )ndice;
$ea tam#i<n imagecolorat./ y imagecolore+act./;
ImageColorsTotal
>P&P 7A P&P 8 A P&P 4?
.mage5olors,otal 22 +ncuentra el nBmero de colores de la paleta de una imagen
Kescripci"n
int imagecolorstotal > int im ?
+ncuentra el nBmero de colores de la paleta de una imagen;
$ea tam#i<n imagecolorat./ y imagecolorsforinde+./;
ImageColorTransparent
>P&P 7A P&P 8 A P&P 4?
.mage5olor,ransparent 22 De(ine un color como transparente
Kescripci"n
int imagecolortransparent > int im PA int colQ ?
.mage5olor,ransparent esta#lece como color transparente a col en la imagen im; im es el
identi(icador de imagen devuelto por imagecreate./ y col es el identi(icador de color devuelto por
imagecolorallocate./;
e devuelve el identi(icador del color transparente >o el actualA si no se especi(ica ninguno?;
imagecopy
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
imagecopy 22 5opy part o( an image
Kescription
int imagecopy > resource dstZimA resource srcZimA int dstZFA int dstZyA int srcZFA int srcZyA int
srcZEA int srcZh ?
5opy a part o( src_6m onto #st_6m starting at the FAy coordinates src_8A src_? Eith a Eidth o( src_7
and a height o( src_h; ,he portion de(ined Eill #e copied onto the FAy coordinatesA #st_8 and #st_?;
imagecopymerge
>P&P 8 _^ 8;3;1A P&P 4?
imagecopymerge 22 5opy and merge part o( an image
Kescription
int imagecopymerge > resource dstZimA resource srcZimA int dstZFA int dstZyA int srcZFA int srcZyA int
srcZEA int srcZhA int pct ?
5opy a part o( src_6m onto #st_6m starting at the FAy coordinates src_8A src_? Eith a Eidth o( src_7
and a height o( src_h; ,he portion de(ined Eill #e copied onto the FAy coordinatesA #st_8 and #st_?;
,he tEo images Eill #e merged according to pct Ehich can range (rom 3 to 133; Lhen pct ^ 3A no
action is ta"enA Ehen 133 this (unction #ehaves identically to imagecopy./ (or pallete imagesA Ehile
it implements alpha transparency (or true colour images;
Nota- ,his (unction Eas added in P&P 8;3;K
imagecopymergegray
>P&P 8 _^ 8;3;KA P&P 4?
imagecopymergegray 22 5opy and merge part o( an image Eith gray scale
Kescription
int imagecopymergegray > resource dstZimA resource srcZimA int dstZFA int dstZyA int srcZFA int
srcZyA int srcZEA int srcZhA int pct ?
imagecopymergegray./ copy a part o( src_6m onto #st_6m starting at the FAy coordinates src_8A
src_? Eith a Eidth o( src_7 and a height o( src_h; ,he portion de(ined Eill #e copied onto the FAy
coordinatesA #st_8 and #st_?; ,he tEo images Eill #e merged according to pct Ehich can range (rom
3 to 133; Lhen pct ^ 3A no action is ta"enA Ehen 133 this (unction #ehaves identically to imagecopy
./;
,his (unction is identical to imagecopymerge./ eFcept that Ehen merging it preserves the hue o(
the source #y converting the destination piFels to gray scale #e(ore the copy operation;
Nota- ,his (unction Eas added in P&P 8;3;K
imagecopyresampled
>P&P 8 _^ 8;3;KA P&P 4?
imagecopyresampled 22 5opia y reescala parte de una imagen con remuestreo
Kescripci"n
int imagecopyresampled > resource imgZdstA resource imgZorgA int JdstA int %dstA int JorgA int
%orgA int anchoZdstA int altoZdstA int anchoZorgA int altoZorg ?
imagecopyresampled./ copia una porci-n rectangular de una imagen so#re otraA suavizando los
valores de los p)Feles mediante interpolaci-nA de (orma /ue al reducir el tamaWo de una imagen aBn
mantiene una #uena claridad; 6mE_#st es la imagen de destinoA 6mE_orE es el identi(icador de la
imagen de origen; i las coordenadas de origen y destino y ancho y alto son di(erentesA se encoger*
o agrandar* el (ragmento de imagen segBn sea necesario; Las coordenadas son relativas a la es/uina
superior iz/uierda; +sta (unci-n se puede usar para copiar regiones dentro de la misma imagen >si
6mE_#st es la misma /ue 6mE_orE? pero si las regiones se superponenA los resultados ser*n
impredeci#les;
$ea tam#i<n imagecopyresi6ed./;
Nota- +sta (unci-n (ue aWadida en P&P 8;3;K y re/uiere GD 0;3;1 o superior
ImageCopyMesi6ed
>P&P 7A P&P 8 A P&P 4?
.mage5opyResized 22 5opia y redimensiona parte de una imagen
Kescripci"n
int imagecopyresi6ed > int dstZimA int srcZimA int dstJA int dst%A int srcJA int src%A int dstLA int
dst&A int srcLA int src& ?
.mage5opyResize copia una porci-n rectangular de una imagen hacia otra imagen; #st_6m es la
imagen de destinoA src_6m es el identi(icador de la imagen origen; i la altura y anchura de las
coordenadas de origen y destino di(ieren se realizar* un estrechamiento o un estiramiento apropiado
del (ragmento de la imagen; Las coordenadas van localizadas so#re la es/uina superior iz/uierda;
+sta (unci-n se puede usar para copiar regiones dentro de la misma imagen >si #st_6m es igual /ue
src_6m? pero si las regiones se solapan los resultados seran impredeci#les;
ImageCreate
>P&P 7A P&P 8 A P&P 4?
.mage5reate 22 5rea una nueva imagen
Kescripci"n
int imagecreate > int FZsizeA int yZsize ?
.mage5reate devuelve un identi(icador de imagen representando una imagen en #lanco de tamaWo
FZsize por yZsize;
imagecreatefromgd*
>P&P 8 _^ 8;1;3A P&P 4?
imagecreate(romgd0 22 5reate a neE image (rom GD0 (ile or @RL
Kescription
resource imagecreatefromgd* > string (ilename ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
,ugerencia- Puede usar una @RL como nom#re de archivo con esta (unci-n si los (open
Erappers han sido activados; 5onsulte fopen./ para m*s detalles so#re c-mo especi(icar
el nom#re de (ichero y Ap<ndice L una lista de protocolos @RL soportados
A5iso
$ersiones de +!+ para LindoEs anteriores a 8;7;3A no soportan el acceso remoto a archivos para
esta (unci-nA no (uncionar* ni activando si/uiera alloEZurlZ(open;
imagecreatefromgd*part
>P&P 8 _^ 8;1;3A P&P 4?
imagecreate(romgd0part 22 5reate a neE image (rom a given part o( GD0 (ile or @RL
Kescription
resource imagecreatefromgd*part > string (ilenameA int srcJA int src%A int EidthA int height ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
,ugerencia- Puede usar una @RL como nom#re de archivo con esta (unci-n si los (open
Erappers han sido activados; 5onsulte fopen./ para m*s detalles so#re c-mo especi(icar
el nom#re de (ichero y Ap<ndice L una lista de protocolos @RL soportados
A5iso
$ersiones de +!+ para LindoEs anteriores a 8;7;3A no soportan el acceso remoto a archivos para
esta (unci-nA no (uncionar* ni activando si/uiera alloEZurlZ(open;
imagecreatefromgd
>P&P 8 _^ 8;1;3A P&P 4?
imagecreate(romgd 22 5reate a neE image (rom GD (ile or @RL
Kescription
resource imagecreatefromgd > string (ilename ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
,ugerencia- Puede usar una @RL como nom#re de archivo con esta (unci-n si los (open
Erappers han sido activados; 5onsulte fopen./ para m*s detalles so#re c-mo especi(icar
el nom#re de (ichero y Ap<ndice L una lista de protocolos @RL soportados
A5iso
$ersiones de +!+ para LindoEs anteriores a 8;7;3A no soportan el acceso remoto a archivos para
esta (unci-nA no (uncionar* ni activando si/uiera alloEZurlZ(open;
imagecreatefromgif
>P&P 7A P&P 8 A P&P 4?
imagecreate(romgi( 22 5rear una nueva imagen a partir de un archivo o @RL
Kescripci"n
resource imagecreatefromgif > string nom#reZarchivo ?
imagecreatefromgif./ devuelve un identi(icador de imagen /ue representa la imagen o#tenida
desde el nom#re de archivo dado;
imagecreatefromgif./ devuelve una cadena vac)a en caso de (allo; ,am#i<n genera un mensa'e de
errorA el cualA desa(ortunadamenteA se despliega como un enlace roto en un navegador; Para (acilitar
la depuraci-nA el siguiente e'emplo producir* un G.F de errorC
E'emplo !. E'emplo para gestionar un error duranto la creaci"n .cortesa de 5ic arroba 6ymsys
punto com/
<?php
#unction Ooad-i# 3$nombre%imaEen9
:
$im > ^imaEecreate#romEi# 3$nombre%imaEen9; /W 4ntentar la apertura W/
i# 3!$im9 : /W (eri#icar si ha #allado W/
$im > imaEecreate 3652, <29; /W Rrear una imaEen en blanco W/
$bEc > imaEecolorallocate 3$im, C55, C55, C559;
$tc > imaEecolorallocate 3$im, 2, 2, 29;
imaEe#illedrectanEle 3$im, 2, 2, 652, <2, $bEc9;
/W -enerar un mensaje de error W/
imaEestrinE 3$im, 6, 5, 5, "Error en la carEa de $nombre%imaEen", $tc9;
;
return $im;
;
?>
Nota- Dado /ue el soporte de G.F (ue completamente retirado de la #i#lioteca GD en la
versi-n 1;KA esta (unci-n no se encuentra disponi#le si est* usando tal versi-n de la
#i#lioteca GD;
,ugerencia- Puede usar una @RL como nom#re de archivo con esta (unci-n si los (open
Erappers han sido activados; 5onsulte fopen./ para m*s detalles so#re c-mo especi(icar
el nom#re de (ichero y Ap<ndice L una lista de protocolos @RL soportados
A5iso
$ersiones de +!+ para LindoEs anteriores a 8;7;3A no soportan el acceso remoto a archivos para
esta (unci-nA no (uncionar* ni activando si/uiera alloEZurlZ(open;
imagecreatefrom'peg
>P&P 7_^ 7;3;1KA P&P 8 A P&P 4?
imagecreate(rom'peg 22 5rea una imagen nueva desde un archivo o @RL
Kescripci"n
resource imagecreatefrom'peg > string nom#reZarchivo ?
imagecreatefrom'peg./ devuelve un identi(icador de imagen /ue representa a la imagen o#tenida a
partir del nom#re de archivo indicado;
imagecreatefrom'peg./ devuelve una cadena vac)a si ha (allado; ,am#i<n escri#e un mensa'e de
errorA /ue desa(ortunadamente se muestra en el navegador como un enlace roto; Para depurar con
mayor comodidadA el e'emplo siguiente producir* un !P+G err-neoC
E'emplo !. E'emplo de c"mo manipular un error durante la creaci"n .cortesa de
5ica6ymsys.com /
#unction RarEarApeE 3$nombreimE9 :
$im > ^imaEecreate#romjpeE 3$nombreimE9; /W 4ntento de apertura W/
i# 3!$im9 : /W Romprobar si ha #allado W/
$im > imaEecreate 3652, <29; /W Rrear una imaEen en blanco W/
$bEc > imaEecolorallocate 3$im, C55, C55, C559;
$tc > imaEecolorallocate 3$im, 2, 2, 29;
imaEe#illedrectanEle 3$im, 2, 2, 652, <2, $bEc9;
/W "ostrar un mensaje de error W/
imaEestrinE 3$im, 6, 5, 5, "Error carEando $nombreimE", $tc9;
;
return $im;
;
imagecreatefrompng
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
imagecreate(rompng 22 5rea una imagen nueva desde un archivo o @RL
Kescripci"n
resource imagecreatefrompng > string nom#reZarchivo ?
imagecreatefrompng./ devuelve un identi(icador de imagen /ue representa a la imagen o#tenida a
partir del nom#re de archivo indicado;
imagecreatefrompng./ devuelve una cadena vac)a si ha (allado; ,am#i<n escri#e un mensa'e de
errorA /ue desa(ortunadamente se muestra en el navegador como un enlace roto; Para depurar con
mayor comodidadA el e'emplo siguiente producir* un !P+G err-neoC
E'emplo !. E'emplo de c"mo manipular un error durante la creaci"n .cortesa de
5ica6ymsys.com /
#unction RarEarApeE 3$nombreimE9 :
$im > ^imaEecreate#rompnE 3$nombreimE9; /W 4ntento de apertura W/
i# 3!$im9 : /W Romprobar si ha #allado W/
$im > imaEecreate 3652, <29; /W Rrear una imaEen en blanco W/
$bEc > imaEecolorallocate 3$im, C55, C55, C559;
$tc > imaEecolorallocate 3$im, 2, 2, 29;
imaEe#illedrectanEle 3$im, 2, 2, 652, <2, $bEc9;
/W "ostrar un mensaje de error W/
imaEestrinE 3$im, 6, 5, 5, "Error carEando $nombreimE", $tc9;
;
return $im;
;
imagecreatefromstring
>P&P 8 _^ 8;3;8A P&P 4?
imagecreate(romstring 22 5reate a neE image (rom the image stream in the string
Kescripci"n
resource imagecreatefromstring > string image ?
imagecreatefromstring./ returns an image identi(ier representing the image o#tained (rom the
given string; ,hese types Eill #e automatically detected i( your #uild o( P&P supports themC !P+GA
PNGA G.FA LBMPA and GD0;
Calores retornados
An image resource Eill #e returned on success; FALSE is returned i( the image type is unsupportedA
the data is not in a recognised (ormatA or the image is corrupt and cannot #e loaded;
Cer tambi%n
imagecreatefrom'peg./A imagecreatefrompng./A imagecreatefromgif./A y imagecreate./
E'emplos
E'emplo !. imagecreatefromstring./ e+ample
<?php
$data > Mi(Z?'82]-Eo,,,,.&+hE+E,,,Z8,,,,&R,",,,Z/C+H7,,,,ZlM
. MZ"(E+,,,L///[lCY/d,,,,&+lEN('1XQ7N+No,4,xRC/2=XYLrM
. MEX14A*'IbHlob.+&tXsZ2j4X4,"&sNn7ls([8+OS1,=IK#OQCrM
. MJa5H&E<5N<e?CX6,68NIY&EE*=Lt]dN,,,,ZA'+5ErIAEEE>>M;
$data > baseG1%decode3$data9;
$im > imaEecreate#romstrinE3$data9;
i# 3$im !>> #alse9 :
header3MRontentF*ype@ imaEe/pnEM9;
imaEepnE3$im9;
;
else :
echo M,n error occured.M;
;
?>
imagecreatefrom3bmp
>P&P 8 _^ 8;3;1A P&P 4?
imagecreate(romE#mp 22 5reate a neE image (rom (ile or @RL
Kescription
resource imagecreatefrom3bmp > string (ilename ?
imagecreatefrom3bmp./ returns an image identi(ier representing the image o#tained (rom the
given (ilename;
imagecreatefrom3bmp./ returns an empty string on (ailure; .t also outputs an error messageA
Ehich un(ortunately displays as a #ro"en lin" in a #roEser; ,o ease de#ugging the (olloEing
eFample Eill produce an error LBMPC
E'emplo !. E+ample to handle an error during creation .courtesy 5ic at 6ymsys dot com/
<?php
#unction Ooad7Z"3$imEname9
:
$im > ^imaEecreate#rom8bmp3$imEname9; /W ,ttempt to open W/
i# 3!$im9 : /W &ee i# it #ailed W/
$im > imaEecreate 3C2, C29; /W Rreate a blanI imaEe W/
$bEc > imaEecolorallocate3$im, C55, C55, C559;
$tc > imaEecolorallocate3$im, 2, 2, 29;
imaEe#illedrectanEle3$im, 2, 2, 62, 62, $bEc9;
/W ?utput an errmsE W/
imaEestrinE3$im, 6, 5, 5, "Error loadinE $imEname", $tc9;
;
return $im;
;
?>
Nota- LBMP support is only availa#le i( P&P Eas compiled against GD21;M or later;
,ugerencia- Puede usar una @RL como nom#re de archivo con esta (unci-n si los (open
Erappers han sido activados; 5onsulte fopen./ para m*s detalles so#re c-mo especi(icar
el nom#re de (ichero y Ap<ndice L una lista de protocolos @RL soportados
A5iso
$ersiones de +!+ para LindoEs anteriores a 8;7;3A no soportan el acceso remoto a archivos para
esta (unci-nA no (uncionar* ni activando si/uiera alloEZurlZ(open;
imagecreatefrom+bm
>P&P 8 _^ 8;3;1A P&P 4?
imagecreate(romF#m 22 5reate a neE image (rom (ile or @RL
Kescription
resource imagecreatefrom+bm > string (ilename ?
imagecreatefrom+bm./ returns an image identi(ier representing the image o#tained (rom the given
(ilename;
,ugerencia- Puede usar una @RL como nom#re de archivo con esta (unci-n si los (open
Erappers han sido activados; 5onsulte fopen./ para m*s detalles so#re c-mo especi(icar
el nom#re de (ichero y Ap<ndice L una lista de protocolos @RL soportados
A5iso
$ersiones de +!+ para LindoEs anteriores a 8;7;3A no soportan el acceso remoto a archivos para
esta (unci-nA no (uncionar* ni activando si/uiera alloEZurlZ(open;
imagecreatefrom+pm
>P&P 8 _^ 8;3;1A P&P 4?
imagecreate(romFpm 22 5reate a neE image (rom (ile or @RL
Kescription
resource imagecreatefrom+pm > string (ilename ?
imagecreatefrom+pm./ returns an image identi(ier representing the image o#tained (rom the given
(ilename;
Nota- +sta (uncion esta disponi#le solamente si P&P se ha compilado con la version de
las #i#liotecas GD distri#uidas con P&P;
,ugerencia- Puede usar una @RL como nom#re de archivo con esta (unci-n si los (open
Erappers han sido activados; 5onsulte fopen./ para m*s detalles so#re c-mo especi(icar
el nom#re de (ichero y Ap<ndice L una lista de protocolos @RL soportados
A5iso
$ersiones de +!+ para LindoEs anteriores a 8;7;3A no soportan el acceso remoto a archivos para
esta (unci-nA no (uncionar* ni activando si/uiera alloEZurlZ(open;
imagecreatetruecolor
>P&P 8 _^ 8;3;KA P&P 4?
imagecreatetruecolor 22 5rea una imagen nueva en color real >true color?
Kescripci"n
resource imagecreatetruecolor > int anchuraA int altura ?
imagecreatetruecolor./ devuelve un identi(icador de imagen representando una imagen en #lanco
de tamaWo anchura por altura;
Nota- +sta (unci-n (ue aWadida en P&P 8;3;K y re/uiere GD 0;3;1 o superior
ImageKashed:ine
>P&P 7A P&P 8 A P&P 4?
.mageDashedLine 22 Di#u'a una l)nea discontinua
Kescripci"n
int imagedashedline > int imA int F1A int y1A int F0A int y0A int col ?
.mageLine di#u'a una l)nea discontinua desde F1Ay1 hasta F0A y0 >arri#a iz/uierda es 3;3? en la
imagen im con el color col;
$ea tam#i<n imageline./;
ImageKestroy
>P&P 7A P&P 8 A P&P 4?
.mageDestroy 22 Destruye una imagen
Kescripci"n
int imagedestroy > int im ?
.mageDestroy li#era la memoria asociada a la imagen im; im es la imagen devuelta por la (unci-n
imagecreate./;
imageellipse
>P&P 8 _^ 8;3;KA P&P 4?
imageellipse 22 DraE an ellipse
Kescription
int imageellipse > resource imageA int cFA int cyA int EA int hA int color ?
imageellipse./ draEs an ellipse centered at c8A c? >top le(t is 3A 3? in the image represented #y
6maEe; I and h speci(ies the ellipseHs Eidth and height respectively; ,he color o( the ellipse is
speci(ied #y color;
Nota- ,his (unction Eas added in P&P 8;3;K and re/uires GD 0;3;0 or later Ehich can
#e o#tained at httpCDDEEE;#outell;comDgdD
E'emplo !. imageellipse./ e+ample
<?php
// create a blanI imaEe
$imaEe > imaEecreate3122, <229;
// #ill the bacIEround color
$bE > imaEecolorallocate3$imaEe, 2, 2, 29;
// choose a color #or the ellipse
$col%ellipse > imaEecolorallocate3$imaEe, C55, C55, C559;
// dra8 the ellipse
imaEeellipse3$imaEe, C22, 652, <22, C22, $col%ellipse9;
// output the picture
header3"RontentFtype@ imaEe/pnE"9;
imaEepnE3$imaEe9;
?>
ee also imagefilledellipse./ and imagearc./;
Image;ill
>P&P 7A P&P 8 A P&P 4?
.mageFill 22 Relleno
Kescripci"n
int imagefill > int imA int FA int yA int col ?
.mageFill realiza un relleno empezando en la coordenada FAy >arri#a iz/uierda es 3A3? con el color
col en la imagen im;
imagefilledarc
>P&P 8 _^ 8;3;KA P&P 4?
image(illedarc 22 DraE a partial ellipse and (ill it
Kescription
#ool imagefilledarc > resource imageA int cFA int cyA int EA int hA int sA int eA int colorA int style ?
imagefilledarc./ draEs a partial ellipse centered at c8A c? >top le(t is 3A 3? in the image represented
#y 6maEe; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo; I and h
speci(ies the ellipseHs Eidth and height respectively Ehile the start and end points are speci(ied in
degrees indicated #y the s and e arguments; st?le is a #itEise OR o( the (olloEing possi#ilitiesC
1; IM#_ARC_PIE
0; IM#_ARC_CHORD
7; IM#_ARC_NOFILL
8; IM#_ARC_ED#ED
IM#_ARC_PIE and IM#_ARC_CHORD are mutually eFclusiveX IM#_ARC_CHORD 'ust connects
the starting and ending angles Eith a straight lineA Ehile IM#_ARC_PIE produces a rounded edge;
IM#_ARC_NOFILL indicates that the arc or chord should #e outlinedA not (illed;
IM#_ARC_ED#EDA used together Eith IM#_ARC_NOFILLA indicates that the #eginning and
ending angles should #e connected to the center 2 this is a good Eay to outline >rather than (ill? a Hpie
sliceH;
E'emplo !. Creating a 7K looBing pie
<?php
// this example is pro=ided by poxy at Ilam dot is
// create imaEe
$imaEe > imaEecreate3622, 6229;
// allocate some solors
$8hite > imaEecolorallocate3$imaEe, 2xSS, 2xSS, 2xSS9;
$Eray > imaEecolorallocate3$imaEe, 2xR2, 2xR2, 2xR29;
$darIEray > imaEecolorallocate3$imaEe, 2xK2, 2xK2, 2xK29;
$na=y > imaEecolorallocate3$imaEe, 2x22, 2x22, 2xJ29;
$darIna=y > imaEecolorallocate3$imaEe, 2x22, 2x22, 2x529;
$red > imaEecolorallocate3$imaEe, 2xSS, 2x22, 2x229;
$darIred > imaEecolorallocate3$imaEe, 2xK2, 2x22, 2x229;
// maIe the <L e##ect
#or 3$i > G2; $i > 52; $iFF9 :
imaEe#illedarc3$imaEe, 52, $i, 622, 52, 2, 15, $darIna=y, 4"-%,'R%4E9;
imaEe#illedarc3$imaEe, 52, $i, 622, 52, 15, H5 , $darIEray, 4"-%,'R%4E9;
imaEe#illedarc3$imaEe, 52, $i, 622, 52, H5, <G2 , $darIred, 4"-%,'R%4E9;
;
imaEe#illedarc3$imaEe, 52, 52, 622, 52, 2, 15, $na=y, 4"-%,'R%4E9;
imaEe#illedarc3$imaEe, 52, 52, 622, 52, 15, H5 , $Eray, 4"-%,'R%4E9;
imaEe#illedarc3$imaEe, 52, 52, 622, 52, H5, <G2 , $red, 4"-%,'R%4E9;
// #lush imaEe
header3MRontentFtype@ imaEe/pnEM9;
imaEepnE3$imaEe9;
imaEedestroy3$imaEe9;
?>
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
imagefilledellipse
>P&P 8 _^ 8;3;KA P&P 4?
image(illedellipse 22 DraE a (illed ellipse
Kescription
#ool imagefilledellipse > resource imageA int cFA int cyA int EA int hA int color ?
imagefilledellipse./ draEs an ellipse centered at c8A c? >top le(t is 3A 3? in the image represented #y
6maEe; I and h speci(ies the ellipseHs Eidth and height respectively; ,he ellipse is (illed using color;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- ,his (unction Eas added in P&P 8;3;K and re/uires GD 0;3;1 or later
E'emplo !. imagefilledellipse./ e+ample
<?php
// create a blanI imaEe
$imaEe > imaEecreate3122, <229;
// #ill the bacIEround color
$bE > imaEecolorallocate3$imaEe, 2, 2, 29;
// choose a color #or the ellipse
$col%ellipse > imaEecolorallocate3$imaEe, C55, C55, C559;
// dra8 the 8hite ellipse
imaEe#illedellipse3$imaEe, C22, 652, <22, C22, $col%ellipse9;
// output the picture
header3"RontentFtype@ imaEe/pnE"9;
imaEepnE3$imaEe9;
?>
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
ee also imageellipse./ and imagefilledarc./;
Image;illedPolygon
>P&P 7A P&P 8 A P&P 4?
.mageFilledPolygon 22 Di#u'a un pol)gono relleno
Kescripci"n
int imagefilledpolygon > int imA array pointsA int numZpointsA int col ?
.mageFilledPolygon crea un pol)gono relleno en la imagen imA points es una matriz P&P
conteniendo los v<rtices del poligonoA por e'emplo; pointsP3Q ^ F3A pointsP1Q ^ y3A pointsP0Q ^ F1A
pointsP7Q ^ y1A etc; numZpoints es el nBmero total de v<rtices;
Image;illedMectangle
>P&P 7A P&P 8 A P&P 4?
.mageFilledRectangle 22 di#u'a un rect*ngulo relleno
Kescripci"n
int imagefilledrectangle > int imA int F1A int y1A int F0A int y0A int col ?
.mageFilledRectangle crea un rect*ngulo relleno con color col en la imagen im comenzando con las
coordenadas superiores iz/uierdas F1A y1 y (inalizando en las coordenadas in(eriores derechas F0A
y0; 3A3 es la es/uina superior iz/uierda de la imagen;
Image;illTo1order
>P&P 7A P&P 8 A P&P 4?
.mageFill,oBorder 22 Relleno de un color especi(ico
Kescripci"n
int imagefilltoborder > int imA int FA int yA int #orderA int col ?
.mageFill,oBorder realiza un relleno hasta el color del #orde /ue est* de(inido por #order; +l punto
de inicio para el relleno es FAy >arri#a iz/uierda es 3A3? y la regi-n se rellena con el color col;
imagefilter
>P&P 4?
image(ilter 22 Applies a (ilter to an image
Kescription
#ool imagefilter > resource srcZimA int (iltertype PA int arg1 PA int arg0 PA int arg7QQQ ?
imagefilter./ applies the (ilter 96ltert?pe to the imageA using arE1A arE2 and arER Ehere necessary;
96ltert?pe can #e one o( the (olloEingC
0M-_304TER_NE-,TEC Reverses all colors o( the image;
0M-_304TER_-R,BSC,4EC 5onverts the image into grayscale;
0M-_304TER_AR0-!TNESSC 5hanges the #rightness o( the image; @se arE1 to set the
level o( #rightness;
0M-_304TER_CONTR,STC 5hanges the contrast o( the image; @se arE1 to set the level o(
contrast;
0M-_304TER_CO4OR0^EC Li"e 0M-_304TER_-R,BSC,4EA eFcept you can speci(y the
color; @se arE1A arE2 and arER in the (orm o( re#A 1lueA Ereen; ,he range (or each color is 3
to 044;
0M-_304TER_ED-EDETECTC @ses edge detection to highlight the edges in the image;
0M-_304TER_EMAOSSC +m#osses the image;
0M-_304TER_-,USS0,N_A4URC Blurs the image using the Gaussian method;
0M-_304TER_SE4ECT0(E_A4URC Blurs the image;
0M-_304TER_ME,N_REMO(,4C @ses mean removal to achieve a =s"etchy= e((ect;
0M-_304TER_SMOOT!C Ma"es the image smoother; @se arE1 to set the level o(
smoothness;
Nota- +sta (uncion esta disponi#le solamente si P&P se ha compilado con la version de
las #i#liotecas GD distri#uidas con P&P;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. imagefilter./ grayscale e+ample
<?php
$im > imaEecreate#rompnE3Mda=e.pnEM9;
i# 3$im && imaEe#ilter3$im, 4"-%S4O*E'%-',P&R,OE99 :
echo M4maEe con=erted to Erayscale.M;
imaEepnE3$im, Mda=e.pnEM9;
; else :
echo MRon=ersion to Erayscale #ailed.M;
;
imaEedestroy3$im9;
?>
E'emplo *. imagefilter./ brightness e+ample
<?php
$im > imaEecreate#rompnE3Msean.pnEM9;
i# 3$im && imaEe#ilter3$im, 4"-%S4O*E'%Z'4-H*.E&&, C299 :
echo M4maEe briEhtness chanEed.M;
imaEepnE3$im, Msean.pnEM9;
; else :
echo M4maEe briEhtness chanEe #ailed.M;
;
imaEedestroy3$im9;
?>
E'emplo 7. imagefilter./ colori6e e+ample
<?php
$im > imaEecreate#rompnE3Mphilip.pnEM9;
/W ', -, Z, so 2, C55, 2 is Ereen W/
i# 3$im && imaEe#ilter3$im, 4"-%S4O*E'%R?O?'4YE, 2, C55, 299 :
echo M4maEe success#ully shaded Ereen.M;
imaEepnE3$im, Mphilip.pnEM9;
; else :
echo M-reen shadinE #ailed.M;
;
imaEedestroy3$im9;
?>
Image;ontHeight
>P&P 7A P&P 8 A P&P 4?
.mageFont&eight 22 Devuelve la altura de una (uente
Kescripci"n
int imagefontheight > int (ont ?
Devuelve la altura en piFels de un car*cter en un (uente espec)(ica;
$ea tam#i<n imagefont3idth./ y imageloadfont./;
Image;ont2idth
>P&P 7A P&P 8 A P&P 4?
.mageFontLidth 22 Devuelve la anchura de una (uente
Kescripci"n
int imagefont3idth > int (ont ?
Devuelve la anchura en piFels de un car*cter en un (uente espec)(ica;
$ea tam#i<n imagefontheight./ y imageloadfont./;
imageftbbo+
>P&P 8 _^ 8;1;3A P&P 4?
image(t##oF 22 Give the #ounding #oF o( a teFt using (onts via (reetype0
Kescription
array imageftbbo+ > (loat sizeA (loat angleA string (ontZ(ileA string teFt PA array eFtrain(oQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
Nota- Parameter e8tra6n9o is optional since P&P 8;7;4;
imageftte+t
>P&P 8 _^ 8;1;3A P&P 4?
image(tteFt 22 Lrite teFt to the image using (onts using Free,ype 0
Kescription
array imageftte+t > resource imageA (loat sizeA (loat angleA int FA int yA int colA string (ontZ(ileA string
teFt PA array eFtrain(oQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
Nota- Parameter e8tra6n9o is optional since P&P 8;7;4;
imagegammacorrect
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
imagegammacorrect 22 Apply a gamma correction to a GD image
Kescription
int imagegammacorrect > resource imageA (loat inputgammaA (loat outputgamma ?
,he imagegammacorrect./ (unction applies gamma correction to a gd image stream >6maEe? given
an input gammaA the parameter 6nputEamma and an output gammaA the parameter outputEamma;
imagegd*
>P&P 8 _^ 8;1;3A P&P 4?
imagegd0 22 Output GD0 image to #roEser or (ile
Kescription
#ool imagegd* > resource image PA string (ilename PA int chun"Zsize PA int typeQQQ ?
imagegd*./ outputs a GD0 image to 96lename; ,he 6maEe parameter is the return (rom the
imagecreate./ (unction;
,he 96lename parameter is optionalA and i( le(t o((A the raE image stream Eill #e output directly;
,he optional t?pe parameter is either IM#_#D*_RA" or IM#_#D*_COMPRESSED; De(ault is
IM#_#D*_RA";
Nota- ,he optional chun>_s6De and t?pe parameters #ecame availa#le in P&P 8;7;0;
Nota- ,he GD0 (ormat is commonly used to alloE (ast loading o( parts o( images; Note
that the GD0 (ormat is only usa#le in GD02compati#le applications;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
ee also imagegd./
imagegd
>P&P 8 _^ 8;1;3A P&P 4?
imagegd 22 Output GD image to #roEser or (ile
Kescription
#ool imagegd > resource image PA string (ilenameQ ?
imagegd./ outputs a GD image to 96lename; ,he 6maEe argument is the return (rom the imagecreate
./ (unction;
,he 96lename parameter is optionalA and i( le(t o((A the raE image stream Eill #e output directly;
Nota- ,he GD (ormat is commonly used to alloE (ast loading o( parts o( images; Note
that the GD (ormat is only usa#le in GD2compati#le applications;
ee also imagegd*./;
imagegif
>P&P 7A P&P 8 A P&P 4?
imagegi( 22 Producir la salida de una imagen al navegador o a un archivo
Kescripci"n
#ool imagegif > resource imagen PA string nom#reZarchivoQ ?
imagegif./ crea el archivo G.F indicado por nom#reZarchivo desde la imagen 6maEen; +l par*metro
6maEen es el valor de retorno de la (unci-n imagecreate./;
+l (ormato de la imagen ser* G.FM:a a menos /ue la imagen haya sido convertida a transparente con
imagecolortransparent./A en cuyo caso el (ormato de la imagen ser* G.FM9a;
+l argumento nom#reZarchivo es opcionalA y si se omiteA la secuencia cruda de la imagen ser*
dirigida a la salida est*ndar directamente; Al enviar un valor content2type imageDgi( mediante
header./A puede crear un script P&P /ue genere im*genes G.F directamente;
Nota- Dado /ue el soporte G.F (ue retirado por completo de la #i#lioteca GD en la
versi-n 1;KA <sta (unci-n no se encuentra disponi#le si est* usando tal versi-n de la
#i#lioteca GD; e espera /ue el soporte para esta caracter)stica regrese en una versi-n
posterior al relanzamiento del soporte G.F en la #i#lioteca GD a mediados de 0338;
Para m*s in(ormaci-nA consulte el sitio Ee# del Proyecto GD;
+l siguiente segmento de c-digo le permite escri#ir aplicaciones P&P m*s porta#les al
detectar autom*ticamente el tipo de soporte GD /ue se encuentra disponi#le; Reemplace
la secuencia hea#er L*Content=t?pe: 6maEe/E69*MJ 6maEeE69 L'6mMJ por la secuencia m*s
(leFi#leC
<?php
i# 3#unction%exists3"imaEeEi#"99 :
header3"RontentFtype@ imaEe/Ei#"9;
imaEeEi#3$im9;
; elsei# 3#unction%exists3"imaEejpeE"99 :
header3"RontentFtype@ imaEe/jpeE"9;
imaEejpeE3$im, "", 2.59;
; elsei# 3#unction%exists3"imaEepnE"99 :
header3"RontentFtype@ imaEe/pnE"9;
imaEepnE3$im9;
; elsei# 3#unction%exists3"imaEe8bmp"99 :
header3"RontentFtype@ imaEe/=nd.8ap.8bmp"9;
imaEe8bmp3$im9;
; else :
die3".o hay soporte de im&aacute;Eenes en este ser=idor H"9;
;
?>
Nota- A partir de la versi-n 7;3;1M y 8;3;0 puede usar la (unci-n imagetypes./ en lugar
de function>e+ists./ para che/uear por la presencia de los varios (ormatos de imagen
soportadosC
<?php
i# 3imaEetypes39 & 4"-%-4S9 :
header 3"RontentFtype@ imaEe/Ei#"9;
imaEeEi# 3$im9;
; elsei# 3imaEetypes39 & 4"-%A-9 :
/W ... etc. W/
;
?>
$ea tam#i<n imagepng./A image3bmp./A image'peg./ y imagetypes./;
ImageInterlace
>P&P 7A P&P 8 A P&P 4?
.mage.nterlace 22 Activa o desactiva el entrelazado
Kescripci"n
int imageinterlace > int im PA int interlaceQ ?
ImageInterlace./ activa o desactiva el #it de entrelazado; i interlace es 1 la imagen im ser*
entrelazadaA y si interlace es 3 el #it de entrelazado se desactiva;
+sta (unci-n devuelve como ha cam#iado el estado del #it de entralazado de la imagen;
imageistruecolor
>P&P 8 _^ 8;7;0A P&P 4?
imageistruecolor 22 Finds Ehether an image is a truecolor image
Kescription
#ool imageistruecolor > resource image ?
imageistruecolor./ (inds Ehether the image 6maEe is a truecolor image;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
ee also imagecreatetruecolor./;
image'peg
>P&P 7_^ 7;3;1KA P&P 8 A P&P 4?
image'peg 22 Output image to #roEser or (ile
Kescription
#ool image'peg > resource image PA string (ilename PA int /ualityQQ ?
image'peg./ creates the !P+G (ile in (ilename (rom the image 6maEe; ,he 6maEe argument is the
return (rom the imagecreate./ (unction;
,he (ilename argument is optionalA and i( le(t o((A the raE image stream Eill #e output directly; ,o
s"ip the (ilename argument in order to provide a /uality argument 'ust use an empty string >HH?; By
sending an imageD'peg content2type using header./A you can create a P&P script that outputs !P+G
images directly;
Nota- !P+G support is only availa#le i( P&P Eas compiled against GD21;M or later;
@ual6t? is optionalA and ranges (rom 3 >Eorst /ualityA smaller (ile? to 133 >#est /ualityA #iggest (ile?;
,he de(ault is the de(ault .!G /uality value >a#out :4?;
.( you Eant to output Progressive !P+GsA you need to set interlacing on Eith imageinterlace./;
ee also imagepng./A imagegif./A image3bmp./A imageinterlace./ and imagetypes./;
imagelayereffect
>P&P 8 _^ 8;7;3A P&P 4?
imagelayere((ect 22 et the alpha #lending (lag to use the #undled li#gd layering e((ects
Kescription
#ool imagelayereffect > resource imageA int e((ect ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- +sta (uncion esta disponi#le solamente si P&P se ha compilado con la version de
las #i#liotecas GD distri#uidas con P&P;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
Image:ine
>P&P 7A P&P 8 A P&P 4?
.mageLine 22 Di#u'a una l)nea
Kescripci"n
int imageline > int imA int F1A int y1A int F0A int y0A int col ?
.mageLine di#u'a una l)nea desde F1Ay1 hasta F0Ay0 >arri#a iz/uierda es 3A3? en la imagen im con el
color col;
$ea tam#i<n imagecreate./ y imagecolorallocate./;
imageloadfont
>P&P 7A P&P 8 A P&P 4?
imageload(ont 22 5argar una (uente nueva
Kescripci"n
int imageloadfont > string archivo ?
imageloadfont./ carga una (uente de #itmaps de(inida por el usuario y devuelve un identi(icador
para la (uente >/ue siempre es mayor de 4A de modo /ue no entre en con(licto con las (uentes
prede(inidas?; Devuelve FALSE en caso de error;
+l (ormato del archivo de la (uente es #inario en la actualidad y dependiente de la ar/uitectura; +sto
/uiere decir /ue usted de#er)a generar los archivos de (uentes en el mismo tipo de 5P@ /ue posee la
m*/uina en la /ue est* e'ecutando P&P;
Tabla !. ;ormato del archi5o de fuente
posici"n de
byte
tipo de
datos C
descripci"n
#yte 327 int nBmero de caracteres en la (uente
#yte 82: int
valor del primer caracter en la (uente >con (recuencia 70A indicando el
espacio?
#yte M211 int ancho de p)Fel de cada caracter
#yte 10214 int altura de p)Fel de cada caracter
#yte 1K2 char
matriz con datos de caracteresA un #yte por p)Fel en cada caracterA para
un total de >nZcaracteresVanchoValtura? #ytes;
E'emplo !. )so de imageloadfont
<?php
$im > imaEecreate352, C29;
$neEro > imaEecolorallocate3$im, 2, 2, 29;
$blanco > imaEecolorallocate3$im, C55, C55, C559;
imaEe#illedrectanEle3$im, 2, 2, 1K, 6K, $blanco9;
$#uente > imaEeload#ont3"21b.Ed#"9;
imaEestrinE3$im, $#uente, 2, 2, "Hola", $neEro9;
imaEepnE3$im9;
?>
$ea tam#i<n imagefont3idth./ y imagefontheight./;
imagepalettecopy
>P&P 8 _^ 8;3;1A P&P 4?
imagepalettecopy 22 5opy the palette (rom one image to another
Kescription
int imagepalettecopy > resource destinationA resource source ?
imagepalettecopy./ copies the palette (rom the source image to the #est6nat6on image;
imagepng
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
imagepng 22 Output a PNG image to either the #roEser or a (ile
Kescription
#ool imagepng > resource image PA string (ilenameQ ?
,he imagepng./ outputs a GD image stream >6maEe? in PNG (ormat to standard output >usually the
#roEser? orA i( a (ilename is given #y the 96lename it outputs the image to the (ile;
<?php
$im > imaEecreate#rompnE3"test.pnE"9;
imaEepnE3$im9;
?>
ee also imagegif./A image3bmp./A image'peg./A imagetypes./;
ImagePolygon
>P&P 7A P&P 8 A P&P 4?
.magePolygon 22 Di#u'a un pol)gono
Kescripci"n
int imagepolygon > int imA array pointsA int numZpointsA int col ?
.magePolygon crea un pol)gono en la imagen id; points es un array P&P conteniendo los v<rtices del
pol)gono; de la siguiente (orma pointsP3Q ^ F3A points1 ^ y3A pointsP0Q ^ F1A pointsP7Q ^ y1A etc;
numZpoints es el nBmero total de v<rtices;
$ea tam#i<n imagecreate./;
ImageP,11o+
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
.magePBBoF 22 Devuelve el #orde /ue rodea un rect*ngulo de teFto usando (uentes Postcript
,ype1
Kescripci"n
array imagepsbbo+ > string teFtA int (ontA int sizeA int spaceA int EidthA (loat angle ?
s6De representa piFels;
space perimte cam#iar el valor por de(ecto de un espacio en una (uentes; +ste valor es aWadido al
valor normal y puede ser negativo;
t6Ehtness permite controlar la cantidad de espacio en #lanco entre car*cteres; +ste valor se aWade a la
anchura normal del car*cter y puede ser negativo;
anEle viene dado en grados;
Los par*metros space y t6Ehtness vienen eFpresados en unidades de espacio de car*cteresA donde
una unidad es 1D1333 el #orde de una M;
Los par*metros spaceA t6Ehtness y anEle son opcionales;
+l #orde es calculado usando la in(ormaci-n disponi#le de las m<tricas del car*cterA y
desa(ortunadamente tiende a di(erir ligeramente de los resultados o#tenidos de digitalizar el teFto;
i el *ngulo es de 3 gradosA puede esperar /ue el teFto necesite un piFel m*s en cada direcci-n;
+sta (unci-n devuelve un array conteniuendo los siguientes elementosC
3
coordenada F in(erior
iz/uierda
1
coordenada y in(erior
iz/uierda
0 coordenada F superior derecha
7 coordenada y superior derecha
$ea tam#i<n imagepste+t./;
ImageP,Copy;ont
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
.mageP5opyFont 22 hace una copia de una (uente ya cargada para (uturas modi(icaciones
Kescripci"n
int imagepscopyfont > int (ontindeF ?
@se esta (unci-n si necesita hacer modi(icaciones en la (uenteA por e'emplo eFpanderDcondensarA
inclinarla o cam#iar su vector de codi(icaci-n de caracteresA pero tam#i<n necesita mantener la
(uente original; Note /ue la (uente /ue /uiera copiar de#e ha#er sido o#tenida usando
imagepsloadfont./A no una (uente /ue sea una copia de otra; Aun/ue puede hacer modi(icaciones
antes de copiarla;
i usa esta (unci-nA #e1e li#erar las (uentes o#tenidas de esta manera; De otra (orma su script se
colEar[;
+n el caso de /ue todo vaya #ienA devolver* un )ndice de (uente v*lido /ue puede ser usado para
(utuos prop-sitos; De otra (orma la (unci-n devolver* FALSE e imprimir* un mensa'e indicando
/ue es lo /ue ha ido mal;
$ea tam#i<n imageploadpsfont./;
ImageP,Encode;ont
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
.mageP+ncodeFont 22 5am#ia el vector de codi(icaci-n de caracteres de una (uente
Kescripci"n
int imagepsencodefont > string encoding(ile ?
5arga un vector de codi(icaci-n de caracteres desde un archivo y cam#ia el vector de codi(icaci-n
de las (uentes a <l; Loads a character encoding vector (rom (rom a (ile and changes the (onts
encoding vector to it; +n las (uentes Postcript normalmente (altan muchos caracteres por encima
de 10:A seguramente /uiera cam#iar esto si emplea u idioma distinto del ingl<s;+l (ormato eFacto de
este archivo est* descrito en la documentaci-n de ,1li#s; ,1li# viene con dos archivos listos para
usarA .soLatin1;enc y .soLatin0;enc;
i se encuentra usando esta (unci-n todo el tiempoA una (orma mucho me'or de de(inir la
codi(icaci-n es esta#lecer ps;de(aultZencoding en el archivo de con(iguraci-n para /ue apunte al
archivo de codi(icaci-n correcto y todas las (uentes /ue cargue tendr*n de (orma autom*tica la
codi(icaci-n correcta;
imagepse+tendfont
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
imagepseFtend(ont 22 +Ftend or condense a (ont
Kescription
#ool imagepse+tendfont > int (ontZindeFA (loat eFtend ?
+Ftend or condense a (ont >9ont_6n#e8?A i( the value o( the e8ten# parameter is less than one you Eill
#e condensing the (ont;
Nota- +sta (uncion esta disponi#le solamente si P&P se ha compilado usando la opcion
==76th=t1l61):D0R.;
ImageP,;ree;ont
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
.magePFreeFont 22 Li#era la memoria usada por un (uente Postcript ,ype 1
Kescripci"n
void imagepsfreefont > int (ontindeF ?
$ea tam#i<n imagepsloadfont./;
imagepsloadfont
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
imagepsload(ont 22 5argar una (uente Postcript ,ipo 1 desde un archivo
Kescripci"n
int imagepsloadfont > string nom#reZarchivo ?
+n caso de /ue todo haya resultado #ienA un )ndice de (uente v*lido ser* devuelto y puede ser usado
para prop-sitos posteriores; De otro modoA la (unci-n devuelve FALSE e imprime un mensa'e
descri#iendo la causa del (alloA el cual no puede leer directamente mientras /ue el tipo de salida sea
una imagen;
E'emplo !. E'emplo de imagepsloadfont./
<?php
header3"RontentFtype@ imaEe/jpeE"9;
$im > imaEecreate3<52, 159;
$neEro > imaEecolorallocate3$im, 2, 2, 29;
$blanco > imaEecolorallocate3$im, C55, C55, C559;
$#uente > imaEepsload#ont3"bchbi.p#b"9; // o ubiQue sus archi=os .p#b en su maQuina
imaEepstext3$im, "robando... &iexcl;Suncion&oacute;!", $#uente, <C, $blanco, $neEro, <C, <C9;
imaEeps#ree#ont3$#uente9;
imaEejpeE3$im, "", 6229; // para la mejor calidad...su experiencia puede ser distinta
imaEedestroy3$im9;
?>
Nota- +sta (uncion esta disponi#le solamente si P&P se ha compilado usando la opcion
==76th=t1l61):D0R.;
$ea tam#i<n imagepsfreefont./;
imagepsslantfont
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
imagepsslant(ont 22 lant a (ont
Kescription
#ool imagepsslantfont > int (ontZindeFA (loat slant ?
lant a (ont given #y the 9ont_6n#e8 parameter Eith a slant o( the value o( the slant parameter;
Nota- +sta (uncion esta disponi#le solamente si P&P se ha compilado usando la opcion
==76th=t1l61):D0R.;
ImageP,Te+t
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
.mageP,eFt 22 Para di#u'ar una cadena de teFto so#re una imagen usando (uentes Postcript
,ype1
Kescripci"n
array imagepste+t > int imageA string teFtA int (ontA int sizeA int (oregroundA int #ac"groundA int FA int
y PA int space PA int tightness PA (loat angle PA int antialiasZstepsQQQQ ?
s6De viene eFpresado en piFels;
9oreEroun# es el color en el cual el teFto ser* pintado; 1ac>Eroun# es el color en el /ue el teFto
tratar* de resaltar con antialiaing; Los piFels con el color 1ac>Eroun# no se pintanA de (orma /ue la
imagen de (ondo no necesita ser de un color s-lido;
Las coordenadas dadas por 8A ? de(inir*n el origen >o punto de re(erencia? del primer car*cter >la
es/uina superior iz/uierda del car*cter?; +sto es di(erente de la (unci-n Image,tring./A donde FA y
de(inen la es/uina superiro derecha del primer car*cter; 5onsulte la documentaci-n de Postcript
so#re (uentes y su sistema de medidas si tiene algBn pro#lema entendiendo como (uncion;
space permite cam#iar el valor por de(ecto de un espacio en la (uente; +sta cantidad es sumada al
valor normal y puede ser negativa;
t6Ehtness permite controlar la cantidad de espacio en #lanco entre caracteres; +sta cantidad es
sumada al valor normal y puede ser negativa;
anEle viene en grados;
ant6al6as_steps permite controlar el nBmero de colores usados para el antialising del teFto; Los
valores permitidos son 8 y 1K; +l valor superior est* recomendado para teFtos con tamaWos
in(eriores a 03A donde el e(ecto en la calidad del teFto es #astante visi#le; 5on tamaWos superiores
use 8; &ace un menor uso de c*lculo;
Parameters space y t6Ehtness est*n eFpresados en unidades de espacio de caracteresA donde 1 unidad
es 1D1333 de una M mayBscula;
Los par*metros spaceA t6EhtnessA anEle y ant6al6as son opcionales;
+sta (unci-n devuelve una matriz conteniendo los siguientes elementosC
3
coordenada F in(erior
iz/uierda
1
coordenada y in(erior
iz/uierda
0 coordenada F superior derecha
7 coordenada y superior derecha
$ea tam#i<n imagepsbbo+./;
ImageMectangle
>P&P 7A P&P 8 A P&P 4?
.mageRectangle 22 Di#u'a un rect*ngulo
Kescripci"n
int imagerectangle > int imA int F1A int y1A int F0A int y0A int col ?
.mageRectangle crea un rect*ngulo de color col en la imagen im comenzando en la coordenada
superior iz/uierda F1Ay1 y (inalizando en la coordenada in(erior derecha F0Ay0; 3A3 es la es/uina
superior iz/uierda de la imagen;
imagerotate
>P&P 8 _^ 8;7;3A P&P 4?
imagerotate 22 Rotate an image Eith a given angle
Kescription
resource imagerotate > resource srcZimA (loat angleA int #gdZcolor ?
Rotates the src_6m image using a given anEle in degrees; 1E#_color speci(ies the color o( the
uncovered zone a(ter the rotation;
,he center o( rotation is the center o( the imageA and the rotated image is scaled doEn so that the
Ehole rotated image (its in the destination image 2 the edges are not clipped;
E'emplo !. Motate an image !ND degrees
,his eFample rotates an image 1M3 degrees 2 upside doEn;
// Sile and rotation
$#ilename > Mtest.jpEM;
$deErees > 6J2;
// Rontent type
header3MRontentFtype@ imaEe/jpeEM9;
// Ooad
$source > imaEecreate#romjpeE3$#ilename9;
// 'otate
$rotate > imaEerotate3$source, $deErees, 29;
// ?utput
imaEejpeE3$rotate9;
Nota- +sta (uncion esta disponi#le solamente si P&P se ha compilado con la version de
las #i#liotecas GD distri#uidas con P&P;
imagesa5ealpha
>P&P 8 _^ 8;7;0A P&P 4?
imagesavealpha 22 et the (lag to save (ull alpha channel in(ormation >as opposed to single2color
transparency? Ehen saving PNG images
Kescription
#ool imagesa5ealpha > resource imageA #ool save(lag ?
imagesa5ealpha./ sets the (lag to attempt to save (ull alpha channel in(ormation >as opposed to
single2color transparency? Ehen saving PNG images;
%ou have to unset alpha#lending >6maEealpha1len#6nEL'6mC FALSEM?A to use it;
Alpha channel is not supported #y all #roEsersA i( you have pro#lem Eith your #roEserA try to load
your script Eith an alpha channel compliant #roEserA e;g; latest Mozilla;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
ee also imagealphablending./;
imagesetbrush
>P&P 8 _^ 8;3;KA P&P 4?
imageset#rush 22 et the #rush image (or line draEing
Kescription
int imagesetbrush > resource imageA resource #rush ?
imagesetbrush./ sets the #rush image to #e used #y all line draEing (unctions >such as imageline./
and imagepolygon./? Ehen draEing Eith the special colors 0M-_CO4OR_ARUS!ED or
0M-_CO4OR_STB4EDARUS!ED;
Nota- %ou need not ta"e special action Ehen you are (inished Eith a #rushA #ut i( you
destroy the #rush imageA you must not use the 0M-_CO4OR_ARUS!ED or
0M-_CO4OR_STB4EDARUS!ED colors until you have set a neE #rush imagea
Nota- ,his (unction Eas added in P&P 8;3;K
Image,etPi+el
>P&P 7A P&P 8 A P&P 4?
.mageetPiFel 22 Di#u'a un piFel
Kescripci"n
int imagesetpi+el > int imA int FA int yA int col ?
.mageetPiFel di#u'a un piFel FAy >arri#a iz/uierda 3A3? en la imagen im con color col;
$ea tam#i<n imagecreate./ y imagecolorallocate./;
imagesetstyle
>P&P 8 _^ 8;3;KA P&P 4?
imagesetstyle 22 et the style (or line draEing
Kescription
#ool imagesetstyle > resource imageA array style ?
imagesetstyle./ sets the style to #e used #y all line draEing (unctions >such as imageline./ and
imagepolygon./? Ehen draEing Eith the special color 0M-_CO4OR_STB4ED or lines o( images
Eith color 0M-_CO4OR_STB4EDARUS!ED; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
,he st?le parameter is an array o( piFels; FolloEing eFample script draEs a dashed line (rom upper
le(t to loEer right corner o( the canvasC
E'emplo !. imagesetstyle./ e+ample
<?php
header3"RontentFtype@ imaEe/jpeE"9;
$im > imaEecreate3622, 6229;
$8 > imaEecolorallocate3$im, C55, C55, C559;
$red > imaEecolorallocate3$im, C55, 2, 29;
/W Lra8 a dashed line, 5 red pixels, 5 8hite pixels W/
$style > array3$red, $red, $red, $red, $red, $8, $8, $8, $8, $89;
imaEesetstyle3$im, $style9;
imaEeline3$im, 2, 2, 622, 622, 4"-%R?O?'%&*POEL9;
/W Lra8 a line o# happy #aces usinE imaEesetbrush39 8ith imaEesetstyle W/
$style > array3$8, $8, $8, $8, $8, $8, $8, $8, $8, $8, $8, $8, $red9;
imaEesetstyle3$im, $style9;
$brush > imaEecreate#rompnE3"http@//888.libpnE.orE/pub/pnE/imaEes/smile.happy.pnE"9;
$8C > imaEecolorallocate3$brush, C55, C55, C559;
imaEecolortransparent3$brush, $8C9;
imaEesetbrush3$im, $brush9;
imaEeline3$im, 622, 2, 2, 622, 4"-%R?O?'%&*POELZ'+&HEL9;
imaEejpeE3$im9;
imaEedestroy3$im9;
?>
ee also imagesetbrush./A imageline./;
Nota- ,his (unction Eas added in P&P 8;3;K
imagesetthicBness
>P&P 8 _^ 8;3;KA P&P 4?
imagesetthic"ness 22 et the thic"ness (or line draEing
Kescription
#ool imagesetthicBness > resource imageA int thic"ness ?
imagesetthicBness./ sets the thic"ness o( the lines draEn Ehen draEing rectanglesA polygonsA
ellipses etc; etc; to th6c>ness piFels; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE
en caso de (allo;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
imagesettile
>P&P 8 _^ 8;3;KA P&P 4?
imagesettile 22 et the tile image (or (illing
Kescription
int imagesettile > resource imageA resource tile ?
imagesettile./ sets the tile image to #e used #y all region (illing (unctions >such as imagefill./ and
imagefilledpolygon./? Ehen (illing Eith the special color 0M-_CO4OR_T04ED;
A tile is an image used to (ill an area Eith a repeated pattern; ,n? GD image can #e used as a tileA
and #y setting the transparent color indeF o( the tile image Eith imagecolortransparent./A a tile
alloEs certain parts o( the underlying area to shine through can #e created;
Nota- %ou need not ta"e special action Ehen you are (inished Eith a tileA #ut i( you
destroy the tile imageA you must not use the 0M-_CO4OR_T04ED color until you have
set a neE tile imagea
Image,tring
>P&P 7A P&P 8 A P&P 4?
.magetring 22 Di#u'a una cadena de teFto horizintalmente
Kescripci"n
int imagestring > int imA int (ontA int FA int yA string sA int col ?
.magetring di#u'a la cadena s en la imagen identi(icada por im en las coordenadas FAy >arri#a
iz/uierda es 3A3? en el color col; i la (uente es 1A 0A 7A 8 o 4A se emplea una (uente interna;
$ea tam#i<n imageloadfont./;
Image,tring)p
>P&P 7A P&P 8 A P&P 4?
.magetring@p 22 Di#u'a una cadena de teFto verticalmente
Kescripci"n
int imagestringup > int imA int (ontA int FA int yA string sA int col ?
.magetring@p di#u'a la cadena s verticalmente en la imagen identi(icada por im en las coordenadas
FAy >arri#a iz/uierda es 3A3? en el color col; i la (uente es 1A 0A 7A 8 o 4A se usa una (uente interna;
$ea tam#i<n imageloadfont./;
Image,I
>P&P 7A P&P 8 A P&P 4?
.mageJ 22 O#tiene la anchura de la imagen
Kescripci"n
int images+ > int im ?
.mageJ devuelva la anchura de la imagen identi(icado por im;
$ea tam#i<n imagecreate./ y imagesy./;
Image,@
>P&P 7A P&P 8 A P&P 4?
.mage% 22 O#tiene la altura de la imagen
Kescripci"n
int imagesy > int im ?
.mage% devuelve la altura de la imagen identi(icada por im;
$ea tam#i<n imagecreate./ y images+./;
imagetruecolortopalette
>P&P 8 _^ 8;3;KA P&P 4?
imagetruecolortopalette 22 5onvert a true color image to a palette image
Kescription
void imagetruecolortopalette > resource imageA #ool ditherA int ncolors ?
imagetruecolortopalette./ converts a truecolor image to a palette image; ,he code (or this (unction
Eas originally draEn (rom the .ndependent !P+G Group li#rary codeA Ehich is eFcellent; ,he code
has #een modi(ied to preserve as much alpha channel in(ormation as possi#le in the resulting
paletteA in addition to preserving colors as Eell as possi#le; ,his does not Eor" as Eell as might #e
hoped; .t is usually #est to simply produce a truecolor output image insteadA Ehich guarantees the
highest output /uality;
#6ther indicates i( the image should #e dithered 2 i( it is TRUE then dithering Eill #e used Ehich Eill
result in a more spec"led image #ut Eith #etter color approFimation;
ncolors sets the maFimum num#er o( colors that should #e retained in the palette;
Nota- +sta (uncion re/uiere GD 0;3;1 o posterior;
imagettfbbo+
>P&P 7_^ 7;3;1A P&P 8 A P&P 4?
imagett(##oF 22 +ntrega la ca'a circundante de un teFto usando (uentes ,rue,ype
Kescripci"n
array imagettfbbo+ > (loat tamanyoA (loat anguloA string archivoZ(uenteA string teFto ?
+sta (unci-n calcula y devuelve la ca'a circundante en piFeles de un teFto ,rue,ype;
te8to
La cadena a ser medida;
taman?o
+l tamaWo de (uente en piFeles;
arch6o_9uente
+l nom#re del archivo de (uente ,rue,ype; >Puede ser tam#i<n una @RL;? Dependiendo de la
versi-n de la #i#lioteca GD /ue P&P usaA puede /ue intente #uscar por archivos /ue no
comiencen con un caracter HDHA agregando H;tt(H al nom#re de archivo y #uscando a trav<s de una
ruta de (uentes de(inida por la #i#lioteca;
anEulo
cpe ngulo en grados en los /ue te8to ser* medido;
imagettfbbo+./ devuelve una matriz con M elementos /ue representan cuatro puntosA (ormando la
ca'a /ue rodea la ca'a del teFtoC
3
es/uina in(erior iz/uierdaA posici-n
J
1
es/uina in(erior iz/uierdaA posici-n
%
0 es/uina in(erior derechaA posici-n J
7 es/uina in(erior derechaA posici-n %
8 es/uina superior derechaA posici-n J
4 es/uina superior derechaA posici-n %
K
es/uina superior iz/uierdaA posici-n
J
:
es/uina superior iz/uierdaA posici-n
%
Los puntos son relativos al te8to independientemente del *nguloA as) /ue =superior iz/uierdo= /uiere
decir en la es/uina superior a mano iz/uierda viendo el teFto horizontalmente;
+sta (unci-n re/uiere tanto de la #i#lioteca GD como de la #i#lioteca Free,ype;
$ea tam#i<n imagettfte+t./;
imagettfte+t
>P&P 7A P&P 8 A P&P 4?
imagett(teFt 22 +scri#ir un teFto so#re la imagen usando (uentes ,rue,ype
Kescripci"n
array imagettfte+t > resource imagenA (loat tamanyoA (loat anguloA int FA int yA int colorA string
archivoZ(uenteA string teFto ?
imagettfte+t./ di#u'a la cadena te8to en la imagen identi(icada por 6maEenA comenzando en las
coordenadas 8A ? >la es/uina superior iz/uierda es 3A 3?A a un *ngulo de anEulo en el color colorA
usando el archivo de (uente ,rue,ype identi(icado por arch6o_9uente; Dependiendo en la versi-n
de la #i#lioteca GD /ue P&P usaA cuando arch6o_9uente no comienza con un caracter HDHA H;tt(H se
agregar* al nom#re de archivo y la #i#lioteca intentar* #uscar por ese archivo en una ruta de (uentes
de(inida por la #i#lioteca;
Las coordenadas dadas por 8A ? de(inir*n el punto #ase del primer caracter >a grandes rasgos la
es/uina in(erior iz/uierda del caracter?; +sto a di(erencia de imagestring./A en donde FA y de(inen la
es/uina superior iz/uierda del primer caracter;
anEulo se encuentra en gradosA en donde el grado 3 produce la lectura del teFto de iz/uierda a
derecha >en direcci-n de las 7 en punto?A y los valores m*s altos representan una rotaci-n en sentido
contrario al de las manecillas del relo'; >+s decirA un valor de 93 resultar)o en un teFto /ue se lee de
a#a'o a arri#a?;
arch6o_9uente es la ruta a la (uente ,rue,ype /ue desea usar;
te8to es la cadena de teFtoA /ue puede incluir secuencias de caracteres @,F2M >de la (ormaC in107X?
para acceder a caracteres m*s alla de los primeros 044 en una (uente;
color es el )ndice de color; +l uso del valor negativo de un )ndice de color tiene el e(ecto de
desha#ilitar el anti2alias;
imagettfte+t./ devuelve una matriz con M elementos /ue representan cuatro puntos /ue (orman la
ca'a circundante del teFto; +l orden de los puntos es in(erior iz/uierdoA in(erior derechoA superior
derecho y superior iz/uierdo; Los puntos son relativos al teFto independientemente del *nguloA as)
/ue =superior iz/uierdo= /uiere decir la es/uina del lado superior iz/uierdo cuando ve el teFto
horizontalmente;
+ste script de e'emplo producir* un !P+G negro de 833F73 piFelesA con las pala#ras =Pro#ando;;;=
en #lanco en la (uente Arial;
E'emplo !. E'emplo de imagettfte+t./
<?php
header3"RontentFtype@ imaEe/jpeE"9;
$im > imaEecreate3122, <29;
$blanco > imaEecolorallocate3$im, C55, C55, C559;
$neEro > imaEecolorallocate3$im, 2, 2, 29;

// 'eempla0e la ruto con su propio ruta a la #uente
imaEett#text3$im, C2, 2, 62, C2, $neEro, "/ruta/a/arial.tt#",
"robando... ?meEa@ &amp;UK<H;"9;
imaEejpeE3$im9;
imaEedestroy3$im9;
?>
+sta (unci-n re/uiere tanto la #i#lioteca GD como la #i#lioteca Free,ype;
$ea tam#i<n imagettfbbo+./;
imagetypes
>P&P 7 5$ onlyA P&P 8 _^ 8;3;0A P&P 4?
imagetypes 22 Return the image types supported #y this P&P #uild
Kescription
int imagetypes > void ?
,his (unction returns a #it2(ield corresponding to the image (ormats supported #y the version o( GD
lin"ed into P&P; ,he (olloEing #its are returnedA IM#_#IF l IM#_'P# l IM#_PN# l IM#_"(MP l
IM#_%PM; ,o chec" (or PNG supportA (or eFampleA do thisC
E'emplo !. imagetypes./ e+ample
<?php
i# 3imaEetypes39 & 4"-%.-9 :
echo ".- &upport is enabled";
;
?>
image3bmp
>P&P 7_^ 7;3;14A P&P 8 _^ 8;3;1A P&P 4?
imageE#mp 22 Output image to #roEser or (ile
Kescription
#ool image3bmp > resource image PA string (ilename PA int (oregroundQQ ?
image3bmp./ creates the LBMP (ile in (ilename (rom the image 6maEe; ,he 6maEe argument is
the return (rom the imagecreate./ (unction;
,he (ilename argument is optionalA and i( le(t o((A the raE image stream Eill #e output directly; By
sending an imageDvnd;Eap;E#mp content2type using header./A you can create a P&P script that
outputs LBMP images directly;
Nota- LBMP support is only availa#le i( P&P Eas compiled against GD21;M or later;
@sing the optional 9oreEroun# parameterA you can set the (oreground color; @se an identi(ier
o#tained (rom imagecolorallocate./; ,he de(ault (oreground color is #lac";
ee also image*3bmp./A imagepng./A imagegif./A image'peg./A imagetypes./;
image+bm
>P&P 4?
imageF#m 22 Output JBM image to #roEser or (ile
Kescription
#ool image+bm > resource imageA string (ilename PA int (oregroundQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- +sta (uncion esta disponi#le solamente si P&P se ha compilado con la version de
las #i#liotecas GD distri#uidas con P&P;
iptcembed
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
iptcem#ed 22 +m#ed #inary .P,5 data into a !P+G image
Kescription
array iptcembed > string iptcdataA string 'pegZ(ileZname PA int spoolQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
iptcparse
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
iptcparse 22 Parse a #inary .P,5 httpCDDEEE;iptc;orgD #loc" into single tags;
Kescription
array iptcparse > string iptc#loc" ?
,his (unction parses a #inary .P,5 #loc" into its single tags; .t returns an array using the tagmar"er
as an indeF and the value as the value; .t returns FALSE on error or i( no .P,5 data Eas (ound; ee
getimagesi6e./ (or a sample;
'peg*3bmp
>P&P 8 _^ 8;3;4A P&P 4?
'peg0E#mp 22 5onvert !P+G image (ile to LBMP image (ile
Kescription
int 'peg*3bmp > string 'pegnameA string E#mpnameA int dZheightA int dZEidthA int threshold ?
5onverts the UpeEname !P+G (ile to LBMP (ormatA and saves it as 71mpname; Lith the #_he6Eht
and #_76#th you speci(y the height and Eidth o( the destination image;
Nota- !P+G support is only availa#le i( P&P Eas compiled against GD21;M or later;
Nota- LBMP support is only availa#le i( P&P Eas compiled against GD21;M or later;
ee also png*3bmp./;
png*3bmp
>P&P 8 _^ 8;3;4A P&P 4?
png0E#mp 22 5onvert PNG image (ile to LBMP image (ile
Kescription
int png*3bmp > string pngnameA string E#mpnameA int dZheightA int dZEidthA int threshold ?
5onverts the pnEname PNG (ile to LBMP (ormatA and saves it as 71mpname; Lith the #_he6Eht
and #_76#th you speci(y the height and Eidth o( the destination image;
Nota- LBMP support is only availa#le i( P&P Eas compiled against GD21;M or later;
ee also 'peg*3bmp./;
:III. ;unciones IMAPE PJP7 y NNTP
Introducci"n
+stas (unciones no se encuentran limitadas al protocolo .MAPA a pesar de su nom#re; La #i#lioteca
c2client interna tam#i<n soporta m<todos de acceso a NN,PA POP7 y #uzones de correo locales;
Me?uirimientos
+sta eFtensi-n re/uiere /ue la #i#lioteca c2client se encuentre instalada; O#tenga la versi-n m*s
reciente de (tpCDD(tp;cac;Eashington;eduDimapD y comp)lela;
+s importante /ue no copie los archivos (uente .MAP directamente al directorio de inclusiones del
sistema ya /ue puede crear con(lictos; +n su lugarA cree un nuevo directorio al interior del directorio
de inclusiones del sistemaA tal como /usr/local/imapFC222b/ >la u#icaci-n y nom#re
dependen de su con(iguraci-n y versi-n de .MAP?A y al interior de este directorio nuevo cree los
directorios adicionales con nom#res lib/ e include/; Desde el directorio cFclient de su
*r#ol de (uentes .MAPA copie todos los archivos W.h en include/ y todos los W.c en lib/;
AdicionalmenteA cuando haya compilado .MAPA un archivo llamado cFclient.a es creado;
5olo/ue tam#i<n este archivo en el directorio lib/A pero cam#ie su nom#re a libcFclient.a;
Nota- Para compilar la #i#lioteca c2client con soporte L o Ser#erosA lea la
documentaci-n /ue viene con el pa/uete;
Instalaci"n
,o get these (unctions to Eor"A you have to compile P&P Eith ==76th=6map):D0R.A Ehere D.R is
the c2client install pre(iF; From our eFample a#oveA you Eould use ==76th=6map:/usr/local/6map=
20001; ,his location depends on Ehere you created this directory according to the description
a#ove; LindoEs users may include the php%imap.dll DLL in php.ini; .MAP is not
supported on systems earlier that LindoEs 0333; ,his is #ecause it uses encryption (unctions in
order to ena#le L connections to the mail servers;
Nota- Depending hoE the c2client Eas con(iguredA you might also need to add ==76th=
6map=ssl:/path/to/openssl/ andDor ==76th=>er1eros:/path/to/>er1eros into the P&P
con(igure line;
A5iso
La eFtensi-n .MAP no puede ser usada 'unto con las eFtensiones recodeA %AI - 5yrus; +sto es
de#ido a /ue las dos utilizan el mismo s)m#olo interno
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
NIL >integer?
OP_DE(U# >integer?
OP_READONLY >integer?
Open mail#oF read2only
OP_ANONYMOUS >integer?
DonHt use or update a .ne8src (or neEs >NN,P only?
OP_SHORTCACHE >integer?
OP_SILENT >integer?
OP_PROTOTYPE >integer?
OP_HALFOPEN >integer?
For .MAP and NN,P namesA open a connection #ut donHt open a mail#oF;
OP_E%PUN#E >integer?
OP_SECURE >integer?
CL_E%PUN#E >integer?
silently eFpunge the mail#oF #e(ore closing Ehen calling imap>close./
FT_UID >integer?
,he parameter is a @.D
FT_PEE& >integer?
Do not set the heen (lag i( not already set
FT_NOT >integer?
FT_INTERNAL >integer?
,he return string is in internal (ormatA Eill not canonicalize to 5RLF;
FT_PREFETCHTE%T >integer?
ST_UID >integer?
,he se/uence argument contains @.Ds instead o( se/uence num#ers
ST_SILENT >integer?
ST_SET >integer?
CP_UID >integer?
the se/uence num#ers contain @.D
CP_MO$E >integer?
Delete the messages (rom the current mail#oF a(ter copying Eith imap>mail>copy./
SE_UID >integer?
Return @.Ds instead o( se/uence num#ers
SE_FREE >integer?
SE_NOPREFETCH >integer?
DonHt pre(etch searched messages
SO_FREE >integer?
SO_NOSER$ER >integer?
SA_MESSA#ES >integer?
SA_RECENT >integer?
SA_UNSEEN >integer?
SA_UIDNE%T >integer?
SA_UID$ALIDITY >integer?
SA_ALL >integer?
LATT_NOINFERIORS >integer?
,his mail#oF has no =children= >there are no mail#oFes #eloE this one?;
LATT_NOSELECT >integer?
,his is only a containerA not a mail#oF 2 you cannot open it;
LATT_MAR&ED >integer?
,his mail#oF is mar"ed; Only used #y @L2.MAPD;
LATT_UNMAR&ED >integer?
,his mail#oF is not mar"ed; Only used #y @L2.MAPD;
SORTDATE >integer?
ort criteria (or imap>sort./C message Date
SORTARRI$AL >integer?
ort criteria (or imap>sort./C arrival date
SORTFROM >integer?
ort criteria (or imap>sort./C mail#oF in (irst From address
SORTSU('ECT >integer?
ort criteria (or imap>sort./C message su#'ect
SORTTO >integer?
ort criteria (or imap>sort./C mail#oF in (irst ,o address
SORTCC >integer?
ort criteria (or imap>sort./C mail#oF in (irst cc address
SORTSI/E >integer?
ort criteria (or imap>sort./C size o( message in octets
TYPETE%T >integer?
TYPEMULTIPART >integer?
TYPEMESSA#E >integer?
TYPEAPPLICATION >integer?
TYPEAUDIO >integer?
TYPEIMA#E >integer?
TYPE$IDEO >integer?
TYPEOTHER >integer?
ENC-(IT >integer?
ENC,(IT >integer?
ENC(INARY >integer?
ENC(ASE1+ >integer?
ENC.UOTEDPRINTA(LE >integer?
ENCOTHER >integer?
Cer tambi%n
+ste documento no puede entrar en detalles so#re todos los temas /ue involucran lan (unciones
o(recidas; Puede encontrar m*s in(ormaci-n en la documentaci-n de las (uentes de la #i#lioteca c2
client >docs/internal.txt?A y en los siguientes documentos RF5C
RF50M01 C Protocolo imple de ,rans(erencia de 5orreo >M,P?;
RF50M00 C +st*ndar para los mensa'es de teFto en internet ARPA;
RF503K3 C Protocolo de Acceso de Mensa'e de .nternet >.MAP? $ersi-n 8rev1;
RF51979 C Protocolo Post O((ice $ersi-n 7 >POP7?;
RF59:: C Protocolo de ,rans(erencia de Noticias en Red >NN,P?;
RF503:K C 5a#eceras de Mensa'es de .nternet 5omunes;
RF50384 A RF5038K A RF5038: A RF5038M i RF50389C +Ftensiones de 5orreo de .nternet
Multi2prop-sito >M.M+?;
@na vista general detallada se encuentra disponi#le tam#i<n en los li#ros Programming .nternet
+mail por David Lood y Managing .MAP por Dianna Mullet y Sevin Mullet;
Tabla de contenidos
imapZM#it 22 5onvierte una cadena de M#it a una cadena /uoted2printa#le
imapZalerts 22 +sta (unci-n devuelve todos los mensa'es de alerta .MAP >si hu#o? /ue han ocurrido
durante la petici-n de la pagina o desde /ue la pila de alertas (ue inicializada;
imapZappend 22 Agrega una cadena de mensa'e al #uz-n especi(icado
imapZ#aseK8 22 Decodi(ica teFto codi(icado en BA+K8
imapZ#inary 22 5onvierte una cadena de M#it a una cadena #aseK8
imapZ#ody 22 Lee el cuerpo del mensa'e
imapZ#odystruct 22 Read the structure o( a speci(ied #ody section o( a speci(ic message
imapZchec" 22 5omprue#a el estado del #uz-n actual
imapZclear(lagZ(ull 22 Limpia los (lags de los mensa'es
imapZclose 22 5ierra una sesi-n .MAP
imapZcreatemail#oF 22 5rea un #uz-n nuevo
imapZdelete 22 Marca un mensa'e para ser #orrado en el #uz-n actual
imapZdeletemail#oF 22 +limina un #uz-n
imapZerrors 22 +sta (unci-n devuelve todos los errores .MAP >si hu#o? /ue han occurrido durante
la petici-n de la p*gina o desde /ue la pila de errores se inicializ-;
imapZeFpunge 22 +limina todos los mensa'es marcados como #orrados
imapZ(etchZovervieE 22 Read an overvieE o( the in(ormation in the headers o( the given message
imapZ(etch#ody 22 Localiza una secci-n particular en el cuerpo del mensa'e
imapZ(etchheader 22 Devuelve la ca#ecera de un mensa'e
imapZ(etchstructure 22 Lee la estructuta de un mensa'e concreto
imapZgetZ/uota 22 Retrieve the /uota level settingsA and usage statics per mail#oF
imapZgetZ/uotaroot 22 Retrieve the /uota settings per user
imapZgetacl 22 Gets the A5L (or a given mail#oF
imapZgetmail#oFes 22 Lee la lista de #uzonesA devolviendo in(ormac-n detallada de cada uno
imapZgetsu#scri#ed 22 Lista todos los #uzones su#scritos
imapZheader 22 Lee la ca#ecera del mensa'e
imapZheaderin(o 22 Read the header o( the message
imapZheaders 22 Returns headers (or all messages in a mail#oF
imapZlastZerror 22 +sta (unci-n devuelve el Bltimo error .MAP >si se produ'o? /ue ocurri- durante
la petici-n de esta p*gina;
imapZlist 22 Read the list o( mail#oFes
imapZlistmail#oF 22 Lee la lista de #uzones
imapZlistscan 22 Read the list o( mail#oFesA ta"es a string to search (or in the teFt o( the mail#oF
imapZlistsu#scri#ed 22 Lista todos los #uzones su#scritos
imapZlsu# 22 List all the su#scri#ed mail#oFes
imapZmailZcompose 22 5reate a M.M+ message #ased on given envelope and #ody sections
imapZmailZcopy 22 5opia los mensa'es especi(icados a un #uz-n
imapZmailZmove 22 Mueve los mensa'es especi(icados a un #uz-n
imapZmail 22 end an email message
imapZmail#oFmsgin(o 22 O#tiene in(ormaci-n acerca del #uz-n actual
imapZmimeZheaderZdecode 22 Decode M.M+ header elements
imapZmsgno 22 +sta (unci-n devuelve el nBmero de secuencia del mensa'e para el @.D dado;
imapZnumZmsg 22 .n(orma del nBmero de mensa'es en el #uz-n actual
imapZnumZrecent 22 .n(orma el nBmero de mensa'es recientes en el #uz-n actual
imapZopen 22 A#re una sesi-n .MAP
imapZping 22 5omprue#a si la sesi-n .MAP est* aBn activa
imapZ/print 22 5onvierte una cadena /uoted2printa#le a una cadena de M #it
imapZrenamemail#oF 22 Renom#ra un #uz-n
imapZreopen 22 Rea#re una sesi-n .MAP a un nuevo #uz-n
imapZr(cM00ZparseZadrlist 22 +Famina la cadena direcci-n
imapZr(cM00ZparseZheaders 22 Parse mail headers (rom a string
imapZr(cM00ZEriteZaddress 22 Devuleve una direcci-n de correo correctamente (ormateada dado el
#uz-nA hostA e in(ormaci-n personal;
imapZscanmail#oF 22 Lee la lista de #uzones y toma una cadena para #uscar en el teFto del #uz-n
imapZsearch 22 +sta (unci-n devuelve un array de mensa'es /ue coinciden con el criterio de
#us/ueda dado;
imapZsetZ/uota 22 ets a /uota (or a given mail#oF
imapZsetacl 22 ets the A5L (or a giving mail#oF
imapZset(lagZ(ull 22 Activa (lags en los mensa'es
imapZsort 22 Ordena un array de ca#eceras de mensa'es
imapZstatus 22 +sta (unci-n devuelve el in(ormaci-n de estado de otro #uz-n distinto al actual;
imapZsu#scri#e 22 u#scri#e to a mail#oF
imapZthread 22 Returns a tree o( threaded message
imapZtimeout 22 et or (etch imap timeout
imapZuid 22 +sta (unci-n devuelve el @.D del nBmero de secuencia del mensa'e dado
imapZundelete 22 Desmarca los mensa'es /ue est*n marcados como #orrados
imapZunsu#scri#e 22 @nsu#scri#e (rom a mail#oF
imapZut(:Zdecode 22 Decodes a modi(ied @,F2: encoded string
imapZut(:Zencode 22 5onverts .O2MM4921 string to modi(ied @,F2: teFt
imapZut(M 22 5onverts M.M+2encoded teFt to @,F2M
imap>Nbit
>P&P 7A P&P 8 A P&P 4?
imapZM#it 22 5onvierte una cadena de M#it a una cadena /uoted2printa#le
Kescripci"n
string imap>Nbit > string string ?
5onvierte una cadena de M#it a una cadena /uoted2printa#le;
Devuelve una cadena /uoted2printa#le
imap>alerts
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
imapZalerts 22 +sta (unci-n devuelve todos los mensa'es de alerta .MAP >si hu#o? /ue han ocurrido
durante la petici-n de la pagina o desde /ue la pila de alertas (ue inicializada;
Kescripci"n
array imap>alerts > void ?
+sta (unci-n devuelve un array con todos los mensa'es de alerta .MAP generados desde la Bltima
llamada a imap>alerts./A o el comienzo de la pagina; 5uando se llama a imap>alerts./A la pila de
alerta es inicializada; La especi(icaci-n .MAP re/uiere /ue estos mensa'es sean pasados al usuario;
imap>append
>P&P 7A P&P 8 A P&P 4?
imapZappend 22 Agrega una cadena de mensa'e al #uz-n especi(icado
Kescripci"n
int imap>append > int imapZstreamA string m#oFA string messageA string (lags ?
Devuelve TRUE si no hay error y FALSE en caso contrario;
imap>append./ agrega una cadena de mensa'e al #uz-n especi(icado m1o8; i se especi(ica el
par*metro 9laEsA escri#e las opciones o condiciones esta#lecidas en el par*metro 9laEs al #uz-n;
5uando conecte con el servidor 5yrus .MAPA de#e usar =hrhn= como (inalizador de linea en vez de
=hn= o la operaci-n (allar*;
imap>base<8
>P&P 7A P&P 8 A P&P 4?
imapZ#aseK8 22 Decodi(ica teFto codi(icado en BA+K8
Kescripci"n
string imap>base<8 > string teFt ?
imap>base<8./ decodi(ica teFto codi(icado en BA+2K8; +l mensa'e decodi(icado es devuelto
como una cadena;
imap>binary
>P&P 7_^ 7;3;0A P&P 8 A P&P 4?
imapZ#inary 22 5onvierte una cadena de M#it a una cadena #aseK8
Kescripci"n
string imap>binary > string string ?
5onvierte una cadena de M#it a una cadena #aseK8;
Devuleve una cadena #aseK8;
imap>body
>P&P 7A P&P 8 A P&P 4?
imapZ#ody 22 Lee el cuerpo del mensa'e
Kescripci"n
string imap>body > int imapZstreamA int msgZnum#erA int (lags ?
imap>body./ devuelve el cuerpo del mensa'eA numerado msE_num1er del #uz-n actual; Los 9laEs
opcionales son una m*scara de #it con una o mas de las siguientesC
F,Z@.D 2 +l msgno es un @.D
F,ZP++S 2 No activar heen (lag si no est* ya activa
F,Z.N,+RNAL 2 La cadena devuelta est* en (ormato internoA no canoniza a 5RLF;
imap>bodystruct
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
imapZ#odystruct 22 Read the structure o( a speci(ied #ody section o( a speci(ic message
Kescription
o#'ect imap>bodystruct > resource streamZidA int msgZnoA string section ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
imap>checB
>P&P 7A P&P 8 A P&P 4?
imapZchec" 22 5omprue#a el estado del #uz-n actual
Kescripci"n
o#'ect imap>checB > int imapZstream ?
Devuelve in(ormaci-n acerca del #uz-n actual; Devuelve FALSE si (alla;
La (unci-n imap>checB./ comprue#a el estado del #uz-n actual en el servidor y devuelve la
in(ormaci-n en un o#'eto con las siguientes propiedades;
Date C (echa del mensa'e
Driver C controlador
Mail#oF C nom#re del #uz-n
Nmsgs C nBmero de mensa'es
Recent C nBmero de mensa'es recientes

imap>clearflag>full
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
imapZclear(lagZ(ull 22 Limpia los (lags de los mensa'es
Kescripci"n
string imap>clearflag>full > int streamA string se/uenceA string (lagA string options ?
+sta (uncion elimina el (lag especi(icado del con'unto de (lags activos para los mensa'es en la
secuencia especi(icada;
Las opciones son una m*scara de #it con uno o m*s de los siguientesC
,Z@.D +l argumento se/uence contiene @.Ds en vez de
nBmeros secuenciales

imap>close
>P&P 7A P&P 8 A P&P 4?
imapZclose 22 5ierra una sesi-n .MAP
Kescripci"n
int imap>close > int imapZstreamA int (lags ?
5ierra una sesi-n imap; ,oma un par*metro 9laE opcionalA 5LZ+JP@NG+A el cual purgar* el #uz-n
de (orma trasparente antes de cerrarla;
imap>createmailbo+
>P&P 7A P&P 8 A P&P 4?
imapZcreatemail#oF 22 5rea un #uz-n nuevo
Kescripci"n
int imap>createmailbo+ > int imapZstreamA string m#oF ?
imap>createmailbo+./ crea un #uz-n nuevo especi(icado por m1o8 >ver imap>open./ para el
(ormato del par*metro m1o8?;
Devuelve TRUE si no hay error y FALSE en caso contrario;
$er ,am#i<n imap>renamemailbo+./ y imap>deletemailbo+./;
imap>delete
>P&P 7A P&P 8 A P&P 4?
imapZdelete 22 Marca un mensa'e para ser #orrado en el #uz-n actual
Kescripci"n
int imap>delete > int imapZstreamA int msgZnum#er ?
Devuelve TRUE;
La (unci-n imap>delete./ marca el mensa'e re(erenciado por msE_num1er para su eliminaci-n; +l
#orrado ()sico de los mensa'es es realizado por imap>e+punge./;
imap>deletemailbo+
>P&P 7A P&P 8 A P&P 4?
imapZdeletemail#oF 22 +limina un #uz-n
Kescripci"n
int imap>deletemailbo+ > int imapZstreamA string m#oF ?
imap>deletemailbo+./ elimina el #uz-n especi(icado >ver imap>open./ para el (ormato del m1o8?;
Devuelve TRUE si no hay error y FALSE en caso contrario;
$er ,am#i<n imap>createmailbo+./ y imap>reanmemailbo+./;
imap>errors
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
imapZerrors 22 +sta (unci-n devuelve todos los errores .MAP >si hu#o? /ue han occurrido durante
la petici-n de la p*gina o desde /ue la pila de errores se inicializ-;
Kescripci"n
array imap>errors > void ?
+sta (unci-n devuelve un array de todos los mensa'es de error .MAP generados desde la Bltima
llamada a imap>errors./A o el principio de la p*gina; 5uando se llama a imap>errors./A la pila de
errores se inicializa;
A,+N5.cp NC esta (unci-n no esta disponi#le aBn en P&P8;
imap>e+punge
>P&P 7A P&P 8 A P&P 4?
imapZeFpunge 22 +limina todos los mensa'es marcados como #orrados
Kescripci"n
int imap>e+punge > int imapZstream ?
imap>e+punge./ elimina todos los mensa'es marcados por la (unci-n imap>delete./;
Devuleve TRUE;
imap>fetch>o5er5ie3
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
imapZ(etchZovervieE 22 Read an overvieE o( the in(ormation in the headers o( the given message
Kescription
array imap>fetch>o5er5ie3 > resource imapZstreamA string se/uence PA int optionsQ ?
,his (unction (etches mail headers (or the given se@uence and returns an overvieE o( their contents;
se@uence Eill contain a se/uence o( message indices or @.DsA i( 9laEs contains F,Z@.D; ,he
returned value is an array o( o#'ects descri#ing one message header eachC
su#'ect 2 the messages su#'ect
(rom 2 Eho sent it
date 2 Ehen Eas it sent
messageZid 2 Message2.D
re(erences 2 is a re(erence to this message id
size 2 size in #ytes
uid 2 @.D the message has in the mail#oF
msgno 2 message se/uence num#er in the mail#oF
recent 2 this message is (lagged as recent
(lagged 2 this message is (lagged
ansEered 2 this message is (lagged as ansEered
deleted 2 this message is (lagged (or deletion
seen 2 this message is (lagged as already read
dra(t 2 this message is (lagged as #eing a dra(t
E'emplo !. imap>fetch>o5er5ie3./ e+ample
<?php
$mbox > imap%open3":your.imap.host@61<;", "username", "pass8ord"9
or die3"canMt connect@ " . imap%last%error399;

$o=er=ie8 > imap%#etch%o=er=ie83$mbox, "C,1@G", 29;

i# 3is%array3$o=er=ie899 :
reset3$o=er=ie89;
8hile 3list3$Iey, $=al9 > each3$o=er=ie899 :
echo $=alF>msEno
. " F " . $=alF>date
. " F " . $=alF>subject
. "Vn";
;
;

imap%close3$mbox9;
?>
imap>fetchbody
>P&P 7A P&P 8 A P&P 4?
imapZ(etch#ody 22 Localiza una secci-n particular en el cuerpo del mensa'e
Kescripci"n
string imap>fetchbody > int imapZstreamA int msgZnum#erA string partZnum#erA (lags (lags ?
+sta (unci-n #usca una secci-n particular en el cuerpo de los mensa'es especi(icadosA como una
cadena de teFto y devuleve esa cadena; La especi(icaci-n de la secci-n es una cadena de enteros
delimitados por comasAlos cuales indeFan las partes del cuerpo como indica la especi(icaci-n
.MAP8; Partes del cuerpo no son decodi(icadas por esta (unci-n;
Las opciones para imap>fetchbody ./ son una m*scara de #it con una o m*s de las siguientes
F,Z@.D 2 +l msgono es un @.D
F,ZP++S 2 No activar heen (lag si no esta ya activa
F,Z.N,+RNAL 2 La cadena devuelta est* en (ormato =interno=A sin ningBn intento por
canonizar 5RLF
imap>fetchheader
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
imapZ(etchheader 22 Devuelve la ca#ecera de un mensa'e
Kescripci"n
string imap>fetchheader > resource secuenciaZimapA int numZmensa'e PA int opcionesQ ?
+sta (unci-n produce la recuperaci-n de la ca#ecera completaA sin (iltrarA en (ormato RF50M00 del
mensa'e especi(icadoA como una cadena de teFto y devuelve esa cadena de teFto;
Las opc6ones sonC
FT_UID 2 +l argumento num_mensaUe es un @.D
FT_INTERNAL 2 La cadena de retorno est* en (ormato =interno=A sin intento alguno de
moldear a nuevas l)neas tipo 5RLF
FT_PREFETCHTE%T 2 +l archivo RF5M00;,+J, de#e ser pre2solicitado al mismo tiempo;
+sto evita un R,, eFtra en una coneFi-n .MAP si se desea un mensa'e de teFto completo
>p;e'; en la operaci-n =guardar a archivo local=?
imap>fetchstructure
>P&P 7A P&P 8 A P&P 4?
imapZ(etchstructure 22 Lee la estructuta de un mensa'e concreto
Kescripci"n
o#'ect imap>fetchstructure > int imapZstreamA int msgZnum#er PA int (lagsQ ?
+sta (unci-n #usca toda la in(ormaci-n estructurada en el mensa'e especi(icado; +l par*metro
opcional 9laEs s-lo tiene una opcionA 3T_U0DA la cual indica a la (unci-n /ue trate el argumento
msE_num1er como un U0D; +l o#'eto devuelto incluye el so#reA la (echa internaA el tamacdeuoA
(lags y la estructura del cuerpo con un o#'eto similar por cada mime ad'unto al mensa'e; La
estructura de los o#'etos devueltos es como sigueC
Tabla !. Jb'etos Ke5ueltos para imap>fetchstructure./
type ,ipo primario del cuerpo
encoding Body trans(er encoding
i(su#type TRUE si hay una cadena de su#tipo
su#type M.M+ su#type
i(Descripci-n TRUE si hay una cadena de Descripci-n
Description 5onenido de la cadena de Descripci-n
i(id TRUE si hay una cadena de identi(icaci-n
id 5adena de .denti(icaci-n
lines NBmero de lineas
#ytes NBmero de #ytes
i(disposition TRUE si hay una cadena de con(iguraci-n
disposition 5adena de con(iguraci-n
i(dparameters TRUE si el array dparameters eFiste
dparameters PaQ Array de parametro de con(iguraci-n
i(parameters TRUE si el array de par*metros eFiste
parameters P#Q M.M+ parameters array
parts PcQ
Array de o#'etos descri#iendo cada parte del
mensa'e
Notas de ,a#laC
a; dparameters es un array de o#'etos donde cada o#'eto tiene un
=atri#uto= y una propiedad =valor=;
#; parameter es un array de o#'etos donde cada o#'etor tiene un
=atri#uto= y una propiedad =valor=;
c; parts es un array de o#'etos identico en estructura al o#'eto del
primer nivelA con la limitaci-n de /ue este no puede contener m*s
o#'etos HpartsH;
Tabla *. Tipo primario del cuerpo
3 teFto
1 multiparte
0 mensa'e
7 aplicaci-n
8 audio
4 imagen
K video
: otro
Tabla 7. Codificacion para tranferencia
3 :B.,
1 MB.,
0 B.NAR%
7 BA+K8
8
O@O,+D2
PR.N,ABL+
4 O,RO
imap>get>?uota
>P&P 8 _^ 8;3;4A P&P 4?
imapZgetZ/uota 22 Retrieve the /uota level settingsA and usage statics per mail#oF
Kescription
array imap>get>?uota > resource imapZstreamA string /uotaZroot ?
Returns an array Eith integer values limit and usage (or the given mail#oF; ,he value o( limit
represents the total amount o( space alloEed (or this mail#oF; ,he usage value represents the
mail#oFes current level o( capacity; Lill return FALSE in the case o( (ailure;
,his (unction is currently only availa#le to users o( the c2client0333 or greater li#rary;
NO,+C For this (unction to Eor"A the mail stream is re/uired to #e opened as the mail2admin user;
For a non2admin user version o( this (unctionA please see the imap>get>?uotaroot./ (unction o(
P&P;
6map_stream should #e the value returned (rom an imap>open./ call; NO,+C ,his stream is
re/uired to #e opened as the mail admin user (or the getZ/uota (unction to Eor"; @uota_root should
normally #e in the (orm o( user;name Ehere name is the mail#oF you Eish to retrieve in(ormation
a#out;
E'emplo !. imap>get>?uota./ e+ample
<?php
$mbox > imap%open3":your.imap.host;", "mailadmin", "pass8ord", ?%H,OS?E.9
or die3"canMt connect@ " . imap%last%error399;

$Quota%=alue > imap%Eet%Quota3$mbox, "user.Ialo8sIy"9;
i# 3is%array3$Quota%=alue99 :
echo "+saEe le=el is@ " . $Quota%=alue)MusaEeM/;
echo "Oimit le=el is@ " . $Quota%=alue)MlimitM/;
;

imap%close3$mbox9;
?>
As o( P&P 8;7A the (unction more properly re(lects the (unctionality as dictated #y the RF5 03M:;
,he array return value has changed to support an unlimited num#er o( returned resources >i;e;
messagesA or su#2(olders? Eith each named resource receiving an individual array "ey; +ach "ey
value then contains an another array Eith the usage and limit values Eithin it; ,he eFample #eloE
shoEs the updated returned output;
For #ac"Eards compati#ility reasonsA the original access methods are still availa#le (or useA
although it is suggested to update;
E'emplo *. imap>get>?uota./ 8.7 or greater e+ample
<?php
$mbox > imap%open3":your.imap.host;", "mailadmin", "pass8ord", ?%H,OS?E.9
or die3"canMt connect@ " . imap%last%error399;

$Quota%=alues > imap%Eet%Quota3$mbox, "user.Ialo8sIy"9;
i# 3is%array3$Quota%=alues99 :
$storaEe > $Quota%=alues)M&*?',-EM/;
echo "&*?',-E usaEe le=el is@ " . $storaEe)MusaEeM/;
echo "&*?',-E limit le=el is@ " . $storaEe)MlimitM/;
$messaEe > $Quota%=alues)M"E&&,-EM/;
echo ""E&&,-E usaEe le=el is@ " . $messaEe)MusaEeM/;
echo ""E&&,-E limit is@ " . $messaEe)MlimitM/;
/W ... W/
;
imap%close3$mbox9;
?>
ee also imap>open./A imap>set>?uota./ and imap>get>?uotaroot./;
imap>get>?uotaroot
>P&P 8 _^ 8;7;3A P&P 4?
imapZgetZ/uotaroot 22 Retrieve the /uota settings per user
Kescription
array imap>get>?uotaroot > resource imapZstreamA string /uotaZroot ?
Returns an array o( integer values pertaining to the speci(ied user mail#oF; All values contain a "ey
#ased upon the resource nameA and a corresponding array Eith the usage and limit values Eithin;
,he limit value represents the total amount o( space alloEed (or this userHs total mail#oF usage; ,he
usage value represents the userHs current total mail#oF capacity; ,his (unction Eill return FALSE in
the case o( call (ailureA and an array o( in(ormation a#out the connection upon an un2parsa#le
response (rom the server;
,his (unction is currently only availa#le to users o( the c2client0333 or greater li#rary;
6map_stream should #e the value returned (rom an imap>open./ call; ,his stream should #e opened
as the user Ehose mail#oF you Eish to chec"; @uota_root should normally #e in the (orm o( Ehich
mail#oF >i;e; .NBOJ?;
E'emplo !. imap>get>?uotaroot./ e+ample
<?php
$mbox > imap%open3":your.imap.host;", "Ialo8sIy", "pass8ord", ?%H,OS?E.9
or die3"canMt connect@ " . imap%last%error399;

$Quota > imap%Eet%Quotaroot3$mbox, "4.Z?X"9;
i# 3is%array3$Quota99 :
$storaEe > $Quota%=alues)M&*?',-EM/;
echo "&*?',-E usaEe le=el is@ " . $storaEe)MusaEeM/;
echo "&*?',-E limit le=el is@ " . $storaEe)MlimitM/;
$messaEe > $Quota%=alues)M"E&&,-EM/;
echo ""E&&,-E usaEe le=el is@ " . $messaEe)MusaEeM/;
echo ""E&&,-E usaEe le=el is@ " . $messaEe)MlimitM/;
/W ... W/
;

imap%close3$mbox9;
?>
ee also imap>open./A imap>set>?uota./ and imap>get>?uota./;
imap>getacl
>P&P 4?
imapZgetacl 22 Gets the A5L (or a given mail#oF
Kescription
array imap>getacl > resource streamZidA string mail#oF ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
,his (unction is currently only availa#le to users o( the c2client0333 or greater li#rary;
ee also imap>setacl./;
imap>getmailbo+es
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
imapZgetmail#oFes 22 Lee la lista de #uzonesA devolviendo in(ormac-n detallada de cada uno
Kescripci"n
array imap>getmailbo+es > int imapZstreamA string re(A string pat ?
Devuelve un array de o#'etos coneniendo in(ormaci-n del #uz-n; 5ada o#'eto tiene los atri#utos
nameA especi(icando el nom#re completo del #uz-nX #el6m6terA /ue es el delimitador 'er*r/uico para
la parte de la 'erar/u)a d-nde est* este #uz-nX y attr61utes; ,ttr61utes es una m*scara de #its contra
la /ue se puede pro#arC
LA,,ZNO.NF+R.OR 2 +ste #uz-n no tiene =hi'os= >No ha #uzones por de#a'o de <l?
LA,,ZNO+L+5, 2 +sto es s-lo un contenedorA no un #uz-n 2 No puede a#rirlo;
LA,,ZMARS+D 2 +ste #uz-n est* marcado; @nicamente usado por @L2.MAPD;
LA,,Z@NMARS+D 2 +ste #uz-n no est* marcado; @nicamente usado por @L2.MAPD;
re9 normalmente de#er)a ser solo el servidor .MAPA de la (ormaC \imapZserverCimapZport]A y
pattern especi(icaA d-nde en la estructura 'er*r/uica del #uz-nA para comenzar a #uscar; i /uiere
todo los #uzonesA pase el par*metro pattern como una cadena vac)a;
&ay dos caracteres especiales /ue puede pasar como parte del par*metro patternC HVH and HbH; HVH
signi(ica /ue devuelva todos los #uzones; i pasa el par*metro pattern como HVHA o#tendr* una lista
con la 'erar/u)a completa del #uz-n; bH signi(ica /ue devuelva s-lo el nivel actual; Pasar HbH en el
par*metro pattern devolver* s-lo el nivel m*s alto de los #uzonesX HgDmailDbH en @LZ.MAPD
devolver* cada #uz-n del directorio gDmailA pero ninguno de los su#directorios de ese directorio;
imap>getsubscribed
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
imapZgetsu#scri#ed 22 Lista todos los #uzones su#scritos
Kescripci"n
array imap>getsubscribed > int imapZstreamA string re(A string pattern ?
+sta (unci-n es id<ntica a imap>getmailbo+es./A eFcepto /ue esta s-lo devuelve los #uzones a los
/ue est* su#scrito el usuario;
imap>header
>P&P 7A P&P 8 A P&P 4?
imapZheader 22 Lee la ca#ecera del mensa'e
Kescripci"n
o#'ect imap>header > int imapZstreamA int msgZnum#er PA int (romlength PA int su#'ectlength PA
string de(aulthostQQQ ?
+sta (unci-n devuelve un o#'eto con varios elementos de la ca#ecera;
remailA dateA DateA su#'ectA u#'ectA inZreplyZtoA messageZidA
neEsgroupsA (olloEupZtoA re(erences
message (lagsC
Recent 2 HRH si es reciente y ha sido leidoA
HNH si es reciente y no ha sido leidoA
H H si no es reciente
@nseen 2 H@H si no ha sido leido % no es recienteA
H H si ha sido leido O no y es reciente
AnsEered 2HAH si ha sido contestadoA
H H si no ha sido contestado
Deleted 2 HDH si ha sido #orradoA
H H si no ha sido #orrado
Dra(t 2 HJH i( dra(tA
H H i( not dra(t
Flagged 2 HFH si esta i( (laggedA
H H i( not (lagged
OB+R$+ /ue el comportamiento RecentD@nseen es un poco eFtracdeuo; i /uiere conocer
si un mensa'e es @nseenA de#e compro#arlo asi
@nseen ^^ H@H ll Recent ^^ HNH
toaddress >la linea toC al completoA hasta 1308 caracteres?
toPQ >devuelve un array de o#'etos a partir de la linea ,oA conteniendoC?
personal
adl
mail#oF
host
(romaddress >la linea (romC al completoA hasta 1308 caracteres?
(romPQ >devuelve un array de o#'etos a partir de la linea FromA conteniendoC?
personal
adl
mail#oF
host
ccaddress >la linea ccC al completoA hasta 1308 caracteres?
ccPQ >devuelve un array de o#'etos a partir de la linea 5cCA conteniendoC?
personal
adl
mail#oF
host
#ccaddress >la linea #cc al completoA hasta 1308 caracteres?
#ccPQ >devuelve un array de o#'etos a partir de la linea BccA conteniendoC?
personal
adl
mail#oF
host
replyZtoaddress >la linea replyZtoC al completoA hasta 1308 caracteres?
replyZtoPQ >devuelve un array de o#'etos a partir de la linea ReplyZtoA
conteniendoC?
personal
adl
mail#oF
host
senderaddress >la linea senderC al completoA hasta 1308 caracteres?
senderPQ >devuelve un array de o#'etos a partir de la linea senderA conteniendoC?
personal
adl
mail#oF
host
returnZpath >la linea return2pathC al completoA hasta 1308 caracteres?
returnZpathPQ >devuelve un array de o#'etos a partir de la linea returnZpathA
conteniendoC?
personal
adl
mail#oF
host
udate >(echa del mensa'e en (ormato uniF?
(etch(rom >la linea (rom (ormateada hasta a'ustarse a los caracteres
indicados en 9romlenEth?
(etchsu#'ect >la linea su#'ect (ormateada hasta a'ustarse a los caracteres
indicados en su1UectlenEth?

imap>headerinfo
>P&P 7A P&P 8 A P&P 4?
imapZheaderin(o 22 Read the header o( the message
Kescription
o#'ect imap>headerinfo > resource imapZstreamA int msgZnum#er PA int (romlength PA int
su#'ectlength PA string de(aulthostQQQ ?
,his (unction returns an o#'ect o( various header elements;
remailA dateA DateA su#'ectA u#'ectA inZreplyZtoA messageZidA
neEsgroupsA (olloEupZtoA re(erences
message (lagsC
Recent 2 HRH i( recent and seenA
HNH i( recent and not seenA
H H i( not recent
@nseen 2 H@H i( not seen AND not recentA
H H i( seen OR not seen and recent
AnsEered 2HAH i( ansEeredA
H H i( unansEered
Deleted 2 HDH i( deletedA
H H i( not deleted
Dra(t 2 HJH i( dra(tA
H H i( not dra(t
Flagged 2 HFH i( (laggedA
H H i( not (lagged
NO,+ that the RecentD@nseen #ehavior is a little odd; .( you Eant to
"noE i( a message is @nseenA you must chec" (or
@nseen ^^ H@H ll Recent ^^ HNH
toaddress >(ull toC lineA up to 1308 characters?
toPQ >returns an array o( o#'ects (rom the ,o lineA containing?C
personal
adl
mail#oF
host
(romaddress >(ull (romC lineA up to 1308 characters?
(romPQ >returns an array o( o#'ects (rom the From lineA containing?C
personal
adl
mail#oF
host
ccaddress >(ull ccC lineA up to 1308 characters?
ccPQ >returns an array o( o#'ects (rom the 5c lineA containing?C
personal
adl
mail#oF
host
#ccaddress >(ull #cc lineA up to 1308 characters?
#ccPQ >returns an array o( o#'ects (rom the Bcc lineA containing?C
personal
adl
mail#oF
host
replyZtoaddress >(ull replyZtoC lineA up to 1308 characters?
replyZtoPQ >returns an array o( o#'ects (rom the ReplyZto lineA
containing?C
personal
adl
mail#oF
host
senderaddress >(ull senderC lineA up to 1308 characters?
senderPQ >returns an array o( o#'ects (rom the sender lineA containing?C
personal
adl
mail#oF
host
returnZpath >(ull return2pathC lineA up to 1308 characters?
returnZpathPQ >returns an array o( o#'ects (rom the returnZpath lineA
containing?C
personal
adl
mail#oF
host
udate >mail message date in uniF time?
(etch(rom >(rom line (ormatted to (it 9romlenEth
characters?
(etchsu#'ect >su#'ect line (ormatted to (it su1UectlenEth characters?

imap>headers
>P&P 7A P&P 8 A P&P 4?
imapZheaders 22 Returns headers (or all messages in a mail#oF
Kescripci"n
array imap>headers > int imapZstream ?
Devuelve un array de cadenas (ormateadas con in(ormacion de la ca#ecera; @n elemento por
mensa'e de correo;
imap>last>error
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
imapZlastZerror 22 +sta (unci-n devuelve el Bltimo error .MAP >si se produ'o? /ue ocurri- durante
la petici-n de esta p*gina;
Kescripci"n
string imap>last>error > void ?
+sta (unci-n devuelve el teFto completo del Bltimo error .MAP /ue ocurri- en la pagina actual; La
plia de errores ,he error stac" is untouchedX llamando despues a la (unci-n imap>last>error./A sin
/ue se produzca un errorA devolver* el mismo error;
A,+N5.cp NC esta (unci-n no esta disponi#le aBn en P&P8;
imap>list
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
imapZlist 22 Read the list o( mail#oFes
Kescription
array imap>list > resource imapZstreamA string re(A string pattern ?
Returns an array containing the names o( the mail#oFes; ee imap>getmailbo+es./ (or a description
o( re9 and pattern;
E'emplo !. imap>list./ e+ample
<?php
$mbox > imap%open3":your.imap.host;", "username", "pass8ord", ?%H,OS?E.9
or die3"canMt connect@ " . imap%last%error399;

$list > imap%list3$mbox, ":your.imap.host;", "W"9;
i# 3is%array3$list99 :
reset3$list9;
8hile 3list3$Iey, $=al9 > each3$list99 :
echo imap%ut#H%decode3$=al9 . "<br />Vn";
;
; else :
echo "imap%list #ailed@ " . imap%last%error39 . "Vn";
;
imap%close3$mbox9;
?>
ee alsoC imap>getmailbo+es./;
imap>listmailbo+
>P&P 7A P&P 8 A P&P 4?
imapZlistmail#oF 22 Lee la lista de #uzones
Kescripci"n
array imap>listmailbo+ > int imapZstreamA string re(A string pat ?
Devuelve un array /ue contiene los nom#res de los #uzones;
imap>listscan
>no version in(ormationA might #e only in 5$?
imapZlistscan 22 Read the list o( mail#oFesA ta"es a string to search (or in the teFt o( the mail#oF
Kescription
array imap>listscan > resource imapZstreamA string re(A string patternA string content ?
Returns an array containing the names o( the mail#oFes that have content in the teFt o( the mail#oF;
,his (unction is similar to imap>listmailbo+./A #ut it Eill additionally chec" (or the presence o( the
string content inside the mail#oF data;
ee imap>getmailbo+es./ (or a description o( re9 and pattern;
imap>listsubscribed
>P&P 7A P&P 8 A P&P 4?
imapZlistsu#scri#ed 22 Lista todos los #uzones su#scritos
Kescripci"n
array imap>listsubscribed > int imapZstreamA string re(A string pattern ?
Devuelve un array de todos los #uzones /ue usted tiene su#scritos; Los par*metros re9 y pattern
especi(ican la localizaci-n desde donde comenzar* a #uscar y el patr-n /ue el nom#re del #uz-n
de#e encontrar;
imap>lsub
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
imapZlsu# 22 List all the su#scri#ed mail#oFes
Kescription
array imap>lsub > resource imapZstreamA string re(A string pattern ?
Returns an array o( all the mail#oFes that you have su#scri#ed;
imap>mail>compose
>P&P 7_^ 7;3;4A P&P 8 A P&P 4?
imapZmailZcompose 22 5reate a M.M+ message #ased on given envelope and #ody sections
Kescription
string imap>mail>compose > array envelopeA array #ody ?
E'emplo !. imap>mail>compose./ e+ample
<?php
$en=elope)"#rom"/> "joe^example.com";
$en=elope)"to"/ > "#oo^example.com";
$en=elope)"cc"/ > "bar^example.com";
$part6)"type"/ > *PE"+O*4,'*;
$part6)"subtype"/ > "mixed";
$#ilename > "/tmp/imap.c.E0";
$#p > #open3$#ilename, "r"9;
$contents > #read3$#p, #ilesi0e3$#ilename99;
#close3$#p9;
$partC)"type"/ > *PE,O4R,*4?.;
$partC)"encodinE"/ > E.RZ4.,'P;
$partC)"subtype"/ > "octetFstream";
$partC)"description"/ > basename3$#ilename9;
$partC)"contents.data"/ > $contents;
$part<)"type"/ > *PE*EX*;
$part<)"subtype"/ > "plain";
$part<)"description"/ > "description<";
$part<)"contents.data"/ > "contents.data<VnVnVnVt";
$body)6/ > $part6;
$body)C/ > $partC;
$body)</ > $part<;
echo nlCbr3imap%mail%compose3$en=elope, $body99;
?>
imap>mail>copy
>P&P 7A P&P 8 A P&P 4?
imapZmailZcopy 22 5opia los mensa'es especi(icados a un #uz-n
Kescripci"n
int imap>mail>copy > int imapZstreamA string msglistA string m#oFA int (lags ?
Devuelve TRUE si no hay error y FALSE en caso contrario;
5opia los mensa'es especi(icados por msEl6st a un #uz-n especi(icado; msEl6st es un rango no
nBmeros de mensa'es;
Flags es una m*scara de #it de uno o m*s
5PZ@.D 2 los nBmeros de secuencia contienen @.D
5PZMO$+ 2 +limina los mensa'es del #uzon actual despues de copiarlos
imap>mail>mo5e
>P&P 7A P&P 8 A P&P 4?
imapZmailZmove 22 Mueve los mensa'es especi(icados a un #uz-n
Kescripci"n
int imap>mail>mo5e > int imapZstreamA string msglistA string m#oF ?
Mueve los mensa'es especi(icados por msEl6st al #uz-n especici(ado; msEl6st es un rango no
nBmeros de mensa'es;
Devuelve TRUE si no hay error y FALSE en caso contrario;
imap>mail
>P&P 7_^ 7;3;18A P&P 8 A P&P 4?
imapZmail 22 end an email message
Kescription
#ool imap>mail > string toA string su#'ectA string message PA string additionalZheaders PA string cc PA
string #cc PA string rpathQQQQ ?
,his (unction alloEs sending o( emails Eith correct handling o( 5c and Bcc receivers; Devuelve
TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;;
,he parameters toA cc and 1cc are all strings and are all parsed as r(cM00 address lists;
,he receivers speci(ied in 1cc Eill get the mailA #ut are eFcluded (rom the headers;
@se the rpath parameter to speci(y return path; ,his is use(ul Ehen using P&P as a mail client (or
multiple users;
imap>mailbo+msginfo
>P&P 7_^ 7;3;0A P&P 8 A P&P 4?
imapZmail#oFmsgin(o 22 O#tiene in(ormaci-n acerca del #uz-n actual
Kescripci"n
o#'ect imap>mailbo+msginfo > int imapZstream ?
Devuelve in(ormaci-n acerca del #uz-n actual; Devuelve FALSE en caso de (allo;
La (unci-n imap>mailbo+msginfo./ comprue#a el estado del #uz-n actual en el servidor y
devuelve la in(ormaci-n en un o#'eto con las siguientes propiedades;
Date C (echa del mensa'e
Driver C driver
Mail#oF C nom#re del #uz-n
Nmsgs C nBmero de mensa'es
Recent C nBmero de los mensa'es recientes
@nread C nBmero de los mensa'es no leidos
ize C tamacdeuo del #uzon

imap>mime>header>decode
>P&P 7_^ 7;3;1:A P&P 8 A P&P 4?
imapZmimeZheaderZdecode 22 Decode M.M+ header elements
Kescription
array imap>mime>header>decode > string teFt ?
imap>mime>header>decode./ (unction decodes M.M+ message header eFtensions that are non
A5.. teFt >see RF5038:? ,he decoded elements are returned in an array o( o#'ectsA Ehere each
o#'ect has tEo propertiesA =charset= and =teFt=; .( the element hasnHt #een encodedA and in other
Eords is in plain @2A5..Athe =charset= property o( that element is set to =de(ault=;
E'emplo !. imap>mime>header>decode./ e+ample
<?php
$text > ">?4&?FJJ5KF6?N?]eld%A>SJrn%&imonsen?> <Ield^example.com>";
$elements > imap%mime%header%decode3$text9;
#or 3$i>2; $i<count3$elements9; $i[[9 :
echo "Rharset@ :$elements)$i/F>charset;Vn";
echo "*ext@ :$elements)$i/F>text;VnVn";
;
?>
.n the a#ove eFample Ee Eould have tEo elementsA Ehereas the (irst element had previously #een
encoded Eith .O2MM4921A and the second element Eould #e plain @2A5..;
imap>msgno
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
imapZmsgno 22 +sta (unci-n devuelve el nBmero de secuencia del mensa'e para el @.D dado;
Kescripci"n
int imap>msgno > int imapZstreamA int uid ?
+sta (unci-n devuelve el nBmero de secuencia del mensa'e para el @.D dado; +sta (unci-n es la
inversa a imap>uid./;
imap>num>msg
>P&P 7A P&P 8 A P&P 4?
imapZnumZmsg 22 .n(orma del nBmero de mensa'es en el #uz-n actual
Kescripci"n
int imap>num>msg > int imapZstream ?
Devuelve el nBmero de mensa'es en el #uz-n actual;
imap>num>recent
>P&P 7A P&P 8 A P&P 4?
imapZnumZrecent 22 .n(orma el nBmero de mensa'es recientes en el #uz-n actual
Kescripci"n
int imap>num>recent > int imapZstream ?
Devuleve el nBmero de mensa'es recientes en el #uz-n actual;
imap>open
>P&P 7A P&P 8 A P&P 4?
imapZopen 22 A#re una sesi-n .MAP
Kescripci"n
int imap>open > string mail#oFA string usernameA string passEordA int (lags ?
Devuleve la sesion .MAP si no hay error y FALSE en caso contrario; +sta (unci-n tam#i<n puede
ser usada para a#rir sesiones con servidores POP7 y NN,P; Para conectarse a un servidor .MAP
escuchando por el puerto 187 en una m*/uina localA haga lo siguienteC
$mbox > imap%open3":localhost@61<;4.Z?X","user%id","pass8ord"9;
Para conectarse a un servidor POP7 escuchando por el puerto 113A useC
$mbox > imap%open3":localhost/pop<@662;4.Z?X","user%id","pass8ord"9;
Para conectarse a un servidor NN,P escuchando por el puerto 119A useC
$nntp > imap%open3":localhost/nntp@66K;comp.test","",""9;
Para conectarse a un servidor remoto sustituya =localhost=A por el nom#re o direcci-n .P del servidor
al cual /uiere conectarse;
Las opciones son una m*scara de #it con una o m*s de los siguientesC
OPZR+ADONL% 2 A#re el #uz-n en modo de s-lo lectura
OPZANON%MO@ 2 No usa o actualiza un ;neEsrc para las noticias
OPZ&ALFOP+N 2 Para nom#res .MAP y NN,PA a#re una coneFi-n pero no a#re un #uz-n
5LZ+JP@NG+ 2 Purga automaticamente el #uz-n antes de cerrar la sesi-n
imap>ping
>P&P 7A P&P 8 A P&P 4?
imapZping 22 5omprue#a si la sesi-n .MAP est* aBn activa
Kescripci"n
int imap>ping > int imapZstream ?
Devuelve TRUE si la sesi-n est* activaA FALSE en caso contrario;
La (unci-n imap>ping./ pings the stream to see it is still active; +sto puede descu#rir /ue hay
correo nuevoX este es el m<todo pre(erido para hacer una compro#aci-n periodica del #uz-nA asi
como para mantener activa sesiones en servidores /ue tienen inactivity timeout;
imap>?print
>P&P 7A P&P 8 A P&P 4?
imapZ/print 22 5onvierte una cadena /uoted2printa#le a una cadena de M #it
Kescripci"n
string imap>?print > string string ?
5onvierte una cadena /uoted2printa#le a una cadena de M #it
Devuelve una cadena de M #it >#inary?
imap>renamemailbo+
>P&P 7A P&P 8 A P&P 4?
imapZrenamemail#oF 22 Renom#ra un #uz-n
Kescripci"n
int imap>renamemailbo+ > int imapZstreamA string oldZm#oFA string neEZm#oF ?
+sta (unci-n renom#ra un #uzon >ver imap>open./ para el (ormato del par*metro m1o8?;
Devuelve TRUE si no hay error y FALSE en caso contrario;
$er ,am#i<n imap>createmailbo+./ and imap>deletemailbo+./;
imap>reopen
>P&P 7A P&P 8 A P&P 4?
imapZreopen 22 Rea#re una sesi-n .MAP a un nuevo #uz-n
Kescripci"n
int imap>reopen > string imapZstreamA string mail#oF PA string (lagsQ ?
Devuelve TRUE si no hay error y FALSE en caso contrario;
+sta (unci- rea#re la sesi-n especi(icada con un nuevo #uz-n;
Las opciones son m*scaras de #it con una o m*s de las siguientesC
OPZR+ADONL% 2 A#re el #uz-n en modo de s-lo lectura
OPZANON%MO@ 2 No usa o actualiza ;neEsrc para noticias
OPZ&ALFOP+N 2 Para nom#res .MAP y NN,PA a#re una coneFi-n pero no a#re el #uzon;
5LZ+JP@NG+ 2 +Fpurga automaticamente el #uzon antes de cerra la sesi-n
imap>rfcN**>parse>adrlist
>P&P 7_^ 7;3;0A P&P 8 A P&P 4?
imapZr(cM00ZparseZadrlist 22 +Famina la cadena direcci-n
Kescripci"n
string imap>rfcN**>parse>adrlist > string addressA string de(aultZhost ?
+sta (unci-n eFamina la cadena direcci-n y para cada direcci-nA devuelve un array de o#'etos; Los 8
o#'etos sonC
mail#oF 2 el nom#re del #uz-n >username?
host 2 el nom#re del ordenador
personal 2 el nom#re personal
adl 2 ruta del dominio

imap>rfcN**>parse>headers
>P&P 8 A P&P 4?
imapZr(cM00ZparseZheaders 22 Parse mail headers (rom a string
Kescription
o#'ect imap>rfcN**>parse>headers > string headers PA string de(aulthostQ ?
,his (unction returns an o#'ect o( various header elementsA similar to imap>header./A eFcept
Eithout the (lags and other elements that come (rom the .MAP server;
imap>rfcN**>3rite>address
>P&P 7_^ 7;3;0A P&P 8 A P&P 4?
imapZr(cM00ZEriteZaddress 22 Devuleve una direcci-n de correo correctamente (ormateada dado el
#uz-nA hostA e in(ormaci-n personal;
Kescripci"n
string imap>rfcN**>3rite>address > string mail#oFA string hostA string personal ?
Devuelve una direcci-n de correo correctamente (ormateadaA dado el #uz-nA hostA e in(ormaci-n
personal;
imap>scanmailbo+
>P&P 7A P&P 8 A P&P 4?
imapZscanmail#oF 22 Lee la lista de #uzones y toma una cadena para #uscar en el teFto del #uz-n
Kescripci"n
array imap>scanmailbo+ > int imapZstreamA string string ?
Devuelve un array /ue contiene los nom#res de los #uzones /ue tienen el par*metro str6nE en el
teFto del #uz-n;
imap>search
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
imapZsearch 22 +sta (unci-n devuelve un array de mensa'es /ue coinciden con el criterio de
#us/ueda dado;
Kescripci"n
array imap>search > int imapZstreamA string criteriaA int (lags ?
+sta (unci-n realiza una #us/ueda en el #uz-n actualmente a#ierto indicado por imapZstream;
cr6ter6a es una cadenaA delimitada por espaciosA en la cual las siguientes pala#ras claves son
permitidas; 5ual/uier argumento mBltiple >e'; FROM ='oey smith=? de#e estar entre comillas;
ALL 2 devuelve todos los mensa'es /ue coinciden con el resto del criterio
ANL+R+D 2 #usca mensa'es con el (lag hhANL+R+D activado
B55 =string= 2 #usca mensa'es con =cadena= en el campo BccC
B+FOR+ =date= 2 #usca mensa'es con DateC antes de =date=
BOD% =string= 2 #usca mensa'es con =cadena= en el cuerpo del mensa'e
55 =string= 2 #usca mensa'es con =cadena= en el campo 5cC
D+L+,+D 2 #usca mensa'es eliminados
FLAGG+D 2 #usca mensa'es con el (lag hhFLAGG+D >sometimes re(erred to as .mportant or
@rgent? activado
FROM =string= 2 #usca mensa'es con =cadena= en el campo FromC
S+%LORD =string= 2 #usca mensa'es con =cadena= como una pala#ra clave
N+L 2 #usca mensa'es nuevos
OLD 2 #usca mensa'es vie'os
ON =date= 2 #usca mensa'es con =date= igual a DateC
R+5+N, 2 #usca mensa'es con el (lag hhR+5+N, activado
++N 2 #usca mensa'es /ue han sido leidos >la opcion hh++N activada?
.N5+ =date= 2 #usca mensa'es conEith DateC a(ter =date=
@B!+5, =string= 2 #usca mensa'es con =string= en el campo u#'ectC
,+J, =string= 2 #usca mensa'es con el teFto =string=
,O =string= 2 #usca mensa'es con =string= en el campo ,oC
@NANL+R+D 2 #usca mensa'es /ue no han sido respondidos
@ND+L+,+D 2 #usca mensa'es /ue no han sido eliminados
@NFLAGG+D 2 #usca mensa'es /ue no estan (lagged
@NS+%LORD =string= 2 #usca mensa'es /ue no coinciden con la pala#ra clave =string=
@N++N 2 #usca mensa'es /ue no han sido leidos aBn
Por e'emploA para #uscar todos los mensa'es no contestados enviados por Mam*A usar)aC
=@NANL+R+D FROM mam*=; La #us/ueda parece ser no sensitiva; +sta lista de criterios est*
tomada del codigo (uente del @L c2client y puede /ue este incompleta o sea ineFacta;
$alores validos para los (lags son +Z@.DA /ue provoca /ue el array devuelto contenga @.Ds en
vez de los numeros de secuencia de los mensa'es
imap>set>?uota
>P&P 8 _^ 8;3;4A P&P 4?
imapZsetZ/uota 22 ets a /uota (or a given mail#oF
Kescription
#ool imap>set>?uota > resource imapZstreamA string /uotaZrootA int /uotaZlimit ?
ets an upper limit /uota on a per mail#oF #asis; ,his (unction re/uires the 6map_stream to have
#een opened as the mail administrator account; .t Eill not Eor" i( opened as any other user;
,his (unction is currently only availa#le to users o( the c2client0333 or greater li#rary;
6map_stream is the stream pointer returned (rom a imap>open./ call; ,his stream must #e opened as
the mail administratorA other Eise this (unction Eill (ail; @uota_root is the mail#oF to have a /uota
set; ,his should (olloE the .MAP standard (ormat (or a mail#oFA Huser;nameH; @uota_l6m6t is the
maFimum size >in SB? (or the @uota_root;
Returns TRUE on success and FALSE on error;
E'emplo !. imap>set>?uota./ e+ample
<?php
$mbox > imap%open3":your.imap.host@61<;", "mailadmin", "pass8ord"9;
i# 3!imap%set%Quota3$mbox, "user.Ialo8sIy", <22299 :
echo "Error in settinE QuotaVn";
return;
;
imap%close3$mbox9;
?>
ee also imap>open./ and imap>set>?uota./;
imap>setacl
>P&P 8 _^ 8;1;3A P&P 4?
imapZsetacl 22 ets the A5L (or a giving mail#oF
Kescription
#ool imap>setacl > resource streamZidA string mail#oFA string idA string rights ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
,his (unction is currently only availa#le to users o( the c2client0333 or greater li#rary;
ee also imap>getacl./;
imap>setflag>full
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
imapZset(lagZ(ull 22 Activa (lags en los mensa'es
Kescripci"n
string imap>setflag>full > int streamA string se/uenceA string (lagA string options ?
+sta (unci-n acdeuade el (lag especi(icado al con'unto de (lags activos para los mensa'es en la
secuencia especi(icada;
Los (lags /ue puede seleccionar son =hheen=A =hhAnsEered=A =hhFlagged=A =hhDeleted=A =hhDra(t=A y
=hhRecent= > de(inidos en el RF503K3?
Las opciones son una m*scara de #it con uno o m*s de los siguientesC
,Z@.D +l argumento se/uence contiene @.Ds en vez de
nBmeros secuenciales

imap>sort
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
imapZsort 22 Ordena un array de ca#eceras de mensa'es
Kescripci"n
string imap>sort > int streamA int criteriaA int reverseA int options ?
Devuelve un array de nBmeros de mensa'es ordenados por los parametros dados
Rev es 1 para una ordenaci-n inversa;
5riteria puede ser uno >y s-lo uno? de los siguientesC
OR,DA,+ Fecha del mensa'e
OR,ARR.$AL Fecha de llegada
OR,FROM mail#oF in (irst From address
OR,@B!+5, Asunto del mensa'e
OR,,O mail#oF in (irst ,o address
OR,55 mail#oF in (irst cc address
OR,.I+ tamacdeuo del mensa'e en #ytes

Las opciones son una m*scara de #it con uno o m*s de los siguientesC
+Z@.D Devuelve @.Ds en vez de nBmeros secuenciales
+ZNOPR+F+,5& No preselecciona los mensa'es #uscados;

imap>status
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
imapZstatus 22 +sta (unci-n devuelve el in(ormaci-n de estado de otro #uz-n distinto al actual;
Kescripci"n
o#'ect imap>status > int imapZstreamA string mail#oFA int options ?
+sta (unci-n devuelve un o#'eto /ue contiene in(ormaci-n de estado; Las opciones v*lidas sonC
AZM+AG+ 2 activa status2_messages con el nBmero de mensa'es en el #uzon
AZR+5+N, 2 activa status2_recent con el nBmero de mensa'es recientes en el #uz-n
AZ@N++N 2 activa status2_unseen con el nBmero de mesa'es no leidos >nuevos? en el
#uz-n
AZ@.DN+J, 2 activa status2_uidneFt con el pr-Fimo uid a usar en el #iz-n
AZ@.D$AL.D.,% 2 activa status2_uidvalidity con una constante /ue cam#ia cuando los
uids del #uzon ya no son v*lidos
AZALL 2 activa todos los de arri#a
status2_(lags contienen una m*scara de #its la cual puede ser compro#ada contra cual/uiera de las
propiedades de arri#a;
imap>subscribe
>P&P 7A P&P 8 A P&P 4?
imapZsu#scri#e 22 u#scri#e to a mail#oF
Kescripci"n
int imap>subscribe > int imapZstreamA string m#oF ?
Da de alta un nuevo #uz-n;
Devuleve TRUE si no hay error y FALSE en caso contrario;
imap>thread
>P&P 8 _^ 8;1;3A P&P 4?
imapZthread 22 Returns a tree o( threaded message
Kescription
array imap>thread > resource streamZid PA int optionsQ ?
imap>thread./ returns an associative array containing a tree o( messages threaded #y
RE3ERENCESA or FALSE on error;
+very message in the current mail#oF Eill #e represented #y three entries in the resulting arrayC
'threa#)*FF.num*. 2 current message num#er
'threa#)*FF.ne8t*.
'threa#)*FF.1ranch*.
E'emplo !. imap>thread./ E+ample
<?php
// Here 8eMre outputtinE the threads o# a ne8sEroup, in H*"O
$nntp > imap%open3M:ne8s.example.com@66K/nntp;some.ne8sEroupM, MM, MM9;
$threads > imap%thread3$nntp9;
#oreach 3$thread as $Iey >> $=al9 :
$tree > explode3M.M, $Iey9;
i# 3$tree)6/ >> MnumM9 :
$header > imap%headerin#o3$nntp, $=al9;
echo "<ul>VnVt<li>" . $headerF>#romaddress . "Vn";
; elsei# 3$tree)6/ >> MbranchM9 :
echo "Vt</li>Vn</ul>Vn";
;
;
imap%close3$nntp9;
?>
imap>timeout
>P&P 8 _^ 8;7;7A P&P 4?
imapZtimeout 22 et or (etch imap timeout
Kescription
miFed imap>timeout > int timeoutZtype PA int timeoutQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
imap>uid
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
imapZuid 22 +sta (unci-n devuelve el @.D del nBmero de secuencia del mensa'e dado
Kescripci"n
int imap>uid > int imapZstreamA int msgno ?
+sta (unci-n devuelve el @.D del nBmero de secuencia del mensa'e dado; +sta (unci-n es la inversa
a imap>msgno./;
imap>undelete
>P&P 7A P&P 8 A P&P 4?
imapZundelete 22 Desmarca los mensa'es /ue est*n marcados como #orrados
Kescripci"n
int imap>undelete > int imapZstreamA int msgZnum#er ?
+sta (uncion elimina la marca de #orrado de un mensa'e especi(icoA puesta por la (unci-n
imap>delete./;
Devuleve TRUE si no hay error y FALSE en caso contrario;
imap>unsubscribe
>P&P 7A P&P 8 A P&P 4?
imapZunsu#scri#e 22 @nsu#scri#e (rom a mail#oF
Kescripci"n
int imap>unsubscribe > int imapZstreamA string m#oF ?
Da de #a'a el #uz-n especi(icado;
Devuelve TRUE si no hay error y FALSE en caso contrario;
imap>utf=>decode
>P&P 7_^ 7;3;14A P&P 8 A P&P 4?
imapZut(:Zdecode 22 Decodes a modi(ied @,F2: encoded string
Kescription
string imap>utf=>decode > string teFt ?
Decodes modi(ied @,F2: te8t into .O2MM4921 string;
Returns a string that is encoded in .O2MM4921 and consists o( the same se/uence o( characters in
te8tA or FALSE i( te8t contains invalid modi(ied @,F2: se/uence or te8t contains a character that is
not part o( .O2MM4921 character set;
,his (unction is needed to decode mail#oF names that contain certain characters Ehich are not in
range o( printa#le A5.. characters;
,he modi(ied @,F2: encoding is de(ined in RF5 03K3A section 4;1;7 >original @,F2: Eas de(ined in
RF51K80?;
ee alsoC imap>utf=>encode./;
imap>utf=>encode
>P&P 7_^ 7;3;14A P&P 8 A P&P 4?
imapZut(:Zencode 22 5onverts .O2MM4921 string to modi(ied @,F2: teFt
Kescription
string imap>utf=>encode > string data ?
5onverts #ata to modi(ied @,F2: teFt; Note that #ata is eFpected to #e encoded in .O2MM4921;
,his is needed to encode mail#oF names that contain certain characters Ehich are not in range o(
printa#le A5.. characters;
,he modi(ied @,F2: encoding is de(ined in RF5 03K3A section 4;1;7 >original @,F2: Eas de(ined in
RF51K80?;
ee alsoC imap>utf=>decode./;
imap>utfN
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
imapZut(M 22 5onverts M.M+2encoded teFt to @,F2M
Kescription
string imap>utfN > string mimeZencodedZteFt ?
5onverts the given m6me_enco#e#_te8t to @,F2M; M.M+ encoding method and the @,F2M
speci(ication are descri#ed in RF5038: and RF50388 respectively;
:IC. Jpciones e Informaci"n de PHP
Introducci"n
+stas (unciones le dan la capacidad de o#tener una gran cantidad de in(ormaci-n so#re P&P mismoA
p;e'; con(iguraci-n de tiempo de e'ecuci-nA eFtensiones cargadasA versiones y mucho m*s; ,am#i<n
encontrar* (unciones para esta#lecer opciones para su int<rprete P&P en e'ecuci-n; La /ue es
pro#a#lemente la (unci-n me'or conocida de P&P 2 phpinfo./ 2 puede ser encontrada a/u);
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones de Configuraci"n del sistema de informaci"n PHP
Nombre Predeterminado Modificable
assert;active =1= P&PZ.N.ZALL
assert;#ail =3= P&PZ.N.ZALL
assert;Earning =1= P&PZ.N.ZALL
assert;call#ac" N@LL P&PZ.N.ZALL
assert;/uietZeval =3= P&PZ.N.ZALL
ena#leZdl =1= P&PZ.N.Z%,+M
maFZeFecutionZtime =73= P&PZ.N.ZALL
maFZinputZtime =K3= P&PZ.N.ZALL
magicZ/uotesZgpc =1=
P&PZ.N.ZP+RD.Rl
P&PZ.N.Z%,+M
magicZ/uotesZruntim
e
=3= P&PZ.N.ZALL
Para m*s detalles so#re las constantes P&PZ.N.ZV y su de(inici-nA vea ini>set./;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
assert.act6e boolean
&a#ilitar la evaluaci-n assert./;
assert.1a6l boolean
,erminar la e'ecuci-n del script cuando las aserciones (allen;
assert.7arn6nE boolean
Producir una advertencia P&P para cada aserci-n (allida;
assert.call1ac> string
Funci-n de usuario a llamar cuando las aserciones (allen;
assert.@u6et_eal boolean
@sar el valor actual de error>reporting./ durante la evaluaci-n de eFpresiones asertivas; i se
ha#ilitaA no se muestran errores durante la evaluaci-n >implicit errorZreporting>3??; i se
desha#ilitaA los errores son mostrados de acuerdo a los valores de error>reporting./;
ena1le_#l boolean
+sta directiva es Btil en realidad Bnicamente en la versi-n de m-dulo de Apache de P&P;
Puede ha#ilitar y desha#ilitar la carga din*mica de eFtensiones P&P con dl./ para cada
servidor virtual o por directorio;
La raz-n principal para desha#ilitar la carga din*mica es la seguridad; 5on la carga din*micaA
es posi#le ignorar todas las restricciones openZ#asedir; +l comportamiento predeterminado es
permitir la carga din*micaA eFcepto cuando se usa sa(e mode; +n sa(e modeA siempre es
imposi#le usar dl./;
ma8_e8ecut6on_t6me integer
+ste valor de(ine el tiempo m*Fimo en segundos /ue se le permite correr a un scriptA antes de
/ue sea detenido por el int<rprete; +sto ayuda a prevenir /ue scripts po#remente escritos
congestionen el servidor; +l valor predeterminado es R0;
+l tiempo m*Fimo de e'ecuci-n no es a(ectado por llamadas del sistemaA operaciones de
secuencias etc; Por (avor consulte la (unci-n set>time>limit./ para m*s detalles;
No puede modi(icar este par*metro con ini>set./ cuando est* corriendo #a'o sa(e mode; +l
Bnico modo de evitar este contratiempo es desha#ilitar el modo seguroA o cam#iar el tiempo
l)mite en php.ini;
u servidor Ee# puede tener otros tiempos de espera; Por e'emploA Apache tiene la directiva
T6meoutA .. tiene la (unci-n timeout 5G.A y am#os valores predeterminados son de 733
segundos; $ea la documentaci-n del servidor Ee# para consultar su signi(icado;
ma8_6nput_t6me integer
+ste valor esta#lece el tiempo m*Fimo en segundos con el /ue cuenta un script para reci#ir
datos de entradaA como PO,A G+, y cargas de archivos; +l valor predeterminado es X0;
maE6c_@uotes_Epc boolean
+sta#lece el estado de magicZ/uotes para las operaciones GP5 >GetDPostD5oo"ie?; 5uando
magicZ/uotes se encuentra activoA todos los caracteres H >comilla2simple?A = >comilla do#le?A h
>#arra invertida? y N@Ls son escapados con una #arra invertida autom*ticamente;
Nota- i la directiva magicZ/uotesZsy#ase se encuentra activa tam#i<nA
so#rescri#ir* completamente el valor de magicZ/uotesZgpc; ,ener am#as
directivas activas /uiere decir /ue solo las comillas simples son escapadas como
<<; Las comillas do#lesA las #arras invertidas y N@Ls permanecer*n intactos y sin
escapar;
$ea tam#i<n get>magic>?uotes>gpc./;
maE6c_@uotes_runt6me boolean
i maE6c_@uotes_runt6me est* ha#ilitadoA la mayor)a de (unciones /ue devuelven datos de
alguna clase de (uente eFternaA incluyendo #ases de datos y archivos de teFtoA tendr*n las
comillas escapadas con #arras invertidas; i magicZ/uotesZsy#ase se encuentra ha#ilitado
tam#i<nA una comilla sencilla es escapada con una comilla sencilla en lugar de una #arra
invertida;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
Las constantes listadas a/ui est*n siempre disponi#les a trav<s del =nBcleo P&P=;
Tabla *. Constantes predefinidas de phpcredits./
Constante Calor Kescripci"n
5R+D.,ZGR
O@P
1 @na lista de los desarrolladores centrales
5R+D.,ZG+
N+RAL
0
5r<ditos generalesC DiseWo y concepto del lengua'eA autores de P&P y del
m-dulo AP.;
5R+D.,ZA
P.
8 @na lista de los m-dulos AP. de servidor para P&PA y sus autores;
5R+D.,ZMO
D@L+
M @na lista de m-dulos de eFtensi-n de P&PA y sus autores;
5R+D.,ZDO
5
1K Los cr<ditos para el e/uipo de documentaci-n;
5R+D.,ZF@
LLPAG+
70
@sualmente usado en com#inaci-n con las otras #anderas; .ndica /ue es
necesario imprimir una p*gina &,ML independiente /ue incluya la
in(ormaci-n indicada por las otras #anderas;
5R+D.,ZOA K8 Los cr<ditos para el e/uipo de revisi-n de calidad;
5R+D.,ZAL
L
21
,odos los cr<ditosA Walente a usarC 5R+D.,ZDO5 R
5R+D.,ZG+N+RAL R 5R+D.,ZGRO@P R 5R+D.,ZMOD@L+
R 5R+D.,ZOA 5R+D.,ZF@LLPAG+; Genera una p*gina &,ML
independiente completa con las eti/uetas apropiadas; +ste es el valor
predeterminado;
Tabla 7. Constantes phpinfo./
Constante Calor Kescripci"n
.NFOZG+N+RAL 1
La l)nea de con(iguraci-nA u#icaci-n de php.iniA (echa de
compilaci-nA ervidor Le#A istema y m*s;
.NFOZ5R+D., 0 5r<ditos P&P; $ea tam#i<n phpcredits./;
.NFOZ5ONF.G@RA,.
ON
8
$alores Locales y Maestros actuales de las directivas P&P; $ea
tam#i<n ini>get./;
.NFOZMOD@L+ M M-dulos cargados y sus respectivos par*metros;
.NFOZ+N$.RONM+N
,
1K
.n(ormaci-n de $aria#les de +ntornoA /ue tam#i<n est*
disponi#le en '_EN(;
Constante Calor Kescripci"n
.NFOZ$AR.ABL+ 70
Muestra todas las varia#les prede(inidas de +GP5 >+ntornoA
G+,A PO,A 5oo"ieA ervidor?;
.NFOZL.5+N+ K8 .n(ormaci-n de la Licencia P&P; $ea tam#i<n el (a/ de licencia;
.NFOZALL 21 Muestra todo lo anterior; +ste es el valor predeterminado;
ASSERT_ACTI$E >integer?
ASSERT_CALL(AC& >integer?
ASSERT_(AIL >integer?
ASSERT_"ARNIN# >integer?
ASSERT_.UIET_E$AL >integer?
Tabla de contenidos
assertZoptions 22 +sta#lecerDo#tener las varias #anderas de aserci-n
assert 22 Revisa si la aserci-n es evaluada a FALSE
dl 22 5arga una eFtensi-n P&P en tiempo de e'ecuci-n
eFtensionZloaded 22 averigua si una eFtensi-n ha sido cargada
getZc(gZvar 22 O#tiene el valor de una opci-n de con(iguraci-n de P&P
getZcurrentZuser 22 O#tiene el nom#re del propietario del script P&P actual;
getZde(inedZconstants 22 Devuelve una matriz asociativa con los nom#res de todas las constantes y
sus valores
getZeFtensionZ(uncs 22 Devuelve una matriz con los nom#res de (unciones de un m-dulo
getZincludeZpath 22 O#tiene la opci-n de con(iguraci-n includeZpath actual
getZincludedZ(iles 22 Devuelve una matriz con los nom#res de los archivos incluidos o re/ueridos
getZloadedZeFtensions 22 Devuelve una matriz con los nom#res de todos los m-dulos compilados y
cargados
getZmagicZ/uotesZgpc 22 O#tiene el valor de la con(iguraci-n activa actual de las comillas m*gicas
gpc;
getZmagicZ/uotesZruntime 22 O#tiene el valor de la con(iguraci-n activa actual de
magicZ/uotesZruntime;
getZre/uiredZ(iles 22 Alias de get>included>files./
getenv 22 O#tiene el valor de una varia#le de entorno
getlastmod 22 Recupera la (echaDhora de la Bltima modi(icaci-n de la p*gina;
getmygid 22 O#tener el G.D del dueWo del script P&P
getmyinode 22 Recupera el inodo del script actual;
getmypid 22 O#tiene el .D de proceso de P&P;
getmyuid 22 O#tiene el @.D del propietario del script P&P;
getopt 22 O#tiene opciones de la lista de argumentos desde la l)nea de comandos
getrusage 22 O#tiene el consumo actual de recursos;
iniZalter 22 Alias de ini>set./
iniZgetZall 22 O#tiene todas las opciones de con(iguraci-n
iniZget 22 O#tiene el valor de una opci-n de con(iguraci-n
iniZrestore 22 Resta#lece el valor de una opci-n de con(iguraci-n
iniZset 22 +sta#lece el valor de una opci-n de con(iguraci-n
main 22 P*gina predeterminada para main./
memoryZgetZusage 22 Devuelve la cantidad de memoria u#icada para P&P
phpZiniZscannedZ(iles 22 Devolver una lista de archivos ;ini procesados del directorio ini adicional
phpZlogoZguid 22 O#tiene el guid logo
phpZsapiZname 22 Devuelve el tipo de inter(az entre el servidor Ee# y P&P
phpZuname 22 Devuelve in(ormaci-n so#re el sistema operativo en el /ue est* corriendo P&P
phpcredits 22 .mprime los cr<ditos de P&P
phpin(o 22 Recupera gran cantidad de in(ormaci-n de P&P;
phpversion 22 O#tiene la versi-n actual de P&P;
putenv 22 +sta#lece el valor de una varia#le de entorno;
restoreZincludeZpath 22 Resta#lece el valor de la opci-n de con(iguraci-n includeZpath
setZincludeZpath 22 +sta#lece la opci-n de con(iguraci-n includeZpath
setZmagicZ/uotesZruntime 22 +sta#lece el valor de la con(iguraci-n activa actual de
magicZ/uotesZruntime;
setZtimeZlimit 22 limita el tiempo m*Fimo de e'ecuci-n
versionZcompare 22 5ompara dos cadenas de nBmero de versi-n =P&P2est*ndar=
zendZlogoZguid 22 O#tiene el guid zend
zendZversion 22 O#tiene la versi-n del motor Iend actual
assert>options
>P&P 8 A P&P 4?
assertZoptions 22 +sta#lecerDo#tener las varias #anderas de aserci-n
Kescripci"n
miFed assert>options > int /ue PA miFed valorQ ?
Mediante el uso de assert>options./A usted puede esta#lecer las varias opciones de control de assert
./A o simplemente consultar sus valores actuales;
Tabla !. Jpciones de Assert
opci"n parmetro(ini predeterminado descripci"n
A+R,ZA5,.$+ assert;active 1 ha#ilitar la evaluaci-n assert./
A+R,ZLARN.
NG
assert;Earning 1
generar una advertencia P&P para cada
aserci-n (allida
A+R,ZBA.L assert;#ail 3
terminar la e'ecuci-n cuando las
aserciones (allen
A+R,ZO@.+,Z
+$AL
assert;/uietZev
al
3
desha#ilitar errorZreporting durante la
evaluaci-n de eFpresiones de aserci-n
A+R,Z5ALLB
A5S
assert;call#ac" >NULL?
(unci-n de usuario a llamar cuando las
aserciones (allen
assert>options./ devolver* el valor original de cual/uier opci-nA o FALSE si ocurren (allos;
assert
>P&P 8 A P&P 4?
assert 22 Revisa si la aserci-n es evaluada a FALSE
Kescripci"n
int assert > miFed asercion ?
assert./ revisar* la aserc6on dada y tomar* una acci-n apropiada si su resultado es FALSE;
i la aserc6on es dada como una cadenaA <sta ser* evaluada como c-digo P&P por assert./; Las
venta'as de una aserc6on tipo cadena son menor so#recarga cuando el che/ueo de aserciones se
encuentre desha#ilitadoA y la producci-n de mensa'es /ue contengan la eFpresi-n aserc6on cuando
<sta (alle; +sto /uiere decir /ue si pasa una condici-n #ooleana como aserc6onA <sta condici-n no
aparecer* como par*metro de la (unci-n de aserci-nA la cual pudo ha#er de(inido con la (unci-n
assert>options./A la condici-n es convertida en una cadena antes de llamar tal (unci-n gestoraA y el
valor #ooleano FALSE es convertido como una cadena vac)a;
Las aserciones de#en ser usadas como una caracter)stica de depuraci-n Bnicamente; Puede usarlas
para realizar che/ueos de integridad /ue prue#en condiciones /ue de#er)an ser siempre TRUE y /ue
indi/uen algunos errores de programaci-n si no se cumplenA o /ue che/ueen por la presencia de
ciertas caracter)sticas como las (unciones de eFtensi-nA o ciertos l)mites y caracter)sticas de sistema;
Las aserciones no de#er)an ser usadas para operaciones normales de tiempo de e'ecuci-n como
che/ueos de par*metros de entrada; 5omo regla de oroA su c-digo de#er)a tra#a'ar correctamente
siempre si el che/ueo de aserciones no est* activado;
+l comportamiento de assert./ puede ser con(igurado por assert>options./ o mediante los
par*metros ;ini descritos en su respectiva p*gina del manual;
La (unci-n assert>options./ o la directiva de con(iguraci-n A+R,Z5ALLBA5S permiten el uso
de llamadas de retorno para gestionar las aserciones (allidas;
Las llamadas de retorno de assert./ son particularmente Btiles para productos /ue prue#en procesos
automatizados de generaci-nA ya /ue le permitin capturar (*cilmente el c-digo pasado a la aserci-nA
'unto con in(ormaci-n so#re d-nde se cre- la aserci-n; Aun/ue esta in(ormaci-n puede ser
capturada mediante otros m<todosA fel uso de aserciones lo hace mucho m*s r*pido y sencilloa
La llamada de retorno de#e aceptar tres argumentos; +l primer argumento contendr* el archivo en el
/ue ha (allado la aserci-n; +l segundo argumento contendr* la l)nea en la /ue (all- la aserci-nA y el
tercer argumento contendr* la eFpresi-n /ue (all- >si est* disponi#le 2 valores literales como 1 o
=dos= no ser*n pasados a trav<s de este argumento?;
E'emplo !. Festionar una aserci"n fallida con una funci"n personali6ada
<?php
// ,cti=ar las aserciones y hacerlas calladas
assert%options3,&&E'*%,R*4(E, 69;
assert%options3,&&E'*%7,'.4.-, 29;
assert%options3,&&E'*%N+4E*%E(,O, 69;
// Rrear una #uncion Eestora
#unction mi%Eestor%de%asercion3$archi=o, $linea, $codiEo9
:
echo "<hr>,serci&oacute;n Sallida@
,rchi=o M$archi=oM<br />
Oinea M$lineaM<br />
RodiEo M$codiEoM<br /><hr />";
;
// Ron#iEurar la llamada de retorno
assert%options3,&&E'*%R,OOZ,R], Mmi%Eestor%de%asercionM9;
// Rrear una aserci&oacute;n Que deber&iacute;a #allar
assert3MmysQl%Query 3""9M9;
?>
dl
>P&P 7A P&P 8 A P&P 4?
dl 22 5arga una eFtensi-n P&P en tiempo de e'ecuci-n
Kescripci"n
int dl > string #i#lioteca ?
5arga la eFtensi-n P&P dada por el par*metro 161l6oteca; +l par*metro 161l6oteca es dn6camente el
nom#re de archivo de la eFtensi-n a cargarA el cual tam#i<n depende de su plata(orma; Por e'emploA
la eFtensi-n soc"ets >si (ue compilada como m-duloA f/ue no es el comportamiento
predeterminadoa? podr)a llamarse socIets.so en plata(ormas @niFA mientras /ue se llama
php%socIets.dll en la plata(orma EindoEs;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo; i la (uncionalidad
de carga de m-dulos no est* disponi#le >ver Nota? o ha sido desha#ilitada >ya sea mediante la
desactivaci-n de ena1le_#l o activando sa(e mode en php.ini? un E_ERROR es producido y se
detiene la e'ecuci-n; i dl./ (alla por/ue la #i#lioteca especi(icada no pudo ser cargadaA se emite un
mensa'e E_"ARNIN# en compaW)a del FALSE;
@se e+tension>loaded./ para pro#ar si una cierta eFtensi-n ya se encuentra disponi#le o no; +sto
(unciona tanto con eFtensiones integradas como con las cargadas din*micamente >ya sea mediante
php.ini o dl./?;
La (unci-n dl./ es o#soleta a partir de P&P 4; @se el m<todo de las Directivas de 5arga de
+Ftensiones en su lugar;
E'emplo !. E'emplos de dl./
<?php
// Ejemplo de carEa de una extension en base al &?
i# 3!extension%loaded3MsQliteM99 :
i# 3strtoupper3substr3H%?&, 2, <9 >> M74.M99 :
dl3Mphp%sQlite.dllM9;
; else :
dl3MsQlite.soM9;
;
;
// ?, usando la constante H%&HO4Z%&+SS4X Que esta disponible a
// partir de H 1.<.2
i# 3!extension%loaded3MsQliteM99 :
$pre#ijo > 3H%&HO4Z%&+SS4X >> MdllM9 ? Mphp%M @ MM;
dl3$pre#ijo . MsQlite.M . H%&HO4Z%&+SS4X9;
;
?>
+l directorio desde donde es cargada la eFtensi-n depende de su plata(ormaC
LindoEs 2 i no est* de(inida eFpl)citamente en php.iniA la eFtensi-n es cargada desde
c@Vphp1VextensionsV por de(ecto;
@niF 2 i no est* de(inida eFpl)citamente en php.iniA el directorio de eFtensiones predeterminado
depende de
si P&P ha sido compilado con ==ena1le=#e1uE o no
si P&P ha sido compilado con soporte I, >Iend ,hread a(ety? >eFperimental? o no
el valor interno ^END_MODU4E_,+0_NO actual >nBmero interno de AP. de m-dulo IendA
el cual es #*sicamente la (echa en la /ue ocurri< un cam#io signi(icativo en la AP. de
m-duloA p;e'; 20010O01?
,omando en cuenta lo anteriorA el directorio reci#e el valor predeterminado de $#6r=
6nstalac6on&/l61/php/e8tens6ons/ $#e1uE=o=no&=$Dts=o=no&=^END_MODU4E_,+0_NOA p;e'; /
usr/local/php/lib/php/extensions/debuEFnonF0tsFC2262K26 o /
usr/local/php/lib/php/extensions/noFdebuEF0tsFC2262K26;
Nota- La (unci-n dl./ no es soportada en servidores Le# multi2hilos; @se la sentencia
e8tens6ons en su php.ini cuando tra#a'e so#re ese tipo de entornos; in em#argoA flas
versiones C-0 y C40 no son a(ectadasa
Nota- dl./ es sensi#le a mayBsculas y minBsculas en plata(ormas @niF;
Nota- +sta (unci-n no est* ha#ilitada en sa(e2mode >modo2seguro?
$ea tam#i<n Directivas de 5arga de +Ftensi-n y e+tension>loaded./;
e+tension>loaded
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
eFtensionZloaded 22 averigua si una eFtensi-n ha sido cargada
Kescripci"n
#ool e+tension>loaded > string name ?
Devuelve TRUE si la eFtensi-n identi(icada por name >nom#re? est* cargada; Puede ver el nom#re
de varias eFtensiones utilizando phpinfo./;
$<ase tam#i<n phpinfo./;
Nota- +sta (unci-n (ue aWadida en 7;3;13;
get>cfg>5ar
>P&P 7A P&P 8 A P&P 4?
getZc(gZvar 22 O#tiene el valor de una opci-n de con(iguraci-n de P&P
Kescripci"n
string get>cfg>5ar > string nom#reZvar ?
Devuelve el valor actual de la opci-n de con(iguraci-n de P&P indicada por nom1re_arA o FALSE
si ocurre un error;
No devolver* in(ormaci-n de con(iguraci-n de(inida cuando P&P (uera compiladoA ni leer desde un
archivo de con(iguraci-n de Apache >usando las directivas php7Zcon(igurationZoption?;
Para che/uear si el sistema est* usando un archivo de con(iguraci-nA intente recuperar el valor del
par*metro de con(iguraci-n c(gZ(ileZpath; i <ste se encuentra disponi#leA /uiere decir /ue un
archivo de con(iguraci-n est* siendo usado;
$ea tam#i<n ini>get./;
get>current>user
>P&P 7A P&P 8 A P&P 4?
getZcurrentZuser 22 O#tiene el nom#re del propietario del script P&P actual;
Kescripci"n
string get>current>user > void ?
Devuelve el nom#re del propietario del script P&P actual;
$<ase tam#i<n getmyuid./A getmypid./A getmyinode./A y getlastmod./;
get>defined>constants
>P&P 8 _^ 8;1;3A P&P 4?
getZde(inedZconstants 22 Devuelve una matriz asociativa con los nom#res de todas las constantes y
sus valores
Kescripci"n
array get>defined>constants > PmiFed categorizarQ ?
+sta (unci-n devuelve los nom#res y valores de todas las constantes de(inidas actualmente; +sto
incluye a/uellas creadas por eFtensionesA asi como a/uellas creadas con la (unci-n define./;
Por e'emploA la siguiente l)neaC
<?php
print%r3Eet%de#ined%constants399;
?>
imprimir* una lista comoC
,rray
3
)E%E''?'/ >> 6
)E%7,'.4.-/ >> C
)E%,'&E/ >> 1
)E%.?*4RE/ >> J
)E%R?'E%E''?'/ >> 6G
)E%R?'E%7,'.4.-/ >> <C
)E%R?"4OE%E''?'/ >> G1
)E%R?"4OE%7,'.4.-/ >> 6CJ
)E%+&E'%E''?'/ >> C5G
)E%+&E'%7,'.4.-/ >> 56C
)E%+&E'%.?*4RE/ >> 62C1
)E%,OO/ >> C21H
)*'+E/ >> 6
9
A partir de P&P 4A un par*metro adicionalA cateEor6DarA puede ser pasadoA causando /ue esta
(unci-n devuelva una matriz multi2dimensional con categor)as en las claves de la primera
dimensi-n y constantes y sus valores en la segunda dimensi-n;
<?php
de#ine3""4%R?.&*,.*E", 69;
print%r3Eet%de#ined%constants3true99;
?>
+l resultado del e'emplo seria algo similar aC
,rray
3
)internal/ >> ,rray
3
)E%E''?'/ >> 6
)E%7,'.4.-/ >> C
)E%,'&E/ >> 1
)E%.?*4RE/ >> J
)E%R?'E%E''?'/ >> 6G
)E%R?'E%7,'.4.-/ >> <C
)E%R?"4OE%E''?'/ >> G1
)E%R?"4OE%7,'.4.-/ >> 6CJ
)E%+&E'%E''?'/ >> C5G
)E%+&E'%7,'.4.-/ >> 56C
)E%+&E'%.?*4RE/ >> 62C1
)E%,OO/ >> C21H
)*'+E/ >> 6
9
)pcre/ >> ,rray
3
)'E-%,**E'.%?'LE'/ >> 6
)'E-%&E*%?'LE'/ >> C
)'E-%?SS&E*%R,*+'E/ >> C5G
)'E-%&O4*%.?%E"*P/ >> 6
)'E-%&O4*%LEO4"%R,*+'E/ >> C
)'E-%&O4*%?SS&E*%R,*+'E/ >> 1
)'E-%-'E%4.(E'*/ >> 6
9
)user/ >> ,rray
3
)"4%R?.&*,.*E/ >> 6
9
9
Nota- +l valor del par*metro cateEor6Dar es irrelevanteA s-lo se considera su presencia;
$ea tam#i<n defined./A get>loaded>e+tensions./A get>defined>functions./A y get>defined>5ars./;
get>e+tension>funcs
>P&P 8 A P&P 4?
getZeFtensionZ(uncs 22 Devuelve una matriz con los nom#res de (unciones de un m-dulo
Kescripci"n
array get>e+tension>funcs > string nom#reZmodulo ?
+sta (unci-n devuelve los nom#res de todas las (unciones de(inidas en el m-dulo indicado por
nom1re_mo#ulo;
Nota- +l par*metro nom1re_mo#ulo de#e estar en m6ndsculas;
Por e'emploA las siguientes l)neas
<?php
print%r3Eet%extension%#uncs3"xml"99;
print%r3Eet%extension%#uncs3"Ed"99;
?>
imprimir*n una lista de las (unciones en los m-dulos 8ml y E# respectivamente;
$ea tam#i<nC get>loaded>e+tensions./
get>include>path
>P&P 8 _^ 8;7;3A P&P 4?
getZincludeZpath 22 O#tiene la opci-n de con(iguraci-n includeZpath actual
Kescripci"n
string get>include>path > void ?
O#tiene el valor actual de la opci-n de con(iguraci-n includeZpath;
E'emplo !. E'emplo de get>include>path./
<?php
// Sunciona a partir de H 1.<.2
echo Eet%include%path39;
// Sunciona en todas las =ersiones de H
echo ini%Eet3Minclude%pathM9;
?>
$ea tam#i<n ini>get./A restore>include>path./A set>include>path./A y include./;
get>included>files
>P&P 8 A P&P 4?
getZincludedZ(iles 22 Devuelve una matriz con los nom#res de los archivos incluidos o re/ueridos
Kescripci"n
array get>included>files > void ?
Devuelve una matriz de nom#res de todos los archivos /ue han sido incluidos usando include./A
include>once./A re?uire./ o re?uire>once./;
+l script llamado originalmente es considerado un =archivo incluido=A as) /ue ser* listado 'unto con
los archivos re(erenciados por la (amilia de (unciones include./;
Los archivos /ue son incluidos o re/ueridos mBltiples veces solo aparecen una vez en la matriz
devuelta;
Nota- Los archivos incluidos usando la directiva de con(iguraci-n auto_prepen#_96le no
se incluyen en la matriz devuelta;
E'emplo !. E'emplo de get>included>files./ .a!.php/
<?php
include Mtest6.phpM;
include%once MtestC.phpM;
reQuire Mtest<.phpM;
reQuire%once Mtest1.phpM;
$archi=os%incluidos > Eet%included%#iles39;
#oreach 3$archi=os%incluidos as $nombre%archi=o9 :
echo "$nombre%archi=oVn";
;
?>
generar* la siguiente salidaC
abc.php
test6.php
testC.php
test<.php
test1.php
Nota- +n P&P 8;3;1pl0 y versiones anterioresA get>included>files./ asum)a /ue los
archivos re/ueridos (inaliza#an en la eFtensi-n .phpX otras eFtensiones no ser*n
devueltas; La matriz devuelta por get>included>files./ era una matriz asociativa y solo
lista#a los archivos incluidos por include./ y include>once./;
$ea tam#i<n include./A include>once./A re?uire./A re?uire>once./A y get>re?uired>files./;
get>loaded>e+tensions
>P&P 8 A P&P 4?
getZloadedZeFtensions 22 Devuelve una matriz con los nom#res de todos los m-dulos compilados y
cargados
Kescripci"n
array get>loaded>e+tensions > void ?
+sta (unci-n devuelve los nom#res de todos los m-dulos compilados y cargados en el int<rprete
P&P;
Por e'emploA la siguiente l)nea
<?php
print%r3Eet%loaded%extensions399;
?>
imprimir* una lista comoC
,rray
3
)2/ >> xml
)6/ >> 8ddx
)C/ >> standard
)</ >> session
)1/ >> posix
)5/ >> pEsQl
)G/ >> pcre
)H/ >> Ed
)J/ >> #tp
)K/ >> db
)62/ >> calendar
)66/ >> bcmath
9
$ea tam#i<n get>e+tension>funcs./A e+tension>loaded./A dl./A y phpinfo./;
get>magic>?uotes>gpc
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
getZmagicZ/uotesZgpc 22 O#tiene el valor de la con(iguraci-n activa actual de las comillas m*gicas
gpc;
Kescripci"n
long get>magic>?uotes>gpc > void ?
Devuelve el valor de la con(iguraci-n activa actual de magicZ/uotesZgpc; >3 desactivadoA 1
activado?
$<ase tam#i<n get>magic>?uotes>runtime./A set>magic>?uotes>runtime./;
get>magic>?uotes>runtime
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
getZmagicZ/uotesZruntime 22 O#tiene el valor de la con(iguraci-n activa actual de
magicZ/uotesZruntime;
Kescripci"n
long get>magic>?uotes>runtime > void ?
Devuelve el valor de la con(iguraci-n activa actual de magicZ/uotesZruntime; >3 desactivadoA 1
activado?
$<ase tam#i<n get>magic>?uotes>gpc./A set>magic>?uotes>runtime./;
get>re?uired>files
getZre/uiredZ(iles 22 Alias de get>included>files./
Kescripci"n
+sta (unci-n es un alias de get>included>files./;
geten5
>P&P 7A P&P 8 A P&P 4?
getenv 22 O#tiene el valor de una varia#le de entorno
Kescripci"n
string geten5 > string varname ?
Devuelve el valor de la varia#le de entorno arnameA o FALSE en caso de error;
$ip > Eeten=3"'E"?*E%,LL'"9; // Eet the ip number o# the user
Puede ver una lista de todas las varia#les de entorno utilizando phpinfo./; Puede encontrar el
signi(icado de la mayor)a echando un vistazo en 5G. speci(ication >especi(icaci-n 5G.?A
especialmente en page on environmental varia#les >p*gina de varia#les de entorno?;
getlastmod
>P&P 7A P&P 8 A P&P 4?
getlastmod 22 Recupera la (echaDhora de la Bltima modi(icaci-n de la p*gina;
Kescripci"n
int getlastmod > void ?
Devuelve la (echaDhora de la Bltima modi(icaci-n de la p*gina actual; +l valor devuelto est* en
(ormato de (echaDhora @niFA adecuado para /ue sirva a date./; Devuelve FALSE en caso de error;
E'emplo !. e'emplo getlastmod./
// outputs e.E. MOast modi#ied@ "arch 21 6KKJ C2@1<@5K.M
echo "Oast modi#ied@ ".date3 "S d P H@i@s.", Eetlastmod39 9;
$<ase tam#i<n date./A getmyuid./A get>current>user./A getmyinode./A y getmypid./;
getmygid
>P&P 8 _^ 8;1;3A P&P 4?
getmygid 22 O#tener el G.D del dueWo del script P&P
Kescripci"n
int getmygid > void ?
Devuelve el .D de grupo del script actualA o FALSE en caso de (allo;
$ea tam#i<n getmyuid./A getmypid./A get>current>user./A getmyinode./A y getlastmod./;
getmyinode
>P&P 7A P&P 8 A P&P 4?
getmyinode 22 Recupera el inodo del script actual;
Kescripci"n
int getmyinode > void ?
Devuelve el inodo del script actualA o FALSE en caso de error;
$<ase tam#i<n getmyuid./A get>current>user./A getmypid./A y getlastmod./;
getmypid
>P&P 7A P&P 8 A P&P 4?
getmypid 22 O#tiene el .D de proceso de P&P;
Kescripci"n
int getmypid > void ?
Devuelve el .D del proceso P&P actualA o FALSE en caso de error;
Advierta /ue cuando se e'ecuta como un m-dulo de servidorA di(erentes llamadas del script no
garantizan /ue tengan distintos pids;
$<ase tam#i<n getmyuid./A get>current>user./A getmyinode./A y getlastmod./;
getmyuid
>P&P 7A P&P 8 A P&P 4?
getmyuid 22 O#tiene el @.D del propietario del script P&P;
Kescripci"n
int getmyuid > void ?
Devuelve el .D de usuario del script actualA o FALSE en caso de error;
$<ase tam#i<n getmypid./A get>current>user./A getmyinode./A y getlastmod./;
getopt
>P&P 8 _^ 8;7;3A P&P 4?
getopt 22 O#tiene opciones de la lista de argumentos desde la l)nea de comandos
Kescripci"n
array getopt > string opciones PA array opcZlargasQ ?
Devuelve una matriz asociativa con pare'as opci-n D argumento en #ase al (ormato de opciones
especi(icado en opc6onesA o FALSE en caso de (allo;
+n plata(ormas /ue tienen la (unci-n de 5 getoptZlongA pueden especi(icarse opciones largas con el
par*metro opc_larEas >a partir de P&P 8;7;3?;
<?php
// procesar la linea de comandos 3$-O?Z,O&)MarE=M/9
$opciones > Eetopt3"#@hp@"9;
?>
+l par*metro opc6ones puede contener los siguientes elementosC caracteres individualesA y caracteres
seguidos de dos puntos para indicar /ue sigue un argumento /ue declara una opci-n; Por e'emploA la
cadena 8 reconoce una opci-n =8A y una cadena 8: reconoce una opci-n y un argumento =8
arEumento; No importa si un argumento incluye espacio en #lanco al comienzo;
+sta (unci-n devolver* una matriz de pare'as opci-n D argumento; i una opci-n no tiene
argumentoA el valor ser* de(inido a FALSE;
Nota- +sta (unci-n no est* implementada en plata(ormas LindoEs;
getrusage
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
getrusage 22 O#tiene el consumo actual de recursos;
Kescripci"n
array getrusage > Pint EhoQ ?
+s un inter(ace a getrusage>0?; Devuelve un array asociativo /ue contiene los datos devueltos de la
llamada del sistema; i Eho >/uien? es 1A getrusage de#er)a llamarse con R@AG+Z5&.LDR+N;
,odas las entradas son accesi#les utilizando sus nom#res de campo documentados;
E'emplo !. E'emplo Fetrusage
$dat > EetrusaEe39;
echo $dat)"ru%ns8ap"/; U number o# s8aps
echo $dat)"ru%maj#lt"/; U number o# paEe #aults
echo $dat)"ru%utime.t=%sec"/; U user time used 3seconds9
echo $dat)"ru%utime.t=%usec"/; U user time used 3microseconds9
$ea la p*gina man de system para m*s detalles;
ini>alter
iniZalter 22 Alias de ini>set./
Kescripci"n
+sta (unci-n es un alias de ini>set./;
ini>get>all
>P&P 8 _^ 8;0;3A P&P 4?
iniZgetZall 22 O#tiene todas las opciones de con(iguraci-n
Kescripci"n
array ini>get>all > Pstring eFtensionQ ?
Devuelve todas las opciones de con(iguraci-n registradas como una matriz asociativa; i el
par*metro opcional e8tens6on est* de(inidoA devuelve solo las opciones espec)(icas para esa
eFtensi-n;
La matriz devuelta usa el nom#re de directiva como clave de la matrizA mientras los elementos de
esa matriz son Elo1al_alue >de(inido en php.ini?A local_alue >/uiz*s de(inido con ini>set./ o
en .htaccess?A y access >el nivel de acceso?; $ea la secci-n del manual so#re cam#ios de
con(iguraci-n para m*s in(ormaci-n so#re /u< /uieren decir los niveles de acceso;
Nota- +s posi#le /ue una directiva tenga mBltiples niveles de accesoA raz-n por la cual
access muestra los valores de m*scara de #its apropiados;
E'emplo !. )n e'emplo de ini>get>all./
<?php
$inis > ini%Eet%all39;
print%r3$inis9;
?>
La salida parcial podr)a verse comoC
,rray
3
)allo8%call%time%pass%re#erence/ >> ,rray
3
)Elobal%=alue/ >> 6
)local%=alue/ >> 6
)access/ >> G
9
)allo8%url%#open/ >> ,rray
3
)Elobal%=alue/ >> 6
)local%=alue/ >> 6
)access/ >> H
9
...
9
$ea tam#i<nC ini>get./A ini>restore./A ini>set./A get>loaded>e+tensions./A y phpinfo./;
ini>get
>P&P 8 A P&P 4?
iniZget 22 O#tiene el valor de una opci-n de con(iguraci-n
Kescripci"n
string ini>get > string nom#reZvar ?
Devuelve el valor de la opci-n de con(iguraci-n en caso de <Fito; i ocurre un (alloA como /ue se
realice una consulta por un valor /ue no eFisteA devolver* una cadena vac)a;
Cuando se consultan 5alores booleanos- @n valor ini #ooleano de o99 ser* devuelto
como una cadena vac)a o =3=A mientras /ue un valor ini #ooleano de on ser* devuelto
como =1=;
Cuando se consultan 5alores de tamaWo de memoria- Muchos valores ini de tamaWo
de memoriaA como uploadZmaFZ(ilesize son almacenados en el archivo php.ini en
notaci-n a#reviada; ini>get./ devolver* la cadena eFacta almacenada en el archivo
php.ini y NO su Walente integer; @sar (unciones aritm<ticas normales so#re <stos
valores no tendr)an los resultados /ue de otra (orma podr)an esperarse; +l siguiente
e'emplo muestra una manera de convertir la notaci-n corta de #ytesA de (orma similar al
modo /ue lo hace el c-digo (uente de P&P;
E'emplo !. Algunos e'emplos de ini>get./
<?php
/W
.uestro php.ini contiene los siEuientes parametros@
display%errors > ?n
reEister%Elobals > ?##
post%max%si0e > J"
W/
echo Mdisplay%errors > M . ini%Eet3Mdisplay%errorsM9 . "Vn";
echo MreEister%Elobals > M . ini%Eet3MreEister%ElobalsM9 . "Vn";
echo Mpost%max%si0e > M . ini%Eet3Mpost%max%si0eM9 . "Vn";
echo Mpost%max%si0e[6 > M . 3ini%Eet3Mpost%max%si0eM9[69 . "Vn";
echo Mpost%max%si0e en bytes > M . return%bytes3ini%Eet3Mpost%max%si0eM99;
#unction return%bytes3$=al9 :
$=al > trim3$=al9;
$ultimo > $=al:strlen3$=al9F6;;
s8itch3$ultimo9 :
case MIM@
case M]M@
return 3int9 $=al W 62C1;
breaI;
case MmM@
case M"M@
return 3int9 $=al W 621J5HG;
breaI;
de#ault@
return $=al;
;
;
?>
+ste script producir*C
display%errors > 6
reEister%Elobals > 2
post%max%si0e > J"
post%max%si0e[6 > K
post%max%si0e en bytes > J<JJG2J
$ea tam#i<n get>cfg>5ar./A ini>get>all./A ini>restore./A y ini>set./;
ini>restore
>P&P 8 A P&P 4?
iniZrestore 22 Resta#lece el valor de una opci-n de con(iguraci-n
Kescripci"n
void ini>restore > string nom#reZvar ?
Resta#lece una opci-n de con(iguraci-n dada a su valor original;
$ea tam#i<n ini>get./A ini>get>all./A y ini>set./;
ini>set
>P&P 8 A P&P 4?
iniZset 22 +sta#lece el valor de una opci-n de con(iguraci-n
Kescripci"n
string ini>set > string nom#reZvarA string nuevoZvalor ?
+sta#lece el valor de la opci-n de con(iguraci-n dada; Devuelve el valor antiguo en caso de <FitoA
FALSE en caso de (allo; La opcicpvwxn de con(iguraci-n mantendr* este nuevo valor durante la
e'ecuci-n del scriptA y ser* resta#lecido al (inal del script;
No todas las opciones disponi#les pueden ser modi(icadas usando ini>set./; &ay una lista de todas
las opciones disponi#les en el ap<ndice;
$ea tam#i<nC get>cfg>5ar./A ini>get./A ini>get>all./A y ini>restore./
main
main 22 P*gina predeterminada para main./
Kescripci"n
No eFiste una (unci-n llamada main./A eFcepto en el c-digo (uente de P&P; +n P&P 8;7;3A un
nuevo tipo de gesti-n de errores en las (uentes de P&P >phpZerrorZdocre(? (ue aWadido; @na
caracter)stica es la de proveer enlaces a la p*gina del manual en los mensa'es de error de P&P
cuando las directivas P&P htmlZerrors >ha#ilitada por de(ecto? y docre(Zroot >ha#ilitada por de(ecto
hasta P&P 8;7;0? est*n de(inidas;
Algunas veces los mensa'es de error se re(ieren a una p*gina del manual para la (unci-n main./A
raz-n por la /ue eFiste esta p*gina; Por (avor agregue un comentario de usuario a continuaci-n /ue
mencione /u< (unci-n de P&P caus- el error /ue enlaza#a con main./ y <sta ser* arreglada y
documentada apropiadamente;
Tabla !. Errores conocidos ?ue apuntan a main./
Nombre de
funci"n
@a no apunta hacia a?u a partir
de
include./ 8;7;0
include>once./ 8;7;0
re?uire./ 8;7;0
re?uire>once./ 8;7;0
$ea tam#i<n htmlZerrors y displayZerrors;
memory>get>usage
>P&P 8 _^ 8;7;0A P&P 4?
memoryZgetZusage 22 Devuelve la cantidad de memoria u#icada para P&P
Kescripci"n
int memory>get>usage > void ?
Devuelve la cantidad de memoriaA en #ytesA /ue est* siendo u#icada actualmente para su script P&P;
memory>get>usage./ se encontrar* de(inida Bnicamente si su instalaci-n de P&P es compilada con
la opci-n de con(iguraci-n ==ena1le=memor?=l6m6t;
E'emplo !. )n e'emplo de memory>get>usage./
<?php
// Este es solo un ejemplo, los numeros presentados seran di#erentes
// dependiendo de su sistema
echo memory%Eet%usaEe39 . "Vn"; // <GG12
$a > str%repeat3"Hola.", 1C1C9;
echo memory%Eet%usaEe39 . "Vn"; // 5HKG2
unset3$a9;
echo memory%Eet%usaEe39 . "Vn"; // <GH11
?>
$ea tam#i<n memoryZlimit;
php>ini>scanned>files
>P&P 8 _^ 8;7;3A P&P 4?
phpZiniZscannedZ(iles 22 Devolver una lista de archivos ;ini procesados del directorio ini adicional
Kescripci"n
string php>ini>scanned>files > void ?
php>ini>scanned>files./ devuelve una lista separada por comas de archivos de con(iguraci-n
procesados despu<s de php.ini; +stos archivos se encuentran en un directorio de(inido por la
opci-n ==76th=con96E=96le=scan=#6rA la cual es de(inida durante la compilaci-n;
Devuelve una cadenaA separada por comasA de archivos ;ini en caso de <Fito; i la directiva ==76th=
con96E=96les=scan=#6r no (ue de(inidaA se devuelve FALSE; i la opci-n esta#a de(inida y el
directorio esta#a vac)oA se devuelve una cadena vac)a; i un archivo es irreconoci#leA <ste aun ser*
incluido en la cadena devueltaA pero tam#i<n se producir* un error de P&P; +ste error de P&P ser*
visto tanto en tiempo de compilaci-n como cuando se usa php>ini>scanned>files./;
Los archivos de con(iguraci-n devueltos tam#i<n incluyen la rutaA tal y como (uera sido declarada
en la opci-n ==76th=con96E=96le=scan=#6r; AsimismoA cada coma es seguida por una nueva l)nea;
E'emplo !. )n e'emplo simple para listar los archi5os ini de5ueltos
<?php
i# 3$lista%archi=os > php%ini%scanned%#iles399 :
i# 3strlen3$lista%archi=os9 > 29 :
$archi=os > explode3M,M, $lista%archi=os9;
#oreach 3$archi=os as $archi=o9 :
echo "<li>" . trim3$archi=o9 . "</li>Vn";
;
;
;
?>
$ea tam#i<n ini>set./ y phpinfo./;
php>logo>guid
>P&P 8 A P&P 4?
phpZlogoZguid 22 O#tiene el guid logo
Kescripci"n
string php>logo>guid > void ?
Nota- +sta (uncionalidad (ue aWadida en P&P8 Beta 8;
php>sapi>name
>P&P 8 _^ 8;3;1A P&P 4?
phpZsapiZname 22 Devuelve el tipo de inter(az entre el servidor Ee# y P&P
Kescripci"n
string php>sapi>name > void ?
php>sapi>name./ devuelve una cadena en minBsculas /ue descri#e el tipo de inter(az entre el
servidor Ee# y P&P >AP. de ervidorA AP.?; +n P&P 5G.A esta cadena es =cgi=A en modZphp para
ApacheA esta cadena es =apache= y as) sucesivamente;
E'emplo !. E'emplo de php>sapi>name./
<?php
$tipo%sapi > php%sapi%name39;
i# 3substr3$tipo%sapi, 2, <9 >> McEiM9 :
echo "Est&aacute; usando H R-4Vn";
; else :
echo ".o est&aacute; usando H R-4Vn";
;
?>
php>uname
>P&P 8 _^ 8;3;0A P&P 4?
phpZuname 22 Devuelve in(ormaci-n so#re el sistema operativo en el /ue est* corriendo P&P
Kescripci"n
string php>uname > Pstring modoQ ?
php>uname./ devuelve una descripci-n del sistema operativo en el /ue P&P est* corriendo; Para el
nom#re de tan solo el sistema operativoA considere usar la constante PHP_OSA pero recuerde /ue
<sta constante contendr* el sistema operativo en el /ue P&P (ue comp6la#o;
+n @niFA la salida recae a desplegar la in(ormaci-n del sistema operativo en el /ue P&P (ue
compilado si no puede determinar el O corriendo actualmente;
mo#o de(ine la in(ormaci-n a ser devueltaC
<a<C +ste es el valor predeterminado; 5ontiene todos los modo en la secuencia *s n r m*;
<s<C +l nom#re del sistema operativo; P;e'; 3reeASD;
<n<C Nom#re del host; P;e'; localhost.e8ample.com;
<r<C Nom#re del lanzamiento; P;e'; S.1.2=RE4E,SE;
<<C .n(ormaci-n de versi-n; $ar)a #astante entre sistemas operativos;
<m<C ,ipo de m*/uina; P;e'; 6RPX;
E'emplo !. Algunos e'emplos de php>uname./
<?php
echo php%uname39;
echo H%?&;
/W ,lEunas posibles salidas@
Oinux localhost C.1.C6F2.6<mdI U6 Sri "ar 61 65@2J@2G E&* C22< iGJG
Oinux
SreeZ&L localhost <.CF'EOE,&E U65@ "on Lec 6H 2J@1G@2C -"* C226
SreeZ&L
7indo8s .* X.6 5.6 build CG22
74..*
W/
i# 3strtoupper3substr3H%?&, 2, <99 >>> M74.M9 :
echo M&iexcl;Este es un ser=idor usando 7indo8s!M;
; else :
echo M&iexcl;Este es un ser=idor Que no usa 7indo8s!M;
;
?>
,am#i<n eFisten algunas constantes de P&P prede(inidas relacionadas /ue podr)an resultar BtilesA
por e'emploC
E'emplo *. Algunos e'emplos de constantes relacionadas con el ,J
<?php
// Wnix
echo L4'ER*?'P%&E,',*?'; // /
echo H%&HO4Z%&+SS4X; // so
echo ,*H%&E,',*?'; // @
// 7inW
echo L4'ER*?'P%&E,',*?'; // V
echo H%&HO4Z%&+SS4X; // dll
echo ,*H%&E,',*?'; // ;
?>
$ea tam#i<n php5ersion./A php>sapi>name./A y phpinfo./;
phpcredits
>P&P 8 A P&P 4?
phpcredits 22 .mprime los cr<ditos de P&P
Kescripci"n
void phpcredits > Pint #anderaQ ?
+sta (unci-n imprime los cr<ditos /ue listan los desarrolladores de P&PA los m-dulosA etc; Genera
los c-digos &,ML apropiados para insertar la in(ormaci-n en una p*gina; 1an#era es opcionalA y su
valor predeterminado es CREDITS_ALL; Para generar una p*gina de cr<ditos personalizadaA puede
/ue /uiera usar el par*metro 1an#era; Por e'emploA para imprimir los cr<ditos generalesA usar* algo
as) en alguna parte de su c-digoC
<?php
phpcredits3R'EL4*&%-E.E',O9;
?>
% si desea imprimir la lista de desarrolladores centrales y del grupo de documentaci-nA en una
p*gina independienteA de#e usarC
<?php
phpcredits3R'EL4*&%-'?+ [ R'EL4*&%L?R& [ R'EL4*&%S+OO,-E9;
?>
% si desea em#e#er todos los cr<ditos en su p*ginaA entonces algo como lo siguiente lograr* el
cometidoC
<html>
<head>
<title>"i p&aacute;Eina de cr&eacute;ditos</title>
</head>
<body>
<?php
// alEo de codiEo suyo
phpcredits3R'EL4*&%,OO F R'EL4*&%S+OO,-E9;
// mas codiEo
?>
</body>
</html>
Tabla !. 1anderas de phpcredits./ predefinidas
nombre descripci"n
5R+D.,ZALL
,odos los cr<ditosA Walente a usarC 5R+D.,ZDO5 R 5R+D.,ZG+N+RAL
R 5R+D.,ZGRO@P R 5R+D.,ZMOD@L+ R 5R+D.,ZF@LLPAG+;
Genera una p*gina &,ML completa e independiente con las eti/uetas
apropiadas;
5R+D.,ZDO5

Los cr<ditos para el e/uipo de documentaci-n


5R+D.,ZF@L
LPAG+
@sualmente usada en con'unto con las otras #anderas; .ndica /ue es necesario
imprimir una p*gina &,ML completa e independienteA incluyendo la
in(ormaci-n indicada por las otras #anderas;
5R+D.,ZG+N
+RAL
5r<ditos generalesC DiseWo y concepto del lengua'eA autores de P&P 8;3 y
m-dulo AP.;
5R+D.,ZGRO
@P
@na lista de los desarrolladores centrales
5R+D.,ZMO
D@L+
@na lista de los m-dulos de eFtensi-n para P&PA y sus autores
5R+D.,ZAP
.
@na lista de m-dulos AP. de servidor para P&PA y sus autores
$ea tam#i<n phpinfo./A php5ersion./ y php>logo>guid./;
phpinfo
>P&P 7A P&P 8 A P&P 4?
phpin(o 22 Recupera gran cantidad de in(ormaci-n de P&P;
Kescripci"n
int phpinfo > void ?
O#tiene gran cantidad de in(ormaci-n so#re el estado actual de P&P; +sto incluye in(ormaci-n
so#re las opciones de compilaci-n y eFtensiones de P&PA la versi-n P&PA in(ormaci-n y entorno del
servidor >si est* compilado como un m-dulo?A el entorno P&PA in(ormaci-n so#re la versi-n del OA
rutasA opciones de con(iguraci-n maestras y localesA ca#eceras &,,PA y la Licencia PB#lica GN@;
$<ase tam#i<n php5ersion./;
php5ersion
>P&P 7A P&P 8 A P&P 4?
phpversion 22 O#tiene la versi-n actual de P&P;
Kescripci"n
string php5ersion > void ?
Devuelve una cadena de car*cteres /ue contiene la versi-n del parser P&P /ue est* e'ecut*ndose
actualmente;
E'emplo !. e'emplo php5ersion./
// prints e.E. MRurrent H =ersion@ <.2relFde=M
echo "Rurrent H =ersion@ ".php=ersion39;
$<ase tam#i<n phpinfo./;
puten5
>P&P 7A P&P 8 A P&P 4?
putenv 22 +sta#lece el valor de una varia#le de entorno;
Kescripci"n
void puten5 > string setting ?
AWade sett6nE LalorM al entorno;
E'emplo !. Establecer una Cariable de Entorno
puten=3"+.4N4L>$uniQid"9;
restore>include>path
>P&P 8 _^ 8;7;3A P&P 4?
restoreZincludeZpath 22 Resta#lece el valor de la opci-n de con(iguraci-n includeZpath
Kescripci"n
void restore>include>path > void ?
Resta#lece la opci-n de con(iguraci-n includeZpath de vuelta a su valor maestro originalA tal y como
se encuentre de(inido en php.ini
E'emplo !. E'emplo de restore>include>path./
<?php
echo Eet%include%path39; // .@/usr/local/lib/php
set%include%path3M/incM9;
echo Eet%include%path39; // /inc
// Sunciona a partir de H 1.<.2
restore%include%path39;
// Sunciona en todas las =ersiones de H
ini%restore3Minclude%pathM9;
echo Eet%include%path39; // .@/usr/local/lib/php
?>
$ea tam#i<n ini>restore./A set>include>path./A get>include>path./A e include./;
set>include>path
>P&P 8 _^ 8;7;3A P&P 4?
setZincludeZpath 22 +sta#lece la opci-n de con(iguraci-n includeZpath
Kescripci"n
string set>include>path > string nuevaZrutaZinclusion ?
+sta#lece la opci-n de con(iguraci-n includeZpath durante la duraci-n del script; Devuelve el valor
antiguo de includeZpath en caso de <FitoA o FALSE en caso de (allo;
E'emplo !. E'emplo de set>include>path./
<?php
// Sunciona a partir de H 1.<.2
set%include%path3M/incM9;
// Sunciona en todas las =ersiones de H
ini%set3Minclude%pathM, M/incM9;
?>
$ea tam#i<n ini>set./A get>include>path./A restore>include>path./A e include./;
set>magic>?uotes>runtime
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
setZmagicZ/uotesZruntime 22 +sta#lece el valor de la con(iguraci-n activa actual de
magicZ/uotesZruntime;
Kescripci"n
long set>magic>?uotes>runtime > int neEZsetting ?
+sta#lece el valor de la con(iguraci-n activa actual de magicZ/uotesZruntime; >3 desactivadoA 1
activado?
$<ase tam#i<n get>magic>?uotes>gpc./A get>magic>?uotes>runtime./;
set>time>limit
>P&P 7A P&P 8 A P&P 4?
setZtimeZlimit 22 limita el tiempo m*Fimo de e'ecuci-n
Kescripci"n
void set>time>limit > int seconds ?
+sta#lece el nBmero de segundos /ue se le permite a un script e'ecutarse; i <ste es alcanzadoA el
script devuelve un error de tipo (atal; +l l)mite por de(ecto es 73 segundos oA si eFisteA el valor
ma8_e8ecut6on_t6me de(inido en el php.ini; i seconds >segundos? se esta#lece a ceroA no se
impone ningBn l)mite;
5uando se llamaA set>time>limit./ reinicia el contador del timeout a cero; +n otras pala#rasA si el
timeout es el de por de(ecto de 73 segundosA y despu<s de 04 segundos de e'ecuci-n del script se
realiza una llamada setZtimeZlimit>03?A el script se e'ecutar* durante un total de 84 segundos antes
de alcanzar su l)mite;
A5iso
Advierta /ue set>time>limit./ no tiene e(ecto cuando P&P se e'ecuta en sa(e mode >modo seguro?;
No hay otra opci-n /ue /ue desactivar el modo seguro o cam#iar el l)mite de tiempo en el
php.ini;
Nota- La (unci-n set>time>limit./ y la directiva de con(iguraci-n maFZeFecutionZtime
s-lo a(ecta al tiempo de e'ecuci-n del script en s); 5ual/uier tiempo consumido en una
actividad /ue ocurre (uera de la e'ecuci-n del script as) como llamadas al sistema
utilizando la (unci-n system./A la (unci-n sleep./A consultas de #ase de datosA etc; no se
incluye para determinar el tiempo m*Fimo /ue lleva el script e'ecut*ndose;
5ersion>compare
>P&P 8 _^ 8;1;3A P&P 4?
versionZcompare 22 5ompara dos cadenas de nBmero de versi-n =P&P2est*ndar=
Kescripci"n
int 5ersion>compare > string version1A string version0 PA string operadorQ ?
5ersion>compare./ compara dos cadenas de nBmero de versi-n =P&P2estandarizadas=; +sto es Btil
si /uisiera escri#ir programas /ue tra#a'en solo en algunas versiones de P&P;
5ersion>compare./ devuelve 21 si la primera versi-n es in(erior a la segundaA 3 si son igualesA y R1
si la segunda es menor;
La (unci-n comienza por reemplazar _A = y Y con un punto . en las cadenas de versi-nA y tam#i<n
inserta puntos . antes y despu<s de cual/uier secuencia no num<ricaA de modo /ue por e'emplo
H8;7;0R51H se convierte en H8;7;0;R5;1H; Luego separa los resultados como si se usara eFplode>H;HA
Yver?; Luego compara las partes de iz/uierda a derecha; i una parte contiene cadenas de versi-n
especialesA <stas son gestionadas en el siguiente ordenC #e ` alpha ^ a ` 1eta ^ 1 ` RC ` pl; De
este modoA no solo las versiones con di(erentes nivelesA como H8;1H y H8;1;0H pueden ser comparadasA
sino /ue tam#i<n cual/uier versi-n espec)(ica de P&P /ue contenga un indicador de estado de
desarrollo;
i especi(ica el tercer argumento opcional opera#orA puede realizar prue#as por una relaci-n en
particular; Los operadores posi#les sonC $A ltA $:A leA &A EtA &:A EeA ::A :A e@A _:A $&A ne
respectivamente; Mediante el uso de este argumentoA la (unci-n devolver* 1 si la relaci-n es la
especi(icada por el operadorA o 3 de lo contrario;
E'emplo !. E'emplo de 5ersion>compare./
<?php
// imprime F6
echo =ersion%compare3"1.2.1", "1.2.G"9;
// todos estos casos imprimen 6
echo =ersion%compare3"1.2.1", "1.2.G", "<"9;
echo =ersion%compare3"1.2.G", "1.2.G", "eQ"9;
?>
6end>logo>guid
>P&P 8 A P&P 4?
zendZlogoZguid 22 O#tiene el guid zend
Kescripci"n
string 6end>logo>guid > void ?
Nota- +sta (uncionalidad (ue aWadida en P&P8 Beta 8;
6end>5ersion
>P&P 8 A P&P 4?
zendZversion 22 O#tiene la versi-n del motor Iend actual
Kescripci"n
string 6end>5ersion > void ?
Devuelve una cadena /ue contiene la versi-n del Motor Iend e'ecut*ndose actualmente;
E'emplo !. E'emplo de 6end>5ersion./
<?php
// imprime p.ej. M(ersion del motor Yend@ 6.2.1M
echo "(ersion del motor Yend@ " . 0end%=ersion39;
?>
$ea tam#i<n phpinfo./A phpcredits./A php>logo>guid./A y php5ersion./;
:C. Ingres II functions
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
,hese (unctions alloE you to access .ngres .. data#ase servers;
.n order to have these (unctions availa#leA you must compile php Eith .ngres support #y using the ==
76th=6nEres option; %ou need the Open AP. li#rary and header (iles included Eith .ngres ..; .( the
..Z%,+M environment varia#le isnHt correctly set you may have to use ==76th=6nEres:D0R to
speci(y your .ngres installation directory;
Lhen using this eFtension Eith ApacheA i( Apache does not start and complains Eith =P&P Fatal
errorC @na#le to start ingresZii module in @n"noEn on line 3= then ma"e sure the environement
varia#le ..Z%,+M is correctly set; Adding =eFport ..Z%,+M^=DhomeDingresD..= in the script
that starts ApacheA 'ust #e(ore launching httpdA should #e (ine;
Nota- .( you already used P&P eFtensions to access other data#ase serversA note that
.ngres doesnHt alloE concurrent /ueries andDor transaction over one connectionA thus you
EonHt (ind any result or transaction handle in this eFtension; ,he result o( a /uery must
#e treated #e(ore sending another /ueryA and a transaction must #e commited or rolled
#ac" #e(ore opening another transaction >Ehich is automaticaly done Ehen sending the
(irst /uery?;
Tabla de contenidos
ingresZautocommit 22 Eitch autocommit on or o((;
ingresZclose 22 5lose an .ngres .. data#ase connection
ingresZcommit 22 5ommit a transaction;
ingresZconnect 22 Open a connection to an .ngres .. data#ase;
ingresZ(etchZarray 22 Fetch a roE o( result into an array;
ingresZ(etchZo#'ect 22 Fetch a roE o( result into an o#'ect;
ingresZ(etchZroE 22 Fetch a roE o( result into an enumerated array;
ingresZ(ieldZlength 22 Get the length o( a (ield;
ingresZ(ieldZname 22 Get the name o( a (ield in a /uery result;
ingresZ(ieldZnulla#le 22 ,est i( a (ield is nulla#le;
ingresZ(ieldZprecision 22 Get the precision o( a (ield;
ingresZ(ieldZscale 22 Get the scale o( a (ield;
ingresZ(ieldZtype 22 Get the type o( a (ield in a /uery result;
ingresZnumZ(ields 22 Get the num#er o( (ields returned #y the last /uery
ingresZnumZroEs 22 Get the num#er o( roEs a((ected or returned #y the last /uery
ingresZpconnect 22 Open a persistent connection to an .ngres .. data#ase;
ingresZ/uery 22 end a OL /uery to .ngres ..
ingresZroll#ac" 22 Roll #ac" a transaction;
ingres>autocommit
>P&P 8 _^ 8;3;0A P&P 4?
ingresZautocommit 22 Eitch autocommit on or o((;
Kescription
#ool ingres>autocommit > Presource lin"Q ?
ingres>autocommit./ is called #e(ore opening a transaction >#e(ore the (irst call to ingres>?uery./
or 'ust a(ter a call to ingres>rollbacB./ or ingres>autocommit./? to sEitch the =autocommit= mode
o( the server on or o(( >Ehen the script #egins the autocommit mode is o((?;
Lhen the autocommit mode is onA every /uery is automaticaly commited #y the serverA as i(
ingres>commit./ Eas called a(ter every call to ingres>?uery./;
ee also ingres>?uery./A ingres>rollbacB./ and ingres>commit./;
ingres>close
>P&P 8 _^ 8;3;0A P&P 4?
ingresZclose 22 5lose an .ngres .. data#ase connection
Kescription
#ool ingres>close > Presource lin"Q ?
Returns TRUE on successA or FALSE on (ailure;
ingres>close./ closes the connection to the .ngres server thatHs associated Eith the speci(ied lin"; .(
the l6n> parameter isnHt speci(iedA the last opened lin" is used;
ingres>close./ isnHt usually necessaryA as it EonHt close persistent connections and all non2persistent
connections are automatically closed at the end o( the script;
ee also ingres>connect./A and ingres>pconnect./;
ingres>commit
>P&P 8 _^ 8;3;0A P&P 4?
ingresZcommit 22 5ommit a transaction;
Kescription
#ool ingres>commit > Presource lin"Q ?
ingres>commit./ commits the currently open transactionA ma"ing all changes made to the data#ase
permanent;
,his closes the transaction; A neE one can #e open #y sending a /uery Eith ingres>?uery./;
%ou can also have the server commit automaticaly a(ter every /uery #y calling ingres>autocommit
./ #e(ore opening the transaction;
ee also ingres>?uery./A ingres>rollbacB./ and ingres>autocommit./;
ingres>connect
>P&P 8 _^ 8;3;0A P&P 4?
ingresZconnect 22 Open a connection to an .ngres .. data#ase;
Kescription
resource ingres>connect > Pstring data#ase PA string username PA string passEordQQQ ?
Returns a .ngres .. lin" resource on successA or FALSE on (ailure;
ingres>connect./ opens a connection Eith the .ngres data#ase designated #y #ata1aseA Ehich
(olloEs the syntaF )no#e_6#::.#1name)/sr_class.;
.( some parameters are missingA ingres>connect./ uses the values in php.ini (or
6nEres.#e9ault_#ata1aseA 6nEres.#e9ault_user and 6nEres.#e9ault_pass7or#;
,he connection is closed Ehen the script ends or Ehen ingres>close./ is called on this lin";
All the other ingres (unctions use the last opened lin" as a de(aultA so you need to store the returned
value only i( you use more than one lin" at a time;
E'emplo !. ingres>connect./ e+ample
<?php
$linI > inEres%connect 3"mydb", "user", "pass"9
or die 3"Rould not connect"9;
print 3"Ronnected success#ully"9;
inEres%close 3$linI9;
?>
E'emplo *. ingres>connect./ e+ample using default linB
<?php
inEres%connect 3"mydb", "user", "pass"9
or die 3"Rould not connect"9;
print 3"Ronnected success#ully"9;
inEres%close 39;
?>
ee also ingres>pconnect./A and ingres>close./;
ingres>fetch>array
>P&P 8 _^ 8;3;0A P&P 4?
ingresZ(etchZarray 22 Fetch a roE o( result into an array;
Kescription
array ingres>fetch>array > Pint resultZtype PA resource lin"QQ ?
ingres>fetch>array./ Returns an array that corresponds to the (etched roEA or FALSE i( there are
no more roEs;
,his (unction is an eFtended version o( ingres>fetch>ro3./; .n addition to storing the data in the
numeric indices o( the result arrayA it also stores the data in associative indicesA using the (ield
names as "eys;
.( tEo or more columns o( the result have the same (ield namesA the last column Eill ta"e
precedence; ,o access the other column>s? o( the same nameA you must use the numeric indeF o( the
column or ma"e an alias (or the column;
inEres%Query3select t6.#6 as #oo tC.#6 as bar #rom t6, tC9;
$result > inEres%#etch%array39;
$#oo > $result)"#oo"/;
$bar > $result)"bar"/;
result_t?pe can #e ..ZN@M (or enumerated arrayA ..ZAO5 (or associative arrayA or ..ZBO,&
>de(ault?;
peed2EiseA the (unction is identical to ingres>fetch>ob'ect./A and almost as /uic" as
ingres>fetch>ro3./ >the di((erence is insigni(icant?;
E'emplo !. ingres>fetch>array./ e+ample
<?php
inEres%connect 3$database, $user, $pass8ord9;
inEres%Query 3"select W #rom table"9;
8hile 3$ro8 > inEres%#etch%array399 :
echo $ro8)"user%id"/; U usinE associati=e array
echo $ro8)"#ullname"/;
echo $ro8)6/; U usinE enumerated array
echo $ro8)C/;
;
?>
ee also ingres>?uery./A ingres>num>fields./A ingres>field>name./A ingres>fetch>ob'ect./ and
ingres>fetch>ro3./;
ingres>fetch>ob'ect
>P&P 8 _^ 8;3;0A P&P 4?
ingresZ(etchZo#'ect 22 Fetch a roE o( result into an o#'ect;
Kescription
o#'ect ingres>fetch>ob'ect > Pint resultZtype PA resource lin"QQ ?
ingres>fetch>ob'ect./ Returns an o#'ect that corresponds to the (etched roEA or FALSE i( there are
no more roEs;
,his (unction is similar to ingres>fetch>array./A Eith one di((erence 2 an o#'ect is returnedA instead
o( an array; .ndirectlyA that means that you can only access the data #y the (ield namesA and not #y
their o((sets >num#ers are illegal property names?;
,he optional argument result_t?pe is a constant and can ta"e the (olloEing valuesC ..ZAO5A
..ZN@MA and ..ZBO,&;
peed2EiseA the (unction is identical to ingres>fetch>array./A and almost as /uic" as
ingres>fetch>ro3./ >the di((erence is insigni(icant?;
E'emplo !. ingres>fetch>ob'ect./ e+ample
<?php
inEres%connect 3$database, $user, $pass8ord9;
inEres%Query 3"select W #rom table"9;
8hile 3$ro8 > inEres%#etch%object399 :
echo $ro8F>user%id;
echo $ro8F>#ullname;
;
?>
ee also ingres>?uery./A ingres>num>fields./A ingres>field>name./A ingres>fetch>array./ and
ingres>fetch>ro3./;
ingres>fetch>ro3
>P&P 8 _^ 8;3;0A P&P 4?
ingresZ(etchZroE 22 Fetch a roE o( result into an enumerated array;
Kescription
array ingres>fetch>ro3 > Presource lin"Q ?
ingres>fetch>ro3./ returns an array that corresponds to the (etched roEA or FALSE i( there are no
more roEs; +ach result column is stored in an array o((setA starting at o((set 1;
u#se/uent call to ingres>fetch>ro3./ Eould return the neFt roE in the result setA or FALSE i(
there are no more roEs;
E'emplo !. ingres>fetch>ro3./ e+ample
<?php
inEres%connect 3$database, $user, $pass8ord9;
inEres%Query 3"select W #rom table"9;
8hile 3$ro8 > inEres%#etch%ro8399 :
echo $ro8)6/;
echo $ro8)C/;
;
?>
ee also ingres>num>fields./A ingres>?uery./A ingres>fetch>array./ and ingres>fetch>ob'ect./;
ingres>field>length
>P&P 8 _^ 8;3;0A P&P 4?
ingresZ(ieldZlength 22 Get the length o( a (ield;
Kescription
int ingres>field>length > int indeF PA resource lin"Q ?
ingres>field>length./ returns the length o( a (ield; ,his is the num#er o( #ytes used #y the server to
store the (ield; For detailed in(ormationA see the .ngresDOpenAP. @ser Guide 2 AppendiF 5;
6n#e8 is the num#er o( the (ield and must #e #etEeen 1 and the value given #y ingres>num>fields./;
ee also ingres>?uery./A ingres>fetch>array./A ingres>fetch>ob'ect./ and ingres>fetch>ro3./;
ingres>field>name
>P&P 8 _^ 8;3;0A P&P 4?
ingresZ(ieldZname 22 Get the name o( a (ield in a /uery result;
Kescription
string ingres>field>name > int indeF PA resource lin"Q ?
ingres>field>name./ returns the name o( a (ield in a /uery resultA or FALSE on (ailure;
6n#e8 is the num#er o( the (ield and must #e #etEeen 1 and the value given #y ingres>num>fields./;
ee also ingres>?uery./A ingres>fetch>array./A ingres>fetch>ob'ect./ and ingres>fetch>ro3./;
ingres>field>nullable
>P&P 8 _^ 8;3;0A P&P 4?
ingresZ(ieldZnulla#le 22 ,est i( a (ield is nulla#le;
Kescription
#ool ingres>field>nullable > int indeF PA resource lin"Q ?
ingres>field>nullable./ returns TRUE i( the (ield can #e set to the NULL value and FALSE i( it
canHt;
6n#e8 is the num#er o( the (ield and must #e #etEeen 1 and the value given #y ingres>num>fields./;
ee also ingres>?uery./A ingres>fetch>array./A ingres>fetch>ob'ect./ and ingres>fetch>ro3./;
ingres>field>precision
>P&P 8 _^ 8;3;0A P&P 4?
ingresZ(ieldZprecision 22 Get the precision o( a (ield;
Kescription
int ingres>field>precision > int indeF PA resource lin"Q ?
ingres>field>precision./ returns the precision o( a (ield; ,his value is used only (or decimalA (loat
and money OL data types; For detailed in(ormationA see the .ngresDOpenAP. @ser Guide 2
AppendiF 5;
6n#e8 is the num#er o( the (ield and must #e #etEeen 1 and the value given #y ingres>num>fields./;
ee also ingres>?uery./A ingres>fetch>array./A ingres>fetch>ob'ect./ and ingres>fetch>ro3./;
ingres>field>scale
>P&P 8 _^ 8;3;0A P&P 4?
ingresZ(ieldZscale 22 Get the scale o( a (ield;
Kescription
int ingres>field>scale > int indeF PA resource lin"Q ?
ingres>field>scale./ returns the scale o( a (ield; ,his value is used only (or the decimal OL data
type; For detailed in(ormationA see the .ngresDOpenAP. @ser Guide 2 AppendiF 5;
6n#e8 is the num#er o( the (ield and must #e #etEeen 1 and the value given #y ingres>num>fields./;
ee also ingres>?uery./A ingres>fetch>array./A ingres>fetch>ob'ect./ and ingres>fetch>ro3./;
ingres>field>type
>P&P 8 _^ 8;3;0A P&P 4?
ingresZ(ieldZtype 22 Get the type o( a (ield in a /uery result;
Kescription
string ingres>field>type > int indeF PA resource lin"Q ?
ingres>field>type./ returns the type o( a (ield in a /uery resultA or FALSE on (ailure; +Famples o(
types returned are =..AP.ZB%,+Z,%P+=A =..AP.Z5&AZ,%P+=A =..AP.ZD,+Z,%P+=A
=..AP.ZFL,Z,%P+=A =..AP.Z.N,Z,%P+=A =..AP.Z$5&Z,%P+=; ome o( these types can map to
more than one OL type depending on the length o( the (ield >see ingres>field>length./?; For
eFample =..AP.ZFL,Z,%P+= can #e a (loat8 or a (loatM; For detailed in(ormationA see the
.ngresDOpenAP. @ser Guide 2 AppendiF 5;
6n#e8 is the num#er o( the (ield and must #e #etEeen 1 and the value given #y ingres>num>fields./;
ee also ingres>?uery./A ingres>fetch>array./A ingres>fetch>ob'ect./ and ingres>fetch>ro3./;
ingres>num>fields
>P&P 8 _^ 8;3;0A P&P 4?
ingresZnumZ(ields 22 Get the num#er o( (ields returned #y the last /uery
Kescription
int ingres>num>fields > Presource lin"Q ?
ingres>num>fields./ returns the num#er o( (ields in the results returned #y the .ngres server a(ter a
call to ingres>?uery./
ee also ingres>?uery./A ingres>fetch>array./A ingres>fetch>ob'ect./ and ingres>fetch>ro3./;
ingres>num>ro3s
>P&P 8 _^ 8;3;0A P&P 4?
ingresZnumZroEs 22 Get the num#er o( roEs a((ected or returned #y the last /uery
Kescription
int ingres>num>ro3s > Presource lin"Q ?
For deleteA insert or update /ueriesA ingres>num>ro3s./ returns the num#er o( roEs a((ected #y the
/uery; For other /ueriesA ingres>num>ro3s./ returns the num#er o( roEs in the /ueryHs result;
Nota- ,his (unction is mainly meant to get the num#er o( roEs modi(ied in the data#ase;
.( this (unction is called #e(ore using ingres>fetch>array./A ingres>fetch>ob'ect./ or
ingres>fetch>ro3./ the server Eill delete the resultHs data and the script EonHt #e a#le to
get them;
%ou should instead retrieve the resultHs data using one o( these (etch (unctions in a loop
until it returns FALSEA indicating that no more results are availa#le;
ee also ingres>?uery./A ingres>fetch>array./A ingres>fetch>ob'ect./ and ingres>fetch>ro3./;
ingres>pconnect
>P&P 8 _^ 8;3;0A P&P 4?
ingresZpconnect 22 Open a persistent connection to an .ngres .. data#ase;
Kescription
resource ingres>pconnect > Pstring data#ase PA string username PA string passEordQQQ ?
Returns a .ngres .. lin" resource on successA or FALSE on (ailure;
ee ingres>connect./ (or parameters details and eFamples; ,here are only 0 di((erences #etEeen
ingres>pconnect./ and ingres>connect./ C FirstA Ehen connectingA the (unction Eill (irst try to (ind
a >persistent? lin" thatHs already opened Eith the same parameters; .( one is (oundA an identi(ier (or it
Eill #e returned instead o( opening a neE connection; econdA the connection to the .ngres server
Eill not #e closed Ehen the eFecution o( the script ends; .nsteadA the lin" Eill remain open (or (uture
use >ingres>close./ Eill not close lin"s esta#lished #y ingres>pconnect./?; ,his type o( lin" is
there(ore called HpersistentH;
ee also ingres>connect./A and ingres>close./;
ingres>?uery
>P&P 8 _^ 8;3;0A P&P 4?
ingresZ/uery 22 end a OL /uery to .ngres ..
Kescription
#ool ingres>?uery > string /uery PA resource lin"Q ?
Returns TRUE on successA or FALSE on (ailure;
ingres>?uery./ sends the given @uer? to the .ngres server; ,his /uery must #e a valid OL /uery
>see the .ngres OL re(erence guide?
,he /uery #ecomes part o( the currently open transaction; .( there is no open transactionA
ingres>?uery./ opens a neE transaction; ,o close the transactionA you can either call
ingres>commit./ to commit the changes made to the data#ase or ingres>rollbacB./ to cancel these
changes; Lhen the script endsA any open transaction is rolled #ac" >#y calling ingres>rollbacB./?;
%ou can also use ingres>autocommit./ #e(ore opening a neE transaction to have every OL /uery
immediatly commited;
ome types o( OL /ueries canHt #e sent Eith this (unction C
close >see ingres>close./?;
commit >see ingres>commit./?;
connect >see ingres>connect./?;
disconnect >see ingres>close./?;
get d#event
prepare to commit
roll#ac" >see ingres>rollbacB./?;
savepoint
set autocommit >see ingres>autocommit./?;
all cursor related /ueries are unsupported
E'emplo !. ingres>?uery./ e+ample
<?php
inEres%connect 3$database, $user, $pass8ord9;
inEres%Query 3"select W #rom table"9;
8hile 3$ro8 > inEres%#etch%ro8399 :
echo $ro8)6/;
echo $ro8)C/;
;
?>
ee also ingres>fetch>array./A ingres>fetch>ob'ect./A ingres>fetch>ro3./A ingres>commit./A
ingres>rollbacB./ and ingres>autocommit./;
ingres>rollbacB
>P&P 8 _^ 8;3;0A P&P 4?
ingresZroll#ac" 22 Roll #ac" a transaction;
Kescription
#ool ingres>rollbacB > Presource lin"Q ?
ingres>rollbacB./ rolls #ac" the currently open transactionA actualy canceling all changes made to
the data#ase during the transaction;
,his closes the transaction; A neE one can #e open #y sending a /uery Eith ingres>?uery./;
ee also ingres>?uery./A ingres>commit./ and ingres>autocommit./;
:CI. IMC Fate3ay ;unctions
Introducci"n
Lith .R5G you can rapidly stream JML data to thousands o( concurrently connected users; ,his
can #e used to #uild poEer(ulA eFtensi#le interactive plat(orms such as online games and Ee#chats;
.R5G also (eatures support (or a non2streaming mode Ehere a helper application re(ormats
incoming data and supplies static (ile snippets in special (ormats such as c&,ML >i2mode? or LML
>LAP?; ,hese static (iles are then delivered #y the high2per(ormance Ee# server;
@p to v8A .R5G runs under these plat(ormsC
A.J
FreeBD
&P2@J
.riF
LinuF
olaris
,ruK8
LindoEs
Instalaci"n
Detailed installation instructions can #e (ound at httpCDDEEE;schumann;cFDircgD; Le urge you to use
the provided installation script;
.t is not recommendedA #ut you can try ena#le .R5G support yoursel(; Provide the path to the ircg2
con(ig scriptA ==76th=6rcE=con96E:path/to/6rc=con96E and in addition add ==76th=6rcE to your con(igure
line;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
ircgZchannelZmode 22 et channel mode (lags (or user
ircgZdisconnect 22 5lose connection to server
ircgZevalZecmascriptZparams 22 Decodes a list o( !2encoded parameters
ircgZ(etchZerrorZmsg 22 Returns the error (rom previous .R5G operation
ircgZgetZusername 22 Get username (or connection
ircgZhtmlZencode 22 +ncodes &,ML preserving output
ircgZignoreZadd 22 Add a user to your ignore list on a server
ircgZignoreZdel 22 Remove a user (rom your ignore list on a server
ircgZinvite 22 .nvites nic"name to channel
ircgZisZconnZalive 22 5hec" connection status
ircgZ'oin 22 !oin a channel on a connected server
ircgZ"ic" 22 Sic" a user out o( a channel on server
ircgZlist 22 List topicDuser count o( channel>s?
ircgZloo"upZ(ormatZmessages 22 5hec" (or the eFistence o( a (ormat message set
ircgZlusers 22 .R5 netEor" statistics
ircgZmsg 22 end message to channel or user on server
ircgZnames 22 Ouery visi#le usernames
ircgZnic" 22 5hange nic"name on server
ircgZnic"nameZescape 22 +ncode special characters in nic"name to #e .R52compliant
ircgZnic"nameZunescape 22 Decodes encoded nic"name
ircgZnotice 22 end a notice to a user on server
ircgZoper 22 +levates privileges to .R5 OP+R
ircgZpart 22 Leave a channel on server
ircgZpconnect 22 5onnect to an .R5 server
ircgZregisterZ(ormatZmessages 22 Register a (ormat message set
ircgZsetZcurrent 22 et current connection (or output
ircgZsetZ(ile 22 et log(ile (or connection
ircgZsetZonZdie 22 et action to #e eFecuted Ehen connection dies
ircgZtopic 22 et topic (or channel on server
ircgZEho 22 Oueries server (or L&O in(ormation
ircgZEhois 22 Ouery server (or user in(ormation
ircg>channel>mode
>P&P 8 _^ 8;3;4A P&P 4?
ircgZchannelZmode 22 et channel mode (lags (or user
Kescription
#ool ircg>channel>mode > resource connectionA string channelA string modeZspecA string nic" ?
et channel mode (lags (or channel on server connected to #y connect6on; Mode (lags are passed in
mo#e_spec and are applied to the user speci(ied #y n6c>;
Mode (lags are set or cleared #y speci(ying a mode character and prepending it Eith a plus or minus
characterA respectively; +;g; operator mode is granted #y HRoH and revo"ed #y H2oHA as passed as
mo#e_spec;
ircg>disconnect
>P&P 8 _^ 8;3;8A P&P 4?
ircgZdisconnect 22 5lose connection to server
Kescription
#ool ircg>disconnect > resource connectionA string reason ?
ircg>disconnect./ Eill close a connect6on to a server previously esta#lished Eith ircg>pconnect./;
ee alsoC ircg>pconnect./;
ircg>e5al>ecmascript>params
>P&P 8 _^ 8;7;3A P&P 4?
ircgZevalZecmascriptZparams 22 Decodes a list o( !2encoded parameters
Kescription
array ircg>e5al>ecmascript>params > string params ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Srom the ircE%e=al%ecmascript%params source #ile@
/W
W &tate 2@ OooIinE #or M or diEit
W &tate 6@ ,ssemblinE parameter inside M..M
W &tate C@ ,#ter escape siEn@ Ropies sinEle char =erbatim, Eo to 6
W &tate <@ ,ssemblinE numeric para, no Quotation
W &tate 1@ OooIinE #or ",", sIippinE 8hitespace
W/
ee also ircg>looBup>format>messages./;
ircg>fetch>error>msg
>P&P 8 _^ 8;1;3A P&P 4?
ircgZ(etchZerrorZmsg 22 Returns the error (rom previous .R5G operation
Kescription
array ircg>fetch>error>msg > resource connection ?
ircg>fetch>error>msg./ returns the error (rom a (ailed connection;
Nota- +rror code is stored in (irst array elementA error teFt in second; ,he error code is
Walent to .R5 reply codes as de(ined #y RF5 0M10;
E'emplo !. ircg>fetch>error>msg./ e+ample
<?php
i# 3!ircE%join 3$id, "Uphp"99 :
$error > ircE%#etch%error%msE3$id9;
echo "RanMt join channel Uphp. Error code@
$error)2/ Lescription@ $error)6/";
;
?>
ircg>get>username
>P&P 8 _^ 8;1;3A P&P 4?
ircgZgetZusername 22 Get username (or connection
Kescription
string ircg>get>username > resource connection ?
Function ircg>get>username./ returns the username (or the speci(ied connection connect6on;
Returns FALSE i( connect6on died or is not valid;
ircg>html>encode
>P&P 8 _^ 8;3;4A P&P 4?
ircgZhtmlZencode 22 +ncodes &,ML preserving output
Kescription
#ool ircg>html>encode > string htmlZstring PA #ool autoZlin"s PA #ool convZ#rQQ ?
+ncodes a &,ML string html_str6nE (or output; ,his eFposes the inter(ace Ehich the .R5G
eFtension uses internally to re(ormat data coming (rom an .R5 lin"; ,he (unction causes .R5
colorD(ont codes to #e encoded in &,ML and escapes certain entities;
ircg>ignore>add
>P&P 8 _^ 8;3;4A P&P 4?
ircgZignoreZadd 22 Add a user to your ignore list on a server
Kescription
#ool ircg>ignore>add > resource connectionA string nic" ?
,his (unction adds user n6c> to the ignore list o( connection connect6on; A(terEardsA .R5G Eill
suppress all messages (rom this user through the associated connection;
ee alsoC ircg>ignore>del./;
ircg>ignore>del
>P&P 8 _^ 8;3;4A P&P 4?
ircgZignoreZdel 22 Remove a user (rom your ignore list on a server
Kescription
#ool ircg>ignore>del > resource connectionA string nic" ?
,his (unction removes user n6c> (rom the .R5G ignore list associated Eith connect6on;
ee alsoC ircg>ignore>add./;
ircg>in5ite
>P&P 8 _^ 8;7;7A P&P 4?
ircgZinvite 22 .nvites nic"name to channel
Kescription
#ool ircg>in5ite > resource connectionA string channelA string nic"name ?
ircg>in5ite./ Eill send an invitation to the user n6c>nameA prompting him to 'oin channel; Devuelve
TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ircg>is>conn>ali5e
>P&P 8 _^ 8;3;4A P&P 4?
ircgZisZconnZalive 22 5hec" connection status
Kescription
#ool ircg>is>conn>ali5e > resource connection ?
ircg>is>conn>ali5e./ returns TRUE i( connect6on is still alive and Eor"ing or FALSEA i( the
connection has died (or some reason;
ircg>'oin
>P&P 8 _^ 8;3;8A P&P 4?
ircgZ'oin 22 !oin a channel on a connected server
Kescription
#ool ircg>'oin > resource connectionA string channel PA string "eyQ ?
!oin the channel channel on the server connected to #y connect6on; .R5G Eill optionally pass the
room "ey >e?;
ircg>BicB
>P&P 8 _^ 8;3;4A P&P 4?
ircgZ"ic" 22 Sic" a user out o( a channel on server
Kescription
#ool ircg>BicB > resource connectionA string channelA string nic"A string reason ?
Sic" user n6c> (rom channel on server connected to #y connect6on; reason should give a short
message descri#ing Ehy this action Eas per(ormed;
ircg>list
>P&P 8 _^ 8;7;7A P&P 4?
ircgZlist 22 List topicDuser count o( channel>s?
Kescription
#ool ircg>list > resource connectionA string channel ?
ircg>list./ Eill re/uest a list o( users in the channel; ,he ansEer is sent to the output de(ined #y
ircg>set>file./ or ircg>set>current./; Devuelve TRUE si todo se llev- a ca#o correctamenteA
FALSE en caso de (allo;
E'emplo !. ircg>list./ e+ample
<?php
// connect to ser=er
$id > ircE%pconnect3$nicIname, $ip, $port9;
// set to output to a #ile
ircE%set%#ile3$id, Mirc%output.htmlM9;
// try to join a channel
i# 3!ircE%join3$id, $channel99 :
echo "Rannot /join $channel<br />";
;
// send list command
ircE%list3$id, $channel9;
// 8ait #or output to arri=e
sleep359;
// disconnect
ircE%disconnect3$id,MZye 7orldM9;
// output e=erythinE
read#ile3Mirc%output.htmlM9;
?>
,his eFample Eill output something similar toC
...
Rhannel Uchannel has n users and the topic is M*opicM
End o# O4&*
...
ee alsoC ircg>set>file./A ircg>set>current./A and ircg>3ho./;
ircg>looBup>format>messages
>P&P 8 _^ 8;3;4A P&P 4?
ircgZloo"upZ(ormatZmessages 22 5hec" (or the eFistence o( a (ormat message set
Kescription
#ool ircg>looBup>format>messages > string name ?
5hec" (or the eFistence o( the (ormat message set name; ets may #e registered Eith
ircg>register>format>messages./A a de(ault set named 6rcE is alEays availa#le; Returns TRUEA i(
the set eFists and FALSE otherEise;
ee alsoC ircg>register>format>messages./
ircg>lusers
>P&P 8 _^ 8;7;7A P&P 4?
ircgZlusers 22 .R5 netEor" statistics
Kescription
#ool ircg>lusers > resource connection ?
ircg>lusers./ Eill re/uest a statistical #rea"doEn o( users on the netEor" connected to on
connect6on; ,he ansEer is sent to the output de(ined #y ircg>set>file./ or ircg>set>current./;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee alsoC ircg>set>file./A and ircg>set>current./;
ircg>msg
>P&P 8 _^ 8;3;8A P&P 4?
ircgZmsg 22 end message to channel or user on server
Kescription
#ool ircg>msg > resource connectionA string recipientA string message PA #ool suppressQ ?
ircg>msg./ Eill send the message to a channel or user on the server connected to #y connect6on; A
rec6p6ent starting Eith K or ] Eill send the messaEe to a channelA anything else Eill #e interpreted as
a username;
etting the optional parameter suppress to a TRUE value Eill suppress output o( your message to
your oEn connect6on; ,his so2called loop#ac" is necessaryA #ecause the .R5 server does not echo
PR.$MG commands #ac" to us;
ircg>names
>P&P 8 _^ 8;7;7A P&P 4?
ircgZnames 22 Ouery visi#le usernames
Kescription
#ool ircg>names > int connectionA string channel PA string targetQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also ircg>get>username./ and ircg>lusers./;
ircg>nicB
>P&P 8 _^ 8;3;4A P&P 4?
ircgZnic" 22 5hange nic"name on server
Kescription
#ool ircg>nicB > resource connectionA string nic" ?
5hange your nic"name on the given connect6on to the one given in n6c>A i( possi#le;
Lill return TRUE on success and FALSE on (ailure;
ircg>nicBname>escape
>P&P 8 _^ 8;3;KA P&P 4?
ircgZnic"nameZescape 22 +ncode special characters in nic"name to #e .R52compliant
Kescription
string ircg>nicBname>escape > string nic" ?
Function ircg>nicBname>escape./ returns an encoded nic"name speci(ied #y n6c> Ehich is .R52
compliant;
ee alsoC ircg>nicBname>unescape./
ircg>nicBname>unescape
>P&P 8 _^ 8;3;KA P&P 4?
ircgZnic"nameZunescape 22 Decodes encoded nic"name
Kescription
string ircg>nicBname>unescape > string nic" ?
Function ircg>nicBname>unescape./ returns a decoded nic"nameA Ehich is speci(ied in n6c>;
ee alsoC ircg>nicBname>escape./
ircg>notice
>P&P 8 _^ 8;3;4A P&P 4?
ircgZnotice 22 end a notice to a user on server
Kescription
#ool ircg>notice > resource connectionA string recipientA string message ?
,his (unction Eill send the messaEe teFt to the user n6c> on the server connected to #y connect6on;
.R5 servers and other so(tEare Eill not automatically generate replies to NO,.5+s in contrast to
other message types;
ircg>oper
>P&P 8 _^ 8;7;7A P&P 4?
ircgZoper 22 +levates privileges to .R5 OP+R
Kescription
#ool ircg>oper > resource connectionA string nameA string passEord ?
ircg>oper./ Eill authenticate the logged in user on connect6on as an .R5 operator; name and
pass7or# must match a registered .R5 operator account; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
ircg>part
>P&P 8 _^ 8;3;8A P&P 4?
ircgZpart 22 Leave a channel on server
Kescription
#ool ircg>part > resource connectionA string channel ?
Leave the channel channel on the server connected to #y connect6on;
ircg>pconnect
>P&P 8 _^ 8;3;8A P&P 4?
ircgZpconnect 22 5onnect to an .R5 server
Kescription
resource ircg>pconnect > string username PA string serverZip PA int serverZport PA string msgZ(ormat
PA array ctcpZmessages PA array userZsettings PA #ool #ailoutZonZtrivialQQQQQQ ?
ircg>pconnect./ Eill try to esta#lish a connection to an .R5 server and return a connection resource
handle (or (urther use;
,he only mandatory parameter is usernameA this Eill set your initial nic"name on the server;
serer_6p and serer_port are optional and de(ault to 127.0.0.1 and XXX7;
Nota- For noE parameter serer_6p Eill not do any hostname loo"ups and Eill only
accept .P addresses in numerical (orm; DN loo"ups are eFpensive and should #e done
in the conteFt o( .R5G;
%ou can customize the output o( .R5 messages and events #y selecting a (ormat message set
previously created Eith ircg>register>format>messages./ #y speci(ying the setHs name in
msE_9ormat;
.( you Eant to handle 5,5P messages such as A5,.ON >Dme?A you need to de(ine a mapping (rom
5,5P type >e;g; A5,.ON? to a custom (ormat string; Do this #y passing an associative array as
ctcp_messaEes; ,he "eys o( the array are the 5,5P type and the respective value is the (ormat
message;
%ou can de(ine =ident=A =passEord=A and =realname= to"ens Ehich are sent to the .R5 server #y
setting these in an associative array; Pass that array as user_sett6nEs;
ee alsoC ircg>disconnect./A ircg>is>conn>ali5e./A ircg>register>format>messages./;
ircg>register>format>messages
>P&P 8 _^ 8;3;4A P&P 4?
ircgZregisterZ(ormatZmessages 22 Register a (ormat message set
Kescription
#ool ircg>register>format>messages > string nameA array messages ?
Lith ircg>register>format>messages./ you can customize the Eay your .R5 output loo"s li"e or
Ehich script (unctions are invo"ed on the client side;
Plain channel message
Private message received
Private message sent
ome user leaves channel
ome user enters channel
ome user Eas "ic"ed (rom the channel
,opic has #een changed
+rror
Fatal error
!oin list end>N?
el( part>N?
ome user changes his nic"
ome user /uits his connection
Mass 'oin #egin
Mass 'oin element
Mass 'oin end
Lhois user
Lhois server
Lhois idle
Lhois channel
Lhois end
$oice status change on user
Operator status change on user
Banlist
Banlist end
b( 2 (rom
bt 2 to
bc 2 channel
br 2 plain message
bm 2 encoded message
b' 2 's encoded message
1 2 mod encode
0 2 nic"name decode
ee alsoC ircg>looBup>format>messages./;
ircg>set>current
>P&P 8 _^ 8;3;8A P&P 4?
ircgZsetZcurrent 22 et current connection (or output
Kescription
#ool ircg>set>current > resource connection ?
elect the current &,,P connection (or output in this eFecution conteFt; +very output sent (rom the
server connected to #y connect6on Eill #e copied to standard output Ehile using de(ault (ormatting
or a (ormat message set speci(ied #y ircg>register>format>messages./;
ee alsoC ircg>register>format>messages./;
ircg>set>file
>P&P 8 _^ 8;0;3A P&P 4?
ircgZsetZ(ile 22 et log(ile (or connection
Kescription
#ool ircg>set>file > resource connectionA string path ?
Function ircg>set>file./ speci(ies a log(ile path in Ehich all output (rom connection connect6on Eill
#e logged; Returns TRUE on successA otherEise FALSE;
ircg>set>on>die
>P&P 8 _^ 8;0;3A P&P 4?
ircgZsetZonZdie 22 et action to #e eFecuted Ehen connection dies
Kescription
#ool ircg>set>on>die > resource connectionA string hostA int portA string data ?
.n case o( the termination o( connection connect6on .R5G Eill connect to host at port >NoteC host
must #e an .Pv8 addressA .R5G does not resolve host2names due to #loc"ing issues?A send #ata to
the neE host connection and Eill Eait until the remote part closes connection; ,his can #e used to
trigger a P&P script (or eFample;
,his (eature re/uires .R5G 7;
ircg>topic
>P&P 8 _^ 8;3;4A P&P 4?
ircgZtopic 22 et topic (or channel on server
Kescription
#ool ircg>topic > resource connectionA string channelA string neEZtopic ?
5hange the topic (or channel channel on the server connected to #y connect6on to ne7_top6c;
ircg>3ho
>P&P 8 _^ 8;7;7A P&P 4?
ircgZEho 22 Oueries server (or L&O in(ormation
Kescription
#ool ircg>3ho > resource connectionA string mas" PA #ool opsZonlyQ ?
ircg>3ho./ Eill re/uest a list o( users Ehose nic"name is matching mas> on connected netEor"
connect6on; ,he optional parameter ops_onl? Eill shrin" the list to server operators only;
,he ansEer is sent to the output de(ined #y ircg>set>file./ or ircg>set>current./; Devuelve TRUE si
todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee alsoC ircg>set>file./A and ircg>set>current./;
ircg>3hois
>P&P 8 _^ 8;3;4A P&P 4?
ircgZEhois 22 Ouery server (or user in(ormation
Kescription
#ool ircg>3hois > resource connectionA string nic" ?
ends a /uery to the connected server connect6on to as" (or in(ormation a#out the speci(ied user
n6c>;
:CII. Integraci"n de [a5a y PHP
Introducci"n
+Fisten dos (ormas di(erentes de integrar !ava y P&PC en primer lugarA se puede integrar P&P dentro
de un entorno de e'ecuci-n de servlets de !avaA /ue en estos momentos es una soluci-n mas esta#le
y mas e(iciente; La segunda opci-n es la de integrar !ava dentro de P&P; La primera (orma de
integraci-n se realiza a traves de un modulo AP. /ue actua como inter(az del servidor de servlets;
La segunda (orma se realiza mediante esta eFtensi-n de !ava;
+sta eFtensi-n de !ava proporciona de (orma sencilla los medios necesarios para crear e invocar
m<todos so#re o#'etos de !ava desde P&P; La !$M se crea utilizando !N. y todo se e'ecuta en un
unico proceso;
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
Me?uirimientos
Para utilizar esta eFtensi-n es necesario disponer de una m*/uina virtual 'ava >!$M? instalada en el
sistema;
Instalaci"n
Para incluir el soporte de !ava en P&PA es necesario aWadir el par*metro ==76th=Uaa):D0R. a las
opciones de con(iguraci-n de P&P; AdemasA es necesario indicarle a traves de la opci-n D.RA el
lugar donde se encuentra el directorio #ase de la instalaci-n del !DS; +sta eFtensi-n solamente
puede ser construida como un modulo compartido; +n el archivo php1/ext/ja=a/'E,L"E se
incluye mas in(ormaci-n so#re como construir esta eFtensi-n;
Nota para los usuarios de 2indo3s- Para poder tra#a'ar con este modulo en un
entorno LindoEs con una versi-n de P&P `^ 8;3;KA se de#e copiar el archivo Um.#ll
/ue se encuentra en el su#directorio DLL del directorio P&PDLin70 de la distri#uci-n
#inaria de P&PA en el directorio %,+M70 de LindoEs >Normalmente es
5ChL.NN,h%,+M70 o 5ChL.NDOLh%,+M70?; Para versiones de P&P _ 8;3;K
no es necesario realizar esta operaci-n;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones de configuraci" de [a5a
Nombre
Calor por
defecto
Konde se cambia
'ava;class;path N@LL P&PZ.N.ZALL
'ava;home N@LL P&PZ.N.ZALL
'ava;li#rary;pat
h
N@LL P&PZ.N.ZALL
'ava;li#rary !A$AL.B P&PZ.N.ZALL
Para conocer todos los detalles y las de(iniciones de las constantes de P&PZ.N.ZV se de#e consultar
la (unci-n ini>set./;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
E'emplos
E'emplo !. E'emplo de [a5a
<?php
// se obtiene la instancia de la clase de Aa=a ja=a.lanE.&ystem desde H
$system > ne8 Aa=a3Mja=a.lanE.&ystemM9;
// se muestran las propiedades del acceso Que se reali0a a Aa=a
print M(ersion de Aa=a>M.$systemF>Eetroperty3Mja=a.=ersionM9.M <br>M;
print MLesarrollador de la A(">M .$systemF>Eetroperty3Mja=a.=endorM9.M <br>M;
print M&istema ?perati=o>M.$systemF>Eetroperty3Mos.nameM9.M M.
$systemF>Eetroperty3Mos.=ersionM9.M on M.
$systemF>Eetroperty3Mos.archM9.M <br>M;
// ejemplo de ja=a.util.Late
$#ormatter > ne8 Aa=a3Mja=a.text.&impleLateSormatM,
"EEEE, """" dd, yyyy MatM h@mm@ss a 0000"9;
print $#ormatterF>#ormat3ne8 Aa=a3Mja=a.util.LateM99;
?>
E'emplo *. E'emplo de A2T
<?php
// Este ejemplo solo puede ser ejecutado como R-4.
$#rame > ne8 Aa=a3Mja=a.a8t.SrameM, MHM9;
$button > ne8 Aa=a3Mja=a.a8t.ZuttonM, MHola "undo de Aa=a!M9;
$#rameF>add3M.orthM, $button9;
$#rameF>=alidate39;
$#rameF>pacI39;
$#rameF>=isible > *rue;
$thread > ne8 Aa=a3Mja=a.lanE.*hreadM9;
$threadF>sleep3622229;
$#rameF>dispose39;
?>
NotasC
ne7 baaLM crea una nueva instancia de una clase solamente si eFiste un constructor
adecuado; i no se le pasan par*metros y eFiste un constructor por de(ecto adecuado >como
por e'emplo en el caso de Uaa.lanE.S?stem? se podr* acceder a la mayor parte de sus
metodosA ya /ue son est*ticos;
Al acceder a los miem#ros de una instanciaA en primer lugar se #uscar*n las propiedades del
#ean y en segundo lugar los miem#ros pu#licos; +n otras pala#rasA pr6nt '#ate.t6me se
intentara resolver en primer lugar como '#ate.EetT6meLM y posteriormente como '#ate.t6me;
,anto los miem#ros estaticos como los miem#ros de una instancia de un o#'eto pueden ser
accedidos utilizando la misma sintaFis; AdemasA si el o#'eto es de tipo Uaa.lanE.ClassA
entonces se puede acceder a los miem#ros estaticos de la clase >tanto los atri#utos como los
metodos?;
Las eFcepciones /ue se lanzan durante la e'ecuci-n se trans(orman en avisos de tipo
=Earning= de P&P y en resultados de tipo NULL; Los avisos de tipo =Earning= se pueden
eliminar aWadiendo el pre(i'o =G= a la llamada del metodo; Las siguientes (unciones de la
AP. se pueden utilizar para o#tener y #orrar el ultimo error surgido
'a5a>last>e+ception>get./
'a5a>last>e+ception>clear./
La resoluci-n de la so#recarga es uno de los pro#lemas mas di(iciles de resolver dadas las
grandes di(erencias entre P&P y !ava en el tema del =tipado= de las varia#les; +sta eFtensi-n
utiliza un metodo simple pero muy e(ectivo para determinar cual es la me'or decisi-n a
tomar cuando se produce la so#recarga;
AdemasA los nom#res de los metodos en P&P no distinguen entre mayusculas y minusculasA
por lo /ue se aumenta la pro#a#ilidad de /ue se produzcan situaciones de so#recarga;
@na vez seleccionado el metodoA los par*metros se trans(orman si es necesarioA incluso con
la posi#ilidad de perder datos >por e'emploA los numeros de tipo =dou#le= se trans(orman en
tipo #oolean? >Nota del traductorC esta conversion parece totalmente a#surdaA asi /ue puede
tratarse de un (allo de la documentacion de la version original?;
Las varia#les de tipo =array= y =hashta#le= pueden ser utilizadas de (orma indistinta; +n
P&PA las hashta#les solo pueden incluir en las claves varia#les de tipo integer o string;
AdemasA en !ava los arrays cuyas varia#les son de algun tipo primitivoA no pueden contener
huecos; Por ultimoA se de#e recordar /ue este tipo de varia#les se pasan por valorA por lo /ue
pueden llegar a consumir una cantidad aprecia#le de memoria y de tiempo;
,API de los ser5lets [a5a
Basandose en el mismo mecanismo /ue la eFtension de !ava de P&PA la AP. de los servlets !ava
permite e'ecutar P&P como un servlet de !ava; La venta'a mas signi(icativa de esta (orma de actuar
es /ue se aprovechan las caracteristicas de =pooling= y de reutilizacion implementadas por la
mayoria de servidores /ue permiten e'ecutar servlets; +l archivo php1/sapi/'E,L"E contiene
las instrucciones necesarias para compilar el modulo AP. para los servlets !ava; NotasC
Aun/ueA en principioA este codigo podria ser e'ecutado en cual/uier servidor /ue permita la
e'ecucion de servletsA solo se ha pro#ado en el servidor !a"artaD,omcat desarrollado por la
(undacion Apache; Por ese motivoA cual/uier in(ormacion so#re la (orma de e'ecutarlo en
otros servidoresA los errores encontradosA las soluciones planteadasA etc;;;sera una
in(ormacion muy apreciada y /ue animamos a /ue los desarrolladores envien a los
responsa#les del desarrollo del proyecto P&P;
e pueden producir con(lictos entre P&P y AP. con respecto al directorio de tra#a'o;
Mientras P&P se esta e'ecutandoA el servidor de servlets no podra cargar ninguna clase /ue
se encuentre en el 5LAPA,& si su ruta se especi(ica de (orma relativa y tampoco podra
encontrar el directorio de tra#a'o utilizado para las tareas de administracion y compilacion de
!P;
Tabla de contenidos
'avaZlastZeFceptionZclear 22 Borra la Bltima eFcepci-n de !ava
'avaZlastZeFceptionZget 22 O#tiene la Bltima eFcepci-n de !ava
'a5a>last>e+ception>clear
>P&P 8 _^ 8;3;0?
'avaZlastZeFceptionZclear 22 Borra la Bltima eFcepci-n de !ava
Kescripci"n
void 'a5a>last>e+ception>clear > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
$er la (unci-n 'a5a>last>e+ception>get./ para o#tener un e'emplo completo del uso de esta
(unci-n;
'a5a>last>e+ception>get
>P&P 8 _^ 8;3;0?
'avaZlastZeFceptionZget 22 O#tiene la Bltima eFcepci-n de !ava
Kescripci"n
eFception 'a5a>last>e+ception>get > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
+l siguiente e'emplo muestra el mane'o de las eFcepciones de !ava dentro de P&PC
E'emplo !. Mane'ando las e+cepciones de [a5a
<?php
$stacI > ne8 Aa=a3Mja=a.util.&tacIM9;
$stacIF>push369;
// Oo siEuiente deberia tener exito
$result > $stacIF>pop39;
$ex > ja=a%last%exception%Eet39;
i# 3!$ex9 print "$resultVn";
// Oo siEuiente deberia #allar 3se suprime el error con el simbolo ^9
$result > ^$stacIF>pop39;
$ex > ja=a%last%exception%Eet39;
i# 3$ex9 print $exF>to&trinE39;
// Zorrado de la ultima excepcion
ja=a%last%exception%clear39;
?>
:CIII. ;unciones :KAP
Introducci"n
LDAP es el protocolo de acceso a directorios ligero >LightEeight Directory Access Protocol?A un
protocolo usado para acceder a =ervidores de Directorio=; +l directorio es una clase especial de
#ase de datos /ue contiene in(ormaci-n estructurada en (orma de *r#ol;
+l concepto es similar a la estructura de directorios de los discos durosA pero en este casoA el
directorio raiz es =+l Mundo= y los su#directorios de primer nivel son los =pa)ses=; Niveles
in(eriores de la estructura de directorio contienen entradas para compaW)asA organizaciones o
lugaresA y en niveles aBn in(eriores se encuentran las entradas para la genteA y /uiz*s de e/uipos
in(orm*ticos y documentos;
Para re(erirse a un archivo en un su#directorio del disco duro se usa algo como
DusrDlocalDmisappsDdocs

Las #arras marcan cada divisi-n en la re(erencia al archivoA y la secuencia es leida de iz/uierda a
derecha;
+l Walente a la re(erencia a un archivo en LDAP es el =distinguished name= >nom#re distingui#le?A
a#reviado como =d#=; @n e'emplo de dn podr)a ser;
cn^Pedro P<rezAou^5onta#ilidadAo^Mi 5ompaW)aAc^+

Las comas marcan cada divisi-n en la re(erenciaA y la secuencia se lee de derecha a iz/uierda; +ste
dn se leer)a comoC
country ^ +
organization ^ Mi 5ompaW)a
organizational@nit ^ 5onta#ilidad
commonName ^ Pedro P<rez

De la misma manera /ue no hay reglas estrictas so#re como organizar la estructura de directorios de
un disco duroA un administrador de un servidor de directorio puede esta#lecer cual/uier estructura
/ue sea Btil para sus prop-sitos; in em#argo hay algunos acuerdos t*citos /ue siempre de#en
seguirse; +l mensa'e es /ue no se puede escri#ir c-digo para acceder un directorio si no se conoce
algo de su estructuraA igual /ue no se puede usar una #ase de datos sin algBn conocimiento so#re lo
/ue est* disponi#le en ella;
.n(ormaci-n so#re LDAP se puede encontrar enC
Netscape
OpenLDAP Pro'ect
LDAP Lorld
Netscape DS tiene una Guia de programaci-n muy #uena en &,ML;
Me?uirimientos
e necesita o#tener y compilar las #i#liotecas LDAP cliente de la @niversidad de Michigan ldap27;7
pac"ageA Netscape Directory DS 7;3 - OpenLDAP si /ueremos /ue P&P soporte LDAP;
Instalaci"n
LDAP support in P&P is not ena#led #y de(ault; %ou Eill need to use the ==76th=l#ap):D0R.
con(iguration option Ehen compiling P&P to ena#le LDAP support; D.R is the LDAP #ase install
directory; ,o ena#le AL supportA #e sure ==76th=l#ap=sasl):D0R. is usedA and that sasl.h
eFists on the system;
Note to 2in7* )sers- .n order to ena#le this module on a LindoEs environmentA you
must copy several (iles (rom the DLL (older o( the P&PDLin70 #inary pac"age to the
%,+M (older o( your EindoEs machine; >+FC R@V74..*V&P&*E"<CA or
R@V74.L?7&V&P&*E"?; For P&P `^ 8;0;3 copy libsasl.dllA (or P&P _^ 8;7;3
copy libeay<C.dll and ssleay<C.dll to your %,+M (older;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. :KAP configuration options
Name Kefault Changeable
ldap;maFZlin"
s
=21= P&PZ.N.Z%,+M
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
LDAP_DEREF_NE$ER >integer?
LDAP_DEREF_SEARCHIN# >integer?
LDAP_DEREF_FINDIN# >integer?
LDAP_DEREF_AL"AYS >integer?
LDAP_OPT_DEREF >integer?
LDAP_OPT_SI/ELIMIT >integer?
LDAP_OPT_TIMELIMIT >integer?
LDAP_OPT_PROTOCOL_$ERSION >integer?
LDAP_OPT_ERROR_NUM(ER >integer?
LDAP_OPT_REFERRALS >integer?
LDAP_OPT_RESTART >integer?
LDAP_OPT_HOST_NAME >integer?
LDAP_OPT_ERROR_STRIN# >integer?
LDAP_OPT_MATCHED_DN >integer?
LDAP_OPT_SER$ER_CONTROLS >integer?
LDAP_OPT_CLIENT_CONTROLS >integer?
LDAP_OPT_DE(U#_LE$EL >integer?
#SLC_SSL_NO_AUTH >integer?
#SLC_SSL_ONE"AY_AUTH >integer?
#SLC_SSL_T"O"AY_AUTH >integer?
E'emplos
Recuperar in(ormacion para todas las entradas donde el apellido empiece por =P= de un servidor de
directorioA mostrando un eFtracto con el nom#re y direcci-n de correo electr-nico;
E'emplo !. E'emplo de b4s?ueda :KAP
<?php
// Oa secuencia b&aacute;sica para trabajar con OL, es conectar, autenti#icarse,
// buscar, interpretar el resultado de la b&uacute;sQueda y cerrar la conexi&oacute;n.
echo "&lt;h<>rueba de consulta OL,&lt;/h<>";
echo "Ronectando ...";
$ds>ldap%connect3"localhost"9; // Lebe ser un ser=idor OL, =&aacute;lido!
echo "El resultado de la conexi&oacute;n es ".$ds."&lt;p>";
i# 3$ds9 :
echo ",utenti#icandose ...";
$r>ldap%bind3$ds9; // ,utenti#icaci&oacute;n an&oacute;nima, t&iacute;picamente con
// acceso de lectura
echo "El resultado de la autenti#icaci&oacute;n es ".$r."&lt;p>";
echo "Zuscando 3sn>W9 ...";
// ZusQueda de entradas por apellidos
$sr>ldap%search3$ds,"o>"i Rompa&ntilde;ia, c>E&", "sn>W"9;
echo "El resultado de la b&uacute;sQueda es ".$sr."&lt;p>";
echo "El n&uacute;mero de entradas de=ueltas es ".ldap%count%entries3$ds,$sr9."&lt;p>";
echo "'ecuperando entradas ...&lt;p>";
$in#o > ldap%Eet%entries3$ds, $sr9;
echo "Le=ueltos datos de ".$in#o)"count"/." entradas@&lt;p>";
#or 3$i>2; $i<$in#o)"count"/; $i[[9 :
echo "dn es@ ". $in#o)$i/)"dn"/ ."&lt;br>";
echo "Oa primera entrada cn es@ ". $in#o)$i/)"cn"/)2/ ."&lt;br>";
echo "Oa primera entrada email es@ ". $in#o)$i/)"mail"/)2/ ."&lt;p>";
;
echo "Rerrando conexi&oacute;n";
ldap%close3$ds9;
; else :
echo "&lt;h1>Ha sido imposible conectar al ser=idor OL,&lt;/h1>";
;
?>
)sando las llamadas :KAP de PHP
Antes de usarse las llamadas LDAP se de#e sa#er ;;
+l nom#re o direcci-n del servidor de directorio /ue se va a usar
+l =dn #ase= del servidor >la parte del directorio glo#al contenida en ese servidorA /ue puede
ser por e'emplo =o^Mi 5ompaWiaAc^+=?
i es necesaria contraseWa para acceder al servidor >muchos servidores o(recen acceso de
lectura para usuarios an-nimos pero re/uieren un passEord para cual/uier otro acceso?
La secuencia t)pica de llamadas LDAP suele implementarse en aplicaciones /ue siguen el siguiente
patr-nC
ldapZconnect>? DD esta#lecer la coneFi-n con el servidor
l
ldapZ#ind>? DD login an-nimo o autenti(icado
l
&acer #Bs/uedas o actualizaciones en el directorio
y mostrar los resultados
l
ldapZclose>? DD 5errar la coneFi-n

Tabla de contenidos
ldapZMM49ZtoZtK1 22 ,ranslate MM49 characters to tK1 characters
ldapZadd 22 AWade entradas a un directorio LDAP
ldapZ#ind 22 Autenti(ica en un directorio LDAP
ldapZclose 22 5ierra una coneFi-n a un servidor LDAP
ldapZcompare 22 5ompare value o( attri#ute (ound in entry speci(ied Eith DN
ldapZconnect 22 5onecta con un servidor LDAP
ldapZcountZentries 22 5uenta el nBmero de entradas de una #Bs/ueda
ldapZdelete 22 Borra una entrada de un directorio
ldapZdn0u(n 22 5onvierte un dn al (ormato @ser Friendly Naming
ldapZerr0str 22 5onvertir el nBmero de error LDAP a un mensa'e de error tipo cadena
ldapZerrno 22 Devuelve el nBmero de error LDAP del Bltimo comando LDAP
ldapZerror 22 Devuelve el mensa'e de error LDAP del Bltimo comando LDAP
ldapZeFplodeZdn 22 Divide un DN en las partes /ue le componen
ldapZ(irstZattri#ute 22 Devuelte el primer atri#uto
ldapZ(irstZentry 22 Devuelve el identi(icador del primer resultado
ldapZ(irstZre(erence 22 Return (irst re(erence
ldapZ(reeZresult 22 Li#era la memoria /ue almacena los resultados
ldapZgetZattri#utes 22 O#tiene los atri#utos de una entrada de un resultado de #Bs/ueda
ldapZgetZdn 22 O#tiene el DN de una entrada de un resultado
ldapZgetZentries 22 O#tiene todas las entradas de un resultado
ldapZgetZoption 22 Get the current value (or given option
ldapZgetZvaluesZlen 22 O#tiene todos los valores #inarios de un atri#uto de una entrada
ldapZgetZvalues 22 O#tiene todos los valores de un atri#uto de una entrada
ldapZlist 22 BBs/ueda de nivel Bnico
ldapZmodZadd 22 AWade valores de atri#utos
ldapZmodZdel 22 Borra valores de atri#utos
ldapZmodZreplace 22 Reemplaza valores de atri#utos
ldapZmodi(y 22 Modi(ica una entrada LDAP
ldapZneFtZattri#ute 22 O#tiene el siguiente atri#uto de una entrada
ldapZneFtZentry 22 O#tiene la siguiente entrada de un resultado
ldapZneFtZre(erence 22 Get neFt re(erence
ldapZparseZre(erence 22 +Ftract in(ormation (rom re(erence entry
ldapZparseZresult 22 +Ftract in(ormation (rom result
ldapZread 22 Lee una entrada
ldapZrename 22 Modi(y the name o( an entry
ldapZsaslZ#ind 22 Bind to LDAP directory using AL
ldapZsearch 22 Busca en un ar#ol LDAP
ldapZsetZoption 22 et the value o( the given option
ldapZsetZre#indZproc 22 et a call#ac" (unction to do re2#inds on re(erral chasing
ldapZsort 22 ort LDAP result entries
ldapZstartZtls 22 tart ,L
ldapZtK1ZtoZMM49 22 ,ranslate tK1 characters to MM49 characters
ldapZun#ind 22 &ace logout de un directorio LDAP
ldap>NN9O>to>t<!
>P&P 8 _^ 8;3;0A P&P 4?
ldapZMM49ZtoZtK1 22 ,ranslate MM49 characters to tK1 characters
Kescription
string ldap>NN9O>to>t<! > string value ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ldap>add
>P&P 7A P&P 8 A P&P 4?
ldapZadd 22 AWade entradas a un directorio LDAP
Kescripci"n
int ldap>add > int identi(icadorZdeZconeFionA string dnA array entrada ?
Devuelve verdadero cuando (inaliza correctamente y (also se produce un error;
La (unci-n ldap>add./ se usa para aWadir entradas o registros a un directorio LDAP; +l DN
>=distinguished name=A nom#re distingui#leA la re(erencia de cual/uier entrada LDAP? es
especi(icado por dn; +l array entrada especi(ica la in(ormaci-n /ue /uiere aWadirse; Los valores del
array son indeFados por sus propios atri#utos; +n caso de valores mBltiples para un mismo atri#utoA
son indeFados usando enteros empezando con 3;
entryP=atri#uto1=Q ^ valor
entryP=atri#uto0=QP3Q ^ valor1
entryP=atri#uto0=QP1Q ^ valor0
E'emplo !. E'emplo completo con login atentificado
<?php
$ds>ldap%connect3"localhost"9; // ,sumimos Que el ser=idor OL, este en el
// ser=idor local
i# 3$ds9 :
// autenti#icarse con el dn apropiado para tener permisos de modi#icaciin
$r>ldap%bind3$ds,"cn>root, o>"i RompaDia, c>E&", "secreto"9;
// prepare data
$in#o)"cn"/>"edro Bre0";
$in#o)"sn"/>"edro";
$in#o)"mail"/>"pedro.p^alEun.sitio";
$in#o)"objectclass"/>"persona";
// add data to directory
$r>ldap%add3$ds, "cn>edro Bre0, o>"i RompaDia, c>E&", $in#o9;
ldap%close3$ds9;
; else :
echo "Ha sido imposible conectar al ser=idor OL,";
;
?>
ldap>bind
>P&P 7A P&P 8 A P&P 4?
ldapZ#ind 22 Autenti(ica en un directorio LDAP
Kescripci"n
int ldap>bind > int identi(icadorZdeZconeFion PA string rdnZdelZusuario PA string contraseWaQQ ?
e conecta a un directorio LDAP con un RDN y su contraseWa; Devuelve verdadero cuando (inaliza
correctamente y (also se produce un error;
ldap>bind./ se conecta al directorio con un determinado usuario; rdnZdeZusuario y contraseWa son
opcionales; i no son especi(icadosA se intenta el acceso an-nimo;
ldap>close
>P&P 7A P&P 8 A P&P 4?
ldapZclose 22 5ierra una coneFi-n a un servidor LDAP
Kescripci"n
int ldap>close > int identi(icadorZdeZconeFion ?
Devuelve verdadero cuando (inaliza correctamente y (also se produce un error;
ldap>close./ cierra la coneFi-n con el servidor LDAP asociada con el 6#ent696ca#or_#e_cone86on
especi(icado;
+sta llamada es id<ntica internamente a ldap>unbind./; La AP. LDAP usa la llamada ldap>unbind
./A y por lo tanto /uiz*s de#a usar esta llamada en lugar de ldap>close./;
ldap>compare
>P&P 8 _^ 8;3;0A P&P 4?
ldapZcompare 22 5ompare value o( attri#ute (ound in entry speci(ied Eith DN
Kescription
#ool ldap>compare > resource lin"Zidenti(ierA string dnA string attri#uteA string value ?
Returns TRUE i( alue matches otherEise returns FALSE; Returns 21 on error;
ldap>compare./ is used to compare alue o( attr61ute to value o( same attri#ute in LDAP directory
entry speci(ied Eith #n;
,he (olloEing eFample demonstrates hoE to chec" Ehether or not given passEord matches the one
de(ined in DN speci(ied entry;
E'emplo !. Complete e+ample of pass3ord checB
<?php
$ds>ldap%connect3"localhost"9; // assuminE the OL, ser=er is on this host

i# 3$ds9 :
// bind
i# 3ldap%bind3$ds99 :
// prepare data
$dn > "cn>"atti "eiIIu, ou>"y +nit, o>"y Rompany, c>S4";
$=alue > "secretpass8ord";
$attr > "pass8ord";
// compare =alue
$r>ldap%compare3$ds, $dn, $attr, $=alue9;
i# 3$r >>> F69 :
echo "Error@ " . ldap%error3$ds9;
; elsei# 3$r >>> true9 :
echo "ass8ord correct.";
; elsei# 3$r >>> #alse9 :
echo "7ronE Euess! ass8ord incorrect.";
;
; else :
echo "+nable to bind to OL, ser=er.";
;
ldap%close3$ds9;
; else :
echo "+nable to connect to OL, ser=er.";
;
?>
A5iso
ldap>compare./ can NO, #e used to compare B.NAR% valuesa
Nota- ,his (unction Eas added in 8;3;0;
ldap>connect
>P&P 7A P&P 8 A P&P 4?
ldapZconnect 22 5onecta con un servidor LDAP
Kescripci"n
int ldap>connect > Pstring nom#reZhost PA int puertoQQ ?
Devuelve un identi(icador de coneFi-n positivo en caso de <FitoA - (also si ocurre algBn error;
ldap>connect./ esta#lece una coneFi-n con el servidor LDAP especi(icado en nom1re_host y
puerto; Am#os argumentos son opcionales; i no se especi(icanA el identi(icador de la coneFi-n
LDAP actualmente a#ierta es devuelto; i s-lo es especi(icado nom1re_host el puerto tomado por
de(ecto es el 7M9;
ldap>count>entries
>P&P 7A P&P 8 A P&P 4?
ldapZcountZentries 22 5uenta el nBmero de entradas de una #Bs/ueda
Kescripci"n
int ldap>count>entries > int identi(icadorZdeZconeFionA int identi(icadorZdeZresultado ?
Devuelve el nBmero de entradas del resultado o (also si ha ocurrido algBn error;
ldap>count>entries./ devuelce el nBmero de entradas almacenadas en el resultado de operaciones
de #Bs/ueda previas; 6#ent696ca#or_#e_resulta#o identi(ica el resultado ldap interno al /ue hacemos
re(erencia;
ldap>delete
>P&P 7A P&P 8 A P&P 4?
ldapZdelete 22 Borra una entrada de un directorio
Kescripci"n
int ldap>delete > int identi(icadorZdeZconeFionA string dn ?
Devuelve verdadero cuando (inaliza correctamente y (also se produce un error;
La (unci-n ldap>delete./ #orra la entrada particular dn del directorio LDAP;
ldap>dn*ufn
>P&P 7A P&P 8 A P&P 4?
ldapZdn0u(n 22 5onvierte un dn al (ormato @ser Friendly Naming
Kescripci"n
string ldap>dn*ufn > string dn ?
La (unci-n ldap>dn*ufn./ es usada para convertir un DN en un (ormato m*s amiga#le para el
usuario;
ldap>err*str
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
ldapZerr0str 22 5onvertir el nBmero de error LDAP a un mensa'e de error tipo cadena
Kescripci"n
string ldap>err*str > int errno ?
Devuelve el mensa'e tipo cadena del error;
+sta (unci-n devuelve el mensa'e de error eFplicando el nBmero de error errno; Aun/ue los
nBmeros errno de LDAP est*n estandarizadosA #i#liotecas di(erentes devuelven mensa'es de error
teFtuales di(erentes o incluso localizados; Nunca revise el teFto de un mensa'e de error espec)(icoA
siempre use un nBmero de error para e(ectos de che/ueo;
$ea tam#i<n ldap>errno./ y ldap>error./;
E'emplo !. Enumeraci"n de todos los mensa'es de error :KAP
<?php
#or 3$i>2; $i<622; $i[[9 :
print#3"Error $i@ \s<br />Vn", ldap%errCstr3$i99;
;
?>
ldap>errno
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
ldapZerrno 22 Devuelve el nBmero de error LDAP del Bltimo comando LDAP
Kescripci"n
int ldap>errno > resource idZenlace ?
Devuelve el nBmero de error LDAP del Bltimo comando LDAP para este enlace;
+sta (unci-n devuelve el c-digo num<rico de error est*ndar devuelto por el Bltimo comando LDAP
en el 6#_enlace dado; +ste nBmero puede ser convertido en un mensa'e teFtual de error usando
ldap>err*str./;
A menos /ue decremente lo su(iciente su nivel de advertencia en php.ini o anteponga a los
comandos LDAP el s)m#olo W >arro#a? para suprimir la salida de advertenciasA los errores
generados ser*n mostrados tam#i<n en su salida &,ML;
E'emplo !. Feneraci"n y captura de un error
<?php
// Este ejemplo contiene un error, el cual atraparemos.
$ld > ldap%connect3"localhost"9;
$bind > ldap%bind3$ld9;
// error de sintaxis en la expresion de #iltro 3errno JH9,
// debe ser "objectclass>W" para Que #uncione.
$res > ^ldap%search3$ld, "o>"iorE, c>LE", "objectclass"9;
i# 3!$res9 :
echo "OL,FErrno@ " . ldap%errno3$ld9 . "<br />Vn";
echo "OL,FError@ " . ldap%error3$ld9 . "<br />Vn";
die3"&iexcl;,rEh!<br />Vn"9;
;
$in#o > ldap%Eet%entries3$ld, $res9;
echo $in#o)"count"/ . " entradas coincidentes.<br />Vn";
?>
$ea tam#i<n ldap>err*str./ y ldap>error./;
ldap>error
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
ldapZerror 22 Devuelve el mensa'e de error LDAP del Bltimo comando LDAP
Kescripci"n
string ldap>error > resource idZenlace ?
Devuelve la cadena del mensa'e de error;
+sta (unci-n devuelve la cadena del mensa'e de error /ue eFplica el error generado por el Bltimo
comando LDAP para el 6#_enlace dado; Aun/ue los nBmeros de error LDAP son est*ndarA
di(erentes #i#liotecas devuelven mensa'es de error teFtuales di(erentes o incluso localizados; Nunca
se de#e veri(icar la eFistencia de un mensa'e de teFto de error espec)(icoA en su lugar use siempre un
nBmero de error para los che/ueos;
A menos /ue decremente lo su(iciente su nivel de advertencia en php.ini o anteponga a los
comandos LDAP el s)m#olo W >arro#a? para suprimir la salida de advertenciasA los errores
generados ser*n mostrados tam#i<n en su salida &,ML;
$ea tam#i<n ldap>err*str./ y ldap>errno./;
ldap>e+plode>dn
>P&P 7A P&P 8 A P&P 4?
ldapZeFplodeZdn 22 Divide un DN en las partes /ue le componen
Kescripci"n
array ldap>e+plode>dn > string dnA int conZatri#utos ?
La (unci-n ldap>e+plode>dn./ es usada para dividir un DN devuelto por ldap>get>dn./ en las
partes /ue le componen; 5ada parte es conocida como Relative Distinguished Name >Nom#re
Relativo Distingui#le? a#reviado como RDN; ldap>e+plode>dn./ devuelve un array con todos esos
componentes; con_atr61utos sirve para especi(icar si los RDN se devuelven s-lo como valores o con
sus atri#utos tam#i<n >es decirA en un (ormato atri#uto^valor?; &ay /ue poner 76th_attr61 a 3 para
o#tener tam#i<n los atri#utos y a 1 para o#tener s-lo los valores;
ldap>first>attribute
>P&P 7A P&P 8 A P&P 4?
ldapZ(irstZattri#ute 22 Devuelte el primer atri#uto
Kescripci"n
string ldap>first>attribute > int identi(icadorZdeZconeFionA int
identi(icadorZdeZentradaZenZresultadoA int identi(icadorZ#er ?
Devuelte el primer atri#uto en la entrada o (also si ocurre algBn error;
De manera similar a leer entradasA los atri#utos tam#i<n son leidos de uno en uno de una entrada en
particular del directorio; ldap>first>attribute./ devuelve el primer atri#uto en la entrada a la /ue
apunta el identi(icadorZdeZentradaZenZresultado +l resto de los atri#utos son o#tenidos llamanda a
la (unci-n ldap>ne+t>attribute./ sucesivamente; +l par*metro 6n#et696ca#or_1er es el identi(icador
del puntero interno a memoria; +s pasado por re(erencia; +l mismo 6n#et696ca#or_1er es pasado a la
(unci-n ldap>ne+t>attribute./ /ue modi(ica dicho puntero;
$er tam#i<n ldap>get>attributes./
ldap>first>entry
>P&P 7A P&P 8 A P&P 4?
ldapZ(irstZentry 22 Devuelve el identi(icador del primer resultado
Kescripci"n
int ldap>first>entry > int identi(icadorZdeZconeFionA int identi(icadorZdeZresultado ?
Devuelve el identi(icador de la primera entrada del resultado - (also en caso de error;
Las entradas en un resultado LDAP son leidas secuencialmente usando las (unciones
ldap>first>entry./ y ldap>ne+t>entry./; ldap>first>entry./ devuelve el identi(icador de la primera
entrada del resultado; +ste identi(icador es entonces suministrado a la rutina lap>ne+t>entry./ pata
o#tener sucesivas entradas del resultado;
$er tam#i<n ldap>get>entries./;
ldap>first>reference
>P&P 8 _^ 8;3;4A P&P 4?
ldapZ(irstZre(erence 22 Return (irst re(erence
Kescription
resource ldap>first>reference > resource lin"A resource result ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ldap>free>result
>P&P 7A P&P 8 A P&P 4?
ldapZ(reeZresult 22 Li#era la memoria /ue almacena los resultados
Kescripci"n
int ldap>free>result > int identi(icadorZdeZresultado ?
Devuelve verdadero cuando (inaliza correctamente y (also se produce un error;
ldap>free>result./ li#era la memoria reservada internamente para almacenar el resultado de
#Bs/uedas LDAP asociada al identi(icador 6#ent696ca#or_#e_resulta#o; ,oda la memoria de
resultados es autom*ticamente li#erada al (inalizarse la e'ecuci-n de un script;
Normalmente la memoria reservada para resultados ldap se li#era al (inal del script; +n caso de /ue
el script realice sucesivas #Bs/uedas /ue devuelvan con'untos de resultados grandesA puede
utilizarse ldap>free>result./ para mantener #a'o el uso de memoria del script durante su e'ecuci-n;
ldap>get>attributes
>P&P 7A P&P 8 A P&P 4?
ldapZgetZattri#utes 22 O#tiene los atri#utos de una entrada de un resultado de #Bs/ueda
Kescripci"n
array ldap>get>attributes > int identi(icadorZdeZconeFionA int
identi(icadorZdeZentradaZdeZresultado ?
Devuelve una completa in(ormaci-n de la entrada en un array multidimensional o (also en caso de
error;
La (unci-n ldap>get>attributes./ es usada para simpli(icar el leer atri#utos y valores de una entrada
de un resultado de #Bs/ueda; +l valor de retorno es un array multidimensional de atri#utos y sus
valores;
,eniendo localizado una entrada espec)(ica en el directorio se puede conseguir la in(ormaci-n /ue
contiene dicha entrada usando esta llamada; Puede usar esta (unci-n para aplicaciones /ue naveguen
por las entradas del directorio yDo cuando no se conoce la estructura de las entradas del directorio;
+n otras aplicaciones se #usca un atri#uto espec)(icoA como la direcci-n de email o los apellidos y
no importa el resto de in(ormaci-n contenida;;
valorZdevueltoP=count=Q ^ nBmero de atri#utos en la entrada
valorZdevueltoP3Q ^ primer atri#uto
valorZdevueltoPnQ ^ en<simo atri#uto
valorZdevueltoP=atri#uto=QP=count=Q ^ nBmero de vaslores del atri#uto
valorZdevueltoP=atri#uto=QP3Q ^ primer valor del atri#uto
valorZdevueltoP=atri#uto=QPiQ ^ i<simo valor del atri#uto
E'emplo !. Mostrar la lista de atributos contenida en una entrada especfica de un directorio
// $ds es un identi#icador de conexiin al directorio
// $sr es un resultado de bhsQueda =elido de una llamada
// anterior a una de las #unciones de bhsQueda en directorios
// ldap.
$entrada > ldap%#irst%entry3$ds, $sr9;
$atributos > ldap%Eet%attributes3$ds, $entrada9;
echo $atributos)"count"/." atributos contenidos en esta entrada@<p>";
#or 3$i>2; $i < $atributos)"count"/; $i[[9
echo $atributos)$i/."<br>";
$er tam#i<n ldap>first>attribute./ y ldap>ne+t>attribute./
ldap>get>dn
>P&P 7A P&P 8 A P&P 4?
ldapZgetZdn 22 O#tiene el DN de una entrada de un resultado
Kescripci"n
string ldap>get>dn > int indenti(icadorZdeZconeFionA int indenti(icadorZdeZentradaZdeZresultado ?
Devuelve el DN de la entrada del resultado o (also en caso de error;
La (unci-n ldap>get>dn./ se utiliza para o#tener el DN de una entrada de un resultado de #Bs/ueda;
ldap>get>entries
>P&P 7A P&P 8 A P&P 4?
ldapZgetZentries 22 O#tiene todas las entradas de un resultado
Kescripci"n
array ldap>get>entries > int indenti(icadorZdeZconeFionA int indenti(icadorZdeZresultado ?
Devuelve una completa in(ormaci-n de un resultado de #Bs/ueda en un array multidimensional o
(also en caso de error;
La (unci-n ldap>get>entries./ es usada para simpli(icar el leer mBltiples entradas de de un
resultado y despu<s leer sus atri#utos y multiples valores; ,oda la in(ormaci-n es devuelta por una
llamada a una (unci-n en (orma de array multidimensional; La estructura del array es como se
muestra m*s a#a'o;
Los indices de atri#utos son convertidos a minBsculas; >Los atri#utos de servidores de directorios
son indi(erentes a las mayusculasDminusculasA pero no cuando son usados como indices de arrays?
valorZdevueltoP=count=Q ^ nBmero de entradas del resultado
valorZdevueltoP3Q C contiene los detalles de la primera entrada
valorZdevueltoPiQP=dn=Q ^ DN de la entrada i<sima del resultado
valorZdevueltoPiQP=count=Q ^ nBmero de atri#utos de la entrada i<sima
valorZdevueltoPiQP'Q ^ '<simo atri#uto de la i<sima entrada del resultado
valorZdevueltoPiQP=atri#uto=QP=count=Q ^ nBmero de valores para =atri#uto=
en la entrada i<sima
valorZdevueltoPiQP=atri#uto=QP'Q ^ '<simo valor de =atri#uto= en la entrada
i<sima
$er tam#i<n ldap>first>entry./ y ldap>ne+t>entry./
ldap>get>option
>P&P 8 _^ 8;3;8A P&P 4?
ldapZgetZoption 22 Get the current value (or given option
Kescription
#ool ldap>get>option > resource lin"Zidenti(ierA int optionA miFed iretval ?
ets retal to the value o( the speci(ied option; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
,he parameter opt6on can #e one o(C LDAPZOP,ZD+R+FA LDAPZOP,Z.I+L.M.,A
LDAPZOP,Z,.M+L.M.,A LDAPZOP,ZPRO,O5OLZ$+R.ONA
LDAPZOP,Z+RRORZN@MB+RA LDAPZOP,ZR+F+RRALA LDAPZOP,ZR+,AR,A
LDAPZOP,Z&O,ZNAM+A LDAPZOP,Z+RRORZ,R.NGA LDAPZOP,ZMA,5&+DZDN;
,hese are descri#ed in dra(t2iet(2ldapeFt2ldap2c2api2FF;tFt
Nota- ,his (unction is only availa#le Ehen using OpenLDAP 0;F;F OR Netscape
Directory DS F;FA and Eas added in P&P 8;3;8
E'emplo !. ChecB protocol 5ersion
<?php
// $ds is a =alid linI identi#ier #or a directory ser=er
i# 3ldap%Eet%option3$ds, OL,%?*%'?*?R?O%(E'&4?., $=ersion99 :
echo "+sinE protocol =ersion $=ersionVn";
; else :
echo "+nable to determine protocol =ersionVn";
;
?>
ee also ldap>set>option./;
ldap>get>5alues>len
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
ldapZgetZvaluesZlen 22 O#tiene todos los valores #inarios de un atri#uto de una entrada
Kescription
array ldap>get>5alues>len > int indenti(icadorZdeZconeFionA int
indenti(icadorZdeZentradaZdeZresultadoA string atri#uto ?
Devuelve un array de valores del atri#uto o (also en caso de error;
La (unci-n ldap>get>5alues>len./ se utiliza para o#tener todos los valores de un atri#uto de una
entrada de un resultado de #Bs/ueda; La entrada es especi(icada por el
6n#ent696ca#or_#e_entra#a_#e_resulta#o; +l nBmero de valores se almacena en el )ndice =count= del
array devuelto; Los valores individuales se almacenan con )ndices enteros en el array; +l primer
)ndice es 3;
+sta (unci-n se utiliza eFactamente como ldap>get>5alues./ salvo /ue permite mane'ar datos
#inarios y no cadenas de caracteres;
ldap>get>5alues
>P&P 7A P&P 8 A P&P 4?
ldapZgetZvalues 22 O#tiene todos los valores de un atri#uto de una entrada
Kescripci"n
array ldap>get>5alues > int identi(icadorZdeZconeFionA int identi(icadorZdeZentradaZdeZresultadoA
string atri#uto ?
Devuelve un array de valores del atri#uto o (also en caso de error;
La (unci-n ldap>get>5alues./ se utiliza para o#tener todos los valores de un atri#uto de una
entrada; La entrada del resultado es especi(icada por el 6#ent696ca#or_#e_entra#a_#e_resulta#o; +l
nBmero de valores se almacena en el )ndice =count= del array devuelto; Los valores individuales se
almacenan con )ndices enteros en el array; +l primer )ndice es 3;
+sta llamada necesita un 6#ent696ca#or_#e_entra#a_#e_resulta#oA por lo /ue necesita ser precedida
por una de las llamadas de #Bs/ueda ldap y una llamada para o#tener una entrada en particular del
resultado;
La aplicaci-n de#e ser o #ien programada espec)(icamente para #uscar ciertos atri#utos >como
apellidos o email? o #ien utilizar la (unci-n ldap>get>attributes./ para averiguar /ue atri#utos
eFisten para una entrada dadaA antes de llamar a ldap>get>5alues./;
LDAP permite mas de un valor para cada atri#utoA por lo /ue se puedeA por e'emploA almacenar
varias direcciones de email para una persona en el directorio y nom#rar a ese atri#uto como =email=
valorZdevueltoP=count=Q ^ nBmero de valores del atri#uto
valorZdevueltoP3Q ^ primer valor del atri#uto
valorZdevueltoPiQ ^ i<simo valor del atri#uto
E'emplo !. :istar todos los 5alores del atributo 0email0 de una entrada de un directorio
// $ds es un identi#icador de conexiin al directorio
// $sr es un resultado de bhsQueda =elido de una llamada
// anterior a una de las #unciones de bhsQueda en directorios
// ldap.
// $entrada es un identi#icador de entrada =elido de una llamada
// anterior a una de las #unciones Que de=uel=en una entrada de
// directorio
$=alores > ldap%Eet%=alues3$ds, $entrada,"email"9;
echo $=alores)"count"/." direcciones de email para esta entrada.<p>";
#or 3$i>2; $i < $=alores)"count"/; $i[[9
echo $=alores)$i/."<br>";
ldap>list
>P&P 7A P&P 8 A P&P 4?
ldapZlist 22 BBs/ueda de nivel Bnico
Kescripci"n
resource ldap>list > resource idZenlaceA string dnZ#aseA string (iltro PA array atri#utos PA int
soloZatri#s PA int limiteZtamanyo PA int limiteZtiempo PA int dere(QQQQQ ?
Devuelve un identi(icador de resultado de #Bs/uedaA o FALSE en caso de error;
ldap>list./ realiza la #Bs/ueda de un 96ltro especi(icado en el directorio con el conteFto
LDAPZ5OP+ZON+L+$+L;
LDAPZ5OP+ZON+L+$+L /uiere decir /ue la #Bs/ueda s-lo de#e devolver in(ormaci-n /ue se
encuentre en el nivel inmediatamente in(erior al #n_1ase especi(icado en la llamada; >Walente a
escri#ir =ls= y o#tener un listado de archivos y carpetas en el directorio de tra#a'o actual;?
+sta llamada reci#e 4 par*metros opcionales; $ea las notas de ldap>search./;
Nota- +stos par*metros opcionales (ueron agregados en 8;3;0C solo_atr61sA
l6m6te_taman?oA l6m6te_t6empoA #ere9;
E'emplo !. Producir una lista de todas los unidades organi6acionales de una organi6aci"n
// $ds es un identi#icador de enlace =alido para un ser=idor de directorios
$dn%base > "o>"i Rompa&ntilde;&iacute;a, c>E&";
$solo%estos > array3"ou"9;
$sr>ldap%list3$ds, $dn%base, "ou>W", $solo%estos9;
$in#o > ldap%Eet%entries3$ds, $sr9;
#or 3$i>2; $i<$in#o)"count"/; $i[[9 :
echo $in#o)$i/)"ou"/)2/ ;
;
Nota- A partir de 8;3;4A es posi#le realizar #Bs/uedas paralelas; $ea ldap>search./ para
m*s detalles;
ldap>mod>add
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
ldapZmodZadd 22 AWade valores de atri#utos
Kescripci"n
int ldap>mod>add > int identi(icadorZdeZconeFionA string dnA array entrada ?
Devuelve verdadero cuando (inaliza correctamente y (also se produce un error;
+sta (unci-n aWadir uno o varios atri#utos al dn especi(icado; Realiza la modi(icaci-n al nivel de
atri#utosA en vez de hacerlo al nivel de o#'etos; Las modi(icaciones a nivel de o#'eto son
propocionadas por la (unci-n ldap>add./;
ldap>mod>del
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
ldapZmodZdel 22 Borra valores de atri#utos
Kescripci"n
int ldap>mod>del > int identi(icadorZdeZconeFionA string dnA array entrada ?
returns TRUE on success and FALSE on error;
+sta (unci-n elimina atri#utos del dn especi(icado; Realiza la modi(icaci-n a nivel de atri#utosA en
vez de hacerlo a nivel de o#'etos; Las modi(icaciones a nivel de o#'eto son proporcionadas por la
(unci-n ldap>del./;
ldap>mod>replace
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
ldapZmodZreplace 22 Reemplaza valores de atri#utos
Kescripci"n
int ldap>mod>replace > int identi(icadorZdeZconeFionA string dnA array entrada ?
Devuelve verdadero cuando (inaliza correctamente y (also se produce un error;
+sta (unci-n reemplaza atri#utos del dn especi(icado; Realiza la modi(icaci-n a nivel de atri#utosA
en vez de hacerlo a nivel de o#'etos; Las modi(icaciones a nivel de o#'eto son proporcionadas por la
(unci-n ldap>modify./;
ldap>modify
>P&P 7A P&P 8 A P&P 4?
ldapZmodi(y 22 Modi(ica una entrada LDAP
Kescripci"n
int ldap>modify > int identi(icadorZdeZconeFionA string dnA array entrada ?
Devuelve verdadero cuando (inaliza correctamente y (also se produce un error;
La (unci-n ldap>modify./ se utiliza para modi(icar entradas eFistentes en un directorio LDAP; La
estructura de la entrada es igual a la de ldap>add./;
ldap>ne+t>attribute
>P&P 7A P&P 8 A P&P 4?
ldapZneFtZattri#ute 22 O#tiene el siguiente atri#uto de una entrada
Kescripci"n
string ldap>ne+t>attribute > int identi(icadorZdeZconeFionA int
identi(icadorZdeZentradaZdeZresultadoA int identi(icadorZ#er ?
Devuelve el siguiente atri#uto de una entrada o (also en caso de error;
ldap>ne+t>attribute./ es llamado para recuperar los atri#utos de una entrada; +l estado interno del
puntero es mantenido por el 6#ent696ca#or_1erA /ue es pasado por re(erencia a la (unci-n; La primera
llamada a ldap>ne+t>attribute./ es realizada con el 6#ent696ca#or_#e_entra#a_#e_resulta#o
devuelto por la (unci-n ldap>first>attribute./;
$er tam#i<n ldap>get>attributes./
ldap>ne+t>entry
>P&P 7A P&P 8 A P&P 4?
ldapZneFtZentry 22 O#tiene la siguiente entrada de un resultado
Kescripci"n
int ldap>ne+t>entry > int identi(icadorZdeZconeFionA int identi(icadorZdeZentradaZdeZresultado ?
Devuelve el identi(icador de la siguiente entrada del resultado; Las entradas de#en ha#er sido leidas
al principio con ldap>first>entry./; i no hay m*s entradas en el resultado devuelve (also;
La (unci-n ldap>ne+t>entry./ se utiliza para o#tener las entradas almacenadas en un resultado;
Llamadas sucesivas a la (unci-n ldap>ne+t>entry./ devuelven las entradas una a una hasta /ue ya
no /ueden m*s entradas; La primera llamada a ldap>ne+t>entry./ se realiza despu<s de llamar a
ldap>first>entry./;
$er tam#i<n ldap>get>entries./
ldap>ne+t>reference
>P&P 8 _^ 8;3;4A P&P 4?
ldapZneFtZre(erence 22 Get neFt re(erence
Kescription
resource ldap>ne+t>reference > resource lin"A resource entry ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ldap>parse>reference
>P&P 8 _^ 8;3;4A P&P 4?
ldapZparseZre(erence 22 +Ftract in(ormation (rom re(erence entry
Kescription
#ool ldap>parse>reference > resource lin"A resource entryA array ire(errals ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ldap>parse>result
>P&P 8 _^ 8;3;4A P&P 4?
ldapZparseZresult 22 +Ftract in(ormation (rom result
Kescription
#ool ldap>parse>result > resource lin"A resource resultA int ierrcode PA string imatcheddn PA string
ierrmsg PA array ire(erralsQQQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ldap>read
>P&P 7A P&P 8 A P&P 4?
ldapZread 22 Lee una entrada
Kescripci"n
int ldap>read > int identi(icadorZdeZconeFi-nA string dnZ#aseA string (iltro PA array atri#utosQ ?
Devuelve un identi(icador de resultado de #Bs/ueda o (also en caso de error;
ldap>read./ realiza la #Bs/ueda segBn el (iltro especi(icado con alcance LDAPZ5OP+ZBA+A
por lo /ue es Walente a leer cual/uier entrada del directorio;
No se permiten (iltros vacios; i se pretende o#tener a#solutamente toda la in(ormaci-nA se de#e
usar un (iltro del tipo =o#'ect5lass^V=; i conoce /ue tipos de entradas son usadas en el servidor de
directorio es conveniente usar el (iltro apropiadoA como por e'emplo =o#'ect5lass^inetOrgPerson=;
+sta llamada toma un cuarto par*metro opcional /ue es un array de los atri#utos re/ueridos;
5onsulte las notas de la (unci-n ldap>search./;
ldap>rename
>P&P 8 _^ 8;3;4A P&P 4?
ldapZrename 22 Modi(y the name o( an entry
Kescription
#ool ldap>rename > resource lin"Zidenti(ierA string dnA string neErdnA string neEparentA #ool
deleteoldrdn ?
,he entry speci(ied #y #n is renamedDmoved; ,he neE RDN is speci(ied #y ne7r#n and the neE
parentDsuperior entry is speci(ied #y ne7parent; .( the parameter #eleteol#r#n is TRUE the old RDN
value>s? is removedA else the old RDN value>s? is retained as non2distinguished values o( the entry;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- ,his (unction currently only Eor"s Eith LDAPv7; %ou may have to use
ldap>set>option./ prior to #inding to use LDAPv7; ,his (unction is only availa#le
Ehen using OpenLDAP 0;F;F OR Netscape Directory DS F;FA and Eas added in P&P
8;3;4;
ldap>sasl>bind
>P&P 4?
ldapZsaslZ#ind 22 Bind to LDAP directory using AL
Kescription
#ool ldap>sasl>bind > resource lin" ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Me?uirement- ldap>sasl>bind./ re/uires AL support >sasl.h?; Be sure ==76th=
l#ap=sasl is used Ehen con(iguring P&P otherEise this (unction Eill #e unde(ined;
ldap>search
>P&P 7A P&P 8 A P&P 4?
ldapZsearch 22 Busca en un ar#ol LDAP
Kescripci"n
int ldap>search > int identi(icadorZdeZconeFionA string dnZ#aseA string (iltro PA array atri#utosQ ?
Devuelve un identi(icador de resultado de #Bs/ueda o (also en caso de error;
ldap>search./ realiza la #Bs/ueda segBn el (iltro especi(icado con alcance
LDAPZ5OP+Z@B,R++; +sto es Walente a #uscar en el directorio entero; #n_1ase especi(ica el
DN #ase para el directorio;
+Fiste un cuarto par*metro opcional /ue puede ser aWadido para restringir los atri#utos y valores
devueltos por el servidor a s-lo los re/ueridos; +s mucho m*s e(iciente /ue la acci-n por de(ecto
>/ue devolver* todos los atri#utos y sus valores asociados?; +l uso del cuarto par*metro de#e ser por
tanto considerado una pr*ctica recomenda#le;
+l cuerto par*metro es un array est*ndar de P&P con los atri#utos re/ueridosA por e'emplo array
>=email=A=sn=A=cn=?; NotaC =dn= siempre es devuelto independientemente de /ue tipos de atri#utos
sean solicitados;
,am#i<n es necesario resaltar /ue algunos servidores de directorio est*n con(igurados para devolver
un cierto nBmero de entradas como m*Fimo; i esto ocurreA el servidor indicar* /ue solo devuelve
un con'unto de resultados parcial;
+l (iltro de #Bs/ueda puede ser simple o avanzadoA usando operadores #ooleanos en el (ormato
descrito en la documentaci-n so#re LDAP >5onsulte el Netscape Directory DS para o#tener
completa in(ormaci-n so#re (iltros?;
+l e'emplo de a#a'o recupera la unidad organizativa >ou?A apellidos nom#re comBn y direcci-n de
email para todas las personas de =Mi 5ompaW)a= donde los apellidos o el nom#re comBn contiene la
su#cadena Ypersona; +ste e'emplo usa un (iltro #ooleano para indicar al servidor /ue #us/ue la
in(ormaci-n en m*s de un atri#uto;
E'emplo !. 14s?ueda :KAP
// $ds es un identi#icador de conexiin =elido
// $persona es todo o parte del nombre de una persona, por ejemplo "e"
$dn > "o>"i RompaDga, c>E&";
$#iltro>"3T3sn>$personaW93Ei=enname>$personaW99";
$solonecesito > array3 "ou", "sn", "Ei=enname", "mail"9;
$sr>ldap%search3$ds, $dn, $#iltro, $solonecesito9;
$in#o > ldap%Eet%entries3$ds, $sr9;
print $in#o)"count"/." entradas de=ueltas<p>";
ldap>set>option
>P&P 8 _^ 8;3;8A P&P 4?
ldapZsetZoption 22 et the value o( the given option
Kescription
#ool ldap>set>option > resource lin"Zidenti(ierA int optionA miFed neEval ?
ets the value o( the speci(ied option to #e ne7al; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo; on error;
,he parameter opt6on can #e one o(C LDAPZOP,ZD+R+FA LDAPZOP,Z.I+L.M.,A
LDAPZOP,Z,.M+L.M.,A LDAPZOP,ZPRO,O5OLZ$+R.ONA
LDAPZOP,Z+RRORZN@MB+RA LDAPZOP,ZR+F+RRALA LDAPZOP,ZR+,AR,A
LDAPZOP,Z&O,ZNAM+A LDAPZOP,Z+RRORZ,R.NGA LDAPZOP,ZMA,5&+DZDNA
LDAPZOP,Z+R$+RZ5ON,ROLA LDAPZOP,Z5L.+N,Z5ON,ROL; &ereHs a #rie(
descriptionA see dra(t2iet(2ldapeFt2ldap2c2api2FF;tFt (or details;
,he options LDAPZOP,ZD+R+FA LDAPZOP,Z.I+L.M.,A LDAPZOP,Z,.M+L.M.,A
LDAPZOP,ZPRO,O5OLZ$+R.ON and LDAPZOP,Z+RRORZN@MB+R have integer valueA
LDAPZOP,ZR+F+RRAL and LDAPZOP,ZR+,AR, have #oolean valueA and the options
LDAPZOP,Z&O,ZNAM+A LDAPZOP,Z+RRORZ,R.NG and LDAPZOP,ZMA,5&+DZDN
have string value; ,he (irst eFample illustrates their use; ,he options
LDAPZOP,Z+R$+RZ5ON,ROL and LDAPZOP,Z5L.+N,Z5ON,ROL re/uire a list o(
controlsA this means that the value must #e an array o( controls; A control consists o( an o6#
identi(ying the controlA an optional alueA and an optional (lag (or cr6t6cal6t?; .n P&P a control is
given #y an array containing an element Eith the "ey o6# and string valueA and tEo optional
elements; ,he optional elements are "ey alue Eith string value and "ey 6scr6t6cal Eith #oolean
value; 6scr6t6cal de(aults to FALSE i( not supplied; ee also the second eFample #eloE;
Nota- ,his (unction is only availa#le Ehen using OpenLDAP 0;F;F OR Netscape
Directory DS F;FA and Eas added in P&P 8;3;8;
E'emplo !. ,et protocol 5ersion
<?php
// $ds is a =alid linI identi#ier #or a directory ser=er
i# 3ldap%set%option3$ds, OL,%?*%'?*?R?O%(E'&4?., <99 :
echo "+sinE OL,=<";
; else :
echo "Sailed to set protocol =ersion to <";
;
?>
E'emplo *. ,et ser5er controls
<?php
// $ds is a =alid linI identi#ier #or a directory ser=er
// control 8ith no =alue
$ctrl6 > array3"oid" >> "6.C.H5C.5J.62.6", "iscritical" >> true9;
// iscritical de#aults to S,O&E
$ctrlC > array3"oid" >> "6.C.H5C.5J.6.62", "=alue" >> "maEic"9;
// try to set both controls
i# 3!ldap%set%option3$ds, OL,%?*%&E'(E'%R?.*'?O&, array3$ctrl6, $ctrlC999
echo "Sailed to set ser=er controls";
?>
ee also ldap>get>option./;
ldap>set>rebind>proc
>P&P 8 _^ 8;0;3A P&P 4?
ldapZsetZre#indZproc 22 et a call#ac" (unction to do re2#inds on re(erral chasing
Kescription
#ool ldap>set>rebind>proc > resource lin"A call#ac" call#ac" ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ldap>sort
>P&P 8 _^ 8;0;3A P&P 4?
ldapZsort 22 ort LDAP result entries
Kescription
#ool ldap>sort > resource lin"A resource resultA string sort(ilter ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ldap>start>tls
>P&P 8 _^ 8;0;3A P&P 4?
ldapZstartZtls 22 tart ,L
Kescription
#ool ldap>start>tls > resource lin" ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ldap>t<!>to>NN9O
>P&P 8 _^ 8;3;0A P&P 4?
ldapZtK1ZtoZMM49 22 ,ranslate tK1 characters to MM49 characters
Kescription
string ldap>t<!>to>NN9O > string value ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ldap>unbind
>P&P 7A P&P 8 A P&P 4?
ldapZun#ind 22 &ace logout de un directorio LDAP
Kescripci"n
int ldap>unbind > int identi(icadorZdeZconeFion ?
Devuelve verdadero cuando (inaliza correctamente y (also se produce un error;
La (unci-n ldap>unbind./ hace logoutA desautenti(ica de un directorio LDAP;
:II. lib+ml ;unctions
Introducci"n
,hese (unctionsDconstants are availa#le since P&P 4;1;3 and i( you have compiled one o( the
eFtensions #ased on li#FmlA li"e DOMA impleJML and JL,;
Me?uirimientos
,his eFtension re/uires li#Fml _^ 0;K;3;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
LI(%ML_DTDATTR >integer?
De(ault D,D attri#utes
LI(%ML_DTDLOAD >integer?
Load the eFternal su#set
LI(%ML_DTD$ALID >integer?
$alidate Eith the D,D
LI(%ML_ERR_ERROR >integer?
A recovera#le error
LI(%ML_ERR_FATAL >integer?
A (atal error
LI(%ML_ERR_NONE >integer?
No errors
LI(%ML_ERR_"ARNIN# >integer?
A simple Earning
LI(%ML_NO(LAN&S >integer?
Remove #lan" nodes
LI(%ML_NOCDATA >integer?
Merge 5DA,A as teFt nodes
LI(%ML_NOENT >integer?
u#stitute entities
LI(%ML_NOERROR >integer?
uppress error reports
LI(%ML_NONET >integer?
Disa#le netEor" access Ehen loading documents
LI(%ML_NO"ARNIN# >integer?
uppress Earning reports
LI(%ML_NSCLEAN >integer?
Remove redundant namespaces declarations
LI(%ML_%INCLUDE >integer?
.mplement J.nclude su#stitution
Tabla de contenidos
li#FmlZclearZerrors 22 5lear li#Fml error #u((er
li#FmlZgetZerrors 22 Retrieve array o( errors
li#FmlZgetZlastZerror 22 Retrieve last error (rom li#Fml
li#FmlZsetZstreamsZconteFt 22 et the streams conteFt (or the neFt li#Fml document load or Erite
li#FmlZuseZinternalZerrors 22 Disa#le li#Fml errors and alloE user to (etch error in(ormation as
needed
lib+ml>clear>errors
>no version in(ormationA might #e only in 5$?
li#FmlZclearZerrors 22 5lear li#Fml error #u((er
Kescripci"n
void lib+ml>clear>errors > void ?
lib+ml>clear>errors./ clears the li#Fml error #u((er;
Calores retornados
No value is returned;
Cer tambi%n
lib+ml>get>errors./
lib+ml>get>last>error./
lib+ml>get>errors
>no version in(ormationA might #e only in 5$?
li#FmlZgetZerrors 22 Retrieve array o( errors
Kescripci"n
array lib+ml>get>errors > void ?
Retrieve array o( errors;
Calores retornados
Returns an array Eith Li#JML+rror o#'ects i( there are any errors in the #u((erA or an empty array
otherEise;
E'emplos
E'emplo !. A lib+ml>get>errors./ e+ample
,his eFample demonstrates hoE to #uild a simple li#Fml error handler;
<?php
libxml%use%internal%errors3true9;
$xmlstr > <<< X"O
<?xml =ersion>M6.2M standalone>MyesM?>
<mo=ies>
<mo=ie>
<titles>H@ Zehind the arser</title>
</mo=ie>
</mo=ies>
X"O;
$doc > simplexml%load%strinE3$xmlstr9;
i# 3!$doc9 :
$errors > libxml%Eet%errors39;
#oreach 3$errors as $error9 :
echo display%xml%error3$error9;
;
libxml%clear%errors39;
;
#unction display%xml%error3$error9 :
s8itch 3$errorF>le=el9 :
case O4ZX"O%E''%7,'.4.-@
$return > "7arninE $errorF>code@ ";
breaI;
case O4ZX"O%E''%E''?'@
$return > "Error $errorF>code@ ";
breaI;
case O4ZX"O%E''%S,*,O@
$return > "Satal Error $errorF>code@ ";
breaI;
;
$return .> trim3$errorF>messaEe9 .
"Vn Oine@ $errorF>line" .
"Vn Rolumn@ $errorF>column";
i# 3$errorF>#ile9 :
$return .> "Vn Sile@ $errorF>#ile";
;
return "$returnVn";
;
?>
+l resultado del e'emplo seriaC
Satal Error HG@ ?peninE and endinE taE mismatch@ titles line 1 and title
Oine@ 1
Rolumn@ 2
Cer tambi%n
lib+ml>get>last>error./
lib+ml>clear>errors./
lib+ml>get>last>error
>no version in(ormationA might #e only in 5$?
li#FmlZgetZlastZerror 22 Retrieve last error (rom li#Fml
Kescripci"n
Li#JML+rror lib+ml>get>last>error > void ?
Retrieve last error (rom li#Fml;
Calores retornados
Returns a Li#JML+rror o#'ect i( there is any error in the #u((erA FALSE otherEise;
Cer tambi%n
lib+ml>get>errors./
lib+ml>clear>errors./
lib+ml>set>streams>conte+t
>P&P 4?
li#FmlZsetZstreamsZconteFt 22 et the streams conteFt (or the neFt li#Fml document load or Erite
Kescripci"n
void lib+ml>set>streams>conte+t > resource streamsZconteFt ?
ets the streams conteFt (or the neFt li#Fml document load or Erite;
:ista de parmetros
streams_conte8t
,he stream conteFt resource >created Eith stream>conte+t>create./?
Calores retornados
No value is returned;
E'emplos
E'emplo !. A lib+ml>set>streams>conte+t./ e+ample
<?php
$opts > array3
MhttpM >> array3
Muser%aEentM >> MH libxml aEentM,
9
9;
$context > stream%context%create3$opts9;
libxml%set%streams%context3$context9;
// reQuest a #ile throuEh H**
$doc > L?"Locument@@load3Mhttp@//888.example.com/#ile.xmlM9;
?>
Cer tambi%n
stream>conte+t>create./
lib+ml>use>internal>errors
>no version in(ormationA might #e only in 5$?
li#FmlZuseZinternalZerrors 22 Disa#le li#Fml errors and alloE user to (etch error in(ormation as
needed
Kescripci"n
#ool lib+ml>use>internal>errors > P#ool useZerrorsQ ?
lib+ml>use>internal>errors./ alloEs you to disa#le standard li#Fml errors and ena#le user error
handling;
:ista de parmetros
use_errors
Lhether to ena#le user error handling; De(aults to FALSE;
Calores retornados
,his (unction returns the previous value o( use_errors;
E'emplos
E'emplo !. A lib+ml>use>internal>errors./ e+ample
,his eFample demonstrates the #asic usage o( li#Fml errors and the value returned #y this (unction;
<?php
// enable user error handlinE
=ar%dump3libxml%use%internal%errors3true99;
$doc > L?"Locument@@load3M#ile.xmlM9;
i# 3!$doc9 :
$errors > libxml%Eet%errors39;
#oreach 3$errors as $error9 :
// handle errors here
;
libxml%clear%errors39;
;
?>
+l resultado del e'emplo seriaC
bool3#alse9
Cer tambi%n
lib+ml>clear>errors./
lib+ml>get>errors./
:I. :b; ;unctions
Introducci"n
LIF is a very (ast compression algorithmA ideal (or saving space Eith only slight speed cost; .t can
#e optimized (or speed or space at the time o( compilation;
Instalaci"n
+sta eFtension P+5L no esta ligada a P&P; Mas in(ormacion so#re nuevos lanzamientosA descargas
(icheros de (uentesA in(ormacion so#re los responsa#les asi como un H5&ANG+LOGHA se puede
encontrar a/uiC httpCDDpecl;php;netDpac"ageDlz(;
.n order to use these (unctions you must compile P&P Eith lz( support #y using the ==76th=lD9
):D0R. con(igure option; %ou may also pass ==ena1le=lD9=1etter=compress6on to optimize LIF (or
space rather then speed;
LindoEs users Eill ena#le php%l0#.dll inside o( php.ini in order to use these (unctions;
Podeis descargar esta DLL de las eFtensiones P+5L desde la pagina P&P DoEnloads o desde
httpCDDsnaps;php;netD;
Tabla de contenidos
lz(Zcompress 22 LIF compression
lz(Zdecompress 22 LIF decompression
lz(ZoptimizedZ(or 22 Determines Ehat LIF eFtension Eas optimized (or
l6f>compress
>no version in(ormationA might #e only in 5$?
lz(Zcompress 22 LIF compression
Kescripci"n
string l6f>compress > string data ?
l6f>compress./ compresses the given #ata;
:ista de parmetros
#ata
,he string to compress;
Calores retornados
Returns the compressed data or FALSE i( an error occurred;
Cer tambi%n
l6f>decompress./
l6f>decompress
>no version in(ormationA might #e only in 5$?
lz(Zdecompress 22 LIF decompression
Kescripci"n
string l6f>decompress > string data ?
l6f>compress./ decompresses the given #ata;
:ista de parmetros
#ata
,he compressed string;
Calores retornados
Returns the decompressed data or FALSE i( an error occurred;
Cer tambi%n
l6f>compress./
l6f>optimi6ed>for
>no version in(ormationA might #e only in 5$?
lz(ZoptimizedZ(or 22 Determines Ehat LIF eFtension Eas optimized (or
Kescripci"n
int l6f>optimi6ed>for > void ?
Determines (or Ehat the LIF eFtension Eas optimised;
Calores retornados
Returns 1 i( LIF Eas optimized (or speedA 3 (or compression;
:II. ;unciones de Correo
Introducci"n
La (unci-n mail./ le permite enviar correo;
Me?uirimientos
Para /ue las (unciones de 5orreo se encuentren disponi#lesA P&P de#e tener acceso al #inario
sen#ma6l en su sistema durante tiempo de compilaci-n; i usa otro programa de correoA como /mail
o post(iFA asugBrese de usar las envolturas sendmail apropiadas /ue vienen con tales sistemas de
correo; P&P #uscar* sendmail primero en su +,T!A y luego en los siguientes sitiosC /
usr/16n:/usr/s16n:/usr/etc:/etc:/usr/uc1l61:/usr/l61; +s #astante recomenda#le contar con el programa
sendmail disponi#le en su +,T!; AsimismoA el usuario /ue compile P&P de#e tener permiso para
acceder al #inario sendmail;
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones de configuraci"n de correo
Nombre Predeterminado Modificable
M,P =localhost= P&PZ.N.ZALL
smtpZport =04= P&PZ.N.ZALL
sendmailZ(ro
m
N@LL P&PZ.N.ZALL
sendmailZpath
D+FA@L,Z+NDMA.LZPA,
&
P&PZ.N.Z%,+M
Para m*s detalles so#re las constantes P&PZ.N.ZV y su de(inici-nA vea ini>set./;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
SMT+ string
@sado #a'o LindoEs BnicamenteC el nom#re DN o direcci-n .P del servidor M,P /ue
de#er)a usar P&P para el env)o de correo con la (unci-n mail./;
smtp_port int
@sado #a'o LindoEs BnicamenteC NBmero del puerto para conectarse al servidor especi(icado
en el par*metro SMT+ cuando se env)e correo con mail./X su valor predeterminado es 04; e
encuentra disponi#le solo a partir de P&P 8;7;3;
sen#ma6l_9rom string
Ou< direcci-n de correo =FromC= de#e ser usada en el correo enviado desde P&P #a'o
LindoEs;
sen#ma6l_path string
+n d-nde puede encontrarse el programa sendmailA usualmente /usr/sbin/sendmail o
/usr/lib/sendmail; configure realiza un honesto intento por u#icar este valor para
usted y de(inir un valor predeterminadoA pero si (allaA puede de(inirlo a/u);
Los sistema /ue no usan sendmail de#en de(inir esta directiva al reemplazo de sendmail /ue
o(recen sus sistemas de correoA si eFiste; Por e'emploA los usuarios de Omail pueden de(inir
este valor normalmente a /=ar/Qmail/bin/sendmail o /=ar/Qmail/bin/QmailF
inject;
?mail(in'ect no re/uiere ninguna opci-n para procesar el correo correctamente;
+sta directiva (unciona tam#i<n #a'o LindoEs; i est* de(inidaA smtpA smtp_port y
sen#ma6l_9rom son ignoradas y se e'ecuta el comando especi(icado;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
ezmlmZhash 22 5alcular el valor hash /ue necesita +IMLM
mail 22 +nviar correo
e6mlm>hash
>P&P 7_^ 7;3;1:A P&P 8 _^ 8;3;0A P&P 4?
ezmlmZhash 22 5alcular el valor hash /ue necesita +IMLM
Kescripci"n
int e6mlm>hash > string dir ?
e6mlm>hash./ calcula el valor de hash /ue se necesita cuando se administran listas de correo
+IMLM en una #ase de datos MyOL;
E'emplo !. Clculo de hash y suscripci"n de un usuario
<?php
$usuario > "joecool^example.com";
$hash > e0mlm%hash3$usuario9;
$consulta > sprint#3"4.&E'* 4.*? ejemplo (,O+E& 3\s, M\sM9", $hash, $usuario9;
$dbF>Query3$consulta9; // usando la inter#a0 de bd HO4Z
?>
mail
>P&P 7A P&P 8 A P&P 4?
mail 22 +nviar correo
Kescripci"n
#ool mail > string paraA string asuntoA string mensa'e PA string ca#ecerasZadicionales PA string
parametrosZadicionalesQQ ?
mail./ env)a autom*ticamente por correo el mensa'e especi(icado en mensaUe al recipiente
especi(icado en para; +s posi#le especi(icar mBltiples recipientes colocando una coma entre cada
direcci-n en la cadena para; +s posi#le enviar correo electr-nico con archivos ad'untos y tipos
especiales usando esta (unci-n; +sto se consigue mediante el uso de codi(icaci-n M.M+ 2 para m*s
in(ormaci-nA vea este art)culo de Iend o las 5lases Mime P+AR;
Los siguientes RF5 pueden resultar asimismo BtilesC RF5 1M9KA RF5 0384A RF5 038KA RF5 038:A
RF5 038MA y RF5 0389;
mail./ devuelve TRUE si el correo (ue aceptado satis(actoriamente para su env)oA o FALSE de lo
contrario;
A5iso
La implementaci-n de LindoEs de mail./ di(iere en varias (ormas de la implementaci-n en @niF;
PrimeroA no usa un #inario local para componer mensa'esA en su lugar opera directamente so#re
soc"etsA lo /ue /uiere decir /ue se re/uiere de un MT, /ue escuche so#re un soc"et de red >el cual
puede estar en el host local o en una m*/uina remota?; egundoA las ca#eceras personalizadas
como 3rom:A Cc:A Acc: y Date: no son interpretadas por el MT, en primera instanciaA son
interpretadas por P&P; P&P ` 8;7 s-lo soporta#a el elemento de ca#ecera Cc: >y era sensi#le a
mayBsculas y minBsculas?; P&P _^ 8;7 soporta todos los elementos de ca#ecera mencionados y ya
no es sensi#le a mayBsculas y minBsculas;
E'emplo !. En5o de correo
<?php
mail3"juanFelFlisto^example.com", ""i ,sunto", "Oinea 6VnOinea CVnOinea <"9;
?>
i un cuarto argumento tipo cadena es entregadoA <ste es insertado al (inal de la ca#ecera; +sto se
usa t)picamente con el prop-sito de agregar ca#eceras adicionales; Las ca#eceras eFtra son
separadas entre s) con un retorno de carro y un salto de l)nea;
Nota- De#e usar QrQn para separar las ca#ecerasA aun cuando puede /ue los agentes de
trans(erencia de correo en @niF tra#a'en con solo una nueva l)nea >Qn?;
E'emplo *. En5o de correo con cabeceras adicionales
<?php
mail3"nadie^example.com", "el asunto", $mensaje,
"Srom@ 8ebmaster^:$%&E'(E')M&E'(E'%.,"EM/;VrVn" .
"'eplyF*o@ 8ebmaster^:$%&E'(E')M&E'(E'%.,"EM/;VrVn" .
"XF"ailer@ H/" . php=ersion399;
?>
+l valor parametros_a#6c6onales puede ser usado para pasar un par*metro eFtra al programa
con(igurado para ser usado cuando se env)e correo mediante la opci-n de con(iguraci-n
sen#ma6l_path; Por e'emploA <ste par*metro puede usarse para de(inir la direcci-n de so#re del
origen cuando se usa sendmail con la opci-n =9; Puede /ue tam#i<n necesite agregar el usuario #a'o
el /ue corre su servidor Ee# a la con(iguraci-n de sendmail para evitar /ue se agregue una ca#ecera
HJ2LarningH al mensa'e cuando de(ine el so#re del origen mediante este m<todo;
E'emplo 7. En5o de correo con cabeceras adicionales y definiendo un parmetro e+tra de lnea de comandos
<?php
mail3"nadie^example.com", "el asunto", $mensaje,
"Srom@ 8ebmaster^:$%&E'(E')M&E'(E'%.,"EM/;", "F#8ebmaster^:$%&E'(E')M&E'(E'%.,"EM/;"9;
?>
Nota- +ste /uinto par*metro (ue agregado en P&P 8;3;4; A partir de P&P 8;0;7 este
par*metro se encuentra desha#ilitado en sa(eZmode y la (unci-n mail./ producir* un
mensa'e de advertencia y devolver* FALSE si trata de usarlo;
,am#i<n puede usar t<cnicas simples de construcci-n de cadenas para generar mensa'es comple'os
de correo electr-nico;
E'emplo 8. En5o de correo electr"nico comple'o
<?php
/W recipientes W/
$para > "maria^example.com" . ", " ; // #ijese en la comma
$para .> "Ielly^example.com";
/W asunto W/
$asunto > "'ecordatorio de Rumplea&ntilde;os para ,Eosto";
/W mensaje W/
$mensaje > M
<html>
<head>
<title>'ecordatorio de Rumplea&ntilde;os para ,Eosto</title>
</head>
<body>
<p>&iexcl;,Qu&iacute; est&aacute;n los cumplea&ntilde;os Que lleEan en ,Eosto!</p>
<table>
<tr>
<th>ersona</th><th>L&iacute;a</th><th>"es</th><th>,&ntilde;o</th>
</tr>
<tr>
<td>Auan</td><td><</td><td>,uEust</td><td>6KH2</td>
</tr>
<tr>
<td>&andra</td><td>6H</td><td>,uEust</td><td>6KH<</td>
</tr>
</table>
</body>
</html>
M;
/W ara en=iar correo H*"O, puede de#inir la cabecera RontentFtype. W/
$cabeceras > ""4"EF(ersion@ 6.2VrVn";
$cabeceras .> "RontentFtype@ text/html; charset>isoFJJ5KF6VrVn";
/W cabeceras adicionales W/
$cabeceras .> "*o@ "aria <maria^example.com>, ]elly <Ielly^example.com>VrVn";
$cabeceras .> "Srom@ 'ecordatorio <cumpleanyos^example.com>VrVn";
$cabeceras .> "Rc@ archi=o^example.comVrVn";
$cabeceras .> "Zcc@ cheQueo^example.comVrVn";
/W y ahora, en=iarlo W/
mail3$para, $asunto, $mensaje, $cabeceras9;
?>
Nota- AsegBrese de /ue no tiene caracteres de salto de l)nea en los par*metros para o
asuntoA o puede /ue el correo no sea enviado correctamente;
Nota- +l par*metro para no de#er)a ser una direcci-n en la (orma de =Algo
`alguienGeFample;com_=; +s posi#le /ue el comando de correo no interprete esto
correctamente mientras ha#la cen el M,A >particularmente #a'o EindoEs?;
$ea tam#i<n imap>mail./;
:III. ;unciones mailparse
Introducci"n
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
+sta eFtensi-n ha sido movida desde P&P a partir de P&P 8;0;3 y ahora mailparse eFiste en P+5L;
Instalaci"n
+sta eFtension P+5L no esta ligada a P&P; Mas in(ormacion so#re nuevos lanzamientosA descargas
(icheros de (uentesA in(ormacion so#re los responsa#les asi como un H5&ANG+LOGHA se puede
encontrar a/uiC httpCDDpecl;php;netDpac"ageDmailparse;
Para usar <stas (uncionesA es necesario compilar P&P con soporte mailparse mediante el uso de la
opci-n de con(iguraci-n ==ena1le=ma6lparse;
Los usuarios de EindoEs de#en ha#ilitar php%mailparse.dll al interior de php.ini para
usar <stas (unciones; Podeis descargar esta DLL de las eFtensiones P+5L desde la pagina P&P
DoEnloads o desde httpCDDsnaps;php;netD;
Tabla de contenidos
mailparseZdetermineZ#estZF(erZencoding 22 +ncuentra la me'or (orma de codi(icar el contenido
le)do desde el apuntador de archivo (pA el cual de#e tener capacidades de #Bs/ueda
mailparseZmsgZcreate 22 Devuelve un gestor /ue puede ser usado para procesar un mensa'e
mailparseZmsgZeFtractZpartZ(ile 22 +FtraeDdecodi(ica una secci-n de mensa'eA operando so#re la
codi(icaci-n de trans(erencia
mailparseZmsgZeFtractZpart 22 +FtraeDdecodi(ica una secci-n de mensa'e
mailparseZmsgZ(ree 22 Li#era un gestor u#icado por mailparse>msg>create./
mailparseZmsgZgetZpartZdata 22 Devuelve una matriz asociativa de in(ormaci-n so#re el mensa'e
mailparseZmsgZgetZpart 22 Devuelve un gestor so#re una secci-n dada en un mensa'e mime
mailparseZmsgZgetZstructure 22 Devuelve una matriz de nom#res de secci-n mime en el mensa'e
dado
mailparseZmsgZparseZ(ile 22 Procesar un archivo y devolver un recurso /ue represente la estructura
mailparseZmsgZparse 22 Procesar datos incrementalmente so#re un #B(er
mailparseZr(cM00ZparseZaddresses 22 Procesar direcciones y devolver una matriz asociativa /ue
contenga los datos
mailparseZstreamZencode 22 ecuencia datos desde un apuntador de archivoA codi(ica y escri#e a
(pZdestino
mailparseZuudecodeZall 22 Procesa los datos desde un apuntador a archivo y eFtrae cada archivo
em#e#ido con codi(icaci-n uu
mailparse>determine>best>+fer>encoding
>8;1;3 2 8;1;0 only?
mailparseZdetermineZ#estZF(erZencoding 22 +ncuentra la me'or (orma de codi(icar el contenido
le)do desde el apuntador de archivo (pA el cual de#e tener capacidades de #Bs/ueda
Kescripci"n
int mailparse>determine>best>+fer>encoding > resource (p ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mailparse>msg>create
>8;1;3 2 8;1;0 only?
mailparseZmsgZcreate 22 Devuelve un gestor /ue puede ser usado para procesar un mensa'e
Kescripci"n
int mailparse>msg>create > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mailparse>msg>e+tract>part>file
>8;1;3 2 8;1;0 only?
mailparseZmsgZeFtractZpartZ(ile 22 +FtraeDdecodi(ica una secci-n de mensa'eA operando so#re la
codi(icaci-n de trans(erencia
Kescripci"n
string mailparse>msg>e+tract>part>file > resource r(c0384A string nom#reZarchivo PA call#ac"
llamadaZretornoQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mailparse>msg>e+tract>part
>8;1;3 2 8;1;0 only?
mailparseZmsgZeFtractZpart 22 +FtraeDdecodi(ica una secci-n de mensa'e
Kescripci"n
void mailparse>msg>e+tract>part > resource r(c0384A string cuerpoZmensa'e PA call#ac"
llamadaZretornoQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
i la llamada de retorno no se especi(icaA los contenidos ser*n enviados a =stdout=;
mailparse>msg>free
>8;1;3 2 8;1;0 only?
mailparseZmsgZ(ree 22 Li#era un gestor u#icado por mailparse>msg>create./
Kescripci"n
void mailparse>msg>free > resource r(c0384#u( ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mailparse>msg>get>part>data
>8;1;3 2 8;1;0 only?
mailparseZmsgZgetZpartZdata 22 Devuelve una matriz asociativa de in(ormaci-n so#re el mensa'e
Kescripci"n
array mailparse>msg>get>part>data > resource r(c0384 ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mailparse>msg>get>part
>8;1;3 2 8;1;0 only?
mailparseZmsgZgetZpart 22 Devuelve un gestor so#re una secci-n dada en un mensa'e mime
Kescripci"n
int mailparse>msg>get>part > resource r(c0384A string seccionZmime ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mailparse>msg>get>structure
>8;1;3 2 8;1;0 only?
mailparseZmsgZgetZstructure 22 Devuelve una matriz de nom#res de secci-n mime en el mensa'e
dado
Kescripci"n
array mailparse>msg>get>structure > resource r(c0384 ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mailparse>msg>parse>file
>8;1;3 2 8;1;0 only?
mailparseZmsgZparseZ(ile 22 Procesar un archivo y devolver un recurso /ue represente la estructura
Kescripci"n
resource mailparse>msg>parse>file > string nom#reZarchivo ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mailparse>msg>parse
>8;1;3 2 8;1;0 only?
mailparseZmsgZparse 22 Procesar datos incrementalmente so#re un #B(er
Kescripci"n
void mailparse>msg>parse > resource r(c0384#u(A string datos ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mailparse>rfcN**>parse>addresses
>8;1;3 2 8;1;0 only?
mailparseZr(cM00ZparseZaddresses 22 Procesar direcciones y devolver una matriz asociativa /ue
contenga los datos
Kescripci"n
array mailparse>rfcN**>parse>addresses > string direcciones ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mailparse>stream>encode
>8;1;3 2 8;1;0 only?
mailparseZstreamZencode 22 ecuencia datos desde un apuntador de archivoA codi(ica y escri#e a
(pZdestino
Kescripci"n
#ool mailparse>stream>encode > resource (pZ(uenteA resource (pZdestinoA string codi(icacion ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mailparse>uudecode>all
>no version in(ormationA might #e only in 5$?
mailparseZuudecodeZall 22 Procesa los datos desde un apuntador a archivo y eFtrae cada archivo
em#e#ido con codi(icaci-n uu
Kescripci"n
array mailparse>uudecode>all > resource (p ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Devuelve una matriz /ue lista la in(ormaci-n del archivo;
:IIII. ;unciones matemticas
Introducci"n
+stas (unciones matem*ticas solo manipulan valores dentro del rango de los tipos integer y float en
su e/uipo >en la actualidadA estos tipos corresponden con los tipos long y dou#le de 5?; i necesita
mane'ar nBmeros m*s grandesA eche un vistazo a las (unciones matem*ticas de precisi-n ar#itraria;
$ea tam#i<n la p*gina del manual so#re operadores aritm<ticos;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
Las constantes listadas a/ui est*n siempre disponi#les a trav<s del =nBcleo P&P=;
Tabla !. Constantes matemticas
Constante Calor Kescripci"n
MZP. 7;181490K474M9:9707M8K Pi
MZ+ 0;:1M0M1M0M8493840748 e
MZLOG0+ 1;880K94383MMM9K783:8 logZ0 e
MZLOG13+ 3;8780988M1937041M0:K4 logZ13 e
MZLN0 3;K9718:1M344998473980 logZe 0
MZLN13 0;7304M4390998384KM830 logZe 13
MZP.Z0 1;4:3:9K70K:98M9KK1907 piD0
MZP.Z8 3;:M479M1K779:88M739K0 piD8
MZ1ZP. 3;71M739MMK1M7:93K:148 1Dpi
MZ0ZP. 3;K7KK19::07K:4M17873M 0Dpi
MZOR,P. 1;::0847M4393441K30:09 s/rt>pi? P8;3;0Q
MZ0ZOR,P. 1;10M7:91K:3944104:793 0Ds/rt>pi?
MZOR,0 1;8180174K07:739438MM3 s/rt>0?
MZOR,7 1;:70343M3:4KMM::09740 s/rt>7? P8;3;0Q
MZOR,1Z0 3;:3:13K:M11MK48:40883 1Ds/rt>0?
MZLNP. 1;188:09MM4M898331:818 logZe>pi? P8;3;0Q
MZ+@L+R 3;4::014KK8931470MK3K1
5onstante de +uler
P8;3;0Q
olamente MZP. est* disponi#le en versiones de P&P anteriores a P&P 8;3;3A <sta inclusive; ,odas
las otras constantes est*n disponi#les a partir de P&P 8;3;3; Las constantes con la eti/ueta P8;3;0Q
(ueron aWadidas en P&P 8;3;0;
Tabla de contenidos
a#s 22 $alor a#soluto
acos 22 Arco coseno
acosh 22 5oseno hiper#-lico inverso
asin 22 Arco seno
asinh 22 eno hiper#-lico inverso
atan0 22 Arco tangente de dos varia#les
atan 22 Arco tangente
atanh 22 ,angente hiper#-lica inversa
#aseZconvert 22 5onvierte un nBmero entre #ases ar#itrarias
BinDec 22 #inario a decimal
ceil 22 Redondea (racciones hacia arri#a
cos 22 coseno
cosh 22 5oseno hiper#-lico
DecBin 22 decimal a #inario
Dec&eF 22 decimal a heFadecimal
DecOct 22 decimal a octal
deg0rad 22 5onvierte el nBmero en grados a su Walente en radianes
eFp 22 e elevado a;;;
eFpm1 22 Devuelve eFp>num#er? 2 1A computado de una (orma /ue es precisa incluso cuando el
valor del nBmero es cercano a cero
(loor 22 redondea (racciones hacia a#a'o
(mod 22 Devuelve el residuo de punto (lotante >m-dulo? de la divisi-n de los argumentos
getrandmaF 22 Muestra el mayor valor aleatorio posi#le
&eFDec 22 heFadecimal a decimal
hypot 22 Devuelve s/rt>num1Vnum1 R num0Vnum0?
isZ(inite 22 +ncuentra si un valor es un nBmero (inito legal
isZin(inite 22 +ncuentra si un valor es in(inito
isZnan 22 +ncuentra si un valor no es un nBmero
lcgZvalue 22 Generador lineal congruente com#inado
log13 22 Logaritmo en #ase213
log1p 22 Devuelve log>1 R numero?A computado en una (orma /ue es precisa incluso cuando el valor
del nBmero es cercano a cero
log 22 Logaritmo natural
maF 22 encuentra el valor mayor
min 22 encuentra el valor menor
mtZgetrandmaF 22 muestra el mayor valor aleatorio posi#le
mtZrand 22 genera un valor aleatorio me'orado
mtZsrand 22 .ntroduce la semilla del generador de nBmeros aleatorios me'orado
OctDec 22 octal a decimal
pi 22 devuelve el valor de pi
poE 22 eFpresi-n eFponencial
rad0deg 22 5onvierte el nBmero en radianes a su Walente en grados
rand 22 genera un valor aleatorio
round 22 Redondea un (loat;
sin 22 seno
sinh 22 eno hiper#-lico
s/rt 22 Ra)z cuadrada
srand 22 introduce la semilla del generador de nBmeros aleatorios
tan 22 tangente
tanh 22 ,angente hiper#-lica
abs
>P&P 7A P&P 8 A P&P 4?
a#s 22 $alor a#soluto
Kescripci"n
miFed abs > miFed num#er ?
Devuelve el valor a#soluto de un nBmero; i el nBmero del argumento es decimalA el tipo de retorno
tam#i<n es decimalA de otra manera devuelve un entero;
acos
>P&P 7A P&P 8 A P&P 4?
acos 22 Arco coseno
Kescripci"n
(loat acos > (loat arg ?
Devuelve el arco coseno de arg en radianes;
$ea tam#i<n asin./ y atan./;
acosh
>P&P 8 _^ 8;1;3A P&P 4?
acosh 22 5oseno hiper#-lico inverso
Kescripci"n
(loat acosh > (loat arg ?
Devuelve el coseno hiper#-lico inverso de arEA esto esA el valor de cuyo coseno hiper#-lico es arE;
Nota- +sta (unci-n no est* implementada en plata(ormas LindoEs;
$ea tam#i<nC acos./A asinh./A y atanh./;
asin
>P&P 7A P&P 8 A P&P 4?
asin 22 Arco seno
Kescripci"n
(loat asin > (loat arg ?
Devuelve el arco seno de arg en radianes;
$ea tam#i<n acos./ y atan./;
asinh
>P&P 8 _^ 8;1;3A P&P 4?
asinh 22 eno hiper#-lico inverso
Kescripci"n
(loat asinh > (loat arg ?
Devuelve el seno hiper#-lico inverso de arEA esto esA el valor de cuyo seno hiper#-lico es arE;
Nota- +sta (unci-n no est* implementada en plata(ormas LindoEs;
$ea tam#i<nC asin./A acosh./A y atanh./;
atan*
>P&P 7_^ 7;3;4A P&P 8 A P&P 4?
atan0 22 Arco tangente de dos varia#les
Kescripci"n
(loat atan* > (loat yA (loat F ?
+sta (unci-n calcula la arco tangente de las dos varia#les F e y; +s similar a el c*lculo de la arco
tangente de y D FA eFcepto /ue los signos de am#os argumentos son usados para determinar el
cuadrante del resultado
La (unci-n devuelve el resultado en radianesA el cual est* entre 2P. y P. >inclusive?;
$ea tam#i<n acos./ y atan./;
atan
>P&P 7A P&P 8 A P&P 4?
atan 22 Arco tangente
Kescripci"n
(loat atan > (loat arg ?
Devuelve la arco tangente de arg en radianes;
$ea tam#i<n acos./ y atan./;
atanh
>P&P 8 _^ 8;1;3A P&P 4?
atanh 22 ,angente hiper#-lica inversa
Kescripci"n
(loat atanh > (loat arg ?
Devuelve la tangente hiper#-lica inversa de arEA esto esA el valor de cuya tangente hiper#-lica es
arE;
Nota- +sta (unci-n no est* implementada en plata(ormas LindoEs;
$ea tam#i<nC atan./A asinh./A y acosh./;
base>con5ert
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
#aseZconvert 22 5onvierte un nBmero entre #ases ar#itrarias
Kescripci"n
strin base>con5ert > string num#erA int (rom#aseA int to#ase ?
Devuelve una cadena conteniendo el num1er representado en #ase to1ase; La #ase en la cual
num1er es dado viene especi(icada en 9rom1ase; ,anto 9rom1ase y to1ase tienen /ue estar entre 0 y
7KA inclusive; Los d)gitos en nBmeros con una #ase mayor /ue 13 ser*n representados con las letras
a2zA a vale 13A # vale 11 y z vale 7K;
E'emplo !. base>con5ert./
$binary > base%con=ert3$hexadecimal, 6G, C9;
1inKec
>P&P 7A P&P 8 A P&P 4?
BinDec 22 #inario a decimal
Kescripci"n
int bindec > string #inaryZstring ?
Devuelve el Walente decimal del nBmero #inario representado por el argumento #inaryZstring;
BinDec convierte un nBmero #inario en un nBmero decimal; +l mayor nBmero /ue puede ser
convertido son 71 #its de unos o 018:8M7K8: en decimal;
$ea tam#i<n la (unci-n decbin./ ;
ceil
>P&P 7A P&P 8 A P&P 4?
ceil 22 Redondea (racciones hacia arri#a
Kescripci"n
int ceil > (loat num#er ?
Devuelve el valor entero superior m*s cercano a num1er; +l uso de ceil./ con enteros es una perdida
de tiempo a#soluta;
NO,AC P&PDF. 0Hs ceil./ devuelve un (loat; @seC 'ne7 : L#ou1leMce6lL'num1erMJ para tener el
comportamiento antiguo;
$ea tam#i<n floor./ y round./;
cos
>P&P 7A P&P 8 A P&P 4?
cos 22 coseno
Kescripci"n
(loat cos > (loat arg ?
Devuelve el coseno de arg en radianes;
$ea tam#i<n sin./ y tan./;
cosh
>P&P 8 _^ 8;1;3A P&P 4?
cosh 22 5oseno hiper#-lico
Kescripci"n
(loat cosh > (loat arg ?
Devuelve el coseno hiper#-lico de arEA de(inido como Le8pLarEM Y e8pL=arEMM/2;
$ea tam#i<nC cos./A acosh./A sin./A y tan./;
Kec1in
>P&P 7A P&P 8 A P&P 4?
DecBin 22 decimal a #inario
Kescripci"n
string decbin > int num#er ?
Devuelve una cadena conteniendo la representaci-n en #inario de el nBmero dado en el argumento;
+l nBmero mayor /ue puede ser convertido es 018:8M7K8: en decimal /ue resulta una cadena de 71
unos;
$ea tam#i<n la (unci-n bindec./ ;
KecHe+
>P&P 7A P&P 8 A P&P 4?
Dec&eF 22 decimal a heFadecimal
Kescripci"n
string deche+ > int num#er ?
Devuelve una cadena conteniendo la representaci-n heFadecimal del nBmero dado en el argumento;
+l mayor nBmero /ue puede ser convertido es 018:8M7K8: en decimal resultando =:(((((((=;
$ea tam#i<n la (unci-n he+dec./ ;
KecJct
>P&P 7A P&P 8 A P&P 4?
DecOct 22 decimal a octal
Kescripci"n
string decoct > int num#er ?
Devuelve una cadena conteniendo la representaci-n octal del nBmero dado en el argumento; Returns
a string containing an octal representation o( the given num#er argument; +l mayor nBmero /ue
puede ser ocnvertido es 018:8M7K8: en decimal resultando =1::::::::::=; $ea tam#i<n octdec./;
deg*rad
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
deg0rad 22 5onvierte el nBmero en grados a su Walente en radianes
Kescripci"n
(loat deg*rad > (loat numero ?
+sta (unci-n convierte a numero desde grados a su Walente en radianes;
E'emplo !. E'emplo de deg*rad./
<?php
echo deECrad3159; // 2.HJ5<KJ6G<<KH
=ar%dump3deECrad3159 >>> "%4%19; // bool3true9
?>
$ea tam#i<n rad*deg./;
e+p
>P&P 7A P&P 8 A P&P 4?
eFp 22 e elevado a;;;
Kescripci"n
(loat e+p > (loat arg ?
Devuelve el nBmero e elevado a la potencia de arE;
$ea tam#i<n po3./;
e+pm!
>P&P 8 _^ 8;1;3A P&P 4?
eFpm1 22 Devuelve eFp>num#er? 2 1A computado de una (orma /ue es precisa incluso cuando el
valor del nBmero es cercano a cero
Kescripci"n
(loat e+pm! > (loat numero ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- +sta (unci-n no est* implementada en plata(ormas LindoEs;
floor
>P&P 7A P&P 8 A P&P 4?
(loor 22 redondea (racciones hacia a#a'o
Kescripci"n
(loat floor > (loat num#er ?
Devuelve el valor entero in(erior m*s cercano a num1er; +l uso de floor./ con enteros es una
perdida de tiempo a#soluta;
NO,AC P&PDF. 0Hs floor./ devuelve un (loat; @seC 'ne7 : L#ou1leM9loorL'num1erMJ para tener el
comportamiento antiguo;
$ea tam#i<n ceil./ y round./;
fmod
>P&P 8 _^ 8;0;3A P&P 4?
(mod 22 Devuelve el residuo de punto (lotante >m-dulo? de la divisi-n de los argumentos
Kescripci"n
(loat fmod > (loat FA (loat y ?
Devuelve el residuo de punto (lotante de dividir el dividendo >8? por el divisor >??; +l residuo >r? es
de(inido comoC F ^ i V y R rA para algBn entero 6; i ? es di(erente de ceroA r tiene el mismo signo
/ue 8 y una magnitud menor /ue la magnitud de ?;
E'emplo !. )so de fmod./
<?php
$x > 5.H;
$y > 6.<;
$r > #mod3$x, $y9;
// $r es iEual a 2.5, ya Que 1 W 6.< [ 2.5 > 5.H
?>
getrandma+
>P&P 7A P&P 8 A P&P 4?
getrandmaF 22 Muestra el mayor valor aleatorio posi#le
Kescripci"n
int getrandma+ > void ?
Devuelve el valor m*Fimo /ue puede devolver una llamada a rand./;
$ea tam#i<n rand./A srand./ mt>rand./A mt>srand./ y mt>getrandma+./;
He+Kec
>P&P 7A P&P 8 A P&P 4?
&eFDec 22 heFadecimal a decimal
Kescripci"n
int he+dec > string heFZstring ?
Devuelve el Walente decimal de el nBmero heFadecimal representado por el argumento heFZstring;
&eFDec convierte una cadena heFadecimal en un nBmero decimal; +l nBmero mayor /ue puede ser
convertido es :((((((( o 018:8M7K8: en decimal;
$ea tam#i<n la (unci-n deche+./ ;
hypot
>P&P 8 _^ 8;1;3A P&P 4?
hypot 22 Devuelve s/rt>num1Vnum1 R num0Vnum0?
Kescripci"n
(loat hypot > (loat num1A (loat num0 ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
is>finite
>P&P 8 _^ 8;0;3A P&P 4?
isZ(inite 22 +ncuentra si un valor es un nBmero (inito legal
Kescripci"n
#ool is>finite > (loat val ?
Devuelve TRUE si al es un nBmero (inito legal entre el rango permitido para un (lotante P&P en
esta plata(orma;
$ea tam#i<n is>infinite./ y is>nan./;
is>infinite
>P&P 8 _^ 8;0;3A P&P 4?
isZin(inite 22 +ncuentra si un valor es in(inito
Kescripci"n
#ool is>infinite > (loat val ?
Devuelve TRUE si al es in(inito >positivo o negativo?A como el resultado de loEL0M o cual/uier
valor demasiado grande para ca#er en un (lotante en esta plata(orma;
$ea tam#i<n is>finite./ y is>nan./;
is>nan
>P&P 8 _^ 8;0;3A P&P 4?
isZnan 22 +ncuentra si un valor no es un nBmero
Kescripci"n
#ool is>nan > (loat val ?
Devuelve TRUE si al no es un nBmero >Hnot a num#erH?A como el resultado de acosL1.01M;
$ea tam#i<n is>finite./ y is>infinite./;
lcg>5alue
>P&P 8 A P&P 4?
lcgZvalue 22 Generador lineal congruente com#inado
Kescripci"n
(loat lcg>5alue > void ?
lcg>5alue./ devuelve un nBmero pseudo2aleatorio en el rango >3A 1?; La (unci-n com#ina dos
generadores congruentes con periodos de 0k71 2 M4 y 0k71 2 089; +l periodo de esta (unci-n es igual
al producto de am#os primos;
log!D
>P&P 7A P&P 8 A P&P 4?
log13 22 Logaritmo en #ase213
Kescripci"n
(loat log!D > (loat arg ?
Devuelve el logaritmo en #ase213 de arg;
log!p
>P&P 8 _^ 8;1;3A P&P 4?
log1p 22 Devuelve log>1 R numero?A computado en una (orma /ue es precisa incluso cuando el valor
del nBmero es cercano a cero
Kescripci"n
(loat log!p > (loat numero ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- +sta (unci-n no est* implementada en plata(ormas LindoEs;
log
>P&P 7A P&P 8 A P&P 4?
log 22 Logaritmo natural
Kescripci"n
(loat log > (loat arg ?
Devuelve el logaritmo de arg;
ma+
>P&P 7A P&P 8 A P&P 4?
maF 22 encuentra el valor mayor
Kescripci"n
miFed ma+ > miFed arg1A miFed arg0A miFed argn ?
ma+./ devuelve el nBmero mayor de los valores de los par*metros;
i el primer par*metro es un arrayA ma+./ devuelve el mayor valor en ese array; i el primer
par*metro es un enteroA string o dou#leA necesita al menos dos par*metros y ma+./ devuelve el
mayor nBmero de estos valores; Puede comparar un nBmero ilimitado de valores;
i uno o m*s de los valores es un dou#leA todos los valores ser*n tratados como dou#lesA y
devolver* un dou#le; i ninguno de los valores es un dou#leA todos ellos ser*n tratados como
enterosA y se devolver* un entero;
min
>P&P 7A P&P 8 A P&P 4?
min 22 encuentra el valor menor
Kescripci"n
miFed min > miFed arg1A miFed arg0A miFed argn ?
min./ returns the numerically loEest o( the parameter values;
i el primer par*metro es un arrayA min./ devuelve el menor valor en ese array; i el primer
par*metro es un enteroA string o dou#leA necesita al menos dos par*metros y min./ devuelve el
nBmero menor de estos valores; Puede comparar un nBmero ilimitado de valores;
i uno o m*s de los valores es un dou#leA todos los valores ser*n tratados como dou#lesA y
devolver* un dou#le; i ninguno de los valores es un dou#leA todos ellos ser*n tratados como
enterosA y se devolver* un entero;
mt>getrandma+
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
mtZgetrandmaF 22 muestra el mayor valor aleatorio posi#le
Kescripci"n
int mt>getrandma+ > void ?
Devuelve el valor m*Fimo /ue se puede o#tener con una llamada a mt>rand./;
$ea tam#i<n mt>rand./A mt>srand./ rand./A srand./ y getrandma+./;
mt>rand
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
mtZrand 22 genera un valor aleatorio me'orado
Kescripci"n
int mt>rand > Pint min PA int maFQQ ?
Muchos generadores de nBmeros aleatorios de li#cs antiguas tienen caracter)sticas dudosas o
desconocidas y son lentas; Por de(ectoA P&P usa el generador de nBmeros aleatorios de li#c con la
(unci-n rand./; La (unci-n mt>rand./ es un reemplazo para esta; @sa un generador de nBmeros
aleatorios con caracter)sticas conocidasA el ,ornado de MersenneA /ue es capaz de producir nBmeros
aleatorios /ue incluso se pueden emplear para prop-sitos criptogr*(icos y es cuatro veces m*s
r*pido /ue la media de los /ue provee li#c; La p*gina principal del ,ornado de Mersenne puede
encontrarse en httpCDDEEE;math;"eio;ac;'pDgmatumotoDemt;htmlA y una versi-n optimizada del
c-digo del ,M esta disponi#le en httpCDDEEE;scp;syr;eduDgmarcDhaE"DtEister;html;
i es llamada sin los par*metros opcionales min y maF mt>rand./ devuelve un valor pseudo2
aleatorio entre 3 y RANDZMAJ; i /uiere un nBmero aleatorio entre 4 y 14 >inclusive?A use
mtZrand>4A14?;
Recuerde introducir la semilla del generador de nBmeros aleatorios antes de usar la instrucci-n con
mt>srand./;
$ea tam#i<n mt>srand./A mt>getrandma+./A srand./A rand./ y getrandma+./;
mt>srand
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
mtZsrand 22 .ntroduce la semilla del generador de nBmeros aleatorios me'orado
Kescripci"n
void mt>srand > int seed ?
.ntroduce la semilla see# en el generador de nBmeros aleatorios me'orado;
// seed son los microseEundos desde el hltimo seEundo "entero"
mt%srand33double9microtime39W62222229;
$rand=al > mt%rand39;
$ea tam#i<n mt>rand./A mt>getrandma+./A srand./A rand./ y getrandma+./;
JctKec
>P&P 7A P&P 8 A P&P 4?
OctDec 22 octal a decimal
Kescripci"n
int octdec > string octalZstring ?
Devuelve el Walente decimal del nBmero octal representado por el argumento octalZstring; OctDec
convierte una cadena octal en un nBmero decimal; +l mayor nBmero /ue puede ser convertido es
1:::::::::: o 018:8M7K8: en decimal;
$ea tam#i<n decoct./;
pi
>P&P 7A P&P 8 A P&P 4?
pi 22 devuelve el valor de pi
Kescripci"n
dou#le pi > void ?
Devuelve una aproFimaci-n de pi;
po3
>P&P 7A P&P 8 A P&P 4?
poE 22 eFpresi-n eFponencial
Kescripci"n
(loat po3 > (loat #aseA (loat eFp ?
Devuelve #ase elevado a la potencia de eFp;
$ea tam#i<n e+p./;
rad*deg
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
rad0deg 22 5onvierte el nBmero en radianes a su Walente en grados
Kescripci"n
(loat rad*deg > (loat numero ?
+sta (unci-n convierte a numero desde radianes a grados;
E'emplo !. E'emplo de rad*deg./
<?php
echo radCdeE3"%4%19; // 15
?>
$ea tam#i<n deg*rad./;
rand
>P&P 7A P&P 8 A P&P 4?
rand 22 genera un valor aleatorio
Kescripci"n
int rand > Pint min PA int maFQQ ?
i es llamada sin los argumentos opcionales min y maFA rand>? devuelve un valor pseudo2aleatorio
entre 3 y RANDZMAJ; i /uiere un nBmero aleatorio entre 4 y 14 >inclusive?A por e'emploA use
rand>4A14?;
Recuerde introducir la semilla del generador de nBmeros aleatorios antes de usar srand./;
$ea tam#i<n srand./A getrandma+./A mt>rand./A mt>srand./ y mt>getrandma+./;
round
>P&P 7A P&P 8 A P&P 4?
round 22 Redondea un (loat;
Kescripci"n
dou#le round > dou#le val ?
Devuelve el valor redondeado de al;
$#oo > round3 <.1 9; // $#oo >> <.2
$#oo > round3 <.5 9; // $#oo >> 1.2
$#oo > round3 <.G 9; // $#oo >> 1.2
$ea tam#i<n ceil./ y floor./;
sin
>P&P 7A P&P 8 A P&P 4?
sin 22 seno
Kescripci"n
(loat sin > (loat arg ?
Devuelve el seno de arg en radianes;
$ea tam#i<n cos./ y tan./;
sinh
>P&P 8 _^ 8;1;3A P&P 4?
sinh 22 eno hiper#-lico
Kescripci"n
(loat sinh > (loat arg ?
Devuelve el seno hiper#-lico de arEA de(inido como Le8pLarEM = e8pL=arEMM/2;
$ea tam#i<nC sin./A asinh./A cos./A y tan./;
s?rt
>P&P 7A P&P 8 A P&P 4?
s/rt 22 Ra)z cuadrada
Kescripci"n
(loat s?rt > (loat arg ?
Devuelve la ra)z cuadrada de arg;
srand
>P&P 7A P&P 8 A P&P 4?
srand 22 introduce la semilla del generador de nBmeros aleatorios
Kescripci"n
void srand > int seed ?
.nicializa el generador de nBmeros aleatorios con see#;
// seed son los microseEundos desde el hltimo seEundo "entero"
srand33double9microtime39W62222229;
$rand=al > rand39;
$ea tam#i<n rand./A getrandma+./A mt>rand./A mt>srand./ y mt>getrandma+./;
tan
>P&P 7A P&P 8 A P&P 4?
tan 22 tangente
Kescripci"n
(loat tan > (loat arg ?
Devuelve la tangente de arg en radianes;
$ea tam#i<n sin./ y cos./;
tanh
>P&P 8 _^ 8;1;3A P&P 4?
tanh 22 ,angente hiper#-lica
Kescripci"n
(loat tanh > (loat arg ?
Devuelve la tangente hipor#-lica de arEA de(inida como s6nhLarEM/coshLarEM;
$ea tam#i<nC tan./A atanh./A sin./A y cos./;
:IIC. Ma+K1 PHP E+tension
Introducci"n
,he MaFDB P&P eFtension alloEs you to access the (unctionality provided #y MaFDB :;4;3 and
a#ove; More in(ormation a#out the MaFDB Data#ase server can #e (ound at
httpCDDEEE;mys/l;comDproductsDmaFd#D;
Documentation (or MaFDB can #e (ound at httpCDDdev;mys/l;comDdocDmaFd#D;
Me?uirimientos
.n order to have these (unctions availa#leA you must compile P&P Eith MaFDB
support;AdditionallyA you must have the MaFDB OLDB5 runtime li#rary availa#le to access the
MaFDB server;
Documentation (or MaFDB OLDB5 can #e (ound at httpCDDdev;mys/l;comDdocDmaFd#D;
DoEnload the MaFDB OLDB5 pac"age (rom
httpCDDdev;mys/l;comDdoEnloadsDmaFd#Dclients;html;
Instalaci"n
By using the ==76th=ma8#1):D0R. con(iguration option you ena#le P&P to access MaFDB
data#ases; )D0R. points to the directory that contains the installed MaFDB OLDB5 pac"age;
LindoEs users Eill need to ena#le php%maxdb.dll inside o( php.ini;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Ma+K1 Configuration Jptions
Name Kefault Changeable
maFd#;de(aultZhost N@LL P&PZ.N.ZALL
maFd#;de(aultZd# N@LL P&PZ.N.ZALL
maFd#;de(aultZuser N@LL P&PZ.N.ZALL
maFd#;de(aultZpassEor
d
N@LL P&PZ.N.ZALL
maFd#;longZreadlen N@LL P&PZ.N.ZALL
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
ma8#1.#e9ault_host string
,he de(ault server host to use Ehen connecting to the data#ase server i( no other host is
speci(ied;
ma8#1.#e9ault_#1 string
,he de(ault server data#ase to use Ehen connecting i( no other data#ase is speci(ied;
ma8#1.#e9ault_user string
,he de(ault user name to use Ehen connecting to the data#ase server i( no other name is
speci(ied;
ma8#1.#e9ault_pass7or# string
,he de(ault passEord to use Ehen connecting to the data#ase server i( no other passEord is
speci(ied;
ma8#1.lonE_rea#len integer
,he de(ault maFimum length o( #ytes that is trans(erred to the client i( long data is retrieved
(rom the MaFDB data#ase server;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
,he (olloEing constants to use Eith ma+db>options./ are de(ined; For (urther description o( these
constants see httpCDDdev;mys/l;comDdocDmaFd#D;
Tabla *. Ma+K1 PHP client constants
Constant Kescription
MAJDBZ5OMPNAM+
,he component name used to initialise the OLDB5 runtime
environment;
MAJDBZAPPL.5A,.ON ,he application to #e connected to the data#ase;
MAJDBZAPP$+R.ON ,he version o( the application;
MAJDBZOLMOD+ ,he OL mode;
MAJDBZ@N.5OD+
,R@+A i( the connection is an unicode >@50? client or
FAL+A i( not;
MAJDBZ,.M+O@,
,he maFimum alloEed time o( inactivity a(ter Ehich the
connection to the data#ase is closed #y the system;
MAJDBZ.OLA,.ONL+$+L
peci(ies Ehether and hoE shared loc"s and eFclusive loc"s
are implicitly re/uested or released;
MAJDBZPA5S+,5O@N,
,he num#er o( di((erent re/uest pac"ets used (or the
connection;
MAJDBZ,A,+M+N,5A5&+
.I+
,he num#er o( prepared statements to #e cached (or the
connection (or re2use;
MAJDBZ5@RORPR+F.J
,he pre(iF to use (or result ta#les that are automatically
named;
,he (unction ma+db>fetch>array./ uses a constant (or the di((erent types o( result arrays; ,he
(olloEing constants are de(inedC
Tabla 7. Ma+K1 fetch constants
Constant Kescription
MAJDBZA
O5
5olumns are returned into the array having the (ieldname as the array indeF;
MAJDBZBO
,&
5olumns are returned into the array having #oth a numerical indeF and the
(ieldname as the array indeF;
MAJDBZN@
M
5olumns are returned into the array having a numerical indeF to the (ields; ,his
indeF starts Eith 3A the (irst (ield in the result;
E'emplos
All eFamples in the MaFDB P&P documentation use the &O,+LDB demo data#ase (rom MaFDB;
More a#out this data#ase can #e (ound at
httpCDDdev;mys/l;comDdocDmaFd#DenD9MD11#M7(aK#77c1:e13333333a1183M8D(rameset;htm;
,his simple eFample shoEs hoE to connectA eFecute a /ueryA print resulting roEs and disconnect
(rom a MaFDB data#ase;
E'emplo !. Ma+K1 e+tension o5er5ie3 e+ample
<?php
/W RonnectinE, selectinE database W/
$linI > maxdb%connect3"maxdb%host", "maxdb%user", "maxdb%pass8ord"9
or die3"Rould not connect @ " . maxdb%connect%error399;
echo "Ronnected success#ully";
maxdb%select%db3"my%database"9 or die3"Rould not select database"9;
/W er#orminE &NO Query W/
$Query > "&EOER* W S'?" my%table";
$result > maxdb%Query3$linI, $Query9 or die3"Nuery #ailed @ " . maxdb%error399;
/W rintinE results in H*"O W/
echo "<table>Vn";
8hile 3$line > maxdb%#etch%array3$result, ",XLZ%,&&?R99 :
echo "Vt<tr>Vn";
#oreach 3$line as $col%=alue9 :
echo "VtVt<td>$col%=alue</td>Vn";
;
echo "Vt</tr>Vn";
;
echo "</table>Vn";
/W Sree resultset W/
maxdb%#ree%result3$result9;
/W RlosinE connection W/
maxdb%close3$linI9;
?>
Tabla de contenidos
maFd#Za((ectedZroEs 22 Gets the num#er o( a((ected roEs in a previous MaFDB operation
maFd#Zautocommit 22 ,urns on or o(( auto2commiting data#ase modi(ications
maFd#Z#indZparam 22 Alias (or ma+db>stmt>bind>param./
maFd#Z#indZresult 22 Alias (or ma+db>stmt>bind>result./
maFd#ZchangeZuser 22 5hanges the user o( the speci(ied data#ase connection
maFd#ZcharacterZsetZname 22 Returns the de(ault character set (or the data#ase connection
maFd#ZclientZencoding 22 Alias o( ma+db>character>set>name./
maFd#ZcloseZlongZdata 22 Alias (or ma+db>stmt>close>long>data./
maFd#Zclose 22 5loses a previously opened data#ase connection
maFd#Zcommit 22 5ommits the current transaction
maFd#ZconnectZerrno 22 Returns the error code (rom last connect call
maFd#ZconnectZerror 22 Returns a string description o( the last connect error
maFd#Zconnect 22 Open a neE connection to the MaFDB server
maFd#ZdataZsee" 22 Ad'usts the result pointer to an ar#itary roE in the result
maFd#ZdumpZde#ugZin(o 22 Dump de#ugging in(ormation into the log
maFd#Zde#ug 22 Per(orms de#ugging operations
maFd#Zdisa#leZreadsZ(romZmaster 22 Disa#le reads (rom master
maFd#Zdisa#leZrplZparse 22 Disa#le RPL parse
maFd#Zem#eddedZconnect 22 Open a connection to an em#edded MaFDB server
maFd#Zena#leZreadsZ(romZmaster 22 +na#le reads (rom master
maFd#Zena#leZrplZparse 22 +na#le RPL parse
maFd#Zerrno 22 Returns the error code (or the most recent (unction call
maFd#Zerror 22 Returns a string description o( the last error
maFd#ZescapeZstring 22 Alias o( ma+db>real>escape>string./
maFd#ZeFecute 22 Alias (or ma+db>stmt>e+ecute./
maFd#Z(etchZarray 22 Fetch a result roE as an associativeA a numeric arrayA or #oth
maFd#Z(etchZassoc 22 Fetch a result roE as an associative array
maFd#Z(etchZ(ieldZdirect 22 Fetch meta2data (or a single (ield
maFd#Z(etchZ(ield 22 Returns the neFt (ield in the result set
maFd#Z(etchZ(ields 22 Returns an array o( resources representing the (ields in a result set
maFd#Z(etchZlengths 22 Returns the lengths o( the columns o( the current roE in the result set
maFd#Z(etchZresource 22 Returns the current roE o( a result set as an resource
maFd#Z(etchZroE 22 Get a result roE as an enumerated array
maFd#Z(etch 22 Alias (or ma+db>stmt>fetch./
maFd#Z(ieldZcount 22 Returns the num#er o( columns (or the most recent /uery
maFd#Z(ieldZsee" 22 et result pointer to a speci(ied (ield o((set
maFd#Z(ieldZtell 22 Get current (ield o((set o( a result pointer
maFd#Z(reeZresult 22 Frees the memory associated Eith a result
maFd#ZgetZclientZin(o 22 Returns the MaFDB client version as a string
maFd#ZgetZclientZversion 22 Get MaFDB client in(o
maFd#ZgetZhostZin(o 22 Returns a string representing the type o( connection used
maFd#ZgetZmetadata 22 Alias (or ma+db>stmt>result>metadata./
maFd#ZgetZprotoZin(o 22 Returns the version o( the MaFDB protocol used
maFd#ZgetZserverZin(o 22 Returns the version o( the MaFDB server
maFd#ZgetZserverZversion 22 Returns the version o( the MaFDB server as an integer
maFd#Zin(o 22 Retrieves in(ormation a#out the most recently eFecuted /uery
maFd#Zinit 22 .nitializes MaFDB and returns an resource (or use Eith maFd#ZrealZconnect
maFd#ZinsertZid 22 Returns the auto generated id used in the last /uery
maFd#Z"ill 22 Disconnects (rom a MaFDB server
maFd#ZmasterZ/uery 22 +n(orce eFecution o( a /uery on the master in a masterDslave setup
maFd#ZmoreZresults 22 5hec" i( there any more /uery results (rom a multi /uery
maFd#ZmultiZ/uery 22 Per(orms a /uery on the data#ase
maFd#ZneFtZresult 22 Prepare neFt result (rom multiZ/uery
maFd#ZnumZ(ields 22 Get the num#er o( (ields in a result
maFd#ZnumZroEs 22 Gets the num#er o( roEs in a result
maFd#Zoptions 22 et options
maFd#ZparamZcount 22 Alias (or ma+db>stmt>param>count./
maFd#Zping 22 Pings a server connectionA or tries to reconnect i( the connection has gone doEn
maFd#Zprepare 22 Prepare a OL statement (or eFecution
maFd#Z/uery 22 Per(orms a /uery on the data#ase
maFd#ZrealZconnect 22 Opens a connection to a MaFDB server
maFd#ZrealZescapeZstring 22 +scapes special characters in a string (or use in a OL statementA
ta"ing into account the current charset o( the connection
maFd#ZrealZ/uery 22 +Fecute an OL /uery
maFd#Zreport 22 +na#les or disa#les internal report (unctions
maFd#Zroll#ac" 22 Rolls #ac" current transaction
maFd#ZrplZparseZena#led 22 5hec" i( RPL parse is ena#led
maFd#ZrplZpro#e 22 RPL pro#e
maFd#ZrplZ/ueryZtype 22 Returns RPL /uery type
maFd#ZselectZd# 22 elects the de(ault data#ase (or data#ase /ueries
maFd#ZsendZlongZdata 22 Alias (or ma+db>stmt>send>long>data./
maFd#ZsendZ/uery 22 end the /uery and return
maFd#ZserverZend 22 hut doEn the em#edded server
maFd#ZserverZinit 22 .nitialize em#edded server
maFd#ZsetZopt 22 Alias o( ma+db>options./
maFd#Zs/lstate 22 Returns the OL,A,+ error (rom previous MaFDB operation
maFd#ZsslZset 22 @sed (or esta#lishing secure connections using L
maFd#Zstat 22 Gets the current system status
maFd#ZstmtZa((ectedZroEs 22 Returns the total num#er o( roEs changedA deletedA or inserted #y the
last eFecuted statement
maFd#ZstmtZ#indZparam 22 Binds varia#les to a prepared statement as parameters
maFd#ZstmtZ#indZresult 22 Binds varia#les to a prepared statement (or result storage
maFd#ZstmtZcloseZlongZdata 22 +nds a se/uence o( ma+db>stmt>send>long>data./
maFd#ZstmtZclose 22 5loses a prepared statement
maFd#ZstmtZdataZsee" 22 ee"s to an ar#itray roE in statement result set
maFd#ZstmtZerrno 22 Returns the error code (or the most recent statement call
maFd#ZstmtZerror 22 Returns a string description (or last statement error
maFd#ZstmtZeFecute 22 +Fecutes a prepared Ouery
maFd#ZstmtZ(etch 22 Fetch results (rom a prepared statement into the #ound varia#les
maFd#ZstmtZ(reeZresult 22 Frees stored result memory (or the given statement handle
maFd#ZstmtZinit 22 .nitializes a statement and returns an resource (or use Eith maFd#ZstmtZprepare
maFd#ZstmtZnumZroEs 22 Return the num#er o( roEs in statements result set
maFd#ZstmtZparamZcount 22 Returns the num#er o( parameter (or the given statement
maFd#ZstmtZprepare 22 Prepare a OL statement (or eFecution
maFd#ZstmtZreset 22 Resets a prepared statement
maFd#ZstmtZresultZmetadata 22 Returns result set metadata (rom a prepared statement
maFd#ZstmtZsendZlongZdata 22 end data in #loc"s
maFd#ZstmtZs/lstate 22 Returns OL,A,+ error (rom previous statement operation
maFd#ZstmtZstoreZresult 22 ,rans(ers a result set (rom a prepared statement
maFd#ZstoreZresult 22 ,rans(ers a result set (rom the last /uery
maFd#ZthreadZid 22 Returns the thread .D (or the current connection
maFd#ZthreadZsa(e 22 Returns Ehether thread sa(ety is given or not
maFd#ZuseZresult 22 .nitiate a result set retrieval
maFd#ZEarningZcount 22 Returns the num#er o( Earnings (rom the last /uery (or the given lin"
ma+db>affected>ro3s
>no version in(ormationA might #e only in 5$?
maFd#Za((ectedZroEs 22 Gets the num#er o( a((ected roEs in a previous MaFDB operation
Kescription
Procedural styleC
miFed ma+db>affected>ro3s > resource lin" ?
ma+db>affected>ro3s./ returns the num#er o( roEs a((ected #y the last .N+R,A @PDA,+A or
D+L+,+ /uery associated Eith the provided l6n> parameter; .( this num#er cannot #e determinedA
this (unction Eill return 21;
Nota- For +L+5, statements ma+db>affected>ro3s./ Eor"s li"e ma+db>num>ro3s
./;
,he ma+db>affected>ro3s./ (unction only Eor"s Eith /ueries Ehich modi(y a ta#le; .n order to
return the num#er o( roEs (rom a +L+5, /ueryA use the ma+db>num>ro3s./ (unction instead;
Meturn Calues
An integer greater than zero indicates the num#er o( roEs a((ected or retrieved; Iero indicates that
no records Ehere updated (or an @PDA,+ statementA no roEs matched the L&+R+ clause in the
/uery or that no /uery has yet #een eFecuted; 21 indicates that the num#er o( roEs a((ected can not
#e determined;
,ee also
ma+db>num>ro3s./A ma+db>info./;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
i# 3!$linI9 :
print#3"RanMt connect to localhost. Error@ \sVn", maxdb%connect%error399;
exit39;
;
maxdb%report 3",XLZ%'E?'*%?SS9;
maxdb%Query3$linI,"L'? *,ZOE mycustomer"9;
maxdb%report 3",XLZ%'E?'*%E''?'9;
/W 4nsert ro8s W/
maxdb%Query3$linI, "R'E,*E *,ZOE mycustomer ,& &EOER* W #rom hotel.customer"9;
print#3",##ected ro8s 34.&E'*9@ \dVn", maxdb%a##ected%ro8s3$linI99;
maxdb%Query3$linI, ",O*E' *,ZOE mycustomer ,LL &tatus int de#ault 2"9;
/W update ro8s W/
maxdb%Query3$linI, "+L,*E mycustomer &E* &tatus>6 7HE'E cno > 52"9;
print#3",##ected ro8s 3+L,*E9@ \dVn", maxdb%a##ected%ro8s3$linI99;
/W delete ro8s W/
maxdb%Query3$linI, "LEOE*E S'?" mycustomer 7HE'E cno < 52"9;
print#3",##ected ro8s 3LEOE*E9@ \dVn", maxdb%a##ected%ro8s3$linI99;
/W select all ro8s W/
$result > maxdb%Query3$linI, "&EOER* title S'?" mycustomer"9;
print#3",##ected ro8s 3&EOER*9@ \dVn", maxdb%a##ected%ro8s3$linI99;
maxdb%#ree%result3$result9;
/W Lelete table OanEuaEe W/
maxdb%Query3$linI, "L'? *,ZOE mycustomer"9;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
,##ected ro8s 34.&E'*9@ 65
,##ected ro8s 3+L,*E9@ 65
,##ected ro8s 3LEOE*E9@ 2
,##ected ro8s 3&EOER*9@ F6
ma+db>autocommit
>no version in(ormationA might #e only in 5$?
maFd#Zautocommit 22 ,urns on or o(( auto2commiting data#ase modi(ications
Kescription
Procedural styleC
#ool ma+db>autocommit > resource lin"A #ool mode ?
ma+db>autocommit./ is used to turn on or o(( auto2commit mode on /ueries (or the data#ase
connection represented #y the l6n> resource;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also
ma+db>commit./A ma+db>rollbacB./;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
i# 3!$linI9 :
print#3"RanMt connect to localhost. Error@ \sVn", maxdb%connect%error399;
exit39;
;
/W turn autocommit on W/
maxdb%autocommit3$linI, *'+E9;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce no output;
ma+db>bind>param
maFd#Z#indZparam 22 Alias (or ma+db>stmt>bind>param./
Kescription
,his (unction is an alias o( ma+db>stmt>bind>param./; For a detailled descripton see description
o( ma+db>stmt>bind>param./;
Nota- ma+db>bind>param./ is deprecated and Eill #e removed;
,ee also
ma+db>stmt>bind>param./
ma+db>bind>result
maFd#Z#indZresult 22 Alias (or ma+db>stmt>bind>result./
Kescription
,his (unction is an alias o( ma+db>stmt>bind>result./; For a detailled descripton see description
o( ma+db>stmt>bind>result./;
Nota- ma+db>bind>result./ is deprecated and Eill #e removed;
,ee also
ma+db>stmt>bind>result./
ma+db>change>user
>no version in(ormationA might #e only in 5$?
maFd#ZchangeZuser 22 5hanges the user o( the speci(ied data#ase connection
Kescription
Procedural styleC
#ool ma+db>change>user > resource lin"A string userA string passEordA string data#ase ?
ma+db>change>user./ is used to change the user o( the speci(ied data#ase connection as given #y
the l6n> parameter and to set the current data#ase to that speci(ied #y the #ata1ase parameter;
.n order to success(ully change users a valid username and pass7or# parameters must #e provided
and that user must have su((icient permissions to access the desired data#ase; .( (or any reason
authorization (ailsA the current user authentication Eill remain;
Nota- @sing this command Eill alEays cause the current data#ase connection to #ehave
as i( Eas a completely neE data#ase connectionA regardless o( i( the operation Eas
completed success(ully; ,his reset includes per(orming a roll#ac" on any active
transactionsA closing all temporary ta#lesA and unloc"ing all loc"ed ta#les;
Meturn Calues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also-
ma+db>connect./ ma+db>select>db./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3!$linI9 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
i# 3$result > maxdb%Query3$linI, "&EOER* W S'?" dual"99 :
$ro8 > maxdb%#etch%ro83$result9;
print#3"'esult@ \sVn", $ro8)2/9;
maxdb%#ree%result3$result9;
;
/W reset all and select a ne8 database W/
i# 3!maxdb%chanEe%user3$linI, $user, $pass8d, "XXXXXXX"99 :
print#3"Latabase not runninEVn"9;
; else :
print#3"Latabase runninEVn"9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
'esult@ a
H 7arninE@ maxdb%chanEe%user39@ F62H2K Ronnection #ailed <...>
Latabase not runninE
H 7arninE@ maxdb%close39@ F62JC6 &ession not connected <...>
ma+db>character>set>name
>no version in(ormationA might #e only in 5$?
maFd#ZcharacterZsetZname 22 Returns the de(ault character set (or the data#ase connection
Kescription
Procedural styleC
string ma+db>character>set>name > resource lin" ?
Returns the current character set (or the data#ase connection speci(ied #y the l6n> parameter;
Meturn 5alues
,he de(ault character set (or the current connectionA either ascii or unicode;
,ee also
ma+db>client>encoding./; ma+db>real>escape>string./;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3!$linI9 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W rint current character set W/
$charset > maxdb%character%set%name3$linI9;
print# 3"Rurrent character set is \sVn",$charset9;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould #e produce the (olloEing outputC
Rurrent character set is ascii
ma+db>client>encoding
maFd#ZclientZencoding 22 Alias o( ma+db>character>set>name./
Kescription
,his (unction is an alias o( ma+db>character>set>name./; For a detailled descripton see
description o( ma+db>character>set>name./;
,ee also
ma+db>client>encoding./; ma+db>real>escape>string./;
ma+db>close>long>data
maFd#ZcloseZlongZdata 22 Alias (or ma+db>stmt>close>long>data./
Kescription
,his (unction is an alias o( ma+db>stmt>close>long>data./; For a detailled descripton see
description o( ma+db>stmt>close>long>data./;
Nota- ma+db>close>long>data./ is deprecated and Eill #e removed;
,ee also
ma+db>stmt>close>long>data./
ma+db>close
>no version in(ormationA might #e only in 5$?
maFd#Zclose 22 5loses a previously opened data#ase connection
Kescription
Procedural styleC
#ool ma+db>close > resource lin" ?
,he ma+db>close./ (unction closes a previously opened data#ase connection speci(ied #y the l6n>
parameter;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also
ma+db>connect./A ma+db>init./A ma+db>real>connect./;
ma+db>commit
>no version in(ormationA might #e only in 5$?
maFd#Zcommit 22 5ommits the current transaction
Kescription
Procedural styleC
#ool ma+db>commit > resource lin" ?
5ommits the current transaction (or the data#ase connection speci(ied #y the l6n> parameter;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also
ma+db>autocommit./A ma+db>rollbacB./;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3!$linI9 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W set autocommit to o## W/
maxdb%autocommit3$linI, S,O&E9;
maxdb%report 3",XLZ%'E?'*%?SS9;
maxdb%Query3$linI,"L'? *,ZOE mycustomer"9;
maxdb%report 3",XLZ%'E?'*%E''?'9;
maxdb%Query3$linI, "R'E,*E *,ZOE mycustomer O4]E hotel.customer"9;
/W 4nsert some =alues W/
maxdb%Query3$linI, "4.&E'* 4.*? mycustomer (,O+E& 3<222,M"rsM,MAennyM,MorterM,M625J2M,M6<12 ..,sh &treet, U<M9"9;
maxdb%Query3$linI, "4.&E'* 4.*? mycustomer (,O+E& 3<622,M"rM,MeterM,MZro8nM,M1JCCGM,M6226 <1th &tr., ,*.<M9"9;
/W commit transaction W/
maxdb%commit3$linI9;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples produces no output;
ma+db>connect>errno
>no version in(ormationA might #e only in 5$?
maFd#ZconnectZerrno 22 Returns the error code (rom last connect call
Kescription
int ma+db>connect>errno > void ?
,he ma+db>connect>errno./ (unction Eill return the last error code num#er (or last call to
ma+db>connect./; .( no errors have occuredA this (unction Eill return zero;
Meturn 5alues
An error code value (or the last call to ma+db>connect./A i( it (ailed; zero means no error occurred;
,ee also
ma+db>connect./A ma+db>connect>error./A ma+db>errno./A ma+db>error./A ma+db>s?lstate./
E+ample
E'emplo !. ma+db>connect>errno sample
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
i# 3!$linI9 :
print#3"RanMt connect to localhost. Errorcode@ \dVn", maxdb%connect%errno399;
;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
,##ected ro8s 34.&E'*9@ 65
,##ected ro8s 3+L,*E9@ 65
,##ected ro8s 3LEOE*E9@ 2
,##ected ro8s 3&EOER*9@ F6
ma+db>connect>error
>no version in(ormationA might #e only in 5$?
maFd#ZconnectZerror 22 Returns a string description o( the last connect error
Kescription
string ma+db>connect>error > void ?
,he ma+db>connect>error./ (unction is identical to the corresponding ma+db>connect>errno./
(unction in every EayA eFcept instead o( returning an integer error code the ma+db>connect>error
./ (unction Eill return a string representation o( the last error to occur (or the last ma+db>connect./
call; .( no error has occuredA this (unction Eill return an empty string;
Meturn 5alues
A string that descri#es the error; An empty string i( no error occurred;
,ee also
ma+db>connect./A ma+db>connect>errno./A ma+db>errno./A ma+db>error./A ma+db>s?lstate./
E+ample
E'emplo !. ma+db>connect>error sample
<?php
$linI > maxdb%connect3"localhost", "nonexistinE%user", ""9;
i# 3!$linI9 :
print#3"RanMt connect to localhost. Error@ \sVn", maxdb%connect%error399;
;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
H 7arninE@ maxdb%connect39@ F122J ?&369 +nIno8n user name/pass8ord combination <...>
RanMt connect to localhost. Error@ ?&369 +nIno8n user name/pass8ord combination
ma+db>connect
>no version in(ormationA might #e only in 5$?
maFd#Zconnect 22 Open a neE connection to the MaFDB server
Kescription
Procedural style
resource ma+db>connect > Pstring host PA string username PA string passEd PA string d#name PA int
port PA string soc"etQQQQQQ ?
,he ma+db>connect./ (unction attempts to open a connection to the MaFDB erver running on
host Ehich can #e either a host name or an .P address; Passing the string =localhost= to this
parameterA the local host is assumed; .( success(ulA the ma+db>connect./ Eill return an resource
representing the connection to the data#aseA or FALSE on (ailure;
,he username and pass7or# parameters speci(y the username and passEord under Ehich to connect
to the MaFDB server; .( the passEord is not provided >the NULL value is passed?A the MaFDB
server Eill attempt to authenticate the user against the ma8#1.#e9ault_p7 in php.ini;
,he #1name parameter i( provided Eill speci(y the de(ault data#ase to #e used Ehen per(orming
/ueries; .( not proviedA the entry ma8#1.#e9ault_#1 in php.ini is used;
,he port and soc>et parameters are ignored (or the MaFDB server;
Meturn 5alues
Returns a resource Ehich represents the connection to a MaFDB erver or FALSE i( the connection
(ailed;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3!$linI9 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
print#3"Host in#ormation@ \sVn", maxdb%Eet%host%in#o3$linI99;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
Host in#ormation@ localhost
ma+db>data>seeB
>no version in(ormationA might #e only in 5$?
maFd#ZdataZsee" 22 Ad'usts the result pointer to an ar#itary roE in the result
Kescription
Procedural styleC
#ool ma+db>data>seeB > resource resultA int o((set ?
,he ma+db>data>seeB./ (unction see"s to an ar#itrary result pointer speci(ied #y the o99set in the
result set represented #y result; ,he o99set parameter must #e #etEeen zero and the total num#er o(
roEs minus one >3;;ma+db>num>ro3s./ 2 1?;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also
ma+db>store>result./A ma+db>fetch>ro3./A ma+db>num>ro3s./;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3!$linI9 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* name, state S'?" hotel.city ?'LE' ZP name";
i# 3$result > maxdb%Query3$linI, $Query99 :
/W seeI to ro8 no. 122 W/
maxdb%data%seeI3$result, 629;
/W #etch ro8 W/
$ro8 > maxdb%#etch%ro83$result9;
print# 3"Rity@ \s &tate@ \sVn", $ro8)2/, $ro8)6/9;

/W #ree result setW/
maxdb%#ree%result3$result9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
Rity@ 4r=ine &tate@ R,
ma+db>dump>debug>info
>no version in(ormationA might #e only in 5$?
maFd#ZdumpZde#ugZin(o 22 Dump de#ugging in(ormation into the log
Kescription
#ool ma+db>dump>debug>info > resource lin" ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>debug
>no version in(ormationA might #e only in 5$?
maFd#Zde#ug 22 Per(orms de#ugging operations
Kescription
void ma+db>debug > string de#ug ?
Meturn 5alues
ma+db>debug./ doesnHt return any value;
E+ample
E'emplo !. Procedural style
<?php

/W Rreate a trace #ile in M/tmp/client.traceM on the local 3client9 machine@ W/
/W .?*E@ Loes nothinE in case o# "axLZ W/
maxdb%debuE3"d@t@2,/tmp/client.trace"9;

?>
,he a#ove eFamples produces no output;
ma+db>disable>reads>from>master
>no version in(ormationA might #e only in 5$?
maFd#Zdisa#leZreadsZ(romZmaster 22 Disa#le reads (rom master
Kescription
void ma+db>disable>reads>from>master > resource lin" ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>disable>rpl>parse
>no version in(ormationA might #e only in 5$?
maFd#Zdisa#leZrplZparse 22 Disa#le RPL parse
Kescription
void ma+db>disable>rpl>parse > resource lin" ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>embedded>connect
>no version in(ormationA might #e only in 5$?
maFd#Zem#eddedZconnect 22 Open a connection to an em#edded MaFDB server
Kescription
resource ma+db>embedded>connect > Pstring d#nameQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>enable>reads>from>master
>no version in(ormationA might #e only in 5$?
maFd#Zena#leZreadsZ(romZmaster 22 +na#le reads (rom master
Kescription
void ma+db>enable>reads>from>master > resource lin" ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>enable>rpl>parse
>no version in(ormationA might #e only in 5$?
maFd#Zena#leZrplZparse 22 +na#le RPL parse
Kescription
void ma+db>enable>rpl>parse > resource lin" ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>errno
>no version in(ormationA might #e only in 5$?
maFd#Zerrno 22 Returns the error code (or the most recent (unction call
Kescription
Procedural styleC
int ma+db>errno > resource lin" ?
,he ma+db>errno./ (unction Eill return the last error code (or the most recent MaFDB (unction
call that can succeed or (ail Eith respect to the data#ase lin" de(ined #y the l6n> parameter; .( no
errors have occuredA this (unction Eill return zero;
Meturn 5alues
An error code value (or the last callA i( it (ailed; zero means no error occurred;
,ee also
ma+db>connect>errno./A ma+db>connect>error./A ma+db>error./A ma+db>s?lstate./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
i# 3!maxdb%Query3$linI, "&EOER* xxx S'?" hotel.city"99 :
print#3"Errorcode@ \dVn", maxdb%errno3$linI99;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
H 7arninE@ maxdb%Query39@ F1225 ?&3J9 +nIno8n column name@XXX )1C222/ <...>
Errorcode@ F1225
ma+db>error
>no version in(ormationA might #e only in 5$?
maFd#Zerror 22 Returns a string description o( the last error
Kescription
Procedural styleC
string ma+db>error > resource lin" ?
,he ma+db>error./ (unction is identical to the corresponding ma+db>errno./ (unction in every
EayA eFcept instead o( returning an integer error code the ma+db>error./ (unction Eill return a
string representation o( the last error to occur (or the data#ase connection represented #y the l6n>
parameter; .( no error has occuredA this (unction Eill return an empty string;
Meturn 5alues
A string that descri#es the error; An empty string i( no error occurred;
,ee also
ma+db>connect>errno./A ma+db>connect>error./A ma+db>errno./A ma+db>s?lstate./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
i# 3!maxdb%Query3$linI, "&EOER* xxx S'?" hotel.city"99 :
print#3"ErrormessEae@ \sVn", maxdb%error3$linI99;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
H 7arninE@ maxdb%Query39@ F1225 ?&3J9 +nIno8n column name@XXX )1C222/
ErrormessEae@ ?&3J9 +nIno8n column name@XXX
ma+db>escape>string
maFd#ZescapeZstring 22 Alias o( ma+db>real>escape>string./
Kescription
,his (unction is an alias o( ma+db>real>escape>string./;
ma+db>e+ecute
maFd#ZeFecute 22 Alias (or ma+db>stmt>e+ecute./
Kescription
,his (unction is an alias o( ma+db>stmt>e+ecute./; For a detailled descripton see description o(
ma+db>stmt>e+ecute./;
Nota- ma+db>e+ecute./ is deprecated and Eill #e removed;
,ee also
ma+db>stmt>e+ecute./
ma+db>fetch>array
>no version in(ormationA might #e only in 5$?
maFd#Z(etchZarray 22 Fetch a result roE as an associativeA a numeric arrayA or #oth
Kescription
Procedural styleC
miFed ma+db>fetch>array > resource result PA int resulttypeQ ?
Returns an array that corresponds to the (etched roE or NULL i( there are no more roEs (or the
resultset represented #y the result parameter;
ma+db>fetch>array./ is an eFtended version o( the ma+db>fetch>ro3./ (unction; .n addition to
storing the data in the numeric indices o( the result arrayA the ma+db>fetch>array./ (unction can
also store the data in associative indicesA using the (ield names o( the result set as "eys;
Nota- Los nom#res de campos retornados por esta (unci-n di(erencian entre ma?usculas
? m6nusculas;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
.( tEo or more columns o( the result have the same (ield namesA the last column Eill ta"e
precedence and overErite the earlier data; .n order to access multiple columns Eith the same nameA
the numerically indeFed version o( the roE must #e used;
,he optional second argument resultt?pe is a constant indicating Ehat type o( array should #e
produced (rom the current roE data; ,he possi#le values (or this parameter are the constants
MAJDBZAO5A MAJDBZN@MA or MAJDBZBO,&; By de(ault the ma+db>fetch>array./
(unction Eill assume MAJDBZBO,& (or this parameter;
By using the MAJDBZAO5 constant this (unction Eill #ehave identically to the
ma+db>fetch>assoc./A Ehile MAJDBZN@M Eill #ehave identically to the ma+db>fetch>ro3./
(unction; ,he (inal option MAJDBZBO,& Eill create a single array Eith the attri#utes o( #oth;
Meturn 5alues
Returns an array that corresponds to the (etched roE or NULL i( there are no more roEs in resultset;
,ee also
ma+db>fetch>assoc./A ma+db>fetch>ro3./A ma+db>fetch>resource./;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* name, state S'?" hotel.city ?'LE' by 0ip";
$result > maxdb%Query3$linI, $Query9;
/W numeric array W/
$ro8 > maxdb%#etch%array3$result, ",XLZ%.+"9;
print# 3"\s 3\s9Vn", $ro8)2/, $ro8)6/9;
/W associati=e array W/
$ro8 > maxdb%#etch%array3$result, ",XLZ%,&&?R9;
print# 3"\s 3\s9Vn", $ro8)".,"E"/, $ro8)"&*,*E"/9;
/W associati=e and numeric array W/
$ro8 > maxdb%#etch%array3$result, ",XLZ%Z?*H9;
print# 3"\s 3\s9Vn", $ro8)2/, $ro8)"&*,*E"/9;
/W #ree result set W/
maxdb%#ree%result3$result9;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
.e8 PorI 3.P9
.e8 PorI 3.P9
OonE 4sland 3.P9
ma+db>fetch>assoc
>no version in(ormationA might #e only in 5$?
maFd#Z(etchZassoc 22 Fetch a result roE as an associative array
Kescription
Procedural styleC
array ma+db>fetch>assoc > resource result ?
Returns an associative array that corresponds to the (etched roE or NULL i( there are no more roEs;
,he ma+db>fetch>assoc./ (unction is used to return an associative array representing the neFt roE
in the result set (or the result represented #y the result parameterA Ehere each "ey in the array
represents the name o( one o( the result setHs columns;
.( tEo or more columns o( the result have the same (ield namesA the last column Eill ta"e
precedence; ,o access the other column>s? o( the same nameA you either need to access the result
Eith numeric indices #y using ma+db>fetch>ro3./ or add alias names;
Nota- Los nom#res de campos retornados por esta (unci-n di(erencian entre ma?usculas
? m6nusculas;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
Meturn 5alues
Returns an array that corresponds to the (etched roE or NULL i( there are no more roEs in resultset;
,ee also
ma+db>fetch>array./A ma+db>fetch>ro3./A ma+db>fetch>resource./;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* name, state S'?" hotel.city ?'LE' by 0ip";
i# 3$result > maxdb%Query3$linI, $Query99 :
/W #etch associati=e array W/
8hile 3$ro8 > maxdb%#etch%assoc3$result99 :
print# 3"\s 3\s9Vn", $ro8)".,"E"/, $ro8)"&*,*E"/9;
;
/W #ree result set W/
maxdb%#ree%result3$result9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
.e8 PorI 3.P9
.e8 PorI 3.P9
OonE 4sland 3.P9
,lbany 3.P9
7ashinEton 3LR9
7ashinEton 3LR9
7ashinEton 3LR9
&il=er &prinE 3"L9
Laytona Zeach 3SO9
Leer#ield Zeach 3SO9
Rlear8ater 3SO9
Rincinnati 3?H9
Letroit 3"49
'osemont 34O9
RhicaEo 34O9
RhicaEo 34O9
.e8 ?rleans 3O,9
Lallas 3*X9
Oos ,nEeles 3R,9
Holly8ood 3R,9
OonE Zeach 3R,9
alm &prinEs 3R,9
4r=ine 3R,9
&anta Rlara 3R,9
ortland 3?'9
ma+db>fetch>field>direct
>no version in(ormationA might #e only in 5$?
maFd#Z(etchZ(ieldZdirect 22 Fetch meta2data (or a single (ield
Kescription
Procedural styleC
miFed ma+db>fetch>field>direct > resource resultA int (ieldnr ?
ma+db>fetch>field>direct./ returns an resource Ehich contains (ield de(inition in(ormations (rom
speci(ied resultset; ,he value o( (ieldnr must #e in the range (rom 0 to num1er o9 96el#s = 1;
Meturn 5alues
Returns a resource Ehich contains (ield de(inition in(ormation or FALSE i( no (ield in(ormation (or
speci(ied 96el#nr is availa#le;
Tabla !. Jb'ect attributes
Attribute Kescription
name ,he name o( the column
maFZlengt
h
,he maFimum Eidth o( the (ield (or the result
set;
type ,he data type used (or this (ield
decimals
,he num#er o( decimals used >(or integer
(ields?
,ee also
ma+db>num>fields./ ma+db>fetch>field./ ma+db>fetch>fields./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* name, cno #rom hotel.customer ?'LE' ZP name";
i# 3$result > maxdb%Query3$linI, $Query99 :
/W -et #ield in#ormation #or column McnoM W/
$#in#o > maxdb%#etch%#ield%direct3$result, 69;

print#3".ame@ \sVn", $#in#oF>name9;
print#3"*able@ \sVn", $#in#oF>table9;
print#3"max. Oen@ \dVn", $#in#oF>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#oF>#laEs9;
print#3"*ype@ \dVn", $#in#oF>type9;
maxdb%#ree%result3$result9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
.ame@ R.?
*able@
max. Oen@ 1
SlaEs@ F6
*ype@ 2
ma+db>fetch>field
>no version in(ormationA might #e only in 5$?
maFd#Z(etchZ(ield 22 Returns the neFt (ield in the result set
Kescription
Procedural styleC
miFed ma+db>fetch>field > resource result ?
,he ma+db>fetch>field./ returns the de(inition o( one column o( a result set as an resource; 5all
this (unction repeatedly to retrieve in(ormation a#out all columns in the result set;
ma+db>fetch>field./ returns FALSE Ehen no more (ields are le(t;
Meturn 5alues
Returns a resource Ehich contains (ield de(inition in(ormation or FALSE i( no (ield in(ormation is
availa#le;
Tabla !. Jb'ect properties
Property Kescription
name ,he name o( the column
maFZlengt
h
,he maFimum Eidth o( the (ield (or the result
set;
type ,he data type used (or this (ield
decimals
,he num#er o( decimals used >(or integer
(ields?
,ee also
ma+db>num>fields./ ma+db>fetch>field>direct./ ma+db>fetch>fields./ ma+db>field>seeB./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* name, cno #rom hotel.customer ?'LE' ZP cno";
i# 3$result > maxdb%Query3$linI, $Query99 :
/W -et #ield in#ormation #or all #ields W/
8hile 3$#in#o > maxdb%#etch%#ield3$result99 :

print#3".ame@ \sVn", $#in#oF>name9;
print#3"*able@ \sVn", $#in#oF>table9;
print#3"max. Oen@ \dVn", $#in#oF>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#oF>#laEs9;
print#3"*ype@ \dVnVn", $#in#oF>type9;
;
maxdb%#ree%result3$result9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
.ame@ .,"E
*able@
max. Oen@ 62
SlaEs@ F6
*ype@ C
.ame@ R.?
*able@
max. Oen@ 1
SlaEs@ F6
*ype@ 2
ma+db>fetch>fields
>no version in(ormationA might #e only in 5$?
maFd#Z(etchZ(ields 22 Returns an array o( resources representing the (ields in a result set
Kescription
Procedural tyleC
miFed ma+db>fetch>fields > resource result ?
,his (unction serves an identical purpose to the ma+db>fetch>field./ (unction Eith the single
di((erence thatA instead o( returning one resource at a time (or each (ieldA the columns are returned as
an array o( resources;
Meturn 5alues
Returns an array o( resources Ehich contains (ield de(inition in(ormation or FALSE i( no (ield
in(ormation is availa#le;
Tabla !. Jb'ect properties
Property Kescription
name ,he name o( the column
maFZlengt
h
,he maFimum Eidth o( the (ield (or the result
set;
type ,he data type used (or this (ield
decimals
,he num#er o( decimals used >(or integer
(ields?
,ee also
ma+db>num>fields./ ma+db>fetch>field./ ma+db>fetch>field>direct./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* name, cno #rom hotel.customer ?'LE' ZP cno";
i# 3$result > maxdb%Query3$linI, $Query99 :
/W -et #ield in#ormation #or all columns W/
$#in#o > maxdb%#etch%#ields3$result9;

#or 3$i>2; $i < count3$#in#o9; $i[[9 :
print#3".ame@ \sVn", $#in#o)$i/F>name9;
print#3"*able@ \sVn", $#in#o)$i/F>table9;
print#3"max. Oen@ \dVn", $#in#o)$i/F>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#o)$i/F>#laEs9;
print#3"*ype@ \dVnVn", $#in#o)$i/F>type9;
;
maxdb%#ree%result3$result9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
.ame@ .,"E
*able@
max. Oen@ 62
SlaEs@ F6
*ype@ C
.ame@ R.?
*able@
max. Oen@ 1
SlaEs@ F6
*ype@ 2
ma+db>fetch>lengths
>no version in(ormationA might #e only in 5$?
maFd#Z(etchZlengths 22 Returns the lengths o( the columns o( the current roE in the result set
Kescription
Procedural styleC
miFed ma+db>fetch>lengths > resource result ?
,he ma+db>fetch>lengths./ (unction returns an array containing the lengths o( every column o( the
current roE Eithin the result set represented #y the result parameter; .( success(ulA a numerically
indeFed array representing the lengths o( each column is returned or FALSE on (ailure;
Meturn 5alues
An array o( integers representing the size o( each column >not including any terminating null
characters?; FALSE i( an error occurred;
ma+db>fetch>lengths./ is valid only (or the current roE o( the result set; .t returns FALSE i( you
call it #e(ore calling maFd#Z(etchZroEDarrayDresource or a(ter retrieving all roEs in the result;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* W #rom hotel.customer 7HE'E cno > <222";
i# 3$result > maxdb%Query3$linI, $Query99 :
$ro8 > maxdb%#etch%ro83$result9;
/W display column lenEths W/
$lenEths > maxdb%#etch%lenEths3$result9;
#or 3$i>2; $i < count3$lenEths9; $i[[9 :
print#3"Sield \Cd has OenEth \CdVn", $i[6, $lenEths)$i/9;
;
maxdb%#ree%result3$result9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
Sield 6 has OenEth 1
Sield C has OenEth <
Sield < has OenEth 5
Sield 1 has OenEth G
Sield 5 has OenEth 5
Sield G has OenEth C6
ma+db>fetch>resource
>no version in(ormationA might #e only in 5$?
maFd#Z(etchZresource 22 Returns the current roE o( a result set as an resource
Kescription
Procedural styleC
miFed ma+db>fetch>resource > resource result ?
,he ma+db>fetch>resource./ Eill return the current roE result set as an resource Ehere the
attri#utes o( the resource represent the names o( the (ields (ound Eithin the result set; .( no more
roEs eFist in the current result setA NULL is returned;
Meturn 5alues
Returns an resource that corresponds to the (etched roE or NULL i( there are no more roEs in
resultset;
Nota- Los nom#res de campos retornados por esta (unci-n di(erencian entre ma?usculas
? m6nusculas;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
,ee also
ma+db>fetch>array./A ma+db>fetch>assoc./A ma+db>fetch>ro3./;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* name, state S'?" hotel.city ?'LE' by 0ip";
i# 3$result > maxdb%Query3$linI, $Query99 :
/W #etch associati=e array W/
8hile 3$obj > maxdb%#etch%object3$result99 :
print# 3"\s 3\s9Vn", $objF>.,"E, $objF>&*,*E9;
;
/W #ree result set W/
maxdb%#ree%result3$result9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
.e8 PorI 3.P9
.e8 PorI 3.P9
OonE 4sland 3.P9
,lbany 3.P9
7ashinEton 3LR9
7ashinEton 3LR9
7ashinEton 3LR9
&il=er &prinE 3"L9
Laytona Zeach 3SO9
Leer#ield Zeach 3SO9
Rlear8ater 3SO9
Rincinnati 3?H9
Letroit 3"49
'osemont 34O9
RhicaEo 34O9
RhicaEo 34O9
.e8 ?rleans 3O,9
Lallas 3*X9
Oos ,nEeles 3R,9
Holly8ood 3R,9
OonE Zeach 3R,9
alm &prinEs 3R,9
4r=ine 3R,9
&anta Rlara 3R,9
ortland 3?'9
ma+db>fetch>ro3
>no version in(ormationA might #e only in 5$?
maFd#Z(etchZroE 22 Get a result roE as an enumerated array
Kescription
Procedural styleC
miFed ma+db>fetch>ro3 > resource result ?
Returns an array that corresponds to the (etched roEA or NULL i( there are no more roEs;
ma+db>fetch>ro3./ (etches one roE o( data (rom the result set represented #y result and returns it
as an enumerated arrayA Ehere each column is stored in an array o((set starting (rom 3 >zero?; +ach
su#se/uent call to the ma+db>fetch>ro3./ (unction Eill return the neFt roE Eithin the result setA or
FALSE i( there are no more roEs;
Meturn 5alues
ma+db>fetch>ro3./ returns an array that corresponds to the (etched roE or NULL i( there are no
more roEs in result set;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
,ee also
ma+db>fetch>array./A ma+db>fetch>assoc./A ma+db>fetch>resource./;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* name, state S'?" hotel.city ?'LE' by 0ip";
i# 3$result > maxdb%Query3$linI, $Query99 :
/W #etch associati=e array W/
8hile 3$ro8 > maxdb%#etch%ro83$result99 :
print# 3"\s 3\s9Vn", $ro8)2/, $ro8)6/9;
;
/W #ree result set W/
maxdb%#ree%result3$result9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
.e8 PorI 3.P9
.e8 PorI 3.P9
OonE 4sland 3.P9
,lbany 3.P9
7ashinEton 3LR9
7ashinEton 3LR9
7ashinEton 3LR9
&il=er &prinE 3"L9
Laytona Zeach 3SO9
Leer#ield Zeach 3SO9
Rlear8ater 3SO9
Rincinnati 3?H9
Letroit 3"49
'osemont 34O9
RhicaEo 34O9
RhicaEo 34O9
.e8 ?rleans 3O,9
Lallas 3*X9
Oos ,nEeles 3R,9
Holly8ood 3R,9
OonE Zeach 3R,9
alm &prinEs 3R,9
4r=ine 3R,9
&anta Rlara 3R,9
ortland 3?'9
ma+db>fetch
maFd#Z(etch 22 Alias (or ma+db>stmt>fetch./
Kescription
,his (unction is an alias o( ma+db>stmt>fetch./; For a detailled descripton see description o(
ma+db>stmt>fetch./;
Nota- ma+db>fetch./ is deprecated and Eill #e removed;
,ee also
ma+db>stmt>fetch./
ma+db>field>count
>no version in(ormationA might #e only in 5$?
maFd#Z(ieldZcount 22 Returns the num#er o( columns (or the most recent /uery
Kescription
Procedural styleC
int ma+db>field>count > resource lin" ?
Returns the num#er o( columns (or the most recent /uery on the connection represented #y the l6n>
parameter; ,his (unction can #e use(ul Ehen using the ma+db>store>result./ (unction to determine
i( the /uery should have produced a non2empty result set or not Eithout "noEing the nature o( the
/uery;
Meturn 5alues
An integer representing the num#er o( (ields in a result set
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
maxdb%report 3",XLZ%'E?'*%?SS9;
maxdb%Query3$linI,"L'? *,ZOE #riends"9;
maxdb%report 3",XLZ%'E?'*%E''?'9;
maxdb%Query3$linI, "R'E,*E *,ZOE #riends 3id int, name =archar3C299"9;

maxdb%Query3$linI, "4.&E'* 4.*? #riends (,O+E& 36,MHartmutM9"9;
maxdb%Query3$linI, "4.&E'* 4.*? #riends (,O+E& 3C, M+l#M9"9;
i# 3maxdb%#ield%count3$linI99 :
/W this 8as a select/sho8 or describe Query W/
$result > maxdb%store%result3$linI9;

/W process resultset W/
$ro8 > maxdb%#etch%ro83$result9;
/W #ree resultset W/
maxdb%#ree%result3$result9;
;
/W close connection W/
maxdb%close3$linI9;
?>
ma+db>field>seeB
>no version in(ormationA might #e only in 5$?
maFd#Z(ieldZsee" 22 et result pointer to a speci(ied (ield o((set
Kescription
Procedural styleC
int ma+db>field>seeB > resource resultA int (ieldnr ?
ets the (ield cursor to the given o((set; ,he neFt call to ma+db>fetch>field./ Eill retrieve the (ield
de(inition o( the column associated Eith that o((set;
Nota- ,o see" to the #eginning o( a roEA pass an o((set value o( zero;
Meturn 5alues
ma+db>field>seeB./ returns previuos value o( (ield cursor;
,ee also
ma+db>fetch>field./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* name, cno #rom hotel.customer ?'LE' ZP cno";
i# 3$result > maxdb%Query3$linI, $Query99 :
/W -et #ield in#ormation #or Cnd column W/
maxdb%#ield%seeI3$result, 69;
$#in#o > maxdb%#etch%#ield3$result9;

print#3".ame@ \sVn", $#in#oF>name9;
print#3"*able@ \sVn", $#in#oF>table9;
print#3"max. Oen@ \dVn", $#in#oF>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#oF>#laEs9;
print#3"*ype@ \dVnVn", $#in#oF>type9;
maxdb%#ree%result3$result9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
.ame@ .,"E
*able@
max. Oen@ 62
SlaEs@ F6
*ype@ C
ma+db>field>tell
>no version in(ormationA might #e only in 5$?
maFd#Z(ieldZtell 22 Get current (ield o((set o( a result pointer
Kescription
Procedural styleC
int ma+db>field>tell > resource result ?
Returns the position o( the (ield cursor used (or the last ma+db>fetch>field./ call; ,his value can #e
used as an argument to ma+db>field>seeB./;
Calores retornados
Returns current o((set o( (ield cursor;
Cer tambi%n
ma+db>fetch>field./A ma+db>field>seeB./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* name, cno #rom hotel.customer ?'LE' ZP cno";
i# 3$result > maxdb%Query3$linI, $Query99 :
/W -et #ield in#ormation #or all #ields W/
8hile 3$#in#o > maxdb%#etch%#ield3$result99 :

/W Eet #ieldpointer o##set W/
$current#ield > maxdb%#ield%tell3$result9;
print#3"Rolumn \d@Vn", $current#ield9;
print#3".ame@ \sVn", $#in#oF>name9;
print#3"*able@ \sVn", $#in#oF>table9;
print#3"max. Oen@ \dVn", $#in#oF>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#oF>#laEs9;
print#3"*ype@ \dVnVn", $#in#oF>type9;
;
maxdb%#ree%result3$result9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
Rolumn 6@
.ame@ .,"E
*able@
max. Oen@ 62
SlaEs@ F6
*ype@ C
Rolumn C@
.ame@ R.?
*able@
max. Oen@ 1
SlaEs@ F6
*ype@ 2
ma+db>free>result
>no version in(ormationA might #e only in 5$?
maFd#Z(reeZresult 22 Frees the memory associated Eith a result
Kescription
Procedural styleC
void ma+db>free>result > resource result ?
,he ma+db>free>result./ (unction (rees the memory associated Eith the result represented #y the
result parameterA Ehich Eas allocated #y ma+db>?uery./A ma+db>store>result./ or
ma+db>use>result./;
Nota- %ou should alEays (ree your result Eith ma+db>free>result./A Ehen your result
resource is not needed anymore;
Calores retornados
,his (unction doesnHt return any value;
Cer tambi%n
ma+db>?uery./A ma+db>stmt>store>result./A ma+db>store>result./A ma+db>use>result./;
ma+db>get>client>info
>no version in(ormationA might #e only in 5$?
maFd#ZgetZclientZin(o 22 Returns the MaFDB client version as a string
Kescription
string ma+db>get>client>info > void ?
,he ma+db>get>client>info./ (unction is used to return a string representing the client version
#eing used in the MaFDB eFtension;
Calores retornados
A string that represents the MaFDB client li#rary version
,ee also
ma+db>get>client>5ersion./A ma+db>get>ser5er>info./A ma+db>get>ser5er>5ersion./
E+ample
E'emplo !. ma+db>get>client>info
<?php
/W 7e donMt need a connection to determine
the =ersion o# "axLZ client library W/
print#3"Rlient library =ersion@ \sVn", maxdb%Eet%client%in#o399;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
Rlient library =ersion@ lib&NOLZR <...>
ma+db>get>client>5ersion
>no version in(ormationA might #e only in 5$?
maFd#ZgetZclientZversion 22 Get MaFDB client in(o
Kescription
int ma+db>get>client>5ersion > void ?
Returns client version num#er as an integer;
Meturn 5alues
A num#er that represents the MaFDB client li#rary version in (ormatC ma6n_ers6on/10000 Y
m6nor_ers6on /100 Y su1_ers6on; For eFampleA :;4;3 is returned as :3433;
,his is use(ul to /uic"ly determine the version o( the client li#rary to "noE i( some capa#ility eFits;
,ee also
ma+db>get>client>info./A ma+db>get>ser5er>info./A ma+db>get>ser5er>5ersion./
E+ample
E'emplo !. ma+db>get>client>5ersion
<?php
/W 7e donMt need a connection to determine
the =ersion o# "axLZ client library W/
print#3"Rlient library =ersion@ \dVn", maxdb%Eet%client%=ersion399;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
Rlient library =ersion@ H.<...>
ma+db>get>host>info
>no version in(ormationA might #e only in 5$?
maFd#ZgetZhostZin(o 22 Returns a string representing the type o( connection used
Kescription
Procdural styleC
string ma+db>get>host>info > resource lin" ?
,he ma+db>get>host>info./ (unction returns a string descri#ing the connection represented #y the
l6n> parameter is using;
Calores retornados
A character string representing the server hostname and the connection type;
,ee also
ma+db>get>proto>info./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W print host in#ormation W/
print#3"Host in#o@ \sVn", maxdb%Eet%host%in#o3$linI99;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
Host in#o@ localhost
ma+db>get>metadata
maFd#ZgetZmetadata 22 Alias (or ma+db>stmt>result>metadata./
Kescription
,his (unction is an alias o( ma+db>stmt>result>metadata./; For a detailled descripton see
description o( ma+db>stmt>result>metadata./;
Nota- ma+db>get>metadata./ is deprecated and Eill #e removed;
,ee also
ma+db>stmt>result>metadata./
ma+db>get>proto>info
>no version in(ormationA might #e only in 5$?
maFd#ZgetZprotoZin(o 22 Returns the version o( the MaFDB protocol used
Kescription
Procedural styleC
int ma+db>get>proto>info > resource lin" ?
Returns an integer representing the MaFDB protocol version used #y the connection represented #y
the l6n> parameter;
Calores retornados
Returns an integer representing the protocol version >constant 13?;
,ee also
ma+db>get>host>info./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W print protocol =ersion W/
print#3"rotocol =ersion@ \dVn", maxdb%Eet%proto%in#o3$linI99;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
rotocol =ersion@ 62
ma+db>get>ser5er>info
>no version in(ormationA might #e only in 5$?
maFd#ZgetZserverZin(o 22 Returns the version o( the MaFDB server
Kescription
Procedural styleC
string ma+db>get>ser5er>info > resource lin" ?
Returns a string representing the version o( the MaFDB server that the MaFDB eFtension is
connected to >represented #y the l6n> parameter?;
Calores retornados
A character string representing the server version;
,ee also
ma+db>get>client>info./A ma+db>get>client>5ersion./A ma+db>get>ser5er>5ersion./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W print ser=er =ersion W/
print#3"&er=er =ersion@ \sVn", maxdb%Eet%ser=er%in#o3$linI99;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
&er=er =ersion@ ]ernel H<...>
ma+db>get>ser5er>5ersion
>no version in(ormationA might #e only in 5$?
maFd#ZgetZserverZversion 22 Returns the version o( the MaFDB server as an integer
Kescription
Procedural styleC
int ma+db>get>ser5er>5ersion > resource lin" ?
,he ma+db>get>ser5er>5ersion./ (unction returns the version o( the server connected to
>represented #y the l6n> parameter? as an integer;
,he (orm o( this version num#er is ma6n_ers6on / 10000 Y m6nor_ers6on / 100 Y su1_ers6on
>i;e; version :;4;3 is :3433?;
Calores retornados
An integer representing the server version;
,ee also
ma+db>get>client>info./A ma+db>get>client>5ersion./A ma+db>get>ser5er>info./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W print ser=er =ersion W/
print#3"&er=er =ersion@ \dVn", maxdb%Eet%ser=er%=ersion3$linI99;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
&er=er =ersion@ H<...>
ma+db>info
>no version in(ormationA might #e only in 5$?
maFd#Zin(o 22 Retrieves in(ormation a#out the most recently eFecuted /uery
Kescription
Procedural styleC
string ma+db>info > resource lin" ?
,he ma+db>info./ (unction returns a string providing in(ormation a#out the last /uery eFecuted;
,he nature o( this string is provided #eloEC
Tabla !. Possible ma+db>info return 5alues
$uery type E+ample result string
.N+R, .N,O;;;+L+5,;;; RecordsC 133 DuplicatesC 3 LarningsC 3
.N+R, .N,O;;;$AL@+ >;;;?A>;;;?A
>;;;?
RecordsC 7 DuplicatesC 3 LarningsC 3
LOAD DA,A .NF.L+ ;;;
RecordsC 1 DeletedC 3 "ippedC 3 LarningsC
3
AL,+R ,ABL+ ;;; RecordsC 7 DuplicatesC 3 LarningsC 3
@PDA,+ ;;; RoEs matchedC 83 5hangedC 83 LarningsC 3
Nota- Oueries Ehich do not (all into one o( the a#ove (ormats are not supported; .n
these situationsA ma+db>info./ Eill return an empty string;
Calores retornados
A character string representing additional in(ormation a#out the most recently eFecuted /uery;
Cer tambi%n
ma+db>affected>ro3s./A ma+db>3arning>count./A ma+db>num>ro3s./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
maxdb%Query3$linI, "R'E,*E *,ZOE temp.t6 O4]E hotel.city"9;
/W 4.&E'* 4.*? .. &EOER* W/
maxdb%Query3$linI, "4.&E'* 4.*? temp.t6 &EOER* W S'?" hotel.city"9;
print#3"\sVn", maxdb%in#o3$linI99;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
'ecords@ C5 Luplicates@ 2 7arninEs@ 2
ma+db>init
>no version in(ormationA might #e only in 5$?
maFd#Zinit 22 .nitializes MaFDB and returns an resource (or use Eith maFd#ZrealZconnect
Kescription
resource ma+db>init > void ?
Allocates or initializes a MaFDB resource suita#le (or ma+db>options./ and ma+db>real>connect
./;
Nota- Any su#se/uent calls to any maFd# (unction >eFcept ma+db>options./? Eill (ail
until ma+db>real>connect./ Eas called;
Calores retornados
Returns an resource;
Cer tambi%n
ma+db>options./A ma+db>close./A ma+db>real>connect./A ma+db>connect./
ma+db>insert>id
>no version in(ormationA might #e only in 5$?
maFd#ZinsertZid 22 Returns the auto generated id used in the last /uery
Kescription
Procedural styleC
miFed ma+db>insert>id > resource lin" ?
,he ma+db>insert>id./ (unction returns the .D generated #y a /uery on a ta#le Eith a column
having the D+FA@L, +R.AL attri#ute; .( the last /uery EasnHt an .N+R, or @PDA,+ statement
or i( the modi(ied ta#le does not have a column Eith the D+FA@L, +R.AL attri#uteA this (unction
Eill return zero;
Calores retornados
,he value o( the DE3,U4T SER0,4 (ield that Eas updated #y the previous /uery; Returns zero i(
there Eas no previous /uery on the connection or i( the /uery did not update an DE3,U4T_SER0,4
value;
Nota- .( the num#er is greater than maFimal int valueA ma+db>insert>id./ Eill return a
string;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
maxdb%report 3",XLZ%'E?'*%?SS9;
maxdb%Query3$linI,"L'? *,ZOE mycity"9;
maxdb%report 3",XLZ%'E?'*%E''?'9;
maxdb%Query3$linI, "R'E,*E *,ZOE mycity O4]E hotel.city"9;
maxdb%Query3$linI, ",O*E' *,ZOE mycity ,LL id S4XEL3669 LES,+O* &E'4,O"9;
$Query > "4.&E'* 4.*? mycity 30ip,name,state9 (,O+E& 3M6CC2<M,M,lbanyM ,M.PM9";
maxdb%Query3$linI, $Query9;
print# 3".e8 'ecord has id \d.Vn", maxdb%insert%id3$linI99;
/W drop table W/
maxdb%Query3$linI, "L'? *,ZOE mycity"9;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
.e8 'ecord has id 6.
ma+db>Bill
>no version in(ormationA might #e only in 5$?
maFd#Z"ill 22 Disconnects (rom a MaFDB server
Kescription
Procedural styleC
#ool ma+db>Bill > resource lin"A int processid ?
,his (unction is used to disconnect (rom a MaFDB server speci(ied #y the process6# parameter;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
ma+db>thread>id./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W determine our thread id W/
$thread%id > maxdb%thread%id3$linI9;
/W ]ill connection W/
maxdb%Iill3$linI, $thread%id9;
/W *his should produce an error W/
i# 3!maxdb%Query3$linI, "R'E,*E *,ZOE myRity O4]E Rity"99 :
print#3"Error@ \sVn", maxdb%error3$linI99;
exit;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
Error@ &ession not connected
ma+db>master>?uery
>no version in(ormationA might #e only in 5$?
maFd#ZmasterZ/uery 22 +n(orce eFecution o( a /uery on the master in a masterDslave setup
Kescription
#ool ma+db>master>?uery > resource lin"A string /uery ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>more>results
>no version in(ormationA might #e only in 5$?
maFd#ZmoreZresults 22 5hec" i( there any more /uery results (rom a multi /uery
Kescription
#ool ma+db>more>results > resource lin" ?
ma+db>more>results./ indicates i( one or more result sets are availa#le (rom a previous call to
ma+db>multi>?uery./;
Meturn 5alues
AlEays FALSE;
,ee also
ma+db>multi>?uery./A ma+db>ne+t>result./A ma+db>store>result./A ma+db>use>result./
E+ample
ee ma+db>multi>?uery./;
ma+db>multi>?uery
>no version in(ormationA might #e only in 5$?
maFd#ZmultiZ/uery 22 Per(orms a /uery on the data#ase
Kescription
Procedural styleC
#ool ma+db>multi>?uery > resource lin"A string /uery ?
,he ma+db>multi>?uery./ Eor"s li"e the (unction ma+db>?uery./; Multiple /ueries are not yet
supported;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also
ma+db>use>result./A ma+db>store>result./A ma+db>ne+t>result./A ma+db>more>results./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* W S'?" dual";
$Query .> "&EOER* name S'?" hotel.city ?'LE' ZP 0ip";
/W execute multi Query W/
i# 3maxdb%multi%Query3$linI, $Query99 :
do :
/W store #irst result set W/
i# 3$result > maxdb%store%result3$linI99 :
8hile 3$ro8 > maxdb%#etch%ro83$result99 :
print#3"\sVn", $ro8)2/9;
;
maxdb%#ree%result3$result9;
;
/W print di=ider W/
i# 3maxdb%more%results3$linI99 :
print#3"FFFFFFFFFFFFFFFFFVn"9;
;
; 8hile 3maxdb%next%result3$linI99;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
7arninE@ maxdb%multi%Query39@ F<22J ?&3<69 4n=alid Iey8ord or missinE delimiter <...>
ma+db>ne+t>result
>no version in(ormationA might #e only in 5$?
maFd#ZneFtZresult 22 Prepare neFt result (rom multiZ/uery
Kescription
#ool ma+db>ne+t>result > resource lin" ?
ince multiple /ueries are not yet supportedA ma+db>ne+t>result./ returns alEays FALSE;
Meturn 5alues
FALSE
,ee also
ma+db>multi>?uery./A ma+db>more>results./A ma+db>store>result./A ma+db>use>result./
ma+db>num>fields
>no version in(ormationA might #e only in 5$?
maFd#ZnumZ(ields 22 Get the num#er o( (ields in a result
Kescription
Procedural styleC
int ma+db>num>fields > resource result ?
ma+db>num>fields./ returns the num#er o( (ields (rom speci(ied result set;
Calores retornados
,he num#er o( (ields (rom a result set
Cer tambi%n
ma+db>fetch>field./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
i# 3$result > maxdb%Query3$linI, "&EOER* W S'?" hotel.city ?'LE' ZP 0ip"99 :
/W determine number o# #ields in result set W/
$#ield%cnt > maxdb%num%#ields3$result9;
print#3"'esult set has \d #ields.Vn", $#ield%cnt9;
/W close result set W/
maxdb%#ree%result3$result9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
'esult set has < #ields.
ma+db>num>ro3s
>no version in(ormationA might #e only in 5$?
maFd#ZnumZroEs 22 Gets the num#er o( roEs in a result
Kescription
Procedural styleC
miFed ma+db>num>ro3s > resource result ?
Returns the num#er o( roEs in the result set;
,he use o( ma+db>num>ro3s./ depends on Ehether you use #u((ered or un#u((ered result sets; .n
case you use un#u((ered resultsets ma+db>num>ro3s./ Eill not correct the correct num#er o( roEs
until all the roEs in the result have #een retrieved;
Calores retornados
Returns num#er o( roEs in the result set;
Nota- .( the num#er o( roEs is greater than maFimal int valueA the num#er Eill #e
returned as a string;
Cer tambi%n
ma+db>affected>ro3s./ ma+db>store>result./ ma+db>use>result./ ma+db>?uery./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
i# 3$result > maxdb%Query3$linI, "&EOER* cno, name S'?" hotel.customer ?'LE' ZP name"99 :
/W determine number o# ro8s result set W/
$ro8%cnt > maxdb%num%ro8s3$result9;
print#3"'esult set has \d ro8s.Vn", $ro8%cnt9;
/W close result set W/
maxdb%#ree%result3$result9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
'esult set has F6 ro8s.
ma+db>options
>no version in(ormationA might #e only in 5$?
maFd#Zoptions 22 et options
Kescription
Procedural styleC
#ool ma+db>options > resource lin"A int optionA miFed value ?
ma+db>options./ can #e used to set eFtra connect options and a((ect #ehavior (or a connection;
,his (unction may #e called multiple times to set several options;
ma+db>options./ should #e called a(ter ma+db>init./ and #e(ore ma+db>real>connect./;
,he parameter opt6on is the option that you Eant to setA the alue is the value (or the option; For
detailed description o( the options see httpCDDdev;mys/l;comDdocDmaFd#D ,he parameter opt6on can
#e one o( the (olloEing valuesC
Tabla !. Calid options
Name Kescription
MA%D(_COMPNAME
,he component name used to initialise the OLDB5 runtime
environment;
MA%D(_APPLICATION ,he application to #e connected to the data#ase;
MA%D(_APP$ERSION ,he version o( the application;
MA%D(_S.LMODE ,he OL mode;
MA%D(_UNICODE
,R@+A i( the connection is an unicode >@50? client or FAL+A
i( not;
MA%D(_TIMEOUT
,he maFimum alloEed time o( inactivity a(ter Ehich the
connection to the data#ase is closed #y the system;
MA%D(_ISOLATIONLE$EL
peci(ies Ehether and hoE shared loc"s and eFclusive loc"s are
implicitly re/uested or released;
MA%D(_PAC&ETCOUNT
,he num#er o( di((erent re/uest pac"ets used (or the
connection;
MA%D(_STATEMENTCACHESI
/E
,he num#er o( prepared statements to #e cached (or the
connection (or re2use;
MA%D(_CURSORPREFI% ,he pre(iF to use (or result ta#les that are automatically named;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
ma+db>init./A ma+db>real>connect./
E+ample
ee ma+db>real>connect./;
ma+db>param>count
maFd#ZparamZcount 22 Alias (or ma+db>stmt>param>count./
Kescription
,his (unction is an alias o( ma+db>stmt>param>count./; For a detailled descripton see description
o( ma+db>stmt>param>count./;
Nota- ma+db>param>count./ is deprecated and Eill #e removed;
,ee also
ma+db>stmt>param>count./
ma+db>ping
>no version in(ormationA might #e only in 5$?
maFd#Zping 22 Pings a server connectionA or tries to reconnect i( the connection has gone doEn
Kescription
Procedural styleC
#ool ma+db>ping > resource lin" ?
5hec"s Ehether the connection to the server is Eor"ing; .( it has gone doEnA and glo#al option
ma8#1.reconnect is ena#led an automatic reconnection is attempted;
,his (unction can #e used #y clients that remain idle (or a long EhileA to chec" Ehether the server
has closed the connection and reconnect i( necessary;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W checI i# ser=er is ali=e W/
i# 3maxdb%pinE3$linI99 :
print# 3"?ur connection is oI!Vn"9;
; else :
print# 3"Error@ \sVn", maxdb%error3$linI99;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
?ur connection is oI!
ma+db>prepare
>no version in(ormationA might #e only in 5$?
maFd#Zprepare 22 Prepare a OL statement (or eFecution
Kescription
Procedure styleC
miFed ma+db>prepare > resource lin"A string /uery ?
ma+db>prepare./ prepares the OL /uery pointed to #y the null2terminated string /ueryA and
returns a statement handle to #e used (or (urther operations on the statement; ,he /uery must consist
o( a single OL statement;
Nota- %ou should not add a terminating semicolon or QE to the statement;
,he parameter @uer? can include one or more parameter mar"ers in the OL statement #y
em#edding /uestion mar" >%? characters at the appropriate positions;
Nota- ,he mar"ers are legal only in certain places in OL statements; For eFampleA they
are alloEed in the $AL@+>? list o( an .N+R, statement >to speci(y column values (or
a roE?A or in a comparison Eith a column in a L&+R+ clause to speci(y a comparison
value;
&oEeverA they are not alloEed (or identi(iers >such as ta#le or column names?A in the
select list that names the columns to #e returned #y a +L+5, statement?A or to speci(y
#oth operands o( a #inary operator such as the : e/ual sign; ,he latter restriction is
necessary #ecause it Eould #e impossi#le to determine the parameter type; .n generalA
parameters are legal only in Data Manipulation Languange >DML? statementsA and not
in Data De(ination Language >DDL? statements;
,he parameter mar"ers must #e #ound to application varia#les using ma+db>stmt>bind>param./
andDor ma+db>stmt>bind>result./ #e(ore eFecuting the statement or (etching roEs;
Calores retornados
ma+db>prepare./ returns a statement resource or FALSE i( an error occured;
Cer tambi%n
ma+db>stmt>e+ecute./A ma+db>stmt>fetch./A ma+db>stmt>bind>param./A
ma+db>stmt>bind>result./A ma+db>stmt>close./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$city > "'osemont";
/W create a prepared statement W/
i# 3$stmt > maxdb%prepare3$linI, "&EOER* state S'?" hotel.city 7HE'E name>?"99 :
/W bind parameters #or marIers W/
maxdb%stmt%bind%param3$stmt, "s", $city9;
/W execute Query W/
maxdb%stmt%execute3$stmt9;
/W bind result =ariables W/
maxdb%stmt%bind%result3$stmt, $district9;
/W #etch =alue W/
maxdb%stmt%#etch3$stmt9;
print#3"\s is in district \sVn", $city, $district9;
/W close statement W/
maxdb%stmt%close3$stmt9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
'osemont is in district 4O
ma+db>?uery
>no version in(ormationA might #e only in 5$?
maFd#Z/uery 22 Per(orms a /uery on the data#ase
Kescription
Procedural styleC
miFed ma+db>?uery > resource lin"A string /uery PA int resultmodeQ ?
,he ma+db>?uery./ (unction is used to simpli(y the act o( per(orming a /uery against the data#ase
represented #y the l6n> parameter;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo; For SE4ECTC
S!OIC DESCR0AE or EF+4,0N ma+db>?uery./ Eill return a result resource;
,ee also
ma+db>real>?uery./A ma+db>multi>?uery./A ma+db>free>result./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W Rreate table doesnMt return a resultset W/
i# 3maxdb%Query3$linI, "R'E,*E *,ZOE temp.mycity O4]E hotel.city"9 >>> *'+E9 :
print#3"*able mycity success#ully created.Vn"9;
;
/W &elect Queries return a resultset W/
i# 3$result > maxdb%Query3$linI, "&EOER* name S'?" hotel.city"99 :
print#3"&elect returned \d ro8s.Vn", maxdb%num%ro8s3$result99;
/W #ree result set W/
maxdb%#ree%result3$result9;
;
/W 4# 8e ha=e to retrie=e larEe amount o# data 8e use ",XLZ%+&E%'E&+O* W/
i# 3$result > maxdb%Query3$linI, "&EOER* W S'?" hotel.city", ",XLZ%+&E%'E&+O*99 :
maxdb%#ree%result3$result9;
;
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
*able mycity success#ully created.
&elect returned F6 ro8s.
ma+db>real>connect
>no version in(ormationA might #e only in 5$?
maFd#ZrealZconnect 22 Opens a connection to a MaFDB server
Kescription
Procedural style
#ool ma+db>real>connect > resource lin" PA string hostname PA string username PA string passEd PA
string d#name PA int port PA string soc"etQQQQQQ ?
ma+db>real>connect./ attempts to esta#lish a connection to a MaFDB data#ase engine running on
hostname;
,his (unction di((ers (rom ma+db>connect./C
ma+db>real>connect./ needs a valid resource Ehich has to #e created #y (unction
ma+db>init./
Lith (unction ma+db>options./ you can set various options (or connection;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
ma+db>connect./A ma+db>init./A ma+db>options./A ma+db>ssl>set./A ma+db>close./;
E+ample
E'emplo !. Procedural style
<?php
/W create a connection object 8hich is not connected W/
$linI > maxdb%init39;
/W set connection options W/
maxdb%options3$linI, ",XLZ%+.4R?LE, "S,O&E"9;
maxdb%options3$linI, ",XLZ%*4"E?+*, 59;
/W connect to ser=er W/
maxdb%real%connect3$linI, MlocalhostM, M"?.,M, M'ELM9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
print# 3"Ronnection@ \sVn.", maxdb%Eet%host%in#o3$linI99;
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
Ronnection@ localhost <...>
ma+db>real>escape>string
>no version in(ormationA might #e only in 5$?
maFd#ZrealZescapeZstring 22 +scapes special characters in a string (or use in a OL statementA
ta"ing into account the current charset o( the connection
Kescription
Procedural styleC
string ma+db>real>escape>string > resource lin"A string escapestr ?
,his (unction is used to create a legal OL string that you can use in a OL statement; ,he string
escapestr is encoded to an escaped OL stringA ta"ing into account the current character set o( the
connection;
5haracters encoded are <C *;
Meturn 5alues
Returns an escaped string;
,ee also
ma+db>character>set>name./;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
maxdb%Query3$linI, "R'E,*E *,ZOE temp.mycity O4]E hotel.city"9;
$city > "Ms HertoEenbosch";
/W this Query 8ill #ail, cause 8e didnMt escape $city W/
i# 3!maxdb%Query3$linI, "4.&E'* into temp.mycity (,O+E& 3M66666M,M$cityM,M.PM9"99 :
print#3"Error@ \sVn", maxdb%sQlstate3$linI99;
;
$city > maxdb%real%escape%strinE3$linI, $city9;
/W this Query 8ith escaped $city 8ill 8orI W/
i# 3maxdb%Query3$linI, "4.&E'* into temp.mycity (,O+E& 3MCCCCCM,M$cityM,M.PM9"99 :
print#3"\d 'o8 inserted.Vn", maxdb%a##ected%ro8s3$linI99;
;
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
7arninE@ maxdb%Query39@ F526G ?&31<9 "issinE delimiter@ 9 <...>
Error@ 1C222
6 'o8 inserted.
ma+db>real>?uery
>no version in(ormationA might #e only in 5$?
maFd#ZrealZ/uery 22 +Fecute an OL /uery
Kescription
Procedural style
#ool ma+db>real>?uery > resource lin"A string /uery ?
,he ma+db>real>?uery./ is (unctionally identical Eith the ma+db>?uery./;
Nota- .n order to determine i( a given /uery should return a result set or notA see
ma+db>field>count./;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also
ma+db>?uery./ ma+db>store>result./ ma+db>use>result./
ma+db>report
>no version in(ormationA might #e only in 5$?
maFd#Zreport 22 +na#les or disa#les internal report (unctions
Kescription
#ool ma+db>report > int (lags ?
E+ample
E'emplo !. Procedural style
<?php
/W acti=ate reportinE W/
maxdb%report3",XLZ%'E?'*%E''?'9;
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W this Query should report an error W/
$result > maxdb%Query3$linI,"&EOER* .ame S'?" .onexistinEtable 7HE'E population > 52222"9;
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
7arninE@ maxdb%Query39@ F1221 ?&36J9 +nIno8n table name@.?.EX4&*4.-*,ZOE <...>
ma+db>rollbacB
>no version in(ormationA might #e only in 5$?
maFd#Zroll#ac" 22 Rolls #ac" current transaction
Kescription
#ool ma+db>rollbacB > resource lin" ?
Roll#ac"s the current transaction (or the data#ase speci(ied #y the l6n> parameter;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also
ma+db>commit./ ma+db>autocommit./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W disable autocommit W/
maxdb%autocommit3$linI, S,O&E9;
maxdb%Query3$linI, "R'E,*E *,ZOE temp.mycity O4]E hotel.city"9;
maxdb%Query3$linI, "4.&E'* 4.*? temp.mycity &EOER* W S'?" hotel.city"9;
/W commit insert W/
maxdb%commit3$linI9;
/W delete all ro8s W/
maxdb%Query3$linI, "LEOE*E S'?" temp.mycity"9;
i# 3$result > maxdb%Query3$linI, "&EOER* R?+.*3W9 S'?" temp.mycity"99 :
$ro8 > maxdb%#etch%ro83$result9;
print#3"\d ro8s in table mycity.Vn", $ro8)2/9;
/W Sree result W/
maxdb%#ree%result3$result9;
;
/W 'ollbacI W/
maxdb%rollbacI3$linI9;
i# 3$result > maxdb%Query3$linI, "&EOER* R?+.*3W9 S'?" temp.mycity"99 :
$ro8 > maxdb%#etch%ro83$result9;
print#3"\d ro8s in table mycity 3a#ter rollbacI9.Vn", $ro8)2/9;
/W Sree result W/
maxdb%#ree%result3$result9;
;
/W Lrop table myRity W/
maxdb%Query3$linI, "L'? *,ZOE temp.mycity"9;
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
2 ro8s in table mycity.
C5 ro8s in table mycity 3a#ter rollbacI9.
ma+db>rpl>parse>enabled
>no version in(ormationA might #e only in 5$?
maFd#ZrplZparseZena#led 22 5hec" i( RPL parse is ena#led
Kescription
int ma+db>rpl>parse>enabled > resource lin" ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>rpl>probe
>no version in(ormationA might #e only in 5$?
maFd#ZrplZpro#e 22 RPL pro#e
Kescription
#ool ma+db>rpl>probe > resource lin" ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>rpl>?uery>type
>no version in(ormationA might #e only in 5$?
maFd#ZrplZ/ueryZtype 22 Returns RPL /uery type
Kescription
int ma+db>rpl>?uery>type > resource lin"A string /uery ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>select>db
>no version in(ormationA might #e only in 5$?
maFd#ZselectZd# 22 elects the de(ault data#ase (or data#ase /ueries
Kescription
#ool ma+db>select>db > resource lin"A string d#name ?
,he ma+db>select>db./ (unction selects the de(ault data#ase >speci(ied #y the #1name parameter?
to #e used Ehen per(orming /ueries against the data#ase connection represented #y the l6n>
parameter;
Nota- ,his (unction should only #e used to change the de(ault data#ase (or the
connection; %ou can select the de(ault data#ase Eith 8th parameter in ma+db>connect
./;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also
ma+db>connect./ ma+db>real>connect./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W return name o# current de#ault database W/
i# 3$result > maxdb%Query3$linI, "&EOER* &E'(E'LZ S'?" +&E'& 7HE'E +&E'.,"E>M"?.,M"99 :
$ro8 > maxdb%#etch%ro83$result9;
print#3"Le#ault database is \s.Vn", $ro8)2/9;
maxdb%#ree%result3$result9;
;
/W chanEe db to 8orld db W/
maxdb%select%db3$linI, "XXXXXXXX"9;
/W return name o# current de#ault database W/
i# 3$result > maxdb%Query3$linI, "&EOER* &E'(E'LZ S'?" +&E'& 7HE'E +&E'.,"E>M"?.,M"99 :
$ro8 > maxdb%#etch%ro83$result9;
print#3"Le#ault database is \s.Vn", $ro8)2/9;
maxdb%#ree%result3$result9;
;
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
Le#ault database is LZHG.
7arninE@ maxdb%select%db39@ F62H2K Ronnection #ailed 3'*E@database not runninE9 <...>
7arninE@ maxdb%Query39@ F62JC6 &ession not connected )/ <...>
7arninE@ maxdb%close39@ F62JC6 &ession not connected )/ <...>
ma+db>send>long>data
maFd#ZsendZlongZdata 22 Alias (or ma+db>stmt>send>long>data./
Kescription
,his (unction is an alias o( ma+db>stmt>send>long>data./; For a detailled descripton see
description o( ma+db>stmt>send>long>data./;
Nota- ma+db>send>long>data./ is deprecated and Eill #e removed;
,ee also
ma+db>stmt>send>long>data./
ma+db>send>?uery
>no version in(ormationA might #e only in 5$?
maFd#ZsendZ/uery 22 end the /uery and return
Kescription
#ool ma+db>send>?uery > resource lin"A string /uery ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>ser5er>end
>no version in(ormationA might #e only in 5$?
maFd#ZserverZend 22 hut doEn the em#edded server
Kescription
void ma+db>ser5er>end > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>ser5er>init
>no version in(ormationA might #e only in 5$?
maFd#ZserverZinit 22 .nitialize em#edded server
Kescription
#ool ma+db>ser5er>init > Parray server PA array groupsQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>set>opt
maFd#ZsetZopt 22 Alias o( ma+db>options./
Kescription
,his (unction is an alias o( ma+db>options./;
ma+db>s?lstate
>no version in(ormationA might #e only in 5$?
maFd#Zs/lstate 22 Returns the OL,A,+ error (rom previous MaFDB operation
Kescription
Procedural styleC
string ma+db>s?lstate > resource lin" ?
Returns a string containing the OL,A,+ error code (or the last error; ,he error code consists o(
(ive characters; <00000< means no error; ,he values are speci(ied #y AN. OL and ODB5;
Nota- Note that not all MaFDB errors are yet mapped to OL,A,+Hs; ,he value
!B000 >general error? is used (or unmapped errors;
Meturn 5alues
Returns a string containing the OL,A,+ error code (or the last error; ,he error code consists o(
(ive characters; <00000< means no error;
,ee also
ma+db>errno./A ma+db>error./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W *able Rity already exists, so 8e should Eet an error W/
i# 3!maxdb%Query3$linI, "R'E,*E *,ZOE hotel.city 34L 4.*, .ame (,'RH,'3<299"99 :
print#3"Error F &NO&*,*E \s.Vn", maxdb%sQlstate3$linI99;
;
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
7arninE@ maxdb%Query39@ FG222 ?&3C29 Luplicate table name@R4*P )4G222/ <...>
Error F &NO&*,*E 4G222.
ma+db>ssl>set
>no version in(ormationA might #e only in 5$?
maFd#ZsslZset 22 @sed (or esta#lishing secure connections using L
Kescription
Procedural styleC
#ool ma+db>ssl>set > resource lin"A string "eyA string certA string caA string capathA string cipher ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>stat
>no version in(ormationA might #e only in 5$?
maFd#Zstat 22 Gets the current system status
Kescription
Procedural styleC
miFed ma+db>stat > resource lin" ?
ma+db>stat./ returns a string containing several in(ormation a#out the MaFDB server running;
Meturn 5alues
A string descri#ing the server status; FALSE i( an error occurred;
,ee also
ma+db>get>ser5er>info./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
print#3"&ystem status@ \sVn", maxdb%stat3$linI99;
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
&ystem status@ ]ernel H<...>
ma+db>stmt>affected>ro3s
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZa((ectedZroEs 22 Returns the total num#er o( roEs changedA deletedA or inserted #y the
last eFecuted statement
Kescription
Procedural style C
miFed ma+db>stmt>affected>ro3s > resource stmt ?
ma+db>stmt>affected>ro3s./ returns the num#er o( roEs a((ected #y .N+R,A @PDA,+A or
D+L+,+ /uery; .( the last /uery Eas invalid or the num#er o( roEs can not determinedA this
(unction Eill return 21;
Meturn Calues
An integer greater than zero indicates the num#er o( roEs a((ected or retrieved; Iero indicates that
no records Ehere updated (or an @PDA,+DD+L+,+ statementA no roEs matched the L&+R+
clause in the /uery or that no /uery has yet #een eFecuted; 21 indicates that the /uery has returned
an error or the num#er o( roEs can not determined;
,ee also
ma+db>stmt>num>ro3s./A ma+db>prepare./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W create temp table W/
maxdb%Query3$linI, "R'E,*E *,ZOE temp.mycity O4]E hotel.city"9;
$Query > "4.&E'* 4.*? temp.mycity &EOER* W S'?" hotel.city 7HE'E state O4]E ?";
/W prepare statement W/
i# 3$stmt > maxdb%prepare3$linI, $Query99 :
/W Zind =ariable #or placeholder W/
$code > M.\M;
maxdb%stmt%bind%param3$stmt, "s", $code9;

/W execute statement W/
maxdb%stmt%execute3$stmt9;
print#3"ro8s inserted@ \dVn", maxdb%stmt%a##ected%ro8s3$stmt99;
/W close statement W/
maxdb%stmt%close3$stmt9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
ro8s inserted@ 1
ma+db>stmt>bind>param
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZ#indZparam 22 Binds varia#les to a prepared statement as parameters
Kescription
Procedural styleC
#ool ma+db>stmt>bind>param > resource stmtA string typesA miFed ivar1 PA miFed i;;;Q ?
ma+db>stmt>bind>param./ is used to #ind varia#les (or the parameter mar"ers in the OL
statement that Eas passed to ma+db>prepare./; ,he string t?pes contains one or more characters
Ehich speci(y the types (or the corresponding #ind varia#les
Tabla !. Type specification chars
Character Kescription
i corresponding varia#le has type integer
d corresponding varia#le has type dou#le
s corresponding varia#le has type string
#
corresponding varia#le is a #lo# and Eill #e send in
pac"ages
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also
ma+db>stmt>bind>result./A ma+db>stmt>e+ecute./A ma+db>stmt>fetch./A ma+db>prepare./A
ma+db>stmt>send>long>data./A ma+db>stmt>errno./A ma+db>stmt>error./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3!$linI9 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
maxdb%Query 3$linI, "R'E,*E *,ZOE temp.mycity O4]E hotel.city"9;
maxdb%Query 3$linI, "4.&E'* 4.*? temp.mycity &EOER* W S'?" hotel.city"9;
$stmt > maxdb%prepare3$linI, "4.&E'* 4.*? temp.mycity (,O+E& 3?, ?, ?9"9;
maxdb%stmt%bind%param3$stmt, MsssM, $0ip, $name, $state9;
$0ip > M66666M;
$name > M-eorEeto8nM;
$state > M.PM;
/W execute prepared statement W/
maxdb%stmt%execute3$stmt9;
print#3"\d 'o8 inserted.Vn", maxdb%stmt%a##ected%ro8s3$stmt99;
/W close statement and connection W/
maxdb%stmt%close3$stmt9;
/W Rlean up table RountryOanEuaEe W/
maxdb%Query3$linI, "LEOE*E S'?" temp.mycity 7HE'E name>M-eorEeto8nM"9;
print#3"\d 'o8 deleted.Vn", maxdb%a##ected%ro8s3$linI99;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
6 'o8 inserted.
6 'o8 deleted.
ma+db>stmt>bind>result
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZ#indZresult 22 Binds varia#les to a prepared statement (or result storage
Kescription
Procedural styleC
#ool ma+db>stmt>bind>result > resource stmtA miFed ivar1 PA miFed i;;;Q ?
ma+db>stmt>bind>result./ is used to associate >#ind? columns in the result set to varia#les; Lhen
ma+db>stmt>fetch./ is called to (etch dataA the MaFDB clientDserver protocol places the data (or
the #ound columns into the speci(ied varia#les ar1C ...;
Nota- Note that all columns must #e #ound prior to calling ma+db>stmt>fetch./;
Depending on column types #ound varia#les can silently change to the corresponding
P&P type;
A column can #e #ound or re#ound at any timeA even a(ter a result set has #een partially
retrieved; ,he neE #inding ta"es e((ect the neFt time ma+db>stmt>fetch./ is called;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also
ma+db>stmt>bind>param./A ma+db>stmt>e+ecute./A ma+db>stmt>fetch./A ma+db>prepare./A
ma+db>stmt>prepare./A ma+db>stmt>init./A ma+db>stmt>errno./A ma+db>stmt>error./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3!$linI9 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W prepare statement W/
i# 3$stmt > maxdb%prepare3$linI, "&EOER* 0ip, name S'?" hotel.city ?'LE' ZP name"99 :
maxdb%stmt%execute3$stmt9;
/W bind =ariables to prepared statement W/
maxdb%stmt%bind%result3$stmt, $col6, $colC9;
/W #etch =alues W/
8hile 3maxdb%stmt%#etch3$stmt99 :
print#3"\s \sVn", $col6, $colC9;
;
/W close statement W/
maxdb%stmt%close3$stmt9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
6CC2< ,lbany
G2G26 RhicaEo
G2G65 RhicaEo
15C66 Rincinnati
<<5H5 Rlear8ater
H5C1< Lallas
<C26J Laytona Zeach
<<116 Leer#ield Zeach
1JCCG Letroit
K22CK Holly8ood
KCH61 4r=ine
K2J21 OonE Zeach
66HJJ OonE 4sland
K226J Oos ,nEeles
H266C .e8 ?rleans
6226K .e8 PorI
625J2 .e8 PorI
KCCGC alm &prinEs
KHC6< ortland
G226J 'osemont
K5251 &anta Rlara
C2K2< &il=er &prinE
C2225 7ashinEton
C226K 7ashinEton
C22<H 7ashinEton
ma+db>stmt>close>long>data
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZcloseZlongZdata 22 +nds a se/uence o( ma+db>stmt>send>long>data./
Kescription
Procedural styleC
#ool ma+db>stmt>close>long>data > resource stmtA int paramZnr ?
,his (unction has to #e called a(ter a se/uence o( ma+db>stmt>send>long>data./A that Eas started
a(ter ma+db>e+ecute./;
param_nr indicates Ehich parameter to associate the end o( data Eith; Parameters are num#ered
#eginning Eith 3;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
ma+db>prepare./A ma+db>stmt>bind>param./
ma+db>stmt>close
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZclose 22 5loses a prepared statement
Kescription
Procedural styleC
#ool ma+db>stmt>close > resource stmt ?
5loses a prepared statement; ma+db>stmt>close./ also deallocates the statement handle pointed to
#y stmt; .( the current statement has pending or unread resultsA this (unction cancels them so that the
neFt /uery can #e eFecuted;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also
ma+db>prepare./A
ma+db>stmt>data>seeB
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZdataZsee" 22 ee"s to an ar#itray roE in statement result set
Kescription
Procedural styleC
#ool ma+db>stmt>data>seeB > resource statementA int o((set ?
,he ma+db>stmt>data>seeB./ (unction see"s to an ar#itrary result pointer speci(ied #y the o99set in
the statement result set represented #y statement; ,he o99set parameter must #e #etEeen zero and the
total num#er o( roEs minus one >3;;ma+db>stmt>num>ro3s./ 2 1?;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also
ma+db>prepare./
E+ample
E'emplo !. Procedural style
<?php
/W ?pen a connection W/
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* name, 0ip S'?" hotel.city ?'LE' ZP name";
i# 3$stmt > maxdb%prepare3$linI, $Query99 :
/W execute Query W/
maxdb%stmt%execute3$stmt9;
/W bind result =ariables W/
maxdb%stmt%bind%result3$stmt, $name, $code9;
/W store result W/
maxdb%stmt%store%result3$stmt9;
/W seeI to ro8 no. 122 W/
maxdb%stmt%data%seeI3$stmt, 59;
/W #etch =alues W/
maxdb%stmt%#etch3$stmt9;
print# 3"Rity@ \s Yip@ \sVn", $name, $code9;
/W close statement W/
maxdb%stmt%close3$stmt9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
Rity@ Lallas Yip@ H5C1<
ma+db>stmt>errno
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZerrno 22 Returns the error code (or the most recent statement call
Kescription
Procedural style C
int ma+db>stmt>errno > resource stmt ?
For the statement speci(ied #y stmtA ma+db>stmt>errno./ returns the error code (or the most
recently invo"ed statement (unction that can succeed or (ail;
Nota- For possi#le error codes see documentation o( OLDB5C
httpCDDdev;mys/l;comDdocDmaFd#D;
Meturn 5alues
An error code value; Iero means no error occurred;
,ee also
ma+db>stmt>error./A ma+db>stmt>s?lstate./
E+ample
E'emplo !. Procedural style
<?php
/W ?pen a connection W/
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
maxdb%Query3$linI, "R'E,*E *,ZOE temp.mycity O4]E hotel.city"9;
maxdb%Query3$linI, "4.&E'* 4.*? temp.mycity &EOER* W S'?" hotel.city"9;
$Query > "&EOER* name, 0ip S'?" temp.mycity ?'LE' ZP name";
i# 3$stmt > maxdb%prepare3$linI, $Query99 :
/W drop table W/
maxdb%Query3$linI, "L'? *,ZOE temp.mycity"9;
/W execute Query W/
maxdb%stmt%execute3$stmt9;
print#3"Error@ \d.Vn", maxdb%stmt%errno3$stmt99;
/W close statement W/
maxdb%stmt%close3$stmt9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
7arninE@ maxdb%stmt%execute39@ F1221 ?&3C<9 +nIno8n table name@"PR4*P )1C222/ <...>
Error@ F1221.
ma+db>stmt>error
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZerror 22 Returns a string description (or last statement error
Kescription
Procedural styleC
string ma+db>stmt>error > resource stmt ?
For the statement speci(ied #y stmtA ma+db>stmt>error./ returns a containing the error message (or
the most recently invo"ed statement (unction that can succeed or (ail;
Meturn 5alues
A string that descri#es the error; An empty string i( no error occurred;
,ee also
ma+db>stmt>errno./A ma+db>stmt>s?lstate./
E+ample
E'emplo !. Procedural style
<?php
/W ?pen a connection W/
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
maxdb%Query3$linI, "R'E,*E *,ZOE temp.mycity O4]E hotel.city"9;
maxdb%Query3$linI, "4.&E'* 4.*? temp.mycity &EOER* W S'?" hotel.city"9;
$Query > "&EOER* name, 0ip S'?" temp.mycity ?'LE' ZP name";
i# 3$stmt > maxdb%prepare3$linI, $Query99 :
/W drop table W/
maxdb%Query3$linI, "L'? *,ZOE temp.mycity"9;
/W execute Query W/
maxdb%stmt%execute3$stmt9;
print#3"Error@ \s.Vn", maxdb%stmt%error3$stmt99;
/W close statement W/
maxdb%stmt%close3$stmt9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
7arninE@ maxdb%stmt%execute39@ F1221 ?&3C<9 +nIno8n table name@"PR4*P )1C222/ <...>
Error@ ?&3C<9 +nIno8n table name@"PR4*P.
ma+db>stmt>e+ecute
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZeFecute 22 +Fecutes a prepared Ouery
Kescription
Procedural styleC
#ool ma+db>stmt>e+ecute > resource stmt ?
,he ma+db>stmt>e+ecute./ (unction eFecutes a /uery that has #een previously prepared using the
ma+db>prepare./ (unction represented #y the stmt resource; Lhen eFecuted any parameter
mar"ers Ehich eFist Eill automatically #e replaced Eith the appropiate data;
.( the statement is @PDA,+A D+L+,+A or .N+R,A the total num#er o( a((ected roEs can #e
determined #y using the ma+db>stmt>affected>ro3s./ (unction; Li"eEiseA i( the /uery yields a
result set the ma+db>fetch./ (unction is used;
Nota- Lhen using ma+db>stmt>e+ecute./A the ma+db>fetch./ (unction must #e used
to (etch the data prior to pre(orming any additional /ueries;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also
ma+db>prepare./ ma+db>stmt>bind>param./;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;

/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;

maxdb%Query3$linI, "R'E,*E *,ZOE temp.mycity O4]E hotel.city"9;

/W repare an insert statement W/
$Query > "4.&E'* 4.*? temp.mycity 30ip, name, state9 (,O+E& 3?,?,?9";
$stmt > maxdb%prepare3$linI, $Query9;
maxdb%stmt%bind%param3$stmt, "sss", $=al6, $=alC, $=al<9;
$=al6 > M66666M;
$=alC > M-eorEeto8nM;
$=al< > M.PM;

/W Execute the statement W/
maxdb%stmt%execute3$stmt9;
$=al6 > MCCCCCM;
$=alC > MHubbato8nM;
$=al< > MR,M;

/W Execute the statement W/
maxdb%stmt%execute3$stmt9;
/W close statement W/
maxdb%stmt%close3$stmt9;
/W retrie=e all ro8s #rom myRity W/
$Query > "&EOER* 0ip, name, state S'?" temp.mycity";
i# 3$result > maxdb%Query3$linI, $Query99 :
8hile 3$ro8 > maxdb%#etch%ro83$result99 :
print#3"\s 3\s,\s9Vn", $ro8)2/, $ro8)6/, $ro8)C/9;
;
/W #ree result set W/
maxdb%#ree%result3$result9;
;
/W remo=e table W/
maxdb%Query3$linI, "L'? *,ZOE temp.mycity"9;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
66666 3-eorEeto8n,.P9
CCCCC 3Hubbato8n,R,9
ma+db>stmt>fetch
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZ(etch 22 Fetch results (rom a prepared statement into the #ound varia#les
Kescription
Procedural styleC
miFed ma+db>stmt>fetch > resource stmt ?
ma+db>stmt>fetch./ returns roE data using the varia#les #ound #y ma+db>stmt>bind>result./;
Nota- Note that all columns must #e #ound #y the application #e(ore calling
ma+db>stmt>fetch./;
Meturn 5alues
Tabla !. Meturn 5alues
Calue Kescription
TRUE
uccess; Data has #een
(etched
FALSE +rror occured
NULL No more roEsDdata eFists
,ee also
ma+db>prepare./A ma+db>stmt>errno./A ma+db>stmt>error./A ma+db>stmt>bind>result./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* 0ip, name S'?" hotel.city ?'LE' by name";
i# 3$stmt > maxdb%prepare3$linI, $Query99 :
/W execute statement W/
maxdb%stmt%execute3$stmt9;
/W bind result =ariables W/
maxdb%stmt%bind%result3$stmt, $name, $code9;
/W #etch =alues W/
8hile 3maxdb%stmt%#etch3$stmt99 :
print# 3"\s 3\s9Vn", $name, $code9;
;
/W close statement W/
maxdb%stmt%close3$stmt9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
6CC2< 3,lbany9
G2G26 3RhicaEo9
G2G65 3RhicaEo9
15C66 3Rincinnati9
<<5H5 3Rlear8ater9
H5C1< 3Lallas9
<C26J 3Laytona Zeach9
<<116 3Leer#ield Zeach9
1JCCG 3Letroit9
K22CK 3Holly8ood9
KCH61 34r=ine9
K2J21 3OonE Zeach9
66HJJ 3OonE 4sland9
K226J 3Oos ,nEeles9
H266C 3.e8 ?rleans9
6226K 3.e8 PorI9
625J2 3.e8 PorI9
KCCGC 3alm &prinEs9
KHC6< 3ortland9
G226J 3'osemont9
K5251 3&anta Rlara9
C2K2< 3&il=er &prinE9
C2225 37ashinEton9
C226K 37ashinEton9
C22<H 37ashinEton9
ma+db>stmt>free>result
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZ(reeZresult 22 Frees stored result memory (or the given statement handle
Kescription
Procedural styleC
void ma+db>stmt>free>result > resource stmt ?
,he ma+db>stmt>free>result./ (unction (rees the result memory associated Eith the statement
represented #y the stmt parameterA Ehich Eas allocated #y ma+db>stmt>store>result./;
Calores retornados
,his (unction doesnHt return any value;
Cer tambi%n
ma+db>stmt>store>result./
ma+db>stmt>init
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZinit 22 .nitializes a statement and returns an resource (or use Eith maFd#ZstmtZprepare
Kescription
Procedural style C
resource ma+db>stmt>init > resource lin" ?
Allocates and initializes a statement resource suita#le (or ma+db>stmt>prepare./;
Nota- Any su#se/uent calls to any maFd#Zstmt (unction Eill (ail until
ma+db>stmt>prepare./ Eas called;
Calores retornados
Returns an resource;
Cer tambi%n
ma+db>stmt>prepare./
ma+db>stmt>num>ro3s
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZnumZroEs 22 Return the num#er o( roEs in statements result set
Kescription
Procedural style C
miFed ma+db>stmt>num>ro3s > resource stmt ?
Returns the num#er o( roEs in the result set;
Meturn 5alues
An integer representing the num#er o( roEs in result set;
,ee also
ma+db>stmt>affected>ro3s./A ma+db>prepare./A ma+db>stmt>store>result./
E+ample
E'emplo !. Procedural style
<?php
/W ?pen a connection W/
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* 0ip, name S'?" hotel.city ?'LE' ZP name";
i# 3$stmt > maxdb%prepare3$linI, $Query99 :
/W execute Query W/
maxdb%stmt%execute3$stmt9;
/W store result W/
maxdb%stmt%store%result3$stmt9;
print#3".umber o# ro8s@ \d.Vn", maxdb%stmt%num%ro8s3$stmt99;
/W close statement W/
maxdb%stmt%close3$stmt9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
.umber o# ro8s@ F6.
ma+db>stmt>param>count
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZparamZcount 22 Returns the num#er o( parameter (or the given statement
Kescription
Procedural styleC
int ma+db>stmt>param>count > resource stmt ?
ma+db>stmt>param>count./ returns the num#er o( parameter mar"ers present in the prepared
statement;
Calores retornados
returns an integer representing the num#er o( parameters;
Cer tambi%n
ma+db>prepare./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
i# 3$stmt > maxdb%prepare3$linI, "&EOER* name S'?" hotel.city 7HE'E name>? ?' state>?"99 :
$marIer > maxdb%stmt%param%count3$stmt9;
print#3"&tatement has \d marIers.Vn", $marIer9;
/W close statement W/
maxdb%stmt%close3$stmt9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
&tatement has C marIers.
ma+db>stmt>prepare
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZprepare 22 Prepare a OL statement (or eFecution
Kescription
Procedure styleC
#ool ma+db>stmt>prepare > resource stmtA string /uery ?
ma+db>stmt>prepare./ prepares the OL /uery pointed to #y the null2terminated string /uery; ,he
statement resource has to #e allocated #y ma+db>stmt>init./; ,he /uery must consist o( a single
OL statement;
Nota- %ou should not add a terminating semicolon or QE to the statement;
,he parameter @uer? can include one or more parameter mar"ers in the OL statement #y
em#edding /uestion mar" >%? characters at the appropriate positions;
Nota- ,he mar"ers are legal only in certain places in OL statements; For eFampleA they
are alloEed in the $AL@+>? list o( an .N+R, statement >to speci(y column values (or
a roE?A or in a comparison Eith a column in a L&+R+ clause to speci(y a comparison
value;
&oEeverA they are not alloEed (or identi(iers >such as ta#le or column names?A in the
select list that names the columns to #e returned #y a +L+5, statement?A or to speci(y
#oth operands o( a #inary operator such as the : e/ual sign; ,he latter restriction is
necessary #ecause it Eould #e impossi#le to determine the parameter type; .n generalA
parameters are legal only in Data Manipulation Languange >DML? statementsA and not
in Data De(ination Language >DDL? statements;
,he parameter mar"ers must #e #ound to application varia#les using ma+db>stmt>bind>param./
andDor ma+db>stmt>bind>result./ #e(ore eFecuting the statement or (etching roEs;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
ma+db>stmt>init./A ma+db>stmt>e+ecute./A ma+db>stmt>fetch./A ma+db>stmt>bind>param./A
ma+db>stmt>bind>result./A ma+db>stmt>close./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$city > "ortland";
/W create a prepared statement W/
$stmt > maxdb%stmt%init3$linI9;
i# 3maxdb%stmt%prepare3$stmt, "&EOER* state S'?" hotel.city 7HE'E name>?"99 :
/W bind parameters #or marIers W/
maxdb%stmt%bind%param3$stmt, "s", $city9;
/W execute Query W/
maxdb%stmt%execute3$stmt9;
/W bind result =ariables W/
maxdb%stmt%bind%result3$stmt, $district9;
/W #etch =alue W/
maxdb%stmt%#etch3$stmt9;
print#3"\s is in district \sVn", $city, $district9;
/W close statement W/
maxdb%stmt%close3$stmt9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
ortland is in district ?'
ma+db>stmt>reset
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZreset 22 Resets a prepared statement
Kescription
Procedural styleC
#ool ma+db>stmt>reset > resource stmt ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ma+db>stmt>result>metadata
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZresultZmetadata 22 Returns result set metadata (rom a prepared statement
Kescription
Procedural styleC
miFed ma+db>stmt>result>metadata > resource stmt ?
.( a statement passed to ma+db>prepare./ is one that produces a result setA
ma+db>stmt>result>metadata./ returns the result resource that can #e used to process the meta
in(ormation such as total num#er o( (ields and individual (ield in(ormation;
Nota- ,his result set pointer can #e passed as an argument to any o( the (ield2#ased
(unctions that process result set metadataA such asC
ma+db>num>fields./
ma+db>fetch>field./
ma+db>fetch>field>direct./
ma+db>fetch>fields./
ma+db>field>count./
ma+db>field>seeB./
ma+db>field>tell./
ma+db>free>result./
,he result set structure should #e (reed Ehen you are done Eith itA Ehich you can do #y passing it to
ma+db>free>result./
Nota- ,he result set returned #y ma+db>stmt>result>metadata./ contains only
metadata; .t does not contain any roE results; ,he roEs are o#tained #y using the
statement handle Eith ma+db>fetch./;
Calores retornados
ma+db>stmt>result>metadata./ returns a result resource or FALSE i( an error occured;
,ee also-
ma+db>prepare./A ma+db>free>result./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
maxdb%Query3$linI, "R'E,*E *,ZOE temp.#riends 3id int, name =archar3C299"9;

maxdb%Query3$linI, "4.&E'* 4.*? temp.#riends (,O+E& 36,MHartmutM9"9;
maxdb%Query3$linI, "4.&E'* 4.*? temp.#riends (,O+E& 3C, M+l#M9"9;
$stmt > maxdb%prepare3$linI, "&EOER* id, name S'?" temp.#riends"9;
maxdb%stmt%execute3$stmt9;
/W Eet resultset #or metadata W/
$result > maxdb%stmt%result%metadata3$stmt9;
/W retrie=e #ield in#ormation #rom metadata result set W/
$#ield > maxdb%#etch%#ield3$result9;
print#3"Sieldname@ \sVn", $#ieldF>name9;
/W close resultset W/
maxdb%#ree%result3$result9;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
Sieldname@ 4L
ma+db>stmt>send>long>data
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZsendZlongZdata 22 end data in #loc"s
Kescription
Procedural styleC
#ool ma+db>stmt>send>long>data > resource stmtA int paramZnrA string data ?
AlloEs to send parameter data to the server in pieces >or chun"s?; ,his (unction can #e called
multiple times to send the parts o( a character or #inary data value (or a columnA Ehich must #e one
o( the ,+J, or BLOB datatypes;
param_nr indicates Ehich parameter to associate the data Eith; Parameters are num#ered #eginning
Eith 3; #ata is a string containing data to #e sent;
Nota- For e((iciency reasonsA this (unction should #e used a(ter calling ma+db>e+ecute
./; .n this caseA the data is not stored on the client side; ,he end o( the se/uence must
end Eith a call to ma+db>stmt>close>long>data./;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
ma+db>prepare./A ma+db>stmt>bind>param./
ma+db>stmt>s?lstate
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZs/lstate 22 Returns OL,A,+ error (rom previous statement operation
Kescription
string ma+db>stmt>s?lstate > resource stmt ?
Returns a string containing the OL,A,+ error code (or the most recently invo"ed prepared
statement (unction that can succeed or (ail; ,he error code consists o( (ive characters; <00000< means
no error; ,he values are speci(ied #y AN. OL and ODB5;
Nota- Note that not all MaFDB errors are yet mapped to OL,A,+Hs; ,he value
!B000 >general error? is used (or unmapped errors;
Meturn 5alues
Returns a string containing the OL,A,+ error code (or the last error; ,he error code consists o(
(ive characters; <00000< means no error;
,ee also
ma+db>stmt>errno./A ma+db>stmt>error./
E+ample
E'emplo !. Procedural style
<?php
/W ?pen a connection W/
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
maxdb%Query3$linI, "R'E,*E *,ZOE temp.mycity O4]E hotel.city"9;
maxdb%Query3$linI, "4.&E'* 4.*? temp.mycity &EOER* W S'?" hotel.city"9;
$Query > "&EOER* name, 0ip S'?" temp.mycity ?'LE' ZP name";
i# 3$stmt > maxdb%prepare3$linI, $Query99 :
/W drop table W/
maxdb%Query3$linI, "L'? *,ZOE temp.mycity"9;
/W execute Query W/
maxdb%stmt%execute3$stmt9;
print#3"Error@ \s.Vn", maxdb%stmt%sQlstate3$stmt99;
/W close statement W/
maxdb%stmt%close3$stmt9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
7arninE@ maxdb%stmt%execute39@ F1221 ?&3C<9 +nIno8n table name@"PR4*P )1C222/ <...>
Error@ 1C222.
ma+db>stmt>store>result
>no version in(ormationA might #e only in 5$?
maFd#ZstmtZstoreZresult 22 ,rans(ers a result set (rom a prepared statement
Kescription
Procedural styleC
#ool ma+db>stmt>store>result > resource stmt ?
ma+db>stmt>store>result./ has no (unctionally e((ect and should not #e used (or retrieving data
(rom MaFDB server;
Meturn 5alues
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,ee also
ma+db>prepare./A ma+db>stmt>result>metadata./A ma+db>fetch./
E+ample
E'emplo !. Procedural style
<?php
/W ?pen a connection W/
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* name, 0ip S'?" hotel.city ?'LE' ZP name";
i# 3$stmt > maxdb%prepare3$linI, $Query99 :
/W execute Query W/
maxdb%stmt%execute3$stmt9;
/W store result W/
maxdb%stmt%store%result3$stmt9;
print#3".umber o# ro8s@ \d.Vn", maxdb%stmt%num%ro8s3$stmt99;
/W #ree result W/
maxdb%stmt%#ree%result3$stmt9;
/W close statement W/
maxdb%stmt%close3$stmt9;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
.umber o# ro8s@ F6.
ma+db>store>result
>no version in(ormationA might #e only in 5$?
maFd#ZstoreZresult 22 ,rans(ers a result set (rom the last /uery
Kescription
Procedural styleC
resource ma+db>store>result > resource lin" ?
,his (unction has no (unctionally e((ect;
Meturn 5alues
Returns a result resource or FALSE i( an error occurred;
,ee also
ma+db>real>?uery./A ma+db>use>result./;
E+ample
ee ma+db>multi>?uery./;
ma+db>thread>id
>no version in(ormationA might #e only in 5$?
maFd#ZthreadZid 22 Returns the thread .D (or the current connection
Kescription
Procedural styleC
int ma+db>thread>id > resource lin" ?
,he ma+db>thread>id./ (unction returns the thread .D (or the current connection Ehich can then
#e "illed using the ma+db>Bill./ (unction; .( the connection is lost and you reconnect Eith
ma+db>ping./A the thread .D Eill #e other; ,here(ore you should get the thread .D only Ehen you
need it;
Nota- ,he thread .D is assigned on a connection2#y2connection #asis; &enceA i( the
connection is #ro"en and then re2esta#lished a neE thread .D Eill #e assigned;
Meturn 5alues
ma+db>thread>id./ returns the ,hread .D (or the current connection;
,ee also
ma+db>Bill./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
/W determine our thread id W/
$thread%id > maxdb%thread%id3$linI9;
/W ]ill connection W/
maxdb%Iill3$linI, $thread%id9;
/W *his should produce an error W/
i# 3!maxdb%Query3$linI, "R'E,*E *,ZOE mycity O4]E hotel.city"99 :
print#3"Error@ \sVn", maxdb%error3$linI99;
exit;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
7arninE@ maxdb%Query39@ F62JC6 &ession not connected <...>
Error@ &ession not connected
ma+db>thread>safe
>no version in(ormationA might #e only in 5$?
maFd#ZthreadZsa(e 22 Returns Ehether thread sa(ety is given or not
Kescription
Procedural styleC
#ool ma+db>thread>safe > void ?
ma+db>thread>safe./ indicates Ehether the client li#rary is compiled as thread2sa(e;
Meturn 5alues
TRUE i( the client li#rary is thread2sa(eA otherEise FALSE;
ma+db>use>result
>no version in(ormationA might #e only in 5$?
maFd#ZuseZresult 22 .nitiate a result set retrieval
Kescription
Procedural styleC
miFed ma+db>use>result > resource lin" ?
ma+db>use>result./ has no e((ect;
Meturn 5alues
Returns alEays FALSE;
,ee also
ma+db>real>?uery./A ma+db>store>result./;
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
$Query > "&EOER* W S'?" L+,O;";
$Query .> "&EOER* .ame S'?" Rity ?'LE' ZP 4L O4"4* C2, 5";
/W execute multi Query W/
i# 3maxdb%multi%Query3$linI, $Query99 :
do :
/W store #irst result set W/
i# 3$result > maxdb%use%result3$linI99 :
8hile 3$ro8 > maxdb%#etch%ro83$result99 :
print#3"\sVn", $ro8)2/9;
;
maxdb%#ree%result3$result9;
;
/W print di=ider W/
i# 3maxdb%more%results3$linI99 :
print#3"FFFFFFFFFFFFFFFFFVn"9;
;
; 8hile 3maxdb%next%result3$linI99;
;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
7arninE@ maxdb%multi%Query39@ F<22J ?&36K9 4n=alid Iey8ord or missinE delimiter <...>
ma+db>3arning>count
>no version in(ormationA might #e only in 5$?
maFd#ZEarningZcount 22 Returns the num#er o( Earnings (rom the last /uery (or the given lin"
Kescription
Procedural styleC
int ma+db>3arning>count > resource lin" ?
ma+db>3arning>count./ returns the num#er o( Earnings (rom the last /uery in the connection
represented #y the l6n> parameter;
Meturn 5alues
Num#er o( Earnings or zero i( there are no Earnings;
,ee also
ma+db>errno./A ma+db>error./A ma+db>s?lstate./
E+ample
E'emplo !. Procedural style
<?php
$linI > maxdb%connect3"localhost", ""?.,", "'EL"9;
/W checI connection W/
i# 3maxdb%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", maxdb%connect%error399;
exit39;
;
maxdb%Query3$linI, "R'E,*E *,ZOE temp.mycity O4]E hotel.city"9;
/W a remarIable lonE city name in 7ales W/
$Query > "4.&E'* 4.*? temp.mycity 30ip, name9 (,O+E&3M66666M,
MOlan#airp8llE8ynEyllEoEerych8yrndrob8llllantysilioEoEoEochM9";
maxdb%Query3$linI, $Query9;
print# 3".umber o# 8arninE@ \dVn", maxdb%8arninE%count3$linI99;
/W close connection W/
maxdb%close3$linI9;
?>
,he a#ove eFamples Eould produce the (olloEing outputC
7arninE@ maxdb%Query39@ FJ221 ?&3GC9 Ronstant must be compatible 8ith column type and lenEth <...>
.umber o# 8arninE@ 2
:IC. Multibyte ,tring ;unctions
Introducci"n
Lhile there are many languages in Ehich every necessary character can #e represented #y a one2to2
one mapping to a M2#it valueA there are also several languages Ehich re/uire so many characters (or
Eritten communication that cannot #e contained Eithin the range a mere #yte can code; Multi#yte
character encoding schemes Eere developed to eFpress that many >more than 04K? characters in the
regular #yteEise coding system;
Lhen you manipulate >trimA splitA spliceA etc;? strings encoded in a multi#yte encodingA you need to
use special (unctions since tEo or more consecutive #ytes may represent a single character in such
encoding schemes; OtherEiseA i( you apply a non2multi#yte2aEare string (unction to the stringA it
pro#a#ly (ails to detect the #eginning or ending o( the multi#yte character and ends up Eith a
corrupted gar#age string that most li"ely loses its original meaning;
m1str6nE provides these multi#yte speci(ic string (unctions that help you deal Eith multi#yte
encodings in P&PA Ehich is #asically supposed to #e used Eith single #yte encodings; .n addition to
thatA m1str6nE handles character encoding conversion #etEeen the possi#le encoding pairs;
m1str6nE is also designed to handle @nicode2#ased encodings such as @,F2M and @520 and many
single2#yte encodings (or convenience >listed #eloE?A Ehereas m1str6nE Eas originally developed
(or use in !apanese Ee# pages;
PHP Character Encoding Me?uirements
+ncodings o( the (olloEing types are sa(ely used Eith P&P;
A single#yte encodingA
Ehich has A5..2compati#le >.OK8K compati#le? mappings (or the characters in
range o( 00h to 79h;
A multi#yte encodingA
Ehich has A5..2compati#le mappings (or the characters in range o( 00h to 79h;
Ehich donHt use .O0300 escape se/uences;
Ehich donHt use a value (rom 00h to 79h in any o( the compounded #ytes that
represents a single character;
,hese are eFamples o( character encodings that are unli"ely to Eor" Eith P&P;
A4&, &A4&, 4&?FC2CCFA, Z4-F5
Although P&P scripts Eritten in any o( those encodings might not Eor"A especially in the case
Ehere encoded strings appear as identi(iers or literals in the scriptA you can almost avoid using these
encodings #y setting up the m1str6nEHs transparent encoding (ilter (unction (or incoming &,,P
/ueries;
Nota- .tHs highly discouraged to use !.A B.G4A 5P97KA 5P989 and GB1M373 (or the
internal encoding unless you are (amiliar Eith the parserA the scanner and the character
encoding;
Nota- .( you have some data#ase connected Eith P&PA it is recommended that you use
the same character encoding (or #oth data#ase and the 6nternal enco#6nE (or ease o( use
and #etter per(ormance;
.( you are using PostgreOLA the character encoding used in the data#ase and the one
used in the P&P may di((er as it supports automatic character set conversion #etEeen
the #ac"end and the (rontend;
Instalaci"n
m1str6nE is a non2de(ault eFtension; ,his means it is not ena#led #y de(ault; %ou must eFplicitly
ena#le the module Eith the con96Eure option; ee the .nstall section (or details;
,he (olloEing con(igure options are related to the m1str6nE module;
==ena1le=m1str6nE:4,N-C +na#le m1str6nE (unctions; ,his option is re/uired to use
m1str6nE (unctions;
As o( P&P 8;7;3A m1str6nE eFtension provides enhanced support (or impli(ied 5hineseA
,raditional 5hineseA SoreanA and Russian in addition to !apanese; ,o ena#le that (eatureA
you Eill have to supply either one o( the (olloEing options to the 4,N- parameterX ==
ena1le=m1str6nE:cn (or impli(ied 5hinese supportA ==ena1le=m1str6nE:t7 (or ,raditional
5hinese supportA ==ena1le=m1str6nE:>r (or Sorean supportA ==ena1le=m1str6nE:ru (or
Russian supportA and ==ena1le=m1str6nE:Ua (or !apanese support;
Also ==ena1le=m1str6nE:all is convenient (or you to ena#le all the supported languages listed
a#ove;
Nota- !apanese language support is also ena#led #y ==ena1le=m1str6nE Eithout
any options (or the sa"e o( #ac"Eards compati#ility;
==ena1le=m1str=enc=trans C +na#le &,,P input character encoding conversion using
m1str6nE conversion engine; .( this (eature is ena#ledA &,,P input character encoding may
#e converted to m1str6nE.6nternal_enco#6nE automatically;
Nota- As o( P&P 8;7;3A the option ==ena1le=m1str=enc=trans Eas eliminated and
replaced Eith the runtime setting m1str6nE.enco#6nE_translat6on; &,,P input
character encoding conversion is ena#led Ehen this is set to On >the de(ault is
O99?;
==ena1le=m1reEe8C +na#le regular eFpression (unctions Eith multi#yte character support;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. mbstring configuration options
Name Kefault Changeable
m#string;language
=neutral
=
P&PZ.N.Z%,+M l
P&PZ.N.ZP+RD.R
m#string;detectZorder N@LL P&PZ.N.ZALL
m#string;httpZinput =pass= P&PZ.N.ZALL
m#string;httpZoutput =pass= P&PZ.N.ZALL
Name Kefault Changeable
m#string;internalZencoding N@LL P&PZ.N.ZALL
m#string;scriptZencoding N@LL P&PZ.N.ZALL
m#string;su#stituteZcharacter N@LL P&PZ.N.ZALL
m#string;(uncZoverload =3=
P&PZ.N.Z%,+M l
P&PZ.N.ZP+RD.R
m#string;encodingZtranslatio
n
=3=
P&PZ.N.Z%,+M l
P&PZ.N.ZP+RD.R
For the de(inition o( the P&PZ.N.ZV constantsA please re(er to ini>set./;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
m1str6nE.lanEuaEe string
,he de(ault national language setting >NL? used in m#string; Note that this option
automagically de(ines m1str6nE.6nternal_enco#6nE and m1str6nE.6nternal_enco#6nE should #e
placed a(ter m1str6nE.lanEuaEe in php.ini
m1str6nE.enco#6nE_translat6on boolean
+na#les the transparent character encoding (ilter (or the incoming &,,P /ueriesA Ehich
per(orms detection and conversion o( the input encoding to the internal character encoding;
m1str6nE.6nternal_enco#6nE string
De(ines the de(ault internal character encoding;
m1str6nE.http_6nput string
De(ines the de(ault &,,P input character encoding;
m1str6nE.http_output string
De(ines the de(ault &,,P output character encoding;
m1str6nE.#etect_or#er string
De(ines de(ault character code detection order; ee also mb>detect>order./;
m1str6nE.su1st6tute_character string
De(ines character to su#stitute (or invalid character encoding;
m1str6nE.9unc_oerloa# string
Overloads a set o( single #yte (unctions #y the m#string counterparts; ee Function
overloading (or more in(ormation;
According to the &,ML 8;31 speci(icationA Le# #roEsers are alloEed to encode a (orm #eing
su#mitted Eith a character encoding di((erent (rom the one used (or the page; ee mb>http>input./
to detect character encoding used #y #roEsers;
Although popular #roEsers are capa#le o( giving a reasona#ly accurate guess to the character
encoding o( a given &,ML documentA it Eould #e #etter to set the charset parameter in the
Content=T?pe &,,P header to the appropriate value #y header./ or de(aultZcharset ini setting;
E'emplo !. php.ini setting e+amples
; &et de#ault lanEuaEe
mbstrinE.lanEuaEe > .eutral; &et de#ault lanEuaEe to .eutral3+*SFJ9 3de#ault9
mbstrinE.lanEuaEe > EnElish; &et de#ault lanEuaEe to EnElish
mbstrinE.lanEuaEe > Aapanese; &et de#ault lanEuaEe to Aapanese
;; &et de#ault internal encodinE
;; .ote@ "aIe sure to use character encodinE 8orIs 8ith H
mbstrinE.internal%encodinE > +*SFJ ; &et internal encodinE to +*SFJ
;; H** input encodinE translation is enabled.
mbstrinE.encodinE%translation > ?n
;; &et de#ault H** input character encodinE
;; .ote@ &cript cannot chanEe http%input settinE.
mbstrinE.http%input > pass ; .o con=ersion.
mbstrinE.http%input > auto ; &et H** input to auto
; "auto" is expanded to ",&R44,A4&,+*SFJ,E+RFA,&A4&"
mbstrinE.http%input > &A4& ; &et H**C input to &A4&
mbstrinE.http%input > +*SFJ,&A4&,E+RFA ; &peci#y order
;; &et de#ault H** output character encodinE
mbstrinE.http%output > pass ; .o con=ersion
mbstrinE.http%output > +*SFJ ; &et H** output encodinE to +*SFJ
;; &et de#ault character encodinE detection order
mbstrinE.detect%order > auto ; &et detect order to auto
mbstrinE.detect%order > ,&R44,A4&,+*SFJ,&A4&,E+RFA ; &peci#y order
;; &et de#ault substitute character
mbstrinE.substitute%character > 6C<2H ; &peci#y +nicode =alue
mbstrinE.substitute%character > none ; Lo not print character
mbstrinE.substitute%character > lonE ; OonE Example@ +[<222,A4&[HEHE
E'emplo *. php.ini setting for *+C,-P users
;; Lisable ?utput Zu##erinE
output%bu##erinE > ?##
;; &et H** header charset
de#ault%charset > E+RFA
;; &et de#ault lanEuaEe to Aapanese
mbstrinE.lanEuaEe > Aapanese
;; H** input encodinE translation is enabled.
mbstrinE.encodinE%translation > ?n
;; &et H** input encodinE con=ersion to auto
mbstrinE.http%input > auto
;; Ron=ert H** output to E+RFA
mbstrinE.http%output > E+RFA
;; &et internal encodinE to E+RFA
mbstrinE.internal%encodinE > E+RFA
;; Lo not print in=alid characters
mbstrinE.substitute%character > none
E'emplo 7. php.ini setting for S-"S users
;; Enable ?utput Zu##erinE
output%bu##erinE > ?n
;; &et mb%output%handler to enable output con=ersion
output%handler > mb%output%handler
;; &et H** header charset
de#ault%charset > &hi#t%A4&
;; &et de#ault lanEuaEe to Aapanese
mbstrinE.lanEuaEe > Aapanese
;; &et http input encodinE con=ersion to auto
mbstrinE.http%input > auto
;; Ron=ert to &A4&
mbstrinE.http%output > &A4&
;; &et internal encodinE to E+RFA
mbstrinE.internal%encodinE > E+RFA
;; Lo not print in=alid characters
mbstrinE.substitute%character > none
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
M(_O$ERLOAD_MAIL >integer?
M(_O$ERLOAD_STRIN# >integer?
M(_O$ERLOAD_RE#E% >integer?
HTTP Input and Jutput
&,,P inputDoutput character encoding conversion may convert #inary data also; @sers are supposed
to control character encoding conversion i( #inary data is used (or &,,P inputDoutput;
Nota- .n P&P 8;7;0 or earlier versionsA there Eas a limitation in this (unctionality that
m1str6nE does not per(orm character encoding conversion in PO, data i( the enct?pe
attri#ute in the 9orm element is set to mult6part/9orm=#ata; o you have to convert the
incoming data #y yoursel( in this case i( necessary;
Beginning Eith P&P 8;7;7A i( enct?pe (or &,ML (orm is set to mult6part/9orm=#ata and
m1str6nE.enco#6nE_translat6on is set to On in php.ini the PO,Hed varia#les and the
names o( uploaded (iles Eill #e converted to the internal character encoding as Eell;
&oEeverA the conversion isnHt applied to the /uery "eys;
&,,P .nput
,here is no Eay to control &,,P input character conversion (rom P&P script; ,o disa#le
&,,P input character conversionA it has to #e done in php.ini;
E'emplo 8. Kisable HTTP input con5ersion in php.ini
;; Lisable H** 4nput con=ersion
mbstrinE.http%input > pass
;; Lisable H** 4nput con=ersion 3H 1.<.2 or hiEher9
mbstrinE.encodinE%translation > ?##
Lhen using P&P as an Apache moduleA it is possi#le to override those settings in each
$irtual &ost directive in httpd.con# or per directory Eith .htaccess; Re(er to the
5on(iguration section and Apache Manual (or details;
&,,P Output
,here are several Eays to ena#le output character encoding conversion; One is using
php.iniA another is using ob>start./ Eith mb>output>handler./ as o1_start call#ac"
(unction;
Nota- P&P72i1Mn users should note that m1str6nEHs output conversion di((ers
(rom P&P72i1Mn; 5haracter encoding is converted using output #u((er;
E'emplo 9. php.ini setting e+ample
;; Enable output character encodinE con=ersion #or all H paEes
;; Enable ?utput Zu##erinE
output%bu##erinE > ?n
;; &et mb%output%handler to enable output con=ersion
output%handler > mb%output%handler
E'emplo <. ,cript e+ample
<?php
// Enable output character encodinE con=ersion only #or this paEe
// &et H** output character encodinE to &A4&
mb%http%output3M&A4&M9;
// &tart bu##erinE and speci#y "mb%output%handler" as
// callbacI #unction
ob%start3Mmb%output%handlerM9;
?>
,upported Character Encodings
5urrently the (olloEing character encodings are supported #y the m1str6nE module; Any o( those
5haracter encodings can #e speci(ied in the enco#6nE parameter o( m1str6nE (unctions;
,he (olloEing character encoding is supported in this P&P eFtensionC
@528
@528B+
@528L+
@520
@520B+
@520L+
@,F270
@,F270B+
@,F270L+
@,F21K
@,F21KB+
@,F21KL+
@,F2:
@,F:2.MAP
@,F2M
A5..
+@52!P
!.
euc!P2Ein
!.2Ein
.O203002!P
!.
.O2MM4921
.O2MM4920
.O2MM4927
.O2MM4928
.O2MM4924
.O2MM492K
.O2MM492:
.O2MM492M
.O2MM4929
.O2MM49213
.O2MM49217
.O2MM49218
.O2MM49214
#yte0#e
#yte0le
#yte8#e
#yte8le
BA+K8
&,ML2+N,.,.+
:#it
M#it
+@525N
5P97K
&I
+@52,L
5P943
B.G24
+@52SR
@&5 >5P989?
.O203002SR
LindoEs21041 >5P1041?
LindoEs21040 >5P1040?
5PMKK >.BMMKK?
SO.M2R
php.ini entryA Ehich accepts encoding nameA accepts =auto= and =pass= also; m1str6nE (unctionsA
Ehich accepts encoding nameA and accepts =auto=;
.( =pass= is setA no character encoding conversion is per(ormed;
.( =auto= is setA it is eFpanded to the list o( encodings de(ined per the NL; For instanceA i( the NL
is set to bapaneseA the value is assumed to #e =,SC00Cb0SCUT3=PCEUC=b+CSb0S=;
ee also mb>detect>order./
;unction J5erloading ;eature
%ou might o(ten (ind it di((icult to get an eFisting P&P application Eor" in a given multi#yte
environment; ,hatHs mostly #ecause lots o( P&P applications out there are Eritten Eith the standard
string (unctions such as substr./A Ehich are "noEn to not properly handle multi#yte2encoded
strings;
m#string supports H(unction overloadingH (eature Ehich ena#les you to add multi#yte aEareness to
such an application Eithout code modi(ication #y overloading multi#yte counterparts on the
standard string (unctions; For eFampleA mb>substr./ is called instead o( substr./ i( (unction
overloading is ena#led; ,his (eature ma"es it easy to port applications that only support single2#yte
encodings to a multi#yte environment in many cases;
,o use the (unction overloadingA set m1str6nE.9unc_oerloa# in php.ini to a positive value that
represents a com#ination o( #itmas"s speci(ying the categories o( (unctions to #e overloaded; .t
should #e set to 1 to overload the mail./ (unction; 0 (or string (unctionsA 8 (or regular eFpression
(unctions; For eFampleA i( is set (or :A mailA strings and regular eFpression (unctions should #e
overloaded; ,he list o( overloaded (unctions are shoEn #eloE;
Tabla *. ;unctions to be o5erloaded
5alue of
mbstring.func>o5erload
original
function
o5erloaded
function
1 mail./ mb>send>mail./
0 strlen./ mb>strlen./
0 strpos./ mb>strpos./
0 strrpos./ mb>strrpos./
0 substr./ mb>substr./
0 strtolo3er./ mb>strtolo3er./
0 strtoupper./ mb>strtoupper./
0 substr>count./ mb>substr>count./
8 ereg./ mb>ereg./
8 eregi./ mb>eregi./
8 ereg>replace./ mb>ereg>replace./
8 eregi>replace./ mb>eregi>replace./
8 split./ mb>split./
Nota- .t is not recommended to use the (unction overloading option in the per2directory
conteFtA #ecause itHs not con(irmed yet to #e sta#le enough in a production environment
and may lead to unde(ined #ehaviour;
1asics of [apanese multi(byte encodings
.t is o(ten said /uite hard to (igure out hoE !apanese teFts are handled in the computer; ,his is not
only #ecause !apanese characters can only #e represented #y multi#yte encodingsA #ut #ecause
di((erent encoding standards are adopted (or di((erent purposes D plat(orms; MoreoverA not a (eE
character set standards are used thereA Ehich are slightly di((erent (rom one another; ,hose (acts
have o(ten led developers to inevita#le mess2up;
,o create a Eor"ing Ee# application that Eould #e put in the !apanese environmentA it is important
to use the proper character encoding and character set (or the tas" in hand;
torage (or a character can #e up to siF #ytes
Most o( multi#yte characters o(ten appear tEice as Eide as a single2#yte character on
display; ,hose characters are called =zen2"a"u= in !apanese Ehich means =(ull Eidth=A and
the other >narroEer? characters are called =han2"a"u= 2 means hal( Eidth; &oEever the
graphical properties o( the characters depend on the glyphs o( the type (aces used to display
them or print them out;
ome character encodings use shi(t>escape? se/uences de(ined in .O0300 to sEitch the
code map o( the speci(ic code area >00h to 79h?;
.O203002!P should #e used in M,PDNN,PA and headers and entities should #e reencoded
as per RF5 re/uirements; Although those are not re/uisitesA itHs still a good idea #ecause
several popular user agents cannot recognize any other encoding methods;
Le#pages created (or mo#ile phone services such as i2modeA $oda(one liveaA or +IEe# are
supposed to use hi(tZ!.;
Meferences
Multi#yte character encoding schemes and the related issues are very complicated; ,here should #e
too (eE space to cover in su((icient details; Please re(er to the (olloEing @RLs and other resources
(or (urther readings;
@nicode materials
httpCDDEEE;unicode;orgD
!apaneseDSoreanD5hinese character in(ormation
httpCDDeFamples;oreilly;comDc'"vin(oDdocDc'";in(
,ummaries of supported encodings
,ummaries of supported encodings
Name in the IANA character set registry- .O213K8K2@528
)nderlying character set- .O 13K8K
Kescription- ,he @niversal 5haracter et Eith 712#it code spaceA standardized as @528 #y
.OD.+5 13K8K; .t is "ept synchronized Eith the latest version o( the @nicode code map;
Additional note- .( this name is used in the encoding conversion (acilityA the converter attempts to
identi(y #y the preceding BOM >#yte order mar"?in Ehich endian the su#se/uent #ytes are
represented;
Name in the IANA character set registry- .O213K8K2@528
)nderlying character set- @528
Kescription- ee a#ove;
Additional note- .n contrast to UCS=;A strings are alEays assumed to #e in #ig endian (orm;
Name in the IANA character set registry- .O213K8K2@528
)nderlying character set- @528
Kescription- ee a#ove;
Additional note- .n contrast to UCS=;A strings are alEays assumed to #e in little endian (orm;
Name in the IANA character set registry- .O213K8K2@520
)nderlying character set- @520
Kescription- ,he @niversal 5haracter et Eith 1K2#it code spaceA standardized as @520 #y
.OD.+5 13K8K; .t is "ept synchronized Eith the latest version o( the unicode code map;
Additional note- .( this name is used in the encoding conversion (acilityA the converter attempts to
identi(y #y the preceding BOM >#yte order mar"?in Ehich endian the su#se/uent #ytes are
represented;
Name in the IANA character set registry- .O213K8K2@520
)nderlying character set- @520
Kescription- ee a#ove;
Additional note- .n contrast to UCS=2A strings are alEays assumed to #e in #ig endian (orm;
Name in the IANA character set registry- .O213K8K2@520
)nderlying character set- @520
Kescription- ee a#ove;
Additional note- .n contrast to UCS=2A strings are alEays assumed to #e in little endian (orm;
Name in the IANA character set registry- @,F270
)nderlying character set- @nicode
Kescription- @nicode ,rans(ormation Format o( 702#it unit EidthA Ehose encoding space re(ers to
the @nicodeHs codeset standard; ,his encoding scheme EasnHt identical to @528 #ecause the code
space o( @nicode Eere limited to a 012#it value;
Additional note- .( this name is used in the encoding conversion (acilityA the converter attempts to
identi(y #y the preceding BOM >#yte order mar"?in Ehich endian the su#se/uent #ytes are
represented;
Name in the IANA character set registry- @,F270B+
)nderlying character set- @nicode
Kescription- ee a#ove
Additional note- .n contrast to UT3=R2A strings are alEays assumed to #e in #ig endian (orm;
Name in the IANA character set registry- @,F270L+
)nderlying character set- @nicode
Kescription- ee a#ove
Additional note- .n contrast to UT3=R2A strings are alEays assumed to #e in little endian (orm;
Name in the IANA character set registry- @,F21K
)nderlying character set- @nicode
Kescription- @nicode ,rans(ormation Format o( 1K2#it unit Eidth; .tHs Eorth a note that @,F21K is
no longer the same speci(ication as @520 #ecause the surrogate mechanism has #een introduced
since @nicode 0;3 and @,F21K noE re(ers to a 012#it code space;
Additional note- .( this name is used in the encoding conversion (acilityA the converter attempts to
identi(y #y the preceding BOM >#yte order mar"?in Ehich endian the su#se/uent #ytes are
represented;
Name in the IANA character set registry- @,F21KB+
)nderlying character set- @nicode
Kescription- ee a#ove;
Additional note- .n contrast to UT3=1XA strings are alEays assumed to #e in #ig endian (orm;
Name in the IANA character set registry- @,F21KB+
)nderlying character set- @nicode
Kescription- ee a#ove;
Additional note- .n contrast to UT3=1XA strings are alEays assumed to #e in #ig endian (orm;
Name in the IANA character set registry- @,F2M
)nderlying character set- @nicode D @5
Kescription- @nicode ,rans(ormation Format o( M2#it unit Eidth;
Additional note- none
Name in the IANA character set registry- @,F2:
)nderlying character set- @nicode
Kescription- A mail2sa(e trans(ormation (ormat o( @nicodeA speci(ied in RF50140;
Additional note- none
Name in the IANA character set registry- >none?
)nderlying character set- @nicode
Kescription- A variant o( @,F2: Ehich is specialized (or use in the .MAP protocol;
Additional note- none
Name in the IANA character set registry- @2A5.. >pre(erred M.M+ name? D iso2ir2K D
AN.ZJ7;8219MK D .OZK8K;irvC1991 D A5.. D .OK8K2@ D us D .BM7K: D 5P7K: D csA5..
)nderlying character set- A5.. D .O K8K
Kescription- American tandard 5ode (or .n(ormation .nterchange is a commonly2used :2#it
encoding; Also standardized as an international standardA .O K8K;
Additional note- >none?
Name in the IANA character set registry- +@52!P >pre(erred M.M+ name? D
+FtendedZ@N.JZ5odeZPac"edZFormatZ(orZ!apanese D cs+@5P"dFmt!apanese
)nderlying character set- 5ompound o( @2A5.. D !. J3031C199: >han"a"u "ana part? D !.
J303MC1993 D !. J3010C1993
Kescription- As you see the name is derived (rom an a##reviation o( +Ftended @N.J 5ode Pac"ed
Format (or !apaneseA this encoding is mostly used on @N.J or ali"e plat(orms; ,he original
encoding schemeA +Ftended @N.J 5odeA is designed on the #asis o( .O 0300;
Additional note- ,he character set re(erred to #y +@52!P is di((erent to .BM970 D 5P970A Ehich
are used #y OD0cdet and Microso(tcdet LindoEscdet; For in(ormation interchange Eith
those plat(ormsA use +@5!P2L.N instead;
Name in the IANA character set registry- hi(tZ!. >pre(erred M.M+ name? D MZSan'i D
cshi(tZ!.
)nderlying character set- 5ompound o( !. J3031C199: D !. J303MC199:
Kescription- hi(tZ!. Eas developed in early M3HsA at the time personal !apanese Eord processors
Eere #rought into the mar"etA in order to maintain compati#lities Eith the legacy encoding scheme
!. J 3031C19:K; According to the .ANA de(inition the codeset o( hi(tZ!. is slightly di((erent to
.BM970 D 5P970; &oEeverA the names =!.= D =hi(tZ!.= are o(ten Erongly used to re(er to these
codesets;
Additional note- For the 5P970 codemapA use !.2L.N instead;
Name in the IANA character set registry- >none?
)nderlying character set- 5ompound o( !. J3031C199: D !. J303MC199: D .BM eFtensions D
N+5 eFtensions
Kescription- Lhile this =encoding= uses the same encoding scheme as +@52!PA the underlying
character set is di((erent; ,hat isA some code points map to di((erent characters than +@52!P;
Additional note- none
Name in the IANA character set registry- LindoEs271! D csLindoEs71!
)nderlying character set- 5ompound o( !. J3031C199: D !. J303MC199: D .BM eFtensions D
N+5 eFtensions
Kescription- Lhile this =encoding= uses the same encoding scheme as hi(tZ!.A the underlying
character set is di((erent; ,hat means some code points map to di((erent characters than hi(tZ!.;
Additional note- >none?
Name in the IANA character set registry- .O203002!P >pre(erred M.M+ name? D cs.O0300!P
)nderlying character set- @2A5.. D !. J3031C19:K D !. J303MC19:M D !. J303MC19M7
Kescription- RF518KM
Additional note- >none?
Name in the IANA character set registry- !.
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- .O2MM4921
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- .O2MM4920
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- .O2MM4927
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- .O2MM4928
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- .O2MM4924
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- .O2MM492K
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- .O2MM492:
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- .O2MM492M
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- .O2MM4929
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- .O2MM49213
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- .O2MM49217
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- .O2MM49218
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- .O2MM49214
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- #yte0#e
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- #yte0le
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- #yte8#e
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- #yte8le
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- BA+K8
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- &,ML2+N,.,.+
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- :#it
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- M#it
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- +@525N
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- 5P97K
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- &I
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- +@52,L
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- 5P943
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- B.G24
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- +@52SR
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- @&5 >5P989?
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- .O203002SR
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- LindoEs21041 >5P1041?
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- LindoEs21040 >5P1040?
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- 5PMKK >.BMMKK?
)nderlying character set-
Kescription-
Additional note-
Name in the IANA character set registry- SO.M2R
)nderlying character set-
Kescription-
Additional note-
Tabla de contenidos
m#ZconvertZcase 22 Per(orm case (olding on a string
m#ZconvertZencoding 22 5onvert character encoding
m#ZconvertZ"ana 22 5onvert ="ana= one (rom another >=zen2"a"u=A =han2"a"u= and more?
m#ZconvertZvaria#les 22 5onvert character code in varia#le>s?
m#ZdecodeZmimeheader 22 Decode string in M.M+ header (ield
m#ZdecodeZnumericentity 22 Decode &,ML numeric string re(erence to character
m#ZdetectZencoding 22 Detect character encoding
m#ZdetectZorder 22 etDGet character encoding detection order
m#ZencodeZmimeheader 22 +ncode string (or M.M+ header
m#ZencodeZnumericentity 22 +ncode character to &,ML numeric string re(erence
m#ZeregZmatch 22 Regular eFpression match (or multi#yte string
m#ZeregZreplace 22 Replace regular eFpression Eith multi#yte support
m#ZeregZsearchZgetpos 22 Returns start point (or neFt regular eFpression match
m#ZeregZsearchZgetregs 22 Retrieve the result (rom the last multi#yte regular eFpression match
m#ZeregZsearchZinit 22 etup string and regular eFpression (or multi#yte regular eFpression match
m#ZeregZsearchZpos 22 Return position and length o( matched part o( multi#yte regular eFpression
(or prede(ined multi#yte string
m#ZeregZsearchZregs 22 Returns the matched part o( multi#yte regular eFpression
m#ZeregZsearchZsetpos 22 et start point o( neFt regular eFpression match
m#ZeregZsearch 22 Multi#yte regular eFpression match (or prede(ined multi#yte string
m#Zereg 22 Regular eFpression match Eith multi#yte support
m#ZeregiZreplace 22 Replace regular eFpression Eith multi#yte support ignoring case
m#Zeregi 22 Regular eFpression match ignoring case Eith multi#yte support
m#ZgetZin(o 22 Get internal settings o( m#string
m#ZhttpZinput 22 Detect &,,P input character encoding
m#ZhttpZoutput 22 etDGet &,,P output character encoding
m#ZinternalZencoding 22 etDGet internal character encoding
m#Zlanguage 22 etDGet current language
m#ZlistZencodings 22 Returns an array o( all supported encodings
m#ZoutputZhandler 22 5all#ac" (unction converts character encoding in output #u((er
m#ZparseZstr 22 Parse G+,DPO,D5OOS.+ data and set glo#al varia#le
m#Zpre(erredZmimeZname 22 Get M.M+ charset string
m#ZregeFZencoding 22 Returns current encoding (or multi#yte regeF as string
m#ZregeFZsetZoptions 22 etDGet the de(ault options (or m#regeF (unctions
m#ZsendZmail 22 end encoded mail
m#Zsplit 22 plit multi#yte string using regular eFpression
m#Zstrcut 22 Get part o( string
m#ZstrimEidth 22 Get truncated string Eith speci(ied Eidth
m#Zstrlen 22 Get string length
m#Zstrpos 22 Find position o( (irst occurrence o( string in a string
m#Zstrrpos 22 Find position o( last occurrence o( a string in a string
m#ZstrtoloEer 22 Ma"e a string loEercase
m#Zstrtoupper 22 Ma"e a string uppercase
m#ZstrEidth 22 Return Eidth o( string
m#Zsu#stituteZcharacter 22 etDGet su#stitution character
m#Zsu#strZcount 22 5ount the num#er o( su#string occurrences
m#Zsu#str 22 Get part o( string
mb>con5ert>case
>P&P 8 _^ 8;7;3A P&P 4?
m#ZconvertZcase 22 Per(orm case (olding on a string
Kescription
string mb>con5ert>case > string strA int mode PA string encodingQ ?
mb>con5ert>case./ returns case (olded version o( str6nE converted in the Eay speci(ied #y mo#e;
mo#e can #e one o( MBZ5A+Z@PP+RA MBZ5A+ZLOL+R or MBZ5A+Z,.,L+;
enco#6nE speci(ies the encoding o( strX i( omittedA the internal character encoding value Eill #e used;
,he return value is str Eith the appropriate case (olding applied;
By contrast to the standard case (olding (unctions such as strtolo3er./ and strtoupper./A case
(olding is per(ormed on the #asis o( the @nicode character properties; ,hus the #ehaviour o( this
(unction is not a((ected #y locale settings and it can convert any characters that have Halpha#eticH
propertyA such as A2umlaut >cpvwy?;
For more in(ormation a#out the @nicode propertiesA please see
httpCDDEEE;unicode;orgDunicodeDreportsDtr01D;
E'emplo !. mb>con5ert>case./ e+ample
<?php
$str > "mary had a Oittle lamb and she lo=ed it so";
$str > mb%con=ert%case3$str, "Z%R,&E%+E', "+*SFJ"9;
echo $str; // rints ",'P H,L , O4**OE O,"Z ,.L &HE O?(EL 4* &?
$str > mb%con=ert%case3$str, "Z%R,&E%*4*OE, "+*SFJ"9;
echo $str; // rints "ary Had , Oittle Oamb ,nd &he Oo=ed 4t &o
?>
ee also mb>strtolo3er./A mb>strtoupper./A strtolo3er./A strtoupper./A ucfirst./A y uc3ords./
mb>con5ert>encoding
>P&P 8 _^ 8;3;KA P&P 4?
m#ZconvertZencoding 22 5onvert character encoding
Kescription
string mb>con5ert>encoding > string strA string toZencoding PA miFed (romZencodingQ ?
mb>con5ert>encoding./ converts character encoding o( string str (rom 9rom_enco#6nE to
to_enco#6nE;
str C tring to #e converted;
9rom_enco#6nE is speci(ied #y character code name #e(ore conversion; it can #e array or string 2
comma separated enumerated list; .( it is not speci(iedA the internal encoding Eill #e used;
E'emplo !. mb>con5ert>encoding./ e+ample
<?php
/W Ron=ert internal character encodinE to &A4& W/
$str > mb%con=ert%encodinE3$str, "&A4&"9;
/W Ron=ert E+RFA to +*SFH W/
$str > mb%con=ert%encodinE3$str, "+*SFH", "E+RFA"9;
/W ,uto detect encodinE #rom A4&, eucjpF8in, sjisF8in, then con=ert str to +R&FCOE W/
$str > mb%con=ert%encodinE3$str, "+R&FCOE", "A4&, eucjpF8in, sjisF8in"9;
/W "auto" is expanded to ",&R44,A4&,+*SFJ,E+RFA,&A4&" W/
$str > mb%con=ert%encodinE3$str, "E+RFA", "auto"9;
?>
ee also mb>detect>order./;
mb>con5ert>Bana
>P&P 8 _^ 8;3;KA P&P 4?
m#ZconvertZ"ana 22 5onvert ="ana= one (rom another >=zen2"a"u=A =han2"a"u= and more?
Kescription
string mb>con5ert>Bana > string str PA string option PA string encodingQQ ?
mb>con5ert>Bana./ per(orms =han2"a"u= 2 =zen2"a"u= conversion (or string str; .t returns
converted string; ,his (unction is only use(ul (or !apanese;
opt6on is conversion option; De(ault value is *2(*;
enco#6nE is character encoding; .( it is omittedA internal character encoding is used;
peci(y Eith com#ination o( (olloEing options; De(ault value is 2(;
Tabla !. Applicable Con5ersion Jptions
Jptio
n
Meaning
r 5onvert =zen2"a"u= alpha#ets to =han2"a"u=
R 5onvert =han2"a"u= alpha#ets to =zen2"a"u=
n 5onvert =zen2"a"u= num#ers to =han2"a"u=
N 5onvert =han2"a"u= num#ers to =zen2"a"u=
a 5onvert =zen2"a"u= alpha#ets and num#ers to =han2"a"u=
,
5onvert =han2"a"u= alpha#ets and num#ers to =zen2"a"u= >5haracters included in =a=A
=A= options are @R3301 2 @R33:+ eFcluding @R3300A @R330:A @R3345A @R33:+?
s 5onvert =zen2"a"u= space to =han2"a"u= >@R7333 2_ @R3303?
S 5onvert =han2"a"u= space to =zen2"a"u= >@R3303 2_ @R7333?
> 5onvert =zen2"a"u "ata2"ana= to =han2"a"u "ata2"ana=
2 5onvert =han2"a"u "ata2"ana= to =zen2"a"u "ata2"ana=
h 5onvert =zen2"a"u hira2gana= to =han2"a"u "ata2"ana=
Jptio
n
Meaning
! 5onvert =han2"a"u "ata2"ana= to =zen2"a"u hira2gana=
c 5onvert =zen2"a"u "ata2"ana= to =zen2"a"u hira2gana=
C 5onvert =zen2"a"u hira2gana= to =zen2"a"u "ata2"ana=
( 5ollapse voiced sound notation and convert them into a character; @se Eith =S=A=&=
E'emplo !. mb>con5ert>Bana./ e+ample
<?php
/W Ron=ert all "Iana" to "0enFIaIu" "IataFIana" W/
$str > mb%con=ert%Iana3$str, "](R"9;
/W Ron=ert "hanFIaIu" "IataFIana" to "0enFIaIu" "IataFIana"
and "0enFIaIu" alphaFnumeric to "hanFIaIu" W/
$str > mb%con=ert%Iana3$str, "](a"9;
?>
mb>con5ert>5ariables
>P&P 8 _^ 8;3;KA P&P 4?
m#ZconvertZvaria#les 22 5onvert character code in varia#le>s?
Kescription
string mb>con5ert>5ariables > string toZencodingA miFed (romZencodingA miFed ivars PA miFed
i;;;Q ?
mb>con5ert>5ariables./ convert character encoding o( varia#les ars in encoding 9rom_enco#6nE
to encoding to_enco#6nE; .t returns character encoding #e(ore conversion (or successA FALSE (or
(ailure;
mb>con5ert>5ariables./ 'oin strings in Array or O#'ect to detect encodingA since encoding
detection tends to (ail (or short strings; ,here(oreA it is impossi#le to miF encoding in single array or
o#'ect;
.t 9rom_enco#6nE is speci(ied #y array or comma separated stringA it tries to detect encoding (rom
9rom=co#6nE; Lhen enco#6nE is omittedA #etect_or#er is used;
ars LRr# an# larEerM is re(erence to varia#le to #e converted; tringA Array and O#'ect are accepted;
mb>con5ert>5ariables./ assumes all parameters have the same encoding;
E'emplo !. mb>con5ert>5ariables./ e+ample
<?php
/W Ron=ert =ariables $post6, $postC to internal encodinE W/
$interenc > mb%internal%encodinE39;
$inputenc > mb%con=ert%=ariables3$interenc, ",&R44,+*SFJ,&A4&F8in", $post6, $postC9;
?>
mb>decode>mimeheader
>P&P 8 _^ 8;3;KA P&P 4?
m#ZdecodeZmimeheader 22 Decode string in M.M+ header (ield
Kescription
string mb>decode>mimeheader > string str ?
mb>decode>mimeheader./ decodes encoded2Eord string str in M.M+ header;
.t returns decoded string in internal character encoding;
ee also mb>encode>mimeheader./;
mb>decode>numericentity
>P&P 8 _^ 8;3;KA P&P 4?
m#ZdecodeZnumericentity 22 Decode &,ML numeric string re(erence to character
Kescription
string mb>decode>numericentity > string strA array convmap PA string encodingQ ?
5onvert numeric string re(erence o( string str in speci(ied #loc" to character; .t returns converted
string;
conmap is array to speci(ies code area to convert;
enco#6nE is character encoding; .( it is omittedA internal character encoding is used;
E'emplo !. con%&ap e+ample
$con=map > array 3
int start%code6, int end%code6, int o##set6, int masI6,
int start%codeC, int end%codeC, int o##setC, int masIC,
........
int start%code., int end%code., int o##set., int masI. 9;
// &peci#y +nicode =alue #or start%code. and end%code.
// ,dd o##set. to =alue and taIe bitF8ise M,.LM 8ith masI.,
// then con=ert =alue to numeric strinE re#erence.
ee also mb>encode>numericentity./;
mb>detect>encoding
>P&P 8 _^ 8;3;KA P&P 4?
m#ZdetectZencoding 22 Detect character encoding
Kescription
string mb>detect>encoding > string str PA miFed encodingZlist PA #ool strictQQ ?
mb>detect>encoding./ detects character encoding in string str; .t returns detected character
encoding;
enco#6nE_l6st is list o( character encoding; +ncoding order may #e speci(ied #y array or comma
separated list string;
.( enco#6nE_l6st is omittedA detectZorder is used;
E'emplo !. mb>detect>encoding./ e+ample
<?php
/W Letect character encodinE 8ith current detect%order W/
echo mb%detect%encodinE3$str9;
/W "auto" is expanded to ",&R44,A4&,+*SFJ,E+RFA,&A4&" W/
echo mb%detect%encodinE3$str, "auto"9;
/W &peci#y encodinE%list character encodinE by comma separated list W/
echo mb%detect%encodinE3$str, "A4&, eucjpF8in, sjisF8in"9;
/W +se array to speci#y encodinE%list W/
$ary)/ > ",&R44";
$ary)/ > "A4&";
$ary)/ > "E+RFA";
echo mb%detect%encodinE3$str, $ary9;
?>
ee also mb>detect>order./;
mb>detect>order
>P&P 8 _^ 8;3;KA P&P 4?
m#ZdetectZorder 22 etDGet character encoding detection order
Kescription
array mb>detect>order > PmiFed encodingZlistQ ?
mb>detect>order./ sets automatic character encoding detection order to enco#6nE_l6st; .t returns
TRUE (or successA FALSE (or (ailure;
enco#6nE_l6st is array or comma separated list o( character encoding; >=auto= is eFpanded to =A5..A
!.A @,F2MA +@52!PA !.=?
.( enco#6nE_l6st is omittedA it returns current character encoding detection order as array;
,his setting a((ects mb>detect>encoding./ and mb>send>mail./;
Nota- m1str6nE currently implements (olloEing encoding detection (ilters; .( there is an
invalid #yte se/uence (or (olloEing encodingA encoding detection Eill (ail;
Nota- UT3=PA UT3=7A ,SC00A EUC=b+ASb0SA eucb+=76nA Sb0S=76nA b0SA 0SO=2022=b+
For 0SO=PPSO=/A m1str6nE alEays detects as 0SO=PPSO=/;
For UT3=1XA UT3=R2A UCS2 and UCS;A encoding detection Eill (ail alEays;
E'emplo !. )seless detect order e+ample
; ,l8ays detect as 4&?FJJ5KF6
detect%order > 4&?FJJ5KF6, +*SFJ
; ,l8ays detect as +*SFJ, since ,&R44/+*SFH =alues are
; =alid #or +*SFJ
detect%order > +*SFJ, ,&R44, +*SFH
E'emplo *. mb>detect>order./ e+amples
<?php
/W &et detection order by enumerated list W/
mb%detect%order3"eucjpF8in,sjisF8in,+*SFJ"9;
/W &et detection order by array W/
$ary)/ > ",&R44";
$ary)/ > "A4&";
$ary)/ > "E+RFA";
mb%detect%order3$ary9;
/W Lisplay current detection order W/
echo implode3", ", mb%detect%order399;
?>
ee also mb>internal>encoding./A mb>http>input./A mb>http>output./ and mb>send>mail./;
mb>encode>mimeheader
>P&P 8 _^ 8;3;KA P&P 4?
m#ZencodeZmimeheader 22 +ncode string (or M.M+ header
Kescription
string mb>encode>mimeheader > string str PA string charset PA string trans(erZencoding PA string
line(eedQQQ ?
mb>encode>mimeheader./ encodes a given string str #y the M.M+ header encoding scheme;
Returns a converted version o( the string represented in A5..;
charset speci(ies the name o( the character set in Ehich str is represented in; ,he de(ault value is
determined #y the current NL setting >m1str6nE.lanEuaEe?;
trans9er_enco#6nE speci(ies the scheme o( M.M+ encoding; .t should #e either *A* >BaseK8? or *5*
>Ouoted2Printa#le?; Falls #ac" to *A* i( not given;
l6ne9ee# speci(ies the +OL >end2o(2line? mar"er Eith Ehich mb>encode>mime>header./ per(orms
line2(olding >a RF5 termA the act o( #rea"ing a line longer than a certain length into multiple lines;
,he length is currently hard2coded to :8 characters?; Falls #ac" to *QrQn* >5RLF? i( not given;
E'emplo !. mb>encode>mimeheader./ e+ample
<?php
$name > ""; // Ianji
$mbox > "Iru";
$doma > "Etinn.mon";
$addr > mb%encode%mimeheader3$name, "+*SFH", "N"9 . " <" . $mbox . "^" . $doma . ">";
echo $addr;
?>
Nota- ,his (unction isnHt designed to #rea" lines at higher2level conteFtual #rea" points
>Eord #oundariesA etc;?; ,his #ehaviour may clutter up the original string Eith
uneFpected spaces;
ee also mb>decode>mimeheader./;
mb>encode>numericentity
>P&P 8 _^ 8;3;KA P&P 4?
m#ZencodeZnumericentity 22 +ncode character to &,ML numeric string re(erence
Kescription
string mb>encode>numericentity > string strA array convmap PA string encodingQ ?
mb>encode>numericentity./ converts speci(ied character codes in string str (rom &,ML numeric
character re(erence to character code; .t returns converted string;
conmap is array speci(ies code area to convert;
enco#6nE is character encoding;
E'emplo !. con%&ap e+ample
$con=map > array 3
int start%code6, int end%code6, int o##set6, int masI6,
int start%codeC, int end%codeC, int o##setC, int masIC,
........
int start%code., int end%code., int o##set., int masI. 9;
// &peci#y +nicode =alue #or start%code. and end%code.
// ,dd o##set. to =alue and taIe bitF8ise M,.LM 8ith masI., then
// it con=erts =alue to numeric strinE re#erence.
E'emplo *. mb>encode>numericentity./ e+ample
<?php
/W Ron=ert Oe#t side o# 4&?FJJ5KF6 to H*"O numeric character re#erence W/
$con=map > array32xJ2, 2x##, 2, 2x##9;
$str > mb%encode%numericentity3$str, $con=map, "4&?FJJ5KF6"9;
/W Ron=ert user de#ined &A4&F8in code in blocI K5F621 to numeric
strinE re#erence W/
$con=map > array3
2xe222, 2xe2<e, 2x6212, 2x####,
2xe2<#, 2xe2bb, 2x6216, 2x####,
2xe2bc, 2xe2#a, 2x62J1, 2x####,
2xe2#b, 2xe6HH, 2x62J5, 2x####,
2xe6HJ, 2xe6bG, 2x62cJ, 2x####,
2xe6bH, 2xeC<<, 2x62cK, 2x####,
2xeC<1, 2xeCHC, 2x662c, 2x####,
2xeCH<, 2xeCe#, 2x662d, 2x####,
2xeC#2, 2xe<Ce, 2x6652, 2x####,
2xe<C#, 2xe<ab, 2x6656, 2x#### 9;
$str > mb%encode%numericentity3$str, $con=map, "sjisF8in"9;
?>
ee also mb>decode>numericentity./;
mb>ereg>match
>P&P 8 _^ 8;0;3?
m#ZeregZmatch 22 Regular eFpression match (or multi#yte string
Kescription
#ool mb>ereg>match > string patternA string string PA string optionQ ?
mb>ereg>match./ returns TRUE i( str6nE matches regular eFpression patternA FALSE i( not;
,he internal encoding or the character encoding speci(ied in mb>rege+>encoding./ Eill #e used as
character encoding;
ee alsoC mb>rege+>encoding./A mb>ereg./;
mb>ereg>replace
>P&P 8 _^ 8;0;3?
m#ZeregZreplace 22 Replace regular eFpression Eith multi#yte support
Kescription
string mb>ereg>replace > string patternA string replacementA string string PA array optionQ ?
mb>ereg>replace./ scans str6nE (or matches to patternA then replaces the matched teFt Eith
replacement and returns the result string or FALSE on error; Multi#yte character can #e used in
pattern;
Matching condition can #e set #y opt6on parameter; .( 6 is speci(ied (or this parameterA the case Eill
#e ignored; .( 8 is speci(iedA Ehite space Eill #e ignored; .( m is speci(iedA match Eill #e eFecuted in
multiline mode and line #rea" Eill #e included in H;H; .( p is speci(iedA match Eill #e eFecuted in
PO.J modeA line #rea" Eill #e considered as normal character; .( e is speci(iedA replacement string
Eill #e evaluated as P&P eFpression;
,he internal encoding or the character encoding speci(ied in mb>rege+>encoding./ Eill #e used as
character encoding;
ee alsoC mb>rege+>encoding./A mb>eregi>replace./;
mb>ereg>search>getpos
>P&P 8 _^ 8;0;3?
m#ZeregZsearchZgetpos 22 Returns start point (or neFt regular eFpression match
Kescription
array mb>ereg>search>getpos > void ?
mb>ereg>search>getpos./ returns the point to start regular eFpression match (or mb>ereg>search
./A mb>ereg>search>pos./A mb>ereg>search>regs./; ,he position is represented #y #ytes (rom the
head o( string;
,he internal encoding or the character encoding speci(ied in mb>rege+>encoding./ Eill #e used as
character encoding;
ee alsoC mb>rege+>encoding./A mb>ereg>search>setpos./;
mb>ereg>search>getregs
>P&P 8 _^ 8;0;3?
m#ZeregZsearchZgetregs 22 Retrieve the result (rom the last multi#yte regular eFpression match
Kescription
array mb>ereg>search>getregs > void ?
mb>ereg>search>getregs./ returns an array including the su#2string o( matched part #y last
mb>ereg>search./A mb>ereg>search>pos./A mb>ereg>search>regs./; .( there are some machesA
the (irst element Eill have the matched su#2stringA the second element Eill have the (irst part
grouped Eith #rac"etsA the third element Eill have the second part grouped Eith #rac"etsA and so on;
.t returns FALSE on errorX
,he internal encoding or the character encoding speci(ied in mb>rege+>encoding./ Eill #e used as
character encoding;
ee alsoC mb>rege+>encoding./A mb>ereg>search>init./;
mb>ereg>search>init
>P&P 8 _^ 8;0;3?
m#ZeregZsearchZinit 22 etup string and regular eFpression (or multi#yte regular eFpression match
Kescription
array mb>ereg>search>init > string string PA string pattern PA string optionQQ ?
mb>ereg>search>init./ sets str6nE and pattern (or multi#yte regular eFpression; ,hese values are
used (or mb>ereg>search./A mb>ereg>search>pos./A mb>ereg>search>regs./; .t returns TRUE (or
successA FALSE (or error;
,he internal encoding or the character encoding speci(ied in mb>rege+>encoding./ Eill #e used as
character encoding;
ee alsoC mb>rege+>encoding./A mb>ereg>search>regs./;
mb>ereg>search>pos
>P&P 8 _^ 8;0;3?
m#ZeregZsearchZpos 22 Return position and length o( matched part o( multi#yte regular eFpression
(or prede(ined multi#yte string
Kescription
array mb>ereg>search>pos > Pstring pattern PA string optionQQ ?
mb>ereg>search>pos./ returns an array including position o( matched part (or multi#yte regular
eFpression; ,he (irst element o( the array Eill #e the #eginning o( matched partA the second element
Eill #e length >#ytes? o( matched part; .t returns FALSE on error;
,he string (or match is speci(ied #y mb>ereg>search>init./; .t it is not speci(iedA the previous one
Eill #e used;
,he internal encoding or the character encoding speci(ied in mb>rege+>encoding./ Eill #e used as
character encoding;
ee alsoC mb>rege+>encoding./A mb>ereg>search>init./;
mb>ereg>search>regs
>P&P 8 _^ 8;0;3?
m#ZeregZsearchZregs 22 Returns the matched part o( multi#yte regular eFpression
Kescription
array mb>ereg>search>regs > Pstring pattern PA string optionQQ ?
mb>ereg>search>regs./ eFecutes the multi#yte regular eFpression matchA and i( there are some
matched partA it returns an array including su#string o( matched part as (irst elementA the (irst
grouped part Eith #rac"ets as second elementA the second grouped part as third elementA and so on;
.t returns FALSE on error;
,he internal encoding or the character encoding speci(ied in mb>rege+>encoding./ Eill #e used as
character encoding;
ee alsoC mb>rege+>encoding./A mb>ereg>search>init./;
mb>ereg>search>setpos
>P&P 8 _^ 8;0;3?
m#ZeregZsearchZsetpos 22 et start point o( neFt regular eFpression match
Kescription
array mb>ereg>search>setpos > int position ?
mb>ereg>search>setpos./ sets the starting point o( match (or mb>ereg>search./;
,he internal encoding or the character encoding speci(ied in mb>rege+>encoding./ Eill #e used as
character encoding;
ee alsoC mb>rege+>encoding./A mb>ereg>search>init./;
mb>ereg>search
>P&P 8 _^ 8;0;3?
m#ZeregZsearch 22 Multi#yte regular eFpression match (or prede(ined multi#yte string
Kescription
#ool mb>ereg>search > Pstring pattern PA string optionQQ ?
mb>ereg>search./ returns TRUE i( the multi#yte string matches Eith the regular eFpressionA
FALSE (or otherEise; ,he string (or matching is set #y mb>ereg>search>init./; .( pattern is not
speci(iedA the previous one is used;
,he internal encoding or the character encoding speci(ied in mb>rege+>encoding./ Eill #e used as
character encoding;
ee alsoC mb>rege+>encoding./A mb>ereg>search>init./;
mb>ereg
>P&P 8 _^ 8;0;3?
m#Zereg 22 Regular eFpression match Eith multi#yte support
Kescription
int mb>ereg > string patternA string string PA array regsQ ?
mb>ereg./ eFecutes the regular eFpression match Eith multi#yte supportA and returns 1 i( matches
are (ound; .( the optional third parameter Eas speci(iedA the (unction returns the #yte length o(
matched partA and the array reEs Eill contain the su#string o( matched string; ,he (unctions returns
1 i( it matches Eith the empty string; .( no matches (ound or error happendA FALSE Eill #e returned;
,he internal encoding or the character encoding speci(ied in mb>rege+>encoding./ Eill #e used as
character encoding;
ee alsoC mb>rege+>encoding./A mb>eregi./
mb>eregi>replace
>P&P 8 _^ 8;0;3?
m#ZeregiZreplace 22 Replace regular eFpression Eith multi#yte support ignoring case
Kescription
string mb>eregi>replace > string patternA string replaceA string string ?
mb>ereg>replace./ scans str6nE (or matches to patternA then replaces the matched teFt Eith
replacement and returns the result string or FALSE on error; Multi#yte character can #e used in
pattern; ,he case Eill #e ignored;
,he internal encoding or the character encoding speci(ied in mb>rege+>encoding./ Eill #e used as
character encoding;
ee alsoC mb>rege+>encoding./A mb>ereg>replace./;
mb>eregi
>P&P 8 _^ 8;0;3?
m#Zeregi 22 Regular eFpression match ignoring case Eith multi#yte support
Kescription
int mb>eregi > string patternA string string PA array regsQ ?
mb>eregi./ eFecutes the regular eFpression match Eith multi#yte supportA and returns 1 i( matches
are (ound; ,his (unction ignore case; .( the optional third parameter Eas speci(iedA the (unction
returns the #yte length o( matched partA and the array reEs Eill contain the su#string o( matched
string; ,he (unctions returns 1 i( it matches Eith the empty string; .( no matches (ound or error
happendA FALSE Eill #e returned;
,he internal encoding or the character encoding speci(ied in mb>rege+>encoding./ Eill #e used as
character encoding;
ee alsoC mb>rege+>encoding./A mb>ereg./;
mb>get>info
>P&P 8 _^ 8;0;3A P&P 4?
m#ZgetZin(o 22 Get internal settings o( m#string
Kescription
string mb>get>info > Pstring typeQ ?
mb>get>info./ returns internal setting parameter o( m#string;
.( t?pe isnHt speci(ied or is speci(ied to =all=A an array having the elements =internalZencoding=A
=httpZoutput=A =httpZinput=A =(uncZoverload= Eill #e returned;
.( t?pe is speci(ied (or =httpZoutput=A =httpZinput=A =internalZencoding=A =(uncZoverload=A the
speci(ied setting parameter Eill #e returned;
ee also mb>internal>encoding./A mb>http>output./;
mb>http>input
>P&P 8 _^ 8;3;KA P&P 4?
m#ZhttpZinput 22 Detect &,,P input character encoding
Kescription
string mb>http>input > Pstring typeQ ?
mb>http>input./ returns result o( &,,P input character encoding detection;
t?peC .nput string speci(ies input type; =G= (or G+,A =P= (or PO,A =5= (or 5OOS.+; .( type is
omittedA it returns last input type processed;
Return $alueC 5haracter encoding name; .( mb>http>input./ does not process speci(ied &,,P
inputA it returns FALSE;
ee also mb>internal>encoding./A mb>http>output./A mb>detect>order./;
mb>http>output
>P&P 8 _^ 8;3;KA P&P 4?
m#ZhttpZoutput 22 etDGet &,,P output character encoding
Kescription
string mb>http>output > Pstring encodingQ ?
.( enco#6nE is setA mb>http>output./ sets &,,P output character encoding to enco#6nE; Output
a(ter this (unction is converted to enco#6nE; mb>http>output./ returns TRUE (or success and
FALSE (or (ailure;
.( enco#6nE is omittedA mb>http>output./ returns current &,,P output character encoding;
ee also mb>internal>encoding./A mb>http>input./A mb>detect>order./;
mb>internal>encoding
>P&P 8 _^ 8;3;KA P&P 4?
m#ZinternalZencoding 22 etDGet internal character encoding
Kescription
miFed mb>internal>encoding > Pstring encodingQ ?
mb>internal>encoding./ sets internal character encoding to enco#6nE .( parameter is omittedA it
returns current internal encoding;
enco#6nE is used (or &,,P input character encoding conversionA &,,P output character encoding
conversion and de(ault character encoding (or string (unctions de(ined #y m#string module;
enco#6nEC 5haracter encoding name
Return $alueC .( enco#6nE is setAmb>internal>encoding./ returns TRUE (or successA otherEise
returns FALSE; .( enco#6nE is omittedA it returns current character encoding name;
E'emplo !. mb>internal>encoding./ e+ample
<?php
/W &et internal character encodinE to +*SFJ W/
mb%internal%encodinE3"+*SFJ"9;
/W Lisplay current internal character encodinE W/
echo mb%internal%encodinE39;
?>
ee also mb>http>input./A mb>http>output./ and mb>detect>order./;
mb>language
>P&P 8 _^ 8;3;KA P&P 4?
m#Zlanguage 22 etDGet current language
Kescription
string mb>language > Pstring languageQ ?
mb>language./ sets language; .( lanEuaEe is omittedA it returns current language as string;
lanEuaEe setting is used (or encoding e2mail messages; $alid languages are =!apanese=A
='a=A=+nglish=A=en= and =uni= >@,F2M?; mb>send>mail./ uses this setting to encode e2mail;
Language and its setting is .O203002!PDBaseK8 (or !apaneseA @,F2MDBaseK8 (or uniA .O2MM492
1D/uoted printa#le (or +nglish;
Return $alueC .( lanEuaEe is set and lanEuaEe is validA it returns TRUE; OtherEiseA it returns
FALSE; Lhen lanEuaEe is omittedA it returns language name as string; .( no language is set
previouslyA it returns FALSE;
ee also mb>send>mail./;
mb>list>encodings
>P&P 4?
m#ZlistZencodings 22 Returns an array o( all supported encodings
Kescription
array mb>list>encodings > void ?
mb>list>encodings./ returns an array Eith all supported encodings;
E'emplo !. mb>list>encodings./ e+ample
<?php
print%r3mb%list%encodinEs399;
?>
,he a#ove eFample Eill outputC
,rray
3
)2/ >> pass
)6/ >> auto
)C/ >> 8char
)</ >> byteCbe
)1/ >> byteCle
)5/ >> byte1be
)G/ >> byte1le
)H/ >> Z,&EG1
)J/ >> ++E.R?LE
)K/ >> H*"OFE.*4*4E&
)62/ >> NuotedFrintable
)66/ >> Hbit
)6C/ >> Jbit
)6</ >> +R&F1
)61/ >> +R&F1ZE
)65/ >> +R&F1OE
)6G/ >> +R&FC
)6H/ >> +R&FCZE
)6J/ >> +R&FCOE
)6K/ >> +*SF<C
)C2/ >> +*SF<CZE
)C6/ >> +*SF<COE
)CC/ >> +*SF6G
)C</ >> +*SF6GZE
)C1/ >> +*SF6GOE
)C5/ >> +*SFJ
)CG/ >> +*SFH
)CH/ >> +*SHF4",
)CJ/ >> ,&R44
)CK/ >> E+RFA
)<2/ >> &A4&
)<6/ >> eucAF8in
)<C/ >> &A4&F8in
)<</ >> A4&
)<1/ >> 4&?FC2CCFA
)<5/ >> 7indo8sF6C5C
)<G/ >> 4&?FJJ5KF6
)<H/ >> 4&?FJJ5KFC
)<J/ >> 4&?FJJ5KF<
)<K/ >> 4&?FJJ5KF1
)12/ >> 4&?FJJ5KF5
)16/ >> 4&?FJJ5KFG
)1C/ >> 4&?FJJ5KFH
)1</ >> 4&?FJJ5KFJ
)11/ >> 4&?FJJ5KFK
)15/ >> 4&?FJJ5KF62
)1G/ >> 4&?FJJ5KF6<
)1H/ >> 4&?FJJ5KF61
)1J/ >> 4&?FJJ5KF65
)1K/ >> E+RFR.
)52/ >> RK<G
)56/ >> HY
)5C/ >> E+RF*7
)5</ >> Z4-F5
)51/ >> E+RF]'
)55/ >> +HR
)5G/ >> 4&?FC2CCF]'
)5H/ >> 7indo8sF6C56
)5J/ >> RJGG
)5K/ >> ]?4JF'
9
mb>output>handler
>P&P 8 _^ 8;3;KA P&P 4?
m#ZoutputZhandler 22 5all#ac" (unction converts character encoding in output #u((er
Kescription
string mb>output>handler > string contentsA int status ?
mb>output>handler./ is ob>start./ call#ac" (unction; mb>output>handler./ converts characters
in output #u((er (rom internal character encoding to &,,P output character encoding;
8;1;3 or later versionA this handler adds charset &,,P header Ehen (olloEing conditions are metC
Does not set Content=T?pe #y header>?
De(ault M.M+ type #egins Eith te8t/
http_output setting is other than pass
contents C Output #u((er contents
status C Output #u((er status
Return $alueC tring converted
E'emplo !. mb>output>handler./ e+ample
<?php
mb%http%output3"+*SFJ"9;
ob%start3"mb%output%handler"9;
?>
Nota- .( you Eant to output some #inary data such as image (rom P&P script Eith P&P
8;7;3 or laterA 5ontent2,ypeC header must #e send using header./ #e(ore any #inary data
Eas send to client >e;g; header>=5ontent2,ypeC imageDpng=??; .( 5ontent2,ypeC header
Eas sendA output character encoding conversion Eill not #e per(ormed;
Note that i( H5ontent2,ypeC teFtDVH Eas send using header./A the sending data is regarded
as teFtA encoding conversion Eill #e per(ormed using character encoding settings;
.( you Eant to output some #inary data such as image (rom P&P script Eith P&P 8;0;F
or earlierA you must set output encoding to =pass= using mb>http>output./;
ee also ob>start./;
mb>parse>str
>P&P 8 _^ 8;3;KA P&P 4?
m#ZparseZstr 22 Parse G+,DPO,D5OOS.+ data and set glo#al varia#le
Kescription
#ool mb>parse>str > string encodedZstring PA array iresultQ ?
mb>parse>str./ parses G+,DPO,D5OOS.+ data and sets glo#al varia#les; ince P&P does not
provide raE PO,D5OOS.+ dataA it can only used (or G+, data (or noE; .t preses @RL encoded
dataA detects encodingA converts coding to internal encoding and set values to result array or glo#al
varia#les;
enco#e#_str6nEC @RL encoded data;
resultC Array contains decoded and character encoding converted values;
Return $alueC .t returns TRUE (or success or FALSE (or (ailure;
ee also mb>detect>order./A mb>internal>encoding./;
mb>preferred>mime>name
>P&P 8 _^ 8;3;KA P&P 4?
m#Zpre(erredZmimeZname 22 Get M.M+ charset string
Kescription
string mb>preferred>mime>name > string encoding ?
mb>preferred>mime>name./ returns M.M+ charset string (or character encoding enco#6nE; .t
returns charset string;
E'emplo !. mb>preferred>mime>string./ e+ample
<?php
$outputenc > "sjisF8in";
mb%http%output3$outputenc9;
ob%start3"mb%output%handler"9;
header3"RontentF*ype@ text/html; charset>" . mb%pre#erred%mime%name3$outputenc99;
?>
mb>rege+>encoding
>P&P 8 _^ 8;0;3?
m#ZregeFZencoding 22 Returns current encoding (or multi#yte regeF as string
Kescription
string mb>rege+>encoding > Pstring encodingQ ?
mb>rege+>encoding./ returns the character encoding used #y multi#yte regeF (unctions;
.( the optional parameter enco#6nE is speci(iedA it is set to the character encoding (or multi#yte
regeF; ,he de(ault value is the internal character encoding;
ee alsoC mb>internal>encoding./A mb>ereg./
mb>rege+>set>options
>P&P 8 _^ 8;7;3?
m#ZregeFZsetZoptions 22 etDGet the de(ault options (or m#regeF (unctions
Kescription
string mb>rege+>set>options > Pstring optionsQ ?
mb>rege+>set>options./ sets the de(ault options descri#ed #y opt6ons (or multi#yte regeF
(unctions;
Returns the previous options; .( opt6ons is omittedA it returns the string that descri#es the current
options;
ee also mb>split./A mb>ereg./ and mb>eregi./
mb>send>mail
>P&P 8 _^ 8;3;KA P&P 4?
m#ZsendZmail 22 end encoded mail
Kescription
#ool mb>send>mail > string toA string su#'ectA string message PA string additionalZheaders PA string
additionalZparameterQQ ?
mb>send>mail./ sends email; &eaders and message are converted and encoded according to
mb>language./ setting; mb>send>mail./ is Erapper (unction o( mail./; ee mail./ (or details;
to is mail addresses send to; Multiple recipients can #e speci(ied #y putting a comma #etEeen each
address in to; ,his parameter is not automatically encoded;
su1Uect is su#'ect o( mail;
messaEe is mail message;
a##6t6onal_hea#ers is inserted at the end o( the header; ,his is typically used to add eFtra headers;
Multiple eFtra headers are separated Eith a neEline >=hn=?;
a##6t6onal_parameter is a M,A command line parameter; .t is use(ul Ehen setting the correct
Return2Path header Ehen using sendmail;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also mail./A mb>encode>mimeheader./A and mb>language./;
mb>split
>P&P 8 _^ 8;0;3?
m#Zsplit 22 plit multi#yte string using regular eFpression
Kescription
array mb>split > string patternA string string PA int limitQ ?
mb>split./ split multi#yte str6nE using regular eFpression pattern and returns the result as an array;
.( optional parameter l6m6t is speci(iedA it Eill #e split in l6m6t elements as maFimum;
,he internal encoding or the character encoding speci(ied in mb>rege+>encoding./ Eill #e used as
character encoding;
ee alsoC mb>rege+>encoding./A mb>ereg./;
mb>strcut
>P&P 8 _^ 8;3;KA P&P 4?
m#Zstrcut 22 Get part o( string
Kescription
string mb>strcut > string strA int start PA int length PA string encodingQQ ?
mb>strcut./ returns the portion o( str speci(ied #y the start and lenEth parameters;
mb>strcut./ per(orms Walent operation as mb>substr./ Eith di((erent method; .( start position is
multi2#yte characterHs second #yte or largerA it starts (rom (irst #yte o( multi2#yte character;
.t su#tracts string (rom str that is shorter than lenEth AND character that is not part o( multi2#yte
string or not #eing middle o( shi(t se/uence;
enco#6nE is character encoding; .( it is not setA internal character encoding is used;
ee also mb>substr./A mb>internal>encoding./;
mb>strim3idth
>P&P 8 _^ 8;3;KA P&P 4?
m#ZstrimEidth 22 Get truncated string Eith speci(ied Eidth
Kescription
string mb>strim3idth > string strA int startA int Eidth PA string trimmar"er PA string encodingQQ ?
mb>strim3idth./ truncates string str to speci(ied 76#th; .t returns truncated string;
.( tr6mmar>er is setA tr6mmar>er is appended to return value;
start is start position o((set; Num#er o( characters (rom the #eginning o( string; >First character is 3?
tr6mmar>er is string that is added to the end o( string Ehen string is truncated;
enco#6nE is character encoding; .( it is omittedA internal encoding is used;
E'emplo !. mb>strim3idth./ e+ample
<?php
$str > mb%strim8idth3$str, 2, 12, "..>"9;
?>
ee also mb>str3idth./ and mb>internal>encoding./;
mb>strlen
>P&P 8 _^ 8;3;KA P&P 4?
m#Zstrlen 22 Get string length
Kescription
string mb>strlen > string str PA string encodingQ ?
mb>strlen./ returns num#er o( characters in string str having character encoding enco#6nE; A multi2
#yte character is counted as 1;
enco#6nE is character encoding (or str; .( enco#6nE is omittedA internal character encoding is used;
ee also mb>internal>encoding./A strlen./;
mb>strpos
>P&P 8 _^ 8;3;KA P&P 4?
m#Zstrpos 22 Find position o( (irst occurrence o( string in a string
Kescription
int mb>strpos > string haystac"A string needle PA int o((set PA string encodingQQ ?
mb>strpos./ returns the numeric position o( the (irst occurrence o( nee#le in the ha?stac> string; .(
nee#le is not (oundA it returns FALSE;
mb>strpos./ per(orms multi2#yte sa(e strpos./ operation #ased on num#er o( characters; nee#le
position is counted (rom the #eginning o( the ha?stac>; First characterHs position is 3; econd
character position is 1A and so on;
.( enco#6nE is omittedA internal character encoding is used; mb>strrpos./ accepts str6nE (or nee#le
Ehere strrpos./ accepts only character;
o99set is search o((set; .( it is not speci(iedA 3 is used;
enco#6nE is character encoding name; .( it is omittedA internal character encoding is used;
ee also mb>strpos./A mb>internal>encoding./A strpos./
mb>strrpos
>P&P 8 _^ 8;3;KA P&P 4?
m#Zstrrpos 22 Find position o( last occurrence o( a string in a string
Kescription
int mb>strrpos > string haystac"A string needle PA string encodingQ ?
mb>strrpos./ returns the numeric position o( the last occurrence o( nee#le in the ha?stac> string; .(
nee#le is not (oundA it returns FALSE;
mb>strrpos./ per(orms multi2#yte sa(e strrpos./ operation #ased on num#er o( characters; nee#le
position is counted (rom the #eginning o( ha?stac>; First characterHs position is 3; econd character
position is 1;
.( enco#6nE is omittedA internal encoding is assumed; mb>strrpos./ accepts str6nE (or nee#le Ehere
strrpos./ accepts only character;
enco#6nE is character encoding; .( it is not speci(iedA internal character encoding is used;
ee also mb>strpos./A mb>internal>encoding./A strrpos./;
mb>strtolo3er
>P&P 8 _^ 8;7;3A P&P 4?
m#ZstrtoloEer 22 Ma"e a string loEercase
Kescription
string mb>strtolo3er > string str PA string encodingQ ?
mb>strtolo3er./ returns str Eith all alpha#etic characters converted to loEercase;
enco#6nE speci(ies the encoding o( strX i( omittedA the internal character encoding value Eill #e used;
For more in(ormation a#out the @nicode propertiesA please see
httpCDDEEE;unicode;orgDunicodeDreportsDtr01D;
By contrast to strtolo3er./A Halpha#eticH is determined #y the @nicode character properties; ,hus the
#ehaviour o( this (unction is not a((ected #y locale settings and it can convert any characters that
have Halpha#eticH propertyA such as A2umlaut >cpvwy?;
E'emplo !. mb>strtolo3er./ e+ample
<?php
$str > ""ary Had , Oittle Oamb and &he O?(EL 4t &o";
$str > mb%strtolo8er3$str9;
echo $str; // rints mary had a little lamb and she lo=ed it so
?>
ee also strtolo3er./A mb>strtoupper./ and mb>con5ert>case./;
mb>strtoupper
>P&P 8 _^ 8;7;3A P&P 4?
m#Zstrtoupper 22 Ma"e a string uppercase
Kescription
string mb>strtoupper > string str PA string encodingQ ?
mb>strtoupper./ returns str Eith all alpha#etic characters converted to uppercase;
enco#6nE speci(ies the encoding o( strX i( omittedA the internal character encoding value Eill #e used;
By contrast to strtoupper./A Halpha#eticH is determined #y the @nicode character properties; ,hus the
#ehaviour o( this (unction is not a((ected #y locale settings and it can convert any characters that
have Halpha#eticH propertyA such as a2umlaut >cpeu?;
For more in(ormation a#out the @nicode propertiesA please see
httpCDDEEE;unicode;orgDunicodeDreportsDtr01D;
E'emplo !. mb>strtoupper./ e+ample
<?php
$str > ""ary Had , Oittle Oamb and &he O?(EL 4t &o";
$str > mb%strtoupper3$str9;
echo $str; // rints ",'P H,L , O4**OE O,"Z ,.L &HE O?(EL 4* &?
?>
ee also strtoupper./A mb>strtolo3er./ and mb>con5ert>case./;
mb>str3idth
>P&P 8 _^ 8;3;KA P&P 4?
m#ZstrEidth 22 Return Eidth o( string
Kescription
int mb>str3idth > string str PA string encodingQ ?
mb>str3idth./ returns Eidth o( string str;
Multi2#yte character usually tEice o( Eidth compare to single #yte character;
Tabla !. Characters 3idth
Chars
2idt
h
@R3333 2 @R3319 3
@R3303 2 @R1FFF 1
@R0333 2 @RFFK3 0
@RFFK1 2 @RFF9F 1
@RFFA3 2 0
enco#6nE is character encoding; .( it is omittedA internal encoding is used;
ee alsoC mb>strim3idth./A mb>internal>encoding./;
mb>substitute>character
>P&P 8 _^ 8;3;KA P&P 4?
m#Zsu#stituteZcharacter 22 etDGet su#stitution character
Kescription
miFed mb>substitute>character > PmiFed su#strcharQ ?
mb>substitute>character./ speci(ies su#stitution character Ehen input character encoding is
invalid or character code is not eFist in output character encoding; .nvalid characters may #e
su#stituted NULL>no output?A string or integer value >@nicode character code value?;
,his setting a((ects mb>con5ert>encoding./A mb>con5ert>5ariables./A mb>output>handler./A
and mb>send>mail./;
su1stchar C peci(y @nicode value as integer or speci(y as string as (olloEs
=none= C no output
=long= C Output character code value >+FampleC @R7333A!.R:+:+?
Return $alueC .( su1stchar is setA it returns TRUE (or successA otherEise returns FALSE; .(
su1stchar is not setA it returns @nicode value or =none=D=lonE=;
E'emplo !. mb>substitute>character./ e+ample
<?php
/W &et 8ith +nicode +[<26< 3-E*, ",']9 W/
mb%substitute%character32x<26<9;
/W &et hex #ormat W/
mb%substitute%character3"lonE"9;
/W Lisplay current settinE W/
echo mb%substitute%character39;
?>
mb>substr>count
>P&P 8 _^ 8;7;3A P&P 4?
m#Zsu#strZcount 22 5ount the num#er o( su#string occurrences
Kescription
int mb>substr>count > string haystac"A string needle PA string encodingQ ?
mb>substr>count./ returns the num#er o( times the nee#le su#string occurs in the ha?stac> string;
enco#6nE speci(ies the encoding (or nee#le and ha?stac>; .( omittedA internal character encoding is
used;
E'emplo !. mb>substr>count./ e+ample
<?php
echo mb%substr%count3"*his is a test", "is"9; // prints out C
?>
ee also substr>count./A mb>strpos./A mb>substr./;
mb>substr
>P&P 8 _^ 8;3;KA P&P 4?
m#Zsu#str 22 Get part o( string
Kescription
string mb>substr > string strA int start PA int length PA string encodingQQ ?
mb>substr./ returns the portion o( str speci(ied #y the start and lenEth parameters;
mb>substr./ per(orms multi2#yte sa(e substr./ operation #ased on num#er o( characters; Position is
counted (rom the #eginning o( str; First characterHs position is 3; econd character position is 1A and
so on;
.( enco#6nE is omittedA internal encoding is assumed;
enco#6nE is character encoding; .( it is omittedA internal character encoding is used;
ee also mb>strcut./A mb>internal>encoding./;
:ICI. MCA: functions
M5AL stands (or Modular 5alendar Access Li#rary;
Li#mcal is a 5 li#rary (or accessing calendars; .tHs Eritten to #e very modularA Eith pluga#le drivers;
M5AL is the calendar Walent o( the .MAP module (or mail#oFes;
Lith mcal supportA a calendar stream can #e opened much li"e the mail#oF stream Eith the .MAP
support; 5alendars can #e local (ile storesA remote .5AP serversA or other (ormats that are supported
#y the mcal li#rary;
5alendar events can #e pulled upA /ueriedA and stored; ,here is also support (or calendar triggers
>alarms? and reoccuring events;
Lith li#mcalA central calendar servers can #e accessed and usedA removing the need (or any speci(ic
data#ase or local (ile programming;
,o get these (unctions to Eor"A you have to compile P&P Eith ==76th=mcal; ,hat re/uires the mcal
li#rary to #e installed; Gra# the latest version (rom httpCDDmcal;che";comD and compile and install it;
,he (olloEing constants are de(ined Ehen using the M5AL moduleC M5ALZ@NDA%A
M5ALZMONDA%A M5ALZ,@+DA%A M5ALZL+DN+DA%A M5ALZ,&@RDA%A
M5ALZFR.DA%A M5ALZA,@RDA%A M5ALZR+5@RZNON+A M5ALZR+5@RZDA.L%A
M5ALZR+5@RZL++SL%A M5ALZR+5@RZMON,&L%ZMDA%A
M5ALZR+5@RZMON,&L%ZLDA%A M5ALZR+5@RZ%+ARL%A M5ALZ!AN@AR%A
M5ALZF+BR@AR%A M5ALZMAR5&A M5ALZAPR.LA M5ALZMA%A M5ALZ!@N+A
M5ALZ!@L%A M5ALZA@G@G,A M5ALZ+P,+MB+RA M5ALZO5,OB+RA
M5ALZNO$+MB+RA and M5ALZD+5+MB+R; Most o( the (unctions use an internal event
structure that is uni/ue (or each stream; ,his alleviates the need to pass around large o#'ects
#etEeen (unctions; ,here are convenience (unctions (or settingA initializingA and retrieving the event
structure values;
Tabla de contenidos
mcalZappendZevent 22 tore a neE event into an M5AL calendar
mcalZclose 22 5lose an M5AL stream
mcalZcreateZcalendar 22 5reate a neE M5AL calendar
mcalZdateZcompare 22 5ompares tEo dates
mcalZdateZvalid 22 Returns TRUE i( the given yearA monthA day is a valid date
mcalZdayZo(ZEee" 22 Returns the day o( the Eee" o( the given date
mcalZdayZo(Zyear 22 Returns the day o( the year o( the given date
mcalZdaysZinZmonth 22 Returns the num#er o( days in the given month
mcalZdeleteZcalendar 22 Delete an M5AL calendar
mcalZdeleteZevent 22 Delete an event (rom an M5AL calendar
mcalZeventZaddZattri#ute 22 Adds an attri#ute and a value to the streams glo#al event structure
mcalZeventZinit 22 .nitializes a streams glo#al event structure
mcalZeventZsetZalarm 22 ets the alarm o( the streams glo#al event structure
mcalZeventZsetZcategory 22 ets the category o( the streams glo#al event structure
mcalZeventZsetZclass 22 ets the class o( the streams glo#al event structure
mcalZeventZsetZdescription 22 ets the description o( the streams glo#al event structure
mcalZeventZsetZend 22 ets the end date and time o( the streams glo#al event structure
mcalZeventZsetZrecurZdaily 22 ets the recurrence o( the streams glo#al event structure
mcalZeventZsetZrecurZmonthlyZmday 22 ets the recurrence o( the streams glo#al event structure
mcalZeventZsetZrecurZmonthlyZEday 22 ets the recurrence o( the streams glo#al event structure
mcalZeventZsetZrecurZnone 22 ets the recurrence o( the streams glo#al event structure
mcalZeventZsetZrecurZEee"ly 22 ets the recurrence o( the streams glo#al event structure
mcalZeventZsetZrecurZyearly 22 ets the recurrence o( the streams glo#al event structure
mcalZeventZsetZstart 22 ets the start date and time o( the streams glo#al event structure
mcalZeventZsetZtitle 22 ets the title o( the streams glo#al event structure
mcalZeFpunge 22 Deletes all events mar"ed (or #eing eFpunged
mcalZ(etchZcurrentZstreamZevent 22 Returns an o#'ect containing the current streams event
structure
mcalZ(etchZevent 22 Fetches an event (rom the calendar stream
mcalZisZleapZyear 22 Returns i( the given year is a leap year or not
mcalZlistZalarms 22 Return a list o( events that has an alarm triggered at the given datetime
mcalZlistZevents 22 Return a list o( events #etEeen tEo given datetimes
mcalZneFtZrecurrence 22 Returns the neFt recurrence o( the event
mcalZopen 22 Opens up an M5AL connection
mcalZpopen 22 Opens up a persistent M5AL connection
mcalZrenameZcalendar 22 Rename an M5AL calendar
mcalZreopen 22 Reopens an M5AL connection
mcalZsnooze 22 ,urn o(( an alarm (or an event
mcalZstoreZevent 22 Modi(y an eFisting event in an M5AL calendar
mcalZtimeZvalid 22 Returns TRUE i( the given yearA monthA day is a valid time
mcalZEee"Zo(Zyear 22 Returns the Eee" num#er o( the given date
mcal>append>e5ent
>P&P 8 ?
mcalZappendZevent 22 tore a neE event into an M5AL calendar
Kescription
int mcal>append>e5ent > int mcalZstream ?
mcal>append>e5ent./ tores the glo#al event into an M5AL calendar (or the given stream;
Returns the uid o( the neEly inserted event;
mcal>close
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZclose 22 5lose an M5AL stream
Kescription
int mcal>close > int mcalZstreamA int (lags ?
5loses the given mcal stream;
mcal>create>calendar
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZcreateZcalendar 22 5reate a neE M5AL calendar
Kescription
#ool mcal>create>calendar > int streamA string calendar ?
5reates a neE calendar named calen#ar;
mcal>date>compare
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZdateZcompare 22 5ompares tEo dates
Kescription
int mcal>date>compare > int aZyearA int aZmonthA int aZdayA int #ZyearA int #ZmonthA int #Zday ?
mcal>date>compare./ 5ompares the tEo given datesA returns `3A 3A _3 i( a`#A a^^#A a_#
respectively
mcal>date>5alid
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZdateZvalid 22 Returns TRUE i( the given yearA monthA day is a valid date
Kescription
int mcal>date>5alid > int yearA int monthA int day ?
mcal>date>5alid./ Returns TRUE i( the given yearA month and day is a valid dateA FALSE i( not;
mcal>day>of>3eeB
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZdayZo(ZEee" 22 Returns the day o( the Eee" o( the given date
Kescription
int mcal>day>of>3eeB > int yearA int monthA int day ?
mcal>day>of>3eeB./ returns the day o( the Eee" o( the given date
mcal>day>of>year
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZdayZo(Zyear 22 Returns the day o( the year o( the given date
Kescription
int mcal>day>of>year > int yearA int monthA int day ?
mcal>day>of>year./ returns the day o( the year o( the given date
mcal>days>in>month
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZdaysZinZmonth 22 Returns the num#er o( days in the given month
Kescription
int mcal>days>in>month > int monthA int leap year ?
mcal>days>in>month./ Returns the num#er o( days in the given monthA ta"ing into account i( the
given year is a leap year or not;
mcal>delete>calendar
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZdeleteZcalendar 22 Delete an M5AL calendar
Kescription
string mcal>delete>calendar > int streamA string calendar ?
Deletes the calendar named calen#ar;
mcal>delete>e5ent
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZdeleteZevent 22 Delete an event (rom an M5AL calendar
Kescription
int mcal>delete>e5ent > int uid ?
mcal>delete>e5ent./ deletes the calendar event speci(ied #y the uid;
Returns TRUE;
mcal>e5ent>add>attribute
>P&P 7_^ 7;3;14A P&P 8 ?
mcalZeventZaddZattri#ute 22 Adds an attri#ute and a value to the streams glo#al event structure
Kescription
void mcal>e5ent>add>attribute > int streamA string attri#uteA string value ?
mcal>e5ent>add>attribute./ adds an attri#ute to the streamHs glo#al event structure Eith the value
given #y =value= ;
mcal>e5ent>init
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZeventZinit 22 .nitializes a streams glo#al event structure
Kescription
int mcal>e5ent>init > int stream ?
mcal>e5ent>init./ initializes a streams glo#al event structure; this e((ectively sets all elements o(
the structure to 3A or the de(ault settings;
Returns TRUE;
mcal>e5ent>set>alarm
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZeventZsetZalarm 22 ets the alarm o( the streams glo#al event structure
Kescription
int mcal>e5ent>set>alarm > int streamA int alarm ?
mcal>e5ent>set>alarm./ sets the streams glo#al event structureHs alarm to the given minutes #e(ore
the event;
Returns TRUE;
mcal>e5ent>set>category
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZeventZsetZcategory 22 ets the category o( the streams glo#al event structure
Kescription
int mcal>e5ent>set>category > int streamA string category ?
mcal>e5ent>set>category./ sets the streams glo#al event structureHs category to the given string;
Returns TRUE;
mcal>e5ent>set>class
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZeventZsetZclass 22 ets the class o( the streams glo#al event structure
Kescription
int mcal>e5ent>set>class > int streamA int class ?
mcal>e5ent>set>class./ sets the streams glo#al event structureHs class to the given value; ,he class
is either 1 (or pu#licA or 3 (or private;
Returns TRUE;
mcal>e5ent>set>description
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZeventZsetZdescription 22 ets the description o( the streams glo#al event structure
Kescription
int mcal>e5ent>set>description > int streamA string description ?
mcal>e5ent>set>description./ sets the streams glo#al event structureHs description to the given
string;
Returns TRUE;
mcal>e5ent>set>end
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZeventZsetZend 22 ets the end date and time o( the streams glo#al event structure
Kescription
int mcal>e5ent>set>end > int streamA int yearA int month PA int day PA int hour PA int min PA int secQQQQ ?
mcal>e5ent>set>end./ sets the streams glo#al event structureHs end date and time to the given
values;
Returns TRUE;
mcal>e5ent>set>recur>daily
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZeventZsetZrecurZdaily 22 ets the recurrence o( the streams glo#al event structure
Kescription
int mcal>e5ent>set>recur>daily > int streamA int yearA int monthA int dayA int interval ?
mcal>e5ent>set>recur>daily./ sets the streams glo#al event structureHs recurrence to the given
value to #e reoccuring on a daily #asisA ending at the given date;
mcal>e5ent>set>recur>monthly>mday
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZeventZsetZrecurZmonthlyZmday 22 ets the recurrence o( the streams glo#al event structure
Kescription
int mcal>e5ent>set>recur>monthly>mday > int streamA int yearA int monthA int dayA int interval ?
mcal>e5ent>set>recur>monthly>mday./ sets the streams glo#al event structureHs recurrence to the
given value to #e reoccuring on a monthly #y month day #asisA ending at the given date;
mcal>e5ent>set>recur>monthly>3day
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZeventZsetZrecurZmonthlyZEday 22 ets the recurrence o( the streams glo#al event structure
Kescription
int mcal>e5ent>set>recur>monthly>3day > int streamA int yearA int monthA int dayA int interval ?
mcal>e5ent>set>recur>monthly>3day./ sets the streams glo#al event structureHs recurrence to the
given value to #e reoccuring on a monthly #y Eee" #asisA ending at the given date;
mcal>e5ent>set>recur>none
>P&P 7_^ 7;3;14A P&P 8 ?
mcalZeventZsetZrecurZnone 22 ets the recurrence o( the streams glo#al event structure
Kescription
int mcal>e5ent>set>recur>none > int stream ?
mcal>e5ent>set>recur>none./ sets the streams glo#al event structure to not recur >event2
_recurZtype is set to M5ALZR+5@RZNON+?;
mcal>e5ent>set>recur>3eeBly
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZeventZsetZrecurZEee"ly 22 ets the recurrence o( the streams glo#al event structure
Kescription
int mcal>e5ent>set>recur>3eeBly > int streamA int yearA int monthA int dayA int intervalA int
Eee"days ?
mcal>e5ent>set>recur>3eeBly./ sets the streams glo#al event structureHs recurrence to the given
value to #e reoccuring on a Eee"ly #asisA ending at the given date;
mcal>e5ent>set>recur>yearly
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZeventZsetZrecurZyearly 22 ets the recurrence o( the streams glo#al event structure
Kescription
int mcal>e5ent>set>recur>yearly > int streamA int yearA int monthA int dayA int interval ?
mcal>e5ent>set>recur>yearly./ sets the streams glo#al event structureHs recurrence to the given
value to #e reoccuring on a yearly #asisAending at the given date ;
mcal>e5ent>set>start
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZeventZsetZstart 22 ets the start date and time o( the streams glo#al event structure
Kescription
int mcal>e5ent>set>start > int streamA int yearA int month PA int day PA int hour PA int min PA int secQQQQ
?
mcal>e5ent>set>start./ sets the streams glo#al event structureHs start date and time to the given
values;
Returns TRUE;
mcal>e5ent>set>title
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZeventZsetZtitle 22 ets the title o( the streams glo#al event structure
Kescription
int mcal>e5ent>set>title > int streamA string title ?
mcal>e5ent>set>title./ sets the streams glo#al event structureHs title to the given string;
Returns TRUE;
mcal>e+punge
>no version in(ormationA might #e only in 5$?
mcalZeFpunge 22 Deletes all events mar"ed (or #eing eFpunged
Kescription
int mcal>e+punge > int stream ?
mcal>e+punge./ deletes all events Ehich have #een previously mar"ed (or deletion;
mcal>fetch>current>stream>e5ent
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZ(etchZcurrentZstreamZevent 22 Returns an o#'ect containing the current streams event
structure
Kescription
int mcal>fetch>current>stream>e5ent > int stream ?
mcal>e5ent>fetch>current>stream>e5ent./ returns the current streamHs event structure as an o#'ect
containingC
int id 2 .D o( that event;
int pu#lic 2 TRUE i( the event i( pu#licA FALSE i( it is private;
string category 2 5ategory string o( the event;
string title 2 ,itle string o( the event;
string description 2 Description string o( the event;
int alarm 2 num#er o( minutes #e(ore the event to send an alarmDreminder;
o#'ect start 2 O#'ect containing a datetime entry;
o#'ect end 2 O#'ect containing a datetime entry;
int recurZtype 2 recurrence type
int recurZinterval 2 recurrence interval
datetime recurZenddate 2 recurrence end date
int recurZdata 2 recurrence data
All datetime entries consist o( an o#'ect that containsC
int year 2 year
int month 2 month
int mday 2 day o( month
int hour 2 hour
int min 2 minutes
int sec 2 seconds
int alarm 2 minutes #e(ore event to send an alarm
mcal>fetch>e5ent
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZ(etchZevent 22 Fetches an event (rom the calendar stream
Kescription
o#'ect mcal>fetch>e5ent > int mcalZstreamA int eventZid PA int optionsQ ?
mcal>fetch>e5ent./ (etches an event (rom the calendar stream speci(ied #y 6#;
Returns an event o#'ect consisting o(C
int id 2 .D o( that event;
int pu#lic 2 TRUE i( the event i( pu#licA FALSE i( it is private;
string category 2 5ategory string o( the event;
string title 2 ,itle string o( the event;
string description 2 Description string o( the event;
int alarm 2 num#er o( minutes #e(ore the event to send an alarmDreminder;
o#'ect start 2 O#'ect containing a datetime entry;
o#'ect end 2 O#'ect containing a datetime entry;
int recurZtype 2 recurrence type
int recurZinterval 2 recurrence interval
datetime recurZenddate 2 recurrence end date
int recurZdata 2 recurrence data
All datetime entries consist o( an o#'ect that containsC
int year 2 year
int month 2 month
int mday 2 day o( month
int hour 2 hour
int min 2 minutes
int sec 2 seconds
int alarm 2 minutes #e(ore event to send an alarm
mcal>is>leap>year
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZisZleapZyear 22 Returns i( the given year is a leap year or not
Kescription
int mcal>is>leap>year > int year ?
mcal>is>leap>year./ returns 1 i( the given year is a leap yearA 1 i( not;
mcal>list>alarms
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZlistZalarms 22 Return a list o( events that has an alarm triggered at the given datetime
Kescription
array mcal>list>alarms > int mcalZstream PA int #eginZyear PA int #eginZmonth PA int #eginZday PA int
endZyear PA int endZmonth PA int endZdayQQQQQQ ?
Returns an array o( event .DHs that has an alarm going o(( #etEeen the start and end datesA or i( 'ust a
stream is givenA uses the start and end dates in the glo#al event structure;
mcal>list>e5ents./ (unction ta"es in an optional #eginning date and an end date (or a calendar
stream; An array o( event idHs that are #etEeen the given dates or the internal event dates are
returned;
mcal>list>e5ents
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZlistZevents 22 Return a list o( events #etEeen tEo given datetimes
Kescription
array mcal>list>e5ents > int mcalZstream PA int #eginZyear PA int #eginZmonth PA int #eginZday PA int
endZyear PA int endZmonth PA int endZdayQQQQQQ ?
Returns an array o( event .DHs that are #etEeen the start and end datesA or i( 'ust a stream is givenA
uses the start and end dates in the glo#al event structure;
mcal>list>e5ents./ (unction ta"es in an optional #eginning date and an end date (or a calendar
stream; An array o( event idHs that are #etEeen the given dates or the internal event dates are
returned;
mcal>ne+t>recurrence
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZneFtZrecurrence 22 Returns the neFt recurrence o( the event
Kescription
int mcal>ne+t>recurrence > int streamA int Eee"startA array neFt ?
mcal>ne+t>recurrence./ returns an o#'ect (illed Eith the neFt date the event occursA on or a(ter the
supplied date; Returns empty date (ield i( event does not occur or something is invalid; @ses
Eee"start to determine Ehat day is considered the #eginning o( the Eee";
mcal>open
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZopen 22 Opens up an M5AL connection
Kescription
int mcal>open > string calendarA string usernameA string passEordA string options ?
Returns an M5AL stream on successA FALSE on error;
mcal>open./ opens up an M5AL connection to the speci(ied calen#ar store; .( the optional opt6ons
is speci(iedA passes the opt6ons to that mail#oF also; ,he streams internal event structure is also
initialized upon connection;
mcal>popen
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZpopen 22 Opens up a persistent M5AL connection
Kescription
int mcal>popen > string calendarA string usernameA string passEord PA int optionsQ ?
Returns an M5AL stream on successA FALSE on error;
mcal>popen./ opens up an M5AL connection to the speci(ied calen#ar store; .( the optional
opt6ons is speci(iedA passes the opt6ons to that mail#oF also; ,he streams internal event structure is
also initialized upon connection;
mcal>rename>calendar
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZrenameZcalendar 22 Rename an M5AL calendar
Kescription
string mcal>rename>calendar > int streamA string oldZnameA string neEZname ?
Renames the calendar ol#_name to ne7_name;
mcal>reopen
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZreopen 22 Reopens an M5AL connection
Kescription
int mcal>reopen > int mcalZstreamA string calendar PA int optionsQ ?
Reopens an M5AL stream to a neE calendar;
mcal>reopen./ reopens an M5AL connection to the speci(ied calen#ar store; .( the optional
opt6ons is speci(iedA passes the opt6ons to that mail#oF also;
mcal>snoo6e
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZsnooze 22 ,urn o(( an alarm (or an event
Kescription
int mcal>snoo6e > int uid ?
mcal>snoo6e./ turns o(( an alarm (or a calendar event speci(ied #y the uid;
Returns TRUE;
mcal>store>e5ent
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZstoreZevent 22 Modi(y an eFisting event in an M5AL calendar
Kescription
int mcal>store>e5ent > int mcalZstream ?
mcal>store>e5ent./ tores the modi(ications to the current glo#al event (or the given stream;
Returns TRUE on success and FALSE on error;
mcal>time>5alid
>P&P 7_^ 7;3;17A P&P 8 ?
mcalZtimeZvalid 22 Returns TRUE i( the given yearA monthA day is a valid time
Kescription
int mcal>time>5alid > int hourA int minutesA int seconds ?
mcal>time>5alid./ Returns TRUE i( the given hourA minutes and seconds is a valid timeA FALSE i(
not;
mcal>3eeB>of>year
>P&P 8 ?
mcalZEee"Zo(Zyear 22 Returns the Eee" num#er o( the given date
Kescription
int mcal>3eeB>of>year > int dayA int monthA int year ?
mcal>3eeB>of>year./ returns the Eee" num#er o( the given date;
:ICII. ;unciones de Cifrado Mcrypt
Introducci"n
+sta es una inter(az con la #i#lioteca mcryptA la cual soporta una gran variedad de algoritmos de
#lo/ue como D+A ,ripleD+A BloE(ish >por de(ecto?A 72LA%A AF+R2SK8A AF+R2S10MA
,LOF.&A ,+AA R50 y GO, en los modos de ci(rado 5B5A OFBA 5FB y +5B; AdicionalmenteA
soporta R5K e .D+AA los cuales se consideran =no2li#res=;
Me?uirimientos
+stas (unciones tra#a'an usando mcrypt; Para usar la #i#liotecaA descargue libmcryptF
x.x.tar.E0 desde httpCDDmcrypt;source(orge;netD y siga las instrucciones de instalaci-n incluidas;
Los usuarios de EindoEs encontrar*n todos los #inarios compilados de mcrypt /ue se necesitan en
httpCDD(tp;emini;d"Dpu#DphpDEin70DmcryptD;
A partir de P&P 4;3;3A es necesario usar la versi-n 0;4;K o superior de li#mcrypt;
i ha enlazado el so(tEare contra li#mcrypt 0;8;F o versiones superioresA los siguientes algoritmos
de #lo/ue adicionales son soportadosC 5A,A LOS.9:A R.!NDA+LA AF+RPL@A +RP+N, y los
siguientes ci(rados de secuenciaC +N.GMA >ci(rado?A PANAMAA R58 y LAS+; 5on li#mcrypt
0;8;F o superiorA tam#i<n se encuentra disponi#le otro modo de ci(radoX nOFB;
Instalaci"n
%ou need to compile P&P Eith the ==76th=mcr?pt):D0R. parameter to ena#le this eFtension; D.R is
the mcrypt install directory; Ma"e sure you compile li#mcrypt Eith the option ==#6sa1le=pos68=
threa#s;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Mcrypt configuration options
Name Kefault Changeable
mcrypt;algorithmsZ
dir
N@LL P&PZ.N.ZALL
mcrypt;modesZdir N@LL P&PZ.N.ZALL
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
Mcrypt can operate in (our #loc" cipher modes >5B5A OFBA 5FBA and +5B?; .( lin"ed against
li#mcrypt20;8;F or higher the (unctions can also operate in the #loc" cipher mode nOFB and in
,R+AM mode; BeloE you (ind a list Eith all supported encryption modes together Eith the
constants that are de(ines (or the encryption mode; For a more complete re(erence and discussion
see Applied 5ryptography #y chneier >.BN 328:1211:3929?;
M5R%P,ZMOD+Z+5B >electronic code#oo"? is suita#le (or random dataA such as
encrypting other "eys; ince data there is short and randomA the disadvantages o( +5B have
a (avora#le negative e((ect;
M5R%P,ZMOD+Z5B5 >cipher #loc" chaining? is especially suita#le (or encrypting (iles
Ehere the security is increased over +5B signi(icantly;
M5R%P,ZMOD+Z5FB >cipher (eed#ac"? is the #est mode (or encrypting #yte streams
Ehere single #ytes must #e encrypted;
M5R%P,ZMOD+ZOFB >output (eed#ac"A in M#it? is compara#le to 5FBA #ut can #e used in
applications Ehere error propagation cannot #e tolerated; .tHs insecure >#ecause it operates in
M#it mode? so it is not recommended to use it;
M5R%P,ZMOD+ZNOFB >output (eed#ac"A in n#it? is compara#le to OFBA #ut more secure
#ecause it operates on the #loc" size o( the algorithm;
M5R%P,ZMOD+Z,R+AM is an eFtra mode to include some stream algorithms li"e
LAS+ or R58;
ome other mode and random device constantsC
MCRYPT_ENCRYPT >integer?
MCRYPT_DECRYPT >integer?
MCRYPT_DE$_RANDOM >integer?
MCRYPT_DE$_URANDOM >integer?
MCRYPT_RAND >integer?
Cifrados mcrypt
A/u) se encuentra una lista de ci(rados /ue son soportados actualmente por la eFtensi-n mcrypt;
Para una lista completa de los ci(rados soportadosA consulte las de(iniciones al (inal de mcrypt.h;
La regla general con la AP. de mcrypt20;0;F AP. es /ue puede acceder al ci(rado desde P&P
mediante M5R%P,Znom#reZci(rado; 5on la AP. de li#mcrypt20;8;F y li#mcrypt20;4;F AP. estas
constantes (uncionan tam#i<nA pero es posi#le especi(icar el nom#re del ci(rado como una cadena
con una llamada a mcrypt>module>open./;
M5R%P,Z7D+
M5R%P,ZAR5FO@RZ.$ >li#mcrypt _ 0;8;F Bnicamente?
M5R%P,ZAR5FO@R >li#mcrypt _ 0;8;F Bnicamente?
M5R%P,ZBLOLF.&
M5R%P,Z5A,Z10M
M5R%P,Z5A,Z04K
M5R%P,Z5R%P,
M5R%P,ZD+
M5R%P,ZD+Z5OMPA, >li#mcrypt 0;0;F Bnicamente?
M5R%P,Z+N.GMA >li#mcrypt _ 0;8;F BnicamenteA alias para M5R%P,Z5R%P,?
M5R%P,ZGO,
M5R%P,Z.D+A >non2(ree?
M5R%P,ZLOS.9: >li#mcrypt _ 0;8;F Bnicamente?
M5R%P,ZMAR >li#mcrypt _ 0;8;F BnicamenteA no2li#re?
M5R%P,ZPANAMA >li#mcrypt _ 0;8;F Bnicamente?
M5R%P,ZR.!NDA+LZ10M >li#mcrypt _ 0;8;F Bnicamente?
M5R%P,ZR.!NDA+LZ190 >li#mcrypt _ 0;8;F Bnicamente?
M5R%P,ZR.!NDA+LZ04K >li#mcrypt _ 0;8;F Bnicamente?
M5R%P,ZR50
M5R%P,ZR58 >li#mcrypt 0;0;F Bnicamente?
M5R%P,ZR5K >li#mcrypt _ 0;8;F Bnicamente?
M5R%P,ZR5KZ10M >li#mcrypt 0;0;F Bnicamente?
M5R%P,ZR5KZ190 >li#mcrypt 0;0;F Bnicamente?
M5R%P,ZR5KZ04K >li#mcrypt 0;0;F Bnicamente?
M5R%P,ZAF+RK8
M5R%P,ZAF+R10M
M5R%P,ZAF+RPL@ >li#mcrypt _ 0;8;F Bnicamente?
M5R%P,Z+RP+N,>li#mcrypt _ 0;8;F Bnicamente?
M5R%P,Z+RP+N,Z10M >li#mcrypt 0;0;F Bnicamente?
M5R%P,Z+RP+N,Z190 >li#mcrypt 0;0;F Bnicamente?
M5R%P,Z+RP+N,Z04K >li#mcrypt 0;0;F Bnicamente?
M5R%P,ZS.P!A5S >li#mcrypt _ 0;8;F Bnicamente?
M5R%P,Z,+AN >li#mcrypt 0;0;F Bnicamente?
M5R%P,Z,&R++LA%
M5R%P,Z,R.PL+D+ >li#mcrypt _ 0;8;F Bnicamente?
M5R%P,Z,LOF.& >para versinos mcrypt 0;F m*s antiguasA o mcrypt _ 0;8;F ?
M5R%P,Z,LOF.&10M >,LOF.&FFF se encuentran disponi#les en versiones 0;F m*s
recientesA pero no en las versiones 0;8;F?
M5R%P,Z,LOF.&190
M5R%P,Z,LOF.&04K
M5R%P,ZLAS+ >li#mcrypt _ 0;8;F Bnicamente?
M5R%P,ZJ,+A >li#mcrypt _ 0;8;F Bnicamente?
@sted de#e >en modos 5FB y OFB? o puede >en modo 5B5? entregar un vector de inicializaci-n
>.$A por sus siglas en .ngl<s? a la respectiva (unci-n de ci(rado; +l .$ de#e ser Bnico y de#e ser el
mismo cuando se realice desci(radoDci(rado; 5on datos /ue sean almacenados en (orma ci(radaA
usted puede tomar la salida de una (unci-n del )ndice #a'o el cual se encuentren almacenados los
datos >p;e'; la llave MD4 del nom#re de archivo?; AlternativamenteA puede transmitir el .$ 'unto con
los datos ci(rados >vea el cap)tulo 9;7 de Applied 5ryptography #y chneier >.BN 328:1211:3929?
para una discusi-n de este t-pico?;
E'emplos
Mcrypt puede usarse para ci(rar y desci(rar usando los ci(rados mencionados anteriormente; i ha
enlazado el so(tEare contra li#mcrypt20;0;FA los cuatro comandos importantes de mcrypt
>mcrypt>cfb./A mcrypt>cbc./A mcrypt>ecb./A y mcrypt>ofb./? pueden operar en am#os modosA los
cuales son llamados M5R%P,Z+N5R%P, y M5R%P,ZD+5R%P,A respectivamente;
E'emplo !. Cifrar un 5alor de entrada con TripleKE, ba'o *.*.+ en modo EC1
<?php
$lla=e > "esta es una lla=e secreta";
$entrada > "Encontr&eacute;monos a las K en punto en el luEar secreto.";
$datos%ci#rados > mcrypt%ecb 3"R'P*%<LE&, $lla=e, $entrada, "R'P*%E.R'P*9;
?>
+ste e'emplo le entregar* los datos ci(rados como una cadena en '#atos_c69ra#os;
i ha enlazado el so(tEare contra li#mcrypt 0;8;F o 0;4;FA <stas (unciones aun est*n disponi#lesA
pero es recomenda#le /ue use las (unciones avanzadas;
E'emplo *. Encriptar un 5alor de entrada con TripleKE, ba'o *.8.+ y 5ersiones superioresE en
modo EC1
<?php
$lla=e > "esta es una lla=e secreta";
$entrada > "Encontr&eacute;monos a las K en punto en el luEar secreto.";
$td > mcrypt%module%open3MtripledesM, MM, MecbM, MM9;
$i= > mcrypt%create%i= 3mcrypt%enc%Eet%i=%si0e3$td9, "R'P*%',.L9;
mcrypt%Eeneric%init3$td, $lla=e, $i=9;
$datos%ci#rados > mcrypt%Eeneric3$td, $entrada9;
mcrypt%Eeneric%deinit3$td9;
mcrypt%module%close3$td9;
?>
+ste e'emplo le entregar* los datos ci(rados como una cadena en '#atos_c69ra#os; Para un e'emplo
completoA consulte mcrypt>module>open./;
Tabla de contenidos
mcryptZc#c 22 +ncriptaDdesencripta datos en modo 5B5
mcryptZc(# 22 +ncriptaDdesencripta datos en modo 5FB
mcryptZcreateZiv 22 5rea un vector de inicializaci-n >.$? a partir de una (uente aleatoria
mcryptZdecrypt 22 Decrypts cryptteFt Eith given parameters
mcryptZec# 22 +ncriptaDdesencripta datos en modo +5B
mcryptZencZgetZalgorithmsZname 22 Returns the name o( the opened algorithm
mcryptZencZgetZ#loc"Zsize 22 Returns the #loc"size o( the opened algorithm
mcryptZencZgetZivZsize 22 Returns the size o( the .$ o( the opened algorithm
mcryptZencZgetZ"eyZsize 22 Returns the maFimum supported "eysize o( the opened mode
mcryptZencZgetZmodesZname 22 Returns the name o( the opened mode
mcryptZencZgetZsupportedZ"eyZsizes 22 Returns an array Eith the supported "eysizes o( the opened
algorithm
mcryptZencZisZ#loc"ZalgorithmZmode 22 5hec"s Ehether the encryption o( the opened mode Eor"s
on #loc"s
mcryptZencZisZ#loc"Zalgorithm 22 5hec"s Ehether the algorithm o( the opened mode is a #loc"
algorithm
mcryptZencZisZ#loc"Zmode 22 5hec"s Ehether the opened mode outputs #loc"s
mcryptZencZsel(Ztest 22 ,his (unction runs a sel( test on the opened module
mcryptZencrypt 22 +ncrypts plainteFt Eith given parameters
mcryptZgenericZdeinit 22 ,his (unction deinitializes an encryption module
mcryptZgenericZend 22 ,his (unction terminates encryption
mcryptZgenericZinit 22 ,his (unction initializes all #u((ers needed (or encryption
mcryptZgeneric 22 ,his (unction encrypts data
mcryptZgetZ#loc"Zsize 22 O#tiene el tamaWo de #lo/ue del ci(rado indicado
mcryptZgetZcipherZname 22 O#tiene el nom#re del ci(rado especi(icado
mcryptZgetZivZsize 22 Returns the size o( the .$ #elonging to a speci(ic cipherDmode com#ination
mcryptZgetZ"eyZsize 22 O#tiene el tamaWo de la clave de un ci(rado
mcryptZlistZalgorithms 22 Get an array o( all supported ciphers
mcryptZlistZmodes 22 Get an array o( all supported modes
mcryptZmoduleZclose 22 5lose the mcrypt module
mcryptZmoduleZgetZalgoZ#loc"Zsize 22 Returns the #loc"size o( the speci(ied algorithm
mcryptZmoduleZgetZalgoZ"eyZsize 22 Returns the maFimum supported "eysize o( the opened mode
mcryptZmoduleZgetZsupportedZ"eyZsizes 22 Returns an array Eith the supported "eysizes o( the
opened algorithm
mcryptZmoduleZisZ#loc"ZalgorithmZmode 22 Returns i( the speci(ied module is a #loc" algorithm
or not
mcryptZmoduleZisZ#loc"Zalgorithm 22 ,his (unction chec"s Ehether the speci(ied algorithm is a
#loc" algorithm
mcryptZmoduleZisZ#loc"Zmode 22 Returns i( the speci(ied mode outputs #loc"s or not
mcryptZmoduleZopen 22 Opens the module o( the algorithm and the mode to #e used
mcryptZmoduleZsel(Ztest 22 ,his (unction runs a sel( test on the speci(ied module
mcryptZo(# 22 +ncriptaDdesencripta datos en modo OFB
mdecryptZgeneric 22 Decrypt data
mcrypt>cbc
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
mcryptZc#c 22 +ncriptaDdesencripta datos en modo 5B5
Kescripci"n
int mcrypt>cbc > int cipherA string "eyA string dataA int mode PA string ivQ ?
mcrypt>cbc./ encripta o desencripta >dependiendo de mo#e? los datos #ata con el ci(rado c6pher y
la clave >e? en el modo de ci(rado 5B5 y devuelve la cadena resultante;
+l par*metro c6pher es una de las constantes con nom#re M5R%P,Znom#reci(rado;
>e? es la clave suministrada al algoritmo; De#e guardarse en secreto;
#ata son los datos /ue ser*n encriptadosDdesencriptados;
mo#e es M5R%P,Z+N5R%P, o M5R%P,ZD+5R%P,;
6 es el vector de inicializaci-n opcional;
$er tam#i<nC mcrypt>cfb./A mcrypt>ecb./A mcrypt>ofb./
mcrypt>cfb
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
mcryptZc(# 22 +ncriptaDdesencripta datos en modo 5FB
Kescripci"n
int mcrypt>cfb > int cipherA string "eyA string dataA int modeA string iv ?
mcrypt>cfb./ encripta o desencripta >dependiendo de mo#e? los datos #ata con el ci(rado c6pher y
la clave >e? en el modo de ci(rado 5FB y devuelve la cadena resultante;
+l par*metro c6pher es una de las constantes con nom#re M5R%P,Znom#reci(rado;
>e? es la clave suministrada al algoritmo; De#e guardarse en secreto;
#ata son los datos /ue ser*n encriptadosDdesencriptados;
mo#e es M5R%P,Z+N5R%P, o M5R%P,ZD+5R%P,;
6 es el vector de inicializaci-n;
$er tam#i<nC mcrypt>cbc./A mcrypt>ecb./A mcrypt>ofb./
mcrypt>create>i5
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
mcryptZcreateZiv 22 5rea un vector de inicializaci-n >.$? a partir de una (uente aleatoria
Kescripci"n
string mcrypt>create>i5 > int sizeA int source ?
mcrypt>create>i5./ se usa para crear un .$;
mcrypt>create>i5./ toma dos argumentosA s6De determina el tamaWo del .$A source especi(ica la
(uente del .$;
La (uente puede ser M5R%P,ZRAND >generador de nBmeros aleatorios del sistema?A
M5R%P,ZD+$ZRANDOM >/ue lee datos de DdevDrandom? y M5R%P,ZD+$Z@RANDOM >/ue
lee datos de DdevDurandom?; i usas M5R%P,ZRANDA asegurate de llamar antes a srand>? para
inicializar el generador de nBmeros aleatorios;
E'emplo !. E'emplo de mcrypt>create>i5
<?php
$cipher > "R'P*%*ripleLE&;
$blocI%si0e > mcrypt%Eet%blocI%si0e3$cipher9;
$i= > mcrypt%create%i=3$blocI%si0e, "R'P*%LE(%',.L?"9;
?>
mcrypt>decrypt
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZdecrypt 22 Decrypts cryptteFt Eith given parameters
Kescription
string mcrypt>decrypt > string cipherA string "eyA string dataA string mode PA string ivQ ?
mcrypt>decrypt./ decrypts the data and returns the unencrypted data;
C6pher is one o( the M5R%P,Zciphername constants o( the name o( the algorithm as string;
2e? is the "ey Eith Ehich the data is encrypted; .( itHs smaller that the re/uired "eysizeA it is padded
Eith HQ0H;
Data is the data that Eill #e decrypted Eith the given cipher and mode; .( the size o( the data is not n
V #loc"sizeA the data Eill #e padded Eith HQ0H;
Mo#e is one o( the M5R%P,ZMOD+Zmodename constants o( one o( =ec#=A =c#c=A =c(#=A =o(#=A
=no(#= or =stream=;
,he 0( parameter is used (or the initialisation in 5B5A 5FBA OFB modesA and in some algorithms in
,R+AM mode; .( you do not supply an .$A Ehile it is needed (or an algorithmA the (unction issues
a Earning and uses an .$ Eith all #ytes set to HQ0H;
mcrypt>ecb
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
mcryptZec# 22 +ncriptaDdesencripta datos en modo +5B
Kescripci"n
int mcrypt>ecb > int cipherA string "eyA string dataA int mode ?
mcrypt>ecb./ encripta o desencripta >dependiendo de mo#e? los datos #ata con el ci(rado c6pher y
la clave >e? en el modo de ci(rado +5B y devuelve la cadena resultante;
+l par*metro c6pher es una de las constantes con nom#re M5R%P,Znom#reci(rado;
>e? es la clave suministrada al algoritmo; De#e guardarse en secreto;
#ata son los datos /ue ser*n encriptadosDdesencriptados;
mo#e es M5R%P,Z+N5R%P, o M5R%P,ZD+5R%P,;
$er tam#i<nC mcrypt>cbc./A mcrypt>cfb./A mcrypt>ofb./
mcrypt>enc>get>algorithms>name
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZencZgetZalgorithmsZname 22 Returns the name o( the opened algorithm
Kescription
string mcrypt>enc>get>algorithms>name > resource td ?
,his (unction returns the name o( the algorithm;
E'emplo !. mcrypt>enc>get>algorithms>name./ e+ample
<?php
$td > mcrypt%module%open3"R'P*%R,&*%C5G, MM, "R'P*%"?LE%RSZ, MM9;
echo mcrypt%enc%Eet%alEorithms%name3$td9. "Vn";

$td > mcrypt%module%open3McastFC5GM, MM, "R'P*%"?LE%RSZ, MM9;
echo mcrypt%enc%Eet%alEorithms%name3$td9. "Vn";
?>
+l resultado del e'emplo seriaC
R,&*FC5G
R,&*FC5G
mcrypt>enc>get>blocB>si6e
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZencZgetZ#loc"Zsize 22 Returns the #loc"size o( the opened algorithm
Kescription
int mcrypt>enc>get>blocB>si6e > resource td ?
,his (unction returns the #loc" size o( the algorithm speci(ied #y the encryption descriptor t# in
#ytes;
mcrypt>enc>get>i5>si6e
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZencZgetZivZsize 22 Returns the size o( the .$ o( the opened algorithm
Kescription
int mcrypt>enc>get>i5>si6e > resource td ?
,his (unction returns the size o( the iv o( the algorithm speci(ied #y the encryption descriptor in
#ytes; .( it returns H3H then the .$ is ignored in the algorithm; An .$ is used in c#cA c(# and o(#
modesA and in some algorithms in stream mode;
mcrypt>enc>get>Bey>si6e
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZencZgetZ"eyZsize 22 Returns the maFimum supported "eysize o( the opened mode
Kescription
int mcrypt>enc>get>Bey>si6e > resource td ?
,his (unction returns the maFimum supported "ey size o( the algorithm speci(ied #y the encryption
descriptor t# in #ytes;
mcrypt>enc>get>modes>name
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZencZgetZmodesZname 22 Returns the name o( the opened mode
Kescription
string mcrypt>enc>get>modes>name > resource td ?
,his (unction returns the name o( the mode;
E'emplo !. mcrypt>enc>get>modes>name./ e+ample
<?php
$td > mcrypt%module%open 3"R'P*%R,&*%C5G, MM, "R'P*%"?LE%RSZ, MM9;
echo mcrypt%enc%Eet%modes%name3$td9. "Vn";

$td > mcrypt%module%open 3McastFC5GM, MM, MecbM, MM9;
echo mcrypt%enc%Eet%modes%name3$td9. "Vn";
?>
PrintsC
RSZ
ERZ
mcrypt>enc>get>supported>Bey>si6es
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZencZgetZsupportedZ"eyZsizes 22 Returns an array Eith the supported "eysizes o( the opened
algorithm
Kescription
array mcrypt>enc>get>supported>Bey>si6es > resource td ?
Returns an array Eith the "ey sizes supported #y the algorithm speci(ied #y the encryption
descriptor; .( it returns an empty array then all "ey sizes #etEeen 1 and mcrypt>enc>get>Bey>si6e./
are supported #y the algorithm;
E'emplo !. mcrypt>enc>get>supported>Bey>si6es./ e+ample
<?php
$td > mcrypt%module%open3MrijndaelFC5GM, MM, MecbM, MM9;
=ar%dump3mcrypt%enc%Eet%supported%Iey%si0es3$td99;
?>
,his Eill printC
array3<9 :
)2/>>
int36G9
)6/>>
int3C19
)C/>>
int3<C9
;
mcrypt>enc>is>blocB>algorithm>mode
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZencZisZ#loc"ZalgorithmZmode 22 5hec"s Ehether the encryption o( the opened mode Eor"s
on #loc"s
Kescription
#ool mcrypt>enc>is>blocB>algorithm>mode > resource td ?
,his (unction returns TRUE i( the mode is (or use Eith #loc" algorithmsA otherEise it returns
FALSE; >e;g; FALSE (or streamA and TRUE (or c#cA c(#A o(#?;
mcrypt>enc>is>blocB>algorithm
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZencZisZ#loc"Zalgorithm 22 5hec"s Ehether the algorithm o( the opened mode is a #loc"
algorithm
Kescription
#ool mcrypt>enc>is>blocB>algorithm > resource td ?
,his (unction returns TRUE i( the algorithm is a #loc" algorithmA or FALSE i( it is a stream
algorithm;
mcrypt>enc>is>blocB>mode
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZencZisZ#loc"Zmode 22 5hec"s Ehether the opened mode outputs #loc"s
Kescription
#ool mcrypt>enc>is>blocB>mode > resource td ?
,his (unction returns TRUE i( the mode outputs #loc"s o( #ytes or FALSE i( it outputs #ytes; >e;g;
TRUE (or c#c and ec#A and FALSE (or c(# and stream?;
mcrypt>enc>self>test
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZencZsel(Ztest 22 ,his (unction runs a sel( test on the opened module
Kescription
#ool mcrypt>enc>self>test > resource td ?
,his (unction runs the sel( test on the algorithm speci(ied #y the descriptor t#; .( the sel( test
succeeds it returns FALSE; .n case o( an errorA it returns TRUE;
mcrypt>encrypt
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZencrypt 22 +ncrypts plainteFt Eith given parameters
Kescription
string mcrypt>encrypt > string cipherA string "eyA string dataA string mode PA string ivQ ?
mcrypt>encrypt./ encrypts the data and returns the encrypted data;
C6pher is one o( the M5R%P,Zciphername constants o( the name o( the algorithm as string;
2e? is the "ey Eith Ehich the data Eill #e encrypted; .( itHs smaller that the re/uired "eysizeA it is
padded Eith HQ0H; .t is #etter not to use A5.. strings (or "eys; .t is recommended to use the mhash
(unctions to create a "ey (rom a string;
Data is the data that Eill #e encrypted Eith the given cipher and mode; .( the size o( the data is not n
V #loc"sizeA the data Eill #e padded Eith HQ0H; ,he returned cryptteFt can #e larger that the size o( the
data that is given #y #ata;
Mo#e is one o( the M5R%P,ZMOD+Zmodename constants o( one o( =ec#=A =c#c=A =c(#=A =o(#=A
=no(#= or =stream=;
,he 0( parameter is used (or the initialisation in 5B5A 5FBA OFB modesA and in some algorithms in
,R+AM mode; .( you do not supply an .$A Ehile it is needed (or an algorithmA the (unction issues
a Earning and uses an .$ Eith all #ytes set to HQ0H;
E'emplo !. mcrypt>encrypt./ E+ample
<?php
$i=%si0e > mcrypt%Eet%i=%si0e3"R'P*%'4A.L,EO%C5G, "R'P*%"?LE%ERZ9;
$i= > mcrypt%create%i=3$i=%si0e, "R'P*%',.L9;
$Iey > "*his is a =ery secret Iey";
$text > ""eet me at 66 oMclocI behind the monument.";
echo strlen3$text9 . "Vn";
$crypttext > mcrypt%encrypt3"R'P*%'4A.L,EO%C5G, $Iey, $text, "R'P*%"?LE%ERZ, $i=9;
echo strlen3$crypttext9 . "Vn";
?>
,he a#ove eFample Eill print outC
1C
G1
ee also mcrypt>module>open./ (or a more advanced AP. and an eFample;
mcrypt>generic>deinit
>P&P 8 _^ 8;1;1A P&P 4?
mcryptZgenericZdeinit 22 ,his (unction deinitializes an encryption module
Kescription
#ool mcrypt>generic>deinit > resource td ?
,his (unction terminates encryption speci(ied #y the encryption descriptor >t#?; .t clears all #u((ersA
#ut does not close the module; %ou need to call mcrypt>module>close./ yoursel(; >But P&P does
this (or you at the end o( the script;? Returns FALSE on errorA or TRUE on success;
ee (or an eFample mcrypt>module>open./ and the entry on mcrypt>generic>init./;
mcrypt>generic>end
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZgenericZend 22 ,his (unction terminates encryption
Kescription
#ool mcrypt>generic>end > resource td ?
A5iso
,his (unction is deprecatedA use mcrypt>generic>deinit./ instead; .t can cause crashes Ehen used
Eith mcrypt>module>close./ due to multiple #u((er (rees;
,his (unction terminates encryption speci(ied #y the encryption descriptor >t#?; Actually it clears all
#u((ersA and closes all the modules used; Returns FALSE on errorA or TRUE on success;
mcrypt>generic>init
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZgenericZinit 22 ,his (unction initializes all #u((ers needed (or encryption
Kescription
int mcrypt>generic>init > resource tdA string "eyA string iv ?
,he maFimum length o( the "ey should #e the one o#tained #y calling mcrypt>enc>get>Bey>si6e./
and every value smaller than this is legal; ,he .$ should normally have the size o( the algorithms
#loc" sizeA #ut you must o#tain the size #y calling mcrypt>enc>get>i5>si6e./; .$ is ignored in
+5B; .$ M@, eFist in 5FBA 5B5A ,R+AMA nOFB and OFB modes; .t needs to #e random and
uni/ue >#ut not secret?; ,he same .$ must #e used (or encryptionDdecryption; .( you do not Eant to
use it you should set it to zerosA #ut this is not recommended;
,he (unction returns a negative value on errorA 27 Ehen the "ey length Eas incorrectA 28 Ehen there
Eas a memory allocation pro#lem and any other return value is an un"noEn error; .( an error occurs
a Earning Eill #e displayed accordingly; FALSE is returned i( incorrect parameters Eere passed;
%ou need to call this (unction #e(ore every call to mcrypt>generic./ or mdecrypt>generic./;
ee (or an eFample mcrypt>module>open./;
mcrypt>generic
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZgeneric 22 ,his (unction encrypts data
Kescription
string mcrypt>generic > resource tdA string data ?
,his (unction encrypts data; ,he data is padded Eith =Q0= to ma"e sure the length o( the data is n V
#loc"size; ,his (unction returns the encrypted data; Note that the length o( the returned string can in
(act #e longer then the inputA due to the padding o( the data;
.( you Eant to store the encrypted data in a data#ase ma"e sure to store the entire string as returned
#y mcryptZgenericA or the string Eill not entirely decrypt properly; .( your original string is 13
characters long and the #loc" size is M >use mcrypt>enc>get>blocB>si6e./ to determine the
#loc"size?A you Eould need at least 1K characters in your data#ase (ield; Note the string returned #y
mdecrypt>generic./ Eill #e 1K characters as Eell;;;use rtrim./>YstrA =h3=? to remove the padding;
.( you are (or eFample storing the data in a MyOL data#ase remem#er that varchar (ields
automatically have trailing spaces removed during insertion; As encrypted data can end in a space
>A5.. 70?A the data Eill #e damaged #y this removal; tore data in a tiny#lo#DtinyteFt >or larger?
(ield instead;
,he encryption handle should alEays #e initialized Eith mcrypt>generic>init./ Eith a "ey and an
.$ #e(ore calling this (unction; Lhere the encryption is doneA you should (ree the encryption #u((ers
#y calling mcrypt>generic>deinit./; ee mcrypt>module>open./ (or an eFample;
ee also mdecrypt>generic./A mcrypt>generic>init./A and mcrypt>generic>deinit./;
mcrypt>get>blocB>si6e
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
mcryptZgetZ#loc"Zsize 22 O#tiene el tamaWo de #lo/ue del ci(rado indicado
Kescripci"n
int mcrypt>get>blocB>si6e > int cipher ?
mcrypt>get>blocB>si6e./ se usa para o#tener el tamaWo de #lo/ue del ci(rado indicado en c6pher;
mcrypt>get>blocB>si6e./ toma un argumentoA el ci(rado c6pher y devuelve el tamaWo en #ytes;
$er tam#i<nC mcrypt>get>Bey>si6e./
mcrypt>get>cipher>name
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
mcryptZgetZcipherZname 22 O#tiene el nom#re del ci(rado especi(icado
Kescripci"n
string mcrypt>get>cipher>name > int cipher ?
mcrypt>get>cipher>name./ se usa para o#tener el nom#re del ci(rado especi(icado;
mcrypt>get>cipher>name./ toma como argumento el nBmero de ci(rado y devuelve el nom#re del
ci(rado o FALSEA si el ci(rado no eFiste;
E'emplo !. E'emplo de mcrypt>get>cipher>name
<?php
$cipher > "R'P*%*ripleLE&;
print mcrypt%Eet%cipher%name3$cipher9;
?>
+l e'emplo de m*s arri#a da como resultadoC
*ripleLE&
mcrypt>get>i5>si6e
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZgetZivZsize 22 Returns the size o( the .$ #elonging to a speci(ic cipherDmode com#ination
Kescription
int mcrypt>get>i5>si6e > string cipherA string mode ?
mcrypt>get>i5>si6e./ returns the size o( the .nitialisation $ector >.$? in #ytes; On error the
(unction returns FALSE; .( the .$ is ignored in the speci(ied cipherDmode com#ination zero is
returned;
c6pher is one o( the M5R%P,Zciphername constants o( the name o( the algorithm as string;
mo#e is one o( the M5R%P,ZMOD+Zmodename constants or one o( =ec#=A =c#c=A =c(#=A =o(#=A
=no(#= or =stream=; ,he .$ is ignored in +5B mode as this mode does not re/uire it; %ou Eill need
to have the same .$ >thin"C starting point? #oth at encryption and decryption stagesA otherEise your
encryption Eill (ail;
.t is more use(ul to use the mcrypt>enc>get>i5>si6e./ (unction as this uses the resource returned #y
mcrypt>module>open./;
E'emplo !. mcrypt>get>i5>si6e./ e+ample
<?php
echo mcrypt%Eet%i=%si0e3"R'P*%R,&*%C5G, "R'P*%"?LE%RSZ9 . "Vn";
echo mcrypt%Eet%i=%si0e3MdesM, MecbM9 . "Vn";
?>
ee also mcrypt>get>blocB>si6e./A mcrypt>enc>get>i5>si6e./ and mcrypt>create>i5./;
mcrypt>get>Bey>si6e
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
mcryptZgetZ"eyZsize 22 O#tiene el tamaWo de la clave de un ci(rado
Kescripci"n
int mcrypt>get>Bey>si6e > int cipher ?
mcrypt>get>Bey>si6e./ se usa para o#tener el tamaWo de la clave del ci(rado indicado en c6pher;
mcrypt>get>Bey>si6e./ toma un argumentoA el ci(rado c6pher y devuelve el tamaWo de la clave en
#ytes;
$er tam#i<nC mcrypt>get>blocB>si6e./
mcrypt>list>algorithms
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZlistZalgorithms 22 Get an array o( all supported ciphers
Kescription
array mcrypt>list>algorithms > Pstring li#ZdirQ ?
mcrypt>list>algorithms./ is used to get an array o( all supported algorithms in the l61_#6r
parameter;
mcrypt>list>algorithms./ ta"es an optional l61_#6r parameter Ehich speci(ies the directory Ehere
all algorithms are located; .( not speci(iesA the value o( the mcrypt;algorithmsZdir php.ini
directive is used;
E'emplo !. mcrypt>list>algorithms./ E+ample
<?php
$alEorithms > mcrypt%list%alEorithms3"/usr/local/lib/libmcrypt"9;
#oreach 3$alEorithms as $cipher9 :
echo "$cipher<br />Vn";
;
?>
,he a#ove eFample Eill produce a list Eith all supported algorithms in the =DusrDlocalDli#Dli#mcrypt=
directory;
mcrypt>list>modes
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZlistZmodes 22 Get an array o( all supported modes
Kescription
array mcrypt>list>modes > Pstring li#ZdirQ ?
mcrypt>list>modes./ is used to get an array o( all supported modes in the l61_#6r;
mcrypt>list>modes./ ta"es as optional parameter a directory Ehich speci(ies the directory Ehere all
modes are located; .( not speci(iesA the value o( the mcrypt;modesZdir php.ini directive is used;
E'emplo !. mcrypt>list>modes./ E+ample
<?php
$modes > mcrypt%list%modes39;
#oreach 3$modes as $mode9 :
echo "$mode <br />Vn";
;
?>
,he a#ove eFample Eill produce a list Eith all supported algorithms in the de(ault mode directory;
.( it is not set Eith the ini directive mcrypt;modesZdirA the de(ault directory o( mcrypt is used >Ehich
is DusrDlocalDli#Dli#mcrypt?;
mcrypt>module>close
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZmoduleZclose 22 5lose the mcrypt module
Kescription
#ool mcrypt>module>close > resource td ?
,his (unction closes the speci(ied encryption handle;
ee mcrypt>module>open./ (or an eFample;
mcrypt>module>get>algo>blocB>si6e
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZmoduleZgetZalgoZ#loc"Zsize 22 Returns the #loc"size o( the speci(ied algorithm
Kescription
int mcrypt>module>get>algo>blocB>si6e > string algorithm PA string li#ZdirQ ?
,his (unction returns the #loc" size o( the algorithm speci(ied in #ytes; ,he optional l61_#6r
parameter can contain the location Ehere the mode module is on the system;
mcrypt>module>get>algo>Bey>si6e
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZmoduleZgetZalgoZ"eyZsize 22 Returns the maFimum supported "eysize o( the opened mode
Kescription
int mcrypt>module>get>algo>Bey>si6e > string algorithm PA string li#ZdirQ ?
,his (unction returns the maFimum supported "ey size o( the algorithm speci(ied in #ytes; ,he
optional l61_#6r parameter can contain the location Ehere the mode module is on the system;
mcrypt>module>get>supported>Bey>si6es
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZmoduleZgetZsupportedZ"eyZsizes 22 Returns an array Eith the supported "eysizes o( the
opened algorithm
Kescription
array mcrypt>module>get>supported>Bey>si6es > string algorithm PA string li#ZdirQ ?
Returns an array Eith the "ey sizes supported #y the speci(ied algorithm; .( it returns an empty array
then all "ey sizes #etEeen 1 and mcrypt>module>get>algo>Bey>si6e./ are supported #y the
algorithm; ,he optional l61_#6r parameter can contain the location Ehere the mode module is on the
system;
ee also mcrypt>enc>get>supported>Bey>si6es./ Ehich is used on open encryption modules;
mcrypt>module>is>blocB>algorithm>mode
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZmoduleZisZ#loc"ZalgorithmZmode 22 Returns i( the speci(ied module is a #loc" algorithm
or not
Kescription
#ool mcrypt>module>is>blocB>algorithm>mode > string mode PA string li#ZdirQ ?
,his (unction returns TRUE i( the mode is (or use Eith #loc" algorithmsA otherEise it returns
FALSE; >e;g; FALSE (or streamA and TRUE (or c#cA c(#A o(#?; ,he optional l61_#6r parameter can
contain the location Ehere the mode module is on the system;
mcrypt>module>is>blocB>algorithm
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZmoduleZisZ#loc"Zalgorithm 22 ,his (unction chec"s Ehether the speci(ied algorithm is a
#loc" algorithm
Kescription
#ool mcrypt>module>is>blocB>algorithm > string algorithm PA string li#ZdirQ ?
,his (unction returns TRUE i( the speci(ied algorithm is a #loc" algorithmA or FALSE is it is a
stream algorithm; ,he optional l61_#6r parameter can contain the location Ehere the algorithm
module is on the system;
mcrypt>module>is>blocB>mode
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZmoduleZisZ#loc"Zmode 22 Returns i( the speci(ied mode outputs #loc"s or not
Kescription
#ool mcrypt>module>is>blocB>mode > string mode PA string li#ZdirQ ?
,his (unction returns TRUE i( the mode outputs #loc"s o( #ytes or FALSE i( it outputs 'ust #ytes;
>e;g; TRUE (or c#c and ec#A and FALSE (or c(# and stream?; ,he optional l61_#6r parameter can
contain the location Ehere the mode module is on the system;
mcrypt>module>open
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZmoduleZopen 22 Opens the module o( the algorithm and the mode to #e used
Kescription
resource mcrypt>module>open > string algorithmA string algorithmZdirectoryA string modeA string
modeZdirectory ?
,his (unction opens the module o( the algorithm and the mode to #e used; ,he name o( the
algorithm is speci(ied in algorithmA e;g; =tEo(ish= or is one o( the M5R%P,Zciphername constants;
,he module is closed #y calling mcrypt>module>close./; Normally it returns an encryption
descriptorA or FALSE on error;
,he alEor6thm_#6rector? and mo#e_#6rector? are used to locate the encryption modules; Lhen you
supply a directory nameA it is used; Lhen you set one o( these to the empty string >==?A the value set
#y the mcr?pt.alEor6thms_#6r or mcr?pt.mo#es_#6r ini2directive is used; Lhen these are not setA the
de(ault directories that are used are the ones that Eere compiled in into li#mcrypt >usually D
usrDlocalDli#Dli#mcrypt?;
E'emplo !. mcrypt>module>open./ e+amples
<?php
$td > mcrypt%module%open3"R'P*%LE&, MM,
"R'P*%"?LE%ERZ, M/usr/lib/mcryptFmodesM9;
$td > mcrypt%module%open3MrijndaelFC5GM, MM, Mo#bM, MM9;
?>
,he (irst line in the eFample a#ove Eill try to open the D+ cipher (rom the de(ault directory and
the +B5 mode (rom the directory /usr/lib/mcryptFmodes; ,he second eFample uses strings
as name (or the cipher and modeA this only Eor"s Ehen the eFtension is lin"ed against li#mcrypt
0;8;F or 0;4;F;
E'emplo *. )sing mcrypt>module>open./ in encryption
<?php
/W ?pen the cipher W/
$td > mcrypt%module%open3MrijndaelFC5GM, MM, Mo#bM, MM9;
/W Rreate the 4( and determine the Ieysi0e lenEth, used "R'P*%',.L
W on 7indo8s instead W/
$i= > mcrypt%create%i=3mcrypt%enc%Eet%i=%si0e3$td9, "R'P*%LE(%',.L?"9;
$Is > mcrypt%enc%Eet%Iey%si0e3$td9;
/W Rreate Iey W/
$Iey > substr3md53M=ery secret IeyM9, 2, $Is9;
/W 4ntiali0e encryption W/
mcrypt%Eeneric%init3$td, $Iey, $i=9;
/W Encrypt data W/
$encrypted > mcrypt%Eeneric3$td, M*his is =ery important dataM9;
/W *erminate encryption handler W/
mcrypt%Eeneric%deinit3$td9;
/W 4nitiali0e encryption module #or decryption W/
mcrypt%Eeneric%init3$td, $Iey, $i=9;
/W Lecrypt encrypted strinE W/
$decrypted > mdecrypt%Eeneric3$td, $encrypted9;
/W *erminate decryption handle and close module W/
mcrypt%Eeneric%deinit3$td9;
mcrypt%module%close3$td9;
/W &ho8 strinE W/
echo trim3$decrypted9 . "Vn";
?>
,he (irst line in the eFample a#ove Eill try to open the D+ cipher (rom the de(ault directory and
the +B5 mode (rom the directory /usr/lib/mcryptFmodes; ,he second eFample uses strings
as name (or the cipher and modeA this only Eor"s Ehen the eFtension is lin"ed against li#mcrypt
0;8;F or 0;4;F;
ee also mcrypt>module>close./A mcrypt>generic./A mdecrypt>generic./A mcrypt>generic>init
./A and mcrypt>generic>deinit./;
mcrypt>module>self>test
>P&P 8 _^ 8;3;0A P&P 4?
mcryptZmoduleZsel(Ztest 22 ,his (unction runs a sel( test on the speci(ied module
Kescription
#ool mcrypt>module>self>test > string algorithm PA string li#ZdirQ ?
,his (unction runs the sel( test on the algorithm speci(ied; ,he optional l61_#6r parameter can
contain the location o( Ehere the algorithm module is on the system;
,he (unction returns TRUE i( the sel( test succeedsA or FALSE Ehen i( (ails;
E'emplo !. mcrypt>module>self>test./ e+ample
<?php
=ar%dump3mcrypt%module%sel#%test3"R'P*%'4A.L,EO%6CJ99 . "Vn";
=ar%dump3mcrypt%module%sel#%test3"R'P*%Z?-+&%RPHE'99;
?>
,he a#ove eFample Eill outputC
bool3true9
bool3#alse9
mcrypt>ofb
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
mcryptZo(# 22 +ncriptaDdesencripta datos en modo OFB
Kescripci"n
int mcrypt>ofb > int cipherA string "eyA string dataA int modeA string iv ?
mcrypt>ofb./ encripta o desencripta >dependiendo de mo#e? los datos #ata con el ci(rado c6pher y
la clave >e? en el modo de ci(rado OFB y devuelve la cadena resultante;
+l par*metro c6pher es una de las constantes con nom#re M5R%P,Znom#reci(rado;
>e? es la clave suministrada al algoritmo; De#e guardarse en secreto;
#ata son los datos /ue ser*n encriptadosDdesencriptados;
mo#e es M5R%P,Z+N5R%P, o M5R%P,ZD+5R%P,;
6 es el vector de inicializaci-n;
$er tam#i<nC mcrypt>cbc./A mcrypt>cfb./A mcrypt>ecb./
mdecrypt>generic
>P&P 8 _^ 8;3;0A P&P 4?
mdecryptZgeneric 22 Decrypt data
Kescription
string mdecrypt>generic > resource tdA string data ?
,his (unction decrypts data; Note that the length o( the returned string can in (act #e longer then the
unencrypted stringA due to the padding o( the data;
E'emplo !. mdecrypt>generic./ e+ample
<?php
/W Lata W/
$Iey > Mthis is a =ery lonE Iey, e=en too lonE #or the cipherM;
$plain%text > M=ery important dataM;

/W ?pen module, and create 4( W/
$td > mcrypt%module%open3MdesM, MM, MecbM, MM9;
$Iey > substr3$Iey, 2, mcrypt%enc%Eet%Iey%si0e3$td99;
$i=%si0e > mcrypt%enc%Eet%i=%si0e3$td9;
$i= > mcrypt%create%i=3$i=%si0e, "R'P*%',.L9;
/W 4nitiali0e encryption handle W/
i# 3mcrypt%Eeneric%init3$td, $Iey, $i=9 !> F69 :
/W Encrypt data W/
$c%t > mcrypt%Eeneric3$td, $plain%text9;
mcrypt%Eeneric%deinit3$td9;
/W 'einitiali0e bu##ers #or decryption W/
mcrypt%Eeneric%init3$td, $Iey, $i=9;
$p%t > mdecrypt%Eeneric3$td, $c%t9;
/W Rlean up W/
mcrypt%Eeneric%deinit3$td9;
mcrypt%module%close3$td9;
;
i# 3strncmp3$p%t, $plain%text, strlen3$plain%text99 >> 29 :
echo "oIVn";
; else :
echo "errorVn";
;
?>
,he a#ove eFample shoEs hoE to chec" i( the data #e(ore the encryption is the same as the data
a(ter the decryption; .t is very important to reinitialize the encryption #u((er Eith
mcrypt>generic>init./ #e(ore you try to decrypt the data;
,he decryption handle should alEays #e initialized Eith mcrypt>generic>init./ Eith a "ey and an
.$ #e(ore calling this (unction; Lhere the encryption is doneA you should (ree the encryption #u((ers
#y calling mcrypt>generic>deinit./; ee mcrypt>module>open./ (or an eFample;
ee also mcrypt>generic./A mcrypt>generic>init./A and mcrypt>generic>deinit./;
:ICIII. MCCE Payment ;unctions
Introducci"n
,hese (unctions inter(ace the M5$+ AP. >li#mcve?A alloEing you to Eor" directly Eith M5$+
(rom your P&P scripts; M5$+ is Main treet o(tEor"sH solution to direct credit card processing (or
LinuF D @niF > httpCDDEEE;mainstreetso(tEor"s;comD ?; .t lets you directly address the credit card
clearing houses via your VniF #oFA modem andDor internet connection >#ypassing the need (or an
additional service such as Authorize;Net or Pay FloE Pro?; @sing the M5$+ module (or P&PA you
can process credit cards directly through M5$+ via your P&P scripts; ,he (olloEing re(erences Eill
outline the process;
Nota- M5$+ is the replacement (or Red&atHs 55$; ,hey contracted Eith Red&at in
late 0331 to migrate all eFisting clientele to the M5$+ plat(orm;
Nota- +sta eFtensi-n no est* disponi#le en plata(ormas LindoEs
Instalaci"n
,o ena#le M5$+ upport in P&PA (irst veri(y your Li#M5$+ installation directory; %ou Eill then
need to con(igure P&P Eith the ==76th=mce option; .( you use this option Eithout speci(ying the
path to your M5$+ installationA P&P Eill attempt to loo" in the de(ault Li#M5$+ .nstall location
>/usr/local?; .( M5$+ is in a non2standard locationA run con(igure EithC ==76th=
mce:'mce_pathA Ehere YmcveZpath is the path to your M5$+ installation; Please note that
M5$+ support re/uires that YmcveZpathDli# and YmcveZpathDinclude eFistA and include mc=e.h
under the include directory and libmc=e.so andDor libmc=e.a under the li# directory;
ince M5$+ has true serverDclient separationA there are no additional re/uirements (or running P&P
Eith M5$+ support; ,o test your M5$+ eFtension in P&PA you may connect to test#oF;mcve;com
on port M777 (or .PA or port M888 (or L using the M5$+ P&P AP.; @se HvitaleH (or your usernameA
and HtestH (or your passEord; Additional in(ormation a#out test (acilities are availa#le at
httpCDDEEE;mainstreetso(tEor"s;comD;
Cer tambi%n
Additional documentation a#out M5$+Hs P&P AP. can #e (ound at
httpCDDEEE;mainstreetso(tEor"s;comDdocsDphpapi;pd(; Main treetHs documentation is complete and
should #e the primary re(erence (or (unctions;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
MC_TRANTYPE >integer?
MC_USERNAME >integer?
MC_PASS"ORD >integer?
MC_ACCOUNT >integer?
MC_TRAC&DATA >integer?
MC_E%PDATE >integer?
MC_STREET >integer?
MC_/IP >integer?
MC_C$ >integer?
MC_COMMENTS >integer?
MC_CLER&ID >integer?
MC_STATIONID >integer?
MC_APPRCODE >integer?
MC_AMOUNT >integer?
MC_PTRANNUM >integer?
MC_TTID >integer?
MC_USER >integer?
MC_P"D >integer?
MC_ACCT >integer?
MC_(DATE >integer?
MC_EDATE >integer?
MC_(ATCH >integer?
MC_FILE >integer?
MC_ADMIN >integer?
MC_AUDITTYPE >integer?
MC_CUSTOM >integer?
MC_E%AMOUNT >integer?
MC_E%CHAR#ES >integer?
MC_RATE >integer?
MC_RENTERNAME >integer?
MC_RETURNCITY >integer?
MC_RETURNSTATE >integer?
MC_RETURNLOCATION >integer?
MC_PRIORITY >integer?
MC_IN.UIRY >integer?
MC_CARDTYPES >integer?
MC_SU( >integer?
MC_MAR&ER >integer?
MC_DE$ICETYPE >integer?
MC_ERRORCODE >integer?
MC_NE"(ATCH >integer?
MC_CURR >integer?
MC_DESCMERCH >integer?
MC_DESCLOC >integer?
MC_ORI#TYPE >integer?
MC_PIN >integer?
MC_$OIDORI#TYPE >integer?
MC_TIMESTAMP >integer?
MC_PRIO_HI#H >integer?
MC_PRIO_NORMAL >integer?
MC_PRIO_LO" >integer?
MC_USER_PROC >integer?
MC_USER_USER >integer?
MC_USER_P"D >integer?
MC_USER_INDCODE >integer?
MC_USER_MERCHID >integer?
MC_USER_(AN&ID >integer?
MC_USER_TERMID >integer?
MC_USER_CLIENTNUM >integer?
MC_USER_STOREID >integer?
MC_USER_A#ENTID >integer?
MC_USER_CHAINID >integer?
MC_USER_/IPCODE >integer?
MC_USER_TIME/ONE >integer?
MC_USER_MERCHCAT >integer?
MC_USER_MERNAME >integer?
MC_USER_MERCHLOC >integer?
MC_USER_STATECODE >integer?
MC_USER_PHONE >integer?
MC_USER_SU( >integer?
MC_USER_CARDTYPES >integer?
MC_USER_MODE >integer?
MC_USER_$NUM(ER >integer?
MC_USER_ROUTIN#ID >integer?
MC_USER_PPROPERTY >integer?
MC_USER_PID >integer?
MC_USER_PIDP"D >integer?
MC_USER_SMID >integer?
MC_USER_SMIDP"D >integer?
MC_USER_USDDI$ >integer?
MC_USER_AUDDI$ >integer?
MC_USER_D&&DI$ >integer?
MC_USER_#(PDI$ >integer?
MC_USER_H&DDI$ >integer?
MC_USER_'PYDI$ >integer?
MC_USER_N/DDI$ >integer?
MC_USER_NO&DI$ >integer?
MC_USER_S#DDI$ >integer?
MC_USER_/ARDI$ >integer?
MC_USER_SE&DI$ >integer?
MC_USER_CHFDI$ >integer?
MC_USER_CADDI$ >integer?
MC_USER_DI$NUM >integer?
MC_CARD_$ISA >integer?
MC_CARD_MC >integer?
MC_CARD_AME% >integer?
MC_CARD_DISC >integer?
MC_CARD_'C( >integer?
MC_CARD_C( >integer?
MC_CARD_DC >integer?
MC_CARD_#IFT >integer?
MC_CARD_OTHER >integer?
MC_CARD_ALL >integer?
MC_MODE_AUTH >integer?
MC_MODE_SETTLE >integer?
MC_MODE_(OTH >integer?
MC_MODE_ALL >integer?
MC_E%CHAR#ES_REST >integer?
MC_E%CHAR#ES_#IFT >integer?
MC_E%CHAR#ES_MINI >integer?
MC_E%CHAR#ES_TELE >integer?
MC_E%CHAR#ES_OTHER >integer?
MC_E%CHAR#ES_LAUND >integer?
MC_E%CHAR#ES_NONE >integer?
MC_E%CHAR#ES_#AS >integer?
MC_E%CHAR#ES_MILE >integer?
MC_E%CHAR#ES_LATE >integer?
MC_E%CHAR#ES_)"AY >integer?
MC_E%CHAR#ES_$IOL >integer?
MC_TRAN_SALE >integer?
MC_TRAN_REDEMPTION >integer?
MC_TRAN_PREAUTH >integer?
MC_TRAN_$OID >integer?
MC_TRAN_PREAUTHCOMPLETE >integer?
MC_TRAN_FORCE >integer?
MC_TRAN_O$ERRIDE >integer?
MC_TRAN_RETURN >integer?
MC_TRAN_RELOAD >integer?
MC_TRAN_CREDIT >integer?
MC_TRAN_SETTLE >integer?
MC_TRAN_INCREMENTAL >integer?
MC_TRAN_RE$ERSAL >integer?
MC_TRAN_ACTI$ATE >integer?
MC_TRAN_(ALANCEIN. >integer?
MC_TRAN_CASHOUT >integer?
MC_TRAN_TORE$ERSAL >integer?
MC_TRAN_SETTLERFR >integer?
MC_TRAN_ISSUE >integer?
MC_TRAN_TIP >integer?
MC_TRAN_MERCHRETURN >integer?
MC_TRAN_I$RRE. >integer?
MC_TRAN_I$RRESP >integer?
MC_TRAN_ADMIN >integer?
MC_TRAN_PIN# >integer?
MC_TRAN_CH&P"D >integer?
MC_TRAN_CHN#P"D >integer?
MC_TRAN_LISTSTATS >integer?
MC_TRAN_LISTUSERS >integer?
MC_TRAN_#ETUSERINFO >integer?
MC_TRAN_ADDUSER >integer?
MC_TRAN_EDITUSER >integer?
MC_TRAN_DELUSER >integer?
MC_TRAN_ENA(LEUSER >integer?
MC_TRAN_DISA(LEUSER >integer?
MC_TRAN_IMPORT >integer?
MC_TRAN_E%PORT >integer?
MC_TRAN_ERRORLO# >integer?
MC_TRAN_CLEARERRORLO# >integer?
MC_TRAN_#ETSU(ACCTS >integer?
MC_ADMIN_#UT >integer?
MC_ADMIN_#L >integer?
MC_ADMIN_#FT >integer?
MC_ADMIN_(T >integer?
MC_ADMIN_U( >integer?
MC_ADMIN_.C >integer?
MC_ADMIN_RS >integer?
MC_ADMIN_CTH >integer?
MC_ADMIN_CFH >integer?
MC_ADMIN_FORCESETTLE >integer?
MC_ADMIN_SET(ATCHNUM >integer?
MC_ADMIN_RENUM(ER(ATCH >integer?
MC_ADMIN_FIELDEDIT >integer?
MC_ADMIN_CLOSE(ATCH >integer?
MC$E_UNUSED >integer?
MC$E_NE" >integer?
MC$E_PENDIN# >integer?
MC$E_DONE >integer?
MC$E_#OOD >integer?
MC$E_(AD >integer?
MC$E_STREET >integer?
MC$E_/IP >integer?
MC$E_UN&NO"N >integer?
MC$E_ERROR >integer?
MC$E_FAIL >integer?
MC$E_SUCCESS >integer?
MC$E_AUTH >integer?
MC$E_DENY >integer?
MC$E_CALL >integer?
MC$E_DUPL >integer?
MC$E_P&UP >integer?
MC$E_RETRY >integer?
MC$E_SETUP >integer?
MC$E_TIMEOUT >integer?
MC$E_SALE >integer?
MC$E_PREAUTH >integer?
MC$E_FORCE >integer?
MC$E_O$ERRIDE >integer?
MC$E_RETURN >integer?
MC$E_SETTLE >integer?
MC$E_PROC >integer?
MC$E_USER >integer?
MC$E_P"D >integer?
MC$E_INDCODE >integer?
MC$E_MERCHID >integer?
MC$E_(AN&ID >integer?
MC$E_TERMID >integer?
MC$E_CLIENTNUM >integer?
MC$E_STOREID >integer?
MC$E_A#ENTID >integer?
MC$E_CHAINID >integer?
MC$E_/IPCODE >integer?
MC$E_TIME/ONE >integer?
MC$E_MERCHCAT >integer?
MC$E_MERNAME >integer?
MC$E_MERCHLOC >integer?
MC$E_STATECODE >integer?
MC$E_SER$ICEPHONE >integer?
Tabla de contenidos
mcveZadduser 22 Add an M5$+ user using usersetup structure
mcveZadduserarg 22 Add a value to user con(iguration structure
mcveZ#t 22 Get unsettled #atch totals
mcveZchec"status 22 5hec" to see i( a transaction has completed
mcveZch"pEd 22 $eri(y PassEord
mcveZchngpEd 22 5hange the system administratorHs passEord
mcveZcompleteauthorizations 22 Num#er o( complete authorizations in /ueueA returning an array o(
their identi(iers
mcveZconnect 22 +sta#lish the connection to M5$+
mcveZconnectionerror 22 Get a teFtual representation o( Ehy a connection (ailed
mcveZdeleteresponse 22 Delete speci(ied transaction (rom M5$+Z5ONN structure
mcveZdeletetrans 22 Delete speci(ied transaction (rom M5$+Z5ONN structure
mcveZdeleteusersetup 22 Deallocate data associated Eith usersetup structure
mcveZdeluser 22 Delete an M5$+ user account
mcveZdestroyconn 22 Destroy the connection and M5$+Z5ONN structure
mcveZdestroyengine 22 Free memory associated Eith .PDL connectivity
mcveZdisa#leuser 22 Disa#le an active M5$+ user account
mcveZedituser 22 +dit M5$+ user using usersetup structure
mcveZena#leuser 22 +na#le an inactive M5$+ user account
mcveZ(orce 22 end a FOR5+ to M5$+ >typicallyA a phone2authorization?
mcveZgetcell 22 Get a speci(ic cell (rom a comma delimited response #y column name
mcveZgetcell#ynum 22 Get a speci(ic cell (rom a comma delimited response #y column num#er
mcveZgetcommadelimited 22 Get the RAL comma delimited data returned (rom M5$+
mcveZgetheader 22 Get the name o( the column in a comma2delimited response
mcveZgetuserarg 22 Gra# a value (rom usersetup structure
mcveZgetuserparam 22 Get a user response parameter
mcveZg(t 22 Audit M5$+ (or Failed transactions
mcveZgl 22 Audit M5$+ (or settled transactions
mcveZgut 22 Audit M5$+ (or @nsettled ,ransactions
mcveZinitconn 22 5reate and initialize an M5$+Z5ONN structure
mcveZinitengine 22 Ready the client (or .PDL 5ommunication
mcveZinitusersetup 22 .nitialize structure to store user data
mcveZiscommadelimited 22 5hec"s to see i( response is comma delimited
mcveZliststats 22 List statistics (or all users on M5$+ system
mcveZlistusers 22 List all users on M5$+ system
mcveZmaFconntimeout 22 ,he maFimum amount o( time the AP. Eill attempt a connection to
M5$+
mcveZmonitor 22 Per(orm communication Eith M5$+ >sendDreceive data? Non2#loc"ing
mcveZnumcolumns 22 Num#er o( columns returned in a comma delimited response
mcveZnumroEs 22 Num#er o( roEs returned in a comma delimited response
mcveZoverride 22 end an O$+RR.D+ to M5$+
mcveZparsecommadelimited 22 Parse the comma delimited response so mcveZgetcellA etc Eill Eor"
mcveZping 22 end a ping re/uest to M5$+
mcveZpreauth 22 end a PR+A@,&OR.IA,.ON to M5$+
mcveZpreauthcompletion 22 5omplete a PR+A@,&OR.IA,.ONA ready it (or settlement
mcveZ/c 22 Audit M5$+ (or a list o( transactions in the outgoing /ueue
mcveZresponseparam 22 Get a custom response parameter
mcveZreturn 22 .ssue a R+,@RN or 5R+D., to M5$+
mcveZreturncode 22 Gra# the eFact return code (rom the transaction
mcveZreturnstatus 22 5hec" to see i( the transaction Eas success(ul
mcveZsale 22 end a AL+ to M5$+
mcveZset#loc"ing 22 et #loc"ingDnon2#loc"ing mode (or connection
mcveZsetdrop(ile 22 et the connection method to Drop2File
mcveZsetip 22 et the connection method to .P
mcveZsetsslZ(iles 22 et certi(icate "ey (iles and certi(icates i( server re/uires client certi(icate
veri(ication
mcveZsetssl 22 et the connection method to L
mcveZsettimeout 22 et maFimum transaction time >per trans?
mcveZsettle 22 .ssue a settlement command to do a #atch deposit
mcveZteFtZavs 22 Get a teFtual representation o( the returnZavs
mcveZteFtZcode 22 Get a teFtual representation o( the returnZcode
mcveZteFtZcv 22 Get a teFtual representation o( the returnZcv
mcveZtransactionauth 22 Get the authorization num#er returned (or the transaction >alpha2numeric?
mcveZtransactionavs 22 Get the Address $eri(ication return status
mcveZtransaction#atch 22 Get the #atch num#er associated Eith the transaction
mcveZtransactioncv 22 Get the 5$50D5$$0D5.D return status
mcveZtransactionid 22 Get the uni/ue system id (or the transaction
mcveZtransactionitem 22 Get the .,+M num#er in the associated #atch (or this transaction
mcveZtransactionssent 22 5hec" to see i( outgoing #u((er is clear
mcveZtransactionteFt 22 Get ver#iage >teFt? return (rom M5$+ or processing institution
mcveZtransin/ueue 22 Num#er o( transactions in client2/ueue
mcveZtransneE 22 tart a neE transaction
mcveZtransparam 22 Add a parameter to a transaction
mcveZtranssend 22 Finalize and send the transaction
mcveZu# 22 Get a list o( all @nsettled #atches
mcveZuEait 22 Lait F microsecs
mcveZveri(yconnection 22 et Ehether or not to P.NG upon connect to veri(y connection
mcveZveri(ysslcert 22 et Ehether or not to veri(y the server ssl certi(icate
mcveZvoid 22 $O.D a transaction in the settlement /ueue
mc5e>adduser
>P&P 8 _^ 8;0;3A P&P 4?
mcveZadduser 22 Add an M5$+ user using usersetup structure
Kescription
int mc5e>adduser > resource connA string adminZpassEordA int usersetup ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>adduserarg
>P&P 8 _^ 8;0;3A P&P 4?
mcveZadduserarg 22 Add a value to user con(iguration structure
Kescription
int mc5e>adduserarg > resource usersetupA int argtypeA string argval ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>bt
>P&P 8 _^ 8;0;3A P&P 4?
mcveZ#t 22 Get unsettled #atch totals
Kescription
int mc5e>bt > resource connA string usernameA string passEord ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>checBstatus
>P&P 8 _^ 8;0;3A P&P 4?
mcveZchec"status 22 5hec" to see i( a transaction has completed
Kescription
int mc5e>checBstatus > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>chBp3d
>P&P 8 _^ 8;0;3A P&P 4?
mcveZch"pEd 22 $eri(y PassEord
Kescription
int mc5e>chBp3d > resource connA string usernameA string passEord ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>chngp3d
>P&P 8 _^ 8;0;3A P&P 4?
mcveZchngpEd 22 5hange the system administratorHs passEord
Kescription
int mc5e>chngp3d > resource connA string adminZpassEordA string neEZpassEord ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>completeauthori6ations
>P&P 8 _^ 8;0;3A P&P 4?
mcveZcompleteauthorizations 22 Num#er o( complete authorizations in /ueueA returning an array o(
their identi(iers
Kescription
int mc5e>completeauthori6ations > resource connA int iarray ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>connect
>P&P 8 _^ 8;0;3A P&P 4?
mcveZconnect 22 +sta#lish the connection to M5$+
Kescription
int mc5e>connect > resource conn ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>connectionerror
>P&P 8 _^ 8;7;3A P&P 4?
mcveZconnectionerror 22 Get a teFtual representation o( Ehy a connection (ailed
Kescription
string mc5e>connectionerror > resource conn ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>deleteresponse
>P&P 8 _^ 8;0;3A P&P 4?
mcveZdeleteresponse 22 Delete speci(ied transaction (rom M5$+Z5ONN structure
Kescription
#ool mc5e>deleteresponse > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>deletetrans
>P&P 8 _^ 8;7;3A P&P 4?
mcveZdeletetrans 22 Delete speci(ied transaction (rom M5$+Z5ONN structure
Kescription
#ool mc5e>deletetrans > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>deleteusersetup
>P&P 8 _^ 8;0;3A P&P 4?
mcveZdeleteusersetup 22 Deallocate data associated Eith usersetup structure
Kescription
void mc5e>deleteusersetup > resource usersetup ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>deluser
>P&P 8 _^ 8;0;3A P&P 4?
mcveZdeluser 22 Delete an M5$+ user account
Kescription
int mc5e>deluser > resource connA string adminZpassEordA string username ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>destroyconn
>P&P 8 _^ 8;0;3A P&P 4?
mcveZdestroyconn 22 Destroy the connection and M5$+Z5ONN structure
Kescription
void mc5e>destroyconn > resource conn ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>destroyengine
>P&P 8 _^ 8;0;3A P&P 4?
mcveZdestroyengine 22 Free memory associated Eith .PDL connectivity
Kescription
void mc5e>destroyengine > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>disableuser
>P&P 8 _^ 8;0;3A P&P 4?
mcveZdisa#leuser 22 Disa#le an active M5$+ user account
Kescription
int mc5e>disableuser > resource connA string adminZpassEordA string username ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>edituser
>P&P 8 _^ 8;0;3A P&P 4?
mcveZedituser 22 +dit M5$+ user using usersetup structure
Kescription
int mc5e>edituser > resource connA string adminZpassEordA int usersetup ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>enableuser
>P&P 8 _^ 8;0;3A P&P 4?
mcveZena#leuser 22 +na#le an inactive M5$+ user account
Kescription
int mc5e>enableuser > resource connA string adminZpassEordA string username ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>force
>P&P 8 _^ 8;0;3A P&P 4?
mcveZ(orce 22 end a FOR5+ to M5$+ >typicallyA a phone2authorization?
Kescription
int mc5e>force > resource connA string usernameA string passEordA string trac"dataA string accountA
string eFpdateA (loat amountA string authcodeA string commentsA string cler"idA string stationidA int
ptrannum ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>getcell
>P&P 8 _^ 8;0;3A P&P 4?
mcveZgetcell 22 Get a speci(ic cell (rom a comma delimited response #y column name
Kescription
string mc5e>getcell > resource connA int identi(ierA string columnA int roE ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>getcellbynum
>P&P 8 _^ 8;0;3A P&P 4?
mcveZgetcell#ynum 22 Get a speci(ic cell (rom a comma delimited response #y column num#er
Kescription
string mc5e>getcellbynum > resource connA int identi(ierA int columnA int roE ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>getcommadelimited
>P&P 8 _^ 8;0;3A P&P 4?
mcveZgetcommadelimited 22 Get the RAL comma delimited data returned (rom M5$+
Kescription
string mc5e>getcommadelimited > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>getheader
>P&P 8 _^ 8;0;3A P&P 4?
mcveZgetheader 22 Get the name o( the column in a comma2delimited response
Kescription
string mc5e>getheader > resource connA int identi(ierA int columnZnum ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>getuserarg
>P&P 8 _^ 8;0;3A P&P 4?
mcveZgetuserarg 22 Gra# a value (rom usersetup structure
Kescription
string mc5e>getuserarg > resource usersetupA int argtype ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>getuserparam
>P&P 8 _^ 8;7;3A P&P 4?
mcveZgetuserparam 22 Get a user response parameter
Kescription
string mc5e>getuserparam > resource connA int identi(ierA int "ey ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>gft
>P&P 8 _^ 8;0;3A P&P 4?
mcveZg(t 22 Audit M5$+ (or Failed transactions
Kescription
int mc5e>gft > resource connA string usernameA string passEordA int typeA string accountA string
cler"idA string stationidA string commentsA int ptrannumA string startdateA string enddate ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>gl
>P&P 8 _^ 8;0;3A P&P 4?
mcveZgl 22 Audit M5$+ (or settled transactions
Kescription
int mc5e>gl > int connA string usernameA string passEordA int typeA string accountA string #atchA string
cler"idA string stationidA string commentsA int ptrannumA string startdateA string enddate ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>gut
>P&P 8 _^ 8;0;3A P&P 4?
mcveZgut 22 Audit M5$+ (or @nsettled ,ransactions
Kescription
int mc5e>gut > resource connA string usernameA string passEordA int typeA string accountA string
cler"idA string stationidA string commentsA int ptrannumA string startdateA string enddate ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>initconn
>P&P 8 _^ 8;0;3A P&P 4?
mcveZinitconn 22 5reate and initialize an M5$+Z5ONN structure
Kescription
resource mc5e>initconn > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>initengine
>P&P 8 _^ 8;0;3A P&P 4?
mcveZinitengine 22 Ready the client (or .PDL 5ommunication
Kescription
int mc5e>initengine > string location ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>initusersetup
>P&P 8 _^ 8;0;3A P&P 4?
mcveZinitusersetup 22 .nitialize structure to store user data
Kescription
resource mc5e>initusersetup > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>iscommadelimited
>P&P 8 _^ 8;0;3A P&P 4?
mcveZiscommadelimited 22 5hec"s to see i( response is comma delimited
Kescription
int mc5e>iscommadelimited > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>liststats
>P&P 8 _^ 8;0;3A P&P 4?
mcveZliststats 22 List statistics (or all users on M5$+ system
Kescription
int mc5e>liststats > resource connA string adminZpassEord ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>listusers
>P&P 8 _^ 8;0;3A P&P 4?
mcveZlistusers 22 List all users on M5$+ system
Kescription
int mc5e>listusers > resource connA string adminZpassEord ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>ma+conntimeout
>P&P 8 _^ 8;7;3A P&P 4?
mcveZmaFconntimeout 22 ,he maFimum amount o( time the AP. Eill attempt a connection to
M5$+
Kescription
#ool mc5e>ma+conntimeout > resource connA int secs ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>monitor
>P&P 8 _^ 8;0;3A P&P 4?
mcveZmonitor 22 Per(orm communication Eith M5$+ >sendDreceive data? Non2#loc"ing
Kescription
int mc5e>monitor > resource conn ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>numcolumns
>P&P 8 _^ 8;0;3A P&P 4?
mcveZnumcolumns 22 Num#er o( columns returned in a comma delimited response
Kescription
int mc5e>numcolumns > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>numro3s
>P&P 8 _^ 8;0;3A P&P 4?
mcveZnumroEs 22 Num#er o( roEs returned in a comma delimited response
Kescription
int mc5e>numro3s > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>o5erride
>P&P 8 _^ 8;0;3A P&P 4?
mcveZoverride 22 end an O$+RR.D+ to M5$+
Kescription
int mc5e>o5erride > resource connA string usernameA string passEordA string trac"dataA string
accountA string eFpdateA (loat amountA string streetA string zipA string cvA string commentsA string
cler"idA string stationidA int ptrannum ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>parsecommadelimited
>P&P 8 _^ 8;0;3A P&P 4?
mcveZparsecommadelimited 22 Parse the comma delimited response so mcveZgetcellA etc Eill Eor"
Kescription
int mc5e>parsecommadelimited > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>ping
>P&P 8 _^ 8;7;3A P&P 4?
mcveZping 22 end a ping re/uest to M5$+
Kescription
int mc5e>ping > resource conn ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>preauth
>P&P 8 _^ 8;0;3A P&P 4?
mcveZpreauth 22 end a PR+A@,&OR.IA,.ON to M5$+
Kescription
int mc5e>preauth > resource connA string usernameA string passEordA string trac"dataA string
accountA string eFpdateA (loat amountA string streetA string zipA string cvA string commentsA string
cler"idA string stationidA int ptrannum ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>preauthcompletion
>P&P 8 _^ 8;0;3A P&P 4?
mcveZpreauthcompletion 22 5omplete a PR+A@,&OR.IA,.ONA ready it (or settlement
Kescription
int mc5e>preauthcompletion > resource connA string usernameA string passEordA (loat (inalamountA
int sidA int ptrannum ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>?c
>P&P 8 _^ 8;0;3A P&P 4?
mcveZ/c 22 Audit M5$+ (or a list o( transactions in the outgoing /ueue
Kescription
int mc5e>?c > resource connA string usernameA string passEordA string cler"idA string stationidA string
commentsA int ptrannum ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>responseparam
>P&P 8 _^ 8;7;3A P&P 4?
mcveZresponseparam 22 Get a custom response parameter
Kescription
string mc5e>responseparam > resource connA int identi(ierA string "ey ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>return
>P&P 8 _^ 8;0;3A P&P 4?
mcveZreturn 22 .ssue a R+,@RN or 5R+D., to M5$+
Kescription
int mc5e>return > int connA string usernameA string passEordA string trac"dataA string accountA string
eFpdateA (loat amountA string commentsA string cler"idA string stationidA int ptrannum ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>returncode
>P&P 8 _^ 8;0;3A P&P 4?
mcveZreturncode 22 Gra# the eFact return code (rom the transaction
Kescription
int mc5e>returncode > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>returnstatus
>P&P 8 _^ 8;0;3A P&P 4?
mcveZreturnstatus 22 5hec" to see i( the transaction Eas success(ul
Kescription
int mc5e>returnstatus > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>sale
>P&P 8 _^ 8;0;3A P&P 4?
mcveZsale 22 end a AL+ to M5$+
Kescription
int mc5e>sale > resource connA string usernameA string passEordA string trac"dataA string accountA
string eFpdateA (loat amountA string streetA string zipA string cvA string commentsA string cler"idA
string stationidA int ptrannum ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>setblocBing
>P&P 8 _^ 8;7;3A P&P 4?
mcveZset#loc"ing 22 et #loc"ingDnon2#loc"ing mode (or connection
Kescription
int mc5e>setblocBing > resource connA int t( ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>setdropfile
>P&P 8 _^ 8;0;3A P&P 4?
mcveZsetdrop(ile 22 et the connection method to Drop2File
Kescription
int mc5e>setdropfile > resource connA string directory ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>setip
>P&P 8 _^ 8;0;3A P&P 4?
mcveZsetip 22 et the connection method to .P
Kescription
int mc5e>setip > resource connA string hostA int port ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>setssl>files
>P&P 8 _^ 8;7;7A P&P 4?
mcveZsetsslZ(iles 22 et certi(icate "ey (iles and certi(icates i( server re/uires client certi(icate
veri(ication
Kescription
int mc5e>setssl>files > string ssl"ey(ileA string sslcert(ile ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>setssl
>P&P 8 _^ 8;0;3A P&P 4?
mcveZsetssl 22 et the connection method to L
Kescription
int mc5e>setssl > resource connA string hostA int port ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>settimeout
>P&P 8 _^ 8;0;3A P&P 4?
mcveZsettimeout 22 et maFimum transaction time >per trans?
Kescription
int mc5e>settimeout > resource connA int seconds ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>settle
>P&P 8 _^ 8;0;3A P&P 4?
mcveZsettle 22 .ssue a settlement command to do a #atch deposit
Kescription
int mc5e>settle > resource connA string usernameA string passEordA string #atch ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>te+t>a5s
>P&P 8 _^ 8;7;3A P&P 4?
mcveZteFtZavs 22 Get a teFtual representation o( the returnZavs
Kescription
string mc5e>te+t>a5s > string code ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>te+t>code
>P&P 8 _^ 8;7;3A P&P 4?
mcveZteFtZcode 22 Get a teFtual representation o( the returnZcode
Kescription
string mc5e>te+t>code > string code ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>te+t>c5
>P&P 8 _^ 8;7;3A P&P 4?
mcveZteFtZcv 22 Get a teFtual representation o( the returnZcv
Kescription
string mc5e>te+t>c5 > int code ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>transactionauth
>P&P 8 _^ 8;0;3A P&P 4?
mcveZtransactionauth 22 Get the authorization num#er returned (or the transaction >alpha2numeric?
Kescription
string mc5e>transactionauth > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>transactiona5s
>P&P 8 _^ 8;0;3A P&P 4?
mcveZtransactionavs 22 Get the Address $eri(ication return status
Kescription
int mc5e>transactiona5s > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>transactionbatch
>P&P 8 _^ 8;0;3A P&P 4?
mcveZtransaction#atch 22 Get the #atch num#er associated Eith the transaction
Kescription
int mc5e>transactionbatch > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>transactionc5
>P&P 8 _^ 8;0;3A P&P 4?
mcveZtransactioncv 22 Get the 5$50D5$$0D5.D return status
Kescription
int mc5e>transactionc5 > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>transactionid
>P&P 8 _^ 8;0;3A P&P 4?
mcveZtransactionid 22 Get the uni/ue system id (or the transaction
Kescription
int mc5e>transactionid > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>transactionitem
>P&P 8 _^ 8;0;3A P&P 4?
mcveZtransactionitem 22 Get the .,+M num#er in the associated #atch (or this transaction
Kescription
int mc5e>transactionitem > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>transactionssent
>P&P 8 _^ 8;0;3A P&P 4?
mcveZtransactionssent 22 5hec" to see i( outgoing #u((er is clear
Kescription
int mc5e>transactionssent > resource conn ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>transactionte+t
>P&P 8 _^ 8;0;3A P&P 4?
mcveZtransactionteFt 22 Get ver#iage >teFt? return (rom M5$+ or processing institution
Kescription
string mc5e>transactionte+t > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>transin?ueue
>P&P 8 _^ 8;0;3A P&P 4?
mcveZtransin/ueue 22 Num#er o( transactions in client2/ueue
Kescription
int mc5e>transin?ueue > resource conn ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>transne3
>P&P 8 _^ 8;7;3A P&P 4?
mcveZtransneE 22 tart a neE transaction
Kescription
int mc5e>transne3 > resource conn ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>transparam
>P&P 8 _^ 8;7;3A P&P 4?
mcveZtransparam 22 Add a parameter to a transaction
Kescription
int mc5e>transparam > resource connA int identi(ierA int "ey ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>transsend
>P&P 8 _^ 8;7;3A P&P 4?
mcveZtranssend 22 Finalize and send the transaction
Kescription
int mc5e>transsend > resource connA int identi(ier ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>ub
>P&P 8 _^ 8;0;3A P&P 4?
mcveZu# 22 Get a list o( all @nsettled #atches
Kescription
int mc5e>ub > resource connA string usernameA string passEord ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>u3ait
>P&P 8 _^ 8;7;3A P&P 4?
mcveZuEait 22 Lait F microsecs
Kescription
int mc5e>u3ait > int microsecs ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>5erifyconnection
>P&P 8 _^ 8;7;3A P&P 4?
mcveZveri(yconnection 22 et Ehether or not to P.NG upon connect to veri(y connection
Kescription
#ool mc5e>5erifyconnection > resource connA int t( ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>5erifysslcert
>P&P 8 _^ 8;7;3A P&P 4?
mcveZveri(ysslcert 22 et Ehether or not to veri(y the server ssl certi(icate
Kescription
#ool mc5e>5erifysslcert > resource connA int t( ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mc5e>5oid
>P&P 8 _^ 8;0;3A P&P 4?
mcveZvoid 22 $O.D a transaction in the settlement /ueue
Kescription
int mc5e>5oid > resource connA string usernameA string passEordA int sidA int ptrannum ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
:III. Memcache ;unctions
Introducci"n
Memcache module provides handy procedural and o#'ect oriented inter(ace to memcachedA highly
e((ective caching daemonA Ehich Eas especially designed to decrease data#ase load in dynamic Ee#
applications;
More in(ormation a#out memcached can #e (ound at httpCDDEEE;danga;comDmemcachedD;
Me?uirimientos
,his module uses (unctions o( zli# to support on2the2(ly data compression; Ili# is re/uired to install
this module;
P&P 8;7;7 or neEer is re/uired to use the memcache eFtension;
Instalaci"n
+sta eFtension P+5L no esta ligada a P&P; Mas in(ormacion so#re nuevos lanzamientosA descargas
(icheros de (uentesA in(ormacion so#re los responsa#les asi como un H5&ANG+LOGHA se puede
encontrar a/uiC httpCDDpecl;php;netDpac"ageDmemcache;
.n order to use these (unctions you must compile P&P Eith Mem5ache support #y using the ==76th=
memcache):D0R. option;
LindoEs users Eill ena#le php%memcache.dll inside o( php.ini in order to use these
(unctions; Podeis descargar esta DLL de las eFtensiones P+5L desde la pagina P&P DoEnloads o
desde httpCDDsnaps;php;netD;
Constantes predefinidas
Tabla !. MemCache Constants
Name Kescription
MEMCACHE_COMPRESSED
>integer?
@sed to turn on2the2(ly data compression on Eith Memcache--set./A
Memcache--add./A y Memcache--replace./;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
,here is only one resource type used in memcache module 2 itHs the lin" identi(ier (or a cache server
connection;
E'emplos
E'emplo !. memcache e+tension o5er5ie3 e+ample
<?php
$memcache > ne8 "emcache;
$memcacheF>connect3MlocalhostM, 66C669 or die 3"Rould not connect"9;
$=ersion > $memcacheF>Eet(ersion39;
echo "&er=erMs =ersion@ ".$=ersion."<br/>Vn";
$tmp%object > ne8 stdRlass;
$tmp%objectF>str%attr > MtestM;
$tmp%objectF>int%attr > 6C<;
$memcacheF>set3MIeyM, $tmp%object, #alse, 629 or die 3"Sailed to sa=e data at the ser=er"9;
echo "&tore data in the cache 3data 8ill expire in 62 seconds9<br/>Vn";
$Eet%result > $memcacheF>Eet3MIeyM9;
echo "Lata #rom the cache@<br/>Vn";
=ar%dump3$Eet%result9;
?>
.n the a#ove eFampleA an o#'ect is #eing saved in the cache and then retrieved #ac"; O#'ect and
other non2scalar types are serialized #e(ore savingA so itHs impossi#le to store resources >i;e;
connection identi(iers and others? in the cache;
Tabla de contenidos
MemcacheCCadd 22 Add an item to the server
MemcacheCCclose 22 5lose memcached server connection
MemcacheCCconnect 22 Open memcached server connection
memcacheZde#ug 22 ,urn de#ug output onDo((
MemcacheCCdecrement 22 Decrement itemHs value
MemcacheCCdelete 22 Delete item (rom the server
MemcacheCC(lush 22 Flush all eFisting items at the server
MemcacheCCget 22 Retrieve item (rom the server
MemcacheCCgettats 22 Get statistics o( the server
MemcacheCCget$ersion 22 Return version o( the server
MemcacheCCincrement 22 .ncrement itemHs value
MemcacheCCpconnect 22 Open memcached server persistent connection
MemcacheCCreplace 22 Replace value o( the eFisting item
MemcacheCCset 22 tore data at the server
Memcache--add
>no version in(ormationA might #e only in 5$?
MemcacheCCadd 22 Add an item to the server
Kescription
#ool Memcache--add > string "eyA miFed var PA int (lag PA int eFpireQQ ?
Memcache--add./ stores varia#le ar Eith >e? only i( such "ey doesnHt eFist at the server yet;
Memcache--add./ returns FALSE i( such "ey already eFist; For the rest Memcache--add./ #ehaves
similarly to Memcache--set./;
Also you can use memcache>add./ (unction; ee eFample #eloE;
E'emplo !. Memcache--add./ e+ample
<?php
$memcache%obj > memcache%connect3"localhost", 66C669;
/W procedural ,4 W/
memcache%add3$memcache%obj, M=ar%IeyM, Mtest =ariableM, #alse, <29;
/W ?? ,4 W/
$memcache%objF>add3M=ar%IeyM, Mtest =ariableM, #alse, <29;
?>
Memcache--add./ returns TRUE on success or FALSE on (ailure;
ee also Memcache--set./A Memcache--replace./;
Memcache--close
>no version in(ormationA might #e only in 5$?
MemcacheCCclose 22 5lose memcached server connection
Kescription
#ool Memcache--close > void ?
Memcache--close./ closes connection to memcached server; ,his (unction doesnHt close persistent
connectionsA Ehich are closed only during Ee#2server shutdoEnDrestart;
Also you can use memcache>close./ (unction; ee eFample #eloE;
E'emplo !. Memcache--close./ e+ample
<?php
/W procedural ,4 W/
$memcache%obj > memcache%connect3Mmemcache%hostM, 66C669;
/W
do somethinE here ..
W/
memcache%close3$memcache%obj9;
/W ?? ,4 W/
$memcache%obj > ne8 "emcache;
$memcache%objF>connect3Mmemcache%hostM, 66C669;
/W
do somethinE here ..
W/
$memcache%objF>close39;
?>
Memcache--close./ returns FALSE i( an error occured;
ee also Memcache--connect./A Memcache--pconnect./;
Memcache--connect
>no version in(ormationA might #e only in 5$?
MemcacheCCconnect 22 Open memcached server connection
Kescription
#ool Memcache--connect > string host PA int port PA int timeoutQQ ?
Memcache--connect./ esta#lishes a connection to the memcached server; Parameters host and port
point to the host and portA Ehere memcached is listening (or connections; Parameter port is
optionalA itHs de(ault value is 11011; Also you can de(ine a t6meoutA Ehich Eill #e used Ehen
connecting to the daemon; ,hin" tEice #e(ore changing the de(ault value 2 you can loose all the
advantages o( caching i( your connection is too sloE;
,he connectionA Ehich Eas opened using Memcache--connect./ Eill #e automatically closed at the
end o( script eFecution; Also you can close it Eith Memcache--close./;
Also you can use memcache>connect./ (unction; ee eFample #eloE;
E'emplo !. Memcache--connect./ e+ample
<?php
/W procedural ,4 W/
$memcache%obj > memcache%connect3Mmemcache%hostM, 66C669;
/W ?? ,4 W/
$memcache > ne8 "emcache;
$memcacheF>connect3Mmemcache%hostM, 66C669;
?>
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also Memcache--pconnect./ and Memcache--close./;
memcache>debug
>no version in(ormationA might #e only in 5$?
memcacheZde#ug 22 ,urn de#ug output onDo((
Kescription
#ool memcache>debug > int onZo(( ?
memcache>debug./ turns on de#ug output i( parameter on_o99 is e/ual to 1 and turns o(( i( itHs 3;
Nota- memcache>debug./ is accessi#le only i( P&P Eas #uilt Eith 22ena#le2de#ug
option and alEays returns TRUE in this case; OtherEiseA this (unction has no e((ect and
alEays returns FALSE;
Memcache--decrement
>no version in(ormationA might #e only in 5$?
MemcacheCCdecrement 22 Decrement itemHs value
Kescription
int Memcache--decrement > string "ey PA int valueQ ?
Memcache--decrement./ decrements value o( the item #y alue; imilarly to
Memcache--increment./A current value o( the item is #eing converted to numerical and a(ter that
alue is su#stracted;
Parameter alue is optional; .tHs de(ault is 1;
Nota- NeE itemHs value Eill not #e less than zero;
Nota- Do not use Memcache--decrement./ Eith itemA Ehich Eas stored compressedA
#ecause conse/uent call to Memcache--get./ Eill (ail;
Also you can use memcache>decrement./ (unction; ee eFample #eloE;
E'emplo !. Memcache--decrement./ e+ample
<?php
/W procedural ,4 W/
$memcache%obj > memcache%connect3Mmemcache%hostM, 66C669;
/W decrement item by C W/
$ne8%=alue > memcache%decrement3$memcache%obj, Mtest%itemM, C9;
/W ?? ,4 W/
$memcache%obj > ne8 "emcache;
$memcache%objF>connect3Mmemcache%hostM, 66C669;
/W decrement item by < W/
$ne8%=alue > $memcache%objF>decrement3Mtest%itemM, <9;
?>
Memcache--decrement./ #oes not create an item i( it didnHt eFist;
Memcache--decrement./ returns itemHs neE value on success or FALSE on (ailure;
ee also Memcache--increment./A Memcache--replace./;
Memcache--delete
>no version in(ormationA might #e only in 5$?
MemcacheCCdelete 22 Delete item (rom the server
Kescription
#ool Memcache--delete > string "ey PA int timeoutQ ?
Memcache--delete./ deletes item Eith the >e?; .( parameter t6meout is speci(iedA the item Eill
eFpire a(ter t6meout seconds;
Also you can use memcache>delete./ (unction; ee eFample #eloE;
E'emplo !. Memcache--delete./ e+ample
<?php
/W procedural ,4 W/
$memcache%obj > memcache%connect3Mmemcache%hostM, 66C669;
/W a#ter 62 seconds item 8ill be deleted by the ser=er W/
memcache%delete3MIey%to%deleteM, 629;
/W ?? ,4 W/
$memcache%obj > ne8 "emcache;
$memcache%objF>connect3Mmemcache%hostM, 66C669;
$memcache%objF>delete3MIey%to%deleteM, 629;
?>
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Memcache--flush
>no version in(ormationA might #e only in 5$?
MemcacheCC(lush 22 Flush all eFisting items at the server
Kescription
#ool Memcache--flush > void ?
Memcache--flush./ immediately invalidates all eFisting items; Memcache--flush./ doesnHt actually
(ree any resourcesA it only mar"s all the items as eFpiredA so occupied memory Eill #e overEritten
#y neE items;
Also you can use memcache>flush./ (unction; ee eFample #eloE;
E'emplo !. Memcache--flush./ e+ample
<?php
/W procedural ,4 W/
$memcache%obj > memcache%connect3Mmemcache%hostM, 66C669;
memcache%#lush3$memcache%obj9;
/W ?? ,4 W/
$memcache%obj > ne8 "emcache;
$memcache%objF>connect3Mmemcache%hostM, 66C669;
$memcache%objF>#lush39;
?>
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Memcache--get
>no version in(ormationA might #e only in 5$?
MemcacheCCget 22 Retrieve item (rom the server
Kescription
miFed Memcache--get > string "ey ?
miFed Memcache--get > array "eys ?
Memcache--get./ returns previously stored data i( an item Eith such >e? eFists on the server at this
moment;
E'emplo !. Memcache--get./ e+ample
<?php
/W procedural ,4 W/
$memcache%obj > memcache%connect3Mmemcache%hostM, 66C669;
$=ar > memcache%Eet3$memcache%obj, Msome%IeyM9;
/W ?? ,4 W/
$memcache%obj > ne8 "emcache;
$memcache%objF>connect3Mmemcache%hostM, 66C669;
$=ar > $memcache%objF>Eet3Msome%IeyM9;
/W
Pou also can use array o# Ieys as a parameter.
4# such item 8asnMt #ound at the ser=er, the result
array simply 8ill not include such Iey.
W/
/W procedural ,4 W/
$memcache%obj > memcache%connect3Mmemcache%hostM, 66C669;
$=ar > memcache%Eet3$memcache%obj, ,rray3Msome%IeyM, Manother%IeyM99;
/W ?? ,4 W/
$memcache%obj > ne8 "emcache;
$memcache%objF>connect3Mmemcache%hostM, 66C669;
$=ar > $memcache%objF>Eet3,rray3Msome%IeyM, Msecond%IeyM99;
?>
Memcache--get./ returns FALSE on (ailure or i( such >e? Eas not (ound;
Memcache--get,tats
>no version in(ormationA might #e only in 5$?
MemcacheCCgettats 22 Get statistics o( the server
Kescription
array Memcache--get,tats > void ?
Memcache--get,tats./ returns an associative array Eith serverHs statistics; Array "eys correspond to
stats parameters and values to parameterHs values;
Also you can use memcache>get>stats./ (unction;
Memcache--get,tats./ returns FALSE in case o( an error;
ee also Memcache--getCersion./;
Memcache--getCersion
>no version in(ormationA might #e only in 5$?
MemcacheCCget$ersion 22 Return version o( the server
Kescription
string Memcache--getCersion > void ?
Memcache--getCersion./ returns a string Eith serverHs version num#er;
Also you can use memcache>get>5ersion./ (unction; ee eFample #eloE;
E'emplo !. Memcache--getCersion./ e+ample
<?php
/W procedural ,4 W/
$memcache%obj > memcache%connect3Mmemcache%hostM, 66C669;
echo memcache%Eet%=ersion3$memcache%obj9;
/W ?? ,4 W/
$memcache%obj > ne8 "emcache;
echo $memcache%objF>Eet(ersion39;
?>
Memcache--getCersion./ returns FALSE i( an error occured;
ee also Memcache--get,tats./;
Memcache--increment
>no version in(ormationA might #e only in 5$?
MemcacheCCincrement 22 .ncrement itemHs value
Kescription
int Memcache--increment > string "ey PA int valueQ ?
Memcache--increment./ increments value o( the item on the speci(ied alue; .( item Eith "ey >e?
Eas not numeric and cannot #e converted to num#erA it Eill change itHs value to alue;
Parameter alue is optional; .tHs de(ault value is 1;
Nota- Do not use Memcache--increment./ Eith itemA Ehich Eas stored compressedA
#ecause conse/uent call to Memcache--get./ Eill (ail;
Also you can use memcache>increment./ (unction; ee eFample #eloE;
E'emplo !. Memcache--increment./ e+ample
<?php
/W procedural ,4 W/
$memcache%obj > memcache%connect3Mmemcache%hostM, 66C669;
/W increment counter by C W/
$current%=alue > memcache%increment3$memcache%obj, McounterM, C9;
/W ?? ,4 W/
$memcache%obj > ne8 "emcache;
$memcache%objF>connect3Mmemcache%hostM, 66C669;
/W increment counter by < W/
$current%=alue > $memcache%objF>increment3McounterM, <9;
?>
Memcache--increment./ returns neE itemHs value on success or FALSE on (ailure;
Memcache--increment./ #oes not create an item i( it didnHt eFist;
ee also Memcache--decrement./A Memcache--replace./;
Memcache--pconnect
>no version in(ormationA might #e only in 5$?
MemcacheCCpconnect 22 Open memcached server persistent connection
Kescription
#ool Memcache--pconnect > string host PA int port PA int timeoutQQ ?
Memcache--pconnect./ is similar to Memcache--connect./ Eith the di((erenceA that the connection
it esta#lishes is persistent; ,his connection is not closed a(ter the end o( script eFecution and #y
Memcache--close./ (unction;
Also you can use memcache>pconnect./ (unction; ee eFample #eloE;
E'emplo !. Memcache--pconnect./ e+ample
<?php
/W procedural ,4 W/
$memcache%obj > memcache%pconnect3Mmemcache%hostM, 66C669;
/W ?? ,4 W/
$memcache%obj > ne8 "emcache;
$memcache%objF>pconnect3Mmemcache%hostM, 66C669;
?>
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also Memcache--connect./;
Memcache--replace
>no version in(ormationA might #e only in 5$?
MemcacheCCreplace 22 Replace value o( the eFisting item
Kescription
#ool Memcache--replace > string "eyA miFed var PA int (lag PA int eFpireQQ ?
Memcache--replace./ should #e used to replace value o( eFisting item Eith >e?; .n case i( item Eith
such "ey doesnHt eFistsA Memcache--replace./ returns FALSE; For the rest Memcache--replace./
#ehaves similarly to Memcache--set./;
Also you can use memcache>replace./ (unction; ee eFample #eloE;
E'emplo !. Memcache--replace./ e+ample
<?php
$memcache%obj > memcache%connect3Mmemcache%hostM, 66C669;
/W procedural ,4 W/
memcache%replace3$memcache%obj, "test%Iey", "some =ariable", #alse, <29;
/W ?? ,4 W/
$memcache%objF>replace3"test%Iey", "some =ariable", #alse, <29;
?>
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also Memcache--set./A Memcache--add./;
Memcache--set
>no version in(ormationA might #e only in 5$?
MemcacheCCset 22 tore data at the server
Kescription
#ool Memcache--set > string "eyA miFed var PA int (lag PA int eFpireQQ ?
Memcache--set./ stores an item ar Eith >e? on the memcached server; Parameter e8p6re is
eFpiration time in seconds; .( itHs 3A the item never eFpires >#ut memcached server doesnHt guarantee
this item to #e stored all the timeA it could #e deleted (rom the cache to ma"e place (or other items?;
%ou can use MEMCACHE_COMPRESSED constant as 9laE value i( you Eant to use on2the2(ly
compression >uses zli#?;
Also you can use memcache>set./ (unction; ee eFample #eloE;
Nota- Remem#er that resource varia#les >i;e; (ile and connection descriptors? cannot #e
stored in the cacheA #ecause they cannot #e ade/uately represented in serialized state;
E'emplo !. Memcache--set./ e+ample
<?php
/W procedural ,4 W/
/W connect to memcached ser=er W/
$memcache%obj > memcache%connect3Mmemcache%hostM, 66C669;
/W
set =alue o# item 8ith Iey M=ar%IeyM
usinE 2 as #laE =alue, compression is not used
expire time is <2 seconds
W/
memcache%set3$memcache%obj, M=ar%IeyM, Msome =ariableM, 2, <29;
echo memcache%Eet3$memcache%obj, M=ar%IeyM9;
?>
E'emplo *. Memcache--set./ e+ample
<?php
/W ?? ,4 W/
$memcache%obj > ne8 "emcache;
/W connect to memcached ser=er W/
$memcacheF>connect3Mmemcache%hostM, 66C669;
/W
set =alue o# item 8ith Iey M=ar%IeyM, usinE onFtheF#ly compression
expire time is 52 seconds
W/
$memcache%objF>set3M=ar%IeyM, Msome really biE =ariableM, "E"R,RHE%R?"'E&&EL, 529;
echo $memcache%objF>Eet3M=ar%IeyM9;
?>
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also Memcache--add./A Memcache--replace./;
:II. ;unciones Mhash
Introducci"n
+stas (unciones tienen el prop-sito de tra#a'ar con mhash; Mhash puede ser usado para crear sumas
de veri(icaci-nA resBmenes de mensa'esA c-digos de autenticaci-n de mensa'esA y m*s;
+sta es una inter(az con la #i#lioteca mhash; mhash soporta una amplia variaded de algoritmos hash
como MD4A &A1A GO,A y muchos otros; Para una lista completa de resBmenes criptogr*(icos
soportadosA re(i<rase a la documentaci-n de mhash; La regla general es /ue puede acceder al
algoritmo hash desde P&P con M&A&ZNOMBR+ZD+LZ&A&; Por e'emploA para acceder a
,.G+RA use la constante P&P M&A&Z,.G+R;
Me?uirimientos
Para usar la eFtensi-nA descargue la distri#uci-n de mhash desde su sitio Ee# y siga las
instrucciones de instalaci-n incluidas;
Instalaci"n
Necesita compilar P&P con el par*metro ==76th=mhash):D0R. para ha#ilitar esta eFtensi-n; D.R es
el directorio de instalaci-n de mhash;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
A continuaci-n se encuentra una lista de resBmenes criptogr*(icos soportados en la actualidad por
mhash; i un mecanismo de resumen no se encuentra listado a/u)A pero es listado como soportado
por mhashA puede asumir con seguridad /ue esta documentaci-n se encuentra desactualizada;
MHASH_MD2
MHASH_SHA)
MHASH_HA$AL*21
MHASH_HA$AL)=*
MHASH_HA$AL)10
MHASH_HA$AL)*,
MHASH_RIPEMD)10
MHASH_#OST
MHASH_TI#ER
MHASH_CRC>*
MHASH_CRC>*(
E'emplos
E'emplo !. Calcular el resumen MK9 y hmac e imprimirlo como 5alor he+adecimal
<?php
$entrada > "Que Quisiera a cambio de nada?";
$hash > mhash3"H,&H%"L5, $entrada9;
echo "El =alor hash es ".binChex 3$hash9."<br />Vn";
$hash > mhash3"H,&H%"L5, $entrada, "Ae#e"9;
echo "El =alor hmac es ".binChex 3$hash9."<br />Vn";
?>
+sto producir*C
El =alor hash es C<JGe22bCd261a1bJKe#b62b2C52ac<5
El =alor hmac es JH<GHc5cbb52KKc#K5#cee5G2d12Cda1
Tabla de contenidos
mhashZcount 22 O#tener el valor mayor del id hash disponi#le
mhashZgetZ#loc"Zsize 22 5onseguir el tamaWo de #lo/ue de el hash especi(icado
mhashZgetZhashZname 22 5onseguir el nom#re de un hash especi(ico
mhashZ"eygenZs0" 22 Genera una llave
mhash 22 5alcular el hash
mhash>count
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
mhashZcount 22 O#tener el valor mayor del id hash disponi#le
Kescripcion
int mhash>count > void ?
mhash>count./ devuelve el valor mas alto id hash disponi#le; Los hash estan numerados desde 3
hasta este valor;
E'emplo !. Mecorriendo todos los hash
<?php
$nr > mhash%count39;
#or3$i > 2; $i <> $nr; $i[[9 :
echo sprint#3"*he blocIsi0e o# \s is \dVn",
mhash%Eet%hash%name3$i9,
mhash%Eet%blocI%si0e3$i99;
;
?>
mhash>get>blocB>si6e
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
mhashZgetZ#loc"Zsize 22 5onseguir el tamaWo de #lo/ue de el hash especi(icado
Kescripcion
int mhash>get>blocB>si6e > int hash ?
mhash>get>blocB>si6e./ es usado para o#tener el tamaWo de un #lo/ue de el hash determinado;
mhash>get>blocB>si6e./ toma un argumentoA el hash y devuelve el tamaWo en #ytes o FALSEA si el
hash no eFiste;
mhash>get>hash>name
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
mhashZgetZhashZname 22 5onseguir el nom#re de un hash especi(ico
Kescripcion
string mhash>get>hash>name > int hash ?
mhash>get>hash>name./ es usado para conseguir el nom#re de el hash determinado;
mhash>get>hash>name./ toma el id del hash como un argumento y devuelve el nom#re de el hash
o FALSEA si el hash no eFiste;
E'emplo !. mhash>get>hash>name e+ample
<?php
$hash > "H,&H%"L5;
print mhash%Eet%hash%name3$hash9;
?>
+l e'emplo anterior mostraraC
"L5
mhash>Beygen>s*B
>P&P 8 _^ 8;3;8A P&P 4?
mhashZ"eygenZs0" 22 Genera una llave
Kescripci"n
string mhash>Beygen>s*B > int hashA string contrasenyaA string salA int #ytes ?
mhash>Beygen>s*B./ genera una llave con una longitud indicada por 1?tesA a partir de una
contraseWa entregada por el usuario; +ste es el algoritmo con sal 0SA tal y como se encuentra
especi(icado en el documento OpenPGP >RF5 0883?; +se algoritmo usar* el algoritmo hash
especi(icado para crear la llave; La sal de#e ser di(erente y su(icientemente aleatoria para cada llave
/ue genere para crear di(erentes llaves; La sal de#e conocerse cuando che/uee las llavesA de modo
/ue es una #uena idea adicionarle la llave al (inal; La sal tiene un tamaWo (i'o de M #ytes y ser*
rellenada con ceros si usted suple menos #ytes;
,enga en mente /ue las contraseWas entregadas por el usuario no son realmente apropiadas para ser
usadas como llaves en algoritmos criptogr*(icosA ya /ue los usuarios normalmente eligen llaves /ue
pueden escri#ir con el teclado; +stas contreseWas usan solo K o : #its por caracter >o menos?; +s
#astante recomenda#le usar algBn tipo de trans(ormaci-n >como esta (unci-n? so#re la llave
entregada por el usuario;
mhash
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
mhash 22 5alcular el hash
Kescripcion
string mhash > int hashA string data ?
mhash./ aplica una (uncion hash especi(icada por hash a #ata y devuelve el valor hash resultante
>tam#ien llamdo digest?;
:III. ;unciones Mimetype
Introducci"n
A5iso
+sta eFtensi-n ha sido marcada como o#soletaA ya /ue la eFtensi-n P+5L (ilein(o o(rece la misma
(uncionalidad >y m*s? de una (orma mucho m*s clara;
Las (unciones de este m-dulo intentan adivinar el tipo de contenido y la codi(icaci-n de un archivoA
mirando ciertas secuencias de #ytes m[E6cas en posiciones espec)(icas dentro del archivo; Aun/ue
<ste no es un en(o/ue completamente seguroA la heur)stica usada cumple un muy #uen tra#a'o;
+sta eFtensi-n es derivada del m-dulo de Apache modZmimeZmagicA el cual a su vez est* #asado
en el comando #ileA administrado por .an F; DarEin; $ea el c-digo (uente para consultar m*s
datos hist-ricos y la in(ormaci-n de copyright;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
De#e compilar P&P con la opci-n de con(iguraci-n ==76th=m6me=maE6c para contar con soporte para
(unciones mime2type; La eFtensi-n necesita una copia del archivo maEic simpli(icadoA /ue es
distri#uido con el servidor Ee# Apache;
Nota- La opci-n de con(iguraci-n ha cam#iado de ==ena1le=m6me=maE6c a ==76th=m6me=
maE6c a partir de P&P 8;7;0;
Nota- +sta eFtensi-n no es capaz de gestionar el archivo maEic completamente
decorado /ue generalmente viene con las distri#uciones normales de LinuFA y es
utilizado por lo general con versiones recientes del comando #ile;
Nota para )suarios de 2in7*- Para usar este m-dulo en un entorno LindoEsA de#e
de(inir la ruta hacia el archivo maEic.mime distri#uido en su php.ini;
E'emplo !. Kefinici"n de la ruta hacia :agi!.:i:e
mime%maEic.maEic#ile >"$H%4.&*,OO%L4'VmaEic.mime"
Recuerde sustituir el valor $H%4.&*,OO%L4' con su ruta real hacia P&P en el
anterior e'emplo; Por e'emploA c@Vphp
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones de configuraci"n de Mimetype
Nombre Predeterminado Modificable
mimeZmagic;magic(il
e
=DusrDshareDmiscDmagic;mime
=
P&PZ.N.Z%,+M
Para m*s detalles so#re las constantes P&PZ.N.ZV y su de(inici-nA vea ini>set./;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
mimeZcontentZtype 22 Detectar el tipo de contenido M.M+ de un archivo
mime>content>type
>P&P 8 _^ 8;7;3A P&P 4?
mimeZcontentZtype 22 Detectar el tipo de contenido M.M+ de un archivo
Kescripci"n
string mime>content>type > string nom#reZarchivo ?
Devuelve el tipo de contenido M.M+ de un archivoA tal y como sea determinado por medio del uso
de in(ormaci-n tomada del archivo maEic.mime; Los tipos de contenido son devueltos en (ormato
M.M+A como te8t/pla6n o appl6cat6on/octet=stream;
E'emplo !. E'emplo de mime>content>type./
<?php
echo mime%content%type3Mphp.Ei#M9 . "Vn";
echo mime%content%type3Mtest.phpM9;
?>
+l anterior e'emplo producir* la salidaC
imaEe/Ei#
text/plain
:IIII. Ming functions for ;lash
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
Introducci"n
First o( allC Ming is not an acronym; Ming is an open2source >LGPL? li#rary Ehich alloEs you to
create LF >=Flash=? (ormat movies; Ming supports almost all o( Flash 8Hs (eaturesA includingC
shapesA gradientsA #itmaps >pngs and 'pegs?A morphs >=shape tEeens=?A teFtA #uttonsA actionsA sprites
>=movie clips=?A streaming mp7A and color trans(orms 22the only thing thatHs missing is sound events;
Note that all values speci(ying lengthA distanceA sizeA etc; are in =tEips=A tEenty units per piFel;
,hatHs pretty much ar#itraryA thoughA since the player scales the movie to Ehatever piFel size is
speci(ied in the em#edDo#'ect tagA or the entire (rame i( not em#edded;
Ming o((ers a num#er o( advantages over the eFisting P&PDli#sE( module; %ou can use Ming
anyEhere you can compile the codeA Ehereas li#sE( is closed2source and only availa#le (or a (eE
plat(ormsA LindoEs not one o( them; Ming provides some insulation (rom the mundane details o(
the LF (ile (ormatA Erapping the movie elements in P&P o#'ects; AlsoA Ming is still #eing
maintainedX i( thereHs a (eature that you Eant to seeA 'ust let us "noE mingGopa/ue;net;
Ming Eas added in P&P 8;3;4;
Me?uirimientos
,o use Ming Eith P&PA you (irst need to #uild and install the Ming li#rary; ource code and
installation instructions are availa#le at the Ming home pageC httpCDDming;source(orge;netD along
Eith eFamplesA a small tutorialA and the latest neEs;
DoEnload the ming archive; @npac" the archive; Go in the Ming directory; ma"e; ma"e install;
,his Eill #uild libminE.so and install it into /usr/lib/A and copy minE.h into /
usr/include/; +dit the +RE30F: line in the "aIe#ile to change the installation directory;
Instalaci"n
E'emplo !. built into PHP .)ni+/
m"dir `phpdir_DeFtDming
cp phpZeFtDV `phpdir_DeFtDming
cd `phpdir_
;D#uildcon(
;Dcon(igure 22Eith2ming `other con(ig options_

Build and install P&P as usualA restart Ee# server i( necessary;
NoE either 'ust add e8tens6on:php_m6nE.so to your php.ini (ileA or put #lL<php_m6nE.so<MJ at the
head o( all o( your Ming scripts;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
S"F(UTTON_HIT >integer?
S"F(UTTON_DO"N >integer?
S"F(UTTON_O$ER >integer?
S"F(UTTON_UP >integer?
S"F(UTTON_MOUSEUPOUTSIDE >integer?
S"F(UTTON_DRA#O$ER >integer?
S"F(UTTON_DRA#OUT >integer?
S"F(UTTON_MOUSEUP >integer?
S"F(UTTON_MOUSEDO"N >integer?
S"F(UTTON_MOUSEOUT >integer?
S"F(UTTON_MOUSEO$ER >integer?
S"FFILL_RADIAL_#RADIENT >integer?
S"FFILL_LINEAR_#RADIENT >integer?
S"FFILL_TILED_(ITMAP >integer?
S"FFILL_CLIPPED_(ITMAP >integer?
S"FTE%TFIELD_HASLEN#TH >integer?
S"FTE%TFIELD_NOEDIT >integer?
S"FTE%TFIELD_PASS"ORD >integer?
S"FTE%TFIELD_MULTILINE >integer?
S"FTE%TFIELD_"ORD"RAP >integer?
S"FTE%TFIELD_DRA"(O% >integer?
S"FTE%TFIELD_NOSELECT >integer?
S"FTE%TFIELD_HTML >integer?
S"FTE%TFIELD_ALI#N_LEFT >integer?
S"FTE%TFIELD_ALI#N_RI#HT >integer?
S"FTE%TFIELD_ALI#N_CENTER >integer?
S"FTE%TFIELD_ALI#N_'USTIFY >integer?
S"FACTION_ONLOAD >integer?
S"FACTION_ENTERFRAME >integer?
S"FACTION_UNLOAD >integer?
S"FACTION_MOUSEMO$E >integer?
S"FACTION_MOUSEDO"N >integer?
S"FACTION_MOUSEUP >integer?
S"FACTION_&EYDO"N >integer?
S"FACTION_&EYUP >integer?
S"FACTION_DATA >integer?
Clases predefinidas
+stas clases est*n de(inidas por esta eFtensi-n y estar*n disponi#les cuando la eFtensi-n haya sido
compilada dentro de P&P o cargada din*micamente en tiempo de e'ecuci-n
Ming introduces 17 neE o#'ects in P&PA all Eith matching methods and attri#utes; ,o use themA you
need to "noE a#out o#'ects;
s3fshape
s3ffill
s3fgradient
s3fbitmap
s3fte+t
s3fte+tfield
s3ffont
s3fdisplayitem
s3fmo5ie
s3fbutton
s3faction
s3fmorph
s3fsprite
Tabla de contenidos
mingZsetcu#icthreshold 22 et cu#ic threshold >N?
mingZsetscale 22 et scale >N?
mingZusesE(version 22 @se LF version >N?
LFAction 22 5reates a neE Action
LFBitmap2_get&eight 22 Returns the #itmapHs height
LFBitmap2_getLidth 22 Returns the #itmapHs Eidth
LFBitmap 22 Loads Bitmap o#'ect
sE(#uttonZ"eypress 22 Returns the action (lag (or "eyPress>char?
LF#utton2_addAction 22 Adds an action
LF#utton2_addhape 22 Adds a shape to a #utton
LF#utton2_setAction 22 ets the action
LF#utton2_setdoEn 22 Alias (or addhape>shapeA LFB@,,ONZDOLN?
LF#utton2_set&it 22 Alias (or addhape>shapeA LFB@,,ONZ&.,?
LF#utton2_setOver 22 Alias (or addhape>shapeA LFB@,,ONZO$+R?
LF#utton2_set@p 22 Alias (or addhape>shapeA LFB@,,ONZ@P?
LF#utton 22 5reates a neE Button
LFDisplay.tem2_add5olor 22 Adds the given color to this itemHs color trans(orm
LFDisplay.tem2_move 22 Moves o#'ect in relative coordinates
LFDisplay.tem2_move,o 22 Moves o#'ect in glo#al coordinates
LFDisplay.tem2_mult5olor 22 Multiplies the itemHs color trans(orm
LFDisplay.tem2_remove 22 Removes the o#'ect (rom the movie
LFDisplay.tem2_Rotate 22 Rotates in relative coordinates
LFDisplay.tem2_rotate,o 22 Rotates the o#'ect in glo#al coordinates
LFDisplay.tem2_scale 22 cales the o#'ect in relative coordinates
LFDisplay.tem2_scale,o 22 cales the o#'ect in glo#al coordinates
LFDisplay.tem2_setDepth 22 ets z2order
LFDisplay.tem2_setName 22 ets the o#'ectHs name
LFDisplay.tem2_setRatio 22 ets the o#'ectHs ratio
LFDisplay.tem2_s"eEJ 22 ets the J2s"eE
LFDisplay.tem2_s"eEJ,o 22 ets the J2s"eE
LFDisplay.tem2_s"eE% 22 ets the %2s"eE
LFDisplay.tem2_s"eE%,o 22 ets the %2s"eE
LFDisplay.tem 22 5reates a neE displayitem o#'ect
LFFill2_move,o 22 Moves (ill origin
LFFill2_rotate,o 22 ets (illHs rotation
LFFill2_scale,o 22 ets (illHs scale
LFFill2_s"eEJ,o 22 ets (ill F2s"eE
LFFill2_s"eE%,o 22 ets (ill y2s"eE
LFFill 22 Loads LFFill o#'ect
sE((ont2_getEidth 22 Returns the stringHs Eidth
LFFont 22 Loads a (ont de(inition
LFGradient2_add+ntry 22 Adds an entry to the gradient list
LFGradient 22 5reates a gradient o#'ect
LFMorph2_getshape1 22 Gets a handle to the starting shape
LFMorph2_getshape0 22 Gets a handle to the ending shape
LFMorph 22 5reates a neE LFMorph o#'ect
LFMovie2_add 22 Adds any type o( data to a movie
LFMovie2_neFt(rame 22 Moves to the neFt (rame o( the animation
LFMovie2_output 22 Dumps your lovingly prepared movie out
sE(movie2_remove 22 Removes the o#'ect instance (rom the display list
LFMovie2_save 22 aves your movie in a (ile
LFMovie2_set#ac"ground 22 ets the #ac"ground color
LFMovie2_setdimension 22 ets the movieHs Eidth and height
LFMovie2_set(rames 22 ets the total num#er o( (rames in the animation
LFMovie2_setrate 22 ets the animationHs (rame rate
LFMovie2_streammp7 22 treams a MP7 (ile
LFMovie 22 5reates a neE movie o#'ectA representing an LF version 8 movie
LFhape2_addFill 22 Adds a solid (ill to the shape
LFhape2_draE5urve 22 DraEs a curve >relative?
LFhape2_draE5urve,o 22 DraEs a curve
LFhape2_draELine 22 DraEs a line >relative?
LFhape2_draELine,o 22 DraEs a line
LFhape2_movePen 22 Moves the shapeHs pen >relative?
LFhape2_movePen,o 22 Moves the shapeHs pen
LFhape2_setLe(tFill 22 ets le(t rasterizing color
LFhape2_setLine 22 ets the shapeHs line style
LFhape2_setRightFill 22 ets right rasterizing color
LFhape 22 5reates a neE shape o#'ect
sE(sprite2_add 22 Adds an o#'ect to a sprite
LFprite2_neFt(rame 22 Moves to the neFt (rame o( the animation
LFprite2_remove 22 Removes an o#'ect to a sprite
LFprite2_set(rames 22 ets the total num#er o( (rames in the animation
LFprite 22 5reates a movie clip >a sprite?
LF,eFt2_addtring 22 DraEs a string
LF,eFt2_getLidth 22 5omputes stringHs Eidth
LF,eFt2_move,o 22 Moves the pen
LF,eFt2_set5olor 22 ets the current (ont color
LF,eFt2_setFont 22 ets the current (ont
LF,eFt2_set&eight 22 ets the current (ont height
LF,eFt2_setpacing 22 ets the current (ont spacing
LF,eFt 22 5reates a neE LF,eFt o#'ect
LF,eFtField2_addstring 22 5oncatenates the given string to the teFt (ield
LF,eFtField2_align 22 ets the teFt (ield alignment
LF,eFtField2_set#ounds 22 ets the teFt (ield Eidth and height
LF,eFtField2_setcolor 22 ets the color o( the teFt (ield
LF,eFtField2_setFont 22 ets the teFt (ield (ont
LF,eFtField2_set&eight 22 ets the (ont height o( this teFt (ield (ont
LF,eFtField2_setindentation 22 ets the indentation o( the (irst line
LF,eFtField2_setLe(tMargin 22 ets the le(t margin Eidth o( the teFt (ield
LF,eFtField2_setLinepacing 22 ets the line spacing o( the teFt (ield
LF,eFtField2_setMargins 22 ets the margins Eidth o( the teFt (ield
LF,eFtField2_setname 22 ets the varia#le name
LF,eFtField2_setrightMargin 22 ets the right margin Eidth o( the teFt (ield
LF,eFtField 22 5reates a teFt (ield o#'ect
ming>setcubicthreshold
>P&P 8 _^ 8;3;4A P&P 4?
mingZsetcu#icthreshold 22 et cu#ic threshold >N?
Kescription
void ming>setcubicthreshold > int threshold ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ming>setscale
>P&P 8 _^ 8;3;4A P&P 4?
mingZsetscale 22 et scale >N?
Kescription
void ming>setscale > int scale ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ming>uses3f5ersion
>P&P 8 _^ 8;0;3A P&P 4?
mingZusesE(version 22 @se LF version >N?
Kescription
void ming>uses3f5ersion > int version ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
,2;Action
>P&P 8 _^ 8;3;4?
LFAction 22 5reates a neE Action
Kescription
LFAction s3faction > string script ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3faction./ creates a neE ActionA and compiles the given script into an LFAction o#'ect;
,he script syntaF is #ased on the 5 languageA #ut Eith a lot ta"en out2 the LF #ytecode machine is
'ust too simpleminded to do a lot o( things Ee might li"e; For instanceA Ee canHt implement (unction
calls Eithout a tremendous amount o( hac"ery #ecause the 'ump #ytecode has a hardcoded o((set
value; No pushing your calling address to the stac" and returning2 every (unction Eould have to
"noE eFactly Ehere to return to;
o EhatHs le(tN ,he compiler recognises the (olloEing to"ensC
#rea"
(or
continue
i(
else
do
Ehile
,here is no typed dataX all values in the LF action machine are stored as strings; ,he (olloEing
(unctions can #e used in eFpressionsC
time>?
Returns the num#er o( milliseconds >N? elapsed since the movie started;
random>seed?
Returns a pseudo2random num#er in the range 32seed;
length>eFpr?
Returns the length o( the given eFpression;
int>num#er?
Returns the given num#er rounded doEn to the nearest integer;
concat>eFprA eFpr?
Returns the concatenation o( the given eFpressions;
ord>eFpr?
Returns the A5.. code (or the given character
chr>num?
Returns the character (or the given A5.. code
su#str>stringA locationA length?
Returns the su#string o( length length at location location o( the given string string;
AdditionallyA the (olloEing commands may #e usedC
duplicate5lip>clipA nameA depth?
Duplicate the named movie clip >a"a sprite?; ,he neE movie clip has name name and is at
depth depth;
remove5lip>eFpr?
Removes the named movie clip;
trace>eFpr?
Lrite the given eFpression to the trace log; Dou#t(ul that the #roEser plugin does anything
Eith this;
startDrag>targetA loc"A Ple(tA topA rightA #ottomQ?
tart dragging the movie clip target; ,he loc" argument indicates Ehether to loc" the mouse
>N?2 use 3 >FALSE? or 1 >TRUE?; Optional parameters de(ine a #ounding area (or the dragging;
stopDrag>?
top dragging my heart around; And this movie clipA too;
callFrame>eFpr?
5all the named (rame as a (unction;
get@RL>urlA targetA PmethodQ?
Load the given @RL into the named target; ,he target argument corresponds to &,ML
document targets >such as =Ztop= or =Z#lan"=?; ,he optional method argument can #e PO, or
G+, i( you Eant to su#mit varia#les #ac" to the server;
loadMovie>urlA target?
Load the given @RL into the named target; ,he target argument can #e a (rame name >. thin"?A
or one o( the magical values =Zlevel3= >replaces current movie? or =Zlevel1= >loads neE movie
on top o( current movie?;
neFtFrame>?
Go to the neFt (rame;
prevFrame>?
Go to the last >orA ratherA previous? (rame;
play>?
tart playing the movie;
stop>?
top playing the movie;
toggleOuality>?
,oggle #etEeen high and loE /uality;
stopounds>?
top playing all sounds;
gotoFrame>num?
Go to (rame num#er num; Frame num#ers start at 3;
gotoFrame>name?
Go to the (rame named name; Lhich does a lot o( goodA since . havenHt added (rame la#els
yet;
set,arget>eFpr?
ets the conteFt (or action; Or so they say2 . really have no idea Ehat this does;
And thereHs one Eeird eFtra thing; ,he eFpression (rameLoaded>num? can #e used in i( statements
and Ehile loops to chec" i( the given (rame num#er has #een loaded yet; LellA itHs supposed toA
anyEayA #ut .Hve never tested it and . seriously dou#t it actually Eor"s; %ou can 'ust use DC
(ramesLoaded instead;
Movie clips >all together noE2 a"a sprites? have properties; %ou can read all o( them >or can youN?A
you can set some o( themA and here they areC
F
y
Fcale
ycale
currentFrame 2 >read2only?
totalFrames 2 >read2only?
alpha 2 transparency level
visi#le 2 1^onA 3^o(( >N?
Eidth 2 >read2only?
height 2 >read2only?
rotation
target 2 >read2only? >NNN?
(ramesLoaded 2 >read2only?
name
drop,arget 2 >read2only? >NNN?
url 2 >read2only? >NNN?
highOuality 2 1^highA 3^loE >N?
(ocusRect 2 >NNN?
soundBu(,ime 2 >NNN?
oA setting a spriteHs F position is as simple as /1o8.8 : 100J; Lhy the slash in (ront o( the #oFA
thoughN ,hatHs hoE (lash "eeps trac" o( the sprites in the movieA 'ust li"e a @niF (ilesystem2 here it
shoEs that #oF is at the top level; .( the sprite named #oF had another sprite named #i(( inside o( itA
youHd set its F position Eith D#oFD#i((;F ^ 133X; At leastA . thin" soX correct me i( .Hm Erong here;
,his simple eFample Eill move the red s/uare across the EindoE;
E'emplo !. s3faction./ e+ample
<?php
$s > ne8 &7S&hape39;
$# > $sF>addSill32x##, 2, 29;
$sF>set'iEhtSill3$#9;
$sF>mo=een*o3F522, F5229;
$sF>dra8Oine*o3522, F5229;
$sF>dra8Oine*o3522, 5229;
$sF>dra8Oine*o3F522, 5229;
$sF>dra8Oine*o3F522, F5229;
$p > ne8 &7S&prite39;
$i > $pF>add3$s9;
$iF>setLepth369;
$pF>nextSrame39;
#or 3$n>2; $n<5; [[$n9 :
$iF>rotate3F659;
$pF>nextSrame39;
;
$m > ne8 &7S"o=ie39;
$mF>setZacIEround32x##, 2x##, 2x##9;
$mF>setLimension3G222, 12229;
$i > $mF>add3$p9;
$iF>setLepth369;
$iF>mo=e*o3F522,C2229;
$iF>set.ame3"box"9;
$mF>add3ne8 &7S,ction3"/box.x [> <;"99;
$mF>nextSrame39;
$mF>add3ne8 &7S,ction3"EotoSrame329; play39;"99;
$mF>nextSrame39;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
$mF>output39;
?>
,his simple eFample trac"s doEn your mouse on the screen;
E'emplo *. s3faction./ e+ample
<?php
$m > ne8 &7S"o=ie39;
$mF>set'ate3<G.29;
$mF>setLimension36C22, J229;
$mF>setZacIEround32, 2, 29;
/W mouse tracIinE sprite F empty, but #ollo8s mouse so 8e can
Eet its x and y coordinates W/
$i > $mF>add3ne8 &7S&prite399;
$iF>set.ame3MmouseM9;
$mF>add3ne8 &7S,ction3"
startLraE3M/mouseM, 69; /W M6M means locI sprite to the mouse W/
"99;
/W miEht as 8ell turn o## antialiasinE, since these are just sQuares. W/
$mF>add3ne8 &7S,ction3"
this.Quality > 2;
"99;
/W morphinE box W/
$r > ne8 &7S"orph39;
$s > $rF>Eet&hape639;
/W .ote this is bacI8ards #rom normal shapes. .o idea 8hy. W/
$sF>setOe#tSill3$sF>addSill32x##, 2x##, 2x##99;
$sF>mo=een*o3F12, F129;
$sF>dra8Oine3J2, 29;
$sF>dra8Oine32, J29;
$sF>dra8Oine3FJ2, 29;
$sF>dra8Oine32, FJ29;
$s > $rF>Eet&hapeC39;
$sF>setOe#tSill3$sF>addSill32x22, 2x22, 2x2299;
$sF>mo=een*o3F6, F69;
$sF>dra8Oine3C, 29;
$sF>dra8Oine32, C9;
$sF>dra8Oine3FC, 29;
$sF>dra8Oine32, FC9;
/W sprite container #or morphinE box F
this is just a timeline 8/ the box morphinE W/
$box > ne8 &7S&prite39;
$boxF>add3ne8 &7S,ction3"
stop39;
"99;
$i > $boxF>add3$r9;
#or 3$n>2; $n<>C2; [[$n9 :
$iF>set'atio3$n/C29;
$boxF>nextSrame39;
;
/W this container sprite allo8s us to use the same action code many times W/
$cell > ne8 &7S&prite39;
$i > $cellF>add3$box9;
$iF>set.ame3MboxM9;
$cellF>add3ne8 &7S,ction3"
set*arEet3MboxM9;
/W ...x means the x coordinate o# the parent, i.e. 3..9.x W/
dx > 3/mouse.x [ random3G9F< F ...x9/5;
dy > 3/mouse.y [ random3G9F< F ...y9/5;
EotoSrame3int3dxWdx [ dyWdy99;
ame as a#oveA #ut Eith nice colored #alls;;;
E'emplo 7. s3faction./ e+ample
<?php
$m > ne8 &7S"o=ie39;
$mF>setLimension366222, J2229;
$mF>setZacIEround32x22, 2x22, 2x229;
$mF>add3ne8 &7S,ction3"
this.Quality > 2;
/#rames.=isible > 2;
startLraE3M/mouseM, 69;
"99;
// mouse tracIinE sprite
$t > ne8 &7S&prite39;
$i > $mF>add3$t9;
$iF>set.ame3MmouseM9;
$E > ne8 &7S-radient39;
$EF>addEntry32, 2x##, 2x##, 2x##, 2x##9;
$EF>addEntry32.6, 2x##, 2x##, 2x##, 2x##9;
$EF>addEntry32.5, 2x##, 2x##, 2x##, 2x5#9;
$EF>addEntry36.2, 2x##, 2x##, 2x##, 29;
// Eradient shape thinE
$s > ne8 &7S&hape39;
$# > $sF>addSill3$E, &7SS4OO%',L4,O%-',L4E.*9;
$#F>scale*o32.2<9;
$sF>set'iEhtSill3$#9;
$sF>mo=een*o3FG22, FG229;
$sF>dra8Oine36C22, 29;
$sF>dra8Oine32, 6C229;
$sF>dra8Oine3F6C22, 29;
$sF>dra8Oine32, F6C229;
// need to maIe this a sprite so 8e can multRolor it
$p > ne8 &7S&prite39;
$pF>add3$s9;
$pF>nextSrame39;
// put the shape in here, each #rame a di##erent color
$Q > ne8 &7S&prite39;
$QF>add3ne8 &7S,ction3"EotoSrame3random3H9[69; stop39;"99;
$i > $QF>add3$p9;
$iF>multRolor36.2, 6.2, 6.29;
$QF>nextSrame39;
$iF>multRolor36.2, 2.5, 2.59;
$QF>nextSrame39;
$iF>multRolor36.2, 2.H5, 2.59;
$QF>nextSrame39;
$iF>multRolor36.2, 6.2, 2.59;
$QF>nextSrame39;
$iF>multRolor32.5, 6.2, 2.59;
$QF>nextSrame39;
$iF>multRolor32.5, 2.5, 6.29;
$QF>nextSrame39;
$iF>multRolor36.2, 2.5, 6.29;
$QF>nextSrame39;
// #inally, this one contains the action code
$p > ne8 &7S&prite39;
$i > $pF>add3$Q9;
$iF>set.ame3M#ramesM9;
$pF>add3ne8 &7S,ction3"
dx > 3/@mousexF/@lastx9/< [ random3629F5;
dy > 3/@mouseyF/@lasty9/<;
x > /@mousex;
y > /@mousey;
alpha > 622;
,2;1itmap(GgetHeight
>no version in(ormationA might #e only in 5$?
LFBitmap2_get&eight 22 Returns the #itmapHs height
Kescription
int s3fbitmap(Ggetheight > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fbitmap(Ggetheight./ returns the #itmapHs height in piFels;
ee also s3fbitmap(Gget3idth./;
,2;1itmap(Gget2idth
>no version in(ormationA might #e only in 5$?
LFBitmap2_getLidth 22 Returns the #itmapHs Eidth
Kescription
int s3fbitmap(Gget3idth > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fbitmap(Gget3idth./ returns the #itmapHs Eidth in piFels;
ee also s3fbitmap(Ggetheight./;
,2;1itmap
>P&P 8 _^ 8;3;4?
LFBitmap 22 Loads Bitmap o#'ect
Kescription
LFBitmap s3fbitmap > miFed (ile PA miFed alpha(ileQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fbitmap./ creates a neE LFBitmap o#'ect (rom the !peg or DBL (ile in 96le; alpha96le is a MS
(ile to #e used as an alpha mas" (or a !peg image; Both parameters can #e fopen./ resources or
#inary strings;
Nota- Le can only deal Eith #aseline >(rame 3? 'pegsA no #aseline optimized or
progressive scan 'pegsa
LFBitmap has the (olloEing methods C s3fbitmap(Gget3idth./ and s3fbitmap(Ggetheight./;
%ou canHt import png images directlyA though2 have to use the png0d#l utility to ma"e a d#l >=de(ine
#its lossless=? (ile (rom the png; ,he reason (or this is that . donHt Eant a dependency on the png
li#rary in ming2 autocon( should solve thisA #ut thatHs not set up yet;
E'emplo !. Import PNF files
<?php
$s > ne8 &7S&hape39;
$# > $sF>addSill3ne8 &7SZitmap3#ile%Eet%contents3"pnE.dbl"999;
$sF>set'iEhtSill3$#9;
$sF>dra8Oine3<C, 29;
$sF>dra8Oine32, <C9;
$sF>dra8Oine3F<C, 29;
$sF>dra8Oine32, F<C9;
$m > ne8 &7S"o=ie39;
$mF>setLimension3<C, <C9;
$mF>add3$s9;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
$mF>output39;
?>
And you can put an alpha mas" on a 'peg (ill;
E'emplo *. s3fbitmap./ e+ample
<?php
$s > ne8 &7S&hape39;
// .msI #ile Eenerated 8ith "Ei#CmasI" utility
$# > $sF>addSill3ne8 &7SZitmap3#ile%Eet%contents3"alpha#ill.jpE"9, #ile%Eet%contents3"alpha#ill.msI"999;
$sF>set'iEhtSill3$#9;
$sF>dra8Oine3G12, 29;
$sF>dra8Oine32, 1J29;
$sF>dra8Oine3FG12, 29;
$sF>dra8Oine32, F1J29;
$c > ne8 &7S&hape39;
$cF>set'iEhtSill3$cF>addSill32xKK, 2xKK, 2xKK99;
$cF>dra8Oine312, 29;
$cF>dra8Oine32, 129;
$cF>dra8Oine3F12, 29;
$cF>dra8Oine32, F129;
$m > ne8 &7S"o=ie39;
$mF>setLimension3G12, 1J29;
$mF>setZacIEround32xcc, 2xcc, 2xcc9;
// dra8 checIerboard bacIEround
#or 3$y>2; $y<1J2; $y[>129 :
#or 3$x>2; $x<G12; $x[>J29 :
$i > $mF>add3$c9;
$iF>mo=e*o3$x, $y9;
;
$y[>12;
#or 3$x>12; $x<G12; $x[>J29 :
$i > $mF>add3$c9;
$iF>mo=e*o3$x, $y9;
;
;
$mF>add3$s9;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
$mF>output39;
?>
s3fbutton>Beypress
>P&P 8 _^ 8;3;4?
sE(#uttonZ"eypress 22 Returns the action (lag (or "eyPress>char?
Kescription
int s3fbutton>Beypress > string str ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
,2;button(GaddAction
>no version in(ormationA might #e only in 5$?
LF#utton2_addAction 22 Adds an action
Kescription
void s3fbutton(Gaddaction > resource actionA int (lags ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fbutton(Gaddaction./ adds the action act6on to this #utton (or the given conditions; ,he
(olloEing 9laEs are validC LFB@,,ONZMO@+O$+RA LFB@,,ONZMO@+O@,A
LFB@,,ONZMO@+@PA LFB@,,ONZMO@+@PO@,.D+A
LFB@,,ONZMO@+DOLNA LFB@,,ONZDRAGO@, and LFB@,,ONZDRAGO$+R;
ee also s3fbutton(Gaddshape./ and s3faction./;
,2;button(Gadd,hape
>no version in(ormationA might #e only in 5$?
LF#utton2_addhape 22 Adds a shape to a #utton
Kescription
void s3fbutton(Gaddshape > resource shapeA int (lags ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fbutton(Gaddshape./ adds the shape shape to this #utton; ,he (olloEing 9laEsH values are validC
LFB@,,ONZ@PA LFB@,,ONZO$+RA LFB@,,ONZDOLN or LFB@,,ONZ&.,;
LFB@,,ONZ&., isnHt ever displayedA it de(ines the hit region (or the #utton; ,hat isA everyEhere
the hit shape Eould #e draEn is considered a =toucha#le= part o( the #utton;
,2;button(GsetAction
>no version in(ormationA might #e only in 5$?
LF#utton2_setAction 22 ets the action
Kescription
void s3fbutton(Gsetaction > resource action ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fbutton(Gsetaction./ sets the action to #e per(ormed Ehen the #utton is clic"ed; Alias (or
addAction>shapeA LFB@,,ONZMO@+@P?; act6on is a s3faction./;
ee also s3fbutton(Gaddshape./ and s3faction./;
,2;button(Gsetdo3n
>no version in(ormationA might #e only in 5$?
LF#utton2_setdoEn 22 Alias (or addhape>shapeA LFB@,,ONZDOLN?
Kescription
void s3fbutton(Gsetdo3n > resource shape ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fbutton(Gsetdo3n./ alias (or addhape>shapeA LFB@,,ONZDOLN?;
ee also s3fbutton(Gaddshape./ and s3faction./;
,2;button(GsetHit
>no version in(ormationA might #e only in 5$?
LF#utton2_set&it 22 Alias (or addhape>shapeA LFB@,,ONZ&.,?
Kescription
void s3fbutton(Gsethit > resource shape ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fbutton(Gsethit./ alias (or addhape>shapeA LFB@,,ONZ&.,?;
ee also s3fbutton(Gaddshape./ and s3faction./;
,2;button(GsetJ5er
>no version in(ormationA might #e only in 5$?
LF#utton2_setOver 22 Alias (or addhape>shapeA LFB@,,ONZO$+R?
Kescription
void s3fbutton(Gseto5er > resource shape ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fbutton(Gseto5er./ alias (or addhape>shapeA LFB@,,ONZO$+R?;
ee also s3fbutton(Gaddshape./ and s3faction./;
,2;button(Gset)p
>no version in(ormationA might #e only in 5$?
LF#utton2_set@p 22 Alias (or addhape>shapeA LFB@,,ONZ@P?
Kescription
void s3fbutton(Gsetup > resource shape ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fbutton(Gsetup./ alias (or addhape>shapeA LFB@,,ONZ@P?;
ee also s3fbutton(Gaddshape./ and s3faction./;
,2;button
>P&P 8 _^ 8;3;4?
LF#utton 22 5reates a neE Button
Kescription
LFButton s3fbutton > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fbutton./ creates a neE Button; Roll over itA clic" itA see it call action code; Ean";
LFButton has the (olloEing methods C s3fbutton(Gaddshape./A s3fbutton(Gsetup./A s3fbutton(
Gseto5er./ s3fbutton(Gsetdo3n./A s3fbutton(Gsethit./ s3fbutton(Gsetaction./ and s3fbutton(
Gaddaction./;
,his simple eFample Eill shoE your usual interactions Eith #uttons C rolloverA rollonA mouseupA
mousedoEnA noaction;
E'emplo !. s3fbutton./ e+ample
<?php
$# > ne8 &7SSont3"%seri#"9;
$p > ne8 &7S&prite39;
#unction label3$strinE9
:
Elobal $#;
$t > ne8 &7S*extSield39;
$tF>setSont3$#9;
$tF>add&trinE3$strinE9;
$tF>setHeiEht3C229;
$tF>setZounds3<C22, C229;
return $t;
;

#unction addOabel3$strinE9
:
Elobal $p;
$i > $pF>add3label3$strinE99;
$pF>nextSrame39;
$pF>remo=e3$i9;
;
$pF>add3ne8 &7S,ction3"stop39;"99;
addOabel3".? ,R*4?."9;
addOabel3"&7SZ+**?.%"?+&E+"9;
addOabel3"&7SZ+**?.%"?+&EL?7."9;
addOabel3"&7SZ+**?.%"?+&E?(E'"9;
addOabel3"&7SZ+**?.%"?+&E?+*"9;
addOabel3"&7SZ+**?.%"?+&E+?+*&4LE"9;
addOabel3"&7SZ+**?.%L',-?(E'"9;
addOabel3"&7SZ+**?.%L',-?+*"9;
#unction rect3$r, $E, $b9
:
$s > ne8 &7S&hape39;
$sF>set'iEhtSill3$sF>addSill3$r, $E, $b99;
$sF>dra8Oine3G22, 29;
$sF>dra8Oine32, G229;
$sF>dra8Oine3FG22, 29;
$sF>dra8Oine32, FG229;
return $s;
;
$b > ne8 &7SZutton39;
$bF>add&hape3rect32x##, 2, 29, &7SZ+**?.%+ T &7SZ+**?.%H4*9;
$bF>add&hape3rect32, 2x##, 29, &7SZ+**?.%?(E'9;
$bF>add&hape3rect32, 2, 2x##9, &7SZ+**?.%L?7.9;
$bF>add,ction3ne8 &7S,ction3"set*arEet3M/labelM9; EotoSrame369;"9,
&7SZ+**?.%"?+&E+9;
$bF>add,ction3ne8 &7S,ction3"set*arEet3M/labelM9; EotoSrame3C9;"9,
&7SZ+**?.%"?+&EL?7.9;
$bF>add,ction3ne8 &7S,ction3"set*arEet3M/labelM9; EotoSrame3<9;"9,
&7SZ+**?.%"?+&E?(E'9;
$bF>add,ction3ne8 &7S,ction3"set*arEet3M/labelM9; EotoSrame319;"9,
&7SZ+**?.%"?+&E?+*9;
$bF>add,ction3ne8 &7S,ction3"set*arEet3M/labelM9; EotoSrame359;"9,
&7SZ+**?.%"?+&E+?+*&4LE9;
$bF>add,ction3ne8 &7S,ction3"set*arEet3M/labelM9; EotoSrame3G9;"9,
&7SZ+**?.%L',-?(E'9;
,his simple eFample Eill ena#les you to drag draE a #ig red #utton on the EindoEs; No drag2and2
dropA 'ust moving around;
E'emplo *. s3fbutton(Gaddaction./ e+ample
<?php
$s > ne8 &7S&hape39;
$sF>set'iEhtSill3$sF>addSill32x##, 2, 299;
$sF>dra8Oine36222,29;
$sF>dra8Oine32,62229;
$sF>dra8Oine3F6222,29;
$sF>dra8Oine32,F62229;
$b > ne8 &7SZutton39;
$bF>add&hape3$s, &7SZ+**?.%H4* T &7SZ+**?.%+ T &7SZ+**?.%L?7. T &7SZ+**?.%?(E'9;
$bF>add,ction3ne8 &7S,ction3"startLraE3M/testM, 29;"9, // M2M means donMt locI to mouse
&7SZ+**?.%"?+&EL?7.9;
$bF>add,ction3ne8 &7S,ction3"stopLraE39;"9,
&7SZ+**?.%"?+&E+ T &7SZ+**?.%"?+&E+?+*&4LE9;
$p > ne8 &7S&prite39;
$pF>add3$b9;
$pF>nextSrame39;
$m > ne8 &7S"o=ie39;
$i > $mF>add3$p9;
$iF>set.ame3MtestM9;
$iF>mo=e*o36222,62229;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
$mF>output39;
?>
,2;KisplayItem(GaddColor
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_add5olor 22 Adds the given color to this itemHs color trans(orm
Kescription
void s3fdisplayitem(Gaddcolor > Pint red PA int green PA int #lue PA int aQQQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(Gaddcolor./ adds the color to this itemHs color trans(orm; ,he color is given in its
RGB (orm;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
,2;KisplayItem(Gmo5e
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_move 22 Moves o#'ect in relative coordinates
Kescription
void s3fdisplayitem(Gmo5e > int dFA int dy ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(Gmo5e./ moves the current o#'ect #y >#8A#?? (rom its current position;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
ee also s3fdisplayitem(Gmo5eto./;
,2;KisplayItem(Gmo5eTo
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_move,o 22 Moves o#'ect in glo#al coordinates
Kescription
void s3fdisplayitem(Gmo5eto > int FA int y ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(Gmo5eto./ moves the current o#'ect to >8A?? in glo#al coordinates;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
ee also s3fdisplayitem(Gmo5e./;
,2;KisplayItem(GmultColor
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_mult5olor 22 Multiplies the itemHs color trans(orm
Kescription
void s3fdisplayitem(Gmultcolor > Pint red PA int green PA int #lue PA int aQQQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(Gmultcolor./ multiplies the itemHs color trans(orm #y the given values;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
,his simple eFample Eill modi(y your pictureHs atmosphere to &alloEeen >use a landscape or #right
picture?;
E'emplo !. s3fdisplayitem(Gmultcolor./ e+ample
<?php
$b > ne8 &7SZitmap3#ile%Eet%contents3"bacIyard.jpE"99;
// note use your o8n picture @F9
$s > ne8 &7S&hape39;
$sF>set'iEhtSill3$sF>addSill3$b99;
$sF>dra8Oine3$bF>Eet7idth39, 29;
$sF>dra8Oine32, $bF>EetHeiEht399;
$sF>dra8Oine3F$bF>Eet7idth39, 29;
$sF>dra8Oine32, F$bF>EetHeiEht399;
$m > ne8 &7S"o=ie39;
$mF>setLimension3$bF>Eet7idth39, $bF>EetHeiEht399;
$i > $mF>add3$s9;
#or 3$n>2; $n<>C2; [[$n9 :
$iF>multRolor36.2F$n/62, 6.2, 6.29;
$iF>addRolor32x##W$n/C2, 2, 29;
$mF>nextSrame39;
;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
$mF>output39;
?>
,2;KisplayItem(Gremo5e
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_remove 22 Removes the o#'ect (rom the movie
Kescription
void s3fdisplayitem(Gremo5e > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(Gremo5e./ removes this o#'ect (rom the movieHs display list;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
ee also s3fmo5ie(Gadd./;
,2;KisplayItem(GMotate
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_Rotate 22 Rotates in relative coordinates
Kescription
void s3fdisplayitem(Grotate > (loat ddegrees ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(Grotate./ rotates the current o#'ect #y ##eErees degrees (rom its current rotation;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
ee also s3fdisplayitem(Grotateto./;
,2;KisplayItem(GrotateTo
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_rotate,o 22 Rotates the o#'ect in glo#al coordinates
Kescription
void s3fdisplayitem(Grotateto > (loat degrees ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(Grotateto./ set the current o#'ect rotation to #eErees degrees in glo#al coordinates;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
,his eFample #ring three rotating string (rom the #ac"ground to the (oreground; Pretty nice;
E'emplo !. s3fdisplayitem(Grotateto./ e+ample
<?php
$thetext > "minE!";
$# > ne8 &7SSont3"Zauhaus K<.#db"9;
$m > ne8 &7S"o=ie39;
$mF>set'ate3C1.29;
$mF>setLimension3C122, 6G229;
$mF>setZacIEround32x##, 2x##, 2x##9;
// #unctions 8ith huEe numbers o# arbitrary
// arEuments are al8ays a Eood idea! 'eally!
#unction text3$r, $E, $b, $a, $rot, $x, $y, $scale, $strinE9
:
Elobal $#, $m;
$t > ne8 &7S*ext39;
$tF>setSont3$#9;
$tF>setRolor3$r, $E, $b, $a9;
$tF>setHeiEht3KG29;
$tF>mo=e*o3F3$#F>Eet7idth3$strinE99/C, $#F>Eet,scent39/C9;
$tF>add&trinE3$strinE9;
// 8e can add properties just liIe a normal H =ar,
// as lonE as the names arenMt already used.
// e.E., 8e canMt set $iF>scale, because thatMs a #unction
$i > $mF>add3$t9;
$iF>x > $x;
$iF>y > $y;
$iF>rot > $rot;
$iF>s > $scale;
$iF>rotate*o3$rot9;
$iF>scale3$scale, $scale9;
// but the chanEes are local to the #unction, so 8e ha=e to
// return the chanEed object. Iinda 8eird..
return $i;
;
#unction step3$i9
:
$oldrot > $iF>rot;
$iF>rot > 6KW$iF>rot/C2;
$iF>x > 36KW$iF>x [ 6C229/C2;
$iF>y > 36KW$iF>y [ J229/C2;
$iF>s > 36KW$iF>s [ 6.29/C2;
$iF>rotate*o3$iF>rot9;
$iF>scale*o3$iF>s, $iF>s9;
$iF>mo=e*o3$iF>x, $iF>y9;
return $i;
;
// see? it sure paid o## in leEibility@
$i6 > text32x##, 2x<<, 2x<<, 2x##, K22, 6C22, J22, 2.2<, $thetext9;
$iC > text32x22, 2x<<, 2x##, 2xH#, F5G2, 6C22, J22, 2.21, $thetext9;
$i< > text32x##, 2x##, 2x##, 2xK#, 6J2, 6C22, J22, 2.226, $thetext9;
#or 3$i>6; $i<>622; [[$i9 :
$i6 > step3$i69;
$iC > step3$iC9;
$i< > step3$i<9;
$mF>nextSrame39;
;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
ee also s3fdisplayitem(Grotate./;
,2;KisplayItem(Gscale
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_scale 22 cales the o#'ect in relative coordinates
Kescription
void s3fdisplayitem(Gscale > int dFA int dy ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(Gscale./ scales the current o#'ect #y >#8A#?? (rom its current size;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
ee also s3fdisplayitem(Gscaleto./;
,2;KisplayItem(GscaleTo
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_scale,o 22 cales the o#'ect in glo#al coordinates
Kescription
void s3fdisplayitem(Gscaleto > int FA int y ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(Gscaleto./ scales the current o#'ect to >8A?? in glo#al coordinates;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
ee also s3fdisplayitem(Gscale./;
,2;KisplayItem(GsetKepth
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_setDepth 22 ets z2order
Kescription
void s3fdisplayitem(Gsetdepth > (loat depth ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(Gsetdepth./ sets the o#'ectHs z2order to #epth; Depth de(aults to the order in Ehich
instances are created >#y adding a shapeDteFt to a movie?2 neEer ones are on top o( older ones; .(
tEo o#'ects are given the same depthA only the later2de(ined one can #e moved;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
,2;KisplayItem(GsetName
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_setName 22 ets the o#'ectHs name
Kescription
void s3fdisplayitem(Gsetname > string name ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(Gsetname./ sets the o#'ectHs name to nameA (or targetting Eith action script; Only
use(ul on sprites;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
,2;KisplayItem(GsetMatio
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_setRatio 22 ets the o#'ectHs ratio
Kescription
void s3fdisplayitem(Gsetratio > (loat ratio ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(Gsetratio./ sets the o#'ectHs ratio to rat6o; O#viously only use(ul (or morphs;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
,his simple eFample Eill morph nicely three concentric circles;
E'emplo !. s3fdisplayitem(Gsetname./ e+ample
<?php
$p > ne8 &7S"orph39;
$E > ne8 &7S-radient39;
$EF>addEntry32.2, 2, 2, 29;
$EF>addEntry32.6G, 2x##, 2x##, 2x##9;
$EF>addEntry32.<C, 2, 2, 29;
$EF>addEntry32.1J, 2x##, 2x##, 2x##9;
$EF>addEntry32.G1, 2, 2, 29;
$EF>addEntry32.J2, 2x##, 2x##, 2x##9;
$EF>addEntry36.22, 2, 2, 29;
$s > $pF>Eet&hape639;
$# > $sF>addSill3$E, &7SS4OO%',L4,O%-',L4E.*9;
$#F>scale*o32.259;
$sF>setOe#tSill3$#9;
$sF>mo=een*o3F6G2, F6C29;
$sF>dra8Oine3<C2, 29;
$sF>dra8Oine32, C129;
$sF>dra8Oine3F<C2, 29;
$sF>dra8Oine32, FC129;
$E > ne8 &7S-radient39;
$EF>addEntry32.2, 2, 2, 29;
$EF>addEntry32.6G, 2x##, 2, 29;
$EF>addEntry32.<C, 2, 2, 29;
$EF>addEntry32.1J, 2, 2x##, 29;
$EF>addEntry32.G1, 2, 2, 29;
$EF>addEntry32.J2, 2, 2, 2x##9;
$EF>addEntry36.22, 2, 2, 29;
$s > $pF>Eet&hapeC39;
$# > $sF>addSill3$E, &7SS4OO%',L4,O%-',L4E.*9;
$#F>scale*o32.259;
$#F>sIe8X*o36.29;
$sF>setOe#tSill3$#9;
$sF>mo=een*o3F6G2, F6C29;
$sF>dra8Oine3<C2, 29;
$sF>dra8Oine32, C129;
$sF>dra8Oine3F<C2, 29;
$sF>dra8Oine32, FC129;
$m > ne8 &7S"o=ie39;
$mF>setLimension3<C2, C129;
$i > $mF>add3$p9;
$iF>mo=e*o36G2, 6C29;
#or 3$n>2; $n<>6.226; $n[>2.269 :
$iF>set'atio3$n9;
$mF>nextSrame39;
;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
$mF>output39;
?>
,2;KisplayItem(GsBe3I
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_s"eEJ 22 ets the J2s"eE
Kescription
void s3fdisplayitem(GsBe3+ > (loat ddegrees ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(GsBe3+./ adds ##eErees to current F2s"eE;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
ee also s3fdisplayitem(GsBe3+./A s3fdisplayitem(GsBe3y./ and s3fdisplayitem(GsBe3yto./;
,2;KisplayItem(GsBe3ITo
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_s"eEJ,o 22 ets the J2s"eE
Kescription
void s3fdisplayitem(GsBe3+to > (loat degrees ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(GsBe3+to./ sets the F2s"eE to #eErees; For #eErees is 1;3A it means a 842degree
(orEard slant; More is more (orEardA less is more #ac"Eard;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
ee also s3fdisplayitem(GsBe3+./A s3fdisplayitem(GsBe3y./ and s3fdisplayitem(GsBe3yto./;
,2;KisplayItem(GsBe3@
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_s"eE% 22 ets the %2s"eE
Kescription
void s3fdisplayitem(GsBe3y > (loat ddegrees ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(GsBe3y./ adds ##eErees to current y2s"eE;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
ee also s3fdisplayitem(GsBe3yto./A s3fdisplayitem(GsBe3+./ and s3fdisplayitem(GsBe3+to./;
,2;KisplayItem(GsBe3@To
>no version in(ormationA might #e only in 5$?
LFDisplay.tem2_s"eE%,o 22 ets the %2s"eE
Kescription
void s3fdisplayitem(GsBe3yto > (loat degrees ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem(GsBe3yto./ sets the y2s"eE to #eErees; For #eErees is 1;3A it means a 842degree
(orEard slant; More is more upEardA less is more doEnEard;
,he o#'ect may #e a s3fshape./A a s3fbutton./A a s3fte+t./ or a s3fsprite./ o#'ect; .t must have
#een added using the s3fmo5ie(Gadd./;
ee also s3fdisplayitem(GsBe3y./A s3fdisplayitem(GsBe3+./ and s3fdisplayitem(GsBe3+to./;
,2;KisplayItem
>no version in(ormationA might #e only in 5$?
LFDisplay.tem 22 5reates a neE displayitem o#'ect
Kescription
LFDisplay.tem s3fdisplayitem > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fdisplayitem./ creates a neE sE(displayitem o#'ect;
&ereHs Ehere all the animation ta"es place; A(ter you de(ine a shapeA a teFt o#'ectA a spriteA or a
#uttonA you add it to the movieA then use the returned handle to moveA rotateA scaleA or s"eE the
thing;
LFDisplay.tem has the (olloEing methods C s3fdisplayitem(Gmo5e./A s3fdisplayitem(Gmo5eto
./A s3fdisplayitem(Gscaleto./A s3fdisplayitem(Gscale./A s3fdisplayitem(Grotate./A
s3fdisplayitem(Grotateto./A s3fdisplayitem(GsBe3+to./A s3fdisplayitem(GsBe3+./A
s3fdisplayitem(GsBe3yto./ s3fdisplayitem(GsBe3yto./A s3fdisplayitem(Gsetdepth./
s3fdisplayitem(Gremo5e./A s3fdisplayitem(Gsetname./ s3fdisplayitem(Gsetratio./A
s3fdisplayitem(Gaddcolor./ and s3fdisplayitem(Gmultcolor./;
,2;;ill(Gmo5eTo
>no version in(ormationA might #e only in 5$?
LFFill2_move,o 22 Moves (ill origin
Kescription
void s3ffill(Gmo5eto > int FA int y ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3ffill(Gmo5eto./ moves (illHs origin to >8A?? in glo#al coordinates;
,2;;ill(GrotateTo
>no version in(ormationA might #e only in 5$?
LFFill2_rotate,o 22 ets (illHs rotation
Kescription
void s3ffill(Grotateto > (loat degrees ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3ffill(Grotateto./ sets (illHs rotation to #eErees degrees;
,2;;ill(GscaleTo
>no version in(ormationA might #e only in 5$?
LFFill2_scale,o 22 ets (illHs scale
Kescription
void s3ffill(Gscaleto > int FA int y ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3ffill(Gscaleto./ sets (illHs scale to 8 in the F2directionA ? in the y2direction;
,2;;ill(GsBe3ITo
>no version in(ormationA might #e only in 5$?
LFFill2_s"eEJ,o 22 ets (ill F2s"eE
Kescription
void s3ffill(GsBe3+to > (loat F ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3ffill(GsBe3+to./ sets (ill F2s"eE to 8; For 8 is 1;3A it is a 842degree (orEard slant; More is more
(orEardA less is more #ac"Eard;
,2;;ill(GsBe3@To
>no version in(ormationA might #e only in 5$?
LFFill2_s"eE%,o 22 ets (ill y2s"eE
Kescription
void s3ffill(GsBe3yto > (loat y ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3ffill(GsBe3yto./ sets (ill y2s"eE to ?; For ? is 1;3A it is a 842degree upEard slant; More is more
upEardA less is more doEnEard;
,2;;ill
>P&P 8 _^ 8;3;4?
LFFill 22 Loads LFFill o#'ect
Kescription
LFFill s3ffill > void ?
,he s3ffill./ o#'ect alloEs you to trans(orm >scaleA s"eEA rotate? #itmap and gradient (ills; s3ffill./
o#'ects are created #y the s3fshape(Gaddfill./ methods;
LFFill has the (olloEing methodsC s3ffill(Gmo5eto./ and s3ffill(Gscaleto./A s3ffill(Grotateto./A
s3ffill(GsBe3+to./ and s3ffill(GsBe3yto./;
s3ffont(Gget3idth
>no version in(ormationA might #e only in 5$?
sE((ont2_getEidth 22 Returns the stringHs Eidth
Kescription
int s3ffont(Gget3idth > string string ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3ffont(Gget3idth./ returns the string str6nEHs EidthA using (ontHs de(ault scaling; %ouHll pro#a#ly
Eant to use the s3fte+t./ version o( this method Ehich uses the teFt o#'ectHs scale;
,2;;ont
>P&P 8 _^ 8;3;4?
LFFont 22 Loads a (ont de(inition
Kescription
LFFont s3ffont > string (ilename ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
.( 96lename is the name o( an FDB (ile >i;e;A it ends in =;(d#=?A load the (ont de(inition (ound in said
(ile; OtherEiseA create a #roEser2de(ined (ont re(erence;
FDB >=(ont de(inition #loc"=? is a very simple Erapper (or the LF De(ineFont0 #loc" Ehich
contains a (ull description o( a (ont; One may create FDB (iles (rom L, Generator template (iles
Eith the included ma"e(d# utility2 loo" in the util directory o(( the main ming distri#ution directory;
BroEser2de(ined (onts donHt contain any in(ormation a#out the (ont other than its name; .t is
assumed that the (ont de(inition Eill #e provided #y the movie player; ,he (onts Zseri(A ZsansA and
ZtypeEriter should alEays #e availa#le; For eFampleC
<?php
$# > ne8&7SSont3"%sans"9;
?>
Eill give you the standard sans2seri( (ontA pro#a#ly the same as Ehat youHd get Eith $9ont
name:*sans=ser69*& in &,ML;
s3ffont./ returns a re(erence to the (ont de(initionA (or use in the s3fte+t(Gsetfont./ and the
s3fte+tfield(Gsetfont./ methods;
LFFont has the (olloEing methods C s3ffont(Gget3idth./;
,2;Fradient(GaddEntry
>no version in(ormationA might #e only in 5$?
LFGradient2_add+ntry 22 Adds an entry to the gradient list
Kescription
void s3fgradient(Gaddentry > (loat ratioA int redA int greenA int #lue PA int aQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fgradient(Gaddentry./ adds an entry to the gradient list; rat6o is a num#er #etEeen 3 and 1
indicating Ehere in the gradient this color appears; ,hou shalt add entries in order o( increasing
ratio;
re#A EreenA 1lue is a color >RGB mode?; Last parameter a is optional;
,2;Fradient
>P&P 8 _^ 8;3;4?
LFGradient 22 5reates a gradient o#'ect
Kescription
LFGradient s3fgradient > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fgradient./ creates a neE LFGradient o#'ect;
A(ter youHve added the entries to your gradientA you can use the gradient in a shape (ill Eith the
s3fshape(Gaddfill./ method;
LFGradient has the (olloEing methods C s3fgradient(Gaddentry./;
,his simple eFample Eill draE a #ig #lac"2to2Ehite gradient as #ac"groundA and a reddish disc in its
center;
E'emplo !. s3fgradient./ e+ample
<?php
$m > ne8 &7S"o=ie39;
$mF>setLimension3<C2, C129;
$s > ne8 &7S&hape39;
// #irst EradientF blacI to 8hite
$E > ne8 &7S-radient39;
$EF>addEntry32.2, 2, 2, 29;
$EF>addEntry36.2, 2x##, 2x##, 2x##9;
$# > $sF>addSill3$E, &7SS4OO%O4.E,'%-',L4E.*9;
$#F>scale*o32.269;
$#F>mo=e*o36G2, 6C29;
$sF>set'iEhtSill3$#9;
$sF>dra8Oine3<C2, 29;
$sF>dra8Oine32, C129;
$sF>dra8Oine3F<C2, 29;
$sF>dra8Oine32, FC129;
$mF>add3$s9;
$s > ne8 &7S&hape39;
// second EradientF radial Eradient #rom red to transparent
$E > ne8 &7S-radient39;
$EF>addEntry32.2, 2x##, 2, 2, 2x##9;
$EF>addEntry36.2, 2x##, 2, 2, 29;
$# > $sF>addSill3$E, &7SS4OO%',L4,O%-',L4E.*9;
$#F>scale*o32.2259;
$#F>mo=e*o36G2, 6C29;
$sF>set'iEhtSill3$#9;
$sF>dra8Oine3<C2, 29;
$sF>dra8Oine32, C129;
$sF>dra8Oine3F<C2, 29;
$sF>dra8Oine32, FC129;
$mF>add3$s9;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
$mF>output39;
?>
,2;Morph(Ggetshape!
>no version in(ormationA might #e only in 5$?
LFMorph2_getshape1 22 Gets a handle to the starting shape
Kescription
miFed s3fmorph(Ggetshape! > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fmorph(Ggetshape!./ gets a handle to the morphHs starting shape; s3fmorph(Ggetshape!./
returns an s3fshape./ o#'ect;
,2;Morph(Ggetshape*
>no version in(ormationA might #e only in 5$?
LFMorph2_getshape0 22 Gets a handle to the ending shape
Kescription
miFed s3fmorph(Ggetshape* > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fmorph(Ggetshape*./ gets a handle to the morphHs ending shape; s3fmorph(Ggetshape*./
returns an s3fshape./ o#'ect;
,2;Morph
>P&P 8 _^ 8;3;4?
LFMorph 22 5reates a neE LFMorph o#'ect
Kescription
LFMorph s3fmorph > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fmorph./ creates a neE LFMorph o#'ect;
Also called a =shape tEeen=; ,his thing lets you ma"e those tac"y tEisting things that ma"e your
computer cho"e; OhA 'oya
,he methods here are sort o( Eeird; .t Eould ma"e more sense to 'ust have neELFMorph>shape1A
shape0?XA #ut as things are noEA shape0 needs to "noE that itHs the second part o( a morph; >,hisA
#ecause it starts Eriting its output as soon as it gets draEing commands2 i( it "ept its oEn
description o( its shapes and Erote on completion this and some other things Eould #e much easier;?
LFMorph has the (olloEing methods C s3fmorph(Ggetshape!./ and s3fmorph(Ggetshape!./;
,his simple eFample Eill morph a #ig red s/uare into a smaller #lue #lac"2#ordered s/uare;
E'emplo !. s3fmorph./ e+ample
<?php
$p > ne8 &7S"orph39;
$s > $pF>Eet&hape639;
$sF>setOine32, 2, 2, 29;
/W .ote that this is bacI8ards #rom normal shapes 3le#t instead o# riEht9.
4 ha=e no idea 8hy, but this seems to 8orI.. W/
$sF>setOe#tSill3$sF>addSill32x##, 2, 299;
$sF>mo=een*o3F6222,F62229;
$sF>dra8Oine3C222,29;
$sF>dra8Oine32,C2229;
$sF>dra8Oine3FC222,29;
$sF>dra8Oine32,FC2229;
$s > $pF>Eet&hapeC39;
$sF>setOine3G2,2,2,29;
$sF>setOe#tSill3$sF>addSill32, 2, 2x##99;
$sF>mo=een*o32,F62229;
$sF>dra8Oine36222,62229;
$sF>dra8Oine3F6222,62229;
$sF>dra8Oine3F6222,F62229;
$sF>dra8Oine36222,F62229;
$m > ne8 &7S"o=ie39;
$mF>setLimension3<222,C2229;
$mF>setZacIEround32x##, 2x##, 2x##9;
$i > $mF>add3$p9;
$iF>mo=e*o36522,62229;
#or 3$r>2.2; $r<>6.2; $r[>2.69 :
$iF>set'atio3$r9;
$mF>nextSrame39;
;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
$mF>output39;
?>
,2;Mo5ie(Gadd
>no version in(ormationA might #e only in 5$?
LFMovie2_add 22 Adds any type o( data to a movie
Kescription
void s3fmo5ie(Gadd > resource instance ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fmo5ie(Gadd./ adds 6nstance to the current movie; 6nstance is any type o( data C hapesA teFtA
(ontsA etc; must all #e added to the movie to ma"e this Eor";
For displaya#le types >shapeA teFtA #uttonA sprite?A this returns an s3fdisplayitem./A a handle to the
o#'ect in a display list; ,husA you can add the same shape to a movie multiple times and get separate
handles #ac" (or each separate instance;
ee also all other o#'ects >adding this later?A and s3fmo5ie(Gremo5e./
ee eFamples in C s3fdisplayitem(Grotateto./ and s3fshape(Gaddfill./;
,2;Mo5ie(Gne+tframe
>no version in(ormationA might #e only in 5$?
LFMovie2_neFt(rame 22 Moves to the neFt (rame o( the animation
Kescription
void s3fmo5ie(Gne+tframe > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fmo5ie(Gne+tframe./ moves to the neFt (rame o( the animation;
,2;Mo5ie(Goutput
>no version in(ormationA might #e only in 5$?
LFMovie2_output 22 Dumps your lovingly prepared movie out
Kescription
int s3fmo5ie(Goutput > Pint compressionQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fmo5ie(Goutput./ dumps your lovingly prepared movie out; .n P&PA preceding this Eith the
command
<?php
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
?>
convinces the #roEser to display this as a (lash movie;
,he compress6on level can #e a value #etEeen 3 and 9A de(ining the sE( compression similar to gzip
compression;
ee also s3fmo5ie(Gsa5e./;
ee eFamples in C s3fmo5ie(Gstreammp7./A s3fdisplayitem(Grotateto./A s3faction./;;; Any
eFample Eill use this method;
s3fmo5ie(Gremo5e
>no version in(ormationA might #e only in 5$?
sE(movie2_remove 22 Removes the o#'ect instance (rom the display list
Kescription
void s3fmo5ie(Gremo5e > resource instance ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fmo5ie(Gremo5e./ removes the o#'ect instance 6nstance (rom the display list;
ee also s3fmo5ie(Gadd./;
,2;Mo5ie(Gsa5e
>no version in(ormationA might #e only in 5$?
LFMovie2_save 22 aves your movie in a (ile
Kescription
int s3fmo5ie(Gsa5e > string (ilename PA int compressionQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fmo5ie(Gsa5e./ saves your movie to the (ile named 96lename;
,he compress6on level can #e a value #etEeen 3 and 9A de(ining the sE( compression similar to gzip
compression;
ee also s3fmo5ie(Goutput./;
,2;Mo5ie(GsetbacBground
>no version in(ormationA might #e only in 5$?
LFMovie2_set#ac"ground 22 ets the #ac"ground color
Kescription
void s3fmo5ie(GsetbacBground > int redA int greenA int #lue ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fmo5ie(GsetbacBground./ sets the #ac"ground color; Lhy is there no rg#a versionN ,hin" a#out
it; >ActuallyA thatHs not such a dum# /uestion a(ter all2 you might Eant to let the &,ML #ac"ground
shoE through; ,hereHs a Eay to do thatA #ut it only Eor"s on .+8; earch the
httpCDDEEE;macromedia;comD site (or details;?
,2;Mo5ie(Gsetdimension
>no version in(ormationA might #e only in 5$?
LFMovie2_setdimension 22 ets the movieHs Eidth and height
Kescription
void s3fmo5ie(Gsetdimension > int EidthA int height ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fmo5ie(Gsetdimension./ sets the movieHs Eidth to 76#th and height to he6Eht;
,2;Mo5ie(Gsetframes
>no version in(ormationA might #e only in 5$?
LFMovie2_set(rames 22 ets the total num#er o( (rames in the animation
Kescription
void s3fmo5ie(Gsetframes > string num#ero((rames ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fmo5ie(Gsetframes./ sets the total num#er o( (rames in the animation to num1ero99rames;
,2;Mo5ie(Gsetrate
>no version in(ormationA might #e only in 5$?
LFMovie2_setrate 22 ets the animationHs (rame rate
Kescription
void s3fmo5ie(Gsetrate > int rate ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fmo5ie(Gsetrate./ sets the (rame rate to rateA in (rame per seconds; Animation Eill sloE doEn i(
the player canHt render (rames (ast enough2 unless thereHs a streaming soundA in Ehich case display
(rames are sacri(iced to "eep sound (rom s"ipping;
,2;Mo5ie(Gstreammp7
>no version in(ormationA might #e only in 5$?
LFMovie2_streammp7 22 treams a MP7 (ile
Kescription
void s3fmo5ie(Gstreammp7 > miFed mp7File ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fmo5ie(Gstreammp7./ streams the mp7 (ile mpR36le; Not very ro#ust in dealing Eith oddities
>can s"ip over an initial .D7 tagA #ut thatHs a#out it?; Li"e s3fshape(Gadd'pegfill./A this isnHt a sta#le
(unction2 EeHll pro#a#ly need to ma"e a separate LFound o#'ect to contain sound types;
Parameter mpR36le can #e a fopen./ resource or a #inary string;
Note that the movie isnHt smart enough to put enough (rames in to contain the entire mp7 stream2
youHll have to add >length o( song V (rames per second? (rames to get the entire stream in;
%esA noE you can use ming to put that roc" and roll devil Eorship music into your LF (iles; !ust
donHt tell the R.AA;
E'emplo !. s3fmo5ie(Gstreammp7./ e+ample
<?php
$m > ne8 &7S"o=ie39;
$mF>set'ate36C.29;
$mF>stream"p<3#ile%Eet%contents3"distortobass.mp<"99;
// use your o8n "<
// 66.J5 seconds at 6C.2 #ps > 61C #rames
$mF>setSrames361C9;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
$mF>output39;
?>
,2;Mo5ie
>P&P 8 _^ 8;3;4?
LFMovie 22 5reates a neE movie o#'ectA representing an LF version 8 movie
Kescription
LFMovie s3fmo5ie > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fmo5ie./ creates a neE movie o#'ectA representing an LF version 8 movie;
LFMovie has the (olloEing methods C s3fmo5ie(Goutput./As3fmo5ie(Gsa5e./A s3fmo5ie(Gadd
./A s3fmo5ie(Gremo5e./A s3fmo5ie(Gne+tframe./A s3fmo5ie(GsetbacBground./A s3fmo5ie(
Gsetrate./A s3fmo5ie(Gsetdimension./A s3fmo5ie(Gsetframes./ and s3fmo5ie(Gstreammp7./;
ee eFamples in C s3fdisplayitem(Grotateto./A s3fshape(Gsetline./A s3fshape(Gaddfill./;;; Any
eFample Eill use this o#'ect;
,2;,hape(Gadd;ill
>no version in(ormationA might #e only in 5$?
LFhape2_addFill 22 Adds a solid (ill to the shape
Kescription
LFFill ,2;,hape(Gadd;ill > int redA int greenA int #lue PA int aQ ?
LFFill ,2;,hape(Gadd;ill > LFBitmap #itmap PA int (lagsQ ?
LFFill ,2;,hape(Gadd;ill > LFGradient gradient PA int (lagsQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
,2;,hape(Gadd;ill./ adds a solid (ill to the shapeHs list o( (ill styles; ,2;,hape(Gadd;ill./
accepts three di((erent types o( arguments;
re#A EreenA 1lue is a color >RGB mode?; Last parameter a is optional;
,he 16tmap argument is an ,2;1itmap./ o#'ect; ,he 9laEs argument can #e one o( the (olloEing
valuesC LFF.LLZ5L.PP+DZB.,MAPA LFF.LLZ,.L+DZB.,MAPA
LFF.LLZL.N+ARZGRAD.+N, or LFF.LLZRAD.ALZGRAD.+N,; De(ault is
LFF.LLZ,.L+DZB.,MAP (or LFBitmap and LFF.LLZL.N+ARZGRAD.+N, (or
LFGradient;
,he Era#6ent argument is an ,2;Fradient./ o#'ect; ,he (lags argument can #e one o( the
(olloEing values C LFF.LLZRAD.ALZGRAD.+N, or LFF.LLZL.N+ARZGRAD.+N,; De(ault
is LFF.LLZL.N+ARZGRAD.+N,; .Hm sure a#out this one; Really;
,2;,hape(Gadd;ill./ returns an ,2;;ill./ o#'ect (or use Eith the ,2;,hape(Gset:eft;ill./ and
,2;,hape(GsetMight;ill./ (unctions descri#ed #eloE;
,his simple eFample Eill draE a (rame on a #itmap; AhA hereHs another #uglet in the (lash player2 it
doesnHt seem to care a#out the second shapeHs #itmapHs trans(ormation in a morph; According to
specA the #itmap should stretch along Eith the shape in this eFample;;
E'emplo !. ,2;,hape(Gadd;ill./ e+ample
<?php
$p > ne8 &7S"orph39;
$b > ne8 &7SZitmap3#ile%Eet%contents3"alpha#ill.jpE"99;
// use your o8n bitmap
$8idth > $bF>Eet7idth39;
$heiEht > $bF>EetHeiEht39;
$s > $pF>Eet&hape639;
$# > $sF>addSill3$b, &7SS4OO%*4OEL%Z4*",9;
$#F>mo=e*o3F$8idth/C, F$heiEht/19;
$#F>scale*o36.2, 2.59;
$sF>setOe#tSill3$#9;
$sF>mo=een*o3F$8idth/C, F$heiEht/19;
$sF>dra8Oine3$8idth, 29;
$sF>dra8Oine32, $heiEht/C9;
$sF>dra8Oine3F$8idth, 29;
$sF>dra8Oine32, F$heiEht/C9;
$s > $pF>Eet&hapeC39;
$# > $sF>addSill3$b, &7SS4OO%*4OEL%Z4*",9;
// these t8o ha=e no e##ect!
$#F>mo=e*o3F$8idth/1, F$heiEht/C9;
$#F>scale*o32.5, 6.29;
$sF>setOe#tSill3$#9;
$sF>mo=een*o3F$8idth/1, F$heiEht/C9;
$sF>dra8Oine3$8idth/C, 29;
$sF>dra8Oine32, $heiEht9;
$sF>dra8Oine3F$8idth/C, 29;
$sF>dra8Oine32, F$heiEht9;
$m > ne8 &7S"o=ie39;
$mF>setLimension3$8idth, $heiEht9;
$i > $mF>add3$p9;
$iF>mo=e*o3$8idth/C, $heiEht/C9;
#or 3$n>2; $n<6.226; $n[>2.2<9 :
$iF>set'atio3$n9;
$mF>nextSrame39;
;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
$mF>output39;
?>
ee also ,2;,hape(Gset:eft;ill./ and ,2;,hape(GsetMight;ill./;
,2;,hape(Gdra3Cur5e
>no version in(ormationA might #e only in 5$?
LFhape2_draE5urve 22 DraEs a curve >relative?
Kescription
void s3fshape(Gdra3cur5e > int controldFA int controldyA int anchordFA int anchordy ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fshape(Gdra3cur5e./ draEs a /uadratic curve >using the current line styleAset #y s3fshape(
Gsetline./? (rom the current pen position to the relative position >anchor8Aanchor?? using relative
control point >control8Acontrol??; ,hat isA head toEards the control pointA then smoothly turn to the
anchor point;
ee also s3fshape(Gdra3lineto./A s3fshape(Gdra3line./A s3fshape(Gmo5epento./ and
s3fshape(Gmo5epen./;
,2;,hape(Gdra3Cur5eTo
>no version in(ormationA might #e only in 5$?
LFhape2_draE5urve,o 22 DraEs a curve
Kescription
void s3fshape(Gdra3cur5eto > int controlFA int controlyA int anchorFA int anchory ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fshape(Gdra3cur5eto./ draEs a /uadratic curve >using the current line styleA set #y s3fshape(
Gsetline./? (rom the current pen position to >anchor8Aanchor?? using >control8Acontrol?? as a control
point; ,hat isA head toEards the control pointA then smoothly turn to the anchor point;
ee also s3fshape(Gdra3lineto./A s3fshape(Gdra3line./A s3fshape(Gmo5epento./ and
s3fshape(Gmo5epen./;
,2;,hape(Gdra3:ine
>no version in(ormationA might #e only in 5$?
LFhape2_draELine 22 DraEs a line >relative?
Kescription
void s3fshape(Gdra3line > int dFA int dy ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fshape(Gdra3line./ draEs a line >using the current line style set #y s3fshape(Gsetline./? (rom
the current pen position to displacement >#8A#??;
ee also s3fshape(Gmo5epento./A s3fshape(Gdra3cur5eto./A s3fshape(Gmo5epen./ and
s3fshape(Gdra3lineto./;
,2;,hape(Gdra3:ineTo
>no version in(ormationA might #e only in 5$?
LFhape2_draELine,o 22 DraEs a line
Kescription
void s3fshape(Gdra3lineto > int FA int y ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fshape(Gsetrightfill./ draEs a line >using the current line styleA set #y s3fshape(Gsetline./? (rom
the current pen position to point >8A?? in the shapeHs coordinate space;
ee also s3fshape(Gmo5epento./A s3fshape(Gdra3cur5eto./A s3fshape(Gmo5epen./ and
s3fshape(Gdra3line./;
,2;,hape(Gmo5ePen
>no version in(ormationA might #e only in 5$?
LFhape2_movePen 22 Moves the shapeHs pen >relative?
Kescription
void s3fshape(Gmo5epen > int dFA int dy ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fshape(Gsetrightfill./ move the shapeHs pen (rom coordinates >current FAcurrent y? to >current F R
#8A current y R #?? in the shapeHs coordinate space;
ee also s3fshape(Gmo5epento./A s3fshape(Gdra3cur5eto./A s3fshape(Gdra3lineto./ and
s3fshape(Gdra3line./;
,2;,hape(Gmo5ePenTo
>no version in(ormationA might #e only in 5$?
LFhape2_movePen,o 22 Moves the shapeHs pen
Kescription
void s3fshape(Gmo5epento > int FA int y ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fshape(Gsetrightfill./ move the shapeHs pen to >8A?? in the shapeHs coordinate space;
ee also s3fshape(Gmo5epen./A s3fshape(Gdra3cur5eto./A s3fshape(Gdra3lineto./ and
s3fshape(Gdra3line./;
,2;,hape(Gset:eft;ill
>no version in(ormationA might #e only in 5$?
LFhape2_setLe(tFill 22 ets le(t rasterizing color
Kescription
void s3fshape(Gsetleftfill > sE(gradient (ill ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
void s3fshape(Gsetleftfill > int redA int greenA int #lue PA int aQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Lhat this nonsense is a#out isA every edge segment #orders at most tEo (ills; Lhen rasterizing the
o#'ectA itHs pretty handy to "noE Ehat those (ills are ahead o( timeA so the sE( (ormat re/uires these
to #e speci(ied;
s3fshape(Gsetleftfill./ sets the (ill on the le(t side o( the edge2 that isA on the interior i( youHre
de(ining the outline o( the shape in a counter2cloc"Eise (ashion; ,he (ill o#'ect is an LFFill o#'ect
returned (rom one o( the addFill (unctions a#ove;
,his seems to #e reversed Ehen youHre de(ining a shape in a morphA though; .( your #roEser crashesA
'ust try setting the (ill on the other side;
hortcut (or s79shape=&setle9t96llL's=&a##96llL'rC 'EC '1 )C 'a.MMJ;
ee also s3fshape(Gsetrightfill./;
,2;,hape(Gset:ine
>no version in(ormationA might #e only in 5$?
LFhape2_setLine 22 ets the shapeHs line style
Kescription
void s3fshape(Gsetline > int Eidth PA int red PA int green PA int #lue PA int aQQQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fshape(Gsetline./ sets the shapeHs line style; 76#th is the lineHs Eidth; .( 76#th is 3A the lineHs style
is removed >thenA all other arguments are ignored?; .( 76#th _ 3A then lineHs color is set to re#A EreenA
1lue; Last parameter a is optional;
s3fshape(Gsetline./ accepts 1A 8 or 4 arguments >not 7 or 0?;
%ou must declare all line styles #e(ore you use them >see eFample?;
,his simple eFample Eill draE a #ig =anbVG=A in (unny colors and gracious style;
E'emplo !. s3fshape(Gsetline./ e+ample
<?php
$s > ne8 &7S&hape39;
$#6 > $sF>addSill32x##, 2, 29;
$#C > $sF>addSill32x##, 2xH#, 29;
$#< > $sF>addSill32x##, 2x##, 29;
$#1 > $sF>addSill32, 2x##, 29;
$#5 > $sF>addSill32, 2, 2x##9;
// buE@ ha=e to declare all line styles be#ore you use them
$sF>setOine312, 2xH#, 2, 29;
$sF>setOine312, 2xH#, 2x<#, 29;
$sF>setOine312, 2xH#, 2xH#, 29;
$sF>setOine312, 2, 2xH#, 29;
$sF>setOine312, 2, 2, 2xH#9;
$# > ne8 &7SSont3M*echno.#dbM9;
$sF>set'iEhtSill3$#69;
$sF>setOine312, 2xH#, 2, 29;
$sF>dra8-lyph3$#, M!M9;
$sF>mo=een3$#F>Eet7idth3M!M9, 29;
$sF>set'iEhtSill3$#C9;
$sF>setOine312, 2xH#, 2x<#, 29;
$sF>dra8-lyph3$#, MUM9;
$sF>mo=een3$#F>Eet7idth3MUM9, 29;
$sF>set'iEhtSill3$#<9;
$sF>setOine312, 2xH#, 2xH#, 29;
$sF>dra8-lyph3$#, M\M9;
$sF>mo=een3$#F>Eet7idth3M\M9, 29;
$sF>set'iEhtSill3$#19;
$sF>setOine312, 2, 2xH#, 29;
$sF>dra8-lyph3$#, MWM9;
$sF>mo=een3$#F>Eet7idth3MWM9, 29;
$sF>set'iEhtSill3$#59;
$sF>setOine312, 2, 2, 2xH#9;
$sF>dra8-lyph3$#, M^M9;
$m > ne8 &7S"o=ie39;
$mF>setLimension3<222,C2229;
$mF>set'ate36C.29;
$i > $mF>add3$s9;
$iF>mo=e*o36522F$#F>Eet7idth3"!U\W^"9/C, 6222[$#F>Eet,scent39/C9;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
$mF>output39;
?>
,2;,hape(GsetMight;ill
>no version in(ormationA might #e only in 5$?
LFhape2_setRightFill 22 ets right rasterizing color
Kescription
void s3fshape(Gsetrightfill > sE(gradient (ill ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
void s3fshape(Gsetrightfill > int redA int greenA int #lue PA int aQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ee also s3fshape(Gsetleftfill./;
hortcut (or s79shape=&setr6Eht96llL's=&a##96llL'rC 'EC '1 )C 'a.MMJ;
,2;,hape
>P&P 8 _^ 8;3;4?
LFhape 22 5reates a neE shape o#'ect
Kescription
LFhape s3fshape > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fshape./ creates a neE shape o#'ect;
LFhape has the (olloEing methods C s3fshape(Gsetline./A s3fshape(Gaddfill./A s3fshape(
Gsetleftfill./A s3fshape(Gsetrightfill./A s3fshape(Gmo5epento./A s3fshape(Gmo5epen./A
s3fshape(Gdra3lineto./A s3fshape(Gdra3line./A s3fshape(Gdra3cur5eto./ and s3fshape(
Gdra3cur5e./;
,his simple eFample Eill draE a #ig red elliptic /uadrant;
E'emplo !. s3fshape./ e+ample
<?php
$s > ne8 &7S&hape39;
$sF>setOine312, 2xH#, 2, 29;
$sF>set'iEhtSill3$sF>addSill32x##, 2, 299;
$sF>mo=een*o3C22, C229;
$sF>dra8Oine*o3GC22, C229;
$sF>dra8Oine*o3GC22, 1G229;
$sF>dra8Rur=e*o3C22, 1G22, C22, C229;
$m > ne8 &7S"o=ie39;
$mF>setLimension3G122, 1J229;
$mF>set'ate36C.29;
$mF>add3$s9;
$mF>nextSrame39;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
$mF>output39;
?>
s3fsprite(Gadd
>no version in(ormationA might #e only in 5$?
sE(sprite2_add 22 Adds an o#'ect to a sprite
Kescription
void s3fsprite(Gadd > resource o#'ect ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fsprite(Gadd./ adds a s3fshape./A a s3fbutton./A a s3fte+t./A a s3faction./ or a s3fsprite./
o#'ect;
For displaya#le types >s3fshape./A s3fbutton./A s3fte+t./A s3faction./ or s3fsprite./?A this returns
a handle to the o#'ect in a display list;
,2;,prite(Gne+tframe
>no version in(ormationA might #e only in 5$?
LFprite2_neFt(rame 22 Moves to the neFt (rame o( the animation
Kescription
void s3fsprite(Gne+tframe > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fsprite(Gsetframes./ moves to the neFt (rame o( the animation;
,2;,prite(Gremo5e
>no version in(ormationA might #e only in 5$?
LFprite2_remove 22 Removes an o#'ect to a sprite
Kescription
void s3fsprite(Gremo5e > resource o#'ect ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fsprite(Gremo5e./ remove a s3fshape./A a s3fbutton./A a s3fte+t./A a s3faction./ or a
s3fsprite./ o#'ect (rom the sprite;
,2;,prite(Gsetframes
>no version in(ormationA might #e only in 5$?
LFprite2_set(rames 22 ets the total num#er o( (rames in the animation
Kescription
void s3fsprite(Gsetframes > int num#ero((rames ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fsprite(Gsetframes./ sets the total num#er o( (rames in the animation to num1ero99rames;
,2;,prite
>P&P 8 _^ 8;3;4?
LFprite 22 5reates a movie clip >a sprite?
Kescription
LFprite s3fsprite > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fsprite./ are also "noEn as a =movie clip=A this alloEs one to create o#'ects Ehich are animated
in their oEn timelines; &enceA the sprite has most o( the same methods as the movie;
s3fsprite./ has the (olloEing methods C s3fsprite(Gadd./A s3fsprite(Gremo5e./A s3fsprite(
Gne+tframe./ and s3fsprite(Gsetframes./;
,his simple eFample Eill spin grace(ully a #ig red s/uare;
E'emplo !. s3fsprite./ e+ample
<?php
$s > ne8 &7S&hape39;
$sF>set'iEhtSill3$sF>addSill32x##, 2, 299;
$sF>mo=een*o3F522, F5229;
$sF>dra8Oine*o3522, F5229;
$sF>dra8Oine*o3522, 5229;
$sF>dra8Oine*o3F522, 5229;
$sF>dra8Oine*o3F522, F5229;
$p > ne8 &7S&prite39;
$i > $pF>add3$s9;
$pF>nextSrame39;
$iF>rotate3659;
$pF>nextSrame39;
$iF>rotate3659;
$pF>nextSrame39;
$iF>rotate3659;
$pF>nextSrame39;
$iF>rotate3659;
$pF>nextSrame39;
$iF>rotate3659;
$pF>nextSrame39;
$m > ne8 &7S"o=ie39;
$i > $mF>add3$p9;
$iF>mo=e*o36522, 62229;
$iF>set.ame3"blah"9;
$mF>setZacIEround32x##, 2x##, 2x##9;
$mF>setLimension3<222, C2229;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
$mF>output39;
?>
,2;Te+t(Gadd,tring
>no version in(ormationA might #e only in 5$?
LF,eFt2_addtring 22 DraEs a string
Kescription
void s3fte+t(Gaddstring > string string ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+t(Gaddstring./ draEs the string str6nE at the current pen >cursor? location; Pen is at the
#aseline o( the teFtX i;e;A ascending teFt is in the 2y direction;
,2;Te+t(Gget2idth
>no version in(ormationA might #e only in 5$?
LF,eFt2_getLidth 22 5omputes stringHs Eidth
Kescription
void s3fte+t(Gget3idth > string string ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+t(Gaddstring./ returns the rendered Eidth o( the str6nE string at the teFt o#'ectHs current (ontA
scaleA and spacing settings;
,2;Te+t(Gmo5eTo
>no version in(ormationA might #e only in 5$?
LF,eFt2_move,o 22 Moves the pen
Kescription
void s3fte+t(Gmo5eto > int FA int y ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+t(Gmo5eto./ moves the pen >or cursorA i( that ma"es more sense? to >8A?? in teFt o#'ectHs
coordinate space; .( either is zeroA thoughA value in that dimension stays the same; AnnoyingA should
#e (iFed;
,2;Te+t(GsetColor
>no version in(ormationA might #e only in 5$?
LF,eFt2_set5olor 22 ets the current (ont color
Kescription
void s3fte+t(Gsetcolor > int redA int greenA int #lue PA int aQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+t(Gsetspacing./ changes the current teFt color; De(ault is #lac"; . thin"; 5olor is represented
using the RGB system;
,2;Te+t(Gset;ont
>no version in(ormationA might #e only in 5$?
LF,eFt2_setFont 22 ets the current (ont
Kescription
void s3fte+t(Gsetfont > string (ont ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+t(Gsetfont./ sets the current (ont to 9ont;
,2;Te+t(GsetHeight
>no version in(ormationA might #e only in 5$?
LF,eFt2_set&eight 22 ets the current (ont height
Kescription
void s3fte+t(Gsetheight > int height ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+t(Gsetheight./ sets the current (ont height to he6Eht; De(ault is 083;
,2;Te+t(Gset,pacing
>no version in(ormationA might #e only in 5$?
LF,eFt2_setpacing 22 ets the current (ont spacing
Kescription
void s3fte+t(Gsetspacing > (loat spacing ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+t(Gsetspacing./ sets the current (ont spacing to spac6nEspac6nE; De(ault is 1;3; 3 is all o( the
letters Eritten at the same point; ,his doesnHt really Eor" that Eell #ecause it in(lates the advance
across the letterA doesnHt add the same amount o( spacing #etEeen the letters; . should try and
eFplain that #etterA prolly; Or 'ust (iF the damn thing to do constant spacing; ,his Eas really 'ust a
Eay to (igure out hoE letter advances Eor"A anyEay;; o nyah;
,2;Te+t
>P&P 8 _^ 8;3;4?
LF,eFt 22 5reates a neE LF,eFt o#'ect
Kescription
LF,eFt s3fte+t > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+t./ creates a neE LF,eFt o#'ectA (resh (or manipulating;
LF,eFt has the (olloEing methods C s3fte+t(Gsetfont./A s3fte+t(Gsetheight./A s3fte+t(
Gsetspacing./A s3fte+t(Gsetcolor./A s3fte+t(Gmo5eto./A s3fte+t(Gaddstring./ and s3fte+t(
Gget3idth./;
,his simple eFample Eill draE a #ig yelloE =P&P generates Flash Eith Ming= teFtA on Ehite
#ac"ground;
E'emplo !. s3fte+t./ e+ample
<?php
$# > ne8 &7SSont3"*echno.#db"9;
$t > ne8 &7S*ext39;
$tF>setSont3$#9;
$tF>mo=e*o3C22, C1229;
$tF>setRolor32x##, 2x##, 29;
$tF>setHeiEht36C229;
$tF>add&trinE3"H Eenerates Slash 8ith "inE!!"9;
$m > ne8 &7S"o=ie39;
$mF>setLimension35122, <G229;
$mF>add3$t9;
header3MRontentFtype@ application/xFshocI8a=eF#lashM9;
$mF>output39;
?>
,2;Te+t;ield(Gaddstring
>no version in(ormationA might #e only in 5$?
LF,eFtField2_addstring 22 5oncatenates the given string to the teFt (ield
Kescription
void s3fte+tfield(Gaddstring > string string ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+tfield(Gsetname./ concatenates the string str6nE to the teFt (ield;
,2;Te+t;ield(Galign
>no version in(ormationA might #e only in 5$?
LF,eFtField2_align 22 ets the teFt (ield alignment
Kescription
void s3fte+tfield(Galign > int alignement ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+tfield(Galign./ sets the teFt (ield alignment to al6Enement; $alid values (or al6Enement are C
LF,+J,F.+LDZAL.GNZL+F,A LF,+J,F.+LDZAL.GNZR.G&,A
LF,+J,F.+LDZAL.GNZ5+N,+R and LF,+J,F.+LDZAL.GNZ!@,.F%;
,2;Te+t;ield(Gsetbounds
>no version in(ormationA might #e only in 5$?
LF,eFtField2_set#ounds 22 ets the teFt (ield Eidth and height
Kescription
void s3fte+tfield(Gsetbounds > int EidthA int height ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+tfield(Gsetbounds./ sets the teFt (ield Eidth to 76#th and height to he6Eht; .( you donHt set the
#ounds yoursel(A Ming ma"es a poor guess at Ehat the #ounds are;
,2;Te+t;ield(Gsetcolor
>no version in(ormationA might #e only in 5$?
LF,eFtField2_setcolor 22 ets the color o( the teFt (ield
Kescription
void s3fte+tfield(Gsetcolor > int redA int greenA int #lue PA int aQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+tfield(Gsetcolor./ sets the color o( the teFt (ield; De(ault is (ully opa/ue #lac"; 5olor is
represented using RGB system;
,2;Te+t;ield(Gset;ont
>no version in(ormationA might #e only in 5$?
LF,eFtField2_setFont 22 ets the teFt (ield (ont
Kescription
void s3fte+tfield(Gsetfont > string (ont ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+tfield(Gsetfont./ sets the teFt (ield (ont to the P#roEser2de(inedNQ 9ont (ont;
,2;Te+t;ield(GsetHeight
>no version in(ormationA might #e only in 5$?
LF,eFtField2_set&eight 22 ets the (ont height o( this teFt (ield (ont
Kescription
void s3fte+tfield(Gsetheight > int height ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+tfield(Gsetheight./ sets the (ont height o( this teFt (ield (ont to the given height he6Eht;
De(ault is 083;
,2;Te+t;ield(Gsetindentation
>no version in(ormationA might #e only in 5$?
LF,eFtField2_setindentation 22 ets the indentation o( the (irst line
Kescription
void s3fte+tfield(Gsetindentation > int Eidth ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+tfield(Gsetindentation./ sets the indentation o( the (irst line in the teFt (ieldA to 76#th;
,2;Te+t;ield(Gset:eftMargin
>no version in(ormationA might #e only in 5$?
LF,eFtField2_setLe(tMargin 22 ets the le(t margin Eidth o( the teFt (ield
Kescription
void s3fte+tfield(Gsetleftmargin > int Eidth ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+tfield(Gsetleftmargin./ sets the le(t margin Eidth o( the teFt (ield to 76#th; De(ault is 3;
,2;Te+t;ield(Gset:ine,pacing
>no version in(ormationA might #e only in 5$?
LF,eFtField2_setLinepacing 22 ets the line spacing o( the teFt (ield
Kescription
void s3fte+tfield(Gsetlinespacing > int height ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+tfield(Gsetlinespacing./ sets the line spacing o( the teFt (ield to the height o( he6Eht; De(ault
is 83;
,2;Te+t;ield(GsetMargins
>no version in(ormationA might #e only in 5$?
LF,eFtField2_setMargins 22 ets the margins Eidth o( the teFt (ield
Kescription
void s3fte+tfield(Gsetmargins > int le(tA int right ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+tfield(Gsetmargins./ set #oth margins at onceA (or the man on the go;
,2;Te+t;ield(Gsetname
>no version in(ormationA might #e only in 5$?
LF,eFtField2_setname 22 ets the varia#le name
Kescription
void s3fte+tfield(Gsetname > string name ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+tfield(Gsetname./ sets the varia#le name o( this teFt (ield to nameA (or (orm posting and
action scripting purposes;
,2;Te+t;ield(GsetrightMargin
>no version in(ormationA might #e only in 5$?
LF,eFtField2_setrightMargin 22 ets the right margin Eidth o( the teFt (ield
Kescription
void s3fte+tfield(Gsetrightmargin > int Eidth ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+tfield(Gsetrightmargin./ sets the right margin Eidth o( the teFt (ield to 76#th; De(ault is 3;
,2;Te+t;ield
>P&P 8 _^ 8;3;4?
LF,eFtField 22 5reates a teFt (ield o#'ect
Kescription
LF,eFtField s3fte+tfield > Pint (lagsQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
s3fte+tfield./ creates a neE teFt (ield o#'ect; ,eFt Fields are less (leFi#le than s3fte+t./ o#'ects2
they canHt #e rotatedA scaled non2proportionallyA or s"eEedA #ut they can #e used as (orm entriesA and
they can use #roEser2de(ined (onts;
,he optional (lags change the teFt (ieldHs #ehavior; .t has the (olloEing possi#les values C
LF,+J,F.+LDZDRALBOJ draEs the outline o( the teFt(ield
LF,+J,F.+LDZ&AL+NG,&
LF,+J,F.+LDZ&,ML alloEs teFt mar"up using &,ML2tags
LF,+J,F.+LDZM@L,.L.N+ alloEs multiple lines
LF,+J,F.+LDZNO+D., indicates that the (ield shouldnHt #e user2edita#le
LF,+J,F.+LDZNO+L+5, ma"es the (ield non2selecta#le
LF,+J,F.+LDZPALORD o#scures the data entry
LF,+J,F.+LDZLORDLRAP alloEs teFt to Erap
Flags are com#ined Eith the #itEise OR operation; For eFampleA
<?php
$t > ne8&7S*extSield3&7S*EX*S4EOL%,&&7?'L T &7S*EX*S4EOL%.?EL4*9;
?>
creates a totally useless non2edita#le passEord (ield;
LF,eFtField has the (olloEing methods C s3fte+tfield(Gsetfont./A s3fte+tfield(Gsetbounds./A
s3fte+tfield(Galign./A s3fte+tfield(Gsetheight./A s3fte+tfield(Gsetleftmargin./A s3fte+tfield(
Gsetrightmargin./A s3fte+tfield(Gsetmargins./A s3fte+tfield(Gsetindentation./A s3fte+tfield(
Gsetlinespacing./A s3fte+tfield(Gsetcolor./A s3fte+tfield(Gsetname./ and s3fte+tfield(Gaddstring
./;
:IIIII. ;unciones de Miscelnea
Introducci"n
+stas (unciones (ueron colocadas a/u) de#ido a /ue no parecen a'ustarse a ninguna otra categor)a;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones Carias de Configuraci"n
Nombre Predeterminado Modificable
ignoreZuserZa#ort =3= P&PZ.N.ZALL
highlight;string nDD3333 P&PZ.N.ZALL
highlight;commen
t
nFF9933 P&PZ.N.ZALL
highlight;"eyEord n33::33 P&PZ.N.ZALL
highlight;#g nFFFFFF P&PZ.N.ZALL
highlight;de(ault n3333BB P&PZ.N.ZALL
highlight;html n333333 P&PZ.N.ZALL
#roEscap N@LL P&PZ.N.Z%,+M
Para m*s detalles so#re las constantes P&PZ.N.ZV y su de(inici-nA vea ini>set./;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
6Enore_user_a1ort boolean
TRUE por de(ecto; i se modi(ica a FALSEA los scripts terminar*n tan pronto intenten generar
alguna salida despu<n de /ue el cliente haya a#ortado su coneFi-n;
$ea tam#i<n ignore>user>abort./;
h6Ehl6Eht.1E stringA h6Ehl6Eht.comment stringA h6Ehl6Eht.#e9ault stringA h6Ehl6Eht.html stringA
h6Ehl6Eht.>e?7or# stringA h6Ehl6Eht.str6nE string
5olores para el modo de Resaltado de intaFis; 5ual/uier cosa /ue sea acepta#le en `(ont
color^=NNNNNN=_ de#er)a (uncionar;
1ro7scap string
Nom#re >p;e';C bro8scap.ini? y u#icaci-n del archivo de capacidades del navegador; $ea
tam#i<n get>bro3ser./;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
CONNECTION_A(ORTED >integer?
CONNECTION_NORMAL >integer?
CONNECTION_TIMEOUT >integer?
Tabla de contenidos
connectionZa#orted 22 Devuelve TRUE si el cliente est* desconectado
connectionZstatus 22 Devuelve el estado de la coneFi-n en un campo de #its
connectionZtimeout 22 Devolver TRUE si el script ha alcanzado su tiempo de espera m*Fimo
constant 22 Devuelve el valor de una constante
de(ine 22 De(ine una constante con nom#re;
de(ined 22 5omprue#a /ue una constante con nom#re dada eFiste;
die 22 +nv)a a la salida un mensa'e y (inaliza el script actual
eval 22 +valBa una cadena de car*cteres como c-digo P&P
eFit 22 Finaliza el script actual
getZ#roEser 22 .ndica las capacidades del navegador del usuario
highlightZ(ile 22 Resaltado de sintaFis de un archivo
highlightZstring 22 Resaltado de sintaFis de una cadena
ignoreZuserZa#ort 22 +sta#lece si la desconeFi-n de un cliente de#e suspender la e'ecuci-n del script
pac" 22 empa/ueta datos en una cadena #inaria
phpZchec"ZsyntaF 22 5hec" the P&P syntaF o( >and eFecute? the speci(ied (ile
phpZstripZEhitespace 22 Return source Eith stripped comments and Ehitespace
shoEZsource 22 Alias de highlight>file./
sleep 22 +'ecuci-n retardada
timeZnanosleep 22 Delay (or a num#er o( seconds and nanoseconds
uni/id 22 Genera un id Bnico;
unpac" 22 desempa/ueta datos de una cadena #inaria
usleep 22 Retrasa la e'ecuci-nA en microsegundos
connection>aborted
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
connectionZa#orted 22 Devuelve TRUE si el cliente est* desconectado
Kescripci"n
int connection>aborted > void ?
Devuelve TRUE si el cliente est* desconectado; $ea la descripci-n de la Gesti-n de la 5oneFi-n en
el cap)tulo 5aracter)sticas para una eFplicaci-n completa;
connection>status
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
connectionZstatus 22 Devuelve el estado de la coneFi-n en un campo de #its
Kescripci"n
int connection>status > void ?
Devuelve el estado de la coneFi-n en un campo de #its; $ea la descripci-n de la Gesti-n de la
5oneFi-n en el cap)tulo 5aracter)sticas para una eFplicaci-n completa;
connection>timeout
>P&P 7_^ 7;3;:A P&P 8 `^ 8;3;8?
connectionZtimeout 22 Devolver TRUE si el script ha alcanzado su tiempo de espera m*Fimo
Kescripci"n
#ool connection>timeout > void ?
Devuelve TRUE si el script ha alcanzado su tiempo de espera m*Fimo;
Jbsoleta
+sta (unci-n se considera o#soletaA y no eFiste si/uiera a partir de 8;3;4;
$ea la descripci-n de Gesti-n de 5oneFi-n en el cap)tulo 5aracter)sticas para una eFplicaci-n
completa;
$ea tam#i<n connection>status./;
constant
>P&P 8 _^ 8;3;8A P&P 4?
constant 22 Devuelve el valor de una constante
Kescripci"n
miFed constant > string nom#re ?
constant./ devolver* el valor de la constante indicada por nom1re;
constant./ es Btil si necesita recuperar el valor de una constanteA pero no conoce su nom#re; +sto
/uiere decirA si est* almacenada en una varia#le o es devuelta por una (unci-n;
E'emplo !. E'emplo de constant./
<?php
de#ine3"*,"",X", 6229;
echo *,"",X;
echo constant3"*,"",X"9; // iEual Que la linea anterior
?>
$ea tam#i<n define./A defined./ y la secci-n so#re 5onstantes;
define
>P&P 7A P&P 8 A P&P 4?
de(ine 22 De(ine una constante con nom#re;
Kescripci"n
int define > string nameA miFed value PA int caseZinsensitiveQ ?
De(ine una constante con nom#reA /ue es similar a una varia#leA eFcepto /ueC
Las constantes no tienen un s)m#olo d-lar HYH precedi<ndolasX
Las constantes son accesi#les desde cual/uier lugar sin tener en cuenta las reglas de *m#ito
de las varia#les;
Las constantes no pueden ser rede(inidas o iniciadas una vez /ue han sido esta#lecidasA y
Las constantes s-lo pueden evaluar valores escalares
+l nom#re de la constante se da en name >nom#re?X el valor se da en alue >valor?;
+l tercer par*metro opcional case_6nsens6t6e tam#i<n se encuentra disponi#le; i se da el valor 1A la
constante se de(inir* no dintinguiendo mayBsculasDminusculas; +l comportamiento por de(ecto es si
distinguirX i;e; 5ON,AN, y 5onstant representan valores di(erentes;
E'emplo !. Kefinici"n de Constantes
<?php
de#ine3"R?.&*,.*", "Hello 8orld."9;
echo R?.&*,.*; // outputs "Hello 8orld."
?>
define./ devuelve TRUE en caso de <Fito y FALSE si ocurre un error;
$<ase tam#i<n defined./ y la secci-n 5onstantes;
defined
>P&P 7A P&P 8 A P&P 4?
de(ined 22 5omprue#a /ue una constante con nom#re dada eFiste;
Kescripci"n
int defined > string name ?
Devuelve TRUE si la constante con nom#re dada en name >nom#re? ha sido de(inidaA FALSE en
otro caso;
$<ase tam#i<n define./ y la secci-n 5onstantes;
die
>no version in(ormationA might #e only in 5$?
die 22 +nv)a a la salida un mensa'e y (inaliza el script actual
Kescripci"n
void die > string message ?
+sta construcci-n del lengua'e env)a a la salida un mensa'e y (inaliza la e'ecuci-n del script; No
devuelve nada;
E'emplo !. E'emplo die
<?php
$#ilename > M/path/to/dataF#ileM;
$#ile > #open3$#ilename, MrM9
or die "unable to open #ile 3$#ilename9";
?>
e5al
>P&P 7A P&P 8A P&P 4 ?
eval 22 +valBa una cadena de car*cteres como c-digo P&P
Kescripci"n
void e5al > string codeZstr ?
e5al./ evalBa la cadena de car*cteres dada en co#e_str como c-digo P&P; +ntre otras cosasA <sto
puede ser Btil para almacenar c-digo en un campo de teFto de #ase de datos para una e'ecuci-n
posterior;
&ay algunos aspectos a tener en cuenta cuando se utiliza e5al./; Recuerde /ue la cadena de
car*cteres pasada de#e ser c-digo P&P v*lidoA incluyendo aspectos como sentencias de terminaci-n
con un punto y coma para /ue el parser no (inalice en la l)nea despu<s de e5al./A y secuencias de
(ormato correctas en co#e_str;
Recuerde tam#i<n /ue las varia#les a las /ue se les da valor en e5al./ retendr*n estos valores
posteriormente en el script principal;
E'emplo !. E'emplo e5al./ ( fusi"n en un 4nico te+o
<?php
$strinE > McupM;
$name > Mco##eeM;
$str > M*his is a $strinE 8ith my $name in it.<br>M;
echo $str;
e=al3 "V$str > V"$strV";" 9;
echo $str;
?>
+l e'emplo anterior mostrar*C
*his is a $strinE 8ith my $name in it.
*his is a cup 8ith my co##ee in it.
e+it
>P&P 7A P&P 8A P&P 4 ?
eFit 22 Finaliza el script actual
Kescripci"n
void e+it > void ?
+sta construcci-n del lengua'e (inaliza la e'ecuci-n del script; No devuelve nada;
get>bro3ser
>P&P 7A P&P 8 A P&P 4?
getZ#roEser 22 .ndica las capacidades del navegador del usuario
Kescripci"n
o#'ect get>bro3ser > Pstring agenteZusuario PA #ool matrizZretornoQQ ?
get>bro3ser./ intenta determinar las capacidades del navegador del usuario; Para ello consulta el
archivo de in(ormaci-n del navegadorA bro8scap.ini; Por de(ectoA se utiliza el valor de
'_SER(ER)*!TT+_USER_,-ENT*.X sin em#argoA puede alterar este comportamiento >es decirA
consultar la in(ormaci-n de otro navegador? pasando el par*metro opcional aEente_usuar6o a
get>bro3ser./;
La in(ormaci-n se devuelve en un ob'ectA el cual contendr* varios elementos de datos /ue
representanA por e'emploA los nBmeros de versi-n mayor y menor del navegador y la cadena .DX
valores TRUEDFALSE para caracter)sticas como los (ramesA !avacriptA y coo"iesX y as)
sucesivamente; A partir de P&P 8;7;0A si el par*metro opcional matr6D_retorno es TRUEA esta
(unci-n devuelve un valor array en lugar de ob'ect; Puede evitar el par*metro aEente_usuar6o con
el valor NULL;
Aun/ue bro8scap.ini contiene in(ormaci-n so#re muchos navegadoresA depende de
actualizaciones del usuario para mantener la #ase de datos al d)a; +l (ormato del archivo es #astante
auto2eFplicativo;
+l siguiente e'emplo muestra como se puede listar toda la in(ormaci-n disponi#le so#re el
navegador del usuario;
E'emplo !. E'emplo de get>bro3ser./
<?php
echo $%&E'(E')MH**%+&E'%,-E.*M/ . "<hr />Vn";
$na=eEador > Eet%bro8ser39;
#oreach 3$na=eEador as $nombre >> $=alor9 :
echo "<b>$nombre</b> $=alor <br />Vn";
;
?>
La salida del script anterior lucir* algo comoC
"o0illa/1.5 )en/ 3X66; +; Oinux C.C.K i5JG9<hr />
<b>bro8ser%name%pattern@</b> "o0illa/1V.5.W<br />
<b>parent@</b> .etscape 1.2<br />
<b>plat#orm@</b> Oinux<br />
<b>major=er@</b> 1<br />
<b>minor=er@</b> 5<br />
<b>bro8ser@</b> .etscape<br />
<b>=ersion@</b> 1<br />
<b>#rames@</b> 6<br />
<b>tables@</b> 6<br />
<b>cooIies@</b> 6<br />
<b>bacIEroundsounds@</b> <br />
<b>=bscript@</b> <br />
<b>ja=ascript@</b> 6<br />
<b>ja=aapplets@</b> 6<br />
<b>acti=excontrols@</b> <br />
<b>beta@</b> <br />
<b>cra8ler@</b> <br />
<b>authenticodeupdate@</b> <br />
<b>msn@</b> <br />
Para /ue <sto (uncioneA su opci-n de con(iguraci-n #roEscap en php.ini de#e apuntar a la
u#icaci-n correcta del archivo bro8scap.ini en su sistema; bro8scap.ini no hace parte de
la distri#uci-n de P&PA pero puede encontrar un archivo #roEscap;ini actualizado a/u); Por de(ectoA
la directiva #roEscap se encuentra comentada;
+l valor coo>6es simplemente /uiere decir /ue el navegador mismo tiene la capacidad de aceptar
coo"ies y no /uiere decir /ue el usuario haya ha#ilitado el navegador para /ue acepte coo"ies o no;
La Bnica manera de pro#ar si las coo"ies son aceptadas es de(inir una con setcooBie./A recargarA y
che/uear el valor;
Nota- +n versiones anteriores a P&P 8;3;KA tendr* /ue pasar el agente de usuario a
trav<s del par*metro opcional aEente_usuar6o si el valor de la directiva registerZglo#als
es o99; +n este casoA de#e pasar '!TT+_SER(ER_(,RS)<!TT+_USER_,-ENT<.;
highlight>file
>P&P 8 A P&P 4?
highlightZ(ile 22 Resaltado de sintaFis de un archivo
Kescripci"n
miFed highlight>file > string nom#reZarchivo PA #ool devolverQ ?
La (unci-n highlight>file./ imprime una versi-n con resaltado de sintaFis del c-digo contenido en
nom1re_arch6o usando los colores de(inidos en el resaltador de sintaFis incorporado de P&P;
i el segundo par*metro #eoler es de(inido a TRUE entonces highlight>file./ devolver* el c-digo
resaltado en lugar de imprimirlo; i el segundo par*metro no es de(inido a TRUE entonces
highlight>file./ devolver* TRUE si tiene <FitoA o FALSE en caso de (allo;
Nota- +l par*metro #eoler apareci- en P&P 8;0;3; Antes de esta versi-nA ten)a el
comportamiento predeterminadoA /ue es FALSE
Atenci"n
De#e tenerse cuidado cuando se usan las (unciones sho3>source./ y highlight>file./ para
asegurarse de /ue no se revele inadvertidamente in(ormaci-n sensi#leA tal como contraseWas o
cual/uier otro tipo de in(ormaci-n /ue pueda crear un riesgo potencial de seguridad;
Nota- A partir de P&P 8;0;1 esta (unci-n es in(luenciada tam#i<n por sa(eZmode y
openZ#asedir;
Para crear una @RL /ue pueda resaltar el c-digo de cual/uier script /ue le sea pasadoA haremos uso
de la directiva =Force,ype= en Apache para generar un agrada#le patr-n @RLA y usaremos la
(unci-n highlight>file./ para mostrar un listado de c-digo #ien presentado;
+n su httpd.con# puede agregar lo siguienteC
E'emplo !. Creaci"n de una )M: para resaltar c"digo fuente
<Oocation /source>
Sorce*ype application/xFhttpdFphp
</Oocation>
% luego cree un archivo llamado source y col-/uelo en su directorio ra)z de documentos Ee#;
<html>
<head>
<title>resentaci&oacute;n de R&oacute;diEo Suente</title>
</head>
<body bEcolor>"8hite">
<?php
$script > Eeten=3M&R'4*%S4OE.,"EM9;
i# 3!$script9 :
echo "<br /><b>E''?'@ &e necesita el .ombre del &cript</b><br />";
; else :
i# 3ereE3"3VV.phpTVV.inc9$",$script99 :
echo "<h6>Suente de@ " . Eeten=3",*H%4.S?"9 . "</h6>Vn<hr />Vn";
hiEhliEht%#ile3$script9;
; else :
echo "<h6>E''?'@ &olo se permiten scripts o archi=os de " .
"inclusion H</h6>";
;
;
echo "<hr />rocesado@ " . date3"P/"/d H@i@s", time399;
?>
</Z?LP>
</H*"O>
Luego puede usar una @RL como la siguiente para mostrar una versi-n en colores de un script
u#icado en =DrutaDhaciaDscript;php= en su sitio Ee#;
http@//888.example.com/source/ruta/hacia/script.php
$ea tam#i<n highlight>string./;
highlight>string
>P&P 8 A P&P 4?
highlightZstring 22 Resaltado de sintaFis de una cadena
Kescripci"n
miFed highlight>string > string cadena PA #ool devolverQ ?
La (unci-n highlight>string./ imprime una versi-n con resaltado de c-digo de ca#ena usando los
colores de(inidos en el resaltador de c-digo incorporado de P&P;
i el segundo par*metro #eoler es de(inido a TRUE entonces highlight>string./ devolver* el
c-digo resaltado como una cadena en lugar de imprimirlo; i el segundo par*metro no es de(inido a
TRUE entonces highlight>string./ devolver* TRUE de tener <FitoA o FALSE en caso de (allo;
E'emplo !. E'emplo de highlight>string./
<?php
hiEhliEht%strinE3M<?php phpin#o39; ?>M9;
?>
+l anterior e'emplo producir* la siguiente salida >en P&P 8?C
<code><#ont color>"U222222">
<#ont color>"U2222ZZ">&lt;?php phpin#o</#ont><#ont color>"U22HH22">39;
</#ont><V#ont color>"U2222ZZ">?&Et;</#ont>
</#ont>
</code>
+l anterior e'emplo producir* la siguiente salida >en P&P 4?C
<code><span style>"color@ U222222">
<span style>"color@ U2222ZZ">&lt;?php phpin#o</span><span
style>"color@ U22HH22V">39; </span><span style>"color@
U2222ZZ">?&Et;</span>
</span>
</code>
Nota- +l par*metro #eoler apareci- en P&P 8;0;3; Antes de esta versi-nA su
comportamiento era el predeterminadoA el cual es FALSE;
$ea tam#i<n highlight>file./;
ignore>user>abort
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
ignoreZuserZa#ort 22 +sta#lece si la desconeFi-n de un cliente de#e suspender la e'ecuci-n del script
Kescripci"n
int ignore>user>abort > Pint settingQ ?
+sta (unci-n esta#lece si la desconeFi-n de un cliente de#e provocar la suspensi-n del script;
Devolver* el valor previo y puede ser llamada sin argumentos para devolver el valor actual y no
cam#iarlo; $<ase la secci-n so#re la Gesti-n de la 5oneFi-n en el cap)tulo 5aracter)sticas para una
descripci-n completa de la gesti-n de la coneFi-n en P&P;
pacB
>P&P 7A P&P 8 A P&P 4?
pac" 22 empa/ueta datos en una cadena #inaria
Kescripci"n
string pacB > string (ormat PA miFed argsQ ?
+mpa/ueta los argumentos dados en una cadena #inaria siguiendo el (ormato 9ormat; Devuelve la
cadena #inaria /ue contiene los datos;
+l concepto de esta (unci-n (ue tomado de Perl y todos los c-digos de (ormateo realizan la misma
(unci-n; La cadena de (ormato consiste en c-digos de (ormato seguidos por un argumento opcional
de repetici-n; +l argumento de repetici-n puede ser un valor entero o V para repetir hasta el (in de la
entrada de datos; Para aA AA hA & la cuenta de repetici-n representa cu*ntos caracteres se toman de
un argumento de datosA para G es la posici-n a#soluta donde poner los datos siguientesA para todo
lo dem*s la cuenta de repetici-n especi(ica cu*ntos argumentos de datos se toman y empa/uetan en
la cadena #inaria resultante; Actualmente est*n implementadosC
a cadena rellena de N@L
A cadena rellena de +PA5.O
h cadena &eFA primero el medio #yte in(erior
& cadena &eFA primero el medio #yte superior
c signed >con signo? char
5 unsigned >sin signo? char
s signed short >siempre 1K #itsA distri#uci-n de #ytes de la m*/uina?
unsigned short >siempre 1K #itsA distri#uci-n de #ytes de la m*/uina?
n unsigned short >siempre 1K #itsA distri#uci-n de #ytes gran endian?
v unsigned short >siempre 1K #itsA distri#uci-n de #ytes pe/ueWo endian?
i signed integer >distri#uci-n de #ytes y tamaWos dependientes de la m*/uina?
. unsigned integer >distri#uci-n de #ytes y tamaWos dependientes de la m*/uina?
l signed long >siempre 70 #itsA distri#uci-n de #ytes de la m*/uina?
L unsigned long >siempre 70 #itsA distri#uci-n de #ytes de la m*/uina?
N unsigned long >siempre 70 #itsA distri#uci-n de #ytes gran endian?
$ unsigned long >siempre 70 #itsA distri#uci-n de #ytes pe/ueWo endian?
( (loat >representaci-n y tamaWo dependientes de la m*/uina?
d dou#le >representaci-n y tamaWo dependientes de la m*/uina?
F #yte N@L
J @n #yte hacia atr*s
G relleno con N@L en la posici-n a#soluta
E'emplo !. cadena de formato para pacB
$binarydata > pacI3"n=cW", 2x6C<1, 2x5GHJ, G5, GG9;
La cadena #inaria resultante tendr* K #ytes de longitud y contendr* la secuencia de #ytes 3F10A
3F78A 3F:MA 3F4KA 3F81A 3F80;
Advi<rtase /ue la distinci-n entre valores signed >con signo? y unsigned >sin signo? s-lo a(ecta a la
(unci-n unpacB./A ya /ue la (unci-n pacB./ da el mismo resultado para c-digos de (ormato con
signo y sin signo;
N-tese tam#i<n /ue internamente P&P almacena valores enteros como valores con signo de un
tamaWo dependiente de la m*/uina; i le da un valor entero sin signo demasiado grande para ser
almacenadoA ser* convertido a un dou#le >do#le?A lo /ue a menudo produce resultados no deseados;
php>checB>synta+
>P&P 4?
phpZchec"ZsyntaF 22 5hec" the P&P syntaF o( >and eFecute? the speci(ied (ile
Kescripci"n
#ool php>checB>synta+ > string (ileZname PA string ierrorZmessageQ ?
,he php>checB>synta+./ (unction per(orms a syntaF >lint? chec" on the speci(ied 96lename testing
(or scripting errors; ,his is similar to using php (l (rom the commandline eFcept
php>checB>synta+./ Eill eFecute >#ut not output? the chec"ed 96le_name; For eFampleA i( a
(unction is de(ined in 96le_nameA this de(ined (unction Eill #e availa#le to the (ile that eFecuted
php>checB>synta+./A #ut output (rom 96le_name Eill #e suppressed;
:ista de parmetros
96le_name
,he name o( the (ile #eing chec"ed;
error_messaEe
.( the error_messaEe parameter is usedA it Eill contain the error message generated #y the
syntaF chec"; error_messaEe is passed #y re(erence;
Calores retornados
Returns TRUE i( the lint chec" passedA and FALSE i( the lin" chec" (ailed or i( 96le_name cannot #e
opened;
Megistro de cambios
Cersi"n Kescripci"n
4;3;7
5alling e+it./ a(ter php>checB>synta+./ resulted in a
eg(ault;
4;3;1 error_messaEe is passed #y re(erence;
E'emplos
E'emplo !. php>checB>synta+./ e+ample
<?php
$error%messaEe > "";
$#ilename > "./tests.php";
i#3!php%checI%syntax3$#ilename, $error%messaEe99 :
print#3"Errors 8ere #ound in the #ile \s@VnVn\sVn", $#ilename, $error%messaEe9;
; else :
print#3"*he #ile \s contained no syntax errors.", $#ilename9;
;
?>
+l resultado del e'emplo seria algo similar aC
Errors 8ere #ound in the #ile ./tests.php@
parse error, unexpected *%&*'4.- in /tmp/tests.php on line J6
Cer tambi%n
include./
is>readable./
php>strip>3hitespace
>P&P 4?
phpZstripZEhitespace 22 Return source Eith stripped comments and Ehitespace
Kescripci"n
string php>strip>3hitespace > string (ilename ?
Returns the P&P source code in 96lename Eith P&P comments and Ehitespace removed; ,his may
#e use(ul (or determining the amount o( actual code in your scripts compared Eith the amount o(
comments; ,his is similar to using php (3 (rom the commandline;
Nota- ,his (unction Eor"s as descri#ed as o( P&P 4;3;1; Be(ore this it Eould only return
an empty string; For more in(ormation on this #ug and its prior #ehaviorA see #ug report
n09K3K;
Calores retornados
,he stripped source code Eill #e returned on successA or an empty string on (ailure;
E'emplos
E'emplo !. php>strip>3hitespace./ e+ample
<?php
// H comment here
/W
W ,nother H comment
W/
echo php%strip%8hitespace3%%S4OE%%9;
// .e8lines are considered 8hitespace, and are remo=ed too@
do%nothinE39;
?>
+l resultado del e'emplo seriaC
<?php
echo php%strip%8hitespace3%%S4OE%%9; do%nothinE39; ?>
Notice the P&P comments are goneA as are the Ehitespace and neEline a(ter the (irst echo statement;
sho3>source
shoEZsource 22 Alias de highlight>file./
Kescripci"n
+sta (unci-n es un alias de highlight>file./;
sleep
>P&P 7A P&P 8 A P&P 4?
sleep 22 +'ecuci-n retardada
Kescripci"n
void sleep > int seconds ?
La (unci-n sleep retarda la e'ecuci-n del programa durante el nBmero de secon#s >segundos? dado;
$<ase tam#i<n usleep./;
time>nanosleep
>P&P 4?
timeZnanosleep 22 Delay (or a num#er o( seconds and nanoseconds
Kescripci"n
miFed time>nanosleep > int secondsA int nanoseconds ?
Delays program eFecution (or the given num#er o( secon#s and nanosecon#s;
secon#s must #e a positive integerA and nanosecon#s must #e a positive integer less than 1 #illion;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
.( the delay Eas interrupted #y a signalA an associative array Eill #e returned Eith the componentsC
secon#s 2 num#er o( seconds remaining in the delay
nanosecon#s 2 num#er o( nanoseconds remaining in the delay
Cer tambi%n
sleep./A usleep./A set>time>limit./
E'emplos
E'emplo !. time>nanosleep./ e+ample
<?php
// Rare#ul! *his 8onMt 8orI as expected i# an array is returned
i# 3time%nanosleep32, 52222222299 :
echo "&lept #or hal# a second.Vn";
;
// *his is better@
i# 3time%nanosleep32, 5222222229 >>> true9 :
echo "&lept #or hal# a second.Vn";
;
// ,nd this is the best@
$nano > time%nanosleep3C, 6222229;
i# 3$nano >>> true9 :
echo "&lept #or C seconds, 622 milliseconds.Vn";
; elsei# 3$nano >>> #alse9 :
echo "&leepinE #ailed.Vn";
; elsei# 3is%array3$nano99 :
$seconds > $nano)MsecondsM/;
$nanoseconds > $nano)MnanosecondsM/;
echo "4nterrupted by a siEnal.Vn";
echo "*ime remaininE@ $seconds seconds, $nanoseconds nanoseconds.";
;
?>
Nota- +sta (unci-n no est* implementada en plata(ormas LindoEs;
uni?id
>P&P 7A P&P 8 A P&P 4?
uni/id 22 Genera un id Bnico;
Kescripci"n
int uni?id > string pre(iF PA #oolean lcgQ ?
uni?id./ devuelve un identi(icador Bnico con un pre(i'o #asado en la hora actual en microsegundos;
+l pre(i'o puede ser pr*ctico por e'emplo si se generan identi(icadores simult*neamente en varios
host /ue pueden ha#er generado el identi(icador en el mismo microsegundo; pre968 >pre(i'o? puede
ser de hasta 118 car*cteres de longitud;
i el par*metro opcional lcE es TRUEA uni?id./ aWadir* entrop)a =L5G com#inada= al (inal del valor
devueltoA /ue har* el resultado m*s Bnico;
5on un pre968 >pre(i'o? vac)oA la cadena devuelta tendr* una longitud de 17 car*cteres; i lcE es
TRUEA tendr* 07 car*cteres;
Nota- +l par*metro lcE est* disponi#le s-lo en P&P 8 y P&P 7;3;17 y posteriores;
i necesita un identi(icador Bnico o testigoA y tiene la intenci-n de hacer pB#lico ese testigo al
usuario por medio de una red >i;e; coo"ies de sesi-n? se recomienda /ue utilice algo parecido a estas
l)neas
$toIen > md53uniQid3""99; // no random portion
$better%toIen > md53uniQid3rand3999; // better, di##icult to Euess
+sto crear* un identi(icador de 70 car*cteres >un nBmero heFadecimal de 10M #its? /ue es
eFtremadamente di()cil de predecir;
unpacB
>P&P 7A P&P 8 A P&P 4?
unpac" 22 desempa/ueta datos de una cadena #inaria
Kescripci"n
array unpacB > string (ormatA string data ?
Desempa/ueta datos de una cadena #inaria en un arrayA de acuerdo al (ormato 9ormat; Devuelve un
array /ue contiene los elementos de la cadena #inaria desempa/uetados;
@npac" (unciona de manera ligeramente di(erente a PerlA ya /ue los datos desempa/uetados se
almacenan en un array asociativo; Para conseguir <sto de#e nom#rar los di(erentes c-digos de
(ormato y separarlos por una #arra inclinada D;
E'emplo !. cadena de formato unpacB
$array > unpacI3"cCchars/nint", $binarydata9;
+l array resultante contendr* las entradas =chars1=A =chars0= y =int=;
Para una eFplicaci-n de los c-digos de (ormato v<ase tam#i<nC pacB./
Advierta /ue P&P almacena internamente los valores enteros con signo; i desempa/ueta un
unsigned long >largo sin signo? demasiado grande y es del mismo tamaWo tal como P&P almacena
internamente los valoresA el resultado ser* un nBmero negativo a pesar de /ue se especi(icara
desempa/uetamiento sin signo;
usleep
>P&P 7A P&P 8 A P&P 4?
usleep 22 Retrasa la e'ecuci-nA en microsegundos
Kescripci"n
void usleep > int microZseconds ?
La (unci-n usleep retrasa la e'ecuci-n del programa durante un nBmero de m6cro_secon#s
>microsegundos? dado;
$<ase tam#i<n sleep./;
:IIIC. mnoFo,earch ;unctions
Introducci"n
,hese (unctions alloE you to access the mnoGoearch >(ormer @dmearch? (ree search engine;
mnoGoearch is a (ull2(eatured search engine so(tEare (or intranet and internet serversA distri#uted
under the GN@ license; mnoGoearch has a num#er o( uni/ue (eaturesA Ehich ma"es it appropriate
(or a Eide range o( applications (rom search Eithin your site to a specialized search system such as
coo"ing recipes or neEspaper searchA F,P archive searchA neEs articles searchA etc; .t o((ers (ull2teFt
indeFing and searching (or &,MLA PDFA and teFt documents; mnoGoearch consists o( tEo parts;
,he (irst is an indeFing mechanism >indeFer?; ,he purpose o( the indeFer is to Eal" through &,,PA
F,PA N+L servers or local (ilesA recursively gra##ing all the documents and storing meta2data
a#out that documents in a OL data#ase in a smart and e((ective manner; A(ter every document is
re(erenced #y its corresponding @RLA meta2data is collected #y the indeFer (or later use in a search
process; ,he search is per(ormed via Le# inter(ace; 5A 5G.A P&P and Perl search (ront ends are
included;
More in(ormation a#out mnoGoearch can #e (ound at httpCDDEEE;mnogosearch;orgD;
Nota- +sta eFtensi-n no est* disponi#le en plata(ormas LindoEs
Me?uirimientos
DoEnload mnoGosearch (rom httpCDDEEE;mnogosearch;orgD and install it on your system; %ou
need at least version 7;1;13 o( mnoGoearch installed to use these (unctions;
Instalaci"n
.n order to have these (unctions availa#leA you must compile P&P Eith mnoGosearch support #y
using the ==76th=mnoEosearchoption; .( you use this option Eithout speci(ying the path to
mnoGosearchA P&P Eill loo" (or mnoGosearch under /usr/local/mnoEosearch path #y
de(ault; .( you installed mnoGosearch at a di((erent location you should speci(y itC ==76th=
mnoEosearch:D0R;
Nota- P&P contains #uilt2in MyOL access li#raryA Ehich can #e used to access
MyOL; .t is "noEn that mnoGoearch is not compati#le Eith this #uilt2in li#rary and
can Eor" only Eith generic MyOL li#raries; ,husA i( you use mnoGoearch Eith
MyOLA during P&P con(iguration you have to indicate the directory o( your MyOL
installationA that Eas used during mnoGoearch con(igurationA i;e; (or eFampleC ==76th=
mnoEosearch ==76th=m?s@l:/usr;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
UDM_FIELD_URLID >integer?
UDM_FIELD_URL >integer?
UDM_FIELD_CONTENT >integer?
UDM_FIELD_TITLE >integer?
UDM_FIELD_&EY"ORDS >integer?
UDM_FIELD_DESC >integer?
UDM_FIELD_DESCRIPTION >integer?
UDM_FIELD_TE%T >integer?
UDM_FIELD_SI/E >integer?
UDM_FIELD_RATIN# >integer?
UDM_FIELD_SCORE >integer?
UDM_FIELD_MODIFIED >integer?
UDM_FIELD_ORDER >integer?
UDM_FIELD_CRC >integer?
UDM_FIELD_CATE#ORY >integer?
UDM_FIELD_LAN# >integer?
UDM_FIELD_CHARSET >integer?
UDM_PARAM_PA#E_SI/E >integer?
UDM_PARAM_PA#E_NUM >integer?
UDM_PARAM_SEARCH_MODE >integer?
UDM_PARAM_CACHE_MODE >integer?
UDM_PARAM_TRAC&_MODE >integer?
UDM_PARAM_PHRASE_MODE >integer?
UDM_PARAM_CHARSET >integer?
UDM_PARAM_LOCAL_CHARSET >integer?
UDM_PARAM_(RO"SER_CHARSET >integer?
UDM_PARAM_STOPTA(LE >integer?
UDM_PARAM_STOP_TA(LE >integer?
UDM_PARAM_STOPFILE >integer?
UDM_PARAM_STOP_FILE >integer?
UDM_PARAM_"EI#HT_FACTOR >integer?
UDM_PARAM_"ORD_MATCH >integer?
UDM_PARAM_MA%_"ORD_LEN >integer?
UDM_PARAM_MA%_"ORDLEN >integer?
UDM_PARAM_MIN_"ORD_LEN >integer?
UDM_PARAM_MIN_"ORDLEN >integer?
UDM_PARAM_ISPELL_PREFI%ES >integer?
UDM_PARAM_ISPELL_PREFI% >integer?
UDM_PARAM_PREFI%ES >integer?
UDM_PARAM_PREFI% >integer?
UDM_PARAM_CROSS_"ORDS >integer?
UDM_PARAM_CROSS"ORDS >integer?
UDM_PARAM_$ARDIR >integer?
UDM_PARAM_DATADIR >integer?
UDM_PARAM_HL(E# >integer?
UDM_PARAM_HLEND >integer?
UDM_PARAM_SYNONYM >integer?
UDM_PARAM_SEARCHD >integer?
UDM_PARAM_.STRIN# >integer?
UDM_PARAM_REMOTE_ADDR >integer?
UDM_LIMIT_CAT >integer?
UDM_LIMIT_URL >integer?
UDM_LIMIT_TA# >integer?
UDM_LIMIT_LAN# >integer?
UDM_LIMIT_DATE >integer?
UDM_PARAM_FOUND >integer?
UDM_PARAM_NUM_RO"S >integer?
UDM_PARAM_"ORDINFO >integer?
UDM_PARAM_"ORD_INFO >integer?
UDM_PARAM_SEARCHTIME >integer?
UDM_PARAM_SEARCH_TIME >integer?
UDM_PARAM_FIRST_DOC >integer?
UDM_PARAM_LAST_DOC >integer?
UDM_MODE_ALL >integer?
UDM_MODE_ANY >integer?
UDM_MODE_(OOL >integer?
UDM_MODE_PHRASE >integer?
UDM_CACHE_ENA(LED >integer?
UDM_CACHE_DISA(LED >integer?
UDM_TRAC&_ENA(LED >integer?
UDM_TRAC&_DISA(LED >integer?
UDM_PHRASE_ENA(LED >integer?
UDM_PHRASE_DISA(LED >integer?
UDM_CROSS_"ORDS_ENA(LED >integer?
UDM_CROSS"ORDS_ENA(LED >integer?
UDM_CROSS_"ORDS_DISA(LED >integer?
UDM_CROSS"ORDS_DISA(LED >integer?
UDM_PREFI%ES_ENA(LED >integer?
UDM_PREFI%_ENA(LED >integer?
UDM_ISPELL_PREFI%ES_ENA(LED >integer?
UDM_ISPELL_PREFI%_ENA(LED >integer?
UDM_PREFI%ES_DISA(LED >integer?
UDM_PREFI%_DISA(LED >integer?
UDM_ISPELL_PREFI%ES_DISA(LED >integer?
UDM_ISPELL_PREFI%_DISA(LED >integer?
UDM_ISPELL_TYPE_AFFI% >integer?
UDM_ISPELL_TYPE_SPELL >integer?
UDM_ISPELL_TYPE_D( >integer?
UDM_ISPELL_TYPE_SER$ER >integer?
UDM_MATCH_"ORD >integer?
UDM_MATCH_(E#IN >integer?
UDM_MATCH_SU(STR >integer?
UDM_MATCH_END >integer?
Tabla de contenidos
udmZaddZsearchZlimit 22 Add various search limits
udmZallocZagentZarray 22 Allocate mnoGoearch session
udmZallocZagent 22 Allocate mnoGoearch session
udmZapiZversion 22 Get mnoGoearch AP. version
udmZcatZlist 22 Get all the categories on the same level Eith the current one
udmZcatZpath 22 Get the path to the current category
udmZchec"Zcharset 22 5hec" i( the given charset is "noEn to mnogosearch
udmZchec"Zstored 22 5hec" connection to stored
udmZclearZsearchZlimits 22 5lear all mnoGoearch search restrictions
udmZcloseZstored 22 5lose connection to stored
udmZcrc70 22 Return 5R570 chec"sum o( given string
udmZerrno 22 Get mnoGoearch error num#er
udmZerror 22 Get mnoGoearch error message
udmZ(ind 22 Per(orm search
udmZ(reeZagent 22 Free mnoGoearch session
udmZ(reeZispellZdata 22 Free memory allocated (or ispell data
udmZ(reeZres 22 Free mnoGoearch result
udmZgetZdocZcount 22 Get total num#er o( documents in data#ase
udmZgetZresZ(ield 22 Fetch mnoGoearch result (ield
udmZgetZresZparam 22 Get mnoGoearch result parameters
udmZhash70 22 Return &ash70 chec"sum o( gived string
udmZloadZispellZdata 22 Load ispell data
udmZopenZstored 22 Open connection to stored
udmZsetZagentZparam 22 et mnoGoearch agent session parameters
udm>add>search>limit
>P&P 8 _^ 8;3;4A P&P 4?
udmZaddZsearchZlimit 22 Add various search limits
Kescription
#ool udm>add>search>limit > resource agentA int varA string val ?
udm>add>search>limit./ adds search restrictions; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
aEent 2 a lin" to AgentA received a(ter call to udm>alloc>agent./;
ar 2 de(ines parameterA indicating limit;
al 2 de(ines the value o( the current parameter;
Possi#le ar valuesC
@DMZL.M.,Z@RL 2 de(ines document @RL limitations to limit the search through
su#section o( the data#ase; .t supports OL b and Z L.S+ EildcardsA Ehere b matches any
num#er o( charactersA even zero charactersA and Z matches eFactly one character; +;g;
httpCDDEEE;eFample;ZZZDcatalog may stand (or httpCDDEEE;eFample;comDcatalog and
httpCDDEEE;eFample;netDcatalog;
@DMZL.M.,Z,AG 2 de(ines site ,AG limitations; .n indeFer2con( you can assign speci(ic
,AGs to various sites and parts o( a site; ,ags in mnoGoearch 7;1;F are linesA that may
contain metasym#ols b and Z; Metasym#ols alloE searching among groups o( tags; +;g;
there are lin"s Eith tags AB5D and AB5+A and search restriction is #y AB5Z 2 the search
Eill #e made among #oth o( the tags;
@DMZL.M.,ZLANG 2 de(ines document language limitations;
@DMZL.M.,Z5A, 2 de(ines document category limitations; 5ategories are similar to tag
(eatureA #ut nested; o you can have one category inside another and so on; %ou have to use
tEo characters (or each level; @se a heF num#er going (rom 32F or a 7K #ase num#er going
(rom 32I; ,here(ore a top2level category li"e HAutoH Eould #e 31; .( it has a su#category li"e
HFordHA then it Eould #e 31 >the parent category? and then HFordH Ehich Ee Eill give 31; Put
those together and you get 3131; .( HAutoH had another su#category named H$LHA then itHs id
Eould #e 31 #ecause it #elongs to the HFordH category and then 30 #ecause itHs the neFt
category; o itHs id Eould #e 3130; .( $L had a su# category called H+ngineH then itHs id
Eould start at 31 again and it Eould get the H$LH id 30 and HAutoH id o( 31A ma"ing it
313031; .( you Eant to search (or sites under that category then you pass it cat^313031 in the
@RL;
@DMZL.M.,ZDA,+ 2 de(ines limitation #y date the document Eas modi(ied;
Format o( parameter valueC a string Eith (irst character ` or _A then Eith no space 2 date in
uniFtime (ormatA (or eFampleC
E'emplo !.
<?php
+dm%,dd%&earch%Oimit3$udm, +L"%O4"4*%L,*E, "&lt;K2J26C22G"9;
?>
.( _ character is usedA then the search Eill #e restricted to those documents having a
modi(ication date greater than enteredA i( `A then smaller;
udm>alloc>agent>array
>P&P 8 _^ 8;7;7A P&P 4?
udmZallocZagentZarray 22 Allocate mnoGoearch session
Kescription
resource udm>alloc>agent>array > array data#ases ?
udm>alloc>agent>array./ Eill create an agent Eith multiple data#ase connections; ,he array
#ata1ases must contain one data#ase @RL per elementA analog to the (irst parameter o(
udm>alloc>agent./;
ee alsoC udm>alloc>agent./;
udm>alloc>agent
>P&P 8 _^ 8;3;4A P&P 4?
udmZallocZagent 22 Allocate mnoGoearch session
Kescription
resource udm>alloc>agent > string d#addr PA string d#modeQ ?
Returns a mnogosearch agent identi(ier on successA FALSE on (ailure; ,his (unction creates a
session Eith data#ase parameters;
#1a##r 2 @RL2style data#ase descriptionA Eith options >typeA hostA data#ase nameA portA user and
passEord? to connect to OL data#ase; Do not matter (or #uilt2in teFt (iles support; Format (or
#1a##rC DAT?pe:)//)DAUser):DA+ass.W.DA!ost):DA+ort../DAName/; 5urrently supported
DB,ype values areC mys/lA pgs/lA ms/lA solidA mss/lA oracleA and i#ase; ActuallyA it does not matter
(or native li#raries supportA #ut ODB5 users should speci(y one o( the supported values; .( your
data#ase type is not supportedA you may use un>no7n instead;
#1mo#e 2 %ou may select the OL data#ase mode o( Eords storage; Possi#le values o( #1mo#e areC
s6nEleA mult6A crcA or crc=mult6; Lhen s6nEle is speci(iedA all Eords are stored in the same ta#le; .(
mult6 is selectedA Eords Eill #e located in di((erent ta#les depending o( their lengths; =multi= mode
is usually (asterA #ut re/uires more ta#les in the data#ase; .( =crc= mode is selectedA mnoGoearch
Eill store 70 #it integer Eord .Ds calculated #y 5R570 algorithm instead o( Eords; ,his mode
re/uires less dis" space and it is (aster comparing Eith =single= and =multi= modes; crc=mult6 uses
the same storage structure Eith the =crc= modeA #ut also stores Eords in di((erent ta#les depending
on Eords lengths li"e in =multi= mode;
Nota- #1a##r and #1mo#e must match those used during indeFing;
Nota- .n (act this (unction does not open a connection to the data#ase and thus does not
chec" the entered login and passEord; +sta#lishing a connection to the data#ase and
loginDpassEord veri(ication is done #y udm>find./;
udm>api>5ersion
>P&P 8 _^ 8;3;4A P&P 4?
udmZapiZversion 22 Get mnoGoearch AP. version
Kescription
int udm>api>5ersion > void ?
udm>api>5ersion./ returns the mnoGoearch AP. version num#er; +;g; i( mnoGoearch 7;1;13
AP. is usedA this (unction Eill return R0110;
,his (unction alloEs the user to identi(y Ehich AP. (unctions are availa#leA e;g;
udm>get>doc>count./ (unction is only availa#le in mnoGoearch 7;1;11 or later;
E'emplo !. udm>api>5ersion./ e+ample
<?php
i# 3udm%api%=ersion39 >> <26669 :
echo "*otal number o# +'Os in database@ " . udm%Eet%doc%count3$udm9 . "<br />Vn";
;
?>
udm>cat>list
>P&P 8 _^ 8;3;KA P&P 4?
udmZcatZlist 22 Get all the categories on the same level Eith the current one
Kescription
array udm>cat>list > resource agentA string category ?
Returns an array listing all categories o( the same level as the current cateEor? in the categories tree;
aEent is the agent identi(ier returned #y a previous call to Gudm>alloc>agent./;
,he (unction can #e use(ul (or developing categories tree #roEser;
,he returned array consists o( pairs; +lements Eith even indeF num#ers contain the category pathsA
odd elements contain the corresponding category names;
$array)2/ 8ill contain M2C2<22M
$array)6/ 8ill contain M,udiM
$array)C/ 8ill contain M2C2<26M
$array)</ 8ill contain MZ"7M
$array)1/ 8ill contain M2C2<2CM
$array)5/ 8ill contain M?pelM
...
etc.
FolloEing is an eFample o( displaying lin"s o( the current level in (ormatC
,udi
Z"7
?pel
...
E'emplo !. udm>cat>list./e+ample
<?php
$cat%list%arr > udm%cat%list3$udm%aEent, $cat9;
$cat%list > MM;
#or 3$i>2; $i<count3$cat%list%arr9; $i[>C9 :
$path > $cat%list%arr)$i/;
$name > $cat%list%arr)$i[6/;
$cat%list .> "<a hre#>V"$%&E'(E')H%&EOS/?cat>$pathV">$name</a><br />";
;
?>
ee also udm>cat>path./;
udm>cat>path
>P&P 8 _^ 8;3;KA P&P 4?
udmZcatZpath 22 Get the path to the current category
Kescription
array udm>cat>path > resource agentA string category ?
Returns an array descri#ing the path in the categories tree (rom the tree root to the current oneA
speci(ied #y cateEor?; aEent is the agent identi(ier returned #y a previous call to Gudm>alloc>agent
./;
,he returned array consists o( pairs; +lements Eith even indeF num#ers contain the category pathsA
odd elements contain the corresponding category names;
For eFampleA the call 'arra?:u#m_cat_pathL'aEentC <020R1D<MJ may return the (olloEing arrayC
$array)2/ 8ill contain MM
$array)6/ 8ill contain M'ootM
$array)C/ 8ill contain M2CM
$array)</ 8ill contain M&portM
$array)1/ 8ill contain M2C2<M
$array)5/ 8ill contain M,utoM
$array)1/ 8ill contain M2C2<6LM
$array)5/ 8ill contain MSerrariM
E'emplo !. ,pecifying path to the current category in the follo3ing format- UG Moot G ,port G
Auto G ;errariU
<?php
$cat%path%arr > udm%cat%path3$udm%aEent, $cat9;
$cat%path > MM;
#or 3$i>2; $i<count3$cat%path%arr9; $i[>C9 :
$path > $cat%path%arr)$i/;
$name > $cat%path%arr)$i[6/;
$cat%path .> " > <a hre#>V"$%&E'(E')H%&EOS/?cat>$pathV">$name</a> ";
;
?>
ee also udm>cat>list./;
udm>checB>charset
>P&P 8 _^ 8;0;3A P&P 4?
udmZchec"Zcharset 22 5hec" i( the given charset is "noEn to mnogosearch
Kescription
#ool udm>checB>charset > resource agentA string charset ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
udm>checB>stored
>P&P 8 _^ 8;0;3A P&P 4?
udmZchec"Zstored 22 5hec" connection to stored
Kescription
int udm>checB>stored > resource agentA int lin"A string docZid ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
udm>clear>search>limits
>P&P 8 _^ 8;3;4A P&P 4?
udmZclearZsearchZlimits 22 5lear all mnoGoearch search restrictions
Kescription
#ool udm>clear>search>limits > resource agent ?
udm>clear>search>limits./ resets de(ined search limitations and returns TRUE;
ee also udm>add>search>limit./;
udm>close>stored
>P&P 8 _^ 8;0;3A P&P 4?
udmZcloseZstored 22 5lose connection to stored
Kescription
int udm>close>stored > resource agentA int lin" ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
udm>crc7*
>P&P 8 _^ 8;0;3A P&P 4?
udmZcrc70 22 Return 5R570 chec"sum o( given string
Kescription
int udm>crc7* > resource agentA string str ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
udm>errno
>P&P 8 _^ 8;3;4A P&P 4?
udmZerrno 22 Get mnoGoearch error num#er
Kescription
int udm>errno > resource agent ?
udm>errno./ returns mnoGoearch error num#erA zero i( no error;
aEent 2 lin" to agent identi(ierA received a(ter call to udm>alloc>agent./;
Receiving numeric agent error code;
udm>error
>P&P 8 _^ 8;3;4A P&P 4?
udmZerror 22 Get mnoGoearch error message
Kescription
string udm>error > resource agent ?
udm>error./ returns mnoGoearch error messageA empty string i( no error;
aEent 2 lin" to agent identi(ierA received a(ter call to udm>alloc>agent./;
Receiving agent error message;
udm>find
>P&P 8 _^ 8;3;4A P&P 4?
udmZ(ind 22 Per(orm search
Kescription
resource udm>find > resource agentA string /uery ?
Returns a result lin" identi(ier on successA or FALSE on (ailure;
,he search itsel(; ,he (irst argument 2 sessionA the neFt one 2 /uery itsel(; ,o (ind something 'ust
type Eords you Eant to (ind and press @BM., #utton; For eFampleA =mys/l od#c=; %ou should not
use /uotes = in /ueryA they are Eritten here only to divide a /uery (rom other teFt; mnoGoearch
Eill (ind all documents that contain Eord =mys/l= andDor Eord =od#c=; Best documents having
#igger Eeights Eill #e displayed (irst; .( you use search mode ALLA search Eill return documents
that contain #oth >or more? Eords you entered; .n case you use mode AN%A the search Eill return
list o( documents that contain any o( the Eords you entered; .( you Eant more advanced results you
may use /uery language; %ou should select =#ool= match mode in the search (rom;
mnoGoearch understands the (olloEing #oolean operatorsC
i 2 logical AND; For eFampleA =mys/l i od#c=; mnoGoearch Eill (ind any @RLs that contain
#oth =mys/l= and =od#c=;
l 2 logical OR; For eFample =mys/llod#c=; mnoGoearch Eill (ind any @RLsA that contain Eord
=mys/l= or Eord =od#c=;
g 2 logical NO,; For eFample =mys/l i god#c=; mnoGoearch Eill (ind @RLs that contain Eord
=mys/l= and do not contain Eord =od#c= at the same time; Note that g 'ust eFcludes given Eord
(rom results; Ouery =god#c= Eill (ind nothinga
>? 2 group command to compose more compleF /ueries; For eFample =>mys/l l ms/l? i gpostgres=;
Ouery language is simple and poEer(ul at the same time; !ust consider /uery as usual #oolean
eFpression;
udm>free>agent
>P&P 8 _^ 8;3;4A P&P 4?
udmZ(reeZagent 22 Free mnoGoearch session
Kescription
int udm>free>agent > resource agent ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
aEent 2 lin" to agent identi(ierA received m a(ter call to udm>alloc>agent./;
Freeing up memory allocated (or agent session;
udm>free>ispell>data
>P&P 8 _^ 8;3;4A P&P 4?
udmZ(reeZispellZdata 22 Free memory allocated (or ispell data
Kescription
#ool udm>free>ispell>data > int agent ?
udm>free>ispell>data./ alEays returns TRUE;
aEent 2 agent lin" identi(ierA received a(ter call to udm>alloc>agent./;
Nota- ,his (unction is supported #eginning (rom version 7;1;10 o( mnoGoearch and it
does not do anything in previous versions;
udm>free>res
>P&P 8 _^ 8;3;4A P&P 4?
udmZ(reeZres 22 Free mnoGoearch result
Kescription
#ool udm>free>res > resource res ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
res 2 a lin" to result identi(ierA received a(ter call to udm>find./;
Freeing up memory allocated (or results;
udm>get>doc>count
>P&P 8 _^ 8;3;4A P&P 4?
udmZgetZdocZcount 22 Get total num#er o( documents in data#ase
Kescription
int udm>get>doc>count > resource agent ?
udm>get>doc>count./ returns the num#er o( documents in the data#ase;
aEent 2 lin" to agent identi(ierA received a(ter call to udm>alloc>agent./;
Nota- ,his (unction is supported only in mnoGoearch 7;1;11 or later;
udm>get>res>field
>P&P 8 _^ 8;3;4A P&P 4?
udmZgetZresZ(ield 22 Fetch mnoGoearch result (ield
Kescription
string udm>get>res>field > resource resA int roEA int (ield ?
udm>get>res>field./ returns result (ield value on successA FALSE on error;
res 2 a lin" to result identi(ierA received a(ter call to udm>find./;
ro7 2 the num#er o( the lin" on the current page; May have values (rom 3 to
UDM_+,R,M_NUM_ROIS=1;
96el# 2 (ield identi(ierA may have the (olloEing valuesC
@DMZF.+LDZ@RL 2 document @RL (ield
@DMZF.+LDZ5ON,+N, 2 document 5ontent2type (ield >(or eFampleA teFtDhtml?;
@DMZF.+LDZ5A,+GOR% 2 document category (ield; @se udm>cat>path./ to get (ull
path to current category (rom the categories tree root; >,his parameter is availa#le only in
P&P 8;3;K or later?;
@DMZF.+LDZ,.,L+ 2 document title (ield;
@DMZF.+LDZS+%LORD 2 document "eyEords (ield >(rom M+,A S+%LORD tag?;
@DMZF.+LDZD+5 2 document description (ield >(rom M+,A D+5R.P,.ON tag?;
@DMZF.+LDZ,+J, 2 document #ody teFt >the (irst couple o( lines to give an idea o( Ehat
the document is a#out?;
@DMZF.+LDZ.I+ 2 document size;
@DMZF.+LDZ@RL.D 2 uni/ue @RL .D o( the lin";
@DMZF.+LDZRA,.NG 2 page rating >as calculated #y mnoGoearch?;
@DMZF.+LDZMOD.F.+D 2 last2modi(ied (ield in uniFtime (ormat;
@DMZF.+LDZORD+R 2 the num#er o( the current document in set o( (ound documents;
@DMZF.+LDZ5R5 2 document 5R5;
udm>get>res>param
>P&P 8 _^ 8;3;4A P&P 4?
udmZgetZresZparam 22 Get mnoGoearch result parameters
Kescription
string udm>get>res>param > resource resA int param ?
udm>get>res>param./ returns result parameter value on successA FALSE on error;
res 2 a lin" to result identi(ierA received a(ter call to udm>find./;
param 2 parameter identi(ierA may have the (olloEing valuesC
@DMZPARAMZN@MZROL 2 num#er o( received (ound lin"s on the current page; .t is
e/ual to @DMZPARAMZPAG+Z.I+ (or all search pagesA on the last page 2 the rest o(
lin"s;
@DMZPARAMZFO@ND 2 total num#er o( results matching the /uery;
@DMZPARAMZLORD.NFO 2 in(ormation on the Eords (ound; +;g; search (or =a good
#oo"= Eill return =aC stopEordA goodC4K7:A #oo"C 103=
@DMZPARAMZ+AR5&,.M+ 2 search time in seconds;
@DMZPARAMZF.R,ZDO5 2 the num#er o( the (irst document displayed on current page;
@DMZPARAMZLA,ZDO5 2 the num#er o( the last document displayed on current page;
udm>hash7*
>P&P 8 _^ 8;7;7A P&P 4?
udmZhash70 22 Return &ash70 chec"sum o( gived string
Kescription
int udm>hash7* > resource agentA string str ?
udm>hash7*./ Eill ta"e a string str and return a /uite uni/ue 702#it hash num#er (rom it; Re/uires
an allocated aEent;
ee alsoC udm>alloc>agent./;
udm>load>ispell>data
>P&P 8 _^ 8;3;4A P&P 4?
udmZloadZispellZdata 22 Load ispell data
Kescription
#ool udm>load>ispell>data > resource agentA int varA string val1A string val0A int (lag ?
udm>load>ispell>data./ loads ispell data; Devuelve TRUE si todo se llev- a ca#o correctamenteA
FALSE en caso de (allo;
aEent 2 agent lin" identi(ierA received a(ter call to udm>alloc>agent./;
ar 2 parameterA indicating the source (or ispell data; May have the (olloEing valuesC
A(ter using this (unction to (ree memory allocated (or ispell dataA please use udm>free>ispell>data
./A even i( you use @DMZ.P+LLZ,%P+Z+R$+R mode;
,he (astest mode is @DMZ.P+LLZ,%P+Z+R$+R; @DMZ.P+LLZ,%P+Z,+J, is sloEer and
@DMZ.P+LLZ,%P+ZDB is the sloEest; ,he a#ove pattern is TRUE (or mnoGoearch 7;1;13 2
7;1;11; .t is planned to speed up DB mode in (uture versions and it is going to #e (aster than ,+J,
mode;
@DMZ.P+LLZ,%P+ZDB 2 indicates that ispell data should #e loaded (rom OL; .n this
caseA parameters al1 and al2 are ignored and should #e le(t #lan"; 9laE should #e e/ual to
1;
Nota- 9laE indicates that a(ter loading ispell data (rom de(ined source it should
#e sorted >it is necessary (or correct (unctioning o( ispell?; .n case o( loading
ispell data (rom (iles there may #e several calls to udm>load>ispell>data./A and
there is no sense to sort data a(ter every callA #ut only a(ter the last one; ince in
d# mode all the data is loaded #y one callA this parameter should have the value
1; .n this mode in case o( errorA e;g; i( ispell ta#les are a#sentA the (unction Eill
return FALSE and code and error message Eill #e accessi#le through
udm>error./ and udm>errno./;
E'emplo !. udm>load>ispell>data./e+ample
<?php
i# 3! udm%load%ispell%data3$udm, +L"%4&EOO%*PE%LZ, MM, MM, 699 :
print#3"Error U\d@ M\sMVn", udm%errno3$udm9, udm%error3$udm99;
exit;
;
?>
@DMZ.P+LLZ,%P+ZAFF.J 2 indicates that ispell data should #e loaded (rom (ile and
initiates loading a((iFes (ile; .n this case al1 de(ines dou#le letter language code (or Ehich
a((iFes are loadedA and al2 2 (ile path; Please noteA that i( a relative path enteredA the module
loo"s (or the (ile not in @DMZ5ONFZD.RA #ut in relation to current pathA i;e; to the path
Ehere the script is eFecuted; .n case o( error in this modeA e;g; i( (ile is a#sentA the (unction
Eill return FALSEA and an error message Eill #e displayed; +rror message teFt cannot #e
accessed through udm>error./ and udm>errno./A since those (unctions can only return
messages associated Eith OL; PleaseA see 9laE parameter description in
@DMZ.P+LLZ,%P+ZDB;
E'emplo *. udm>load>ispell>data./ e+ample
<?php
i# 33! udm%load%ispell%data3$udm, +L"%4&EOO%*PE%,SS4X, MenM, M/opt/ispell/en.a##M, 299 TT
3! udm%load%ispell%data3$udm, +L"%4&EOO%*PE%,SS4X, MruM, M/opt/ispell/ru.a##M, 299 TT
3! udm%load%ispell%data3$udm, +L"%4&EOO%*PE%&EOO, MenM, M/opt/ispell/en.dictM, 299 TT
3! udm%load%ispell%data3$udm, +L"%4&EOO%*PE%&EOO, MruM, M/opt/ispell/ru.dictM, 6999 :
exit;
;
?>
Nota- 9laE is e/ual to 1 only in the last call;
@DMZ.P+LLZ,%P+ZP+LL 2 indicates that ispell data should #e loaded (rom (ile and
initiates loading o( ispell dictionary (ile; .n this case al1 de(ines dou#le letter language code
(or Ehich a((iFes are loadedA and al2 2 (ile path; Please noteA that i( a relative path enteredA
the module loo"s (or the (ile not in @DMZ5ONFZD.RA #ut in relation to current pathA i;e; to
the path Ehere the script is eFecuted; .n case o( error in this modeA e;g; i( (ile is a#sentA the
(unction Eill return FALSEA and an error message Eill #e displayed; +rror message teFt
cannot #e accessed through udm>error./ and udm>errno./A since those (unctions can only
return messages associated Eith OL; PleaseA see 9laE parameter description in
@DMZ.P+LLZ,%P+ZDB;
<?php
i# 33! +dm%Ooad%4spell%Lata3$udm, +L"%4&EOO%*PE%,SS4X, MenM, M/opt/ispell/en.a##M, 299 TT
3! +dm%Ooad%4spell%Lata3$udm, +L"%4&EOO%*PE%,SS4X, MruM, M/opt/ispell/ru.a##M, 299 TT
3! +dm%Ooad%4spell%Lata3$udm, +L"%4&EOO%*PE%&EOO, MenM, M/opt/ispell/en.dictM, 299 TT
3! +dm%Ooad%4spell%Lata3$udm, +L"%4&EOO%*PE%&EOO, MruM, M/opt/ispell/ru.dictM, 6999 :
exit;
;
?>
Nota- 9laE is e/ual to 1 only in the last call;
@DMZ.P+LLZ,%P+Z+R$+R 2 ena#les spell server support; al1 parameter indicates
address o( the host running spell server; al2 m is not used yetA #ut in (uture releases it is
going to indicate num#er o( port used #y spell server; 9laE parameter in this case is not
needed since ispell data is stored on spellserver already sorted;
pelld server reads spell2data (rom a separate con(iguration (ile
>DusrDlocalDmnogosearchDetcDspelld;con( #y de(ault?A sorts it and stores in memory; Lith
clients server communicates in tEo EaysC to indeFer all the data is trans(erred >so that
indeFer starts (aster?A (rom search;cgi server receives Eord to normalize and then passes over
to client >search;cgi? list o( normalized Eord (orms; ,his alloEs (astestA compared to d# and
teFt modes processing o( search /ueries >#y omitting loading and sorting all the spell data?;
udm>load>ispell>data./ (unction in @DMZ.P+LLZ,%P+Z+R$+R mode does not
actually load ispell dataA #ut only de(ines server address; .n (actA server is automatically used
#y udm>find./ (unction Ehen per(orming search; .n case o( errorsA e;g; i( spellserver is not
running or invalid host indicatedA there are no messages returned and ispell conversion does
not Eor";
Nota- ,his (unction is availa#le in mnoGoearch 7;1;10 or later;
+FampleC
<?php
i# 3!udm%load%ispell%data3$udm, +L"%4&EOO%*PE%&E'(E', MM, MM, 699 :
echo "Error loadinE ispell data #rom ser=er<br />Vn";
exit;
;
?>
udm>open>stored
>P&P 8 _^ 8;0;3A P&P 4?
udmZopenZstored 22 Open connection to stored
Kescription
int udm>open>stored > resource agentA string storedaddr ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
udm>set>agent>param
>P&P 8 _^ 8;3;4A P&P 4?
udmZsetZagentZparam 22 et mnoGoearch agent session parameters
Kescription
#ool udm>set>agent>param > resource agentA int varA string val ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo; De(ines
mnoGoearch session parameters;
,he (olloEing parameters and their values are availa#leC
@DMZPARAMZPAG+ZN@M 2 used to choose search results page num#er >results are
returned #y pages #eginning (rom 3A Eith @DMZPARAMZPAG+Z.I+ results per page?;
@DMZPARAMZPAG+Z.I+ 2 num#er o( search results displayed on one page;
@DMZPARAMZ+AR5&ZMOD+ 2 search mode; ,he (olloEing values availa#leC
@DMZMOD+ZALL 2 search (or all EordsX @DMZMOD+ZAN% 2 search (or any EordX
@DMZMOD+ZP&RA+ 2 phrase searchX @DMZMOD+ZBOOL 2 #oolean search; ee
udm>find./ (or details on #oolean search;
@DMZPARAMZ5A5&+ZMOD+ 2 turns on or o(( search result cache mode; Lhen ena#ledA
the search engine Eill store search results to dis"; .n case a similar search is per(ormed laterA
the engine Eill ta"e results (rom the cache (or (aster per(ormance; Availa#le valuesC
@DMZ5A5&+Z+NABL+DA @DMZ5A5&+ZD.ABL+D;
@DMZPARAMZ,RA5SZMOD+ 2 turns on or o(( trac"/uery mode; ince version 7;1;0
mnoGoearch has a /uery trac"ing support; Note that trac"ing is implemented in OL
version only and not availa#le in #uilt2in data#ase; ,o use trac"ingA you have to create ta#les
(or trac"ing support; For MyOLA use createDmys/lDtrac";tFt; Lhen doing a searchA (ront2end
uses those ta#les to store /uery EordsA a num#er o( (ound documents and current @niF
timestamp in seconds; Availa#le valuesC @DMZ,RA5SZ+NABL+DA
@DMZ,RA5SZD.ABL+D;
@DMZPARAMZP&RA+ZMOD+ 2 de(ines Ehether indeF data#ase using phrases >=phrase=
parameter in indeFer;con(?; Possi#le valuesC @DMZP&RA+Z+NABL+D and
@DMZP&RA+ZD.ABL+D; Please noteA that i( phrase search is ena#led
>@DMZP&RA+Z+NABL+D?A it is still possi#le to do search in any mode >AN%A ALLA
BOOL or P&RA+?; .n 7;1;13 version o( mnoGoearch phrase search is supported only in
s/l and #uilt2in data#ase modesA Ehile #eginning Eith 7;1;11 phrases are supported in
cachemode as Eell;
+Famples o( phrase searchC
=Arizona desert= 2 ,his /uery returns all indeFed documents that contain =Arizona desert= as
a phrase; Notice that you need to put dou#le /uotes around the phrase
@DMZPARAMZ5&AR+, 2 de(ines local charset; Availa#le valuesC set o( charsets
supported #y mnoGoearchA e;g; "oiM2rA cp1041A ;;;
@DMZPARAMZ,OPF.L+ 2 De(ines name and path to stopEords (ile; >,here is a small
di((erence Eith mnoGoearch 2 Ehile in mnoGoearch i( relative path or no path enteredA it
loo"s (or this (ile in relation to @DMZ5ONFZD.RA the module loo"s (or the (ile in relation
to current pathA i;e; to the path Ehere the P&P script is eFecuted;?
@DMZPARAMZ,OP,ABL+ 2 Load stop Eords (rom the given OL ta#le; %ou may use
several topEord,a#le commands; ,his command has no e((ect Ehen compiled Eithout
OL data#ase support;
@DMZPARAMZL+.G&,ZFA5,OR 2 represents Eeight (actors (or speci(ic document
parts; 5urrently #odyA titleA "eyEordsA descriptionA url are supported; ,o activate this (eature
please use degrees o( 0 in VLeight commands o( the indeFer;con(; LetHs imagine that Ee
have these EeightsC
@RLLeight 1
BodyLeight 0
,itleLeight 8
SeyEordLeight M
DescLeight 1K

As (ar as indeFer uses #it OR operation (or Eord Eeights Ehen some Eord presents several
time in the same documentA it is possi#le at search time to detect Eord appearance in
di((erent document parts; Lord Ehich appears only in the #ody Eill have 33333313
aggregate Eeight >in #inary notation?; Lord used in all document parts Eill have 33311111
aggregate Eeight;
,his parameterHs value is a string o( heF digits AB5D+; +ach digit is a (actor (or
corresponding #it in Eord Eeight; For the given a#ove Eeights con(igurationC
+ is a (actor (or Eeight 1 >@RL Leight #it?
D is a (actor (or Eeight 0 >BodyLeight #it?
5 is a (actor (or Eeight 8 >,itleLeight #it?
B is a (actor (or Eeight M >SeyEordLeight #it?
A is a (actor (or Eeight 1K >DescLeight #it?

+FamplesC
@DMZPARAMZL+.G&,ZFA5,OR^33331 Eill search through @RLs only;
@DMZPARAMZL+.G&,ZFA5,OR^33133 Eill search through ,itles only;
@DMZPARAMZL+.G&,ZFA5,OR^11133 Eill search through
,itleASeyEordsADescription #ut not through @RL and Body;
@DMZPARAMZL+.G&,ZFA5,OR^F9801 Eill search throughC
Description Eith (actor 14 >F heF?
SeyEords Eith (actor 9
,itle Eith (actor 8
Body Eith (actor 0
@RL Eith (actor 1

.( @DMZPARAMZL+.G&,ZFA5,OR varia#le is omittedA original Eeight value is ta"en to
sort results; For a given a#ove Eeight con(iguration it means that document description has a
most #ig Eeight 1K;
@DMZPARAMZLORDZMA,5& 2 Eord match; %ou may use this parameter to choose
Eord match type; ,his (eature Eor"s only in =single= and =multi= modes using OL #ased
and #uilt2in data#ase; .t does not Eor" in cachemode and other modes since they use Eord
5R5 and do not support su#string search; Availa#le valuesC
@DMZMA,5&ZB+G.N 2 Eord #eginning matchX
@DMZMA,5&Z+ND 2 Eord ending matchX
@DMZMA,5&ZLORD 2 Ehole Eord matchX
@DMZMA,5&Z@B,R 2 Eord su#string match;
@DMZPARAMZM.NZLORDZL+N 2 de(ines minimal Eord length; Any Eord shorter this
limit is considered to #e a stopEord; Please note that this parameter value is inclusiveA i;e; i(
@DMZPARAMZM.NZLORDZL+N^7A a Eord 7 characters long Eill not #e considered a
stopEordA Ehile a Eord 0 characters long Eill #e; De(ault value is 1;
@DMZPARAMZ.P+LLZPR+F.J+ 2 Possi#le valuesC @DMZPR+F.J+Z+NABL+D and
@DMZPR+F.J+ZD.ABL+DA that respectively ena#le or disa#le using pre(iFes; +;g; i( a
Eord =tested= is in search /ueryA also Eords li"e =test=A =testing=A etc; Only su((iFes are
supported #y de(ault; Pre(iFes usually change Eord meaningsA (or eFample i( some#ody is
searching (or the Eord =tested= one hardly Eants =untested= to #e (ound; Pre(iFes support
may also #e (ound use(ul (or siteHs spelling chec"ing purposes; .n order to ena#le ispellA you
have to load ispell data Eith udm>load>ispell>data./;
@DMZPARAMZ5ROZLORD 2 ena#les or disa#les crossEords support; Possi#le
valuesC @DMZ5ROZLORDZ+NABL+D and @DMZ5ROZLORDZD.ABL+D;
,he crossEords (eature alloEs to assign Eords #etEeen `a hre(^=FFF=_ and `Da_ also to a
document this lin" leads to; .t Eor"s in OL data#ase mode and is not supported in #uilt2in
data#ase and 5achemode;
Nota- 5rossEords are supported only in mnoGoearch 7;1;11 or later;
@DMZPARAMZ$ARD.R 2 speci(ies a custom path to directory Ehere indeFer stores data
Ehen using #uilt2in data#ase and in cache mode; By de(ault /ar directory o( mnoGoearch
installation is used; 5an have only string values; ,he parameter is availa#le in P&P 8;1;3 or
later;
:IIC. Moha3B ,oft3are ,ession Handler
;unctions
Introducci"n
msession is an inter(ace to a high speed session daemon Ehich can run either locally or remotely; .t
is designed to provide consistent session management (or a P&P Ee# (arm; More .n(ormation a#out
msession and the session server so(tEare itsel( can #e (ound at
httpCDDdevel;mohaE"so(t;comDmsession;html;
Nota- +sta eFtensi-n no est* disponi#le en plata(ormas LindoEs
Me?uirimientos
Instalaci"n
,o ena#le Msession support con(igure P&P ==76th=msess6on):D0R.A Ehere D.R is the Msession
install directory;
Configuraci"n en tiempo de e'ecuci"n
Tipos de recursos
Constantes predefinidas
Tabla de contenidos
msessionZconnect 22 5onnect to msession server
msessionZcount 22 Get session count
msessionZcreate 22 5reate a session
msessionZdestroy 22 Destroy a session
msessionZdisconnect 22 5lose connection to msession server
msessionZ(ind 22 Find all sessions Eith name and value
msessionZgetZarray 22 Get array o( msession varia#les
msessionZgetZdata 22 Get data session unstructured data
msessionZget 22 Get value (rom session
msessionZinc 22 .ncrement value in session
msessionZlist 22 List all sessions
msessionZlistvar 22 List sessions Eith varia#le
msessionZloc" 22 Loc" a session
msessionZplugin 22 5all an escape (unction Eithin the msession personality plugin
msessionZrandstr 22 Get random string
msessionZsetZarray 22 et msession varia#les (rom an array
msessionZsetZdata 22 et data session unstructured data
msessionZset 22 et value in session
msessionZtimeout 22 etDget session timeout
msessionZuni/ 22 Get uni/ue id
msessionZunloc" 22 @nloc" a session
msession>connect
>P&P 8 _^ 8;0;3A P&P 4?
msessionZconnect 22 5onnect to msession server
Kescription
#ool msession>connect > string hostA string port ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>count
>P&P 8 _^ 8;0;3A P&P 4?
msessionZcount 22 Get session count
Kescription
int msession>count > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>create
>P&P 8 _^ 8;0;3A P&P 4?
msessionZcreate 22 5reate a session
Kescription
#ool msession>create > string session ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>destroy
>P&P 8 _^ 8;0;3A P&P 4?
msessionZdestroy 22 Destroy a session
Kescription
#ool msession>destroy > string name ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>disconnect
>P&P 8 _^ 8;0;3A P&P 4?
msessionZdisconnect 22 5lose connection to msession server
Kescription
void msession>disconnect > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>find
>P&P 8 _^ 8;0;3A P&P 4?
msessionZ(ind 22 Find all sessions Eith name and value
Kescription
array msession>find > string nameA string value ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>get>array
>P&P 8 _^ 8;0;3A P&P 4?
msessionZgetZarray 22 Get array o( msession varia#les
Kescription
array msession>get>array > string session ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>get>data
>P&P 8 _^ 8;0;3A P&P 4?
msessionZgetZdata 22 Get data session unstructured data
Kescription
string msession>get>data > string session ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>get
>P&P 8 _^ 8;0;3A P&P 4?
msessionZget 22 Get value (rom session
Kescription
string msession>get > string sessionA string nameA string value ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>inc
>P&P 8 _^ 8;0;3A P&P 4?
msessionZinc 22 .ncrement value in session
Kescription
string msession>inc > string sessionA string name ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>list
>P&P 8 _^ 8;0;3A P&P 4?
msessionZlist 22 List all sessions
Kescription
array msession>list > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>list5ar
>P&P 8 _^ 8;0;3A P&P 4?
msessionZlistvar 22 List sessions Eith varia#le
Kescription
array msession>list5ar > string name ?
Returns an associative array o( valueDsession (or all sessions Eith a varia#le named name;
@sed (or searching sessions Eith common attri#utes;
msession>locB
>P&P 8 _^ 8;0;3A P&P 4?
msessionZloc" 22 Loc" a session
Kescription
int msession>locB > string name ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>plugin
>P&P 8 _^ 8;0;3A P&P 4?
msessionZplugin 22 5all an escape (unction Eithin the msession personality plugin
Kescription
string msession>plugin > string sessionA string val PA string paramQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>randstr
>P&P 8 _^ 8;0;3A P&P 4?
msessionZrandstr 22 Get random string
Kescription
string msession>randstr > int param ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>set>array
>P&P 8 _^ 8;0;3A P&P 4?
msessionZsetZarray 22 et msession varia#les (rom an array
Kescription
#ool msession>set>array > string sessionA array tuples ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>set>data
>P&P 8 _^ 8;0;3A P&P 4?
msessionZsetZdata 22 et data session unstructured data
Kescription
#ool msession>set>data > string sessionA string value ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>set
>P&P 8 _^ 8;0;3A P&P 4?
msessionZset 22 et value in session
Kescription
#ool msession>set > string sessionA string nameA string value ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>timeout
>P&P 8 _^ 8;0;3A P&P 4?
msessionZtimeout 22 etDget session timeout
Kescription
int msession>timeout > string session PA int paramQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>uni?
>P&P 8 _^ 8;0;3A P&P 4?
msessionZuni/ 22 Get uni/ue id
Kescription
string msession>uni? > int param ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
msession>unlocB
>P&P 8 _^ 8;0;3A P&P 4?
msessionZunloc" 22 @nloc" a session
Kescription
int msession>unlocB > string sessionA int "ey ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
:IICI. ;unciones m,$:
Introducci"n
+stas (unciones le permiten acceder a servidores de #ases de datos mOL; Puede encontrar m*s
in(ormaci-n so#re mOL en httpCDDEEE;hughes;com;auD;
Instalaci"n
.n order to have these (unctions availa#leA you must compile P&P Eith ms/l support #y using the ==
76th=ms@l):D0R. option; D.R is the mOL #ase install directoryA de(aults to /
usr/local/msQl<;
Note to 2in7* )sers- .n order to ena#le this module on a LindoEs environmentA you
must copy msQl.dll (rom the DLL (older o( the P&PDLin70 #inary pac"age to the
%,+M70 (older o( your EindoEs machine; >+FC R@V74..*V&P&*E"<C or
R@V74.L?7&V&P&*E"<C?
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. m,$: configuration options
Name Kefault Changeable
ms/l;alloEZpersisten
t
=On= P&PZ.N.Z%,+M
ms/l;maFZpersistent =21= P&PZ.N.Z%,+M
ms/l;maFZlin"s =21= P&PZ.N.Z%,+M
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
ms@l.allo7_pers6stent boolean
Lhether to alloE persistent mOL connections;
ms@l.ma8_pers6stent integer
,he maFimum num#er o( persistent mOL connections per process;
ms@l.ma8_l6n>s integer
,he maFimum num#er o( mOL connections per processA including persistent connections;
Tipos de recursos
+Fisten dos tipos de recurso usados en el m-dulo mOL; +l primero es el identi(icador de enlace
para una coneFi-n de #ase de datosA el segundo es un recurso /ue contiene el resultado de una
consulta;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
MS.L_ASSOC >integer?
MS.L_NUM >integer?
MS.L_(OTH >integer?
E'emplos
+ste sencillo e'emplo muestra el modo de crear una coneFi-nA e'ecutar una consultaA imprimir las
(ilas de resultado y desconectarse de una #ase de datos mOL;
E'emplo !. E'emplo de uso de m,$:
<?php
/W Ronexion, seleccion de una base de datos W/
$enlace > msQl%connect3MlocalhostM, Mnombre%usuarioM, McontrasenyaM9
or die3M.o pudo crear una conexi&oacute;n@ M . msQl%error3$enlace99;
msQl%select%db3Mbase%de%datosM, $enlace9
or die3M.o pudo seleccionarse la base de datosM9;
/W 'eali0ar una consulta &NO W/
$consulta > M&EOER* W S'?" mi%tablaM;
$resultado > msQl%Query3$consulta, $enlace9 or die3MOa consulta #all&oacute;@ M . msQl%error3$enlace99;
/W 4mpresion de resultados en H*"O W/
echo "<table>Vn";
8hile 3$#ila > msQl%#etch%array3$resultado, "&NO%,&&?R99 :
echo "Vt<tr>Vn";
#oreach 3$#ila as $=alor%col9 :
echo "VtVt<td>$=alor%col</td>Vn";
;
echo "Vt</tr>Vn";
;
echo "</table>Vn";
/W Oiberar el conjunto de resultados W/
msQl%#ree%result3$resultado9;
/W Rerrar la conexion W/
msQl%close3$enlace9;
?>
Tabla de contenidos
ms/lZa((ectedZroEs 22 devuelve el nBmero de (ilas involucradas
ms/lZclose 22 cierra una coneFi-n mOL
ms/lZconnect 22 a#re una coneFi-n mOL
ms/lZcreateZd# 22 crea una #ase de datos mOL
ms/lZcreated# 22 crea una #ase de datos mOL
ms/lZdataZsee" 22 desplaza el puntero interno de (ila
ms/lZd#Z/uery 22 end mOL /uery
ms/lZd#name 22 o#tiene el nom#re de la #ase de datos mOL actual
ms/lZdropZd# 22 elimina >suprime? una #ase de datos mOL
ms/lZerror 22 devuelve el mensa'e de error de la Bltima llamada ms/l
ms/lZ(etchZarray 22 recupera una (ila como un array
ms/lZ(etchZ(ield 22 o#tiene in(ormaci-n de campo
ms/lZ(etchZo#'ect 22 recupera una (ila como un o#'eto
ms/lZ(etchZroE 22 o#tiene una (ila como un array enumerado
ms/lZ(ieldZ(lags 22 Get (ield (lags
ms/lZ(ieldZlen 22 Get (ield length
ms/lZ(ieldZname 22 Get (ield name
ms/lZ(ieldZsee" 22 esta#lece el desplazamiento del campo
ms/lZ(ieldZta#le 22 Get ta#le name (or (ield
ms/lZ(ieldZtype 22 Get (ield type
ms/lZ(ield(lags 22 o#tiene los (lags del campo
ms/lZ(ieldlen 22 o#tiene la longitud del campo
ms/lZ(ieldname 22 o#tiene el nom#re del campo
ms/lZ(ieldta#le 22 o#tiene el nom#re de la ta#la de un campo
ms/lZ(ieldtype 22 o#tiene el tipo del campo
ms/lZ(reeZresult 22 li#era la memoria del resultado
ms/lZlistZd#s 22 lista las #ases de datos mOL en el servidor
ms/lZlistZ(ields 22 lista los campos del resultado
ms/lZlistZta#les 22 lista las ta#las de una #ase de datos mOL
ms/lZnumZ(ields 22 o#tiene el nBmero de campos de un resultado
ms/lZnumZroEs 22 o#tiene el nBmero de (ilas de un resultado
ms/lZnum(ields 22 o#tiene el nBmero de campos de un resultado
ms/lZnumroEs 22 o#tiene el nBmero de (ilas en el resultado
ms/lZpconnect 22 a#re una coneFi-n mOL persistente
ms/lZ/uery 22 env)a una consulta mOL
ms/lZregcase 22 construye una eFpresi-n regular para una #Bs/ueda /ue no distinga
mayBsculasDminBsculas
ms/lZresult 22 o#tiene datos resultado
ms/lZselectZd# 22 selecciona una #ase de datos mOL
ms/lZta#lename 22 o#tiene el nom#re de la ta#la de un campo
ms/l 22 e'ecuta una consulta mOL
ms?l>affected>ro3s
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
ms/lZa((ectedZroEs 22 devuelve el nBmero de (ilas involucradas
Kescripci"n
int ms?l>affected>ro3s > int /ueryZidenti(ier ?
Devuelve el nBmero de (ilas involucradas >=tocadas=? por una consulta espec)(ica >i;e; el nBmero de
(ilas devueltas por una +L+5,A el nBmero de (ilas modi(icadas por una actualizaci-n >update?A o el
nBmero de (ilas suprimidas por una eliminaci-n >delete??;
$<ase tam#i<nC ms?l>?uery./
ms?l>close
>P&P 7A P&P 8 A P&P 4?
ms/lZclose 22 cierra una coneFi-n mOL
Kescripci"n
int ms?l>close > int lin"Zidenti(ier ?
Devuelve TRUE si tiene <FitoA FALSE en caso de error;
ms/lZclose>? cierra la coneFi-n con una #ase de datos mOL /ue est* asociada con el identi(icador
de coneFi-n >lin" identi(ier? especi(icado; i no se especi(ica el identi(icador de coneFi-nA se asume
la Bltima coneFi-n a#ierta;
Advierta /ue <sto no es necesario ha#itualmenteA las coneFiones a#iertas no2persistentes son
cerradas autom*ticamente a la conclusi-n de la e'ecuci-n del script;
ms/lZclose>? no cerrar* las coneFiones permanentes creadas por ms?l>pconnect./;
$<ase tam#i<nC ms?l>connect./ y ms?l>pconnect./;
ms?l>connect
>P&P 7A P&P 8 A P&P 4?
ms/lZconnect 22 a#re una coneFi-n mOL
Kescripci"n
int ms?l>connect > string hostname ?
Devuelve un identi(icador de coneFi-n mOL positivo si tiene <FitoA o FALSE en caso de error;
ms/lZconnect>? esta#lece una coneFi-n con un servidor mOL; +l argumento hostname es opcionalA
y en caso de /ue (alteA se asume localhost;
+n caso de /ue se haga una segunda llamada a ms/lZconnect>? con los mismos argumentosA no se
esta#lece una nueva coneFi-nA en lugar de esoA se devuelve el identi(icador de coneFi-n ya a#ierto;
La coneFi-n con el servidor se cerrar* tan pronto como la e'ecuci-n del script (inaliceA a menos /ue
sea cerrada antes eFpl)citamente por una llamada a ms?l>close./;
$<ase tam#i<nC ms?l>pconnect./A ms?l>close./;
ms?l>create>db
>P&P 7A P&P 8 A P&P 4?
ms/lZcreateZd# 22 crea una #ase de datos mOL
Kescripci"n
int ms?l>create>db > string data#ase name PA int lin"Zidenti(ierQ ?
ms/lZcreateZd#>? intenta crear una #ase de datos nueva en el servidor asociado con el identi(icador
de coneFi-n >lin" identi(ier? especi(icado;
$<ase tam#i<nC ms?l>drop>db./;
ms?l>createdb
>P&P 7A P&P 8 A P&P 4?
ms/lZcreated# 22 crea una #ase de datos mOL
Kescripci"n
int ms?l>createdb > string data#ase name PA int lin"Zidenti(ierQ ?
.d<ntica a ms?l>create>db./;
ms?l>data>seeB
>P&P 7A P&P 8 A P&P 4?
ms/lZdataZsee" 22 desplaza el puntero interno de (ila
Kescripci"n
int ms?l>data>seeB > int /ueryZidenti(ierA int roEZnum#er ?
Devuelve TRUE si tiene <FitoA FALSE en caso de (allo;
ms/lZdataZsee">? desplaza el puntero interno de (ila del resultado mOL asociado con el
identi(icador de consulta >/uery identi(ier? especi(icado para /ue apunte al nBmero de (ila >roE
num#er? proporcionado; La llamada posterior a ms?l>fetch>ro3./ devolver* esa (ila;
$<ase tam#i<nC ms?l>fetch>ro3./;
ms?l>db>?uery
>P&P 7A P&P 8 A P&P 4?
ms/lZd#Z/uery 22 end mOL /uery
Kescription
resource ms?l>db>?uery > string data#aseA string /uery PA resource lin"Zidenti(ierQ ?
Returns a positive mOL /uery identi(ier to the /uery resultA or FALSE on error;
ms?l>db>?uery./ selects a data#ase and eFecutes a /uery on it; .( the optional l6n>_6#ent696er is not
speci(iedA the (unction Eill try to (ind an open lin" to the mOL serverX i( no such lin" is (ound it
Eill try to create one as i( ms?l>connect./ Eas called Eith no arguments;
ee also ms?l>connect./;
ms?l>dbname
>P&P 7A P&P 8 A P&P 4?
ms/lZd#name 22 o#tiene el nom#re de la #ase de datos mOL actual
Kescripci"n
string ms?l>dbname > int /ueryZidenti(ierA int i ?
ms?l>dbname./ devuelve el nom#re de #ase de datos almacenado en la posici-n 6 del puntero
devuelto desde la (unci-n ms?l>listdbs./; La (unci-n ms?l>numro3s./ puede utilizarse para
determinar cuantos nom#res de #ase de datos hay disponi#les;
ms?l>drop>db
>P&P 7A P&P 8 A P&P 4?
ms/lZdropZd# 22 elimina >suprime? una #ase de datos mOL
Kescripci"n
int ms?l>drop>db > string data#aseZnameA int lin"Zidenti(ier ?
Devuelve TRUE si tiene <FitoA FALSE en caso de (allo;
ms/lZdropZd#>? intenta eliminar >suprimir? una #ase de datos completa del servidor asociado con el
identi(icador de coneFi-n >lin" identi(ier? especi(icado;
$<ase tam#i<nC ms?l>create>db./;
ms?l>error
>P&P 7A P&P 8 A P&P 4?
ms/lZerror 22 devuelve el mensa'e de error de la Bltima llamada ms/l
Kescripci"n
string ms?l>error > ?
Los errores /ue devuelve el servidor de #ase de datos mOL no dan mucha in(ormaci-n so#re el
pro#lema; Por este motivoA utilice estas (unciones para recuperar la cadena de car*cteres del error;
ms?l>fetch>array
>P&P 7A P&P 8 A P&P 4?
ms/lZ(etchZarray 22 recupera una (ila como un array
Kescripci"n
int ms?l>fetch>array > int /ueryZidenti(ier PA int resultZtypeQ ?
Devuelve un array /ue se corresponde con la (ila recuperadaA o FALSE si no hay m*s (ilas;
ms?l>fetch>array./ es una versi-n ampliada de ms?l>fetch>ro3./; Adem*s de almacenar los datos
en los )ndices num<ricos del array resultadoA tam#i<n almacena los datos en )ndices asociativosA
utilizando los nom#res de los campos como claves;
+l segundo argumento opcional result_t?pe en ms?l>fetch>array./ es una constante y puede tomar
los valores siguientesC MOLZAO5A MOLZN@MA y M%OLZBO,&;
ea precavido si est* recuperando resultados de una consulta /ue puede devolver un registro /ue
contiene un Bnico campo /ue tiene un valor de 3 >o una cadena de car*cteres vac)aA o NULL?;
@n aspecto importante a tener en cuenta es /ue el uso de ms?l>fetch>array./ NO es
signi(icativamente m*s lento /ue el uso de ms?l>fetch>ro3./A mientras /ue proporciona un valor
aWadido signi(icativo;
Para detalles adicionalesA v<ase tam#i<n ms?l>fetch>ro3./
ms?l>fetch>field
>P&P 7A P&P 8 A P&P 4?
ms/lZ(etchZ(ield 22 o#tiene in(ormaci-n de campo
Kescripci"n
o#'ect ms?l>fetch>field > int /ueryZidenti(ierA int (ieldZo((set ?
Devuelve un o#'eto /ue contiene la in(ormaci-n del campo
ms/lZ(etchZ(ield>? puede utilizarse para o#tener in(ormaci-n so#re campos del resultado de una
consulta; i no se especi(ica el desplazamiento del campoA se recupera el campo siguiente /ue no
haya sido aBn recuperado por ms/lZ(etchZ(ield>?;
Las propiedades del o#'eto sonC
name 2 nom#re de la columna
ta#le 2 nom#re de la ta#la a la /ue pertenece la columna
notZnull 2 1 si la columna no puede ser nula
primaryZ"ey 2 1 si la columna es una clave primaria
uni/ue 2 1 si la columna es una clave Bnica
type 2 tipo de la columna
$<ase tam#i<n ms?l>field>seeB./;
ms?l>fetch>ob'ect
>P&P 7A P&P 8 A P&P 4?
ms/lZ(etchZo#'ect 22 recupera una (ila como un o#'eto
Kescripci"n
int ms?l>fetch>ob'ect > int /ueryZidenti(ier PA int resultZtypeQ ?
Devuelve un o#'eto con las propiedades /ue corresponden a la (ila recuperadaA o FALSE si no hay
m*s (ilas;
ms?l>fetch>ob'ect./ es similar a ms?l>fetch>array./A con una di(erencia 2 se devuelve un o#'eto
en vez de un array; .ndirectamente esto signi(ica /ue s-lo tiene acceso a los datos por los nom#res
de los camposA y no por sus desplazamientos >los nBmeros son nom#res de propiedad no v*lidos?;
+l segundo par*metro opcional result_t?pe en ms?l>fetch>array./ es una constante y puede tomar
los valores siguientesC MOLZAO5A MOLZN@MA y MOLZBO,&;
ResumiendoA la (unci-n es ind<ntica a ms?l>fetch>array./A y casi tan r*pida como
ms?l>fetch>ro3./ >la di(erencia es insigni(icante?;
$<ase tam#i<nC ms?l>fetch>array./ y ms?l>fetch>ro3./;
ms?l>fetch>ro3
>P&P 7A P&P 8 A P&P 4?
ms/lZ(etchZroE 22 o#tiene una (ila como un array enumerado
Kescripci"n
array ms?l>fetch>ro3 > int /ueryZidenti(ier ?
Devuelve un array /ue se corresponde con la (ila recuperadaA o FALSE si no hay m*s (ilas;
ms/lZ(etchZroE>? recupera una (ila de datos del resultado asociado con el identi(icador de consulta
>/uery identi(ier? especi(icado; La (ila se devuelve en un array; 5ada columna devuelta se almacena
en un desplazamiento del arrayA comenzando en el desplazamiento 3;
@na llamada posterior a ms/lZ(etchZroE>? dever)a devolver la (ila siguiente del con'unto resultadoA
o FALSE si no hay m*s (ilas;
$<ase tam#i<nC ms?l>fetch>array./A ms?l>fetch>ob'ect./A ms?l>data>seeB./A y ms?l>result./;
ms?l>field>flags
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
ms/lZ(ieldZ(lags 22 Get (ield (lags
Kescription
string ms?l>field>flags > resource /ueryZidenti(ierA int (ieldZo((set ?
ms?l>field>flags./ returns the (ield (lags o( the speci(ied (ield; 5urrently this is eitherA =not NULL=A
=primary "ey=A a com#ination o( the tEo or == >an empty string?;
ms?l>field>len
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
ms/lZ(ieldZlen 22 Get (ield length
Kescription
int ms?l>field>len > resource /ueryZidenti(ierA int (ieldZo((set ?
ms?l>field>len./ returns the length o( the speci(ied (ield or FALSE on error;
ms?l>field>name
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
ms/lZ(ieldZname 22 Get (ield name
Kescription
string ms?l>field>name > resource /ueryZidenti(ierA int (ield ?
ms?l>field>name./ returns the name o( the speci(ied 96el# (rom the result resource @uer?_6#ent696er;
ms@l_96el#_nameL'resultC 2MJ Eill return the name o( the second (ield in the result set associated
Eith the result identi(ier;
ms?l>field>seeB
>P&P 7A P&P 8 A P&P 4?
ms/lZ(ieldZsee" 22 esta#lece el desplazamiento del campo
Kescripci"n
int ms?l>field>seeB > int /ueryZidenti(ierA int (ieldZo((set ?
e posiciona en el desplazamiento de campo >(ield o((set? especi(icado; i la siguiente llamada a
ms?l>fetch>field./ no incluye un desplazamiento de campoA este campo ser* el /ue se devuelva;
$<ase tam#i<nC ms?l>fetch>field./;
ms?l>field>table
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
ms/lZ(ieldZta#le 22 Get ta#le name (or (ield
Kescription
int ms?l>field>table > int /ueryZidenti(ierA int (ield ?
Returns the name o( the ta#le 96el# Eas (etched (rom;
,his (unction returns FALSE on (ailure;
ms?l>field>type
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
ms/lZ(ieldZtype 22 Get (ield type
Kescription
string ms?l>field>type > resource /ueryZidenti(ierA int (ieldZo((set ?
ms?l>field>type./ is similar to the ms?l>field>name./ (unction; ,he arguments are identicalA #ut
the (ield type is returned; ,his Eill #e one o( =int=A =char= or =real=;
,his (unction returns FALSE on (ailure;
ms?l>fieldflags
>P&P 7A P&P 8 A P&P 4?
ms/lZ(ield(lags 22 o#tiene los (lags del campo
Kescripci"n
string ms?l>fieldflags > int /ueryZidenti(ierA int i ?
ms/lZ(ield(lags>? o#tiene los (lags del campo >(ield? especi(icado; Actualmente pueden serA =not
NULL=A =primary "ey=A una com#inaci-n de am#osA o == >cadena vac)a?;
ms?l>fieldlen
>P&P 7A P&P 8 A P&P 4?
ms/lZ(ieldlen 22 o#tiene la longitud del campo
Kescripci"n
int ms?l>fieldlen > int /ueryZidenti(ierA int i ?
ms/lZ(ieldlen>? devuelve la longitud del campo especi(icado;
ms?l>fieldname
>P&P 7A P&P 8 A P&P 4?
ms/lZ(ieldname 22 o#tiene el nom#re del campo
Kescripci"n
string ms?l>fieldname > int /ueryZidenti(ierA int (ield ?
ms/lZ(ieldname>? devuelve el nom#re del campo especi(icado; @uer?_6#ent696er es el identi(icador
de consultaA y 96el# es el )ndice del campo; ms@l_96el#nameL'resultC 2MJ devolver* el nom#re del
segundo campo del resultado asociado con el identi(icador result;
ms?l>fieldtable
>P&P 7A P&P 8 A P&P 4?
ms/lZ(ieldta#le 22 o#tiene el nom#re de la ta#la de un campo
Kescripci"n
int ms?l>fieldtable > int /ueryZidenti(ierA int (ield ?
Devuelve el nom#re de la ta#la desde la /ue se ha recuperado el campo >96el#?
ms?l>fieldtype
>P&P 7A P&P 8 A P&P 4?
ms/lZ(ieldtype 22 o#tiene el tipo del campo
Kescripci"n
string ms?l>fieldtype > int /ueryZidenti(ierA int i ?
ms/lZ(ieldtype>? es similar a la (unci-n ms?l>fieldname./; Los argumentos son id<nticosA pero se
devuelve el tipo del campo; +ste ser* =int=A =char= o =real=;
ms?l>free>result
>P&P 7A P&P 8 A P&P 4?
ms/lZ(reeZresult 22 li#era la memoria del resultado
Kescripci"n
int ms?l>free>result > int /ueryZidenti(ier ?
ms?l>free>result./ li#era la memoria asociada con @uer?_6#ent696er; 5uando P&P completa una
petici-nA esta memoria es li#erada autom*ticamenteA por este motivo solo es necesario llamar a esta
(unci-n cuando se desea estar seguro de /ue no se utiliza demasiada memoria mientras se est*
e'ecutando el script;
ms?l>list>dbs
>P&P 7A P&P 8 A P&P 4?
ms/lZlistZd#s 22 lista las #ases de datos mOL en el servidor
Kescripci"n
int ms?l>list>dbs > void ?
ms?l>list>dbs./ devolver* un puntero al resultado /ue contiene las #ases de datos disponi#les desde
el daemon ms/l en uso; @tilice la (unci-n ms?l>dbname./ para recorrer este puntero;
ms?l>list>fields
>P&P 7A P&P 8 A P&P 4?
ms/lZlistZ(ields 22 lista los campos del resultado
Kescripci"n
int ms?l>list>fields > string data#aseA string ta#lename ?
ms/lZlistZ(ields>? recupera in(ormaci-n so#re el nom#re de ta#la >ta#lename? dado; Los argumentos
son el nom#re de la #ase de datos >data#ase name? y el nom#re de la ta#la >ta#le name?; e devuelve
un puntero al resultado /ue puede utilizarse con ms?l>fieldflags./A ms?l>fieldlen./A
ms?l>fieldname./A y ms?l>fieldtype./; @n indeti(icador de consulta >/uery identi(ier? es un entero
positivo; La (unci-n devuelve =1 si ocurre un error; +n 'phperrmsE se almacena una cadena de
car*cteres descri#iendo el errorA y a menos /ue la (unci-n sea llamada como Wms@l_l6st_96el#sLM
esta cadena de error puede ser impresa;
$<ase tam#i<n ms?l>error./;
ms?l>list>tables
>P&P 7A P&P 8 A P&P 4?
ms/lZlistZta#les 22 lista las ta#las de una #ase de datos mOL
Kescripci"n
int ms?l>list>tables > string data#ase ?
ms?l>list>tables./ toma un nom#re de #ase de datos y devuelve un puntero similar al de la (unci-n
ms?l./ La (unci-n ms?l>tablename./ de#er)a utilizarse para o#tener los nom#res reales de las
ta#las del puntero devuelto;
ms?l>num>fields
>P&P 7A P&P 8 A P&P 4?
ms/lZnumZ(ields 22 o#tiene el nBmero de campos de un resultado
Kescripci"n
int ms?l>num>fields > int /ueryZidenti(ier ?
ms/lZnumZ(ields>? devuelve el nBmero de campos de un con'unto resultado;
$<ase tam#i<nC ms?l./A ms?l>?uery./A ms?l>fetch>field./A y ms?l>num>ro3s./;
ms?l>num>ro3s
>P&P 7A P&P 8 A P&P 4?
ms/lZnumZroEs 22 o#tiene el nBmero de (ilas de un resultado
Kescripci"n
int ms?l>num>ro3s > int /ueryZidenti(ier ?
ms/lZnumZroEs>? devuelve el nBmero de (ilas de un con'unto resultado;
$<ase tam#i<nC ms?l./A ms?l>?uery./A y ms?l>fetch>ro3./;
ms?l>numfields
>P&P 7A P&P 8 A P&P 4?
ms/lZnum(ields 22 o#tiene el nBmero de campos de un resultado
Kescripci"n
int ms?l>numfields > int /ueryZidenti(ier ?
.d<ntica a ms?l>num>fields./;
ms?l>numro3s
>P&P 7A P&P 8 A P&P 4?
ms/lZnumroEs 22 o#tiene el nBmero de (ilas en el resultado
Kescripci"n
int ms?l>numro3s > void ?
.d<ntica a ms?l>num>ro3s./;
ms?l>pconnect
>P&P 7A P&P 8 A P&P 4?
ms/lZpconnect 22 a#re una coneFi-n mOL persistente
Kescripci"n
int ms?l>pconnect > string hostname ?
+n caso de <Fito devuelve un identi(icador de coneFi-n mOL persistente positivoA o FALSE en
caso de error;
ms/lZpconnect>? se comporta de (orma similar a ms?l>connect./ con dos di(erencias importantes;
PrimeroA cuando se conectaA la (unci-n de#e intentar primero localizar una coneFi-n >persistente?
/ue ya est< a#ierta en el mismo host; i se encuentra unoA se devuelve un identi(icador para el
mismo en vez de a#rir una coneFi-n nueva;
egundoA la coneFi-n con el servidor OL no se cerrar* cuando la e'ecuci-n del script (inalice; Al
contrarioA la coneFi-n permanecer* a#ierta para un uso (uturo >ms?l>close./ no cerrar* las
coneFiones a#iertas por ms/lZpconnect>??;
+ste tipo de coneFiones son por ello denominadas HpersistentesH;
ms?l>?uery
>P&P 7A P&P 8 A P&P 4?
ms/lZ/uery 22 env)a una consulta mOL
Kescripci"n
int ms?l>?uery > string /ueryA int lin"Zidenti(ier ?
ms/lZ/uery>? env)a una consulta a la #ase de datos activa actual en el servidor /ue est* asociada con
el identi(icador de coneFi-n >lin" identi(ier? especi(icado; i no se especi(ica el identi(icador de
coneFi-nA se asume la Bltima coneFi-n a#ierta; i no hay ninguna coneFi-n a#iertaA la (unci-n
intenta esta#lecer una coneFi-n como si se hu#iera llamado a ms?l>connect./A y la utiliza;
+n caso de <Fito devuelve un identi(icador de consulta mOL positivoA o FALSE en caso de error;
$<ase tam#i<nC ms?l./A ms?l>select>db./A y ms?l>connect./;
ms?l>regcase
ms/lZregcase 22 construye una eFpresi-n regular para una #Bs/ueda /ue no distinga
mayBsculasDminBsculas
Kescripci"n
$<ase s?l>regcase./;
ms?l>result
>P&P 7A P&P 8 A P&P 4?
ms/lZresult 22 o#tiene datos resultado
Kescripci"n
int ms?l>result > int /ueryZidenti(ierA int iA miFed (ield ?
Devuelve el contenido de la celda en la (ila y desplazamiento del con'unto resultado mOL
especi(icado;
ms/lZresult>? devuelve el contenido de una celda de un con'unto resultado mOL; +l argumento
campo >(ield? puede ser el desplazamiento del campoA el nom#re del campoA o el nom#re de la ta#la
punto nom#re del campo >nom#reta#la;nom#recampo?; i el nom#re de la columna tiene un alias
>Hselect (oo as #ar (rom;;;H?A utilice el alias en vez del nom#re de la columna;
5uando se tra#a'a con con'untos de resultados grandesA de#er)a considerar el uso de las (unciones
/ue recuperen (ilas completas >especi(icadas m*s a#a'o?; 5omo estas (unciones recuperan el
contenido de varias celdas en una Bnica llamada de (unci-nA son M@5&O m*s r*pidas /ue
ms/lZresult>?; Advierta tam#i<n /ue especi(icar un desplazamiento num<rico para el argumento
campo >(ield? es mucho m*s r*pido /ue especi(icar un argumento nom#recampo o
nom#reta#la;nom#recampo;
Alternativas de alto2rendimiento recomendadasC ms?l>fetch>ro3./A ms?l>fetch>array./A y
ms?l>fetch>ob'ect./;
ms?l>select>db
>P&P 7A P&P 8 A P&P 4?
ms/lZselectZd# 22 selecciona una #ase de datos mOL
Kescripci"n
int ms?l>select>db > string data#aseZnameA int lin"Zidenti(ier ?
Devuelve TRUE si tiene <FitoA FALSE en caso contrario;
ms/lZselectZd#>? esta#lece la #ase de datos activa actual en el servidor /ue est* asociada con el
identi(icador de coneFi-n >lin" identi(ier? suministrado; i no se especi(ica el identi(icador de
coneFi-nA se asumne la Bltima coneFi-n a#ierta; i no hay ninguna coneFi-n a#ierta la (unci-n
intentar* esta#lecer una coneFi-n como si se hu#iera llamado a s/lZconnect>?A y la utiliza;
5ada llamada posterior a ms?l>?uery./ se har* en la #ase de datos activa;
$<ase tam#i<nC ms?l>connect./A ms?l>pconnect./A y ms?l>?uery./;
ms?l>tablename
>P&P 7A P&P 8 A P&P 4?
ms/lZta#lename 22 o#tiene el nom#re de la ta#la de un campo
Kescripci"n
string ms?l>tablename > int /ueryZidenti(ierA int (ield ?
ms/lZta#lename>? toma un puntero resultado devuelto por la (unci-n ms?l>list>tables./ como un
)ndice entero y devuelve el nom#re de una ta#la; La (unci-n ms?l>numro3s./ puede utilizarse para
determinar el nBmero de ta#las del puntero resultado;
E'emplo !. ms?l>tablename./ e+ample
<?php
msQl%connect 3"localhost"9;
$result > msQl%list%tables3"8isconsin"9;
$i > 2;
8hile 3$i < msQl%numro8s3$result99 :
$tb%names)$i/ > msQl%tablename3$result, $i9;
echo $tb%names)$i/ . "<Z'>";
$i[[;
;
?>
ms?l
>P&P 7A P&P 8 A P&P 4?
ms/l 22 e'ecuta una consulta mOL
Kescripci"n
int ms?l > string data#aseA string /ueryA int lin"Zidenti(ier ?
Devuelve un identi(icador de consulta mOL positivo en el resultado de la consultaA o FALSE en
caso de error;
ms?l./ selecciona una #ase de datos y e'ecuta una consulta en ella; i no se especi(ica el
identi(icador de coneFi-n >lin" identi(ier?A la (unci-n intentar* encontrar una coneFi-n a#ierta en el
servidor mOL y en el caso de /ue no se encontrase intentar* crear uno como si se llamase a
ms?l>connect./ sin par*metros >v<ase ms?l>connect./?;
:IICII. ;unciones de Microsoft ,$: ,er5er
Tabla de contenidos
mss/lZ#ind 22 Adds a parameter to a stored procedure or a remote stored procedure
mss/lZclose 22 cierra una coneFi-n con M OL erver
mss/lZconnect 22 A#rir una coneFi-n con M OL server
mss/lZdataZsee" 22 mueve el puntero interno de las (ilas
mss/lZeFecute 22 +Fecutes a stored procedure on a M OL server data#ase
mss/lZ(etchZarray 22 5aptura la (ila en un array
mss/lZ(etchZassoc 22 Returns an associative array o( the current roE in the result set speci(ied #y
resultZid
mss/lZ(etchZ#atch 22 Returns the neFt #atch o( records
mss/lZ(etchZ(ield 22 o#tiene la in(ormaci-n de los campos
mss/lZ(etchZo#'ect 22 captura la (ila como un o#'eto
mss/lZ(etchZroE 22 o#tiene la (ila como un array numerado
mss/lZ(ieldZlength 22 Get the length o( a (ield
mss/lZ(ieldZname 22 Get the name o( a (ield
mss/lZ(ieldZsee" 22 set (ield o((set
mss/lZ(ieldZtype 22 Gets the type o( a (ield
mss/lZ(reeZresult 22 li#era de la memoria el resultado de una consulta
mss/lZ(reeZstatement 22 Free statement memory
mss/lZgetZlastZmessage 22 Returns the last message (rom the server
mss/lZguidZstring 22 5onverts a 1K #yte #inary G@.D to a string
mss/lZinit 22 .nitializes a stored procedure or a remote stored procedure
mss/lZminZerrorZseverity 22 ets the loEer error severity
mss/lZminZmessageZseverity 22 ets the loEer message severity
mss/lZneFtZresult 22 Move the internal result pointer to the neFt result
mss/lZnumZ(ields 22 o#tiene el nBmero de campos de la consulta
mss/lZnumZroEs 22 o#tiene el nBmero de (ilas de la consulta
mss/lZpconnect 22 a#re una coneFi-n persistenete con M OL
mss/lZ/uery 22 envia una consulta M OL
mss/lZresult 22 get result data
mss/lZroEsZa((ected 22 Returns the num#er o( records a((ected #y the /uery
mss/lZselectZd# 22 selecciona una #ase de datos M OL
mss?l>bind
>P&P 8 _^ 8;1;3A P&P 4?
mss/lZ#ind 22 Adds a parameter to a stored procedure or a remote stored procedure
Kescription
#ool mss?l>bind > resource stmtA string paramZnameA miFed ivarA int type PA int isZoutput PA int
isZnull PA int maFlenQQQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also mss?l>e+ecute./A mss?l>free>statement./A and mss?l>init./;
mss?l>close
>P&P 7A P&P 8 A P&P 4?
mss/lZclose 22 cierra una coneFi-n con M OL erver
Kescripci"n
int mss?l>close > int lin"Zidenti(ier ?
DevuleveC TRUE si se (inaliza con <FitoA FALSE si se produce un error
mss/lZclose>? cierra la coneFi-n con una #ase de datos M OL erver /ue est* asociada al
identi(icador especi(icado; i el identi(icador no se especi(icaA se asume la Bltima coneFi-n a#ierta;
O#serve /ue normalmente esto no es necesarioA ya /ue las coneFiones no2persistentes a#iertas se
cierran automaticamente en cuanto (inaliza el script;
mss/lZclose>? no cerrar* coneFiones persistentes generadas por mss/lZpconnect>?;
$er tam#i<nC mss?l>connect./A mss?l>pconnect./;
mss?l>connect
>P&P 7A P&P 8 A P&P 4?
mss/lZconnect 22 A#rir una coneFi-n con M OL server
Kescripci"n
int mss?l>connect > Pstring nom#reZservidor PA string nom#reZusuario PA string contrasenyaQQQ ?
DevuelveC @n identi(icador de enlace M OL positivo de tener <FitoA o FALSE si ocurre un error;
mss?l>connect./ esta#lece una coneFi-n con un servidor M OL; +l argumento nom#reZservidor
de#e ser un nom#re de servidor v*lidoA /ue est< de(inido en el archivo Hinter(acesH;
+n caso de /ue se realice una segunda llamada a mss?l>connect./ con los mismos argumentosA no
se esta#lecer* un nuevo enlaceA sino /ue se devolver* el identi(icador de enlace de la coneFi-n
a#ierta anteriormente;
+l enlace con el servidor ser* cerrado tan pronto como (inalice la e'ecuci-n del scriptA a menos /ue
se cierre antes mediante una llamada eFpl)cita a mss?l>close./;
$ea tam#i<n mss?l>pconnect./A mss?l>close./;
mss?l>data>seeB
>P&P 7A P&P 8 A P&P 4?
mss/lZdataZsee" 22 mueve el puntero interno de las (ilas
Kescripci"n
int mss?l>data>seeB > int resultZidenti(ierA int roEZnum#er ?
DevuelveC TRUE si se e'ecuta con <FitoA FALSE si (alla;
mss/lZdataZsee">? mueve el puntero interno de la consulta M OL asociada al resultZidenti(ier
especi(icadoA para /ue apunte al nBmero de (ila especi(icada; La siguiente llamada a
mss?l>fetch>ro3./ devolver* esa (ila;
$er tam#i<nC mss?l>data>seeB./;
mss?l>e+ecute
>P&P 8 _^ 8;1;3A P&P 4?
mss/lZeFecute 22 +Fecutes a stored procedure on a M OL server data#ase
Kescription
miFed mss?l>e+ecute > resource stmt PA #ool s"ipZresultsQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- .( the stored procedure returns parameters or a return value these Eill #e availa#le
a(ter the call to mss?l>e+ecute./ unless the stored procedure returns more than one
result set; .n that case use mss?l>ne+t>result./ to shi(t through the results; Lhen the
last result has #een processed the output parameters and return values Eill #e availa#le;
ee also mss?l>bind./A mss?l>free>statement./A and mss?l>init./;
mss?l>fetch>array
>P&P 7A P&P 8 A P&P 4?
mss/lZ(etchZarray 22 5aptura la (ila en un array
Kescripci"n
int mss?l>fetch>array > int result ?
DevuelveC @n array /ue corresponde a la (ila capturadaA o FALSE si no hay m*s (ilas;
mss/lZ(etchZarray>? es una versi-n eFtendida de mss?l>fetch>ro3./; Acdeuade el almacenar los
datos en los )ndices num<ricos del array resultanteA tam#i<n almacena los datos en )ndices
asociativosA usando los nom#res de los campos como claves;
@na o#servaci-n a tener en cuenta esA /ue usar mss/lZ(etchZarray>? NO es m*s lento /ue usar
mss/lZ(etchZroE>?A mientras /ue esta provee un valor acdeuadido signi(icativo;
Para m*s detallesA ver tam#i<n mss?l>fetch>ro3./
mss?l>fetch>assoc
>P&P 8 _^ 8;0;3A P&P 4?
mss/lZ(etchZassoc 22 Returns an associative array o( the current roE in the result set speci(ied #y
resultZid
Kescription
array mss?l>fetch>assoc > resource resultZid ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mss?l>fetch>batch
>P&P 8 _^ 8;3;8A P&P 4?
mss/lZ(etchZ#atch 22 Returns the neFt #atch o( records
Kescription
int mss?l>fetch>batch > resource resultZindeF ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mss?l>fetch>field
>P&P 7A P&P 8 A P&P 4?
mss/lZ(etchZ(ield 22 o#tiene la in(ormaci-n de los campos
Kescripci"n
o#'ect mss?l>fetch>field > int resultA int (ieldZo((set ?
Devuleve un o#'eto /ue contiene in(ormaci-n de los campos;
mss/lZ(etchZ(ield>? se puede usar para o#tener in(ormaci-n acerca de los campos pertenecientes al
resultado de una consulta; i el par*metro (ieldZo((set no es especi(icadoA se devuelve la
in(ormaci-n del siguiente campo /ue todav)a no ha sido devuelto por mss/lZ(etchZ(ield>?;
Las propiedades de este o#'eto sonC
name 2 nom#re de la columna; si la columna es el resultado de una (unci-nA esta propiedad
vale nNA donde nN es un nBmero de serie;
columnZsource 2 la ta#la de donde se tom- la columna
maFZlength 2 longitud m*Fima de columna
numeric 2 1 si la columna es num<rica
$er tam#i<n mss?l>field>seeB./
mss?l>fetch>ob'ect
>P&P 7A P&P 4?
mss/lZ(etchZo#'ect 22 captura la (ila como un o#'eto
Kescripci"n
int mss?l>fetch>ob'ect > int result ?
DevuelveC @n o#'eto con propiedades /ue se corresponden con la (ila capturadaA o FALSE si no hay
m*s (ilas;
mss/lZ(etchZo#'ect>? es parecida a mss?l>fetch>array./A con una di(erencia 2 devuelve un o#'eto en
vez de un array; .ndirectamenteA esto signi(ica /ue s-lo se puede acceder a los datos por el nom#re
de los camposA y no por sus posiciones en el o#'eto >los nBmeros no son nom#res de propiedades
v*lidas?;
La (unci-n es id<ntica a mss?l>fetch>array./A y casi tan r*pida como mss?l>fetch>ro3./ >la
di(erencia es insigni(icante?;
$er tam#i<nC mss?l>fetch(array./ and mss?l>fetch(ro3./;
mss?l>fetch>ro3
>P&P 7A P&P 8 A P&P 4?
mss/lZ(etchZroE 22 o#tiene la (ila como un array numerado
Kescripci"n
array mss?l>fetch>ro3 > int result ?
DevuleveC @n array /ue corresponde a la (ila capturadaA o FALSE si no hay m*s (ilas;
mss/lZ(etchZroE>? captura una (ila de datos pertenecientes al resultado asociado con el identi(icador
de resultado especi(icado; La (ila es devuelta como un array; 5ada columna de resultados es
almacenada en una posici-n del arrayA comenzando en la posici-n 3;
iguientes llamadas a mss/lZ(etchZroEs>? devolver)an las (ilas siguientes del result setA o FALSE si
no hay mas (ilas;
$er tam#i<nC mss?l>fetch>array./A mss?l>fetch>ob'ect./A mss?l>data>seeB./A
mss?l>fetch>lengths./A and mss?l>result./;
mss?l>field>length
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
mss/lZ(ieldZlength 22 Get the length o( a (ield
Kescription
int mss?l>field>length > resource result PA int o((setQ ?
,his (unction returns the length o( (ield no; o99set in result result; .( o99set is omittedA the current
(ield is used;
Note to 2in7* )sers- Due to a limitation in the underlying AP. used #y P&P >M
D#Li# 5 AP.?A the length o( $AR5&AR (ields is limited to 2SS; .( you need to store
more dataA use a ,+J, (ield instead;
mss?l>field>name
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
mss/lZ(ieldZname 22 Get the name o( a (ield
Kescription
string mss?l>field>name > resource result PA int o((setQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mss?l>field>seeB
>P&P 7A P&P 8 A P&P 4?
mss/lZ(ieldZsee" 22 set (ield o((set
Kescripci"n
int mss?l>field>seeB > int resultA int (ieldZo((set ?
e posiciona en el campo especi(icado por el par*metro (ieldZo((set; i la siguiente llamada a
mss?l>fetch>field./ no incluye el par*metro (ieldZo((setA lo /ue devuelve la (unci-n es el campo;
$er tam#i<nC mss?l>fetch>field./;
mss?l>field>type
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
mss/lZ(ieldZtype 22 Gets the type o( a (ield
Kescription
string mss?l>field>type > resource result PA int o((setQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mss?l>free>result
>P&P 7A P&P 8 A P&P 4?
mss/lZ(reeZresult 22 li#era de la memoria el resultado de una consulta
Kescripci"n
int mss?l>free>result > int result ?
mss?l>free>result./ s-lo se necesita llamarla si le preocupa el estar usando mucha memoria
mientras se est* e'ecutando el script; ,oda el resultado en memoria ser* li#erado automaticamente
cuando (inalice el scriptA puede llamar a mss?l>free>result./ con el identi(icador de la consulta
como argumento y la consulta asociada ser* li#erada de la memoria;
mss?l>free>statement
>P&P 8 _^ 8;7;0A P&P 4?
mss/lZ(reeZstatement 22 Free statement memory
Kescription
#ool mss?l>free>statement > resource statement ?
mss?l>free>statement./ only needs to #e called i( you are Eorried a#out using too much memory
Ehile your script is running; All statement memory Eill automatically #e (reed Ehen the script ends;
%ou may call mss?l>free>statement./ Eith the statement identi(ier as an argument and the
associated statement memory Eill #e (reed;
ee also mss?l>bind./A mss?l>e+ecute./A and mss?l>init./
mss?l>get>last>message
>P&P 7A P&P 8 A P&P 4?
mss/lZgetZlastZmessage 22 Returns the last message (rom the server
Kescription
string mss?l>get>last>message > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mss?l>guid>string
>P&P 8 _^ 8;1;3A P&P 4?
mss/lZguidZstring 22 5onverts a 1K #yte #inary G@.D to a string
Kescription
string mss?l>guid>string > string #inary PA int shortZ(ormatQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mss?l>init
>P&P 8 _^ 8;1;3A P&P 4?
mss/lZinit 22 .nitializes a stored procedure or a remote stored procedure
Kescription
int mss?l>init > string spZname PA resource connZidQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ee also mss?l>bind./A mss?l>e+ecute./A and mss?l>free>statement./
mss?l>min>error>se5erity
>P&P 7A P&P 8 A P&P 4?
mss/lZminZerrorZseverity 22 ets the loEer error severity
Kescription
void mss?l>min>error>se5erity > int severity ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mss?l>min>message>se5erity
>P&P 7A P&P 8 A P&P 4?
mss/lZminZmessageZseverity 22 ets the loEer message severity
Kescription
void mss?l>min>message>se5erity > int severity ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mss?l>ne+t>result
>P&P 8 _^ 8;3;4A P&P 4?
mss/lZneFtZresult 22 Move the internal result pointer to the neFt result
Kescription
#ool mss?l>ne+t>result > resource resultZid ?
Lhen sending more than one OL statement to the server or eFecuting a stored procedure Eith
multiple resultsA it Eill cause the server to return multiple result sets; ,his (unction Eill test (or
additional results availa#le (orm the server; .( an additional result set eFists it Eill (ree the eFisting
result set and prepare to (etch the roEs (rom the neE result set; ,he (unction Eill return TRUE i( an
additional result set Eas availa#le or FALSE otherEise;
E'emplo !. mss?l>ne+t>result./ e+ample
<?php
$linI > mssQl%connect3"localhost", "userid", "secret"9;
mssQl%select%db3""yLZ", $linI9;
$&NO > "&elect W #rom table6 select W #rom tableC";
$rs > mssQl%Query3$&NO, $linI9;
do :
8hile 3$ro8 > mssQl%#etch%ro83$rs99 :
;
; 8hile 3mssQl%next%result3$rs99;
mssQl%#ree%result3$rs9;
mssQl%close3$linI9;
?>
mss?l>num>fields
>P&P 7A P&P 8 A P&P 4?
mss/lZnumZ(ields 22 o#tiene el nBmero de campos de la consulta
Kescripci"n
int mss?l>num>fields > int result ?
mss/lZnumZ(ields>? devuelve el nBmero de campos de la consulta o result set;
$er tam#i<nC mss?l>db>?uery./A mss?l>?uery./A mss?l>fetch>field./A mss?l>num>ro3s./;
mss?l>num>ro3s
>P&P 7A P&P 8 A P&P 4?
mss/lZnumZroEs 22 o#tiene el nBmero de (ilas de la consulta
Kescripci"n
int mss?l>num>ro3s > string result ?
mss/lZnumZroEs>? devuelve el nBmero de (ilas de la consulta o result set;
$er tam#i<nC mss?l>db>?uery./A mss?l>?uery./ andA mss?l>fetch>ro3./;
mss?l>pconnect
>P&P 7A P&P 8 A P&P 4?
mss/lZpconnect 22 a#re una coneFi-n persistenete con M OL
Kescripci"n
int mss?l>pconnect > string servernameA string usernameA string passEord ?
DevuelveC @n identi(icador persistente postivo si no hay errorA o FALSE si se produce alguno
mss/lZpconnect>? (unciona de la misma (orma /ue mss?l>connect./ aun/ue con dos grandes
di(erencias;
La primera es /ue cuando intenta conectarA la (unci-n intentar* encontrar un enlace >persistente? /ue
ya est< a#ierto en el mismo ordenadorA nom#re de usuario y contrasecdeua; i lo encuentraA la
(uncion devolver* el identi(icador de esta en vez de a#rir una nueva coneFi-n;
% la segundaA la coneFi-n con el servidor no se cerrar* cuando (inalice la e'ecuci-n del script; +n
vez de estoA el enlace permanecer* a#ierto para un uso (uturo; >mss?l>close./ no cerrar* enlaces
esta#lecidos por mss@l_pconnectLM?;
Por consiguienteA este tipo de enlace es llamado HpersistenteH;
mss?l>?uery
>P&P 7A P&P 8 A P&P 4?
mss/lZ/uery 22 envia una consulta M OL
Kescripci"n
int mss?l>?uery > string /ueryA int lin"Zidenti(ier ?
DevuelveC @n identi(icado de resultado valido si no hay errorA o FALSE en caso contrario;
mss/lZ/uery>? envia una petici-n de consulta a la #ase de datos activa en el servidor asociada al
identi(icador de enlace especi(icado; i el identi(icador del enlace no es especi(icadoA se asume
como a#ierto el Bltimo enlace; i no hay ningBn enlace a#iertoA la (unci-n intenta esta#lecer un
enlace como si mss?l>connect./ hu#iera sido llamadaA y lo usa;
$er tam#i<nC mss?l>db>?uery./A mss?l>select>db./A and mss?l>connect./;
mss?l>result
>P&P 7A P&P 8 A P&P 4?
mss/lZresult 22 get result data
Kescripci"n
int mss?l>result > int resultA int iA miFed (ield ?
DevuelveC +l contenido de la celda en la (ila y posici-n del result set especi(icado;
mss/lZresult>? devuelve el contenido de una celda del result set; +l parametro (ield puede ser la
posici-n del campoA o el nom#re del campo o #i<n nom#reta#la;nom#recampo; i el nom#re de la
columna ha sido renom#rado >Hselect (oo as #ar (rom;;;H?A use el alias en vez del nom#re de la
columna;
,ra#a'ando con result sets de gran tamacdeuoA de#er)a considerar el uso de una de las (unciones
/ue capturan una (ila completa >especi(icadas a#a'o?; 5omo estas (unciones devuelven el contenido
de mBltiples celdas en una s-la llamadaA estas son M@5&O m*s r*pidas /ue mss/lZresult>?;
,am#i<nA o#serve /ue especi(icar una posici-n nBmerica para el argumento (ield es mucho mas
r*pido /ue especi(icar el nom#re de un campo o utilizar la (orma nom#reta#la;nom#recampo como
argumento;
Alternativas recomendadas para mayor rendimiento C mss?l>fetch>ro3./A mss?l>fetch>array./A y
mss?l>fetch>ob'ect./;
mss?l>ro3s>affected
>P&P 8 _^ 8;3;8A P&P 4?
mss/lZroEsZa((ected 22 Returns the num#er o( records a((ected #y the /uery
Kescription
int mss?l>ro3s>affected > resource connZid ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
mss?l>select>db
>P&P 7A P&P 8 A P&P 4?
mss/lZselectZd# 22 selecciona una #ase de datos M OL
Kescripci"n
int mss?l>select>db > string data#aseZnameA int lin"Zidenti(ier ?
DevuelveC TRUE si todo va #i<nA FALSE si se produce un error
mss/lZselectZd#>? selecciona como #ase de datos activa del servidorA la /ue est* asociada al
identi(icador de enlace especi(icado; i no se especi(ica nigBn identi(icadorA se asume el Bltimo
enlace; i no hay ningBn enlace a#iertoA la (unci-n intentar* esta#lecer un enlace como si se llamara
a la (unci-n mss?l>connect./A y lo usa;
5ada llamada a mss?l>?uery./ ser* realizada so#re la #ase de datos activa;
$er tam#i<nC mss?l>connect./A mss?l>pconnect./A y mss?l>?uery./
:IICIII. muscat ;unctions
Introducci"n
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
Instalaci"n
,hese (unctions are only availa#le i( P&P Eas con(igured Eith ==76th=muscat):D0R.;
Tabla de contenidos
muscatZclose 22 huts doEn the muscat session and releases any memory #ac" to P&P
muscatZget 22 Gets a line #ac" (rom the core muscat AP.
muscatZgive 22 ends string to the core muscat AP.
muscatZsetupZnet 22 5reates a neE muscat session and returns the handle
muscatZsetup 22 5reates a neE muscat session and returns the handle
muscat>close
>8;3;4 2 8;0;7 only?
muscatZclose 22 huts doEn the muscat session and releases any memory #ac" to P&P
Kescription
int muscat>close > resource muscatZhandle ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
PNot #ac" to the systemA noteaQ
muscat>get
>8;3;4 2 8;0;7 only?
muscatZget 22 Gets a line #ac" (rom the core muscat AP.
Kescription
string muscat>get > resource muscatZhandle ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
A5iso
+sta (unci-n puede devolver FALSEA pero tam#i<n puede devolver un valor no2#ooleano /ue ser*
evaluado FALSEA como por e'emplo 0 o ==; Por (avorA lea la secci-n Booleans para m*s
in(ormaci-n; @tilice el operador ^^^ para compro#ar el valor devuelto por esta (unci-n;
muscat>gi5e
>8;3;4 2 8;0;7 only?
muscatZgive 22 ends string to the core muscat AP.
Kescription
int muscat>gi5e > resource muscatZhandleA string string ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
muscat>setup>net
>8;3;4 2 8;0;7 only?
muscatZsetupZnet 22 5reates a neE muscat session and returns the handle
Kescription
resource muscat>setup>net > string muscatZhost ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
muscat>setup>net./ creates a neE muscat session and returns the handle;
muscat_host is the hostname to connect to; port is the port num#er to connect to;
muscat>setup
>8;3;4 2 8;0;7 only?
muscatZsetup 22 5reates a neE muscat session and returns the handle
Kescription
resource muscat>setup > int size PA string muscatZdirQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
s6De is the amount o( memory in #ytes to allocate (or muscat; muscat_#6r is the muscat installation
dir e;g; =DusrDlocalDempoEer=A it de(aults to the compile time muscat directory;
:IIII. ;unciones My,$:
Introducci"n
+stas (unciones le permiten acceder a servidores de #ases de datos MyOL; Puede encontrar m*s
in(ormaci-n so#re MyOL en httpCDDEEE;mys/l;comD;
La documentaci-n de MyOL puede encontrarse en httpCDDdev;mys/l;comDdocD;
Me?uirimientos
Para contar con <stas (uncionesA de#e compilar P&P con soporte MyOL;
Instalaci"n
Al usar la opci-n de con(iguraci-n ==76th=m?s@l):D0R.A usted ha#ilita a P&P para /ue acceda a
#ases de datos MyOL;
+n P&P 8A la opci-n ==76th=m?s@l est* ha#ilitada por de(ecto; Para desactivar este comportamiento
presta#lecidoA usted puede usar la opci-n de con(iguraci-n ==76thout=m?s@l; ,am#i<nA en P&P 8A si
se ha#ilita MyOL sin especi(icar el directorio de instalaci-n de MyOLA P&P usar* las #i#liotecas
de cliente de MyOL incorporadas; +n LindoEs no eFiste DLLA simplemente es parte de P&P 8;
Los usuarios /ue e'ecutan otras aplicaciones /ue usan MyOL >auth2mys/lA por e'emplo? no
de#er)an usar la #i#lioteca incorporadaA en su lugar de#en especi(icar la ruta al directorio de
instalaci-n de MyOLA de este modoC ==76th=m?s@l:/path/to/m?s@l; +sto o#ligar* a P&P a usar las
#i#liotecas de cliente instaladas por MyOLA para as) evitar cual/uier con(licto;
+n P&P 4A el soporte para MyOL no se encuentra ha#ilitado por de(ectoA ni lo est* la #i#lioteca
incorporada con P&P; Lea este FAO para conocer los detalles del por/u<; De#ido a estoA los
usuarios de LindoEs de#en ha#ilitar php%mysQl.dll al interior de php.ini y copiar
libmysQl.dll en el directorio de sistema de LindoEsA o ponerlo al alcance de +,T!; Para la
compilaci-nA simplemente use ==76th=m?s@l:)D0R. en donde )D0R. apunta a su directorio de
instalaci-n de MyOL;
+sta eFtensi-n de MyOL no soporta la (uncionalidad completa de versiones de MyOL superiores
a 8;1;3; Para ellasA use MyOLi;
i /uisiera instalar la eFtensi-n mys/l 'unto con la eFtensi-n mys/liA de#e usar la misma #i#lioteca
de cliente para evitar cual/uier con(licto;
A5iso
Pueden encontrarse pro#lemas de inicializaci-n y #lo/ueos de P&P cuando esta eFtensi-n es
cargada en con'unto con la eFtensi-n recode; 5onsulte so#re la eFtensi-n recode para m*s
in(ormaci-n;
Nota- i necesita 'uegos de caracteres di(erentes a lat6n >el 'uego por de(ecto?A tendr*
/ue instalar una #i#lioteca de mys/l eFterna >no incorporada? /ue haya sido compilada
con soporte para los 'uegos de caracteres;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones de Configuraci"n My,$:
Nombre Por defecto Modificable
mys/l;alloEZpersistent =On= P&PZ.N.Z%,+M
mys/l;maFZpersistent =21= P&PZ.N.Z%,+M
mys/l;maFZlin"s =21= P&PZ.N.Z%,+M
mys/l;traceZmode =O((= P&PZ.N.ZALL
mys/l;de(aultZport N@LL P&PZ.N.ZALL
Nombre Por defecto Modificable
mys/l;de(aultZsoc"et N@LL P&PZ.N.ZALL
mys/l;de(aultZhost N@LL P&PZ.N.ZALL
mys/l;de(aultZuser N@LL P&PZ.N.ZALL
mys/l;de(aultZpassEor
d
N@LL P&PZ.N.ZALL
mys/l;connectZtimeout =3= P&PZ.N.Z%,+M
Para m*s detalles so#re las constantes P&PZ.N.ZV y sus de(inicionesA vea ini>set./;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
m?s@l.allo7_pers6stent boolean
.ndica si se permiten coneFiones persistentes con MyOL;
m?s@l.ma8_pers6stent integer
+l nBmero m*Fimo de coneFiones persistentes con MyOL por proceso;
m?s@l.ma8_l6n>s integer
+l nBmero m*Fimo de coneFiones con MyOL por procesoA incluyendo coneFiones
persistentes;
m?s@l.trace_mo#e boolean
Modo de rastreo; 5uando se ha#ilita m?s@l.trace_mo#eA se muestran advertencias para la
apertura de ta#lasD)ndicesA con'untos de resultados no li#eradosA y errores OL; >e introdu'o
en P&P 8;7;3?
m?s@l.#e9ault_port string
+l nBmero de puerto ,5P predeterminado para usar cuando se conecta con el servidor de
#ases de datosA si no se indica otro; i no se indica un valor predeterminadoA el puerto se
o#tendr* de la varia#le de entorno MBS54_TC+_+ORTA la entrada m?s@l=tcp en /
etc/ser=ices o la constante de tiempo de compilaci-n MYS.L_PORTA en ese orden; +n
Lin70 s-lo se usa la constante MYS.L_PORT;
m?s@l.#e9ault_soc>et string
+l nom#re de soc"et predeterminado a ser usado cuando se realicen coneFiones con un
servidor de #ase de datos localA si no se indica algBn otro;
m?s@l.#e9ault_host string
La m*/uina an(itriona predeterminada a ser usada cuando se realicen coneFiones con un
servidor de #ases de datosA si no se indica otro valor; No es aplica#le en modo seguro;
m?s@l.#e9ault_user string
+l nom#re de usuario prodeterminado para conectarse al servidor de #ases de datos si no se
indica otro; No es aplica#le #a'o modo seguro;
m?s@l.#e9ault_pass7or# string
La contraseWa predeterminada a usar cuando se realicen coneFiones con el servidor de #ases
de datosA si no se indica otro valor; No es aplica#le en modo seguro;
m?s@l.connect_t6meout integer
,iempo de espera m*Fimo de coneFi-nA en segundos; Ba'o LinuF este tiempo de espera es
usado tam#i<n cuando se espera la primera respuesta del servidor;
Tipos de recursos
&ay dos tipos de recursos usados en el m-dulo MyOL; +l primero es el identi(icador de enlace
para una coneFi-n de #ase de datosA el segundo es un recurso /ue almacena el resultado de una
consulta;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
A partir de P&P 8;7;3A es posi#le especi(icar #anderas de cliente adicionales para las (unciones
mys?l>connect./ y mys?l>pconnect./; Las siguientes constantes est*n de(inidasC
Tabla *. Constantes de cliente My,$:
Constante Kescripci"n
M%OLZ5L.+N,Z5O
MPR+
@sar protocolo de compresi-n
M%OLZ5L.+N,Z.G
NOR+ZPA5+
Permitir espacios despu<s de nom#res de (unciones
M%OLZ5L.+N,Z.N
,+RA5,.$+
Permitir tantos segundos de inactividad como indi/ue interactiveZtimeout
>en lugar de EaitZtimeout? antes de cerrar la coneFi-n
M%OLZ5L.+N,Z
L
@sar encripci-n L; +sta #andera se encuentra disponi#le Bnicamente
con la versi-n 8;F o m*s reciente de la #i#lioteca cliente de MyOL; La
versi-n 7;07;F se distri#uye tanto con P&P 8 como con los #inarios de
LindoEs de P&P 4;
La (unci-n mys?l>fetch>array./ usa una constante para los di(erentes tipos de matrices de
resultado; Las siguientes constantes est*n de(inidasC
Tabla 7. Constantes My,$:(fetch
Constante Kescripci"n
M%OLZA
O5
Las columnas son devueltas en la matriz usando el nom#re del campo como
)ndice;
M%OLZBO,
&
Las columnas son devueltas en la matriz teniendo tanto un )ndice num<rico como
un )ndice correspondiente al nom#re del campo;
M%OLZN@
M
Las columnas son devueltas en la matriz teniendo un )ndice num<rico a los
campos; +ste )ndice comienza en 3A el primer campo del resultado;
E'emplos
+ste sencillo e'emplo muestra c-mo conectarseA e'ecutar una consultaA imprimir las (ilas resultantes
y desconectarse de una #ase de datos MyOL;
E'emplo !. E'emplo general de la e+tensi"n My,$:
<?php
/W Ronexion, seleccion de base de datos W/
$enlace > mysQl%connect3"host%mysQl", "usuario%mysQl", "contrasenya%mysQl"9
or die3".o pudo conectarse @ " . mysQl%error399;
echo "Ronexi&oacute;n exitosa";
mysQl%select%db3"mi%base%de%datos"9 or die3".o pudo seleccionarse la ZL."9;
/W 'eali0ar una consulta &NO W/
$consulta > "&EOER* W S'?" mi%tabla";
$resultado > mysQl%Query3$consulta9 or die3"Oa consulta #all&oacute;@ " . mysQl%error399;
/W 4mpresion de resultados en H*"O W/
echo "<table>Vn";
8hile 3$linea > mysQl%#etch%array3$resultado, "P&NO%,&&?R99 :
echo "Vt<tr>Vn";
#oreach 3$linea as $=alor%col9 :
echo "VtVt<td>$=alor%col</td>Vn";
;
echo "Vt</tr>Vn";
;
echo "</table>Vn";
/W Oiberar conjunto de resultados W/
mysQl%#ree%result3$resultado9;
/W Rerrar la conexion W/
mysQl%close3$enlace9;
?>
Tabla de contenidos
mys/lZa((ectedZroEs 22 Devuelve el nBmero de (ilas a(ectadas de la Bltima operaci-n MyOL
mys/lZchangeZuser 22 5am#ia el usuario conectado en la coneFi-n activa
mys/lZclientZencoding 22 Devuelve el nom#re del 'uego de caracteres
mys/lZclose 22 cierra el enlace con MyOL
mys/lZconnect 22 A#re una coneFi-n a un servidor MyOL
mys/lZcreateZd# 22 5rea una #ase MyOL
mys/lZdataZsee" 22 Mueve el puntero interno
mys/lZd#Zname 22 O#tener datos de resultado
mys/lZd#Z/uery 22 +nvia una sentencia MyOL al servidor
mys/lZdropZd# 22 Borra una #ase de datos MyOL
mys/lZerrno 22 Deuelve el nBmero del mensa'e de error de la Bltima operaci-n MyOL
mys/lZerror 22 Devuelve el teFto del mensa'e de error de la Bltima operaci-n MyOL
mys/lZescapeZstring 22 +scapa una cadena para su uso en mys/lZ/uery
mys/lZ(etchZarray 22 +Ftrae la (ila de resultado como una matriz asociativaA una matriz num<rica o
am#as
mys/lZ(etchZassoc 22 Recupera una (ila de resultado como una matriz asociativa
mys/lZ(etchZ(ield 22 +Ftrae la in(ormaci-n de una columna y la devuelve como un o#'eto;
mys/lZ(etchZlengths 22 Devuelve la longitud de cada salida en un resultado
mys/lZ(etchZo#'ect 22 +Ftrae una (ila de resultado como un o#'eto
mys/lZ(etchZroE 22 Devuelve una (ila de resultado como matriz
mys/lZ(ieldZ(lags 22 Devuelve las #anderas asociados con el campo espec)(icado en un resultado
mys/lZ(ieldZlen 22 Devuelve la longitud del campo espec)(icado
mys/lZ(ieldZname 22 Devuelve el nom#re del campo espec)(icado en un resultado
mys/lZ(ieldZsee" 22 Asigna el puntero del resultado al o((set del campo espec)(icado
mys/lZ(ieldZta#le 22 Devuelve el nom#re de la ta#la donde est* el campo espec)(icado
mys/lZ(ieldZtype 22 Devuelve el tipo del campo espec)(icado en un resultado
mys/lZ(reeZresult 22 Li#era la memoria del resultado
mys/lZgetZclientZin(o 22 O#tener in(ormaci-n del cliente MyOL
mys/lZgetZhostZin(o 22 O#tener in(ormaci-n de la m*/uina an(itriona MyOL
mys/lZgetZprotoZin(o 22 O#tener in(ormaci-n del protocolo MyOL
mys/lZgetZserverZin(o 22 O#tener in(ormaci-n del servidor MyOL
mys/lZin(o 22 O#tiene in(ormaci-n so#re la consulta m*s reciente
mys/lZinsertZid 22 Devuelve el identi(icador generado en la Bltima llamada a .N+R,
mys/lZlistZd#s 22 Lista las #ases de datos disponi#les en el servidor MyOL
mys/lZlistZ(ields 22 Lista los campos del resultado de MyOL
mys/lZlistZprocesses 22 Lista los procesos MyOL
mys/lZlistZta#les 22 Lista las ta#las en una #ase de datos MyOL
mys/lZnumZ(ields 22 devuelve el nBmero de campos de un resultado
mys/lZnumZroEs 22 Devuelve el nBmero de (ilas de un resultado
mys/lZpconnect 22 A#re una coneFi-n persistente al servidor MyOL
mys/lZping 22 +(ectuar un che/ueo de respuesta >ping? so#re una coneFi-n de servidor o
reconectarse si no hay coneFi-n
mys/lZ/uery 22 +nv)a una consulta de MyOL
mys/lZrealZescapeZstring 22 +scapa caracteres especiales de una cadena para su uso en una
sentencia OL
mys/lZresult 22 Devuelve datos de un resultado
mys/lZselectZd# 22 elecciona un #ase de datos MyOL
mys/lZstat 22 O#tener el status actual del sistema
mys/lZta#lename 22 Devuelve el nom#re de la ta#la de un campo
mys/lZthreadZid 22 Devuelve el .D del hilo actual
mys/lZun#u((eredZ/uery 22 +nv)a una consulta OL a MyOLA sin recuperar ni colocar en #B(er las
(ilas de resultado
mys?l>affected>ro3s
>P&P 7A P&P 8 A P&P 4?
mys/lZa((ectedZroEs 22 Devuelve el nBmero de (ilas a(ectadas de la Bltima operaci-n MyOL
Kescripci"n
int mys?l>affected>ro3s > Pint identi(icadorZdeZenlaceQ ?
mys?l>affected>ro3s./ devuelve el nBmero de (ilas a(ectadas en la ultima sentencia .N+R,A
@PDA,+ o D+L+,+ so#re el servidor asociado con el 6#ent696ca#or_#e_enlace especi(icado; i el
identi(icador de enlace no ha sido especi(icadoA se asume por de(ecto el Bltimo enlace;
Nota- i est* usando transaccionesA necesitar* llamar mys?l>affected>ro3s./ despu<s
del .N+R,A @PDA,+A o D+L+,+A no despu<s del commit;
i la Bltima sentencia (ue un D+L+,+ sin clausula L&+R+A todos los registros han sido #orrados
de la ta#la pero esta (unci-n devolvera cero;
Nota- 5uando se usa @PDA,+A MyOL no actualizar* las columnas donde el nuevo
valor es el mismo al actual; +sto crea la posi#ilidad de /ue mys?l>affected>ro3s./
pueda no ser igual al nBmero de (ilas encontradasA solo el nBmero de (ilas /ue (ueron
literalmente a(ectadas por la sentencia;
La sentencia R+PLA5+ primero #orra el registro con la misma llave principal y
entonces inserta el nuevo registro; +sta (unci-n regresa el nBmero de registros #orrados
m*s el nBmero de registros insertados;
Para o#tener el nBmero de (ils regresadas por un +L+5,A es posi#le usar tam#i<n
mys?l>num>ro3s./;
i la Bltima consulta (all-A esta (unci-n regresar* 21;
E'emplo !. Kelete($uery
<?php
/W connect to database W/
$linI > mysQl%connect3MlocalhostM, MmysQl%userM, MmysQl%pass8ordM9;
i# 3!$linI9 :
die3MRould not connect@ M . mysQl%error399;
;
mysQl%select%db3MmydbM9;
/W this should return the correct numbers o# deleted records W/
mysQl%Query3MLEOE*E S'?" mytable 7HE'E id < 62M9;
print#3"'ecords deleted@ \dVn", mysQl%a##ected%ro8s399;
/W 8ith a 8here clause that is ne=er true, it should return 2 W/
mysQl%Query3MLEOE*E S'?" mytable 7HE'E 2M9;
print#3"'ecords deleted@ \dVn", mysQl%a##ected%ro8s399;
?>
+l e'emplo anterior prducir* la siguiente salidaC
'ecords deleted@ 62
'ecords deleted@ 2
E'emplo *. )pdate($uery
<?php
/W connect to database W/
mysQl%connect3"localhost", "mysQl%user", "mysQl%pass8ord"9 or
die3"Rould not connect@ " . mysQl%error399;
mysQl%select%db3"mydb"9;
/W +pdate records W/
mysQl%Query3"+L,*E mytable &E* used>6 7HE'E id < 62"9;
print# 3"+pdated records@ \dVn", mysQl%a##ected%ro8s399;
mysQl%Query3"R?""4*"9;
?>
+l e'emplo anterior prducir* la siguiente salidaC
+pdated 'ecords@ 62
$ea tam#i<n mys?l>num>ro3s./A mys?l>info./;
mys?l>change>user
>P&P 7_^ 7;3;17?
mys/lZchangeZuser 22 5am#ia el usuario conectado en la coneFi-n activa
Kescripci"n
int mys?l>change>user > cadena usuarioA cadena passEord PA cadena #aseZdeZdatos PA int
identi(icadorZdeZenlaceQQ ?
mys?l>change>user./ cam#ia el usuario conectado en la actual coneFi-n activaA o si se espec)(icaA
en la coneFi-n determinada por el 6#ent696ca#or_#e_enlace opcional; i se espec)(ica la #ase de
datosA <sta ser* la #ase por de(ecto despu<s del cam#io de usuario; i la nueva com#inaci-n de
usuarioDpassEord no est* autorizadaA el usuario actualmente conectado permanece activo;
Nota- +sta (unci-n es o#soleta y solo est* disponi#le en P&P 7 y re/uiere MyOL
7;07;7 o superior;
mys?l>client>encoding
>P&P 8 _^ 8;7;3A P&P 4?
mys/lZclientZencoding 22 Devuelve el nom#re del 'uego de caracteres
Kescripci"n
string mys?l>client>encoding > Presource idZenlaceQ ?
mys?l>client>encoding./ devuelve el nom#re del 'uego de caracteres predeterminado para la
coneFi-n actual;
E'emplo !. E'emplo de mys?l>client>encoding./
<?php
$enlace > mysQl%connect3MlocalhostM, MmysQl%userM, MmysQl%pass8ordM9;
$jueEo%cars > mysQl%client%encodinE3$enlace9;
print#3"el jueEo de caracteres actual es \sVn", $jueEo%cars9;
?>
+l e'emplo anterior producir)a la suguiente salidaC
el jueEo de caracteres actual es latin6
$ea tam#i<n mys?l>real>escape>string./
mys?l>close
>P&P 7A P&P 8 A P&P 4?
mys/lZclose 22 cierra el enlace con MyOL
Kescripci"n
int mys?l>close > Pint identi(icadorZdeZenlaceQ ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
mys?l>close./ cierra el enlace con la #ase MyOL /ue esta asociada con el identi(icador de enlace
espec)(icado; i no se espec)(ica el identi(icador de enlaceA se asume por de(ecto el Bltimo enlace;
Nota- Normalmente no es necesario ya /ue la aperturas no2persistentes son cerradas
automaticamente al (inal de la e'ecuci-n del script; $ea tam#i< li#erar recursos;
mys?l>close./ no cerrar* los enlaces persistentes generados con mys?l>pconnect./;
E'emplo !. E'emplo de My,$: close
<?php
$linI > mysQl%connect3MlocalhostM, MmysQl%userM, MmysQl%pass8ordM9;
i# 3!$linI9 :
die3MRould not connect@ M . mysQl%error399;
;
echo MRonnected success#ullyM;
mysQl%close3$linI9;
?>
$er tam#i<nC mys?l>connect./A mys?l>pconnect./;
mys?l>connect
>P&P 7A P&P 8 A P&P 4?
mys/lZconnect 22 A#re una coneFi-n a un servidor MyOL
Kescripci"n
int mys?l>connect > Pcadena hostname PA cadena usuario PA cadena passEord PA #ool neEZlin" PA int
clientZ(lagsQQQQQ ?
DevuelveC @n identi(icador de enlace positivo si tiene eFitoA o (also si error;
mys?l>connect./esta#lece una coneFi-n a un servidor MyOL; ,odos los argumentos son
opcionalesA y si no hayA se asumen los valores por de(ecto >HlocalhostHA usuario propietario del
proceso del servidorA passEord vac)o?;
+l hostname puede incluir tam#ien un nBmero de puerto ; e'; =hostnameCpuerto= o un camino al
soc"et e'; =CDcaminoDalDsoc"et= para localhost;
Nota- iempre /ue espec)(ic/ue =localhost= o =localhostCport= como servidorA la li#reria
cliente de MyOL evitar* esto y tratar* de conectarse a soc"et local >nom#rado pipe en
LindoEs?; i /uiere usar ,5PD.PA use =10:;3;3;1= en vez de =localhost=; i las li#rerias
cliente de MyOL intentan conectarse a un soc"et local WocadoA de#e (i'ar la trayectoria
como mys/l;de(aultZhost en el archivo de con(iguraci-n P&P y de'ar el campo del
servidor en #lanco;
oporte para =Cpuerto= (ue aWadido en P&P 7;3B8;
oporte para =CDcaminoDalDsoc"et= (ue aWadido en P&P 7;3;13;
Puede suprimir el mensa'e de error en caso de (alla anteponiendo una G al nom#re de la
(uncicdeon;
i se hace una segunda llamada a mys?l>connect./ con los mismos argumentosA no se a#rir* nuevo
enlaceA en lugar de esoA se regresa el identi(icador de enlace ya a#ierto; +l par*metro ne7_l6n>
modi(ica este comportamiento y hace /ue mys?l>connect./ siempre a#rir un nuevo enlaceA aBn si
mys?l>connect./ ha#)a sido llamado antes con los mismos par*metros; +l par* cl6ent_9laEs puede
ser una com#inaci-n de las constantesC MYS.L_CLIENT_COMPRESSA
MYS.L_CLIENT_I#NORE_SPACE o MYS.L_CLIENT_INTERACTI$E;
Nota- +l par*metro ne7_l6n> estuvo disponi#le en P&P 8;0;3
+l par*metro cl6ent_9laEs estuvo disponi#le en P&P 8;7;3
+l enlace al servidor sera cerrado tan pronto como la e'ecuci-n del script (inaliceA a menos /ue se
cierre antes eFpl)citamente llamando a mys?l>close./;
E'emplo !. E'emplo de My,$: connect
<?php
$linI > mysQl%connect3MlocalhostM, MmysQl%userM, MmysQl%pass8ordM9;
i# 3!$linI9 :
die3MRould not connect@ M . mysQl%error399;
;
echo MRonnected success#ullyM;
mysQl%close3$linI9;
?>
$er tam#i<n C mys?l>pconnect./A mys?l>close./;
mys?l>create>db
>P&P 7A P&P 8 A P&P 4?
mys/lZcreateZd# 22 5rea una #ase MyOL
Kescripci"n
int mys?l>create>db > cadena #aseZdeZdatos PA int identi(icadorZdeZenlaceQ ?
mys?l>create>db./ intenta crear una #ase nueva en el servidor asociado al identi(icador de enlace;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo de My,$: create
<?php
$linI > mysQl%connect3MlocalhostM, MmysQl%userM, MmysQl%pass8ordM9;
i# 3!$linI9 :
die3MRould not connect@ M . mysQl%error399;
;
i# 3mysQl%create%db3Mmy%dbM99 :
echo "Latabase created success#ullyVn";
; else :
echo MError creatinE database@ M . mysQl%error39 . "Vn";
;
?>
Por razones de compati#ilidad puede usarse mys?l>createdb./ igualmente;
Nota- La (unci-n mys?l>create>db./ es o#soleta; +s pre(eri#le usar mys?l>?uery./
para e'ecutar una sentencia S54 CRE,TE D,T,A,SE en su lugar;
A5iso
+sta (unci-n no ser* disponi#le y la eFtensi-n de MyOL (ue construidaDcompilada en una li#reria
de cliente de MyOL 8;J;
$er tam#i<nC mys?l>?uery./;
mys?l>data>seeB
>P&P 7A P&P 8 A P&P 4?
mys/lZdataZsee" 22 Mueve el puntero interno
Kescripci"n
int mys?l>data>seeB > int idZresultadoA int numeroZdeZ(ila ?
mys?l>data>seeB./ mueve el puntero de (ila interno a la (ila espec)(icada para el identi(icador de
resultado; La pr-Fima llamada a mys?l>fetch>ro3./ devolver* esa (ila;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
numero_#e_96la empieza en ; +l numero_#e_96la de#e ser un valor dentro del rango de o a
mys?l>num>ro3s./ 2 1; in em#argo si el resultado est* vac)o >mys?l>num>ro3s./ ^^ 3?A una
#Bs/ueda a 3 (allar* con +ZLARN.NG y mys?l>data>seeB./ regresar* FALSE;
Nota- La (unci-n mys?l>data>seeB./ puede ser usada solo en con'unto con
mys?l>?uery./A no con mys?l>unbuffered>?uery./;
E'emplo !. E'emplo de My,$: data seeB
<?php
$linI > mysQl%connect3MlocalhostM, MmysQl%userM, MmysQl%pass8ordM9;
i# 3!$linI9 :
die3MRould not connect@ M . mysQl%error399;
;
$db%selected > mysQl%select%db3Msample%dbM9;
i# 3!$db%selected9 :
die3MRould not select database@ M . mysQl%error399;
;
$Query > M&EOER* last%name, #irst%name S'?" #riendsM;
$result > mysQl%Query3$Query9;
i# 3!$result9 :
die3MNuery #ailed@ M . mysQl%error399;
;
/W #etch ro8s in re=erse order W/
#or 3$i > mysQl%num%ro8s3$result9 F 6; $i >> 2; $iFF9 :
i# 3!mysQl%data%seeI3$result, $i99 :
echo "Rannot seeI to ro8 $i@ " . mysQl%error39 . "Vn";
continue;
;
i# 3!3$ro8 > mysQl%#etch%assoc3$result999 :
continue;
;
echo $ro8)Mlast%nameM/ . M M . $ro8)M#irst%nameM/ . "<br />Vn";
;
mysQl%#ree%result3$result9;
?>
$ea tam#i<n mys?l>?uery./A mys?l>num>ro3s./A mys?l>fetch>ro3./A mys?l>fetch>assoc./A
mys?l>fetch>array./A y mys?l>fetch>ob'ect./;
mys?l>db>name
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
mys/lZd#Zname 22 O#tener datos de resultado
Kescripci"n
string mys?l>db>name > resource resultadoA int (ila PA miFed campoQ ?
mys?l>db>name./ toma como primer argumento un apuntador al resultado de una llamada a
mys?l>list>dbs./; +l par*metro 96la es un )ndice dentro del con'unto de resultados;
i ocurre algBn errorA se devuelve FALSE; @se mys?l>errno./ y mys?l>error./ para determinar la
naturaleza del error;
E'emplo !. E'emplo de mys?l>db>name./
<?php
error%reportinE3E%,OO9;
$enlace > mysQl%connect3MdbhostM, MusernameM, Mpass8ordM9;
$lista%db > mysQl%list%dbs3$enlace9;
$i > 2;
$cnt > mysQl%num%ro8s3$lista%db9;
8hile 3$i < $cnt9 :
echo mysQl%db%name3$lista%db, $i9 . "Vn";
$i[[;
;
?>
Para e(ectos de compati#ilidad con versiones anterioresA mys?l>dbname./ tam#i<n puede ser usada;
in em#argoA esta (unci-n se ha hecho o#soleta;
$ea tam#i<n mys?l>list>dbs./A y mys?l>tablename./;
mys?l>db>?uery
>P&P 7A P&P 8 A P&P 4?
mys/lZd#Z/uery 22 +nvia una sentencia MyOL al servidor
Kescripci"n
int mys?l>db>?uery > cadena #aseZdeZdatosA cadena sentencia PA int identi(icadorZdeZenlaceQ ?
DevuelveC @n identi(icador de resultado positivo o (also si error; La (unci-n tam#i<n regresa
TRUEDFALSE para las sentencias 0NSERTDU+D,TEDDE4ETE para indicar eFitoD(alla;
mys?l>db>?uery./ selecciona una #ase y e'ecuta una sentencia en ella; i el identi(icador de enlace
no ha sido especi(icadoA la (unci-n intenta encontrar un enlace a#ierto al servidor MyOL y si no lo
encuentraA intetar* crear uno como si (uera llamado mys?l>connect./ sin argumentos
,enga en cuenta /ue esta (unci- NJ se regresa a la #ase de datos a la /ue esta#a conectado antes;
+n otras pala#ras usted no puede usar esta (unci-n para correr temporalmente una consulta OL en
otra #ase de datosA usted de#e manualmente regresarse; Los usuarios son animados a usar la sintaFis
#ata1ase.ta1le en las consultas OL en vez de esta (unci-n;
$er tam#i<nmys?l>connect./A mys?l>?uery./;
Nota- +sta (unci-n es o#soleta desde P&P 8;3;K no use esta (unci-n; @se
mys?l>select>db./ y mys?l>?uery./;
mys?l>drop>db
>P&P 7A P&P 8 A P&P 4?
mys/lZdropZd# 22 Borra una #ase de datos MyOL
Kescripci"n
int mys?l>drop>db > cadena #aseZdeZdatos PA int identi(icadorZdeZenlaceQ ?
mys?l>drop>db./ intenta suprimir una #ase de datos completa del servidor asociado al
identi(icador de enlace;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
$er tam#i<nC mys?l>create>db./; Por razones de compati#ilidad puede usarse mys?l>dropdb./
igualmente; Aun/ue es o#soleta;
Nota- La (unci-n mys?l>drop>db./ es o#soleta; +s pre(eri#le usar mys?l>?uery./ para
enviar una sentencia OL DRO+ D,T,A,SE en su lugar;
A5iso
+sta (unci-n no est* disponi#le si la eFtensi-n de MyOL (ue compilada para las li#rerias cliente
de MyOL 8;F;
$ea tam#i<n mys?l>?uery./;
mys?l>errno
>P&P 7A P&P 8 A P&P 4?
mys/lZerrno 22 Deuelve el nBmero del mensa'e de error de la Bltima operaci-n MyOL
Kescripci"n
int mys?l>errno > Pint identi(icadorZdeZenlaceQ ?
Regresa el nBmero de error de la Bltima (unci-nA o 0 >cero? si no hay error;
Los errores /ue se o#tienen de la #ase de datos MyOL ya no generan alertas; +n lugar de esoA use
mys?l>errno./ para o#tener el c-digo de error; Note /ue esta (unci-n solo regresa el c-digo de error
de la (unci-n MyOLmcdeos recientemente eFecutada >sin incluir mys?l>error./ y mys?l>errno
./?A as) /ue si /uiere usarlaA asegurese de chear el valor antes de llamar a otra (unci- de MyOL;
E'emplo !. E'emplo de mys?l>errno
<?php
$linI > mysQl%connect3"localhost", "mysQl%user", "mysQl%pass8ord"9;
i# 3!mysQl%select%db3"nonexistentdb", $linI99 :
echo mysQl%errno3$linI9 . "@ " . mysQl%error3$linI9. "Vn";
;
mysQl%select%db3"Iossu", $linI9;
i# 3!mysQl%Query3"&EOER* W S'?" nonexistenttable", $linI99 :
echo mysQl%errno3$linI9 . "@ " . mysQl%error3$linI9 . "Vn";
;
?>
+l e'emplo anterior producir* la siguiente salidaC
621K@ +nIno8n database MnonexistentdbM
661G@ *able MIossu.nonexistenttableM doesnMt exist
Nota- i el par*metro opcional es espec)(icado el identi(icadorZdeZenlace es usado para
o#tener el c-digo de error; i noA se usa el Bltimo enlace a#ierto;
$er tam#i<nC mys?l>error./ y 5-digos de error MyOL;
mys?l>error
>P&P 7A P&P 8 A P&P 4?
mys/lZerror 22 Devuelve el teFto del mensa'e de error de la Bltima operaci-n MyOL
Kescripci"n
cadena mys?l>error > Pint identi(icadorZdeZenlaceQ ?
Regresa el teFto del error de la Bltima (unci- MyOL o << >cadena vac)a? si no ocurri- error; i no se
espec)(ica el identi(icador de enlace en la (unci-n se usa el Bltimo enlace a#ierto eFitosamente para
o#tener el mensa'e de error del servidor MyOL;
Los errores /ue se o#tienen de la #ase de datos MyOL ya no generan alertas; +n lugar de esoA use
mys?l>errno./ para o#tener el c-digo de error; Note /ue esta (unci-n solo regresa el c-digo de error
de la (unci-n MyOLmcdeos recientemente eFecutada >sin incluir mys?l>error./ y mys?l>errno
./?A as) /ue si /uiere usarlaA asegurese de chear el valor antes de llamar a otra (unci- de MyOL;
E'emplo !. E'emplo de mys?l>error
<?php
$linI > mysQl%connect3"localhost", "mysQl%user", "mysQl%pass8ord"9;
mysQl%select%db3"nonexistentdb", $linI9;
echo mysQl%errno3$linI9 . "@ " . mysQl%error3$linI9. "Vn";
mysQl%select%db3"Iossu", $linI9;
mysQl%Query3"&EOER* W S'?" nonexistenttable", $linI9;
echo mysQl%errno3$linI9 . "@ " . mysQl%error3$linI9 . "Vn";
?>
+l e'emplo anterior producir* la siguiente salidaC
621K@ +nIno8n database MnonexistentdbM
661G@ *able MIossu.nonexistenttableM doesnMt exist
$er tam#i<nC mys?l>errno./ 5-digos de error MyOL;
mys?l>escape>string
>P&P 8 _^ 8;3;7A P&P 4?
mys/lZescapeZstring 22 +scapa una cadena para su uso en mys/lZ/uery
Kescripci"n
string mys?l>escape>string > string cadenaZnoZescapada ?
+sta (unci-n escapa la ca#ena_no_escapa#aA de modo /ue sea seguro usarla en un llamado a
mys?l>?uery./;
Nota- mys?l>escape>string./ no escapa T ni _;
+sta (unci-n es id<ntica a mys?l>real>escape>string./ con la eFcepci-n de /ue
mys?l>real>escape>string./ reci#e un gestor de coneFi-n y escapa la cadena de
acuerdo al 'uego de caracteres actual; mys?l>escape>string./ no reci#e un argumento
de coneFi-nA y no hace caso al valor actual del 'uego de caracteres;
E'emplo !. E'emplo de mys?l>escape>string./
<?php
$item > "YaIMs Oaptop";
$item%escapado > mysQl%escape%strinE3$item9;
print#3"Oa cadena escapada@ \sVn", $item%escapado9;
?>
+l anterior e'emplo producir)a la siguiente salidaC
Oa cadena escapada@ YaIVMs Oaptop
Nota- +sta (unci-n se considera o#soleta a partir de P&P 8;7;3; No use esta (unci-n;
@se mys?l>real>escape>string./ en su lugar;
$ea tam#i<n mys?l>real>escape>string./A addslashes./ y la directiva magicZ/uotesZgpc;
mys?l>fetch>array
>P&P 7A P&P 8 A P&P 4?
mys/lZ(etchZarray 22 +Ftrae la (ila de resultado como una matriz asociativaA una matriz num<rica o
am#as
Kescripci"n
array mys?l>fetch>array > int idZresultado PA int tipoZdeZresultadoQ ?
Devuelve una matriz /ue corresponde a la sentencia eFtraidaA o (also si no /uedan m*s (ilas;
mys?l>fetch>array./ es una versi-n eFtendida de mys?l>fetch>ro3./; Adem*s de guardar los
datos en el )ndice num<rico de la matrizA guarda tam#i<n los datos en los )ndices asociativosA usando
el nom#re de campo como clave;
i dos o m*s columnas del resultado tienen el mismo nom#re de campoA la Bltima columna toma la
prioridad; Para acceder a la>s? otra>s? columna>s? con el mismo nom#reA se de#e esci(icar el indice
numerico o de(inir un alias para la columna; +n columnas con aliasA usted no puede acceder al
contenido con el nom#re original de la columna >usando <96el#< en este e'emplo?
E'emplo !. Consulta con campos repetidos usando alias
&EOER* table6.#ield ,& #oo, tableC.#ield ,& bar S'?" table6, tableC
La (unci-n mys?l>fetch>array./ no es signi(icativemente mas lenta /ue mys?l>fetch>ro3./A sin
em#argo tiene un valor aWadido importante;
+l segundo argumento opcional t6po_#e_resulta#o en mys?l>fetch>array./ es una constante y
puede tomar los siguientes valoresC MYS.L_ASSOCA MYS.L_NUMA y MYS.L_(OTH; +sta
carater)stica (ue agregada en P&P 7;3;:; MYS.L_(OTH
@sando MYS.L_(OTHA usted o#tendr* una matriF con )ndices asociativos y num<ricos; @sando
MYS.L_ASSOCA usted solo tendr* )ndices asociativos >tal como (unciona mys?l>fetch>assoc./?A
usando MYS.L_NUMA solo o#tendr* los )ndices num<ricos >tal como si (uera mys?l>fetch>ro3./?;
Nota- Los nom#res de campos retornados por esta (unci-n di(erencian entre ma?usculas
? m6nusculas;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
$ea tam#i<n mys?l>fetch>ro3./A mys?l>fetch>assoc./A mys?l>data>seeB./A y mys?l>?uery./;
E'emplo *. mys?l>fetch>array./ con MYS.L_NUM
<?php
mysQl%connect3"localhost", "mysQl%user", "mysQl%pass8ord"9 or
die3"Rould not connect@ " . mysQl%error399;
mysQl%select%db3"mydb"9;
$result > mysQl%Query3"&EOER* id, name S'?" mytable"9;
8hile 3$ro8 > mysQl%#etch%array3$result, "P&NO%.+"99 :
print#3"4L@ \s .ame@ \s", $ro8)2/, $ro8)6/9;
;
mysQl%#ree%result3$result9;
?>
E'emplo 7. mys?l>fetch>array./ con MYS.L_ASSOC
<?php
mysQl%connect3"localhost", "mysQl%user", "mysQl%pass8ord"9 or
die3"Rould not connect@ " . mysQl%error399;
mysQl%select%db3"mydb"9;
$result > mysQl%Query3"&EOER* id, name S'?" mytable"9;
8hile 3$ro8 > mysQl%#etch%array3$result, "P&NO%,&&?R99 :
print#3"4L@ \s .ame@ \s", $ro8)"id"/, $ro8)"name"/9;
;
mysQl%#ree%result3$result9;
?>
E'emplo 8. mys?l>fetch>array./ con MYS.L_(OTH
<?php
mysQl%connect3"localhost", "mysQl%user", "mysQl%pass8ord"9 or
die3"Rould not connect@ " . mysQl%error399;
mysQl%select%db3"mydb"9;
$result > mysQl%Query3"&EOER* id, name S'?" mytable"9;
8hile 3$ro8 > mysQl%#etch%array3$result, "P&NO%Z?*H99 :
print# 3"4L@ \s .ame@ \s", $ro8)2/, $ro8)"name"/9;
;
mysQl%#ree%result3$result9;
?>
mys?l>fetch>assoc
>P&P 8 _^ 8;3;7A P&P 4?
mys/lZ(etchZassoc 22 Recupera una (ila de resultado como una matriz asociativa
Kescripci"n
array mys?l>fetch>assoc > resource resultado ?
Devuelve una matriz asociativa /ue corresponde a la (ila recuperadaA o FALSE si no hay m*s (ilas;
mys?l>fetch>assoc./ es Walente a llamar mys?l>fetch>array./ con M%OLZAO5 como
segundo par*metro opcional; cpzfnicamente devuelve una matriz asociativa; +sta es la (orma en
/ue originalmente tra#a'a#a mys?l>fetch>array./; i necesita )ndices num<ricos as) como
asociativosA utilice mys?l>fetch>array./;
i dos o m*s columnas del resultado tienen los mismos nom#res de campoA la Bltima columna
tomar* precedencia; Para acceder a otras columnas con el mismo nom#reA tendr* /ue acceder al
resultado con )ndices num<ricos mediante el uso de mys?l>fetch>ro3./ o agregar so#renom#res;
$ea el e'emplo en la descripci-n de mys?l>fetch>array./ respecto a los so#renom#res;
Algo importante a notar es /ue el uso de mys?l>fetch>assoc./ no es s6En696cat6amente m*s lento
/ue el uso de mys?l>fetch>ro3./A al mismo tiempo /ue provee un valor agregado considera#le;
Nota- Los nom#res de campos retornados por esta (unci-n di(erencian entre ma?usculas
? m6nusculas;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
E'emplo !. )n e'emplo e+tendido de mys?l>fetch>assoc./
<?php
$conexion > mysQl%connect3"localhost", "mysQl%user", "mysQl%pass8ord"9;
i# 3!$conexion9 :
echo ".o pudo conectarse a la ZL@ " . mysQl%error39;
exit;
;
i# 3!mysQl%select%db3"nombre%de%la%bd"99 :
echo ".o ha sido posible seleccionar la ZL@ " . mysQl%error39;
exit;
;
$sQl > "&EOER* id as id%usuario, nombre%completo, status%usuario
S'?" alEuna%tabla
7HE'E status%usuario > 6";
$resultado > mysQl%Query3$sQl9;
i# 3!$resultado9 :
echo ".o pudo ejecutarse satis#actoriamente la consulta 3$sQl9 " .
"en la ZL@ " . mysQl%error39;
exit;
;
i# 3mysQl%num%ro8s3$resultado9 >> 29 :
echo ".o se han encontrado #ilas, nada a imprimir, asi Que =oy " .
"a detenerme.";
exit;
;
// "ientras exista una #ila de datos, colocar esa #ila en $#ila
// como una matri0 asociati=a
// .ota@ &i solo espera una #ila, no hay necesidad de usar un ciclo
// .ota@ &i coloca extract3$#ila9; dentro del siEuiente ciclo,
// estara creando $id%usuario, $nombre%completo, y $status%usuario
8hile 3$#ila > mysQl%#etch%assoc3$resultado99 :
echo $#ila)"id%usuario"/;
echo $#ila)"nombre%completo"/;
echo $#ila)"status%usuario"/;
;
mysQl%#ree%result3$resultado9;
?>
$ea tam#i<n mys?l>fetch>ro3./A mys?l>fetch>array./A mys?l>?uery./ y mys?l>error./;
mys?l>fetch>field
>P&P 7A P&P 8 A P&P 4?
mys/lZ(etchZ(ield 22 +Ftrae la in(ormaci-n de una columna y la devuelve como un o#'eto;
Kescripci"n
o#'eto mys?l>fetch>field > int idZresultado PA int saltoQ ?
Devuelve un o#'eto /ue contiene la in(ormaci-n del campo;
Puede usarse mys?l>fetch>field./ para o#tener in(ormaci-n so#re campos en un resultado; i no se
espec)(ica el saltoA se eFtrae el siguiente campo /ue todav)a no ha sido eFtraido; con
mys?l>fetch>field./;
Las propiedades del o#'eto sonC
name 2 nom#re de la columna
ta#le 2 name de la ta#la a la /ue pertenece la columna
maFZlength 2 longitud m*Fima de la columna
notZnull 2 1 si la columna no puede contener un valor nulo
primaryZ"ey 2 1 si la columna es clave primaria
uni/ueZ"ey 2 1 si la columna es clave Bnica
multipleZ"ey 2 1 si la columna es clave no Bnica
numeric 2 1 si la columna es num<rica
#lo# 2 1 si la columna es un BLOB
type 2 el tipo de la columna
unsigned 2 1 si la columna es unsigned
zero(ill 2 1 si la columna es zero2(illed
$er tam#i<n mys?l>field>seeB./
Nota- Los nom#res de campos retornados por esta (unci-n di(erencian entre ma?usculas
? m6nusculas;
E'emplo !. E'emplo mys?l>fetch>field
<?php
$conn > mysQl%connect3Mlocalhost@<<2GM, MuserM, Mpass8ordM9;
i# 3!$conn9 :
die3MRould not connect@ M . mysQl%error399;
;
mysQl%select%db3MdatabaseM9;
$result > mysQl%Query3Mselect W #rom tableM9;
i# 3!$result9 :
die3MNuery #ailed@ M . mysQl%error399;
;
/W Eet column metadata W/
$i > 2;
8hile 3$i < mysQl%num%#ields3$result99 :
echo "4n#ormation #or column $i@<br />Vn";
$meta > mysQl%#etch%#ield3$result, $i9;
i# 3!$meta9 :
echo ".o in#ormation a=ailable<br />Vn";
;
echo "<pre>
blob@ $metaF>blob
max%lenEth@ $metaF>max%lenEth
multiple%Iey@ $metaF>multiple%Iey
name@ $metaF>name
not%null@ $metaF>not%null
numeric@ $metaF>numeric
primary%Iey@ $metaF>primary%Iey
table@ $metaF>table
type@ $metaF>type
uniQue%Iey@ $metaF>uniQue%Iey
unsiEned@ $metaF>unsiEned
0ero#ill@ $metaF>0ero#ill
</pre>";
$i[[;
;
mysQl%#ree%result3$result9;
?>
mys?l>fetch>lengths
>P&P 7A P&P 8 A P&P 4?
mys/lZ(etchZlengths 22 Devuelve la longitud de cada salida en un resultado
Kescripci"n
array mys?l>fetch>lengths > int idZresultado ?
DevuelveC @na matriz /ue contiene las longitudes de cada campo de la Bltima (ila eFtraida por
mys?l>fetch>ro3./A o FALSE si error;
mys?l>fetch>lengths./ almacena las longitudes de cada columna en la Bltima (ila devuelta por
mys?l>fetch>ro3./A mys?l>fetch>assoc./A mys?l>fetch>array./A y mys?l>fetch>ob'ect./ en una
matrizA empezando por 3;
$ea tam#i<n mys?l>field>len./A mys?l>fetch>ro3./A strlen./;
E'emplo !. E'emplo de mys?l>fetch>lengths
<?php
$result > mysQl%Query3"&EOER* id,email S'?" people 7HE'E id > M1CM"9;
i# 3!$result9 :
echo MRould not run Query@ M . mysQl%error39;
exit;
;
$ro8 > mysQl%#etch%assoc3$result9;
$lenEths > mysQl%#etch%lenEths3$result9;
print%r3$ro89;
print%r3$lenEths9;
?>
+l resultado del e'emplo seria algo similar aC
,rray
3
)id/ >> 1C
)email/ >> user^example.com
9
,rray
3
)2/ >> C
)6/ >> 6G
9
mys?l>fetch>ob'ect
>P&P 7A P&P 8 A P&P 4?
mys/lZ(etchZo#'ect 22 +Ftrae una (ila de resultado como un o#'eto
Kescripci"n
o#'eto mys?l>fetch>ob'ect > int idZresultado ?
Devuelve un o#'eto con las propiedades /ue corresponden a la Bltima (ila eFtraidaA o FALSE si no
/uedan m*s (ilas;
mys?l>fetch>ob'ect./ es similar a mys?l>fetch>array./A con la di(erencia /ue un o#'eto es
devuelto en lugar de una matriz; .ndirectamenteA /uiere decir /ue solo se puede aceder a los datos
por el nom#re del campoA y no por su posici-n; >los nBmeros no pueden ser nom#res de propiedades
de o#'etos?;
Nota- Los nom#res de campos retornados por esta (unci-n di(erencian entre ma?usculas
? m6nusculas;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
E'emplo !. E'emplo demys?l>fetch>ob'ect./
<?php
$ro8 > mysQl%#etch%object3$result9;
/W this is =alid W/
echo $ro8F>#ield;
/W this is in=alid W/
//echo $ro8F>2;
?>
La (unci-n es identica a mys?l>fetch>array./A y casi tan r*pida como mys?l>fetch>ro3./ >la
di(erencia es insigni(icante?;
E'emplo *. E'emplo demys?l>fetch>ob'ect./
<?php
mysQl%connect3"hostname", "user", "pass8ord"9;
mysQl%select%db3"mydb"9;
$result > mysQl%Query3"select W #rom mytable"9;
8hile 3$ro8 > mysQl%#etch%object3$result99 :
echo $ro8F>user%id;
echo $ro8F>#ullname;
;
mysQl%#ree%result3$result9;
?>
$er tam#i<nC mys?l>fetch>array./A mys?l>fetch>assoc./A mys?l>fetch>ro3./A mys?l>data>seeB./
y mys?l>?uery./;
mys?l>fetch>ro3
>P&P 7A P&P 8 A P&P 4?
mys/lZ(etchZroE 22 Devuelve una (ila de resultado como matriz
Kescripci"n
array mys?l>fetch>ro3 > int idZresultado ?
DevuelveC @na matriz /ue corresponde a la (ila selecionadaA o FALSE si no /uedan m*s (ilas;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
mys?l>fetch>ro3./ seleciona una (ila de datos del resultado asociado al identi(icador de resultado
especi(icado; La (ila es devuelta como una matriz; 5ada columna del resultdo es guardada en un
o((set de la matrizA empezando por el o((set 3;
La llamada a mys?l>fetch>ro3./ de#er)a devolver la pr-Fima (ila del resultadoA o FALSE si no
/uedan m*s (ilas;
E'emplo !. E'emplo de mys?l>fetch>ro3
<?php
$result > mysQl%Query3"&EOER* id,email S'?" people 7HE'E id > M1CM"9;
i# 3!$result9 :
echo MRould not run Query@ M . mysQl%error39;
exit;
;
$ro8 > mysQl%#etch%ro83$result9;
echo $ro8)2/; // 1C
echo $ro8)6/; // the email =alue
?>
$er tam#i<nC mys?l>fetch>array./A mys?l>fetch>ob'ect./A mys?l>data>seeB./A
mys?l>fetch>lengths./A mys?l>result./;
mys?l>field>flags
>P&P 7A P&P 8 A P&P 4?
mys/lZ(ieldZ(lags 22 Devuelve las #anderas asociados con el campo espec)(icado en un resultado
Kescripci"n
cadena mys?l>field>flags > int idZresultadoA int o((setZdelZcampo ?
mys?l>field>flags./ devuelve las #anderas del campo espec)(icado; 5ada #andera es devuelta como
una pala#ra y est*n separados por un Bnico espacioA se puede dividir el resultado devuelto utilizando
e+plode./;
oporta las siguientes #anderasC *not_null*A *pr6mar?_>e?*A *un6@ue_>e?*A *mult6ple_>e?*A *1lo1*A
*uns6Ene#*A *Dero96ll*A *16nar?*A *enum*A *auto_6ncrement* y *t6mestamp*;
E'emplo !. E'emplo de mys?l>field>flags
<?php
$result > mysQl%Query3"&EOER* id,email S'?" people 7HE'E id > M1CM"9;
i# 3!$result9 :
echo MRould not run Query@ M . mysQl%error39;
exit;
;
$#laEs > mysQl%#ield%#laEs3$result, 29;
echo $#laEs;
print%r3explode3M M, $#laEs99;
?>
+l resultado del e'emplo seria algo similar aC
not%null primary%Iey auto%increment
,rray
3
)2/ >> not%null
)6/ >> primary%Iey
)C/ >> auto%increment
9
Por razones de compati#ilidad puede usarse tam#i<n mys?l>fieldflags./; in em#argo esta (unci- es
o#soleta;
mys?l>field>len
>P&P 7A P&P 8 A P&P 4?
mys/lZ(ieldZlen 22 Devuelve la longitud del campo espec)(icado
Kescripci"n
int mys?l>field>len > int idZresultadoA int o((setZdelZcampo ?
mys?l>field>len./ devuelve la longitud del campo espec)(icado;
E'emplo !. E'emplo de mys?l>fetch>len
<?php
$result > mysQl%Query3"&EOER* id,email S'?" people 7HE'E id > M1CM"9;
i# 3!$result9 :
echo MRould not run Query@ M . mysQl%error39;
exit;
;
// 7ill Eet the lenEth o# the =alue in email so #or example
// user^example.com 8ould Ei=e us a lenEth o# 6G
$lenEth > mysQl%#ield%len3$result, MemailM9;
echo $lenEth;
?>
Por razones de compati#ilidad puede usarse tam#i<n mys?l>fieldlen./; Aun/ue esta (unci-n es
o#soleta;
$ea tam#i< mys?l>fetch>lengths./A strlen./;
mys?l>field>name
>P&P 7A P&P 8 A P&P 4?
mys/lZ(ieldZname 22 Devuelve el nom#re del campo espec)(icado en un resultado
Kescripci"n
cadena mys?l>field>name > int idZresultadoA int indiceZdelZcampo ?
mys?l>field>name./ devuelve el nom#re del campo espec)(icado; Los argumentos de la (unci-n son
el identi(icador de resultado y el )ndice del campo;
Nota- 6n#6ce_#el_campo comienza en 3;
Por e'emplo el )ndice del tercer campo ser* en realidad 0A el )ndice del cuarto campo
ser* 7 y asi sucesivamente;
Nota- Los nom#res de campos retornados por esta (unci-n di(erencian entre ma?usculas
? m6nusculas;
E'emplo !. E'emplo mys?l>field>name
<?php
/W *he users table consists o# three #ields@
W user%id
W username
W pass8ord.
W/
$linI > ^mysQl%connect3MlocalhostM, MmysQl%userM, MmysQl%pass8ordM9;
i# 3!$linI9 :
die3MRould not connect to "y&NO ser=er@ M . mysQl%error399;
;
$dbname > MmydbM;
$db%selected > mysQl%select%db3$dbname, $linI9;
i# 3!$db%selected9 :
die3MRould not set $dbname@ M . mysQl%error399;
;
$res > mysQl%Query3Mselect W #rom usersM, $linI9;
echo mysQl%#ield%name3$res, 29 . "Vn";
echo mysQl%#ield%name3$res, C9;
?>
+l e'emplo anterior producir* la siguiente salidaC
user%id
pass8ord
Por razones de compati#ilidad puede usarse tam#i<n mys?l>fieldname./; in em#argo esta (unci-n
es o#soleta;
mys?l>field>seeB
>P&P 7A P&P 8 A P&P 4?
mys/lZ(ieldZsee" 22 Asigna el puntero del resultado al o((set del campo espec)(icado
Kescripci"n
int mys?l>field>seeB > int idZresultadoA int o((setZdelZcampo ?
Busca el o((set del campo espec)(icado; i la pr-Fima llamada a mys?l>fetch>field./ no incluye un
o((set de campoA se devolver* ese campo;
$er tam#i<n mys?l>fetch>field./;
mys?l>field>table
>P&P 7A P&P 8 A P&P 4?
mys/lZ(ieldZta#le 22 Devuelve el nom#re de la ta#la donde est* el campo espec)(icado
Kescripci"n
cadena mys?l>field>table > int idZresultadoA int o((setZdelZcampo ?
Devuelve el nom#re de la ta#la donde est* el campo;
E'emplo !. E'emplo mys?l>field>table
<?php
$result > mysQl%Query3"&EOER* name,comment S'?" people,comments"9;
i# 3!$result9 :
echo MRould not run Query@ M . mysQl%error39;
exit;
;
// ,ssuminE name is in the people table
$table > mysQl%#ield%table3$result, MnameM9;
echo $table; // people
?>
Por razones de compati#ilidad puede usarse tam#i<n mys?l>fieldtable./; in em#argo esta (unci-n
es o#soleta;
$ea tam#i<n mys?l>list>tables./;
mys?l>field>type
>P&P 7A P&P 8 A P&P 4?
mys/lZ(ieldZtype 22 Devuelve el tipo del campo espec)(icado en un resultado
Kescripci"n
cadena mys?l>field>type > int idZresultadoA int o((setZdelZcampo ?
mys?l>field>type./ es similar a la (unci-n mys?l>field>name./; Los argumentos son id<nticosA
pero se devuelve el tipo de campo; +l tipo ser* *6nt*A *real*A *str6nE*A *1lo1*A u otros detallados en
la documentaci-n de MyOL;
E'emplo !. mys?l>field>type./ e+ample
<?php
mysQl%connect3"localhost", "mysQl%username", "mysQl%pass8ord"9;
mysQl%select%db3"mysQl"9;
$result > mysQl%Query3"&EOER* W S'?" #unc"9;
$#ields > mysQl%num%#ields3$result9;
$ro8s > mysQl%num%ro8s3$result9;
$table > mysQl%#ield%table3$result, 29;
echo "Pour M" . $table . "M table has " . $#ields . " #ields and " . $ro8s . " record3s9Vn";
echo "*he table has the #ollo8inE #ields@Vn";
#or 3$i>2; $i < $#ields; $i[[9 :
$type > mysQl%#ield%type3$result, $i9;
$name > mysQl%#ield%name3$result, $i9;
$len > mysQl%#ield%len3$result, $i9;
$#laEs > mysQl%#ield%#laEs3$result, $i9;
echo $type . " " . $name . " " . $len . " " . $#laEs . "Vn";
;
mysQl%#ree%result3$result9;
mysQl%close39;
?>
+l e'emplo anterior producir* la siguiente salidaC
Pour M#uncM table has 1 #ields and 6 record3s9
*he table has the #ollo8inE #ields@
strinE name G1 not%null primary%Iey binary
int ret 6 not%null
strinE dl 6CJ not%null
strinE type K not%null enum
Por razones de compati#ilidad puede usarse tam#i<n mys?l>fieldtype./; Aun/ue esta (unci-n es
o#soleta;
mys?l>free>result
>P&P 7A P&P 8 A P&P 4?
mys/lZ(reeZresult 22 Li#era la memoria del resultado
Kescripci"n
int mys?l>free>result > int idZresultado ?
mys?l>free>result./ solo necesita ser llamada si te preocupa usar demasiado memoria durante la
e'ecuci-n de tu script; ,oda la memoria usada por resultado espec)(icado en el par*metro del
identi(icador de resultado ser* autom*ticamente li#erada;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
.( a non2resource is used (or the resultA an error o( level +ZLARN.NG Eill #e emitted; .tHs Eorth
noting that mys?l>?uery./ only returns a resource (or +L+5,A &OLA +JPLA.NA and
D+5R.B+ /ueries;
E'emplo !. E'emplo de mys?l>free>result
<?php
$result > mysQl%Query3"&EOER* id,email S'?" people 7HE'E id > M1CM"9;
i# 3!$result9 :
echo MRould not run Query@ M . mysQl%error39;
exit;
;
/W +se the result, assuminE 8eMre done 8ith it a#ter8ords W/
$ro8 > mysQl%#etch%assoc3$result9;
/W .o8 8e #ree up the result and continue on 8ith our script W/
mysQl%#ree%result3$result9;
echo $ro8)MidM/;
echo $ro8)MemailM/;
?>
Por razones de compati#ilidad puede usarse tam#ien mys?l>freeresult./; in em#argo esta (unci-n
es o#soleta;
$ea tam#i<n mys?l>?uery./A is>resource./;
mys?l>get>client>info
>P&P 8 _^ 8;3;4A P&P 4?
mys/lZgetZclientZin(o 22 O#tener in(ormaci-n del cliente MyOL
Kescripci"n
string mys?l>get>client>info > void ?
mys?l>get>client>info./ devuelve una cadena /ue representa la versi-n de la #i#lioteca cliente;
E'emplo !. E'emplo de mys?l>get>client>info./
<?php
print#3"4n#ormaci&oacute;n del cliente "y&NO@ \sVn", mysQl%Eet%client%in#o399;
?>
+l anterior e'emplo producir)a la siguiente salidaC
4n#ormaci&oacute;n del cliente "y&NO@ <.C<.<K
$ea tam#i<n mys?l>get>host>info./A mys?l>get>proto>info./ y mys?l>get>ser5er>info./;
mys?l>get>host>info
>P&P 8 _^ 8;3;4A P&P 4?
mys/lZgetZhostZin(o 22 O#tener in(ormaci-n de la m*/uina an(itriona MyOL
Kescripci"n
string mys?l>get>host>info > Presource idZenlaceQ ?
mys?l>get>host>info./ devuelve una cadena /ue descri#e el tipo de coneFi-n en uso con 6#_enlaceA
incluyendo el nom#re del e/uipo servidor an(itri-n; i se omite 6#_enlaceA se usar* la Bltima
coneFi-n a#ierta;
E'emplo !. E'emplo de mys?l>get>host>info./
<?php
$enlace > mysQl%connect3"localhost", "mysQl%user", "mysQl%pass8ord"9;
i# 3!$enlace9 :
die3".o pudo conectarse@ " . mysQl%error399;
;
print#3"4n#ormaci&oacute;n del host "y&NO@ \sVn", mysQl%Eet%host%in#o399;
?>
+l e'emplo anterior producir)a la siguiente salidaC
4n#ormaci&oacute;n del eQuipo an#itri&oacute;n "y&NO@ Oocalhost =ia +.4X socIet
$ea tam#i<n mys?l>get>client>info./A mys?l>get>proto>info./ y mys?l>get>ser5er>info./;
mys?l>get>proto>info
>P&P 8 _^ 8;3;4A P&P 4?
mys/lZgetZprotoZin(o 22 O#tener in(ormaci-n del protocolo MyOL
Kescripci"n
int mys?l>get>proto>info > Presource idZenlaceQ ?
mys?l>get>proto>info./ devuelve la versi-n del protocolo usada por la coneFi-n 6#_enlace; i se
omite 6#_enlaceA se usar* la Bltima coneFi-n a#ierta;
E'emplo !. E'emplo de mys?l>get>proto>info./
<?php
$enlace > mysQl%connect3"localhost", "mysQl%user", "mysQl%pass8ord"9;
i# 3!$enlace9 :
die3".o pudo conectarse@ " . mysQl%error399;
;
print#3"(ersi&oacute;n del protocolo "y&NO@ \sVn", mysQl%Eet%proto%in#o399;
?>
+l e'emplo anterior producir)a la siguiente salidaC
(ersi&oacute;n del protocolo "y&NO@ 62
$ea tam#i<n mys?l>get>client>info./A mys?l>get>host>info./ y mys?l>get>ser5er>info./;
mys?l>get>ser5er>info
>P&P 8 _^ 8;3;4A P&P 4?
mys/lZgetZserverZin(o 22 O#tener in(ormaci-n del servidor MyOL
Kescripci"n
string mys?l>get>ser5er>info > Presource idZenlaceQ ?
mys?l>get>ser5er>info./ devuelve la versi-n del servidor usado en la coneFi-n 6#_enlace; i se
omite 6#_enlaceA ser* usada la Bltima coneFi-n a#ierta;
E'emplo !. E'emplo de mys?l>get>ser5er>info./
<?php
$enlace > mysQl%connect3"localhost", "mysQl%user", "mysQl%pass8ord"9;
i# 3!$enlace9 :
die3".o pudo conectarse@ " . mysQl%error399;
;
print#3"(ersi&oacute;n del ser=idor "y&NO@ \sVn", mysQl%Eet%ser=er%in#o399;
?>
+l anterior e'emplo producir)a la siguiente salidaC
(ersi&oacute;n del ser=idor "y&NO@ 1.2.6Falpha
$ea tam#i<n mys?l>get>client>info./A mys?l>get>host>info./A mys?l>get>proto>info./A y
php5ersion./;
mys?l>info
>P&P 8 _^ 8;7;3A P&P 4?
mys/lZin(o 22 O#tiene in(ormaci-n so#re la consulta m*s reciente
Kescripci"n
string mys?l>info > Presource idZenlaceQ ?
mys?l>info./ devuelve in(ormaci-n detallada so#re la Bltima consulta realizada usando el 6#_enlace
dado; i no se indica un 6#_enlaceA se asumir* el Bltimo enlace a#ierto;
mys?l>info./ devuelve una cadena para todas las sentencias listadas a continuaci-n; +n cual/uier
otro casoA devuelve FALSE; +l (ormato de la cadena depende en la sentencia dada;
E'emplo !. ,entencias My,$: rele5antes
4.&E'* 4.*? ... &EOER* ...
&trinE #ormat@ 'ecords@ C< Luplicates@ 2 7arninEs@ 2
4.&E'* 4.*? ... (,O+E& 3...9,3...9,3...9...
&trinE #ormat@ 'ecords@ <H Luplicates@ 2 7arninEs@ 2
O?,L L,*, 4.S4OE ...
&trinE #ormat@ 'ecords@ 1C Leleted@ 2 &Iipped@ 2 7arninEs@ 2
,O*E' *,ZOE
&trinE #ormat@ 'ecords@ G2 Luplicates@ 2 7arninEs@ 2
+L,*E
&trinE #ormat@ 'o8s matched@ G5 RhanEed@ G5 7arninEs@ 2
Los nBmeros presentados son s-lo de caracter ilustrativoX sus valores corresponder*n a la consulta
usada;
Nota- mys?l>info./ devuelve un valor di(erente a FALSE para la sentencia .N+R, ;;;
$AL@+ s-lo si se indican mBltiples listas de valores en la sentencia;
$ea tam#i<n mys?l>affected>ro3s./A mys?l>insert>id./A y mys?l>stat./;
mys?l>insert>id
>P&P 7A P&P 8 A P&P 4?
mys/lZinsertZid 22 Devuelve el identi(icador generado en la Bltima llamada a .N+R,
Kescripci"n
int mys?l>insert>id > Pint identi(icadorZdeZenlaceQ ?
mys?l>insert>id./ devuelve el identi(icador generado para un campo de tipo
A@,OZ.N5R+M+N,+D; e devolver* el identi(icador generado por el Bltimo .N+R, para el
6#ent696ca#or_#e_enlace; i no se espec)(ica el 6#ent696ca#or_#e_enlaceA se asume por de(ecto el
Bltimo enlace a#ierto;
mys?l>insert>id./ regresa 3 si la consulta previa no gener- un valor A@,OZ.N5R+M+N,; i
necesita guardar el valor para un uso posteriorA asegurese de llamar mys?l>insert>id./
inmediatamente despu<s de la consulta /ue gener- el valor;
Nota- +l valor de la (unci-n OL de M%OL 4,ST_0NSERT_0DLM siempre contiene el
valor A@,OZ.N5R+M+N, m* recientemente generadoA y no se pierde su valor entre
consultas;
A5iso
mys?l>insert>id./ convierte el tipo de la (unci-n nativa de MyOL en el AP. de 5
m?s@l_6nsert_6#LM a un tipo de lonE >llamada int en P&P?; i tu columna A@,OZ.N5R+M+N,
tiene un tipo B.G.N,A el valor regresado por mys?l>insert>id./ ser* incorrecto; +n ese casoA usa
la (unci-n interna 4,ST_0NSERT_0DLM de OL en MyOL en una consulta OL;
E'emplo !. E'emplo mys?l>insert>id
<?php
$linI > mysQl%connect3MlocalhostM, MmysQl%userM, MmysQl%pass8ordM9;
i# 3!$linI9 :
die3MRould not connect@ M . mysQl%error399;
;
mysQl%select%db3MmydbM9;
mysQl%Query3"4.&E'* 4.*? mytable 3product9 =alues 3MIossuM9"9;
print#3"Oast inserted record has id \dVn", mysQl%insert%id399;
?>
$ea tam#i<n mys?l>?uery./A mys?l>info./;
mys?l>list>dbs
>P&P 7A P&P 8 A P&P 4?
mys/lZlistZd#s 22 Lista las #ases de datos disponi#les en el servidor MyOL
Kescripci"n
int mys?l>list>dbs > Pint identi(icadorZdeZenlaceQ ?
mys?l>list>dbs./ devuelve un puntero de resultado /ue contiene las #ases disponi#les en el actual
demonio mys/l; @tiliza la (unci-n mys?l>tablename./ para eFplotar el puntero de resultado;
E'emplo !. E'emplo mys?l>list>dbs
<?php
$linI > mysQl%connect3MlocalhostM, MmysQl%userM, MmysQl%pass8ordM9;
$db%list > mysQl%list%dbs3$linI9;
8hile 3$ro8 > mysQl%#etch%object3$db%list99 :
echo $ro8F>Latabase . "Vn";
;
?>
+l e'emplo anterior producir* la siguiente salidaC
database6
databaseC
database<
...
Nota- +l c-digo anterior puede (uncionar igualmente con mys?l>fetch>ro3./ u otra
(unci- similar;
Por razones de compati#ilidad puede usarse tam#i<n mys?l>listdbs./; in em#argo esta (unci-n es
o#soleta;
$ea tam#i<n mys?l>db>name./A mys?l>select>db./;
mys?l>list>fields
>P&P 7A P&P 8 A P&P 4?
mys/lZlistZ(ields 22 Lista los campos del resultado de MyOL
Kescripci"n
int mys?l>list>fields > cadena #aseZdeZdatosA cadena ta#la PA int denti(icadorZdeZenlaceQ ?
Nota- La (unci-n mys?l>list>fields./ es onsoleta; +s pre(eri#le usar mys?l>?uery./
para e'ecutar una sentencia OL S!OI CO4UMNS 3ROM ta1le )402E <name<.;
mys?l>list>fields./ lista in(ormaci-n so#re la ta#la; Los argumentos son la #ase de datos y el
nom#re de la ta#la; e devuelve un puntero /ue puede ser usado por las (unciones
mys?l>field>flags./A mys?l>field>len./A mys?l>field>name./A y mys?l>field>type./;
@n identi(icador de resultado es un entero positivo; La (unci-n devuelve 21 si se produce un error;
@na cadena de caracteres descri#iendo el error ser* introducida en 'phperrmsEA y a menos /ue la
(unci-n sea llamada como Wm?s@lLM el literal del error tam#i<n ser* desplegado;
E'emplo !. E'emplo alternati5o a mys?l>list>fields
<?php
$result > mysQl%Query3"&H?7 R?O+".& S'?" sometable"9;
i# 3!$result9 :
echo MRould not run Query@ M . mysQl%error39;
exit;
;
i# 3mysQl%num%ro8s3$result9 > 29 :
8hile 3$ro8 > mysQl%#etch%assoc3$result99 :
print%r3$ro89;
;
?>
+l e'emplo anterior producir* una salida similar aC
,rray
3
)Sield/ >> id
)*ype/ >> int3H9
).ull/ >>
)]ey/ >> '4
)Le#ault/ >>
)Extra/ >> auto%increment
9
,rray
3
)Sield/ >> email
)*ype/ >> =archar36229
).ull/ >>
)]ey/ >>
)Le#ault/ >>
)Extra/ >>
9
Por razones de compati#ilidad puede usarse tam#i<n mys?l>listfields./; in em#argo esta (unci- es
o#soleta;
$ea tam#i<n mys?l>field>flags./A mys?l>info./;
mys?l>list>processes
>P&P 8 _^ 8;7;3A P&P 4?
mys/lZlistZprocesses 22 Lista los procesos MyOL
Kescripci"n
resource mys?l>list>processes > Presource idZenlaceQ ?
mys?l>list>processes./ devuelve un apuntador a un resultado /ue descri#e los hilos actuales del
servidor;
E'emplo !. E'emplo de mys?l>list>processes./
<?php
$enlace > mysQl%connect3MlocalhostM, MmysQl%userM, MmysQl%pass8ordM9;
$resultado > mysQl%list%processes3$enlace9;
8hile 3$#ila > mysQl%#etch%assoc3$resultado99:
print#3"\s \s \s \s \sVn", $#ila)"4d"/, $#ila)"Host"/, $#ila)"db"/,
$#ila)"Rommand"/, $#ila)"*ime"/9;
;
mysQl%#ree%result3$resultado9;
?>
+l e'emplo anterior producir)a la siguiente salidaC
6 localhost test rocesslist 2
1 localhost mysQl sleep 5
$ea tam#i<n mys?l>thread>id./ y mys?l>stat./;
mys?l>list>tables
>P&P 7A P&P 8 A P&P 4?
mys/lZlistZta#les 22 Lista las ta#las en una #ase de datos MyOL
Kescripci"n
int mys?l>list>tables > cadena #aseZdeZdatos PA int identi(icadorZdeZenlaceQ ?
mys?l>list>tables./ toma el nom#re de la #ase y devuelve un puntero de resultado como la (unci-n
mys?l>db>?uery./; La (unci-n mys?l>tablename./ de#e ser usada para eFtraer los nom#res de las
ta#las del puntero;
+l par*metro 1ase_#e_#atos es el nom#re de la #ase de datos de la cual se de#e eFtraer la lista de la
ta#laA a menos /ue ocurra un error mys?l>list>tables./ regresa FALSE
Por razones de compati#ilidad puede usarse tam#i<n mys?l>listtables./; +sta (unci-n es o#soleta y
no se recomienda;
Nota- La (unci-n mys?l>list>tables./ es o#soleta; +s pre(eri#le usar mys?l>?uery./
para enviar una sentencia OL S!OI T,A4ES )3ROM #1_name. )402E <pattern<.;
E'emplo !. E'emplo mys?l>list>tables
<?php
$dbname > MmysQl%dbnameM;
i# 3!mysQl%connect3MmysQl%hostM, MmysQl%userM, MmysQl%pass8ordM99 :
echo MRould not connect to mysQlM;
exit;
;
$result > mysQl%list%tables3$dbname9;
i# 3!$result9 :
echo "LZ Error, could not list tablesVn";
echo M"y&NO Error@ M . mysQl%error39;
exit;
;
8hile 3$ro8 > mysQl%#etch%ro83$result99 :
echo "*able@ $ro8)2/Vn";
;
mysQl%#ree%result3$result9;
?>
$ea tam#i<nC mys?l>list>dbs./A mys?l>tablename./;
mys?l>num>fields
>P&P 7A P&P 8 A P&P 4?
mys/lZnumZ(ields 22 devuelve el nBmero de campos de un resultado
Kescripci"n
int mys?l>num>fields > int idZresultado ?
mys?l>num>fields./ devuelve el nBmero de campos de un identi(icador de resultado;
$er tam#i<nC mys?l>db>?uery./A mys?l>?uery./A mys?l>fetch>field./A mys?l>num>ro3s./;
E'emplo !. E'emplo de mys?l>num>fields./
<?php
$result > mysQl%Query3"&EOER* id,email S'?" people 7HE'E id > M1CM"9;
i# 3!$result9 :
echo MRould not run Query@ M . mysQl%error39;
exit;
;
/W returns C because id,email >>> t8o #ields W/
echo mysQl%num%#ields3$result9;
?>
Por razones de compati#ilidad puede usarse tam#i<n mys?l>numfields./; in em#argo esta (unci-n
es o#soleta;
mys?l>num>ro3s
>P&P 7A P&P 8 A P&P 4?
mys/lZnumZroEs 22 Devuelve el nBmero de (ilas de un resultado
Kescripci"n
int mys?l>num>ro3s > int idZresultado ?
mys?l>num>ro3s./ regresa el nBmero de (ilas en un resultado; +ste comando es valido solo para
las sentencias +L+5,; Para o#tener el nBmero de (ilas a(ectadas por las sentencias .N+R,A
@PDA,+ o D+L+,+A use mys?l>affected>ro3s./;
E'emplo !. E'emplo mys?l>num>ro3s
<?php
$linI > mysQl%connect3"localhost", "mysQl%user", "mysQl%pass8ord"9;
mysQl%select%db3"database", $linI9;
$result > mysQl%Query3"&EOER* W S'?" table6", $linI9;
$num%ro8s > mysQl%num%ro8s3$result9;
echo "$num%ro8s 'o8sVn";
?>
Nota- i usa mys?l>unbuffered>?uery./A mys?l>num>ro3s./ no regresar* el valor
correcto hasta /ue todas las (ilas en el resultado hayan sido recuperadas;
$er tam#i<nC mys?l>affected>ro3s./A mys?l>connect./A mys?l>data>seeB./A mys?l>select>db./A
mys?l>?uery./;
Por razones de compati#ilidad puede usarse tam#i<n mys?l>numro3s./; in em#argo esta (ucni-n
mys?l>pconnect
>P&P 7A P&P 8 A P&P 4?
mys/lZpconnect 22 A#re una coneFi-n persistente al servidor MyOL
Kescripci"n
int mys?l>pconnect > Pcadena hostname PA cadena usuario PA cadena passEordQQQ ?
DevuelveC un identi(icador de enlace persistenteA o FALSE si se produce un error;
mys?l>pconnect./ esta#lece una coneFi-n a un servidor MyOL; ,odos los argumentos son
opcionalesA y si no eFistenA se asumen los valores por de(ecto >HlocalhostHA nom#re del usuario
propietario del procesoA passEord vacia?;
+l hostname puede incluir un nBmero de puerto; e'; =hostnameCport= o un camino al soc"et e';
=CDcaminoDalDsoc"et= para el puerto para el host local;
Nota- oporte para =Cpuerto= (ue aWadido en 7;3B8;
oporte para =CDcaminoDalDsoc"et= (ue aWadido en 7;3;13;
mys?l>pconnect./ actua como mys?l>connect./ con dos di(erencias (undamentales;
PrimeroA durante la coneFi-nA la (unci-n intenta primero encontrar un enlace persistente a#ierto con
el mismo hostA usuario y passEord; i lo encuentraA devuelve el identi(icador de enlace en lugar de
a#rir otra coneFi-n;
egundoA la coneFi-n no ser* cerrada cuando aca#e la e'ecuci-n del script; +l enlace permanecer*
a#ierta para ser usado en el (uturo >mys?l>close./ no cierra el enlace esta#lecido con
mys?l>pconnect./?;
+l par*metro opcional cl6ent_9laEs est* disponi#le en P&P 8;7;3;
+ste tipo de enlaces son llamados HpersistentesH;
Nota- Note /ue ese tipo de enlaces solo (uncionan si est* usando un versi-n de P&P
como m-dulo; $ea la seccic{vwyn 5oneFiones Persistentes a #ase de datos para m*s
in(ormaci-n;
A5iso
@sando coneFiones persistentes puede re/uerir un poco de a'ustar sus con(iguraciones de Apache
y MyOL para asegurarse de /ue no eFcede el nBmero de coneFiones permitidas por MyOL;
mys?l>ping
>P&P 8 _^ 8;7;3A P&P 4?
mys/lZping 22 +(ectuar un che/ueo de respuesta >ping? so#re una coneFi-n de servidor o
reconectarse si no hay coneFi-n
Kescripci"n
#ool mys?l>ping > Presource idZenlaceQ ?
mys?l>ping./ che/uea si est* activa o no la coneFi-n con el servidor; i <sta se ha ca)doA una
reconeFi-n autom*tica es intentada; +sta (unci-n puede ser usada por scripts /ue permanecen
pasivos durante largos espacios de tiempoA para che/uear si el servidor ha cerrado la coneFi-nA y
reconectarse de ser necesario; mys?l>ping./ devuelve TRUE si la coneFi-n con el servidor est*
(uncionandoA o FALSE de lo contrario;
E'emplo !. )n e'emplo de mys?l>ping./
<?php
set%time%limit329;
$con > mysQl%connect3MlocalhostM, MmysQlusuarioM, Mmypass8ordM9;
$bd > mysQl%select%db3Mmi%bdM9;
/W ,sumiendo Que esta consulta toma mucho tiempo W/
$resultado > mysQl%Query3$sQl9;
i# 3!$resultado9 :
echo MOa consulta U6 #all&oacute;, saliendo.M;
exit;
;
/W ,seEurarse de Que la conexion siEue =i=a, si no, intentar una
reFconexion W/
i# 3!mysQl%pinE3$con99 :
echo M&e ha perdido la conexi&oacute;n, saliendo despu&eacute;s de la consulta U6M;
exit;
;
mysQl%#ree%result3$result9;
/W Pa Que la conexion siEue =i=a, corramos otra consulta W/
$resultadoC > mysQl%Query3$sQlC9;
?>
$ea tam#i<n mys?l>thread>id./ y mys?l>list>processes./;
mys?l>?uery
>P&P 7A P&P 8 A P&P 4?
mys/lZ/uery 22 +nv)a una consulta de MyOL
Kescripci"n
resource mys?l>?uery > string /uery PA resource identi(icadorZdeZenlaceQ ?
mys?l>?uery./ env)a una consulta >a la #ase de datos activa en el servidor asociado con el
6#ent696ca#or_#e_enlace dado?;
:ista de parmetros
@uer?
@na consulta OL
La consulta no de#e terminar con punto y coma;
6#ent696ca#or_#e_enlace
@n identi(icador de enlaceA como el regresado por mys?l>connect./;
i 6#ent696ca#or_#e_enlace no es espec)(icadoA se asume el Bltimo enlace a#ierto; i no se ha
a#ierto enlaceA la (unci-n intenta esta#lecer uno tal y como si se hu#iera llamado a
mys?l>connect./ sin argumentosA y lo usar*; +l resultado de la consulta es puesto en la
memoria intermedia >#u((er?;
Calores retornados
Para las sentencias +L+5,A &OLA D+5R.B+ o +JPLA.NA mys?l>?uery./ regresa un
resource en caso eFitosoA y FALSE en error;
Para otro tipo de sentencia OLA @PDA,+A D+L+,+A DROPA etcA mys?l>?uery./ regresa TRUE en
caso eFitoso y FALSE en error;
+l resultado o#tenido de#e ser pasado a mys?l>fetch>array./A y otras (unciones para el mane'o de
las ta#las del resultadoA para accesar los datos regresados;
@se mys?l>num>ro3s./ para encontrar cuantas (ilas (ueron regresadas para una sentencia +L+5,
o mys?l>affected>ro3s./ para encontrar cuantas (ilas (ueron a(ectadas por una sentencia D+L+,+A
.N+R,A R+PLA5+A o @PDA,+;
mys?l>?uery./ tam#i<n (allar* y regresar* FALSE si el usuario no tiene permiso de accesar la o las
ta#las re(erenciadas por la consulta;
E'emplos
E'emplo !. Consulta in5lida
La siguiente consulta es sint*cticamente inv*lida de tal manera /ue mys?l>?uery./ (alla y regresa
FALSE;
<?php
$result > mysQl%Query3M&EOER* W 7HE'E 6>6M9;
i# 3!$result9 :
die3M4n=alid Query@ M . mysQl%error399;
;
?>
E'emplo *. Consulta Clida
La siguiente consulta es v*lidaA as) /ue mys?l>?uery./ regresa un resource;
<?php
// *his could be supplied by a user, #or example
$#irstname > M#redM;
$lastname > M#oxM;
// Sormulate Nuery
// *his is the best 8ay to per#orm a &NO Query
// Sor more examples, see mysQl%real%escape%strinE39
$Query > sprint#3"&EOER* #irstname, lastname, address, aEe S'?" #riends 7HE'E #irstname>M\sM ,.L lastname>M\sM",
mysQl%real%escape%strinE3$#irstname9,
mysQl%real%escape%strinE3$lastname99;
// er#orm Nuery
$result > mysQl%Query3$Query9;
// RhecI result
// *his sho8s the actual Query sent to "y&NO, and the error. +se#ul #or debuEEinE.
i# 3!$result9 :
$messaEe > M4n=alid Query@ M . mysQl%error39 . "Vn";
$messaEe .> M7hole Query@ M . $Query;
die3$messaEe9;
;
// +se result
// ,ttemptinE to print $result 8onMt allo8 access to in#ormation in the resource
// ?ne o# the mysQl result #unctions must be used
// &ee also mysQl%result39, mysQl%#etch%array39, mysQl%#etch%ro839, etc.
8hile 3$ro8 > mysQl%#etch%assoc3$result99 :
echo $ro8)M#irstnameM/;
echo $ro8)MlastnameM/;
echo $ro8)MaddressM/;
echo $ro8)MaEeM/;
;
// Sree the resources associated 8ith the result set
// *his is done automatically at the end o# the script
mysQl%#ree%result3$result9;
?>
Cer tambi%n
mys?l>connect./
mys?l>error./
mys?l>real>escape>string./
mys?l>result./
mys?l>fetch>assoc./
mys?l>unbuffered>?uery./
mys?l>real>escape>string
>P&P 8 _^ 8;7;3A P&P 4?
mys/lZrealZescapeZstring 22 +scapa caracteres especiales de una cadena para su uso en una
sentencia OL
Kescripci"n
string mys?l>real>escape>string > string cadenaZnoZescapada PA resource idZenlaceQ ?
ca#ena_no_escapa#a
La cadena a escapar
6#_enlace >opcional?
+l recurso de coneFi-n mys/l
+sta (unci-n escapar* todos los caracteres especiales en la ca#ena_no_escapa#aA tomando en cuenta
el 'uego de caracteres actual de la coneFi-nA de tal modo /ue sea seguro usarla con mys?l>?uery./;
i desea insertar datos #inariosA de#e usar <sta (unci-n;
mys?l>real>escape>string./ llama a la (unci-n de la #i#lioteca MyOL mys/lZescapeZstringA la
cual coloca #arras invertidas antes de los siguientes caracteresC NU44A Q800A QnA QrA QA <A * y Q81a;
E'emplo !. E'emplo sencillo de mys?l>real>escape>string./
<?php
// Ronectarse
$enlace > mysQl%connect3MmysQl%hostM, MmysQl%usuarioM, MmysQl%contrasenyaM9
?' die3mysQl%error399;
// Ronsulta
$Query > sprint#3"&EOER* W S'?" usuarios 7HE'E usuario>M\sM ,.L
pass8ord>M\sM",
mysQl%real%escape%strinE3$usuario9,
mysQl%real%escape%strinE3$pass8ord99;
?>
+s necesario usar siempre >con algunas eFcepciones? esta (unci-n para asegurarse de /ue los datos
sean seguros antes de enviar una consulta a MyOL; i tiene ha#ilitada la directiva
magicZ/uotesZgpcA y est* tra#a'ando con datos /ue provienen del usuarioA de#e usar stripslashes./
primero so#re sus datos; i sus datos provienen de otras (uentes y tiene ha#ilitada la directiva
magicZ/uotesZruntimeA de#er* tam#i<n usar stripslashes./ con sus datos; De no ser as)A /uedar*
a#ierto a ata/ues de inyecci-n OL; &e a/u) un e'emploC
E'emplo *. )n e'emplo de un ata?ue de inyecci"n ,$:
<?php
// Ronsultar la base de datos para =eri#icar si hay una coincidencia de usuario
$consulta > "&EOER* W S'?" usuarios 7HE'E usuario>M:$%?&*)MusernameM/;M ,.L pass8ord>M:$%?&*)Mpass8ordM/;M";
mysQl%Query3$consulta9;
// .o re=isamos $%?&*)Mpass8ordM/, podria ser cualQuier cosa Que el usuario
// Quiera! or ejemplo@
$%?&*)MusernameM/ > MaidanM;
$%?&*)Mpass8ordM/ > "M ?' 6>6";
// Esto Quiere decir Que la consulta en=iada a "y&NO seria@
echo $consulta;
?>
La consulta enviada a MyOLC
&EOER* W S'?" usuarios 7HE'E usuario>MaidanM ,.L pass8ord>MM ?' 6>6
f+sto permitir)a /ue cual/uiera iniciara una sesi-n sin una contraseWa v*lidaa @sando mys?l>real>escape>string./
previene esto;
<?php
/WW
W ,plicar comillas sobre una =ariable para hacerla seEura
W/
#unction comillas%inteliEentes3$=alor9
:
// 'etirar las barras si es necesario
i# 3Eet%maEic%Quotes%Epc399 :
$=alor > stripslashes3$=alor9;
;
// Rolocar comillas si no es un entero
i# 3!is%int3$=alor99 :
$=alor > "M" . mysQl%real%escape%strinE3$=alor9 . "M";
;
return $=alor;
;
// Ronexion
$enlace > mysQl%connect3MmysQl%hostM, MmysQl%usuarioM, MmysQl%contrasenyaM9
?' die3mysQl%error399;
// 'eali0ar una consulta seEura
$consulta > sprint#3"&EOER* W S'?" usuarios 7HE'E usuario>\s ,.L pass8ord>\s",
comillas%inteliEentes3$%?&*)MusernameM/9,
comillas%inteliEentes3$%?&*)Mpass8ordM/99;
mysQl%Query3$consulta9;
?>
La consulta ser* e'ecutada correctamente ahoraA y los ata/ues de inyecci-n no dar*n resultado;
Nota- mys?l>real>escape>string./ no escapa T ni _; [stos son comodines en MyOL
si se com#ianan con 402EA -R,NTA o RE(O2E;
$ea tam#i<n mys?l>client>encoding./A addslashes./A stripslashes./A y las directivas
magicZ/uotesZgpc y magicZ/uotesZruntime;
mys?l>result
>P&P 7A P&P 8 A P&P 4?
mys/lZresult 22 Devuelve datos de un resultado
Kescripci"n
int mys?l>result > int idZresultadoA int numeroZdeZ(ila PA miFed campoQ ?
mys?l>result./ devuelve el contenido de una celda de un resultado MyOL; +l campo argumento
puede ser el nom#re del campo o el o((set o ta#la;nom#reZdelZcampo; i el nom#re de la columna
tiene un alias >Hselect (oo as #ar (rom;;;H?A utilice el alias en lugar del nom#re de la columna;
5uando se tra#a'a un un gran resultadoA de#e considerarse la utilizaci-n de una (unci-n /ue
devuelva una (ila entera ya /ue estas (unciones son M@5&O m*s r*pidas /ue mys?l>result./;
,am#i<nA especi(icando un o((set num<rico en lugar del nom#re del campoA la e'ecuci-n ser* m*s
r*pida;
Las llamadas a mys?l>result./ no de#en mezclarse con llamadas a las otras sentencias /ue tra#a'an
con un identi(icador de resultado;
E'emplo !. E'emplo mys?l>result
<?php
$linI > mysQl%connect3MlocalhostM, MmysQl%userM, MmysQl%pass8ordM9;
i# 3!$linI9 :
die3MRould not connect@ M . mysQl%error399;
;
$result > mysQl%Query3M&EOER* name S'?" 8orI.employeeM9;
i# 3!$result9 :
die3MRould not Query@M . mysQl%error399;
;
echo mysQl%result3$result, C9; // outputs third employeeMs name
mysQl%close3$linI9;
?>
Alternativas recomendadasC mys?l>fetch>ro3./A mys?l>fetch>array./A mys?l>fetch>assoc./A
mys?l>fetch>ob'ect./;
mys?l>select>db
>P&P 7A P&P 8 A P&P 4?
mys/lZselectZd# 22 elecciona un #ase de datos MyOL
Kescripci"n
int mys?l>select>db > cadena #aseZdeZdatos PA int identi(icadorZdeZenlaceQ ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
mys?l>select>db./ esta#lece la #ase activa /ue estar* asociada con el identi(icador de enlace
espec)(icado; i no se espec)(ica un identi(icador de enlaceA se asume el Bltimo enlace a#ierto; i no
hay ningBn enlace a#iertoA la (unci-n intentar* esta#lecer un enlace como si se llamara a
mys?l>connect./;
,oda llamada posterior a mys?l>?uery./ utilizar* la #ase activada;
E'emplo !. E'emplo mys?l>select>db
<?php
$linI > mysQl%connect3MlocalhostM, MmysQl%userM, MmysQl%pass8ordM9;
i# 3!$linI9 :
die3M.ot connected @ M . mysQl%error399;
;
// maIe #oo the current db
$db%selected > mysQl%select%db3M#ooM, $linI9;
i# 3!$db%selected9 :
die 3MRanVMt use #oo @ M . mysQl%error399;
;
?>
$er tam#i<nC mys?l>connect./A mys?l>pconnect./A mys?l>?uery./;
Por razones de compati#ilidad puede usarse tam#i<n mys?l>selectdb./; in em#argo esta (unci-n es
o#soleta;
mys?l>stat
>P&P 8 _^ 8;7;3A P&P 4?
mys/lZstat 22 O#tener el status actual del sistema
Kescripci"n
string mys?l>stat > Presource idZenlaceQ ?
mys?l>stat./ devuelve el status actual del servidor;
Nota- Por el momentoA mys?l>stat./ devuelve Bnicamente el status de uptimeA hilosA
consultasA ta#las a#iertasA ta#las de vaciado y consultas por segundo; Para una lista
completa de varia#les de statusA usted tendr* /ue usar el comando OL H&OL
,A,@H;
E'emplo !. E'emplo de mys?l>stat./
<?php
$enlace > mysQl%connect3MlocalhostM, "mysQl%user", "mysQl%pass8ord"9;
$status > explode3M M, mysQl%stat3$enlace99;
print%r3$status9;
?>
+l anterior e'emplo producir)a la siguiente salidaC
,rray
3
)2/ >> +ptime@ 5<J2
)6/ >> *hreads@ C
)C/ >> Nuestions@ 6<C6CKK
)</ >> &lo8 Queries@ 2
)1/ >> ?pens@ CG
)5/ >> Slush tables@ 6
)G/ >> ?pen tables@ 6H
)H/ >> Nueries per second a=E@ C15.5K5
9
$ea tam#i<n mys?l>get>ser5er>info./ y mys?l>list>processes./;
mys?l>tablename
>P&P 7A P&P 8 A P&P 4?
mys/lZta#lename 22 Devuelve el nom#re de la ta#la de un campo
Kescripci"n
cadena mys?l>tablename > int idZresultadoA int i ?
mys?l>tablename./ toma un puntero de resultado devuelto por mys?l>list>tables./ as) como un
)ndice >integer? y devuelve el nom#re de una ta#la; e puede usar la (unci-n mys?l>num>ro3s./
para determinar el nBmero de ta#las en el puntero de resultado; @se la (unci-n mys?l>tablename./
para usar este apuntador de resultadoA o cual/uier (unci-n para las ta#las resultantes como
mys?l>fetch>array./;
E'emplo !. E'emplo mys?l>tablename
<?php
mysQl%connect3"localhost", "mysQl%user", "mysQl%pass8ord"9;
$result > mysQl%list%tables3"mydb"9;
$num%ro8s > mysQl%num%ro8s3$result9;
#or 3$i > 2; $i < $num%ro8s; $i[[9 :
echo "*able@ ", mysQl%tablename3$result, $i9, "Vn";
;
mysQl%#ree%result3$result9;
?>
$ea tam#i<n mys?l>list>tables./A mys?l>field>table./A mys?l>db>name./;
mys?l>thread>id
>P&P 8 _^ 8;7;3A P&P 4?
mys/lZthreadZid 22 Devuelve el .D del hilo actual
Kescripci"n
int mys?l>thread>id > Presource idZenlaceQ ?
mys?l>thread>id./ devuelve el .D del hilo actual; i la coneFi-n se ha perdido y se reconecta
mediante mys?l>ping./A el .D del hilo cam#iar*; +sto /uiere decir /ue usted no de#er)a o#tener el
.D del hilo actual y almacenarlo para despu<s; +s me'or o#tenerlo cuando lo necesita;
E'emplo !. E'emplo de mys?l>thread>id./
<?php
$enlace > mysQl%connect3MlocalhostM, MmysQl%userM, MmysQl%pass8ordM9;
$id%hilo > mysQl%thread%id3$enlace9;
i# 3$id%hilo9:
print#3"El 4L del hilo actual es \dVn", $id%hilo9;
;
?>
+l anterior e'emplo producir)a la siguiente salidaC
El 4L del hilo actual es H<
$ea tam#i<n mys?l>ping./ y mys?l>list>processes./;
mys?l>unbuffered>?uery
>P&P 8 _^ 8;3;KA P&P 4?
mys/lZun#u((eredZ/uery 22 +nv)a una consulta OL a MyOLA sin recuperar ni colocar en #B(er las
(ilas de resultado
Kescripci"n
resource mys?l>unbuffered>?uery > string consulta PA resource idZenlaceQ ?
mys?l>unbuffered>?uery./ env)a la consulta OL a MyOLA sin recuperar ni colocar en #B(er las
(ilas de resultado autom*ticamenteA como mys?l>?uery./ lo hace; Por una parteA esto ahorra una
considera#le cantidad de memoria con las consultas OL /ue producen con'untos grandes de
resultados; Por otra parteA usted puede empezar a tra#a'ar con el con'unto de resultado
inmediatamente despu<s de /ue la primera (ila ha sido recuperadaC no necesita esperar hasta /ue la
consulta OL completa haya sido e'ecutada; 5uando se usan mBltiples coneFiones con la BDA
necesita indicar el par*metro opcional 6#_enlace;
Nota- Los #ene(icios de mys?l>unbuffered>?uery./ vienen por un precioC No puede
usar mys?l>num>ro3s./ ni mys?l>data>seeB./ en un con'unto de resultados devuelto
por mys?l>unbuffered>?uery./; ,am#i<n tendr* /ue recuperar todas las (ilas de
resultado de una consulta OL sin #B(erA antes de poder enviar una nueva consulta OL
a MyOL;
$ea tam#i<n mys?l>?uery./;
:III. E+tensi"n me'orada de My,$:
Introducci"n
La eFtensi-n mys/li permite acceder a la (uncionalidad proveida por MyOL 8;1 y superior; M*s
in(ormaci-n acerca del servidor de #ase de datos MyOL puede ser encontrada en
httpCDDEEE;mys/l;comD
La documentaci-n para MyOL puede ser encontrada en httpCDDdev;mys/l;comDdocD;
Partes de esta documentaci-n ha sido incluida del manual de MyOL con permiso de MyOL AB;
Me?uirimientos
Para tener estas (unciones disponi#lesA usted de#e compilar P&P con soporte para la eFtensi-n
MyOL.;
Nota- La eFtensi-n mys/li est* diseWada para tra#a'ar con la versi-n 8;1;7 o superior de
MyOL; Para versiones previasA por (avor vea documentaci-n de la eFtensi-n MyOL;
Instalaci"n
Para instalar la eFtensi-n de mys/li para P&PA use la opci-n de con(iguraci-n ==76th=
m?s@l6:m?s@l_con96E_path/m?s@l_con96E donde m?s@l_con96E_path representa la u#icaci-n del
programa m?s@l_con96E /ue viene con MyOL en versiones superiores a 8;1;
i /uiere instalar la eFtensi-n de mys/l 'unto con la eFtensi-n mys/liA usted tiene /ue usar la
mismas li#rerias clienteA para evitar cual/uier con(licto;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones de configuraci"n de My,$:i
Nombre Kefault Cambiable
mys/li;maFZlin"s =21= P&PZ.N.Z%,+M
mys/li;de(aultZport N@LL P&PZ.N.ZALL
mys/li;de(aultZsoc"e
t
N@LL P&PZ.N.ZALL
mys/li;de(aultZhost N@LL P&PZ.N.ZALL
mys/li;de(aultZuser N@LL P&PZ.N.ZALL
mys/li;de(aultZpE N@LL P&PZ.N.ZALL
Para m*s detalles y de(iniciones de las constantes P&PZ.N.ZV anterioresA vea el cap)tulo so#re
5am#ios de con(iguraci-n;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
m?s@l6.ma8_l6n>s integer
+l nBmero m*Fimo de coneFiones MyOL por proceso;
m?s@l6.#e9ault_port string
+l puerto ,5P por de(ecto a usar cuando se conecte al servidor de #ase de datos si no se ha
espec)(icado otro puerto; i no se de(ine el de(aultA el puerto ser* tomado de la varia#le de
am#iente MBS54_TC+_+ORTA la entrada m?s@l=tcp en el archivo /etc/ser=ices o la
constante en tiempo de e'ecuci-n MBS54_+ORT en ese orden; Lin70 usar* solo la constante
MBS54_+ORT;
m?s@l6.#e9ault_soc>et string
+l nom#re de soc"et por de(ecto a usar cuando se conecte a un servidor de #ase de datos local
si no se ha espec)(icado otro nom#re de soc"et;
m?s@l6.#e9ault_host string
+l servidor hu<sped por de(ecto a usar cuando se conecta al servidor de #ase de datos si no se
ha espec)(icado otro; No aplica en modo seguro;
m?s@l6.#e9ault_user string
+l nom#re de usuario por de(ecto a usar cuando se conecta al servidor de #ase de datos si no
se espec)(ica otro nom#re; No aplica en modo seguro;
m?s@l6.#e9ault_p7 string
La contraseWa a usar cuando se conecta al servidor de #ase de datos si no se espec)(ica otra
contraseWa; No aplica en modo seguro;
Clases predefinidas
mys?li
Representa una coneFi-n entres P&P y la #ase de datos MyOL;
Constructor
mys/li 2 constructor de un nuevo o#'eto mys/li
M%todos
autocommit 2 cam#ia en on o o(( las modi(icaciones de auto2commiting en la #ase de datos
changeZuser 2 cam#ia el usuario del identi(icador de enlace espec)(icado
characterZsetZname 2 regresa el con'unto de caracteres del identi(icador de enlace
espec)(icado
close 2 cierra una coneFi-n previamente a#ierta
commit 2 completa la transacci- actual
connect 2 a#re una nueva coneFi-n al servidor de MyOL
de#ug 2 realiza operaciones de rastreo
dumpZde#ugZin(o 2 vac)a in(ormaci- de rastreo
getZclientZin(o 2 regresa la versi-n del cliente
getZhostZin(o 2 regresa el tipo de coneFi-n usada
getZserverZin(o 2 regresa la versi-n del servidor MyOL
getZserverZversion 2 regresa la versi-n del servidor MyOL
init 2 inicializa el o#'eto mys/li
in(o 2 o#tiene in(ormaci-n acerca de la consulta m*s recientemente e'ecutada
"ill 2 solicita al servidor destruir un thread de mys/l
multiZ/uery 2 realiza consultas de OL mBltiples
moreZresults 2 checa si eFisten mas resultados de la consulta mBltiple actualmente e'ecutada
neFtZresult 2 lee el siguiente resultado de la consulta mBltiple actualmente e'ecutada
options 2 (i'a opciones
ping 2 llama una coneFi-n con el servidor o reconecta si no hay coneFi-n
prepare 2 prepara una sentencia OL
/uery 2 e'ecuta una sentencia OL
realZconnect 2 intenta a#rir una coneFi-n al servidor de #ase de datos MyOL
escapeZstring 2 caracteres especiales de escape para ser usados en una sentencia OLA
tomando en cuenta el con'unto de caracteres actual de la coneFi-n
roll#ac" 2 deshace la transacci-n actual
selectZd# 2 selecciona la #ase de datos por de(ecto
sslZset 2 (i'a los par*metros L
stat 2 o#tiene el estado actual del sistema
stmtZinit 2 inicializa una sentencia para ser usada con mys/liZstmtZprepare
storeZresult 2 trans(iere un resultado de la Bltima consulta
useZresult 2 trans(iere un resultado sin almacenamiento intermedio de la Bltima consulta
threadZsa(e 2 regresa si se ha dado threadZsa(ety o no
Propiedades
a((ectedZroEs 2 o#tiene el nBmero de (ilas a(ectadas en la operaci-n MyOL previa
clientZin(o 2 regresa en una cadena la versi-n del cliente de MyOL
clientZversion 2 regresa en un entero la versi-n del cliente de MyOL
errno 2 regresa el c-digo de error para la llamada a (unci-n m*s reciente
error 2 regresa la cadena de error para la llamada a (unci-n m*s reciente
(ieldZcount 2 regresa el nBmero de columnas para la consulta m*s reciente
hostZin(o 2 regresa la cadena representando el tipo de coneFi-n usado
in(o 2 regresa in(ormaci-n acerca de la consulta e'ecutada m*s recientemente
insertZid 2 regresa el identi(icador generado autom*ticamente usado en la Bltima consulta
protocolZversion 2 regresa la versi-n del protocolo usado por MyOL
s/lstate 2 regresa una cadena /ue contiene el c-digo de error OL,A,+ para el Bltimo
error
threadZid 2 regresa el identi(icador del ,&R+AD para la coneFi-n actual
EarningZcount 2 regresa el nBmero de alertas generadas durante la e'ecuci-n del enunciado
OL previo
mys?li>stmt
Representa una sentencia preparada;
M%todos
#indZparam 2 enlaza varia#les a una sentencia preparada
#indZresult 2 enlaza varia#les a una sentencia preparada para el almacenamiento del
resultado
close 2 cierra la sentencia preparada
dataZsee" 2 #usca a una (ila ar#itrariamente en el resultado
eFecute 2 e'ecuta una sentencia preparada
(etch 2 o#tiene el resultado de la sentencia preparada en varia#les l)mite
(reeZresult 2 li#era la memoria del resultado almacenado para el mane'ador de la sentencia
dada
resultZmetadata 2 o#tiene un resultado de la sentencia preparada para in(ormaci-n de
metadatos
prepare 2 prepara una consulta OL
sendZlongZdata 2 env)a datos en partes
reset 2 resetea una sentencia preparada
storeZresult 2 almacena el resultado completo de la sentencia preparada
Propiedades
a((ectedZroEs 2 regresa las (ilas a(ectadas de la Bltima sentencia e'ecutdada
errno 2 regresa el c-digo de error para la llamada a (unci-n m*s reciente
errno 2 regresa el mensa'e de error para la llamada a (unci-n m*s reciente
paramZcount 2 regresa el numero de par*metros para la sentencia preparada dada
s/lstate 2 regresa una cadena conteniendo el c-digo de error OL,A,+ para la llamada a
(unci-n m*s reciente
mys?li>result
Representa el resultado o#tenido de la consulta hecha en la #ase de datos;
M%todos
close 2 cierra el resultado
dataZsee" 2 mueve el puntero interno del resultado
(etchZ(ield 2 o#tiene la in(ormaci-n de la columna en el resultado
(etchZ(ields 2 o#tiene la in(ormaci-n para todas las columnas del resultado
(etchZ(ieldZdirect 2 o#tiene in(ormaci-n de la columna para la columna dada
(etchZarray 2 recupera una (ila como una matriz asociativaA una matriz num<ricaA o am#os;
(etchZassoc 2 o#tiene una (u"a como una matriz asociativa
(etchZo#'ect 2 o#tiene una (ila como un o#'eto
(etchZroE 2 o#tiene una (ila como una matriz enumerada
close 2 li#era la memoria ocupada por el resultado
(ieldZsee" 2 (i'a el apuntador del resultado a la posici-n espec)(icada
Propiedades
currentZ(ield 2 regresa la posici-n de puntero actual
(ieldZcount 2 regresa el nBmero de campos en el resultado
lengths 2 regresa una matriz con la longitud de los campos
numZroEs 2 regresa el nBmero de (ilas en el resultado
Constantes predefinidas
Tabla *. Constantes My,$:i
Nombre Kescripci"n
MYS.LI_READ_DEFAU
LT_#ROUP >integer?
Lee las opciones del grupo llamado de mmy;cn(H o la (ila especi(icada
con MBS540_RE,D_DE3,U4T_304E
MYS.LI_READ_DEFAU
LT_FILE >integer?
Lee las opciones del archivo espec)(icado en vez de m?.cn9
MYS.LI_OPT_CONNEC
T_TIMEOUT >integer?
,iempo de espera para la coneFi-n en segundos
MYS.LI_OPT_LOCAL_
INFILE >integer?
&a#ilita el comando 4O,D 4OC,4 0N304E
MYS.LI_INIT_COMMA
ND >integer?
5omando a e'ecutar cuando se conecta al servidor MyOL; er*
autom*ticamente re2e'ecutado cuando se vuelva a conectar;
MYS.LI_CLIENT_SSL
>integer?
@sa L >protocolo de encripci-n?; +sta opci-n no de#e ser (i'ado por
programas de apliaci-nX esta es (i'ada internamente en la li#reria
cliente de MyOL
MYS.LI_CLIENT_COM
PRESS >integer?
@sa el protocolo de compresi-n
MYS.LI_CLIENT_INT
ERACTI$E >integer?
Permite tiempo de espera interactivo en segundos >en vez de esperar
ciertos segundos? de inactividad antes de cerrar la coneFi-n; La
varia#le EaitZtimeout de sesi-n del cliente ser* (i'ada a el valor de la
varia#le de sesi-n interactiveZtimeout;
MYS.LI_CLIENT_I#N
ORE_SPACE >integer?
Permite espacios despu<s de los nom#res de las (unciones; +sto hace a
todas las (unciones pala#ras reservadas;
MYS.LI_CLIENT_NO_
SCHEMA >integer?
No permite la sintaFis d#Zname;t#lZname;colZname syntaF;
MYS.LI_CLIENT_MUL
TI_.UERIES >integer?

MYS.LI_STORE_RESU
LT >integer?
Para usar resultados con almacenamiento intermedio
MYS.LI_USE_RESULT
>integer?
Para usar resultados sin almacenamiento intermedio
MYS.LI_ASSOC
>integer?
Las columnas son regresadas en una matriz /ue tiene el nom#re del
campo como )ndice de la matriz;
MYS.LI_NUM >integer?
Las columnas son regresadas en una matriz teniendo un )ndice
enumerado;
MYS.LI_(OTH >integer?
Las clumnas son regresadas en una matriz teniendo am#as (ormas de
)ndice num<rico y con el nom#re del campo como )ndice asociativo;
MYS.LI_NOT_NULL_F
LA# >integer?
.ndica /ue un campo es de(inido como NOT NU44
MYS.LI_PRI_&EY_FL
A# >integer?
+l campo es parte de un )ndice primario
MYS.LI_UNI.UE_&EY
_FLA# >integer?
+l campo es parte de un )ndice Bnico
MYS.LI_MULTIPLE_&
EY_FLA# >integer?
+l campo es parte de un )ndice;
Nombre Kescripci"n
MYS.LI_(LO(_FLA#
>integer?
+l campo est* de(inido como A4OA
MYS.LI_UNSI#NED_F
LA# >integer?
+l campo est* de(inido como UNS0-NED
MYS.LI_/EROFILL_F
LA# >integer?
+l campo est* de(inido como ^ERO3044
MYS.LI_AUTO_INCRE
MENT_FLA# >integer?
+l campo est* de(inido como ,UTO_0NCREMENT
MYS.LI_TIMESTAMP_
FLA# >integer?
+l campo est* de(inido como T0MEST,M+
MYS.LI_SET_FLA#
>integer?
+l campo est* de(inido como SET
MYS.LI_NUM_FLA#
>integer?
+l campo est* de(inido como NUMER0C
MYS.LI_PART_&EY_F
LA# >integer?
+l campo es parte de un )ndice multiple
MYS.LI_#ROUP_FLA#
>integer?
+l campo es parte de -ROU+ AB
MYS.LI_TYPE_DECIM
AL >integer?
+l campo est* de(inido como DEC0M,4
MYS.LI_TYPE_TINY
>integer?
+l campo est* de(inido como T0NB0NT
MYS.LI_TYPE_SHORT
>integer?
+l campo est* de(inido como 0NT
MYS.LI_TYPE_LON#
>integer?
+l campo est* de(inido como 0NT
MYS.LI_TYPE_FLOAT
>integer?
+l campo est* de(inido como 34O,T
MYS.LI_TYPE_DOU(L
E >integer?
+l campo est* de(inido como DOUA4E
MYS.LI_TYPE_NULL
>integer?
+l campo est* de(inido como DE3,U4T NU44
MYS.LI_TYPE_TIMES
TAMP >integer?
+l campo est* de(inido como T0MEST,M+
MYS.LI_TYPE_LON#L
ON# >integer?
+l campo est* de(inido como A0-0NT
MYS.LI_TYPE_INT*+
>integer?
+l campo est* de(inido como MED0UM0NT
MYS.LI_TYPE_DATE
>integer?
+l campo est* de(inido como D,TE
MYS.LI_TYPE_TIME
>integer?
+l campo est* de(inido como T0ME
Nombre Kescripci"n
MYS.LI_TYPE_DATET
IME >integer?
+l campo est* de(inido como D,TET0ME
MYS.LI_TYPE_YEAR
>integer?
+l campo est* de(inido como BE,R
MYS.LI_TYPE_NE"DA
TE >integer?
+l campo est* de(inido como D,TE
MYS.LI_TYPE_ENUM
>integer?
+l campo est* de(inido como ENUM
MYS.LI_TYPE_SET
>integer?
+l campo est* de(inido como SET
MYS.LI_TYPE_TINY_
(LO( >integer?
+l campo est* de(inido como T0NBA4OA
MYS.LI_TYPE_MEDIU
M_(LO( >integer?
+l campo est* de(inido como MED0UMA4OA
MYS.LI_TYPE_LON#_
(LO( >integer?
+l campo est* de(inido como 4ON-A4OA
MYS.LI_TYPE_(LO(
>integer?
+l campo est* de(inido como A4OA
MYS.LI_TYPE_$AR_S
TRIN# >integer?
+l campo est* de(inido como (,RC!,R
MYS.LI_TYPE_STRIN
# >integer?
+l campo est* de(inido como C!,R
MYS.LI_TYPE_#EOME
TRY >integer?
+l campo est* de(inido como -EOMETRB
MYS.LI_NEED_DATA
>integer?
O#tiene m*s in(ormaci-n para vari#les enlazadas >#ind?
MYS.LI_NO_DATA
>integer?
No o#tiene m*s in(ormaci-n para varia#les enlazadas >#ind?
E'emplos
,odos los e'emplos en la documentaci-n MyOL. usan la #ase de datos de MyOL AB; Puede ser
encontrada en httpCDDdev;mys/l;comDgetDDoEnloadsDManualDEorld;s/l;gzD(romDpic"
Tabla de contenidos
mys/liZa((ectedZroEs 22 O#tiene el nBmero de (ilas a(ectadas en una operaci-n de MyOL previa
mys/liZautocommit 22 Activa o desactiva la modi(icaci-n de auto2entrega de la #ase de datos
mys/liZ#indZparam 22 Alias para mys?li>stmt>bind>param./
mys/liZ#indZresult 22 Alias para mys?li>stmt>bind>result./
mys/liZchangeZuser 22 5am#ia el usuario de la coneFi-n a la #ase de datos especi(icada
mys/liZcharacterZsetZname 22 Regresa el con'unto de caracteres determinados por de(ault para la
coneFi-n de #ase de datos
mys/liZclientZencoding 22 Alias de mys?li>character>set>name./
mys/liZclose 22 5ierra la coneFi-n de #ase de datos previamente a#ierta
mys/liZcommit 22 5ompleta la transacci-n actual
mys/liZconnectZerrno 22 Regresa el c-digo de error de la Bltima llamada a la coneFi-n
mys/liZconnectZerror 22 Regresa una descripci-n del Bltimo error de la coneFi-n
mys/liZconnect 22 A#re una nueva coneFi-n al servidor MyOL
mys/liZdataZsee" 22 A'usta el apuntador ar#itrariamente a una (ila en el resultado
mys/liZde#ug 22 Realiza operaciones de rastreo de errores
mys/liZdisa#leZreadsZ(romZmaster 22 Desha#ilita lectura del ervidor maestro
mys/liZdisa#leZrplZparse 22 Desha#ilita el analizador RPL
mys/liZdumpZde#ugZin(o 22 $ac)a in(ormaci-n de rastreo de errores en el log
mys/liZem#eddedZconnect 22 A#re una coneFi- a un servidor MyOL em#e#ido
mys/liZena#leZreadsZ(romZmaster 22 &a#ilita la lectura del servidor Maestro
mys/liZena#leZrplZparse 22 &a#ilita el analizador RPL
mys/liZerrno 22 Regresa el c-digo de error para la (unci-n m*s recientemente llamada
mys/liZerror 22 Regresa una cadena con la descripci- del Bltimo error
mys/liZescapeZstring 22 Alias de mys?li>real>escape>string./
mys/liZeFecute 22 Alias de mys?li>stmt>e+ecute./
mys/liZ(etchZarray 22 O#tiene una (ila como una matriz asociativaA una matriz num<rica o am#os
mys/liZ(etchZassoc 22 O#tiene una (ila del resultado como una matriz asociativa
mys/liZ(etchZ(ieldZdirect 22 O#tiene los metadatos de un campo
mys/liZ(etchZ(ield 22 Regresa metadatos de el campo en el resultado
mys/liZ(etchZ(ields 22 Regresa una matriz de o#'etos representando los campos en un resultado
mys/liZ(etchZlengths 22 Regresa la longitud de las columnas de la (ila actual en el resultado
mys/liZ(etchZo#'ect 22 Regresa la (ila actual del resultado como un o#'eto
mys/liZ(etchZroE 22 O#tiene una (ila del resultado como una matriz enumerada
mys/liZ(etch 22 Alias de mys?li>stmt>fetch./
mys/liZ(ieldZcount 22 Regresa el nBmero de columnas para la consulta m*s reciente
mys/liZ(ieldZsee" 22 Fi'a el apuntador del resultado a una posicion espec)(ica
mys/liZ(ieldZtell 22 O#tiene la posici-n de desplazamiento del apuntador de un resultado
mys/liZ(reeZresult 22 Li#era la memoria asociada con el resultado
mys/liZgetZclientZin(o 22 Regresa en una cadena la versi-n del cliente de MyOL
mys/liZgetZclientZversion 22 O#tiene in(ormaci-n del cliente MyOL
mys/liZgetZhostZin(o 22 Regresa una cadena /ue representa el tipo de coneFi-n usada
mys/liZgetZmetadata 22 Alias para mys?li>stmt>result>metadata./
mys/liZgetZprotoZin(o 22 Regresa la versi-n del protocolo de MyOL usado
mys/liZgetZserverZin(o 22 Regresa la version del servidor de MyOL
mys/liZgetZserverZversion 22 Regresa la versi-n del servidor MyOL como un entero
mys/liZin(o 22 O#tiene in(ormaci-n acerca de la consulta m*s recientemente e'ecutada
mys/liZinit 22 .nicializa MyOLi y regresa un o#'eto para ser usado con mys/liZreaZconnect
mys/liZinsertZid 22 Regresa el .D generado autom*ticamente en la Bltima consulta
mys/liZ"ill 22 Le pide al servidor =matar= el proceso MyOL
mys/liZmasterZ/uery 22 &ace cumplir la e'ecuci-n de una consulta en el servidor en una
con(iguraci-n clienteDservidor
mys/liZmoreZresults 22 5heca si hay m* resultados de consultas de una consulta mBltiple
mys/liZmultiZ/uery 22 +'ecuta una consulta en la #ase de datos
mys/liZneFtZresult 22 Prepara el siguiente resultado de una consulta mBltiple
mys/liZnumZ(ields 22 O#tiene el nBmero de campos en un resultado Get the num#er o( (ields in a
result
mys/liZnumZroEs 22 O#tiene el nBmero de (ilas en un resultado
mys/liZoptions 22 Fi'a opciones
mys/liZparamZcount 22 Alias para mys?li>stmt>param>count./
mys/liZping 22 Revisa una coneFi-n al servidor o intenta reconectar si la coneFi-n se ha perdido
mys/liZprepare 22 Prepara una sentencia OL para su e'ecuci-n
mys/liZ/uery 22 +'ecuta una consulta en la #ase de datos
mys/liZrealZconnect 22 A#re una coneFi-n a un servidor de MyOL
mys/liZrealZescapeZstring 22 Protege caracteres especiales en una cadena para ser usada en una
sentencia OLA tomando en cuenta el con'unto de caracteres para la coneFi-n
mys/liZrealZ/uery 22 +'ecuta una consulta OL
mys/liZreport 22 &a#ilita o desha#ilita las (unciones internas de reporte
mys/liZroll#ac" 22 RegresaDdeshace la transacci-n actual
mys/liZrplZparseZena#led 22 Revisa si el analizador RPL est* ha#ilitado
mys/liZrplZpro#e 22 Prue#a RPL
mys/liZrplZ/ueryZtype 22 Regresa el tipo de consulta RPL
mys/liZselectZd# 22 elecciona la #ase de datos por de(ecto para las consultas de la #ase de datos
mys/liZsendZlongZdata 22 Alias para mys?li>stmt>send>long>data./
mys/liZsendZ/uery 22 +nv)a la consulta y regresa
mys/liZserverZend 22 ,ermina el proceso del ervidor
mys/liZserverZinit 22 .nicializa un servidor em#e#ido
mys/liZsetZopt 22 Alias de mys?li>options./
mys/liZs/lstate 22 Regresa el error OL,A,+ de la operaci-n MyOL previa
mys/liZsslZset 22 @sado para esta#lecer coneFiones seguras usando L
mys/liZstat 22 O#tiene el estado actual del sistema
mys/liZstmtZa((ectedZroEs 22 Regresa el nBmero total de (ilas cam#iadasA #orradas o insertadas por
la Bltima sentencia e'ecutada
mys/liZstmtZ#indZparam 22 +nlaza varia#les como par*metros a una sentencia preparada
mys/liZstmtZ#indZresult 22 +nlaza varia#les a una sentencia preparada para el almacenamiento del
resultado
mys/liZstmtZclose 22 5ierra la sentencia preparada
mys/liZstmtZdataZsee" 22 Busca una (ila ar#itrariamente en el resultado
mys/liZstmtZerrno 22 Regresa el c-digo de error para la llamada m*s reciente
mys/liZstmtZerror 22 Regresa una descipci-n para el Bltimo error
mys/liZstmtZeFecute 22 +'ecuta una consulta preparada
mys/liZstmtZ(etch 22 O#tiene el resultado de una sentencia OL preparada en las varia#les
enlazadas
mys/liZstmtZ(reeZresult 22 Li#era la memoria donde se almacen- el resultado
mys/liZstmtZinit 22 .nicializa una sentencia y regresa un o#'eto para ser usado con
mys/liZstmtZprepare
mys/liZstmtZnumZroEs 22 Regresa el nBmero de (ilas en un resultado de la sentencia
mys/liZstmtZparamZcount 22 Regresa el nBmero de par*metros para la sentencia dada
mys/liZstmtZprepare 22 Prepara una sentencia OL para su e'ecuci-n
mys/liZstmtZreset 22 Resetea una sentencia preparada
mys/liZstmtZresultZmetadata 22 Regresa metadatos del resultado de una sentencia preparada
mys/liZstmtZsendZlongZdata 22 +nv)a los datos en #lo/ues
mys/liZstmtZs/lstate 22 Regresa el error OL,A,+ de la operaci-n con sentencias previa
mys/liZstmtZstoreZresult 22 ,rans(iere un resultado de una sentencia preparada
mys/liZstoreZresult 22 ,rans(iere un resultado de la Bltima consulta
mys/liZthreadZid 22 Regresa el identi(icador del ,&R+AD para la coneFi-n actual
mys/liZthreadZsa(e 22 Regresa si se ha dado un ,&R+AD seguro o no Returns Ehether thread sa(ety
is given or not
mys/liZuseZresult 22 .nicia una recuperaci-n de un resultado
mys/liZEarningZcount 22 Regresa el nBmero de alertas de la Bltima consulta para el identi(icador de
enlace dado
mys?li>affected>ro3s
>P&P 4?
mys/liZa((ectedZroEs
>no version in(ormationA might #e only in 5$?
mys/li2_a((ectedZroEs 22 O#tiene el nBmero de (ilas a(ectadas en una operaci-n de MyOL previa
Kescripci"n
+stilo por procedimientosC
miFto mys?li>affected>ro3s > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >caracter)stica?C
class mys?li \
miFto a((ectedZroEs
]
mys?li>affected>ro3s./ Regresa el nBmero de (ilas a(ectadas por la Bltima consulta .N+R,A
@PDA,+A o D+L+,+ asociada con el 6#ent696ca#or_#e_enlace dado; i la Bltima consulta (ue
invalidaA esta (unci-n regresar* 21;
Nota- Para sentencias +L+5, mys?li>affected>ro3s./ tra#a'a igual a
mys?li>num>ro3s./;
La (unci-n mys?li>affected>ro3s./ s-lo tra#a'a con consultas /ue modi(ican o a(ectan una ta#la;
+n caso de /ue necesite el nBmero de (ilas de una consulta +L+5,A use la (unci-n
mys?li>num>ro3s./ en su lugar;
Calores retornados
@n entero mayor a cero indica el nBmero de (ilas a(ectadas u o#tenidas; 5ero indica /ue no se
actualizaron registros para una sentencia @PDA,+A no hu#o coincidencias con la clausula L&+R+
en la consulta o /ue no se ha e'ecutado aBn ninguna consulta; 21 indica /ue la consulta regreso un
error;
Nota- i el nBmero de (ilas a(ectadas es mayor /ue el valor entero m*FimoA entonces el
nBmero de (ilas a(ectadas ser* regresado como una cadena;
Cer tambi%n
mys?li>num>ro3s./A y mys?li>info./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W 4nsert ro8s W/
$mysQliF>Query3"R'E,*E *,ZOE OanEuaEe &EOER* W #rom RountryOanEuaEe"9;
print#3",##ected ro8s 34.&E'*9@ \dVn", $mysQliF>a##ected%ro8s9;
$mysQliF>Query3",O*E' *,ZOE OanEuaEe ,LL &tatus int de#ault 2"9;
/W update ro8s W/
$mysQliF>Query3"+L,*E OanEuaEe &E* &tatus>6 7HE'E ercentaEe > 52"9;
print#3",##ected ro8s 3+L,*E9@ \dVn", $mysQliF>a##ected%ro8s9;
/W delete ro8s W/
$mysQliF>Query3"LEOE*E S'?" OanEuaEe 7HE'E ercentaEe < 52"9;
print#3",##ected ro8s 3LEOE*E9@ \dVn", $mysQliF>a##ected%ro8s9;
/W select all ro8s W/
$result > $mysQliF>Query3"&EOER* RountryRode S'?" OanEuaEe"9;
print#3",##ected ro8s 3&EOER*9@ \dVn", $mysQliF>a##ected%ro8s9;
$resultF>close39;
/W Lelete table OanEuaEe W/
$mysQliF>Query3"L'? *,ZOE OanEuaEe"9;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
i# 3!$linI9 :
print#3"RanMt connect to localhost. Error@ \sVn", mysQli%connect%error399;
exit39;
;
/W 4nsert ro8s W/
mysQli%Query3$linI, "R'E,*E *,ZOE OanEuaEe &EOER* W #rom RountryOanEuaEe"9;
print#3",##ected ro8s 34.&E'*9@ \dVn", mysQli%a##ected%ro8s3$linI99;
mysQli%Query3$linI, ",O*E' *,ZOE OanEuaEe ,LL &tatus int de#ault 2"9;
/W update ro8s W/
mysQli%Query3$linI, "+L,*E OanEuaEe &E* &tatus>6 7HE'E ercentaEe > 52"9;
print#3",##ected ro8s 3+L,*E9@ \dVn", mysQli%a##ected%ro8s3$linI99;
/W delete ro8s W/
mysQli%Query3$linI, "LEOE*E S'?" OanEuaEe 7HE'E ercentaEe < 52"9;
print#3",##ected ro8s 3LEOE*E9@ \dVn", mysQli%a##ected%ro8s3$linI99;
/W select all ro8s W/
$result > mysQli%Query3$linI, "&EOER* RountryRode S'?" OanEuaEe"9;
print#3",##ected ro8s 3&EOER*9@ \dVn", mysQli%a##ected%ro8s3$linI99;
mysQli%#ree%result3$result9;
/W Lelete table OanEuaEe W/
mysQli%Query3$linI, "L'? *,ZOE OanEuaEe"9;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
,##ected ro8s 34.&E'*9@ KJ1
,##ected ro8s 3+L,*E9@ 6GJ
,##ected ro8s 3LEOE*E9@ J65
,##ected ro8s 3&EOER*9@ 6GK
mys?li>autocommit
>P&P 4?
mys/liZautocommit
>no version in(ormationA might #e only in 5$?
mys/li2_autocommit 22 Activa o desactiva la modi(icaci-n de auto2entrega de la #ase de datos
Kescripci"n
+stilo por procedimientosC
#ool mys?li>autocommit > mys/li identi(icadorZdeZenlaceA #ool modo ?
+stilo orientado a o#'etos >m<todo?
class mys?li \
#ool autocommit > #ool modo ?
]
mys?li>autocommit./ +s usado para cam#iar entre on u o(( el modo de auto2entrega en las
consultas para la coneFi-n a la #ase de datos representada por el o#'eto 6#ent696ca#or_#e_enlace;
Nota- mys?li>autocommit./ No (unciona so#re ta#las /ue no son del tipo transaccional
>como My.AM o .AM?;
Para determinar el estado actual de auto2entrega use el comando OLC H+L+5,
GGautocommitH;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>commit./A y mys?li>rollbacB./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W turn autocommit on W/
$mysQliF>autocommit3*'+E9;
i# 3$result > $mysQliF>Query3"&EOER* ^^autocommit"99 :
$ro8 > $resultF>#etch%ro839;
print#3",utocommit is \sVn", $ro8)2/9;
$resultF>#ree39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
i# 3!$linI9 :
print#3"RanMt connect to localhost. Error@ \sVn", mysQli%connect%error399;
exit39;
;
/W turn autocommit on W/
mysQli%autocommit3$linI, *'+E9;
i# 3$result > mysQli%Query3$linI, "&EOER* ^^autocommit"99 :
$ro8 > mysQli%#etch%ro83$result9;
print#3",utocommit is \sVn", $ro8)2/9;
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
,utocommit is 6
mys?li>bind>param
mys/liZ#indZparam 22 Alias para mys?li>stmt>bind>param./
Kescripci"n
+sta (unci-n es un alias de mys?li>stmt>bind>param./; Para una descripci-n detallada vea
mys?li>stmt>bind>param./;
Nota- mys?li>bind>param./ es o#soleta y ser* removida;
Cer tambi%n
mys?li>stmt>bind>param./;
mys?li>bind>result
mys/liZ#indZresult 22 Alias para mys?li>stmt>bind>result./
Kescripci"n
+sta (unci- es un alias de mys?li>stmt>bind>result./; Para una descripci-n detallada vea
mys?li>stmt>bind>result./;
Nota- mys?li>bind>result./ es o#soleta y ser* removida;
Cer tambi%n
mys?li>stmt>bind>result./;
mys?li>change>user
>P&P 4?
mys/liZchangeZuser
>no version in(ormationA might #e only in 5$?
mys/li2_changeZuser 22 5am#ia el usuario de la coneFi-n a la #ase de datos especi(icada
Kescripci"n
+stilo por procedimientosC
#ool mys?li>change>user > mys/li identi(icadorZdeZenlaceA cadena usuarioA cadena contraseWaA
cadena #aseZdeZdatos ?
+stilo orientado a o#'etos >m<todo?C
class mys?li \
#ool change>user > cadena usuarioA cadena contrasec{vwyaA cadena #aseZdeZdatos ?
]
mys?li>change>user./ +s usada para cam#iar el usuario para la coneFi-n de #ase de datos indicada
por el par*metro 6#ent696ca#or_#e_enlace y para (i'ar la actual #ase de datos a la espec)(icada por el
par*metro 1ase_#e_#atos;
i se deseaA se puede pasar el valor NULL en lugar del par*metro 1ase_#e_#atos resultando en solo
cam#iar el usaurio y no seleccionar la #ase de datos; Para seleccionar una #ase de datos en este caso
use la (unci-n mys?li>select>db./;
Para poder cam#iar de usuario de (orma eFitosa se de#e proveer de un usuar6o y contraseaa validosA
y tales par*metros de#e contar con los su(icientes permisos para acceder a la #ase de datos deseada;
i por cual/uier raz-n la autorizaci-n (allaA el actual usuario autenticado permanecer* activo;
Nota- +l uso de este comando siempre producir* /ue la coneFi-n actual a la #ase de
datos se comporte como si (uera una nueva coneFi-nA sin importar si la operaci-n (ue
completada eFitosamente; +ste reinicio implica el hacer la restauraci-n no actualizada
=roll#ac"= de cual/uier transacci-n activaA cerrar todas las ta#las temporales y des2
asegurar todas las ta#las aseguradas;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>connect./A y mys?li>select>db./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
/W connect database test W/
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "test"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W &et (ariable a W/
$mysQliF>Query3"&E* ^a@>6"9;

/W reset all and select a ne8 database W/
$mysQliF>chanEe%user3"my%user", "my%pass8ord", "8orld"9;
i# 3$result > $mysQliF>Query3"&EOER* L,*,Z,&E39"99 :
$ro8 > $resultF>#etch%ro839;
print#3"Le#ault database@ \sVn", $ro8)2/9;
$resultF>close39;
;
i# 3$result > $mysQliF>Query3"&EOER* ^a"99 :
$ro8 > $resultF>#etch%ro839;
i# 3$ro8)2/ >>> .+OO9 :
print#3"(alue o# =ariable a is .+OOVn"9;
;
$resultF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
/W connect database test W/
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "test"9;
/W checI connection W/
i# 3!$linI9 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W &et (ariable a W/
mysQli%Query3$linI, "&E* ^a@>6"9;

/W reset all and select a ne8 database W/
mysQli%chanEe%user3$linI, "my%user", "my%pass8ord", "8orld"9;
i# 3$result > mysQli%Query3$linI, "&EOER* L,*,Z,&E39"99 :
$ro8 > mysQli%#etch%ro83$result9;
print#3"Le#ault database@ \sVn", $ro8)2/9;
mysQli%#ree%result3$result9;
;
i# 3$result > mysQli%Query3$linI, "&EOER* ^a"99 :
$ro8 > mysQli%#etch%ro83$result9;
i# 3$ro8)2/ >>> .+OO9 :
print#3"(alue o# =ariable a is .+OOVn"9;
;
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Le#ault database@ 8orld
(alue o# =ariable a is .+OO
mys?li>character>set>name
>P&P 4?
mys/liZcharacterZsetZname
>no version in(ormationA might #e only in 5$?
mys/li2_characterZsetZname 22 Regresa el con'unto de caracteres determinados por de(ault para la
coneFi-n de #ase de datos
Kescripci"n
+stilo por procedumientosC
cadena mys?li>character>set>name > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >m<todo?C
class mys?li \
cadena character>set>name > void ?
]
Regresa el con'untos de caracteres actualA determinado para la coneFi-n de #ase de datos
espec)(icada por el par*metro 6#ent696ca#or_#e_enlace;
Calores retornados
+l con'unto de caracteres por de(ectoA determinados para la coneFi-n actual
Cer tambi%n
mys?li>client>encoding./A y mys?li>real>escape>string./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
/W ?pen a connection W/
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;

/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W rint current character set W/
$charset > $mysQliF>character%set%name39;
print# 3"Rurrent character set is \sVn", $charset9;
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
/W ?pen a connection W/
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;

/W checI connection W/
i# 3!$linI9 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W rint current character set W/
$charset > mysQli%character%set%name3$linI9;
print# 3"Rurrent character set is \sVn",$charset9;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Rurrent character set is latin6%s8edish%ci
mys?li>client>encoding
mys/liZclientZencoding 22 Alias de mys?li>character>set>name./
Kescripci"n
+sta (unci-n es un alias de mys?li>character>set>name./; Para una descripci-n detallada vea
mys?li>character>set>name./;
Cer tambi%n
mys?li>client>encoding./A y mys?li>real>escape>string./;
mys?li>close
>P&P 4?
mys/liZclose
>no version in(ormationA might #e only in 5$?
mys/li2_close 22 5ierra la coneFi-n de #ase de datos previamente a#ierta
Kescripci"n
+stilo por procedimientosC
#ool mys?li>close > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >m<todo?C
class mys?li \
#ool close > void ?
]
La (unci-n mys?li>close./ cierra una coneFi-n de #ase de datos previamente a#iertaA espec)(icada
por el par*metro 6#ent696ca#or_#e_enlace;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>connect./A mys?li>init./A y mys?li>real>connect./;
mys?li>commit
>P&P 4?
mys/liZcommit
>no version in(ormationA might #e only in 5$?
mys/li2_commit 22 5ompleta la transacci-n actual
Kescripci"n
+stilo por procedimientosC
#ool mys?li>commit > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >m<todo?
class mys?li \
#ool commit > void ?
]
+ntrega la transacci-n actual para la coneFi-n de #ase de datos espec)(icada por el parametro l6n>;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>autocommit./A y mys?li>rollbacB./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$mysQliF>Query3"R'E,*E *,ZOE OanEuaEe O4]E RountryOanEuaEe *ype>4nnoLZ"9;
/W set autocommit to o## W/
$mysQliF>autocommit3S,O&E9;
/W 4nsert some =alues W/
$mysQliF>Query3"4.&E'* 4.*? OanEuaEe (,O+E& 3MLE+M, MZa=arianM, MSM, 66.C9"9;
$mysQliF>Query3"4.&E'* 4.*? OanEuaEe (,O+E& 3MLE+M, M&8abianM, MSM, K.19"9;
/W commit transaction W/
$mysQliF>commit39;
/W drop table W/
$mysQliF>Query3"L'? *,ZOE OanEuaEe"9;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "test"9;
/W checI connection W/
i# 3!$linI9 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W set autocommit to o## W/
mysQli%autocommit3$linI, S,O&E9;
mysQli%Query3$linI, "R'E,*E *,ZOE OanEuaEe O4]E RountryOanEuaEe *ype>4nnoLZ"9;
/W 4nsert some =alues W/
mysQli%Query3$linI, "4.&E'* 4.*? OanEuaEe (,O+E& 3MLE+M, MZa=arianM, MSM, 66.C9"9;
mysQli%Query3$linI, "4.&E'* 4.*? OanEuaEe (,O+E& 3MLE+M, M&8abianM, MSM, K.19"9;
/W commit transaction W/
mysQli%commit3$linI9;
/W close connection W/
mysQli%close3$linI9;
?>
mys?li>connect>errno
>P&P 4?
mys/liZconnectZerrno 22 Regresa el c-digo de error de la Bltima llamada a la coneFi-n
Kescripci"n
int mys?li>connect>errno > void ?
La (unci-n mys?li>connect>errno./ regresar* el Bltumo c-digo de error generado por
mys?li>connect./; i no han ocurrido erroresA esta (unci-n regresar* cero;
Nota- Los nBmeros de error del clienteA est*n listados en el archivo de MyOL
errmsE.h; Los nBmeros de error del servidorA est*n listados en el archivo de MyOL
mysQld%error.h; +n la distri#uci-n de las (uentes de MyOLA tu puedes encontrar
una lista completa de los mensa'es de error y de los nBmeros de error en el documento
Locs/mysQld%error.txt;
Calores retornados
@n c-digo de error para la Bltima llamada a mys?li>connect./A si <sta (alla; i no hay error entonces
se regresa 5ero;
Cer tambi%n
mys?li>connect./A mys?li>connect>error./A mys?li>errno./A mys?li>error./A y mys?li>s?lstate./
E'emplos
E'emplo !. mys?li>connect>errno
<?php
$linI > ^mysQli%connect3"localhost", "nonexistinE%user", ""9;
i# 3!$linI9 :
print#3"RanMt connect to localhost. Errorcode@ \dVn", mysQli%connect%errno399;
;
?>
mys?li>connect>error
>P&P 4?
mys/liZconnectZerror 22 Regresa una descripci-n del Bltimo error de la coneFi-n
Kescripci"n
cadena mys?li>connect>error > void ?
La (unci-n mys?li>connect>error./ es identica a la (unci-n mys?li>connect>errno./A eFcepto en
/ue en vez de regresar el nBmero del c-digo de errorA la (unci-n mys?li>connect>error./ regresar*
el mensa'e de error correspondiente a la Bltima llamada a la (unci-n mys?li>connect./; i no ha
ocurrido errorA est* (unci-n regresar* una cadena vac)a;
Calores retornados
@na cadena /ue descri#e el error o una cadena vac)a si no ha ocurrido error;
Cer tambi%n
mys?li>connect./A mys?li>connect>errno./A mys?li>errno./A mys?li>error./A y mys?li>s?lstate./
E'emplos
E'emplo !. mys?li>connect>error
<?php
$linI > ^mysQli%connect3"localhost", "nonexistinE%user", ""9;
i# 3!$linI9 :
print#3"RanMt connect to localhost. Error@ \sVn", mysQli%connect%error399;
;
?>
mys?li>connect
>P&P 4?
mys/liZconnect
>no version in(ormationA might #e only in 5$?
mys/li>? 22 A#re una nueva coneFi-n al servidor MyOL
Kescripci"n
+stilo por procedimientos
mys/li mys?li>connect > Pcadena e/uipoZan(itri-n PA cadena usuario PA cadena contraseWa PA cadena
#aseZdeZdatos PA int puerto PA cadena soc"etQQQQQQ ?
+stilo orientado a o#'etos >constructor?C
class mys?li \
>>construct > Pcadena e/uipoZan(itri-n PA cadena usuario PA cadena contraseWa PA cadena
#aseZdeZdatos PA int puerto PA cadena soc"etQQQQQQ ?
]
La (unci-n mys?li>connect./ intenta a#rir una coneFi-n al servidor MyOL /ue se est* e'ecutando
en e@u6po_a96tr6`n el cual puede ser el nom#re de un e/uipo o una direcci-n .P; Pasando el valor
NULL o la cadena =localhost= a este par*metroA se asume /ue est* en el mismo e/uipo; 5uando sea
posi#le se usar*n =pipes= en vez del protocolo ,5PD.P; +n caso eFitosoA la (unci-n mys?li>connect
./ regresar* un o#'eto representando la coneFi-n a la #ase de datosA o FALSE en caso contrario;
+n los par*metros usuar6o y contraseaa se espec)(ica el nom#re de usuario y contraseWa con los
cuales se de#e conectar al servidor MyOL; i no se da contraseWa el valor NULL es tomadoA el
servidor MyOL intentar* veri(icar al usuario contra los registros de usuarios /ue esten sin
contraseWa; +sto permite /ue un usuario pueda ser usado con di(erentes permisos >dependiendo si se
provee contraseWa o no?;
i se espec)(ica el par*metro 1ase_#e_#atos especi(icar* la #ase de datos a usar por de(ecto cuando
se e'ecuten consultas;
Los par*metros puerto y soc>et son usados 'unto con el par*metro e@u6po_an96tr6`n para controla a
(uturo como conectar al servidor de #ase de datos; +l par*metro puerto espec)(ica el nBmero de
puerto al /ue se intenta conectar en el servidor MyOLA mientras /ue el par*metro soc>et espec)(ica
el soc"et o la pipa nom#rada =pipe= /ue de#e ser usada;
Nota- +speci(icar el par*metro soc>et no determina eFpl)citamente el tipo de coneFi-n a
ser usado cuando se conecta al servidor MyOL; +l par*metro e@u6po_an96tr6`n
determina como se hace la coneFi-n a la #ase de datos MyOL;
Calores retornados
Regresa un o#'eto el cu*l representa la coneFi-n al servidor MyOL o FALSE en caso contrario;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
print#3"Host in#ormation@ \sVn", $mysQliF>host%in#o9;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3!$linI9 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
print#3"Host in#ormation@ \sVn", mysQli%Eet%host%in#o3$linI99;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Host in#ormation@ Oocalhost =ia +.4X socIet
mys?li>data>seeB
>P&P 4?
mys/liZdataZsee"
>no version in(ormationA might #e only in 5$?
result2_dataZsee" 22 A'usta el apuntador ar#itrariamente a una (ila en el resultado
Kescripci"n
+stilo por procedimientosC
#ool mys?li>data>seeB > mys/liZresult resultadoA int posici-n ?
+stilo orientado a o#'etos >m<todo?C
class resultado \
#ool data>seeB > int posici-n ?
]
La (unci-n mys?li>data>seeB./ #usca ar#itrariamente apuntar al valor espec)(icado por pos6c6`n en
el con'unto resultante representado por result; Los valores del par*metro pos6c6`n de#en estar entre
cero y el total de (ilas menus uno >3 ;; mys?li>num>ro3s./ 2 1?;
Nota- +st* (unci-n solo puede ser usada con resultados sin almacenamiento intermedio
logrados por el uso de las (unciones mys?li>store>result./ o mys?li>?uery./;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>store>result./A mys?li>fetch>ro3./A mys?li>fetch>array./A mys?li>fetch>assoc./A
mys?li>fetch>ob'ect./A mys?li>?uery./A y mys?li>num>ro3s./;
E'emplos
E'emplo !. Estilo orientado a on'etos
<?php
/W ?pen a connection W/
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' ZP .ame";
i# 3$result > $mysQliF>Query3 $Query99 :
/W seeI to ro8 no. 122 W/
$resultF>data%seeI3<KK9;
/W #etch ro8 W/
$ro8 > $resultF>#etch%ro839;
print# 3"Rity@ \s Rountrycode@ \sVn", $ro8)2/, $ro8)6/9;

/W #ree result setW/
$resultF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
/W ?pen a connection W/
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3!$linI9 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' ZP .ame";
i# 3$result > mysQli%Query3$linI, $Query99 :
/W seeI to ro8 no. 122 W/
mysQli%data%seeI3$result, <KK9;
/W #etch ro8 W/
$ro8 > mysQli%#etch%ro83$result9;
print# 3"Rity@ \s Rountrycode@ \sVn", $ro8)2/, $ro8)6/9;

/W #ree result setW/
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Rity@ Zenin Rity Rountrycode@ .-,
mys?li>debug
>P&P 4?
mys/liZde#ug 22 Realiza operaciones de rastreo de errores
Kescripci"n
void mys?li>debug > cadena acci-n ?
La (unci-n mys?li>debug./ es usada para realizar operaciones de rastreo y eliminaci-n de errores
utilizando la li#reria =Fred Fish=; +l par*metro acc6`n es una cadena /ue representa las operaciones
de rastreo de errores a realizar;
Nota- Para usar la (unci- mys?li>debug./ se de#e compilar el cliente de MyOL con
soporte para rastreo de errores =de#ugging=;
Calores retornados
mys?li>debug./ no regresa ningBn valor;
Cer tambi%n
mys?li>dump>debug>info./A y mys?li>report./
E'emplos
E'emplo !. Fenerar un archi5o de rastreo
<?php

/W Rreate a trace #ile in M/tmp/client.traceM on the local 3client9 machine@ W/
mysQli%debuE3"d@t@2,/tmp/client.trace"9;

?>
mys?li>disable>reads>from>master
>P&P 4?
mys/liZdisa#leZreadsZ(romZmaster
>no version in(ormationA might #e only in 5$?
mys/li2_disa#leZreadsZ(romZmaster 22 Desha#ilita lectura del ervidor maestro
Kescripci"n
+stilo por procedimientosC
void mys?li>disable>reads>from>master > mys/li lin" ?
+stilo orientado a o#'etos >m<todo?C
class mys?li \
void disable>reads>from>master > void ?
]
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
mys?li>disable>rpl>parse
>P&P 4?
mys/liZdisa#leZrplZparse 22 Desha#ilita el analizador RPL
Kescripci"n
void mys?li>disable>rpl>parse > mys/li identi(icadorZdeZenlace ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
mys?li>dump>debug>info
>P&P 4?
mys/liZdumpZde#ugZin(o
>no version in(ormationA might #e only in 5$?
mys/li2_dumpZde#ugZin(o 22 $ac)a in(ormaci-n de rastreo de errores en el log
Kescripci"n
#ool mys?li>dump>debug>info > mys/li identi(icadorZdeZenlace ?
+sta (unci-n est* diseWada para ser e'ecutada por un usaurio con privilegios de @P+R usuario y es
usada para vaciar la in(ormaci-n de rastreo de errores en el log del servidor MyOL relacionado a la
coneFi-n espec)(icada por el par*metro 6#ent696ca#or_#e_enlace;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>debug./;
mys?li>embedded>connect
>P&P 4?
mys/liZem#eddedZconnect 22 A#re una coneFi- a un servidor MyOL em#e#ido
Kescripci"n
mys/li mys?li>embedded>connect > Pstring d#nameQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
mys?li>enable>reads>from>master
>P&P 4?
mys/liZena#leZreadsZ(romZmaster 22 &a#ilita la lectura del servidor Maestro
Kescripci"n
void mys?li>enable>reads>from>master > mys/li identi(icadorZdeZenlace ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
mys?li>enable>rpl>parse
>P&P 4?
mys/liZena#leZrplZparse 22 &a#ilita el analizador RPL
Kescripci"n
void mys?li>enable>rpl>parse > mys/li identi(icadorZdeZenlace ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
mys?li>errno
>P&P 4?
mys/liZerrno
>no version in(ormationA might #e only in 5$?
mys/li2_errno 22 Regresa el c-digo de error para la (unci-n m*s recientemente llamada
Kescripci"n
+stilo por procedimientosC
int mys?li>errno > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >propiedad?C
class mys?li \
int errno
]
La (unci-n mys?li>errno./ regresar* el Bltimo c-digo de error para la (unci-n de MyOLi m*s
recientemente llamadaA /ue pueda ser eFitosa o (allar con respecto al identi(icador de enlace a la
#ase de datos de(inido por el par*metro 6#ent696ca#or_#e_enlace; i no han ocurrido erroresA est*
(unci-n regresar* cero;
Nota- Los nBmeros de error del clienteA est*n listados en el archivo de MyOL
errmsE.h; Los nBmeros de error del servidorA est*n listados en el archivo de MyOL
mysQld%error.h; +n la distri#uci-n de las (uentes de MyOLA tu puedes encontrar
una lista completa de los mensa'es de error y de los nBmeros de error en el documento
Locs/mysQld%error.txt;
Calores retornados
@n valor de c-digo de error para la Bltima llamada si (all-; 5ero signi(ica /ue no han ocurrido
errores;
Cer tambi%n
mys?li>connect>errno./A mys?li>connect>error./A mys?li>error./A y mys?li>s?lstate./
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
i# 3!$mysQliF>Query3"&E* a>6"99 :
print#3"Errorcode@ \dVn", $mysQliF>errno9;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
i# 3!mysQli%Query3$linI, "&E* a>6"99 :
print#3"Errorcode@ \dVn", mysQli%errno3$linI99;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Errorcode@ 66K<
mys?li>error
>P&P 4?
mys/liZerror 22 Regresa una cadena con la descripci- del Bltimo error
Kescripci"n
+stilo por procedimientosC
cadena mys?li>error > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >propiedad?
class mys?li \
cadena error
]
La (unci- mys?li>error./ es identica a la correspondiente mys?li>errno./ en todos los sentidosA
eFcepto en /ue en lugar de regresar un valor num<ricoA la (unci-n mys?li>error./ regresar* un
mensa'e de errorA representando el Bltimo error ocurrido para la coneFi- de #ase de datos
6#ent696ca#or_#e_enlace; i no han ocurrido erroresA est* (unci-n regresar* una cadena vac)a;
Calores retornados
@na cadena /ue descri#e el error; @na cadena vac)a si no han ocurrido errores;
Cer tambi%n
mys?li>connect>errno./A mys?li>connect>error./A mys?li>errno./A y mys?li>s?lstate./
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
i# 3!$mysQliF>Query3"&E* a>6"99 :
print#3"ErrormessaEe@ \sVn", $mysQliF>error9;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
i# 3!mysQli%Query3$linI, "&E* a>6"99 :
print#3"ErrormessaEe@ \sVn", mysQli%error3$linI99;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
ErrormessaEe@ +nIno8n system =ariable MaM
mys?li>escape>string
mys/liZescapeZstring 22 Alias de mys?li>real>escape>string./
Kescripci"n
+sta (unci-n es un alias de mys?li>real>escape>string./;
mys?li>e+ecute
mys/liZeFecute 22 Alias de mys?li>stmt>e+ecute./
Kescripci"n
+sta (unci-n es un alias de mys?li>stmt>e+ecute./; Para una descipci- m*s detallada vea la
descripci-n de mys?li>stmt>e+ecute./;
Nota- mys?li>e+ecute./ es o#soleta y ser* removida;
Cer tambi%n
mys?li>stmt>e+ecute./;
mys?li>fetch>array
>P&P 4?
mys/liZ(etchZarray
>no version in(ormationA might #e only in 5$?
result2_(etchZarray 22 O#tiene una (ila como una matriz asociativaA una matriz num<rica o am#os
Kescripci"n
+stilo por procedimientosC
miFto mys?li>fetch>array > mys/li resultado PA int tipoZdeZresultadoQ ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>resultado \
miFto fetch>array > Pint tipoZdeZresultadoQ ?
]
Regresa una matriF /ue corresponde a las (ilas o#tenidas o NULL si no hay m*s (ilas para el
resultadoA representado por el par*metro resulta#o;
mys?li>fetch>array./ es una versi-n me'orada de la (unci-n mys?li>fetch>ro3./; Adem* de
almacenar los datos en )ndices num<ricos de la matriz resultanteA la (unci-n mys?li>fetch>array./
tam#i<n puede almacenar los datos en )ndices asociativosA usando los nom#re de los campos de el
resultado como llaves;
Nota- Los nom#res de campos retornados por esta (unci-n di(erencian entre ma?usculas
? m6nusculas;
i dos o m*s columnas de el resultado tienen el mismo nom#reA la Bltima columna tomara
precedencia y so#re escri#ir* lo primero; Para acceder a varias columnas con el mismo nom#reA la
(orma de )ndice num<rica de#e ser usada;
+l par*metro opcional t6po_#e_resulta#o es una constante /ue indica /u< tipo de matriz de#e ser
producido para la (ila de datos actual; Los posi#les valires para este par*metro son las constantes
M%OL.ZAO5A M%OL.ZN@MA o M%OL.ZBO,&; Por de(ecto la (unci-n
mys?li>fetch>array./ asumir* el valor de M%OL.ZBO,&;
Al usar la constante M%OL.ZAO5A esta (unci-n se comportar* identica a la (unci-n
mys?li>fetch>assoc./A mientras /ue con M%OL.ZN@M se comportar* identica a la (unci-n
mys?li>fetch>ro3./; La opci-n (inal M%OL.ZBO,& crear* una matriz con los atri#utos de
am#os;
Calores retornados
Regresa una matriz /ue corresponde a las (ilas o#tenidas o NULL si no hay m*s (ilas en el resultado;
Cer tambi%n
mys?li>fetch>assoc./A mys?li>fetch>ro3./A mys?li>fetch>ob'ect./A mys?li>?uery./A y
mys?li>data>seeB./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;

$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' by 4L O4"4* <";
$result > $mysQliF>Query3$Query9;
/W numeric array W/
$ro8 > $resultF>#etch%array3"P&NO4%.+"9;
print# 3"\s 3\s9Vn", $ro8)2/, $ro8)6/9;
/W associati=e array W/
$ro8 > $resultF>#etch%array3"P&NO4%,&&?R9;
print# 3"\s 3\s9Vn", $ro8)".ame"/, $ro8)"RountryRode"/9;
/W associati=e and numeric array W/
$ro8 > $resultF>#etch%array3"P&NO4%Z?*H9;
print# 3"\s 3\s9Vn", $ro8)2/, $ro8)"RountryRode"/9;
/W #ree result set W/
$resultF>close39;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' by 4L O4"4* <";
$result > mysQli%Query3$linI, $Query9;
/W numeric array W/
$ro8 > mysQli%#etch%array3$result, "P&NO4%.+"9;
print# 3"\s 3\s9Vn", $ro8)2/, $ro8)6/9;
/W associati=e array W/
$ro8 > mysQli%#etch%array3$result, "P&NO4%,&&?R9;
print# 3"\s 3\s9Vn", $ro8)".ame"/, $ro8)"RountryRode"/9;
/W associati=e and numeric array W/
$ro8 > mysQli%#etch%array3$result, "P&NO4%Z?*H9;
print# 3"\s 3\s9Vn", $ro8)2/, $ro8)"RountryRode"/9;
/W #ree result set W/
mysQli%#ree%result3$result9;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
]abul 3,S-9
Nandahar 3,S-9
Herat 3,S-9
mys?li>fetch>assoc
>P&P 4?
mys/liZ(etchZassoc
>no version in(ormationA might #e only in 5$?
mys/li2_(etchZassoc 22 O#tiene una (ila del resultado como una matriz asociativa
Kescripci"n
+stilo por procedimientosC
matriz mys?li>fetch>assoc > mys/liZresult resultado ?
+stilo orientado a o#'etos >m<todo?C
class resultado \
matriz fetch>assoc > void ?
]
Regresa una matriz asociativa /ue corresponde a las (ilas o#tenidas o NULL si no hay mas (ilas;
La (unci-n mys?li>fetch>assoc./ es usada para regresar una representaci-n asociativa de la
siguiente (ila en el resultadoA representado por el par*metro resulta#oA donde cada llave en la matriz
representa el nom#re de las columnas en el resultado;
i dos o m*s columnas de el resultado tienen el mismo nom#reA la Bltima columna tomara
precedencia y so#re escri#ir* lo primero; Para acceder a varias columnas con el mismo nom#reA la
(orma de )ndice num<rica de#e ser usada;
Nota- Los nom#res de campos retornados por esta (unci-n di(erencian entre ma?usculas
? m6nusculas;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
Calores retornados
Regresa una matriz /ue corresponde a las (ilas o#tenidas o NULL si no hay m*s (ilas en el resultado;
Cer tambi%n
mys?li>fetch>array./A mys?li>fetch>ro3./A mys?li>fetch>ob'ect./A mys?li>?uery./A y
mys?li>data>seeB./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;

$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' by 4L LE&R O4"4* 52,5";
i# 3$result > $mysQliF>Query3$Query99 :
/W #etch associati=e array W/
8hile 3$ro8 > $resultF>#etch%assoc399 :
print# 3"\s 3\s9Vn", $ro8)".ame"/, $ro8)"RountryRode"/9;
;
/W #ree result set W/
$resultF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' by 4L LE&R O4"4* 52,5";
i# 3$result > mysQli%Query3$linI, $Query99 :
/W #etch associati=e array W/
8hile 3$ro8 > mysQli%#etch%assoc3$result99 :
print# 3"\s 3\s9Vn", $ro8)".ame"/, $ro8)"RountryRode"/9;
;
/W #ree result set W/
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
ueblo 3+&,9
,r=ada 3+&,9
Rape Roral 3+&,9
-reen Zay 3+&,9
&anta Rlara 3+&,9
mys?li>fetch>field>direct
>P&P 4?
mys/liZ(etchZ(ieldZdirect
>no version in(ormationA might #e only in 5$?
result2_(etchZ(ieldZdirect 22 O#tiene los metadatos de un campo
Kescripci"n
+stilo por procedimientosC
miFto mys?li>fetch>field>direct > mys/liZresult resultadoA int indiceZdeZcampo ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>result \
miFto fetch>field>direct > int indiceZdeZcampo ?
]
La (unci-n mys?li>fetch>field>direct./ regresa un o#'eto el cu*l contiene in(ormaci-n de la
de(inici-n del campo del resultado espec)(icado; +l valor de indiceZdeZcampo de#e estar en el rango
de 0 a ndmero #e campos =1;
Calores retornados
Regresa un o#'eto el cual contiene in(ormaci-n de la de(inici-n del campo o FALSE si no hay
in(ormaci-n para el 6n#6ce_#e_campo espec)(icado;
Tabla !. Atributos del ob'eto
Atributo Kescripci"n
name Nom#re de la columna
orgname Nom#re original de la columna si se di- un alias
ta#le Nom#re de la ta#la a la /ue pertenece el campo
orgta#le Nom#re original de la ta#la si se di- un alias
de(
+l valor por de(ecto para este campoA representado como una
cadena
maFZlengt
h
La amplitud m*Fima de campo de el campo para el resultado
(lags @n entero /ue representa los #it #andera para el campo
type ,ipo de dato utilizado para este campo
decimals NBmero de decimales usadas >para campos entero?
Cer tambi%n
mys?li>num>fields./A mys?li>fetch>field./A y mys?li>fetch>fields./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, &ur#ace,rea #rom Rountry ?'LE' ZP .ame O4"4* 5";
i# 3$result > $mysQliF>Query3$Query99 :
/W -et #ield in#ormation #or column M&ur#ace,reaM W/
$#in#o > $resultF>#etch%#ield%direct369;

print#3".ame@ \sVn", $#in#oF>name9;
print#3"*able@ \sVn", $#in#oF>table9;
print#3"max. Oen@ \dVn", $#in#oF>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#oF>#laEs9;
print#3"*ype@ \dVn", $#in#oF>type9;

$resultF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, &ur#ace,rea #rom Rountry ?'LE' ZP .ame O4"4* 5";
i# 3$result > mysQli%Query3$linI, $Query99 :
/W -et #ield in#ormation #or column M&ur#ace,reaM W/
$#in#o > mysQli%#etch%#ield%direct3$result, 69;

print#3".ame@ \sVn", $#in#oF>name9;
print#3"*able@ \sVn", $#in#oF>table9;
print#3"max. Oen@ \dVn", $#in#oF>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#oF>#laEs9;
print#3"*ype@ \dVn", $#in#oF>type9;
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
.ame@ &ur#ace,rea
*able@ Rountry
max. Oen@ 62
SlaEs@ <CHGK
*ype@ 1
mys?li>fetch>field
>P&P 4?
mys/liZ(etchZ(ield
>no version in(ormationA might #e only in 5$?
result2_(etchZ(ield 22 Regresa metadatos de el campo en el resultado
Kescripci"n
+stilo por procedimientosC
miFto mys?li>fetch>field > mys/l.Zresult resultado ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>result \
miFto fetch>field > void ?
]
La (unci-n mys?li>fetch>field./ regresa un o#'eto con in(ormaci-n de de(inici-n de un campo de
un resultado; +'ecute esta (unci-n repetidamente para o#tener la in(ormaci-n de todas las columnas
en un resultado; mys?li>fetch>field./ regresa FALSE cuando no hay m*s columnas en el resultado;
Calores retornados
Regresa un o#'eto el cual contiene la in(ormaci-n de la de(inici-n del campo o FALSE si no hay
in(ormaci-n disponi#le;
Tabla !. Propiedades del ob'eto
Propiedad Kescripci"n
name +l nom#re de la columna
orgname Nom#re original de la columnaA si se espec)(ico un alias
ta#le +l nom#re de la ta#laa la cu*l pertenece
orgta#le Nom#re original de la ta#la si se espec)(ico un alias
de(
+l valor por de(ecto de este campoA representado con una
cadena
maFZlengt
h
La m*ma amplitud del campo para el resultado
(lags @n entero representando los #it de #andera para el campo
type +l tipo de dato usado para este campo
decimals +l nBmero de decimales utilizadas >para campos num<ricos?
Cer tambi%n
mys?li>num>fields./A mys?li>fetch>field>direct./A mys?li>fetch>fields./A y mys?li>field>seeB./
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, &ur#ace,rea #rom Rountry ?'LE' ZP Rode O4"4* 5";
i# 3$result > $mysQliF>Query3$Query99 :
/W -et #ield in#ormation #or all columns W/
8hile 3$#in#o > $resultF>#etch%#ield399 :

print#3".ame@ \sVn", $#in#oF>name9;
print#3"*able@ \sVn", $#in#oF>table9;
print#3"max. Oen@ \dVn", $#in#oF>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#oF>#laEs9;
print#3"*ype@ \dVnVn", $#in#oF>type9;
;
$resultF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, &ur#ace,rea #rom Rountry ?'LE' ZP Rode O4"4* 5";
i# 3$result > mysQli%Query3$linI, $Query99 :
/W -et #ield in#ormation #or all #ields W/
8hile 3$#in#o > mysQli%#etch%#ield3$result99 :

print#3".ame@ \sVn", $#in#oF>name9;
print#3"*able@ \sVn", $#in#oF>table9;
print#3"max. Oen@ \dVn", $#in#oF>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#oF>#laEs9;
print#3"*ype@ \dVnVn", $#in#oF>type9;
;
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
.ame@ .ame
*able@ Rountry
max. Oen@ 66
SlaEs@ 6
*ype@ C51
.ame@ &ur#ace,rea
*able@ Rountry
max. Oen@ 62
SlaEs@ <CHGK
*ype@ 1
mys?li>fetch>fields
>P&P 4?
mys/liZ(etchZ(ields
>no version in(ormationA might #e only in 5$?
result2_(etchZ(ields 22 Regresa una matriz de o#'etos representando los campos en un resultado
Kescripci"n
+stilo por procedimientosC
miFto mys?li>fetch>fields > mys/liZresult resultado ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>result \
miFto fetch>fields > void ?
]
+sta (unci-n sirve identica en prop-sito a la (unci-n mys?li(fetch(field./ con la minima di(erencia
de /ueA en lugar de regresar un o#'eto a la vez para cada campoA las columnas son regresadas como
una matiz de o#'etos;
Calores retornados
Regresa una matriz de o#'etos /ue contienen la in(ormaci-n de de(inici- de los campos o FALSE si
no hay in(ormaci-n del campo disponi#le;
Tabla !. Propiedades del ob'eto
Propiedad Kescripci"n
name +l nom#re de la columna
orgname Nom#re original de la columnaA si se espec)(ico un alias
ta#le +l nom#re de la ta#laa la cu*l pertenece
orgta#le Nom#re original de la ta#la si se espec)(ico un alias
Propiedad Kescripci"n
de(
+l valor por de(ecto de este campoA representado con una
cadena
maFZlengt
h
La m*ma amplitud del campo para el resultado
(lags @n entero representando los #it de #andera para el campo
type +l tipo de dato usado para este campo
decimals +l nBmero de decimales utilizadas >para campos num<ricos?
Cer tambi%n
mys?li>num>fields./A mys?li>fetch>field./A y mys?li>fetch>field>direct./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, &ur#ace,rea #rom Rountry ?'LE' ZP Rode O4"4* 5";
i# 3$result > $mysQliF>Query3$Query99 :
/W -et #ield in#ormation #or all columns W/
$#in#o > $resultF>#etch%#ields39;
#or 3$i>2; $i < count3$#in#o9; $i[[9 :
print#3".ame@ \sVn", $#in#o)$i/F>name9;
print#3"*able@ \sVn", $#in#o)$i/F>table9;
print#3"max. Oen@ \dVn", $#in#o)$i/F>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#o)$i/F>#laEs9;
print#3"*ype@ \dVnVn", $#in#o)$i/F>type9;
;
$resultF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, &ur#ace,rea #rom Rountry ?'LE' ZP Rode O4"4* 5";
i# 3$result > mysQli%Query3$linI, $Query99 :
/W -et #ield in#ormation #or all columns W/
$#in#o > mysQli%#etch%#ields3$result9;

#or 3$i>2; $i < count3$#in#o9; $i[[9 :
print#3".ame@ \sVn", $#in#o)$i/F>name9;
print#3"*able@ \sVn", $#in#o)$i/F>table9;
print#3"max. Oen@ \dVn", $#in#o)$i/F>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#o)$i/F>#laEs9;
print#3"*ype@ \dVnVn", $#in#o)$i/F>type9;
;
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
.ame@ .ame
*able@ Rountry
max. Oen@ 66
SlaEs@ 6
*ype@ C51
.ame@ &ur#ace,rea
*able@ Rountry
max. Oen@ 62
SlaEs@ <CHGK
*ype@ 1
mys?li>fetch>lengths
>P&P 4?
mys/liZ(etchZlengths
>no version in(ormationA might #e only in 5$?
result2_lengths 22 Regresa la longitud de las columnas de la (ila actual en el resultado
Kescripci"n
+stilo por procedimientosC
miFto mys?li>fetch>lengths > mys/liZresult resultado ?
+stilo orientado a o#'etos>propiedad?C
class mys?li>result \
miFto lengths
]
La (unci-n mys?li>fetch>lengths./ regresa una matriz conteniendo la longitud de cada columna de
la (ila actual en el resultado representado por el par*metro result; i hay in(ormaci-n regresa una
matriz num<ricamente ordenada representando la longitud de cada columna o FALSE si (alla;
Calores retornados
@na matriz de enteros representando el tamaWo de cada columna >sin incluir el caracter N@LL al
(inal de la columna?; FALSE si ocurre un error;
mys?li>fetch>lengths./+s valida solo para la (ila actual en el resultado; Regresa FALSE si se llama
antes de e'ecutar mys/liZ(etchZroEDarrayDo#'ect o despu<s de o#tener todas las (ilas en el resultado;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* W #rom Rountry ?'LE' ZP Rode O4"4* 6";
i# 3$result > $mysQliF>Query3$Query99 :
$ro8 > $resultF>#etch%ro839;
/W display column lenEths W/
#or 3$i>2; $i < count3$resultF>lenEths9; $i[[9 :
print#3"Sield \Cd has OenEth \CdVn", $i[6, $resultF>lenEths)$i/9;
;
$resultF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* W #rom Rountry ?'LE' ZP Rode O4"4* 6";
i# 3$result > mysQli%Query3$linI, $Query99 :
$ro8 > mysQli%#etch%ro83$result9;
/W display column lenEths W/
$lenEths > mysQli%#etch%lenEths3$result9;
#or 3$i>2; $i < count3$lenEths9; $i[[9 :
print#3"Sield \Cd has OenEth \CdVn", $i[6, $lenEths)$i/9;
;
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Sield 6 has OenEth <
Sield C has OenEth 5
Sield < has OenEth 6<
Sield 1 has OenEth K
Sield 5 has OenEth G
Sield G has OenEth 6
Sield H has OenEth G
Sield J has OenEth 1
Sield K has OenEth G
Sield 62 has OenEth G
Sield 66 has OenEth 5
Sield 6C has OenEth 11
Sield 6< has OenEth H
Sield 61 has OenEth <
Sield 65 has OenEth C
mys?li>fetch>ob'ect
>P&P 4?
mys/liZ(etchZo#'ect
>no version in(ormationA might #e only in 5$?
result2_(etchZo#'ect 22 Regresa la (ila actual del resultado como un o#'eto
Kescripci"n
+stilo por procedimientosC
miFto mys?li>fetch>ob'ect > mys/liZresult resultado ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>result \
miFto fetch>ob'ect > void ?
]
La (unci-n mys?li>fetch>ob'ect./ regresar* la (ila actual en el resultado como un o#'eto donde los
atri#utos del o#'eto representan los nom#re de los campos encontrados dentro del resultado; i no
hay m*s (ilas en el resultadoA se regresa NULL
Calores retornados
Regresa un o#'eto /ue corresponde a la (ila o#tenida o NULL si no hay m*s (ilas en el resultado;
Nota- Los nom#res de campos retornados por esta (unci-n di(erencian entre ma?usculas
? m6nusculas;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
Cer tambi%n
mys?li>fetch>array./A mys?li>fetch>assoc./A mys?li>fetch>ro3./A mys?li>?uery./A y
mys?li>data>seeB./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;

$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' by 4L LE&R O4"4* 52,5";
i# 3$result > $mysQliF>Query3$Query99 :
/W #etch object array W/
8hile 3$obj > $resultF>#etch%object399 :
print# 3"\s 3\s9Vn", $objF>.ame, $objF>RountryRode9;
;
/W #ree result set W/
$resultF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' by 4L LE&R O4"4* 52,5";
i# 3$result > mysQli%Query3$linI, $Query99 :
/W #etch associati=e array W/
8hile 3$obj > mysQli%#etch%object3$result99 :
print# 3"\s 3\s9Vn", $objF>.ame, $objF>RountryRode9;
;
/W #ree result set W/
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
ueblo 3+&,9
,r=ada 3+&,9
Rape Roral 3+&,9
-reen Zay 3+&,9
&anta Rlara 3+&,9
mys?li>fetch>ro3
>P&P 4?
mys/liZ(etchZroE
>no version in(ormationA might #e only in 5$?
result2_(etchZroE 22 O#tiene una (ila del resultado como una matriz enumerada
Kescripci"n
+stilo por procedimientosC
miFto mys?li>fetch>ro3 > mys/liZresult resultado ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>result \
miFto fetch>ro3 > void ?
]
Regresa una matriz /ue corresponde a la (ila o#tenidaA o NULL si no hay m*s (ilas;
La (unci-n mys?li>fetch>ro3./ o#tiene una (ila de datos del resultadoA representado por el
par*metro result y lo regresa como una matriz enumeradaA donde cada columna es almacenada en la
matriz empezando de 3 >cero?; 5ada llamada su#secuente a la (unci-n mys?li>fetch>ro3./
regresar* la siguiente (ila dentro del resultadoA o NULL si no hay m*s (ilas;
Calores retornados
mys?li>fetch>ro3./ regresa una matriz /ue corresponde a la (ila o#tenida o NULL si no hay m*s
(ilas en el resultado;
Nota- Los nom#res de campos retornados por esta (unci-n di(erencian entre ma?usculas
? m6nusculas;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
Cer tambi%n
mys?li>fetch>array./A mys?li>fetch>assoc./A mys?li>fetch>ob'ect./A mys?li>?uery./A y
mys?li>data>seeB./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;

$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' by 4L LE&R O4"4* 52,5";
i# 3$result > $mysQliF>Query3$Query99 :
/W #etch object array W/
8hile 3$ro8 > $resultF>#etch%ro8399 :
print# 3"\s 3\s9Vn", $ro8)2/, $ro8)6/9;
;
/W #ree result set W/
$resultF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' by 4L LE&R O4"4* 52,5";
i# 3$result > mysQli%Query3$linI, $Query99 :
/W #etch associati=e array W/
8hile 3$ro8 > mysQli%#etch%ro83$result99 :
print# 3"\s 3\s9Vn", $ro8)2/, $ro8)6/9;
;
/W #ree result set W/
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
ueblo 3+&,9
,r=ada 3+&,9
Rape Roral 3+&,9
-reen Zay 3+&,9
&anta Rlara 3+&,9
mys?li>fetch
mys/liZ(etch 22 Alias de mys?li>stmt>fetch./
Kescripci"n
+sta (unci-n es un alias de mys?li>stmt>fetch./; Para una descripci-n m*s detallada vea
mys?li>stmt>fetch./;
Nota- mys?li>fetch./ es o#soleta y ser* removida;
Cer tambi%n
mys?li>stmt>fetch./;
mys?li>field>count
>P&P 4?
mys/liZ(ieldZcount
>no version in(ormationA might #e only in 5$?
mys/li2_(ieldZcount 22 Regresa el nBmero de columnas para la consulta m*s reciente
Kescripci"n
+stilo por procedimientosC
int mys?li>field>count > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >m<todo?C
class mys?li \
int field>count > void ?
]
Regresa el nBmero de columnas para la m*s reciente consulta en la coneFi-n representada por el
par*metro 6#ent696ca#or_#e_enlace; +sta (unci-n puede ser usada cuando se use la (unci-n Returns
the num#er o( columns (or the most recent /uery on the connection represented #y the l6n>
parameter; ,his (unction can #e use(ul Ehen using the mys?li>store>result./ (unction to determine
i( the /uery should have produced a non2empty result set or not Eithout "noEing the nature o( the
/uery;
Calores retornados
An integer representing the num#er o( (ields in a result set
E'emplos
E'emplo !. Jb'ect oriented style
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "test"9;
$mysQliF>Query3 "L'? *,ZOE 4S EX4&*& #riends"9;
$mysQliF>Query3 "R'E,*E *,ZOE #riends 3id int, name =archar3C299"9;

$mysQliF>Query3 "4.&E'* 4.*? #riends (,O+E& 36,MHartmutM9, 3C, M+l#M9"9;
$mysQliF>real%Query3$H**%?&*%(,'&)MQueryM/9;
i# 3mysQli%#ield%count3$linI99 :
/W this 8as a select/sho8 or describe Query W/
$result > $mysQliF>store%result39;

/W process resultset W/
$ro8 > $resultF>#etch%ro839;
/W #ree resultset W/
$resultF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Procedural style
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "test"9;
mysQli%Query3$linI, "L'? *,ZOE 4S EX4&*& #riends"9;
mysQli%Query3$linI, "R'E,*E *,ZOE #riends 3id int, name =archar3C299"9;

mysQli%Query3$linI, "4.&E'* 4.*? #riends (,O+E& 36,MHartmutM9, 3C, M+l#M9"9;
mysQli%real%Query3$linI, $H**%?&*%(,'&)MQueryM/9;
i# 3mysQli%#ield%count3$linI99 :
/W this 8as a select/sho8 or describe Query W/
$result > mysQli%store%result3$linI9;

/W process resultset W/
$ro8 > mysQli%#etch%ro83$result9;
/W #ree resultset W/
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
mys?li>field>seeB
>P&P 4?
mys/liZ(ieldZsee"
>no version in(ormationA might #e only in 5$?
result2_(ieldZsee" 22 Fi'a el apuntador del resultado a una posicion espec)(ica
Kescripci"n
+stilo por procedimientosC
int mys?li>field>seeB > mys/liZresult resultadoA int (ieldnr ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>result \
int field>seeB > int (ieldnr ?
]
Fi'a el apuntador a la posici-n dada; +n la siguiente llamada a la (unci-n mys?li>fetch>field./A
traer* la de(inici-n de la columna asociada con esa posici-n;
Nota- Para encontrar el inicio de una (ilaA pase una posici-n con valor cero;
Calores retornados
mys?li>field>seeB./ Regresa la posici-n previa del apuntador de campo;
Cer tambi%n
mys?li>fetch>field./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, &ur#ace,rea #rom Rountry ?'LE' ZP Rode O4"4* 5";
i# 3$result > $mysQliF>Query3$Query99 :
/W -et #ield in#ormation #or Cnd column W/
$resultF>#ield%seeI369;
$#in#o > $resultF>#etch%#ield39;

print#3".ame@ \sVn", $#in#oF>name9;
print#3"*able@ \sVn", $#in#oF>table9;
print#3"max. Oen@ \dVn", $#in#oF>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#oF>#laEs9;
print#3"*ype@ \dVnVn", $#in#oF>type9;

$resultF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, &ur#ace,rea #rom Rountry ?'LE' ZP Rode O4"4* 5";
i# 3$result > mysQli%Query3$linI, $Query99 :
/W -et #ield in#ormation #or Cnd column W/
mysQli%#ield%seeI3$result, 69;
$#in#o > mysQli%#etch%#ield3$result9;

print#3".ame@ \sVn", $#in#oF>name9;
print#3"*able@ \sVn", $#in#oF>table9;
print#3"max. Oen@ \dVn", $#in#oF>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#oF>#laEs9;
print#3"*ype@ \dVnVn", $#in#oF>type9;
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
.ame@ &ur#ace,rea
*able@ Rountry
max. Oen@ 62
SlaEs@ <CHGK
*ype@ 1
mys?li>field>tell
>P&P 4?
mys/liZ(ieldZtell
>no version in(ormationA might #e only in 5$?
result2_currentZ(ield 22 O#tiene la posici-n de desplazamiento del apuntador de un resultado
Kescripci"n
+stilo por procedimientosC
int mys?li>field>tell > mys/liZresult resultado ?
+stilo orientado a o#'etos >propiedad?C
class mys?li>result \
int currentZ(ield
]
Regresa la posici-n del apuntador usada en la Bltima llamada a mys?li>fetch>field./; +ste valor
puede ser usada como un argumento de mys?li>field>seeB./;
Calores retornados
Regresa la posici-n actual del apuntador de campo;
Cer tambi%n
mys?li>fetch>field./A y mys?li>field>seeB./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, &ur#ace,rea #rom Rountry ?'LE' ZP Rode O4"4* 5";
i# 3$result > $mysQliF>Query3$Query99 :
/W -et #ield in#ormation #or all columns W/
8hile 3$#in#o > $resultF>#etch%#ield399 :
/W Eet #ieldpointer o##set W/
$current#ield > $resultF>current%#ield;
print#3"Rolumn \d@Vn", $current#ield9;
print#3".ame@ \sVn", $#in#oF>name9;
print#3"*able@ \sVn", $#in#oF>table9;
print#3"max. Oen@ \dVn", $#in#oF>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#oF>#laEs9;
print#3"*ype@ \dVnVn", $#in#oF>type9;
;
$resultF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, &ur#ace,rea #rom Rountry ?'LE' ZP Rode O4"4* 5";
i# 3$result > mysQli%Query3$linI, $Query99 :
/W -et #ield in#ormation #or all #ields W/
8hile 3$#in#o > mysQli%#etch%#ield3$result99 :

/W Eet #ieldpointer o##set W/
$current#ield > mysQli%#ield%tell3$result9;
print#3"Rolumn \d@Vn", $current#ield9;
print#3".ame@ \sVn", $#in#oF>name9;
print#3"*able@ \sVn", $#in#oF>table9;
print#3"max. Oen@ \dVn", $#in#oF>max%lenEth9;
print#3"SlaEs@ \dVn", $#in#oF>#laEs9;
print#3"*ype@ \dVnVn", $#in#oF>type9;
;
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Rolumn 6@
.ame@ .ame
*able@ Rountry
max. Oen@ 66
SlaEs@ 6
*ype@ C51
Rolumn C@
.ame@ &ur#ace,rea
*able@ Rountry
max. Oen@ 62
SlaEs@ <CHGK
*ype@ 1
mys?li>free>result
>P&P 4?
mys/liZ(reeZresult
>no version in(ormationA might #e only in 5$?
result2_(ree 22 Li#era la memoria asociada con el resultado
Kescripci"n
+stilo por procedimientosC
void mys?li>free>result > mys/liZresult resultado ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>result \
void free > void ?
]
La (unci-n mys?li>free>result./ li#era la memoria asociada al resultado representado por el
par*metro resulta#oA la cu*l (ue tomada por mys?li>?uery./A mys?li>store>result./ o
mys?li>use>result./;
Nota- @sted de#e siempre li#erar el resultado con mys?li>free>result./A cuando su
o#'eto resultado no se necesite m*s;
Calores retornados
+sta (unci-n no regresa ningun valor;
Cer tambi%n
mys?li>?uery./A mys?li>stmt>store>result./A mys?li>store>result./A y mys?li>use>result./;
mys?li>get>client>info
>P&P 4?
mys/liZgetZclientZin(o 22 Regresa en una cadena la versi-n del cliente de MyOL
Kescripci"n
cadena mys?li>get>client>info > void ?
La (unci- mys?li>get>client>info./ es usada para regresar una cadena representando la versi-n del
cliente utilizada en la eFtensi-n MyOLi;
Calores retornados
@na cadena /ue representa la versi-n de la li#reria cliente de MyOL
Cer tambi%n
mys?li>get>client>5ersion./A mys?li>get>ser5er>info./A y mys?li>get>ser5er>5ersion./;
E'emplos
E'emplo !. mys?li>get>client>info
<?php
/W 7e donMt need a connection to determine
the =ersion o# mysQl client library W/
print#3"Rlient library =ersion@ \sVn", mysQli%Eet%client%in#o399;
?>
mys?li>get>client>5ersion
>P&P 4?
mys/liZgetZclientZversion 22 O#tiene in(ormaci-n del cliente MyOL
Kescripci"n
int mys?li>get>client>5ersion > void ?
Regresa el nBmero de la versi-n del cliente como un entero;
Calores retornados
@n nBmero /ue representa la versi-n de la li#reria del cliente de MyOL en el (ormato C
ma6n_ers6on/10000 Y m6nor_ers6on /100 Y su1_ers6on; Por e'emploA 8;1;3 es regresado como
83133;
+sto es Btil para determinar r*pidamente la version de las li#rerias del cliente para sa#er si eFisten
algunas capacidades;
Cer tambi%n
mys?li>get>client>info./A mys?li>get>ser5er>info./A y mys?li>get>ser5er>5ersion./;
E'emplos
E'emplo !. mys?li>get>client>5ersion
<?php
/W 7e donMt need a connection to determine
the =ersion o# mysQl client library W/
print#3"Rlient library =ersion@ \dVn", mysQli%Eet%client%=ersion399;
?>
mys?li>get>host>info
>P&P 4?
mys/liZgetZhostZin(o
>no version in(ormationA might #e only in 5$?
mys/li2_getZhostZin(o 22 Regresa una cadena /ue representa el tipo de coneFi-n usada
Kescripci"n
+stilo por procedimientosC
cadena mys?li>get>host>info > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >propiedad?C
class mys?li \
cadena hostZin(o
]
La (unci-n mys?li>get>host>info./ regresa una cadena descri#iendo la coneFi-n utilizadaA
representada por el par*metro 6#ent696ca#or_#e_enlace >incluyendo el nom#re del servidor?;
Calores retornados
@na cadena representando el nom#re del servidor y tipo de coneFi-n;
Cer tambi%n
mys?li>get>proto>info./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W print host in#ormation W/
print#3"Host in#o@ \sVn", $mysQliF>host%in#o9;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W print host in#ormation W/
print#3"Host in#o@ \sVn", mysQli%Eet%host%in#o3$linI99;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Host in#o@ Oocalhost =ia +.4X socIet
mys?li>get>metadata
mys/liZgetZmetadata 22 Alias para mys?li>stmt>result>metadata./
Kescripci"n
+sta (unci-n es un alias de mys?li>stmt>result>metadata./; Para una descripci-n detallada vea
mys?li>stmt>result>metadata./;
Nota- mys?li>get>metadata./ es o#soleta y ser* removida;
Cer tambi%n
mys?li>stmt>result>metadata./;
mys?li>get>proto>info
>P&P 4?
mys/liZgetZprotoZin(o
>no version in(ormationA might #e only in 5$?
mys/li2_protocolZversion 22 Regresa la versi-n del protocolo de MyOL usado
Kescripci"n
+stilo por procedimientosC
int mys?li>get>proto>info > mys/lito identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >propiedad?C
class mys?li \
cadena protocolZversion
]
Regresa un entero /ue representa la veri-n del protocolo MyOL usado por la coneFi-n
representada por el par*metro 6#ent696ca#or_#e_enlace;
Calores retornados
Regresa un entero representando la versi-n del protocolo;
Cer tambi%n
mys?li>get>host>info./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W print protocol =ersion W/
print#3"rotocol =ersion@ \dVn", $mysQliF>protocol%=ersion9;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W print protocol =ersion W/
print#3"rotocol =ersion@ \dVn", mysQli%Eet%proto%in#o3$linI99;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
rotocol =ersion@ 62
mys?li>get>ser5er>info
>P&P 4?
mys/liZgetZserverZin(o
>no version in(ormationA might #e only in 5$?
mys/li2_serverZin(o 22 Regresa la version del servidor de MyOL
Kescripci"n
+stilo por procedimientosC
cadena mys?li>get>ser5er>info > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >propiedad?C
class mys?li \
cadena serverZin(o
]
Regresa una cadena representando la versi-n del servidor MyOL a la /ue la eFtensi-n de MyOLi
est* conectado >representado por el par*metro 6#ent696ca#or_#e_enlace?;
Calores retornados
@na cadena representando la versi-n del servidor;
Cer tambi%n
mys?li>get>client>info./A mys?li>get>client>5ersion./A y mys?li>get>ser5er>5ersion./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W print ser=er =ersion W/
print#3"&er=er =ersion@ \sVn", $mysQliF>ser=er%in#o9;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W print ser=er =ersion W/
print#3"&er=er =ersion@ \sVn", mysQli%Eet%ser=er%in#o3$linI99;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
&er=er =ersion@ 1.6.CFalphaFdebuE
mys?li>get>ser5er>5ersion
>P&P 4?
mys/liZgetZserverZversion 22 Regresa la versi-n del servidor MyOL como un entero
Kescripci"n
+stilo por procedimientosC
int mys?li>get>ser5er>5ersion > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >propiedad?C
class mys?li \
int serverZversion
]
La (unci-n mys?li>get>ser5er>5ersion./ regresa la versi-n del servidor al /ue est* conectado
>representado por el par*metro 6#ent696ca#or_#e_enlace? como un entero;
La (orma del nBmero de version es ma6n_ers6on / 10000 Y m6nor_ers6on / 100 Y su1_ers6on
>i;e; version 8;1;3 is 83133?;
Calores retornados
@n entero representando la versi-n del servidor;
Cer tambi%n
mys?li>get>client>info./A mys?li>get>client>5ersion./A y mys?li>get>ser5er>info./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W print ser=er =ersion W/
print#3"&er=er =ersion@ \dVn", $mysQliF>ser=er%=ersion9;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W print ser=er =ersion W/
print#3"&er=er =ersion@ \dVn", mysQli%Eet%ser=er%=ersion3$linI99;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
&er=er =ersion@ 1262C
mys?li>info
>P&P 4?
mys/liZin(o
>no version in(ormationA might #e only in 5$?
mys/li2_in(o 22 O#tiene in(ormaci-n acerca de la consulta m*s recientemente e'ecutada
Kescripci"n
+stilo por procedimientosC
cadena mys?li>info > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >propiedad?
class mys?li \
cadena in(o
]
La (unci-n mys?li>info./ regresa una cadena proveyendo in(ormaci-n acerca de la consulta
e'ecutada m*s recientemente; La naturaleza de esta cadena es como sigueC
Tabla !. Calores regresados posibles de mys?li>info
Tipo de Consulta E'emplo de cadena resultante
.N+R, .N,O;;;+L+5,;;; RecordsC 133 DuplicatesC 3 LarningsC 3
.N+R, .N,O;;;$AL@+ >;;;?A>;;;?A
>;;;?
RecordsC 7 DuplicatesC 3 LarningsC 3
LOAD DA,A .NF.L+ ;;;
RecordsC 1 DeletedC 3 "ippedC 3 LarningsC
3
AL,+R ,ABL+ ;;; RecordsC 7 DuplicatesC 3 LarningsC 3
@PDA,+ ;;; RoEs matchedC 83 5hangedC 83 LarningsC 3
Nota- La consultas /ue no sean una de las antes mencionadas no est*n soportadas; +n
esta situaci-nA mys?li>info./ regresar* una cadena vac)a;
Calores retornados
@na cadena representando in(ormaci-n adicional acerca de la consulta m*s recientemente e'ecutada;
Cer tambi%n
mys?li>affected>ro3s./A mys?li>3arning>count./A y mys?li>num>ro3s./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$mysQliF>Query3"R'E,*E *E"?','P *,ZOE t6 O4]E Rity"9;
/W 4.&E'* 4.*? .. &EOER* W/
$mysQliF>Query3"4.&E'* 4.*? t6 &EOER* W S'?" Rity ?'LE' ZP 4L O4"4* 652"9;
print#3"\sVn", $mysQliF>in#o9;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
mysQli%Query3$linI, "R'E,*E *E"?','P *,ZOE t6 O4]E Rity"9;
/W 4.&E'* 4.*? .. &EOER* W/
mysQli%Query3$linI, "4.&E'* 4.*? t6 &EOER* W S'?" Rity ?'LE' ZP 4L O4"4* 652"9;
print#3"\sVn", mysQli%in#o3$linI99;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
'ecords@ 652 Luplicates@ 2 7arninEs@ 2
mys?li>init
>P&P 4?
mys/liZinit 22 .nicializa MyOLi y regresa un o#'eto para ser usado con mys/liZreaZconnect
Kescripci"n
mys/li mys?li>init > void ?
Asigna o inicializa un o#'eto MyOL conveniente para mys?li>options./ y mys?li>real>connect./;
Nota- 5ual/uier llamada su#secuente a cual/uier (unci- de mys/li >eFcepto
mys?li>options./? (allar* hasta /ue sea llamada mys?li>real>connect./;
Calores retornados
Regresa un o#'eto;
Cer tambi%n
mys?li>options./A mys?li>close./A mys?li>real>connect./A y mys?li>connect./;
mys?li>insert>id
>P&P 4?
mys/liZinsertZid
>no version in(ormationA might #e only in 5$?
mys/li2_insertZid 22 Regresa el .D generado autom*ticamente en la Bltima consulta
Kescripci"n
+stilo por procedimientosC
miFto mys?li>insert>id > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >propiedad?C
class mys?li \
miFto insertZid
]
La (unci-n mys?li>insert>id./ regresa el .D generado por una consulta en una ta#la con una
columna /ue tiene el atri#uto A@,OZ.N5R+M+N,; i la Bltima consulta no (ue un estatuto
.N+R, o @PDA,+ o si la ta#la modi(icada no tiene una columna con este atri#utoA est* (unci-n
regresar* cero;
Nota- +'ecuta una sentencia .N+R, o @PDA,+ usando la (unci-n
LA,Z.N+R,Z.D>? tam#i<n modi(icar* el valor regresado por la (unci-n
mys?li>insert>id./;
Calores retornados
+l valor de el campo ,UTO_0NCREMENT /ue (ue actualizado por la consulta previa; Regresa cero
si no hu#o una consulta previa en la coneFi-n o si la consulta no actualizo un valor
,UTO_0NCREMENT;
Nota- i el nBmero es mayor al entero m*FimoA mys?li>insert>id./ regresar* una
cadena;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$mysQliF>Query3"R'E,*E *,ZOE myRity O4]E Rity"9;
$Query > "4.&E'* 4.*? myRity (,O+E& 3.+OO, M&tuttEartM, MLE+M, M&tuttEartM, G6H2229";
$mysQliF>Query3$Query9;
print# 3".e8 'ecord has id \d.Vn", $mysQliF>insert%id9;
/W drop table W/
$mysQliF>Query3"L'? *,ZOE myRity"9;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
mysQli%Query3$linI, "R'E,*E *,ZOE myRity O4]E Rity"9;
$Query > "4.&E'* 4.*? myRity (,O+E& 3.+OO, M&tuttEartM, MLE+M, M&tuttEartM, G6H2229";
mysQli%Query3$linI, $Query9;
print# 3".e8 'ecord has id \d.Vn", mysQli%insert%id3$linI99;
/W drop table W/
mysQli%Query3$linI, "L'? *,ZOE myRity"9;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
.e8 'ecord has id 6.
mys?li>Bill
>P&P 4?
mys/liZ"ill
>no version in(ormationA might #e only in 5$?
mys/li2_"ill 22 Le pide al servidor =matar= el proceso MyOL
Kescripci"n
+stilo por procedimientosC
#ool mys?li>Bill > mys/li identi(icadorZdeZenlaceA int processid ?
+stilo orientado a o#'etos >m<tod3?
class mys?li \
#ool Bill > int processid ?
]
+sta (unci-n es usada para pedir al servidor matar le proceso MyOL espec)(icado por el par*metro
process6#; +ste valor de#e ser o#tenido llamando la (unci-n mys?li>thread>id./;
Nota- Para detenener una consulta /ue se est* e'ecutandoA de#es usar el commando
2044 5UERB process6#;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>thread>id./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W determine our thread id W/
$thread%id > $mysQliF>thread%id;
/W ]ill connection W/
$mysQliF>Iill3$thread%id9;
/W *his should produce an error W/
i# 3!$mysQliF>Query3"R'E,*E *,ZOE myRity O4]E Rity"99 :
print#3"Error@ \sVn", $mysQliF>error9;
exit;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W determine our thread id W/
$thread%id > mysQli%thread%id3$linI9;
/W ]ill connection W/
mysQli%Iill3$linI, $thread%id9;
/W *his should produce an error W/
i# 3!mysQli%Query3$linI, "R'E,*E *,ZOE myRity O4]E Rity"99 :
print#3"Error@ \sVn", mysQli%error3$linI99;
exit;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Error@ "y&NO ser=er has Eone a8ay
mys?li>master>?uery
>P&P 4?
mys/liZmasterZ/uery 22 &ace cumplir la e'ecuci-n de una consulta en el servidor en una
con(iguraci-n clienteDservidor
Kescripci"n
#ool mys?li>master>?uery > mys/li identi(icadorZdeZenlaceA cadena consulta ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
mys?li>more>results
>P&P 4?
mys/liZmoreZresults
>no version in(ormationA might #e only in 5$?
mys/li2_moreZresults 22 5heca si hay m* resultados de consultas de una consulta mBltiple
Kescripci"n
#ool mys?li>more>results > mys/li identi(icadorZdeZenlace ?
mys?li>more>results./ indica si uno o m*s resultados est*n disponi#les de una llamada previa a
mys?li>multi>?uery./;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>multi>?uery./A mys?li>ne+t>result./A mys?li>store>result./A y mys?li>use>result./;
E'emplos
$ea mys?li>multi>?uery./;
mys?li>multi>?uery
>P&P 4?
mys/liZmultiZ/uery
>no version in(ormationA might #e only in 5$?
mys/li2_multiZ/uery 22 +'ecuta una consulta en la #ase de datos
Kescripci"n
+stilo por procedimientosC
#ool mys?li>multi>?uery > mys/li identi(icadorZdeZenlaceA cadena consulta ?
+stilo orientado a o#'etos >m<todo?C
class mys?li \
#ool multi>?uery > cadena consulta ?
]
La (unci-n mys?li>multi>?uery./ e'ecuta una o mBltiples consultas las cuales estan concatenadas
por un punto y coma;
Para o#tener los resultados de la primera consulta tu puedes usar mys?li>use>result./ o
mys?li>store>result./; ,odas las consultas su#secuentes pueden ser procesadas usando
mys?li>more>results./ y mys?li>ne+t>result./;
Calores retornados
mys?li>multi>?uery./ solo regresa FALSE si (alla la primera sentencia; Para o#tener los errores
su#secuentes de las otras sentencias tiene /ue llamar primero mys?li>ne+t>result./;
Cer tambi%n
mys?li>use>result./A mys?li>store>result./A mys?li>ne+t>result./A y mys?li>more>results./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* R+''E.*%+&E'39;";
$Query .> "&EOER* .ame S'?" Rity ?'LE' ZP 4L O4"4* C2, 5";
/W execute multi Query W/
i# 3$mysQliF>multi%Query3$Query99 :
do :
/W store #irst result set W/
i# 3$result > $mysQliF>store%result399 :
8hile 3$ro8 > $resultF>#etch%ro8399 :
print#3"\sVn", $ro8)2/9;
;
$resultF>close39;
;
/W print di=ider W/
i# 3$mysQliF>more%results399 :
print#3"FFFFFFFFFFFFFFFFFVn"9;
;
; 8hile 3$mysQliF>next%result399;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* R+''E.*%+&E'39;";
$Query .> "&EOER* .ame S'?" Rity ?'LE' ZP 4L O4"4* C2, 5";
/W execute multi Query W/
i# 3mysQli%multi%Query3$linI, $Query99 :
do :
/W store #irst result set W/
i# 3$result > mysQli%store%result3$linI99 :
8hile 3$ro8 > mysQli%#etch%ro83$result99 :
print#3"\sVn", $ro8)2/9;
;
mysQli%#ree%result3$result9;
;
/W print di=ider W/
i# 3mysQli%more%results3$linI99 :
print#3"FFFFFFFFFFFFFFFFFVn"9;
;
; 8hile 3mysQli%next%result3$linI99;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
my%user^localhost
FFFFFFFFFFFFFFFFF
,mers#oort
"aastricht
Lordrecht
Oeiden
Haarlemmermeer
mys?li>ne+t>result
>P&P 4?
mys/liZneFtZresult
>no version in(ormationA might #e only in 5$?
mys/li2_neFtZresult 22 Prepara el siguiente resultado de una consulta mBltiple
Kescripci"n
#ool mys?li>ne+t>result > mys/li identi(icadorZdeZenlace ?
La (unci-n mys?li>ne+t>result./ prepara el siguiente resultado de una llamada previa a
mys?li>multi>?uery./ el cu*l puede ser o#tenido por mys?li>store>result./ o mys?li>use>result
./;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>multi>?uery./A mys?li>more>results./A mys?li>store>result./A y mys?li>use>result./;
E'emplos
$ea mys?li>multi>?uery./;
mys?li>num>fields
>P&P 4?
mys/liZnumZ(ields
>no version in(ormationA might #e only in 5$?
result2_(ieldZcount 22 O#tiene el nBmero de campos en un resultado Get the num#er o( (ields in a
result
Kescripci"n
+stilo por procedimientosC
int mys?li>num>fields > mys/liZresult resultado ?
+stilo orientado a o#'etos >propiedad
class mys?li>result \
int (ieldZcount
]
mys?li>num>fields./ regresa el nBmero de campos del resultado espec)(icado;
Calores retornados
+l nBmerp de campos en un resultado
Cer tambi%n
mys?li>fetch>field./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
i# 3$result > $mysQliF>Query3"&EOER* W S'?" Rity ?'LE' ZP 4L O4"4* 6"99 :
/W determine number o# #ields in result set W/
$#ield%cnt > $resultF>#ield%count;
print#3"'esult set has \d #ields.Vn", $#ield%cnt9;
/W close result set W/
$resultF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
i# 3$result > mysQli%Query3$linI, "&EOER* W S'?" Rity ?'LE' ZP 4L O4"4* 6"99 :
/W determine number o# #ields in result set W/
$#ield%cnt > mysQli%num%#ields3$result9;
print#3"'esult set has \d #ields.Vn", $#ield%cnt9;
/W close result set W/
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
'esult set has 5 #ields.
mys?li>num>ro3s
>P&P 4?
mys/liZnumZroEs 22 O#tiene el nBmero de (ilas en un resultado
Kescripci"n
+stilo por procedimientosC
miFto mys?li>num>ro3s > mys/liZresult resultado ?
+stilo orientado a o#'etos >propiedad?C
class mys?li>result \
miFto numZroEs
]
Regresa el nBmero de (ilas en el resultado;
+l uso de mys?li>num>ro3s./ depende de si se usa resultados con almacenamiento intermedio
>#u((ered? o no; +n caso de usar resultados sin almacenamiento intermedioA mys?li>num>ro3s./ no
dar* el nBmero correcto de (ilas hasta /ue se hayan o#tenido todas las (ilas del resultado;
Calores retornados
Regresa el nBmero de (ilas en el resultado;
Nota- i el nBmero de (ilas es superior al valor entero maFimoA el nBmero ser*
regresado como una cadena;
Cer tambi%n
mys?li>affected>ro3s./A mys?li>store>result./A mys?li>use>result./A y mys?li>?uery./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
i# 3$result > $mysQliF>Query3"&EOER* Rode, .ame S'?" Rountry ?'LE' ZP .ame"99 :
/W determine number o# ro8s result set W/
$ro8%cnt > $resultF>num%ro8s;
print#3"'esult set has \d ro8s.Vn", $ro8%cnt9;
/W close result set W/
$resultF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
i# 3$result > mysQli%Query3$linI, "&EOER* Rode, .ame S'?" Rountry ?'LE' ZP .ame"99 :
/W determine number o# ro8s result set W/
$ro8%cnt > mysQli%num%ro8s3$result9;
print#3"'esult set has \d ro8s.Vn", $ro8%cnt9;
/W close result set W/
mysQli%#ree%result3$result9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
'esult set has C<K ro8s.
mys?li>options
>P&P 4?
mys/liZoptions
>no version in(ormationA might #e only in 5$?
mys/li2_options 22 Fi'a opciones
Kescripci"n
+stilo por procedimientosC
#ool mys?li>options > mys/li identi(icadorZdeZenlaceA int opci-nA miFto valor ?
+stilo orientado a o#'etos >m<todo?
class mys?li \
#ool options > int opci-nA miFto valor ?
]
mys?li>options./ puede ser usada para (i'ar opciones eFtra en la coneFi-n y a(ectar el
comportamiento para la coneFi-n;
+sta (unci-n puede ser llamada mBltiples veces para (i'ar di(erentes opciones;
mys?li>options./ de#e ser llamada despu<s de mys?li>init./ y antes de mys?li>real>connect./;
+l par*metro opc6`n es la opci-n /ue se #usca cam#iarA el par*metro alor es el valor para la
opci-n; +l par*metro opc6efghon puede ser una de las siguientesC
Tabla !. Jpciones 5alidas
Nombre Kescripci"n
MYS.LI_OPT_CONNECT
_TIMEOUT
,iempo /ue espera para ser conectado en segundos
MYS.LI_OPT_LOCAL_I
NFILE
ha#ilitaDdesha#ilita el uso de 4O,D 4OC,4 0N304E
MYS.LI_INIT_CMD comando a e'ecutar despu<s cuando se conecte al servidor MyOL
MYS.LI_READ_DEFAUL
T_FILE
Lee las opciones del archivo de con(iguraci-n espec)(icado en vez
demy.cn#
MYS.LI_READ_DEFAUL
T_#ROUP
Lee las opciones del grupo del archivomy.cn# o del archivo
espec)(icado con MYS.L_READ_DEFAULT_FILE;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>init./A y mys?li>real>connect./;
E'emplos
$ea mys?li>real>connect./;
mys?li>param>count
mys/liZparamZcount 22 Alias para mys?li>stmt>param>count./
Kescripci"n
+sta (unci-n es un alias de mys?li>stmt>param>count./; Para una descipci-n detallada vea
mys?li>stmt>param>count./;
Nota- mys?li>param>count./ es o#soleta y ser* removida;
Cer tambi%n
mys?li>stmt>param>count./;
mys?li>ping
>P&P 4?
mys/liZping
>no version in(ormationA might #e only in 5$?
mys/li2_ping 22 Revisa una coneFi-n al servidor o intenta reconectar si la coneFi-n se ha perdido
Kescripci"n
+stilo por procedimientosC
#ool mys?li>ping > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >m<todo?C
class mys?li \
#ool ping > void ?
]
5heca si la coneFi-n al servidor est* operando; i se perdicdeo y la opci-n glo#al m?s@l6.reconnect
esta activa se intenta una reconeFi-n autom*tica;
+sta (unci-n puede ser usada por clientes /ue duran mucho tiempo inactivosA para checar si el
servidor ha verrado al coneFi-n y reconectarse en caso necesario;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W checI i# ser=er is ali=e W/
i# 3$mysQliF>pinE399 :
print# 3"?ur connection is oI!Vn"9;
; else :
print# 3"Error@ \sVn", $mysQliF>error9;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W checI i# ser=er is ali=e W/
i# 3mysQli%pinE3$linI99 :
print# 3"?ur connection is oI!Vn"9;
; else :
print# 3"Error@ \sVn", mysQli%error3$linI99;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
?ur connection is oI!
mys?li>prepare
>P&P 4?
mys/liZprepare
>no version in(ormationA might #e only in 5$?
mys/li2_prepare 22 Prepara una sentencia OL para su e'ecuci-n
Kescripci"n
+stilo por procedimientosC
miFto mys?li>prepare > mys/li identi(icadorZdeZenlaceA cadena /uery ?
+stilo orientado a o#'etos >m<todo?
class mys?li \
miFto prepare > cadena /uery ?
]
mys?li>prepare./ prepara la consulta OL acentuada por la terminaci-n en caracter nuloA y regresa
un mane'ador para ser usado para las operaciones en la sentencia; La consulta de#e consistir de un
solo enunciado OL;
Nota- No de#e agregar el punto y coma al (ina o QE al enunciado;
+l par*metro @uer? puede incluir uno o m*s marcadores de par*metros en la sentencia OLA
incluyendo el caracter >%? en las posiciones apropiadas;
Nota- Los marcadores son legales solo en ciertos lugares de la sentencia OL; Por
e'emploA son permitidos en la lista de $AL@+>? de una sentencia .N+R, >para
espec)(icar los valores de las columnas en la (ila?A o en una comparaci-n con una
columna en una clausula L&+R+ para especi(icar un valor de comparaci-n;
in em#argoA no son permitidos para identi(icadores >tales como nom#res de ta#las y
columnasA en la selecci-n de los nom#res de las columnas a ser regresadas por la
sentencia +L+5,?A o para especi(icar operadores #inarios tales como : el signo de
igual; La Bltima restricci-n es necesaria por/ue ser)a imposi#le determinar el tipo del
par*metro; +n generalA los par*metros son legales solo en las sentencias del lengua'e de
manipulaci-n de datos >DML?A y no en las sentencias del lengua'e de de(inici-n de datos
>DDL?;
Los marcadores de par*metros de#en estar ligados a varia#les de la aplicaci-n usando
mys?li>stmt>bind>param./ yDo mys?li>stmt>bind>result./ antes de e'ecutar la sentencia OL u
o#tener las (ilas;
Calores retornados
mys?li>prepare./ regresa un o#'eto o FALSE si ocurre un erro;
Cer tambi%n
mys?li>stmt>e+ecute./A mys?li>stmt>fetch./A mys?li>stmt>bind>param./A
mys?li>stmt>bind>result./_A y mys?li>stmt>close./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$city > ",mers#oort";
/W create a prepared statement W/
i# 3$stmt > $mysQliF>prepare3"&EOER* Listrict S'?" Rity 7HE'E .ame>?"99 :
/W bind parameters #or marIers W/
$stmtF>bind%param3"s", $city9;
/W execute Query W/
$stmtF>execute39;
/W bind result =ariables W/
$stmtF>bind%result3$district9;
/W #etch =alue W/
$stmtF>#etch39;
print#3"\s is in district \sVn", $city, $district9;
/W close statement W/
$stmtF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$city > ",mers#oort";
/W create a prepared statement W/
i# 3$stmt > mysQli%prepare3$linI, "&EOER* Listrict S'?" Rity 7HE'E .ame>?"99 :
/W bind parameters #or marIers W/
mysQli%stmt%bind%param3$stmt, "s", $city9;
/W execute Query W/
mysQli%stmt%execute3$stmt9;
/W bind result =ariables W/
mysQli%stmt%bind%result3$stmt, $district9;
/W #etch =alue W/
mysQli%stmt%#etch3$stmt9;
print#3"\s is in district \sVn", $city, $district9;
/W close statement W/
mysQli%stmt%close3$stmt9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
,mers#oort is in district +trecht
mys?li>?uery
>P&P 4?
mys/liZ/uery
>no version in(ormationA might #e only in 5$?
mys/li2_/uery 22 +'ecuta una consulta en la #ase de datos
Kescripci"n
+stilo por procedimientosC
miFto mys?li>?uery > mys/li identi(icadorZdeZenlaceA cadena consulta PA int resultmodeQ ?
+stilo orientado a o#'etos >m<todo?C
class mys?li \
miFto ?uery > cadena consulta ?
]
La (unci- mys?li>?uery./ es usada para simpli(icar la acci-n de e'ecutar una consulta so#re la #ase
de datos representada por el par*metro 6#ent696ca#or_#e_enlace;
FuncionalmenteA usar est* (unci-n es identi(o a llamar mys?li>real>?uery./ seguida ya sea de
mys?li>use>result./ o mys?li>store>result./ donde consulta es la cadena de la consulta y
resultmo#e es una de las constantes MBS540_USE_RESU4T o MBS540_STORE_RESU4T
dependiendo del comportamiento deseado; Por de(ectoA si no se da resultmo#eA
MBS540_STORE_RESU4T es usado;
i usted e'ecuta mys?li>?uery./ con resultmo#e MBS540_USE_RESU4T todas las llamadas
su#secuentes regresar*n el c-digo de error Comman#s out o9 s?nc a menos /ue llame
mys?li>free>result./;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo; Para SE4ECTC
S!OIC DESCR0AE o EF+4,0N mys?li>?uery./ regresar* un o#'eto resultante;
Cer tambi%n
mys?li>real>?uery./A mys?li>multi>?uery./A y mys?li>free>result./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W Rreate table doesnMt return a resultset W/
i# 3$mysQliF>Query3"R'E,*E *E"?','P *,ZOE myRity O4]E Rity"9 >>> *'+E9 :
print#3"*able myRity success#ully created.Vn"9;
;
/W &elect Queries return a resultset W/
i# 3$result > $mysQliF>Query3"&EOER* .ame S'?" Rity O4"4* 62"99 :
print#3"&elect returned \d ro8s.Vn", $resultF>num%ro8s9;
/W #ree result set W/
$resultF>close39;
;
/W 4# 8e ha=e to retrie=e larEe amount o# data 8e use "P&NO4%+&E%'E&+O* W/
i# 3$result > $mysQliF>Query3"&EOER* W S'?" Rity", "P&NO4%+&E%'E&+O*99 :
/W .ote, that 8e canMt execute any #unctions 8hich interact 8ith the
ser=er until result set 8as closed. ,ll calls 8ill return an
Mout o# syncM error W/
i# 3!$mysQliF>Query3"&E* ^a@>Mthis 8ill not 8orIM"99 :
print#3"Error@ \sVn", $mysQliF>error9;
;
$resultF>close39;
;
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W Rreate table doesnMt return a resultset W/
i# 3mysQli%Query3$linI, "R'E,*E *E"?','P *,ZOE myRity O4]E Rity"9 >>> *'+E9 :
print#3"*able myRity success#ully created.Vn"9;
;
/W &elect Queries return a resultset W/
i# 3$result > mysQli%Query3$linI, "&EOER* .ame S'?" Rity O4"4* 62"99 :
print#3"&elect returned \d ro8s.Vn", mysQli%num%ro8s3$result99;
/W #ree result set W/
mysQli%#ree%result3$result9;
;
/W 4# 8e ha=e to retrie=e larEe amount o# data 8e use "P&NO4%+&E%'E&+O* W/
i# 3$result > mysQli%Query3$linI, "&EOER* W S'?" Rity", "P&NO4%+&E%'E&+O*99 :
/W .ote, that 8e canMt execute any #unctions 8hich interact 8ith the
ser=er until result set 8as closed. ,ll calls 8ill return an
Mout o# syncM error W/
i# 3!mysQli%Query3$linI, "&E* ^a@>Mthis 8ill not 8orIM"99 :
print#3"Error@ \sVn", mysQli%error3$linI99;
;
mysQli%#ree%result3$result9;
;
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
*able myRity success#ully created.
&elect returned 62 ro8s.
Error@ Rommands out o# sync; Pou canMt run this command no8
mys?li>real>connect
>P&P 4?
mys/liZrealZconnect
>no version in(ormationA might #e only in 5$?
mys/li2_realZconnect 22 A#re una coneFi-n a un servidor de MyOL
Kescripci"n
+stilo por procedimientos
#ool mys?li>real>connect > mys/li lin" PA cadena e/uipoZhu<sped PA cadena usuario PA cadena
contraseWa PA cadena nom#reZdeZ#d PA int puerto PA cadena soc"et PA int #anderasQQQQQQQ ?
+stilo orientado a o#'etos >m<todo?
class mys?li \
#ool real>connect > Pcadena e/uipoZhu<sped PA cadena usuario PA cadena contraseWa PA cadena
nom#reZdeZ#d PA int puerto PA cadena soc"et PA int #anderasQQQQQQQ ?
]
mys?li>real>connect./ .ntenta esta#lecer una coneFi-n con un e/uipo /ue tiene e'ecutando un
servidor de MyOL representado por el par*metro e@u6po_hucspe#;
+sta (unci-n es di(erente de mys?li>connect./ en lo siguienteC
mys?li>real>connect./ necesita un o#'eto valido el cual tiene /ue ser creado por la (unci-n
mys?li>init./
5on la (unci-n mys?li>options./ tu puedes (i'ar varias opciones por coneFi-n;
5on el par*metro 1an#eras tu puedes (i'ar di(erentes opciones de la coneFi-nC
Tabla !. 1anderas soportadas
Nombre Kescripci"n
MBS540_C40ENT_COM+
RESS
@sa el protocolo de compresi-n
MBS540_C40ENT_3OUN
D_ROIS
Regresa el nBmero de (ilas encontradasA no el nBmero de (ilas
a(ectadas
MBS540_C40ENT_0-NO
RE_S+,CE
Permite espacios despues de los nom#res de las (unciones;
&ace pala#ras reservadas los nom#res de las (unciones;
MBS540_C40ENT_0NTER
,CT0(E
Permite los segundos 6nteract6e_t6meout >en vez de
7a6t_t6meout? de inactividad antes de cerrar la coneFi-n
MBS540_C40ENT_SS4 @sa L >encriptaci-n?
Nota- Por razones de seguridad la #andera MU4T0_ST,TEMENT no es
permitida en P&P; i /uiere e'ecutar consultas mBltiples use la (unci-n
mys?li>multi>?uery./;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>connect./A mys?li>init./A mys?li>options./A mys?li>ssl>set./A y mys?li>close./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
/W create a connection object 8hich is not connected W/
$mysQli > mysQli%init39;
/W set connection options W/
$mysQliF>options3"P&NO4%4.4*%R?"",.L, "&E* ,+*?R?""4*>2"9;
$mysQliF>options3"P&NO4%?*%R?..ER*%*4"E?+*, 59;
/W connect to ser=er W/
$mysQliF>real%connect3MlocalhostM, Mmy%userM, Mmy%pass8ordM, M8orldM9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
print# 3"Ronnection@ \sVn.", $mysQliF>host%in#o9;
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
/W create a connection object 8hich is not connected W/
$linI > mysQli%init39;
/W set connection options W/
mysQli%options3$linI, "P&NO4%4.4*%R?"",.L, "&E* ,+*?R?""4*>2"9;
mysQli%options3$linI, "P&NO4%?*%R?..ER*%*4"E?+*, 59;
/W connect to ser=er W/
mysQli%real%connect3$linI, MlocalhostM, Mmy%userM, Mmy%pass8ordM, M8orldM9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
print# 3"Ronnection@ \sVn.", mysQli%Eet%host%in#o3$linI99;
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Ronnection@ Oocalhost =ia +.4X socIet
mys?li>real>escape>string
>P&P 4?
mys/liZrealZescapeZstring
>no version in(ormationA might #e only in 5$?
mys/li2_realZescapeZstring 22 Protege caracteres especiales en una cadena para ser usada en una
sentencia OLA tomando en cuenta el con'unto de caracteres para la coneFi-n
Kescripci"n
+stilo por procedimientosC
cadena mys?li>real>escape>string > mys/li identi(icadorZdeZenlaceA cadena escapestr ?
+stilo orientado a o#'etos >m<todo?C
class mys?li \
cadena real>escape>string > cadena escapestr ?
]
+sta (unci-n es usada para crear una cadena OL legal /ue se puede usar en una sentencia OL; La
cadena escapestr est* codi(icada para una cadena OL protegidaA tomando en cuenta el con'unto de
caracteres actual para la coneFi-n;
Los caracteres codi(icados son NU4 L,SC00 0MC QnC QrC QC <C *C ? Control=^;
Calores retornados
Regresa una cadena protegida;
Cer tambi%n
mys?li>character>set>name./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$mysQliF>Query3"R'E,*E *E"?','P *,ZOE myRity O4]E Rity"9;
$city > "Ms HertoEenbosch";
/W this Query 8ill #ail, cause 8e didnMt escape $city W/
i# 3!$mysQliF>Query3"4.&E'* into myRity 3.ame9 (,O+E& 3M$cityM9"99 :
print#3"Error@ \sVn", $mysQliF>sQlstate9;
;
$city > $mysQliF>real%escape%strinE3$city9;
/W this Query 8ith escaped $city 8ill 8orI W/
i# 3$mysQliF>Query3"4.&E'* into myRity 3.ame9 (,O+E& 3M$cityM9"99 :
print#3"\d 'o8 inserted.Vn", $mysQliF>a##ected%ro8s9;
;
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
mysQli%Query3$linI, "R'E,*E *E"?','P *,ZOE myRity O4]E Rity"9;
$city > "Ms HertoEenbosch";
/W this Query 8ill #ail, cause 8e didnMt escape $city W/
i# 3!mysQli%Query3$linI, "4.&E'* into myRity 3.ame9 (,O+E& 3M$cityM9"99 :
print#3"Error@ \sVn", mysQli%sQlstate3$linI99;
;
$city > mysQli%real%escape%strinE3$linI, $city9;
/W this Query 8ith escaped $city 8ill 8orI W/
i# 3mysQli%Query3$linI, "4.&E'* into myRity 3.ame9 (,O+E& 3M$cityM9"99 :
print#3"\d 'o8 inserted.Vn", mysQli%a##ected%ro8s3$linI99;
;
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Error@ 1C222
6 'o8 inserted.
mys?li>real>?uery
>P&P 4?
mys/liZrealZ/uery
>no version in(ormationA might #e only in 5$?
mys/li2_realZ/uery 22 +'ecuta una consulta OL
Kescripci"n
+stilo por procedimientos
#ool mys?li>real>?uery > mys/li identi(icadorZdeZenlaceA cadena consulta ?
+stilo orientado a o#'etos >m<todo?C
class mys?li \
#ool real>?uery > cadena consulta ?
]
La (uncicpvwxn mys?li>real>?uery./ es usada para e'ecutar solo una consulta so#re la #ase de
datos representada por 6#ent696ca#or_#e_enlace cuyo resultado puede ser o#tenido o almacenado
usando las (unciones mys?li>store>result./ o mys?li>use>result./;
Nota- Para determinar si una consulta data de#e regresar un resultado o noA vea
mys?li>field>count./;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>?uery./A mys?li>store>result./A y mys?li>use>result./;
mys?li>report
>P&P 4?
mys/liZreport 22 &a#ilita o desha#ilita las (unciones internas de reporte
Kescripci"n
#ool mys?li>report > int #anderas ?
mys?li>report./ es una poderosa (unci-n para me'orar tus consultas y c-digo durante las etapas de
desarrollo y prue#a; Dependiendo de las #anderas reporta errores de las llamadas a las (unciones o
las consultas /ue no usan un )ndice >o usa un mal )ndice?;
Tabla !. 1anderas permitidas
Nombre Kescripci"n
MBS540_RE+ORT_O33 Desha#ilita el reporteado
MBS540_RE+ORT_ERR
OR
Reporta errores de las llamadas a cual/uier (unci-n
MBS540_RE+ORT_0NDE
F
Reporta si no se usa )ndice o si se us- un )ndice mal construido en una
consulta
MBS540_RE+ORT_,44 Fi'a todas las opciones >reporta todo?
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>debug./A y mys?li>dump>debug>info./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
/W acti=ate reportinE W/
mysQli%report3"P&NO4%'E?'*%,OO9;
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W this Query should report an error W/
$result > $mysQliF>Query3"&EOER* .ame S'?" .onexistinEtable 7HE'E population > 52222"9;
/W this Query should report a 8arninE W/
$result > $mysQliF>Query3"&EOER* .ame S'?" Rity 7HE'E population > 52222"9;
$resultF>close39;
$mysQliF>close39;
?>
mys?li>rollbacB
>P&P 4?
mys/liZroll#ac"
>no version in(ormationA might #e only in 5$?
mys/li2_roll#ac" 22 RegresaDdeshace la transacci-n actual
Kescripci"n
#ool mys?li>rollbacB > mys/li identi(icadorZdeZenlace ?
class mys?li \
#ool rollbacB > void ?
]
Regresa o deshace la transacci-n actual pra la #ase de datos espec)(icada por el par*metro
6#ent696ca#or_#e_enlace;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>commit./A y mys?li>autocommit./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W disable autocommit W/
$mysQliF>autocommit3S,O&E9;
$mysQliF>Query3"R'E,*E *,ZOE myRity O4]E Rity"9;
$mysQliF>Query3",O*E' *,ZOE myRity *ype>4nnoLZ"9;
$mysQliF>Query3"4.&E'* 4.*? myRity &EOER* W S'?" Rity O4"4* 52"9;
/W commit insert W/
$mysQliF>commit39;
/W delete all ro8s W/
$mysQliF>Query3"LEOE*E S'?" myRity"9;
i# 3$result > $mysQliF>Query3"&EOER* R?+.*3W9 S'?" myRity"99 :
$ro8 > $resultF>#etch%ro839;
print#3"\d ro8s in table myRity.Vn", $ro8)2/9;
/W Sree result W/
$resultF>close39;
;
/W 'ollbacI W/
$mysQliF>rollbacI39;
i# 3$result > $mysQliF>Query3"&EOER* R?+.*3W9 S'?" myRity"99 :
$ro8 > $resultF>#etch%ro839;
print#3"\d ro8s in table myRity 3a#ter rollbacI9.Vn", $ro8)2/9;
/W Sree result W/
$resultF>close39;
;
/W Lrop table myRity W/
$mysQliF>Query3"L'? *,ZOE myRity"9;
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W disable autocommit W/
mysQli%autocommit3$linI, S,O&E9;
mysQli%Query3$linI, "R'E,*E *,ZOE myRity O4]E Rity"9;
mysQli%Query3$linI, ",O*E' *,ZOE myRity *ype>4nnoLZ"9;
mysQli%Query3$linI, "4.&E'* 4.*? myRity &EOER* W S'?" Rity O4"4* 52"9;
/W commit insert W/
mysQli%commit3$linI9;
/W delete all ro8s W/
mysQli%Query3$linI, "LEOE*E S'?" myRity"9;
i# 3$result > mysQli%Query3$linI, "&EOER* R?+.*3W9 S'?" myRity"99 :
$ro8 > mysQli%#etch%ro83$result9;
print#3"\d ro8s in table myRity.Vn", $ro8)2/9;
/W Sree result W/
mysQli%#ree%result3$result9;
;
/W 'ollbacI W/
mysQli%rollbacI3$linI9;
i# 3$result > mysQli%Query3$linI, "&EOER* R?+.*3W9 S'?" myRity"99 :
$ro8 > mysQli%#etch%ro83$result9;
print#3"\d ro8s in table myRity 3a#ter rollbacI9.Vn", $ro8)2/9;
/W Sree result W/
mysQli%#ree%result3$result9;
;
/W Lrop table myRity W/
mysQli%Query3$linI, "L'? *,ZOE myRity"9;
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
2 ro8s in table myRity.
52 ro8s in table myRity 3a#ter rollbacI9.
mys?li>rpl>parse>enabled
>P&P 4?
mys/liZrplZparseZena#led 22 Revisa si el analizador RPL est* ha#ilitado
Kescripci"n
int mys?li>rpl>parse>enabled > mys/li identi(icadorZdeZenlace ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
mys?li>rpl>probe
>P&P 4?
mys/liZrplZpro#e 22 Prue#a RPL
Kescripci"n
#ool mys?li>rpl>probe > mys/li identi(icadorZdeZenlace ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
mys?li>rpl>?uery>type
>P&P 4?
mys/liZrplZ/ueryZtype
>no version in(ormationA might #e only in 5$?
mys/li2_rplZ/ueryZtype 22 Regresa el tipo de consulta RPL
Kescripci"n
+stilo por procedimientosC
int mys?li>rpl>?uery>type > mys/li lin"A string /uery ?
+stilo orientado a o#'etos >m<todo?
class mys?li \
int rpl>?uery>type > string /uery ?
]
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
mys?li>select>db
>P&P 4?
mys/liZselectZd#
>no version in(ormationA might #e only in 5$?
mys/li2_selectZd# 22 elecciona la #ase de datos por de(ecto para las consultas de la #ase de datos
Kescripci"n
#ool mys?li>select>db > mys/li identi(icadorZdeZenlaceA cadena d#name ?
La (unci-n mys?li>select>db./ selecciona la #ase de datos por de(ecto >espec)(icada por el
par*metro #1name? a ser usada cuando se e'ecuten consultas so#re la coneFi-n de #ase de datos
representada por el par*metro 6#ent696ca#or_#e_enlace parameter;
Nota- +sta (unci-n solo puede ser usada para cam#iar la #ase de datos por de(ecto para
la coneFi-n; @sted puede seleccionar la #ase de datos en el cuarto par*metro en
mys?li>connect./;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>connect./A y mys?li>real>connect./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "test"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W return name o# current de#ault database W/
i# 3$result > $mysQliF>Query3"&EOER* L,*,Z,&E39"99 :
$ro8 > $resultF>#etch%ro839;
print#3"Le#ault database is \s.Vn", $ro8)2/9;
$resultF>close39;
;
/W chanEe db to 8orld db W/
$mysQliF>select%db3"8orld"9;
/W return name o# current de#ault database W/
i# 3$result > $mysQliF>Query3"&EOER* L,*,Z,&E39"99 :
$ro8 > $resultF>#etch%ro839;
print#3"Le#ault database is \s.Vn", $ro8)2/9;
$resultF>close39;
;
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "test"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W return name o# current de#ault database W/
i# 3$result > mysQli%Query3$linI, "&EOER* L,*,Z,&E39"99 :
$ro8 > mysQli%#etch%ro83$result9;
print#3"Le#ault database is \s.Vn", $ro8)2/9;
mysQli%#ree%result3$result9;
;
/W chanEe db to 8orld db W/
mysQli%select%db3$linI, "8orld"9;
/W return name o# current de#ault database W/
i# 3$result > mysQli%Query3$linI, "&EOER* L,*,Z,&E39"99 :
$ro8 > mysQli%#etch%ro83$result9;
print#3"Le#ault database is \s.Vn", $ro8)2/9;
mysQli%#ree%result3$result9;
;
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Le#ault database is test.
Le#ault database is 8orld.
mys?li>send>long>data
mys/liZsendZlongZdata 22 Alias para mys?li>stmt>send>long>data./
Kescripci"n
+sta (unci- es un alias de mys?li>stmt>send>long>data./; Para una descripci-n detallada vea
mys?li>stmt>send>long>data./;
Nota- mys?li>send>long>data./ es o#soleta y ser* removida;
Cer tambi%n
mys?li>stmt>send>long>data./;
mys?li>send>?uery
>P&P 4?
mys/liZsendZ/uery
>no version in(ormationA might #e only in 5$?
mys/li2_sendZ/uery 22 +nv)a la consulta y regresa
Kescription
Procedural styleC
#ool mys?li>send>?uery > mys/li lin"A string /uery ?
O#'ect oriented style >method?
class mys?li \
#ool send>?uery > string /uery ?
]
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
mys?li>ser5er>end
>P&P 4?
mys/liZserverZend 22 ,ermina el proceso del ervidor
Kescripci"n
void mys?li>ser5er>end > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
mys?li>ser5er>init
>P&P 4?
mys/liZserverZinit 22 .nicializa un servidor em#e#ido
Kescripci"n
#ool mys?li>ser5er>init > Parray server PA array groupsQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
mys?li>set>opt
mys/liZsetZopt 22 Alias de mys?li>options./
Kescripci"n
+sta (unci-n es un alias de mys?li>options./;
mys?li>s?lstate
>P&P 4?
mys/liZs/lstate
>no version in(ormationA might #e only in 5$?
mys/li2_s/lstate 22 Regresa el error OL,A,+ de la operaci-n MyOL previa
Kescripci"n
+stilo por procedimientosC
cadena mys?li>s?lstate > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >propiedad?C
class mys?li \
int s/lstate
]
Regresa una cadena conteniendo el c-digo de error OL,A,+ para el Bltimo error; +l c-digo de
error consiste en cinco caracteres; <00000< signi(ica /ue no hay error; Los valores est*n especi(icados
por el OL AN. y ODB5; Para una lista de los valores posi#lesA vea
httpCDDdev;mys/l;comDdocDmys/lDenD+rror2returns;html;
Nota- Noete /ue no todos los errores de MyOL han sido mapeados a los de
OL,A,+; +l valor !B000 >error general? es usado para errores no mapeados;
Calores retornados
Regresa una cadena conteniendo el c-digo de error OL,A, para el Bltimo error; +l c-digo de
error consiste en cinco caracteres; <00000< signi(ica /ue no hu#o error;
Cer tambi%n
mys?li>errno./A y mys?li>error./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W *able Rity already exists, so 8e should Eet an error W/
i# 3!$mysQliF>Query3"R'E,*E *,ZOE Rity 34L 4.*, .ame (,'RH,'3<299"99 :
print#3"Error F &NO&*,*E \s.Vn", $mysQliF>sQlstate9;
;
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W *able Rity already exists, so 8e should Eet an error W/
i# 3!mysQli%Query3$linI, "R'E,*E *,ZOE Rity 34L 4.*, .ame (,'RH,'3<299"99 :
print#3"Error F &NO&*,*E \s.Vn", mysQli%sQlstate3$linI99;
;
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Error F &NO&*,*E 1C&26.
mys?li>ssl>set
>P&P 4?
mys/liZsslZset
>no version in(ormationA might #e only in 5$?
mys/li2_sslZset 22 @sado para esta#lecer coneFiones seguras usando L
Kescripci"n
+stilo por procedimientosC
#ool mys?li>ssl>set > mys/li identi(icadorZdeZenlaceA cadena "eyA cadena certA cadena caA cadena
capathA cadena cipher ?
+stilo orientado a o#'etos >m<todo?C
class mys?li \
#ool ssl>set > cadena "eyA cadena certA cadena caA cadena capathA cadena cipher ?
]
La (unci-n mys?li>ssl>set./ es usada para esta#lecer coneFiones seguras usando L; +sta de#e ser
llamada antes de mys?li>real>connect./; +sta (unci-n no hace nada a menos /ue el soporte
OpenL este activo;
>e? es la u#icaci-n del archivo principal; cert es la u#icaci-n del archivo del certi(icado; ca es la
u#icaci-n del archivo de autorizaci-n del certi(icado; capath es la u#icaci-n del directorio /ue
contiene los certi(icados L 5A en /ue se con() en (ormato pem; c6pher es una lista de los ciphes
permitidos a usar para la encriptaci-n L; 5ual/uier par*metro L sin usarA reci#ir* el valor
NULL
Calores retornados
+st* (unci-n siempre regresa el valor TRUE; i la disposici-n de L est* incorrecta
mys?li>real>connect./ regresar* un error cuando se intente conectar;
Cer tambi%n
mys?li>options./A y mys?li>real>connect./;
mys?li>stat
>P&P 4?
mys/liZstat
>no version in(ormationA might #e only in 5$?
mys/li2_stat 22 O#tiene el estado actual del sistema
Kescripci"n
+stilo por procedimientosC
miFto mys?li>stat > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >m<todo?C
class mys?li \
miFto stat > void ?
]
mys?li>stat./ regresa una cadena conteniendo in(ormaci-n similar a la proveida por el comando
Hmys/ladmin statusH; +sto incluye el tiempo total activo del servidor en segundos y en nBmero de
procesos e'ecutandoseA preguntasA recargas y ta#las a#iertas;
Calores retornados
@na cadena descri#iendo el estado del servidor; FALSE si un error ocurre;
Cer tambi%n
mys?li>get>ser5er>info./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
print# 3"&ystem status@ \sVn", $mysQliF>stat399;
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
print#3"&ystem status@ \sVn", mysQli%stat3$linI99;
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
&ystem status@ +ptime@ CHC *hreads@ 6 Nuestions@ 5<12 &lo8 Queries@ 2
?pens@ 6< Slush tables@ 6 ?pen tables@ 2 Nueries per second a=E@ 6K.G<C
"emory in use@ J1KG] "ax memory used@ J5G2]
mys?li>stmt>affected>ro3s
>P&P 4?
mys/liZstmtZa((ectedZroEs
>no version in(ormationA might #e only in 5$?
mys/liZstmt2_a((ectedZroEs 22 Regresa el nBmero total de (ilas cam#iadasA #orradas o insertadas
por la Bltima sentencia e'ecutada
Kescripci"n
+stilo por procedimientos C
miFto mys?li>stmt>affected>ro3s > mys/liZstmt stmt ?
+tilo orientado a o#'etos >propiedad?C
class mys?li>stmt \
miFto a((ectedZroEs
]
mys?li>stmt>affected>ro3s./ regresa el nBmero de (ilas a(ectadas por consultas .N+R,A
@PDA,+ o D+L+,+; i la Bltima consulta (ue invalidaA esta (unci-n regresar* 21
La (unci-n mys?li>stmt>affected>ro3s./ solo (unciona con consultas /ue actualizan ta#las; Para
o#tener el nBmero de (ilas de una consulta +L+5,A use la (unci-n mys?li>stmt>num>ro3s./;
Calores retornados
@n entero mayor a cero indica el nBmero de (ilas a(ectadas u o#tenidas; 5ero indica /ue no hu#o
registros actualizados para sentencias @PDA,+DD+L+,+A no hu#o (ilas /ue concordaran la
cl*usula L&+R+ en la consulta o /ue no se ha e'ecutado ninguna consulta todav)a; 21 indi(ca /ue la
consulta ha regresado un error;
Nota- i el nBmero de (ilas a(ectadas es mayor /ue el valor entero maFimo de P&PA el
nBmero de (ilas a(ectadas ser* regresada como una cadena;
Cer tambi%n
mys?li>stmt>num>ro3s./A y mys?li>prepare./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W create temp table W/
$mysQliF>Query3"R'E,*E *E"?','P *,ZOE myRountry O4]E Rountry"9;
$Query > "4.&E'* 4.*? myRountry &EOER* W S'?" Rountry 7HE'E Rode O4]E ?";
/W prepare statement W/
i# 3$stmt > $mysQliF>prepare3$Query99 :
/W Zind =ariable #or placeholder W/
$code > M,\M;
$stmtF>bind%param3"s", $code9;

/W execute statement W/
$stmtF>execute39;
print#3"ro8s inserted@ \dVn", $stmtF>a##ected%ro8s9;
/W close statement W/
$stmtF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W create temp table W/
mysQli%Query3$linI, "R'E,*E *E"?','P *,ZOE myRountry O4]E Rountry"9;
$Query > "4.&E'* 4.*? myRountry &EOER* W S'?" Rountry 7HE'E Rode O4]E ?";
/W prepare statement W/
i# 3$stmt > mysQli%prepare3$linI, $Query99 :
/W Zind =ariable #or placeholder W/
$code > M,\M;
mysQli%stmt%bind%param3$stmt, "s", $code9;

/W execute statement W/
mysQli%stmt%execute3$stmt9;
print#3"ro8s inserted@ \dVn", mysQli%stmt%a##ected%ro8s3$stmt99;
/W close statement W/
mysQli%stmt%close3$stmt9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
ro8s inserted@ 6H
mys?li>stmt>bind>param
>P&P 4?
mys/liZstmtZ#indZparam
>no version in(ormationA might #e only in 5$?
stmt2_#indZparam 22 +nlaza varia#les como par*metros a una sentencia preparada
Kescripci"n
+stilo por procedimientosC
#ool mys?li>stmt>bind>param > mys/liZstmt stmtA cadena typesA miFto ivar1 PA miFto i ;;;Q ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>stmt \
#ool bind>param > matriz typesA miFto ivar1 PA miFto i ;;;Q ?
]
mys?li>stmt>bind>param./ es usada para enlazar varia#les para los marcadores de par*metros en
la sentencia OL /ue (ue pasada a mys?li>prepare./; La cadena t?pes contiene uno o m*s
caracteres los cuales especi(ican los tipos para las varia#les enlazadas correspondientes;
Tabla !. Especificaci"n de caracteres de tipo
Caracter Kescripci"n
i La varia#le correspondiente tiene tipo entero
d La varia#le correspondiente tiene tipo do#le
s La varia#le correspondiente tiene tipo cadena
#
La varia#le correspondiente tiene tipo BLOB y ser* enviada en
pa/uetes
Nota- i el tamaWo de los datos de la varia#le eFceden el tamaWo maFimo permitido
para un pa/uete >maFZalloEedZpac"age?A tienes /ue espec)(icar 1 en t?pes y usar
mys?li>stmt>send>long>data./ para enviar los datos en pa/uetes;
+l nBmero de varia#les y longitud de la cadena t?pes de#e coincidir los par*metros en la
sentencia;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cea tambi%n
mys?li>stmt>bind>result./A mys?li>stmt>e+ecute./A mys?li>stmt>fetch./A mys?li>prepare./A
mys?li>stmt>send>long>data./A mys?li>stmt>errno./A y mys?li>stmt>error./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3MlocalhostM, Mmy%userM, Mmy%pass8ordM, M8orldM9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$stmt > $mysQliF>prepare3"4.&E'* 4.*? RountryOanEuaEe (,O+E& 3?, ?, ?, ?9"9;
$stmtF>bind%param3MsssdM, $code, $lanEuaEe, $o##icial, $percent9;
$code > MLE+M;
$lanEuaEe > MZa=arianM;
$o##icial > "S";
$percent > 66.C;
/W execute prepared statement W/
$stmtF>execute39;
print#3"\d 'o8 inserted.Vn", $stmtF>a##ected%ro8s9;
/W close statement and connection W/
$stmtF>close39;
/W Rlean up table RountryOanEuaEe W/
$mysQliF>Query3"LEOE*E S'?" RountryOanEuaEe 7HE'E OanEuaEe>MZa=arianM"9;
print#3"\d 'o8 deleted.Vn", $mysQliF>a##ected%ro8s9;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3MlocalhostM, Mmy%userM, Mmy%pass8ordM, M8orldM9;
/W checI connection W/
i# 3!$linI9 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$stmt > mysQli%prepare3$linI, "4.&E'* 4.*? RountryOanEuaEe (,O+E& 3?, ?, ?, ?9"9;
mysQli%stmt%bind%param3$stmt, MsssdM, $code, $lanEuaEe, $o##icial, $percent9;
$code > MLE+M;
$lanEuaEe > MZa=arianM;
$o##icial > "S";
$percent > 66.C;
/W execute prepared statement W/
mysQi%stmt%execute3$stmt9;
print#3"\d 'o8 inserted.Vn", mysQli%stmt%a##ected%ro8s3$stmt99;
/W close statement and connection W/
mysQli%stmt%close3$stmt9;
/W Rlean up table RountryOanEuaEe W/
mysQli%Query3$linI, "LEOE*E S'?" RountryOanEuaEe 7HE'E OanEuaEe>MZa=arianM"9;
print#3"\d 'o8 deleted.Vn", mysQli%a##ected%ro8s3$linI99;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
6 'o8 inserted.
6 'o8 deleted.
mys?li>stmt>bind>result
>P&P 4?
mys/liZstmtZ#indZresult
>no version in(ormationA might #e only in 5$?
stmt2_#indZresult 22 +nlaza varia#les a una sentencia preparada para el almacenamiento del
resultado
Kescripci"n
+stilo por procedimientosC
#ool mys?li>stmt>bind>result > mys/liZstmt stmtA miFto ivar1 PA miFto i ;;;Q ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>stmt \
#ool bind>result > miFto ivar1 PA miFto i ;;;Q ?
]
mys?li>stmt>bind>result./ es usada para asociar >enlazar? columnas en el resultado a varia#les;
5uando mys?li>stmt>fetch./ es llamada para o#tener datosA el protocolo clienteDservidor de
MyOL coloca los datos para las columnas delimitadas en las varia#les espec)(icadas en ar1C ...;
Nota- Note /ue todas las columnas de#en estar delimitadas antes de llamar
mys?li>stmt>fetch./; Dependiendo en los tipos de columnas a las varia#les delimitadas
pueden silenciosamente cam#iar al tipo correspondiente en P&P;
@na columna puede ser delimitada o re2delimitada en cual/uier momentoA aBn despues
de /ue se ha recuperado parcialmente un resultado; La nueva delimitaci-n toma e(ecto
la siguiente vez /ue mys?li>stmt>fetch./ es llamada;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>stmt>bind>param./A mys?li>stmt>e+ecute./A mys?li>stmt>fetch./A mys?li>prepare./A
mys?li>stmt>prepare./A mys?li>stmt>init./A mys?li>stmt>errno./A y mys?li>stmt>error./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W prepare statement W/
i# 3$stmt > $mysQliF>prepare3"&EOER* Rode, .ame S'?" Rountry ?'LE' ZP .ame O4"4* 5"99 :
$stmtF>execute39;
/W bind =ariables to prepared statement W/
$stmtF>bind%result3$col6, $colC9;
/W #etch =alues W/
8hile 3$stmtF>#etch399 :
print#3"\s \sVn", $col6, $colC9;
;
/W close statement W/
$stmtF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3!$linI9 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W prepare statement W/
i# 3$stmt > mysQli%prepare3$linI, "&EOER* Rode, .ame S'?" Rountry ?'LE' ZP .ame O4"4* 5"99 :
mysQli%stmt%execute3$stmt9;
/W bind =ariables to prepared statement W/
mysQli%stmt%bind%result3$stmt, $col6, $colC9;
/W #etch =alues W/
8hile 3mysQli%stmt%#etch3$stmt99 :
print#3"\s \sVn", $col6, $colC9;
;
/W close statement W/
mysQli%stmt%close3$stmt9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
,S- ,#Ehanistan
,OZ ,lbania
LY, ,lEeria
,&" ,merican &amoa
,.L ,ndorra
mys?li>stmt>close
>P&P 4?
mys/liZstmtZclose
>no version in(ormationA might #e only in 5$?
mys/liZstmt2_close 22 5ierra la sentencia preparada
Kescripci"n
+stilo por procedimientosC
#ool mys?li>stmt>close > mys/liZstmt stmt ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>stmt \
#ool close > void ?
]
5ierra una sentencia preparada; mys?li>stmt>close./ tam#i<n desalo'a el mane'ador de sentencias
apuntado por stmt; i la sentencia actual tiene resultados pendientes o no le)dosA esta (unci-n los
cancela de tal manera /ue la siguiente consulta pueda ser e'ecutada;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>prepare./;
mys?li>stmt>data>seeB
>P&P 4?
mys/liZstmtZdataZsee"
>no version in(ormationA might #e only in 5$?
stmt2_dataZsee" 22 Busca una (ila ar#itrariamente en el resultado
Kescripci"n
+stilo por procedimientosC
#ool mys?li>stmt>data>seeB > mys/liZstmt statementA int o((set ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>stmt \
#ool data>seeB > int o((set ?
]
La (unci-n mys?li>stmt>data>seeB./ #usca por una posici-n ar#itraria en el resultadoA especi(icada
por o99set en el resultado representado por statement; +l par*metro o99set de#e ser un valor entre
cero y el nBmero total de (ilas menos 1 >3;;mys?li>stmt>num>ro3s./ 2 1?;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>prepare./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
/W ?pen a connection W/
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' ZP .ame";
i# 3$stmt > $mysQliF>prepare3$Query99 :
/W execute Query W/
$stmtF>execute39;
/W bind result =ariables W/
$stmtF>bind%result3$name, $code9;
/W store result W/
$stmtF>store%result39;
/W seeI to ro8 no. 122 W/
$stmtF>data%seeI3<KK9;
/W #etch =alues W/
$stmtF>#etch39;
print# 3"Rity@ \s Rountrycode@ \sVn", $name, $code9;
/W close statement W/
$stmtF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
/W ?pen a connection W/
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' ZP .ame";
i# 3$stmt > mysQli%prepare3$linI, $Query99 :
/W execute Query W/
mysQli%stmt%execute3$stmt9;
/W bind result =ariables W/
mysQli%stmt%bind%result3$stmt, $name, $code9;
/W store result W/
mysQli%stmt%store%result3$stmt9;
/W seeI to ro8 no. 122 W/
mysQli%stmt%data%seeI3$stmt, <KK9;
/W #etch =alues W/
mysQli%stmt%#etch3$stmt9;
print# 3"Rity@ \s Rountrycode@ \sVn", $name, $code9;
/W close statement W/
mysQli%stmt%close3$stmt9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Rity@ Zenin Rity Rountrycode@ .-,
mys?li>stmt>errno
>P&P 4?
mys/liZstmtZerrno
>no version in(ormationA might #e only in 5$?
mys/liZstmt2_errno 22 Regresa el c-digo de error para la llamada m*s reciente
Kescripci"n
+stilo por procedimientosC
int mys?li>stmt>errno > mys/liZstmt stmt ?
+stilo orientado a o#'etos >propiedad?C
class mys?li>stmt \
int errno
]
Para la sentencia espec)(icada por stmtA mys?li>stmt>errno./ regresa el c-digo de error para la
(unci-n m*s recientemente e'ecutadaA /ue pudo ser eFitosa o (allar;
Nota- Los nBmeros de los mensa'es de error del cliente est*n listados en el archivo de
enca#ezados errmsE.h de MyOLA Los nBmeros de los mensa'es de error del servidor
est*n listados en mysQld%error.h; +n la distri#uci-n de los (uentes de MyOL
puede encontrar una lista completa de los mensa'es de error y los nBmeros de error en el
archivo Locs/mysQld%error.txt;
Calores retornados
@n valor de c-digo de error; 5ero signi(ica /ue no ocurri- error;
Cer tambi%n
mys?li>stmt>error./A y mys?li>stmt>s?lstate./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
/W ?pen a connection W/
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$mysQliF>Query3"R'E,*E *,ZOE myRountry O4]E Rountry"9;
$mysQliF>Query3"4.&E'* 4.*? myRountry &EOER* W S'?" Rountry"9;
$Query > "&EOER* .ame, Rode S'?" myRountry ?'LE' ZP .ame";
i# 3$stmt > $mysQliF>prepare3$Query99 :
/W drop table W/
$mysQliF>Query3"L'? *,ZOE myRountry"9;
/W execute Query W/
$stmtF>execute39;
print#3"Error@ \d.Vn", $stmtF>errno9;
/W close statement W/
$stmtF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
/W ?pen a connection W/
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
mysQli%Query3$linI, "R'E,*E *,ZOE myRountry O4]E Rountry"9;
mysQli%Query3$linI, "4.&E'* 4.*? myRountry &EOER* W S'?" Rountry"9;
$Query > "&EOER* .ame, Rode S'?" myRountry ?'LE' ZP .ame";
i# 3$stmt > mysQli%prepare3$linI, $Query99 :
/W drop table W/
mysQli%Query3$linI, "L'? *,ZOE myRountry"9;
/W execute Query W/
mysQli%stmt%execute3$stmt9;
print#3"Error@ \d.Vn", mysQli%stmt%errno3$stmt99;
/W close statement W/
mysQli%stmt%close3$stmt9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Error@ 661G.
mys?li>stmt>error
>P&P 4?
mys/liZstmtZerror
>no version in(ormationA might #e only in 5$?
mys/liZstmt2_error 22 Regresa una descipci-n para el Bltimo error
Kescripci"n
+stilo por procedimientosC
cadena mys?li>stmt>error > mys/liZstmt stmt ?
+stilo orientado a o#'etos >propiedad?C
class mys?li>stmt \
cadena error
]
Para la sentencia espec)(icada por stmtA mys?li>stmt>error./ regresa un mensa'e de error para la
llamada m*s reciente a una sentencia OLA /ue pudo ser eFitosa o (allar;
Calores retornados
@na cadena /ue descri#e el error; @na cadena vac)a si no hu#o error;
Cer tambi%n
mys?li>stmt>errno./A y mys?li>stmt>s?lstate./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
/W ?pen a connection W/
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$mysQliF>Query3"R'E,*E *,ZOE myRountry O4]E Rountry"9;
$mysQliF>Query3"4.&E'* 4.*? myRountry &EOER* W S'?" Rountry"9;
$Query > "&EOER* .ame, Rode S'?" myRountry ?'LE' ZP .ame";
i# 3$stmt > $mysQliF>prepare3$Query99 :
/W drop table W/
$mysQliF>Query3"L'? *,ZOE myRountry"9;
/W execute Query W/
$stmtF>execute39;
print#3"Error@ \s.Vn", $stmtF>error9;
/W close statement W/
$stmtF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
/W ?pen a connection W/
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
mysQli%Query3$linI, "R'E,*E *,ZOE myRountry O4]E Rountry"9;
mysQli%Query3$linI, "4.&E'* 4.*? myRountry &EOER* W S'?" Rountry"9;
$Query > "&EOER* .ame, Rode S'?" myRountry ?'LE' ZP .ame";
i# 3$stmt > mysQli%prepare3$linI, $Query99 :
/W drop table W/
mysQli%Query3$linI, "L'? *,ZOE myRountry"9;
/W execute Query W/
mysQli%stmt%execute3$stmt9;
print#3"Error@ \s.Vn", mysQli%stmt%error3$stmt99;
/W close statement W/
mysQli%stmt%close3$stmt9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Error@ *able M8orld.myRountryM doesnMt exist.
mys?li>stmt>e+ecute
>P&P 4?
mys/liZstmtZeFecute
>no version in(ormationA might #e only in 5$?
stmt2_eFecute 22 +'ecuta una consulta preparada
Kescripci"n
+stilo por procedimientosC
#ool mys?li>stmt>e+ecute > mys/liZstmt stmt ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>stmt \
#ool e+ecute > void ?
]
La (unci-n mys?li>stmt>e+ecute./ e'ecuta una consulta /ue ha#)a sido previamente preparada
usando la (unci-n mys?li>prepare./ representada por el o#'eto stmt; 5uando se e'ecuta cual/uier
marcador de par*metro /ue eFista ser* autom*ticamente remplazado con los datos apropiados;
i la sentencia es @PDA,+A D+L+,+A o .N+R,A el nBmero total de (ilas a(ectadas puede ser
determinada usa#do la (unci-n mys?li>stmt>affected>ro3s./; AsimismoA si la consulta produce un
resultado la (unci-n mys?li>fetch./ es usada;
Nota- 5uando se usa mys?li>stmt>e+ecute./A la (unci-n mys?li>fetch./ de#e ser usada
para recuperar los datos antes de realizar cual/uier consulta adicional;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>prepare./A y mys?li>stmt>bind>param./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;

/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;

$mysQliF>Query3"R'E,*E *,ZOE myRity O4]E Rity"9;

/W repare an insert statement W/
$Query > "4.&E'* 4.*? myRity 3.ame, RountryRode, Listrict9 (,O+E& 3?,?,?9";
$stmt > $mysQliF>prepare3$Query9;
$stmtF>bind%param3"sss", $=al6, $=alC, $=al<9;
$=al6 > M&tuttEartM;
$=alC > MLE+M;
$=al< > MZadenF7uerttemberEM;

/W Execute the statement W/
$stmtF>execute39;
$=al6 > MZordeauxM;
$=alC > MS',M;
$=al< > M,QuitaineM;

/W Execute the statement W/
$stmtF>execute39;
close statement W/
$stmtF>close39;
/W retrie=e all ro8s #rom myRity W/
$Query > "&EOER* .ame, RountryRode, Listrict S'?" myRity";
i# 3$result > $mysQliF>Query3$Query99 :
8hile 3$ro8 > $resultF>#etch%ro8399 :
print#3"\s 3\s,\s9Vn", $ro8)2/, $ro8)6/, $ro8)C/9;
;
/W #ree result set W/
$resultF>close39;
;
/W remo=e table W/
$mysQliF>Query3"L'? *,ZOE myRity"9;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;

/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;

mysQli%Query3$linI, "R'E,*E *,ZOE myRity O4]E Rity"9;

/W repare an insert statement W/
$Query > "4.&E'* 4.*? myRity 3.ame, RountryRode, Listrict9 (,O+E& 3?,?,?9";
$stmt > mysQli%prepare3$linI, $Query9;
mysQli%stmt%bind%param3$stmt, "sss", $=al6, $=alC, $=al<9;
$=al6 > M&tuttEartM;
$=alC > MLE+M;
$=al< > MZadenF7uerttemberEM;

/W Execute the statement W/
mysQli%stmt%execute3$stmt9;
$=al6 > MZordeauxM;
$=alC > MS',M;
$=al< > M,QuitaineM;

/W Execute the statement W/
mysQli%stmt%execute3$stmt9;
/W close statement W/
mysQli%stmt%close3$stmt9;
/W retrie=e all ro8s #rom myRity W/
$Query > "&EOER* .ame, RountryRode, Listrict S'?" myRity";
i# 3$result > mysQli%Query3$linI, $Query99 :
8hile 3$ro8 > mysQli%#etch%ro83$result99 :
print#3"\s 3\s,\s9Vn", $ro8)2/, $ro8)6/, $ro8)C/9;
;
/W #ree result set W/
mysQli%#ree%result3$result9;
;
/W remo=e table W/
mysQli%Query3$linI, "L'? *,ZOE myRity"9;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
&tuttEart 3LE+,ZadenF7uerttemberE9
Zordeaux 3S',,,Quitaine9
mys?li>stmt>fetch
>P&P 4?
mys/liZstmtZ(etch
>no version in(ormationA might #e only in 5$?
stmt2_(etch 22 O#tiene el resultado de una sentencia OL preparada en las varia#les enlazadas
Kescripci"n
+stilo por procedimientosC
miFto mys?li>stmt>fetch > mys/liZstmt stmt ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>stmt \
miFto fetch > void ?
]
mys?li>stmt>fetch./ o#tiene el resultado de una sentencia preparada en las varia#les ligadas por
mys?li>stmt>bind>result./;
Nota- Note /ue todas las columnas de#en estar enlazadas por la aplicaci-n antes de
llamar mys?li>stmt>fetch./;
Calores retornados
Tabla !. Calores retornados
Calor Kescripci"n
TRUE
+Fito; Los datos han sido
o#tenidos
FALSE Ocurri- un error
NULL No eFisten m*s (ilasDdatos
Cer tambi%n
mys?li>prepare./A mys?li>stmt>errno./A mys?li>stmt>error./A y mys?li>stmt>bind>result./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;

$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' by 4L LE&R O4"4* 652,5";
i# 3$stmt > $mysQliF>prepare3$Query99 :
/W execute statement W/
$stmtF>execute39;
/W bind result =ariables W/
$stmtF>bind%result3$name, $code9;
/W #etch =alues W/
8hile 3$stmtF>#etch399 :
print# 3"\s 3\s9Vn", $name, $code9;
;
/W close statement W/
$stmtF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' by 4L LE&R O4"4* 652,5";
i# 3$stmt > mysQli%prepare3$linI, $Query99 :
/W execute statement W/
mysQli%stmt%execute3$stmt9;
/W bind result =ariables W/
mysQli%stmt%bind%result3$stmt, $name, $code9;
/W #etch =alues W/
8hile 3mysQli%stmt%#etch3$stmt99 :
print# 3"\s 3\s9Vn", $name, $code9;
;
/W close statement W/
mysQli%stmt%close3$stmt9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
'ocI#ord 3+&,9
*allahassee 3+&,9
&alinas 3+&,9
&anta Rlarita 3+&,9
&prinE#ield 3+&,9
mys?li>stmt>free>result
>P&P 4?
mys/liZstmtZ(reeZresult
>no version in(ormationA might #e only in 5$?
stmt2_(reeZresult 22 Li#era la memoria donde se almacen- el resultado
Kescripci"n
+stilo por procedimientosC
void mys?li>stmt>free>result > mys/liZstmt stmt ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>stmt \
void free>result > void ?
]
La (unci-n mys?li>stmt>free>result./ li#era la memoria del resultado asociado con la sentencia
representada por el par*metro stmtA el cual (ue asignado por mys?li>stmt>store>result./;
Calores retornados
+sta (unci-n no regresa ningun valor;
Cer tambi%n
mys?li>stmt>store>result./;
mys?li>stmt>init
>P&P 4?
mys/liZstmtZinit
>no version in(ormationA might #e only in 5$?
mys/li2_stmtZinit 22 .nicializa una sentencia y regresa un o#'eto para ser usado con
mys/liZstmtZprepare
Kescripci"n
+stilo por procedimientos C
mys/liZstmt mys?li>stmt>init > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >propiedad?C
class mys?li \
mys/liZstmt stmt>init > void ?
]
Asigna e inicializa una o#'eto de sentencia conveniente para mys?li>stmt>prepare./;
Nota- 5ual/uier llamada su#secuente a cual/uier (unci-n mys/liZstmt (allar* hasta /ue
sea llamada mys?li>stmt>prepare./;
Calores retornados
Regresa un o#'eto;
Cer tambi%n
mys?li>stmt>prepare./;
mys?li>stmt>num>ro3s
>P&P 4?
mys/liZstmtZnumZroEs
>no version in(ormationA might #e only in 5$?
stmt2_numZroEs 22 Regresa el nBmero de (ilas en un resultado de la sentencia
Kescripci"n
+stilo por procedimientos C
miFto mys?li>stmt>num>ro3s > mys/liZstmt stmt ?
+stilo orientado a o#'etos >propiedad?C
class mys?li>stmt \
int numZroEs
]
Regresa el nBmero de (ilas en el resultado; +l uso de mys?li>stmt>num>ro3s./ depende de /ue use
mys?li>stmt>store>result./ para almacenar todo el resultado en el mane'ador de la sentencia;
i usa mys?li>stmt>store>result./A mys?li>stmt>num>ro3s./ de#e ser llamada inmediatamente;
Calores retornados
@n entero representando el nBmero de (ilas en el resultado;
Cer tambi%n
mys?li>stmt>affected>ro3s./A mys?li>prepare./A y mys?li>stmt>store>result./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
/W ?pen a connection W/
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' ZP .ame O4"4* C2";
i# 3$stmt > $mysQliF>prepare3$Query99 :
/W execute Query W/
$stmtF>execute39;
/W store result W/
$stmtF>store%result39;
print#3".umber o# ro8s@ \d.Vn", $stmtF>num%ro8s9;
/W close statement W/
$stmtF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
/W ?pen a connection W/
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' ZP .ame O4"4* C2";
i# 3$stmt > mysQli%prepare3$linI, $Query99 :
/W execute Query W/
mysQli%stmt%execute3$stmt9;
/W store result W/
mysQli%stmt%store%result3$stmt9;
print#3".umber o# ro8s@ \d.Vn", mysQli%stmt%num%ro8s3$stmt99;
/W close statement W/
mysQli%stmt%close3$stmt9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
.umber o# ro8s@ C2.
mys?li>stmt>param>count
>P&P 4?
mys/liZstmtZparamZcount
>no version in(ormationA might #e only in 5$?
stmt2_paramZcount 22 Regresa el nBmero de par*metros para la sentencia dada
Kescripci"n
+stilo por procedimientosC
int mys?li>stmt>param>count > mys/liZstmt stmt ?
+stilo orientado a o#'etos >propiedad?C
class mys?li>stmt \
int paramZcount
]
mys?li>stmt>param>count./ regresa el nBmero de marcadores de par*metro presentes en la
sentencia preparada;
Calores retornados
Regresa un entero representando el nBmero de par*metros;
Cer tambi%n
mys?li>prepare./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
i# 3$stmt > $mysQliF>prepare3"&EOER* .ame S'?" Rountry 7HE'E .ame>? ?' Rode>?"99 :
$marIer > $stmtF>param%count;
print#3"&tatement has \d marIers.Vn", $marIer9;
/W close statement W/
$stmtF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
i# 3$stmt > mysQli%prepare3$linI, "&EOER* .ame S'?" Rountry 7HE'E .ame>? ?' Rode>?"99 :
$marIer > mysQli%stmt%param%count3$stmt9;
print#3"&tatement has \d marIers.Vn", $marIer9;
/W close statement W/
mysQli%stmt%close3$stmt9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
&tatement has C marIers.
mys?li>stmt>prepare
>P&P 4?
mys/liZstmtZprepare
>no version in(ormationA might #e only in 5$?
stmt2_prepare 22 Prepara una sentencia OL para su e'ecuci-n
Kescripci"n
+stilo por procedimientosC
#ool mys?li>stmt>prepare > mys/liZstmt stmtA cadena /uery ?
+stilo orientado a o#'etos >m<todo?
class mys?li>stmtt \
miFto prepare > cadena /uery ?
]
mys?li>stmt>prepare./ prepara la consulta OL apuntada por la cadena de consulta terminada en
N@LL; +l o#'eto de la sentencia tiene /ue ser asignado por mys?li>stmt>init./; La consulta de#e
consistir de una sentencia OL sencilla;
Nota- No de#e agregar al (inal el punto y coma o QE a la sentencia;
+l par*metro @uer? puede incluir uno o m*s marcadores de par*metro en la sentencia OLA
insertando el caracter interrogativo >%? en la posici-n apropiada;
Nota- Los marcadores son legales solo en ciertos lugares en la sentencia OL; Por
e'emploA son permitidos en la lista $AL@+>? de una sentencia .N+R, >para
espec)(icar calores de columnas para una (ila?A o en una comparaci-n con una columna
en una clausula L&+R+ para espec)(icar un valor de comparaci-n;
in em#argoA no son permitidos para identi(icadores >tales como nom#res de ta#la o
columna?A en el listado de los nom#res de las columnas a ser regresadas por la sentencia
+L+5,A o para espec)(icar operadores de resultado #inarioA tales como : el signo de
igual; La Bltima restricci-n es necesaria por/ue ser) imposu#le determinar el tipo de
par*metro; +n generalA los marcadores de par*metro son legales solo en las sentencias
del lengua'e de manipulaci-n de datos >DML?A y no en las sentencias del lengua'e de
de(inici-n de datos >DDL?;
Los marcadores de par*metro de#en estar enlazados a varia#les de aplicaci-n usando
mys?li>stmt>bind>param./ yDo mys?li>stmt>bind>result./ antes de e'ecutar la sentencia u
o#tener las (ilas del resultado;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>stmt>init./A mys?li>stmt>e+ecute./A mys?li>stmt>fetch./A mys?li>stmt>bind>param./A
mys?li>stmt>bind>result./A y mys?li>stmt>close./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$city > ",mers#oort";
/W create a prepared statement W/
$stmt > $mysQliF>stmt%init39;
i# 3$stmtF>prepare3"&EOER* Listrict S'?" Rity 7HE'E .ame>?"99 :
/W bind parameters #or marIers W/
$stmtF>bind%param3"s", $city9;
/W execute Query W/
$stmtF>execute39;
/W bind result =ariables W/
$stmtF>bind%result3$district9;
/W #etch =alue W/
$stmtF>#etch39;
print#3"\s is in district \sVn", $city, $district9;
/W close statement W/
$stmtF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$city > ",mers#oort";
/W create a prepared statement W/
$stmt > mysQli%stmt%init39;
i# 3$stmt > mysQli%stmt%prepare3$stmt, "&EOER* Listrict S'?" Rity 7HE'E .ame>?"99 :
/W bind parameters #or marIers W/
mysQli%stmt%bind%param3$stmt, "s", $city9;
/W execute Query W/
mysQli%stmt%execute3$stmt9;
/W bind result =ariables W/
mysQli%stmt%bind%result3$stmt, $district9;
/W #etch =alue W/
mysQli%stmt%#etch3$stmt9;
print#3"\s is in district \sVn", $city, $district9;
/W close statement W/
mysQli%stmt%close3$stmt9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
,mers#oort is in district +trecht
mys?li>stmt>reset
>P&P 4?
mys/liZstmtZreset
>no version in(ormationA might #e only in 5$?
stmt2_reset 22 Resetea una sentencia preparada
Kescripci"n
+stilo por procedimientosC
#ool mys?li>stmt>reset > mys/liZstmt stmt ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>stmt \
#ool reset > void ?
]
La (unci-n mys?li>stmt>reset./ resetea una sentencia preparada en el cliente y el servidor al estado
/ue esta#a despu<s de PR+PAR+; Por ahora esta es usada principalmente para resetear los datos
enviados con mys?li>stmt>send>long>data./;
Nota- Para preparar una sentencia con otra consulta OL use la (unci-n
mys?li>stmt>prepare./;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>prepare./;
mys?li>stmt>result>metadata
>P&P 4?
mys/liZstmtZresultZmetadata 22 Regresa metadatos del resultado de una sentencia preparada
Kescripci"n
+stilo por procedimientosC
miFto mys?li>stmt>result>metadata > mys/liZstmt stmt ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>stmt \
miFto result>metadata > void ?
]
i una sentencia pasada a mys?li>prepare./ es una /ue produce un resultadoA
mys?li>stmt>result>metadata./ regresa el o#'eto del resultado /ue puede ser usado para procesar
los metadatos de in(ormaci-n tales como el nBmero total de campos e in(ormaci-n del campo
individual;
Nota- +ste apuntador del resultado puede ser pasado como un argumento a cual/uiera
de las (unciones #asadas en campos /ue procesan los metadatos del resultado tales
comoC
mys?li>num>fields./
mys?li>fetch>field./
mys?li>fetch>field>direct./
mys?li>fetch>fields./
mys?li>field>count./
mys?li>field>seeB./
mys?li>field>tell./
mys?li>free>result./
La estructura del resultado de#e ser li#erada cuando haya terminado con estaA lo cual puede hacer
pasandola a mys?li>free>result./
Nota- +l resultado regresado por mys?li>stmt>result>metadata./ contiene solo
metadatos; No contiene ninguna (ila del resultado; Las (ilas son o#tenidas usando el
mane'ador de la sentencia con mys?li>fetch./;
Calores retornados
mys?li>stmt>result>metadata./ regresa un o#'eto del resultado o FALSE si ocurrio un error;
Cer tambi%n
mys?li>prepare./A y mys?li>free>result./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "test"9;
$mysQliF>Query3"L'? *,ZOE 4S EX4&*& #riends"9;
$mysQliF>Query3"R'E,*E *,ZOE #riends 3id int, name =archar3C299"9;

$mysQliF>Query3"4.&E'* 4.*? #riends (,O+E& 36,MHartmutM9, 3C, M+l#M9"9;
$stmt > $mysQliF>prepare3"&EOER* id, name S'?" #riends"9;
$stmtF>execute39;
/W Eet resultset #or metadata W/
$result > $stmtF>result%metadata39;
/W retrie=e #ield in#ormation #rom metadata result set W/
$#ield > $resultF>#etch%#ield39;
print#3"Sieldname@ \sVn", $#ieldF>name9;
/W close resultset W/
$resultF>close39;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "test"9;
mysQli%Query3$linI, "L'? *,ZOE 4S EX4&*& #riends"9;
mysQli%Query3$linI, "R'E,*E *,ZOE #riends 3id int, name =archar3C299"9;

mysQli%Query3$linI, "4.&E'* 4.*? #riends (,O+E& 36,MHartmutM9, 3C, M+l#M9"9;
$stmt > mysQli%prepare3$linI, "&EOER* id, name S'?" #riends"9;
mysQli%stmt%execute3$stmt9;
/W Eet resultset #or metadata W/
$result > mysQli%stmt%result%metadata3$stmt9;
/W retrie=e #ield in#ormation #rom metadata result set W/
$#ield > mysQli%#etch%#ield3$result9;
print#3"Sieldname@ \sVn", $#ieldF>name9;
/W close resultset W/
mysQli%#ree%result3$result9;
/W close connection W/
mysQli%close3$linI9;
?>
mys?li>stmt>send>long>data
>P&P 4?
mys/liZstmtZsendZlongZdata
>no version in(ormationA might #e only in 5$?
stmt2_sendZlongZdata 22 +nv)a los datos en #lo/ues
Kescripci"n
+stilo por procedimientosC
#ool mys?li>stmt>send>long>data > mys/liZstmt stmtA int paramZnrA cadena data ?
+stilo orientado a o#'etos >m<todo?
class mys?li>stmt \
#ool send>long>data > int paramZnrA cadena data ?
]
Permite enviar datos de par*metro al servidor en piezas >o pedazos? e'; si el tamaWo de un dato
BLOB eFcede el tamaWo de ma8_allo7e#_pac>et; +sta (unci-n puede ser llamada multiples veces
para enviar las partes de un caracter o valor de datos #inario de una columnaA la cual de#e ser uno de
los tipos de datos ,+J, o BLOB;
param_nr indica cual par*metro asociar con los datos; Los par*metros son numerados empezando
desde cero; #ata es una cadena conteniendo los datos a ser enviados;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>prepare./A y mys?li>stmt>bind>param./;
mys?li>stmt>s?lstate
>P&P 4?
mys/liZstmtZs/lstate 22 Regresa el error OL,A,+ de la operaci-n con sentencias previa
Kescripci"n
cadena mys?li>stmt>s?lstate > mys/liZstmt stmt ?
Regresa una cadena conteniendo el c-digo de error OL,A,+ para la sentencia preparada m*s
recientemente invocada /ue pudo ser eFitosa o (allar; +l c-digo de error consiste de cinco
caracteres; <00000< signi(ica /ue no hu#o error; Los valores son espec)(icados por AN. OL y
ODB5; Para una lista de los posi#les valores vea httpCDDdev;mys/l;comDdocDmys/lDenD+rror2
returns;html;
Nota- Note /ue no todos los errores de MyOL tienen un correspondiente en
OL,A,+; +l valor !B000 >error general? es usado para errores /ue no tienen ese
correspondiente;
Calores retornados
Regresa una candena conteniendo el c-digo de error OL,A,+ para el Bltimo error; +l c-digo de
error consiste de cinco caracteres; <00000< signi(ica /ue no hu#o error;
Cer tambi%n
mys?li>stmt>errno./A y mys?li>stmt>error./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
/W ?pen a connection W/
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$mysQliF>Query3"R'E,*E *,ZOE myRountry O4]E Rountry"9;
$mysQliF>Query3"4.&E'* 4.*? myRountry &EOER* W S'?" Rountry"9;
$Query > "&EOER* .ame, Rode S'?" myRountry ?'LE' ZP .ame";
i# 3$stmt > $mysQliF>prepare3$Query99 :
/W drop table W/
$mysQliF>Query3"L'? *,ZOE myRountry"9;
/W execute Query W/
$stmtF>execute39;
print#3"Error@ \s.Vn", $stmtF>sQlstate9;
/W close statement W/
$stmtF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
/W ?pen a connection W/
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
mysQli%Query3$linI, "R'E,*E *,ZOE myRountry O4]E Rountry"9;
mysQli%Query3$linI, "4.&E'* 4.*? myRountry &EOER* W S'?" Rountry"9;
$Query > "&EOER* .ame, Rode S'?" myRountry ?'LE' ZP .ame";
i# 3$stmt > mysQli%prepare3$linI, $Query99 :
/W drop table W/
mysQli%Query3$linI, "L'? *,ZOE myRountry"9;
/W execute Query W/
mysQli%stmt%execute3$stmt9;
print#3"Error@ \s.Vn", mysQli%stmt%sQlstate3$stmt99;
/W close statement W/
mysQli%stmt%close3$stmt9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Error@ 1C&2C.
mys?li>stmt>store>result
>P&P 4?
mys/liZstmtZstoreZresult
>no version in(ormationA might #e only in 5$?
mys/liZstmt2_storeZresult 22 ,rans(iere un resultado de una sentencia preparada
Kescripci"n
+stilo por procedimientosC
#ool mys?li>stmt>store>result > mys/liZstmt stmt ?
+stilo orientado a o#'etos >m<todo?C
class mys?li>stmt \
mys/liZresult store>result > void ?
]
e de#e llamar mys?li>stmt>store>result./ para cada consulta /ue eFitosamente produce un
resultado >SE4ECTC S!OIC DESCR0AEC EF+4,0N?A y solo si /uiere almacenar el resultado
completo en el lado del clienteA asi /ue las su#secuentes llamadas mys?li>fetch./ regresar*n los
datos almacenados en la memoria intermedia >B@FF+R?;
Nota- +s inecesario llamar mys?li>stmt>store>result./ para otras consultasA pero si lo
haceA no daWar* o causar* cual/uier cam#io en el desempeWo en cual/uier caso; Puede
detectar si la consulta produ'o un resultado checando si mys?li>stmt>result>metadata
./ regresa N@LL;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
mys?li>prepare./A mys?li>stmt>result>metadata./A y mys?li>fetch./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
/W ?pen a connection W/
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' ZP .ame O4"4* C2";
i# 3$stmt > $mysQliF>prepare3$Query99 :
/W execute Query W/
$stmtF>execute39;
/W store result W/
$stmtF>store%result39;
print#3".umber o# ro8s@ \d.Vn", $stmtF>num%ro8s9;
/W #ree result W/
$stmtF>#ree%result39;
/W close statement W/
$stmtF>close39;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
/W ?pen a connection W/
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* .ame, RountryRode S'?" Rity ?'LE' ZP .ame O4"4* C2";
i# 3$stmt > mysQli%prepare3$linI, $Query99 :
/W execute Query W/
mysQli%stmt%execute3$stmt9;
/W store result W/
mysQli%stmt%store%result3$stmt9;
print#3".umber o# ro8s@ \d.Vn", mysQli%stmt%num%ro8s3$stmt99;
/W #ree result W/
mysQli%stmt%#ree%result3$stmt9;
/W close statement W/
mysQli%stmt%close3$stmt9;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
.umber o# ro8s@ C2.
mys?li>store>result
>P&P 4?
mys/liZstoreZresult
>no version in(ormationA might #e only in 5$?
mys/li2_storeZresult 22 ,rans(iere un resultado de la Bltima consulta
Kescripci"n
+stilo por procedimientosC
o#'eto mys?li>store>result > mys/liZstmt identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >m<todo?C
class mys?li \
o#'eto store>result > void ?
]
,rans(iere el resultado de la Bltima consulta en la coneFi-n de #ase de datos representada por el
par*metro 6#ent696ca#or_#e_enlaceA para ser usado con la (unci-n mys?li>data>seeB./;
Nota- Aun/ue es siempre una #uena practica li#erar la memoria usada por el resultado
de una consulta usando la (unci-n mys?li>free>result./A cuando se trans(ieren
resultados de gran tamaWo usando mys?li>store>result./ en este caso esta practica se
convierte particularmente importante;
Nota- mys?li>store>result./ regresa FALSE en caso de /ue la consulta no regrese un
resultado >si la consulta (ueA por e'emplo una sentencia .N+R,?; +sta (unci-n tam#i<n
regresa FALSE si (alla la lectura del resultado; Puede checar si o#tuvo un error
checando si mys?li>error./ no regresa una cadena vac)aA si mys?li>errno./ regresa un
valor di(erente de cero o si mys?li>field>count./ regresa un valor di(erente de cero;
,am#i<n es una raz-n posi#le para /ue esta (unci-n regrese FALSE despu<s /ue una
llamada eFitosa de mys?li>?uery./ pueda ser demasiado grande el resultado >la
memoria no lo puede contener?; i mys?li>field>count./ regresa un valor no ceroA la
sentencia de#i- producir un resultado no vac)o;
Calores retornados
Regresa un o#'eto resultado con almacenamiento intermedio >#u((ered? o FALSE si ocurre un error;
,ee also
mys?li>real>?uery./A y mys?li>use>result./;
E'emplos
$ea mys?li>multi>?uery./;
mys?li>thread>id
>P&P 4?
mys/liZthreadZid
>no version in(ormationA might #e only in 5$?
mys/li2_threadZid 22 Regresa el identi(icador del ,&R+AD para la coneFi-n actual
Kescripci"n
+stilo por procedimientosC
int mys?li>thread>id > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >propiedad?C
class mys?li \
int threadZid
]
La (inci-n mys?li>thread>id./ regresa el identi(icador del ,&R+AD para la coneFi-n actual la cual
puede ser entonces destruir usando la (unci-n mys?li>Bill./; i la coneFi-n se pierde y se reconecta
con mys?li>ping./A el identi(icador del ,&R+AD ser* otro; Por lo tanto de#e o#tener el
identi(icador del ,&R+AD solo cuando lo necesite;
Nota- +l identi(icador del ,&R+AD es asignado en #ase a coneFi-n; Por lo tanto si la
coneFi-n est* rota y entonces se reesta#lece se le asignar* un nuevo identi(icador de
,&R+AD;
Para destruir una consulta /ue se est* e'ecutando use el comando OL 2044 5UERB
process6#;
Calores retornados
mys?li>thread>id./ regresa el identi(icador del ,&R+AD para la coneFi-n actual;
Cer tambi%n
mys?li>Bill./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W determine our thread id W/
$thread%id > $mysQliF>thread%id;
/W ]ill connection W/
$mysQliF>Iill3$thread%id9;
/W *his should produce an error W/
i# 3!$mysQliF>Query3"R'E,*E *,ZOE myRity O4]E Rity"99 :
print#3"Error@ \sVn", $mysQliF>error9;
exit;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
/W determine our thread id W/
$thread%id > mysQli%thread%id3$linI9;
/W ]ill connection W/
mysQli%Iill3$linI, $thread%id9;
/W *his should produce an error W/
i# 3!mysQli%Query3$linI, "R'E,*E *,ZOE myRity O4]E Rity"99 :
print#3"Error@ \sVn", mysQli%error3$linI99;
exit;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
Error@ "y&NO ser=er has Eone a8ay
mys?li>thread>safe
>P&P 4?
mys/liZthreadZsa(e 22 Regresa si se ha dado un ,&R+AD seguro o no Returns Ehether thread sa(ety
is given or not
Kescripci"n
+stilo por procedimientosC
#ool mys?li>thread>safe > void ?
mys?li>thread>safe./ indica si la li#reria del cliente ha sido compilada como thread seguro;
Calores retornados
TRUE si la li#reria del client es thread seguroA en otro caso FALSE;
mys?li>use>result
>P&P 4?
mys/liZuseZresult
>no version in(ormationA might #e only in 5$?
mys/li2_useZresult 22 .nicia una recuperaci-n de un resultado
Kescripci"n
+stilo por procedimientosC
miFto mys?li>use>result > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >m<todo?C
class mys?li \
miFto use>result > void ?
]
mys?li>use>result./ es usada para iniciar la recuperaci-n de un resultado de la Bltima consulta
e'ecutada usando la (unci-n mys?li>real>?uery./ en la coneFi-n de #ase de datos espec)(icda por el
par*metro 6#ent696ca#or_#e_enlace; +sta o la (unci- mys?li>store>result./ de#e ser llamada antes
de /ue el resultado de una consulta pueda ser recuperadoA y una o la otra de#e esr llamada para
prevenir /ue (alle la siguiente consulta en la coneFi-n a la #ase de datos;
Nota- La (unci-n mys?li>use>result./ no trans(iere el resultado completo de la #ase de
datos y por lo tanto no puede ser usadas (unciones tales como mys?li>data>seeB./ para
moverse a una (ila indicada en el resultado; Para usar esta (uncionalidadA el resultado
de#e ser almacenado usando mys?li>store>result./; No se de#e usar mys?li>use>result
./ si se est* haciendo demasiado procesamiento en el lado del clienteA puesto /ue esto
so#recargar* el servidor y evitar* /ue otros procesos puedan actualizar cual/uier ta#la
de entre las cuales los datos est*n siendo o#tenidos;
Calores retornados
Regresa el o#'eto resultante sin almacenamiento intermedio o FALSE si ha ocurrido un error;
Cer tambi%n
mys?li>real>?uery./A y mys?li>store>result./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* R+''E.*%+&E'39;";
$Query .> "&EOER* .ame S'?" Rity ?'LE' ZP 4L O4"4* C2, 5";
/W execute multi Query W/
i# 3$mysQliF>multi%Query3$Query99 :
do :
/W store #irst result set W/
i# 3$result > $mysQliF>use%result399 :
8hile 3$ro8 > $resultF>#etch%ro8399 :
print#3"\sVn", $ro8)2/9;
;
$resultF>close39;
;
/W print di=ider W/
i# 3$mysQliF>more%results399 :
print#3"FFFFFFFFFFFFFFFFFVn"9;
;
; 8hile 3$mysQliF>next%result399;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$Query > "&EOER* R+''E.*%+&E'39;";
$Query .> "&EOER* .ame S'?" Rity ?'LE' ZP 4L O4"4* C2, 5";
/W execute multi Query W/
i# 3mysQli%multi%Query3$linI, $Query99 :
do :
/W store #irst result set W/
i# 3$result > mysQli%use%result3$linI99 :
8hile 3$ro8 > mysQli%#etch%ro83$result99 :
print#3"\sVn", $ro8)2/9;
;
mysQli%#ree%result3$result9;
;
/W print di=ider W/
i# 3mysQli%more%results3$linI99 :
print#3"FFFFFFFFFFFFFFFFFVn"9;
;
; 8hile 3mysQli%next%result3$linI99;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
my%user^localhost
FFFFFFFFFFFFFFFFF
,mers#oort
"aastricht
Lordrecht
Oeiden
Haarlemmermeer
mys?li>3arning>count
>P&P 4?
mys/liZEarningZcount
>no version in(ormationA might #e only in 5$?
mys/li2_EarningZcount 22 Regresa el nBmero de alertas de la Bltima consulta para el identi(icador
de enlace dado
Kescripci"n
+stilo por procedimientosC
int mys?li>3arning>count > mys/li identi(icadorZdeZenlace ?
+stilo orientado a o#'etos >propiedad?C
class mys?li \
int EarningZcount
]
mys?li>3arning>count./ regresa el nBmero de alertas de la Bltima consulta en la coneFi-n
representada por el par*metro 6#ent696ca#or_#e_enlace;
Nota- Para recuperar los mensa'es de alertaA puede usar el comando OL S!OI
I,RN0N-S )l6m6t ro7_count.;
Calores retornados
+l NBmero de alertas o cero si no hay alertas;
Cer tambi%n
mys?li>errno./A mys?li>error./A y mys?li>s?lstate./;
E'emplos
E'emplo !. Estilo orientado a ob'etos
<?php
$mysQli > ne8 mysQli3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
$mysQliF>Query3"R'E,*E *,ZOE myRity O4]E Rity"9;
/W a remarIable city in 7ales W/
$Query > "4.&E'* 4.*? myRity 3RountryRode, .ame9 (,O+E&3M-Z'M,
MOlan#airp8llE8ynEyllEoEerych8yrndrob8llllantysilioEoEoEochM9";
$mysQliF>Query3$Query9;
i# 3$mysQliF>8arninE%count9 :
i# 3$result > $mysQliF>Query3"&H?7 7,'.4.-&"99 :
$ro8 > $resultF>#etch%ro839;
print#3"\s 3\d9@ \sVn", $ro8)2/, $ro8)6/, $ro8)C/9;
$resultF>close39;
;
;
/W close connection W/
$mysQliF>close39;
?>
E'emplo *. Estilo por procedimientos
<?php
$linI > mysQli%connect3"localhost", "my%user", "my%pass8ord", "8orld"9;
/W checI connection W/
i# 3mysQli%connect%errno399 :
print#3"Ronnect #ailed@ \sVn", mysQli%connect%error399;
exit39;
;
mysQli%Query3$linI, "R'E,*E *,ZOE myRity O4]E Rity"9;
/W a remarIable lonE city name in 7ales W/
$Query > "4.&E'* 4.*? myRity 3RountryRode, .ame9 (,O+E&3M-Z'M,
MOlan#airp8llE8ynEyllEoEerych8yrndrob8llllantysilioEoEoEochM9";
mysQli%Query3$linI, $Query9;
i# 3mysQli%8arninE%count3$linI99 :
i# 3$result > mysQli%Query3$linI, "&H?7 7,'.4.-&"99 :
$ro8 > mysQli%#etch%ro83$result9;
print#3"\s 3\d9@ \sVn", $ro8)2/, $ro8)6/, $ro8)C/9;
mysQli%#ree%result3$result9;
;
;
/W close connection W/
mysQli%close3$linI9;
?>
+l resultado del e'emplo seriaC
7arninE 36CG19@ Lata truncated #or column M.ameM at ro8 6
:IIII. ;unciones de Control de Pantalla con
Terminal Ncurses
Introducci"n
ncurses >neE curses? es un sistema de emulaci-n del pa/uete curses del istema $ 8;3 >y
superiores?; @sa (ormatos termin(oA soporta padsA coloresA resaltados mBltiplesA caracteres de
(ormulario y asignaciones de (unciones de teclado; De#ido a la naturaleza interactiva de esta
#i#liotecaA <sta ser* de poca utilidad para la escritura de aplicaciones Le#A pero puede ser Btil
cuando se escri#en scripts orientados al uso de P&P desde la l)nea de comandos;
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
Ncurses se encuentra disponi#le para las siguientes plata(ormasC
A.J
BeO
5ygEin
Digital @niF >a"a OF1?
FreeBD
GN@DLinuF
&P@J
.R.J
OD0
5O Openerver
olaris
unO
Me?uirimientos
Necesita las #i#liotecas ncurses y sus archivos de ca#ecera; Descargue la Bltima versi-n desde
(tpCDD(tp;gnu;orgDpu#DgnuDncursesD o algBn otro mirror GN@;
Instalaci"n
Para /ue estas (unciones tra#a'enA de#e compilar la versi-n 5G. o 5L. de P&P con ==76th=ncurses
):D0R.;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones de configuraci"n de ncurses
Nombre Predeterminado Modificable
ncurses;value =80= P&PZ.N.ZALL
ncurses;strin
g
=(oo#ar= P&PZ.N.ZALL
Para m*s detalles so#re las constantes P&PZ.N.ZV y su de(inici-nA vea ini>set./;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
C"digos de error
+n caso de (allosA las (unciones ncurses devuelven N5@R+Z+RR;
Colores
Tabla *. constantes de color de ncurses
constante significado
N5@R+Z5OLORZBLA5S sin color >negro?
N5@R+Z5OLORZL&.,+ #lanco
N5@R+Z5OLORZR+D
ro'o 2 soportado cuando la terminal se encuentra en modo de
color
N5@R+Z5OLORZGR++N
verde 2 soportado cuando la terminal se encuentra en modo de
color
N5@R+Z5OLORZ%+LLOL
amarillo 2 soportado cuando la terminal se encuentra en modo
de color
N5@R+Z5OLORZBL@+
azul 2 soportado cuando la terminal se encuentra en modo de
color
N5@R+Z5OLORZ5%AN
cyan 2 soportado cuando la terminal se encuentra en modo de
color
N5@R+Z5OLORZMAG+N,
A
magenta 2 soportado cuando la terminal se encuentra en modo
de color
Teclas
Tabla 7. constantes de teclas ncurses
constante significado
N5@R+ZS+%ZF3 2
N5@R+ZS+%ZFK8
teclas de (unci-n F1 2 FK8
N5@R+ZS+%ZDOLN (lecha hacia a#a'o
N5@R+ZS+%Z@P (lecha hacia arri#a
N5@R+ZS+%ZL+F, (lecha hacia la iz/uierda
N5@R+ZS+%ZR.G&, (lecha hacia la derecha
N5@R+ZS+%Z&OM+ tecla home >(lecha arri#aRiz/uierda?
N5@R+ZS+%ZBA5SPA5+ #ac"space
constante significado
N5@R+ZS+%ZDL eliminar l)nea
N5@R+ZS+%Z.L insertar l)nea
N5@R+ZS+%ZD5 eliminar caracter
N5@R+ZS+%Z.5
insertar caracter o entrar en modo de
inserci-n
N5@R+ZS+%Z+.5 salir de modo de inserci-n de caracteres
N5@R+ZS+%Z5L+AR limpiar la pantalla
N5@R+ZS+%Z+O limpiar hasta el (in de la pantalla
N5@R+ZS+%Z+OL limpiar hasta el (in de la l)nea
N5@R+ZS+%ZF desplazarse una l)nea hacia adelante
N5@R+ZS+%ZR desplazarse una l)nea hacia atr*s
N5@R+ZS+%ZNPAG+ siguiente p*gina
N5@R+ZS+%ZPPAG+ p*gina anterior
N5@R+ZS+%Z,AB de(inir ta#
N5@R+ZS+%Z5,AB eliminar ta#
N5@R+ZS+%Z5A,AB eliminar todos los ta#s
N5@R+ZS+%ZR++, reset suave >parcial?
N5@R+ZS+%ZR++, reset o reset (uerte
N5@R+ZS+%ZPR.N, imprimir
N5@R+ZS+%ZLL iz/uierda in(erior
N5@R+ZS+%ZA1 iz/uierda superior del teclado num<rico
N5@R+ZS+%ZA7 derecha superior del teclado num<rico
N5@R+ZS+%ZB0 centro del teclado num<rico
N5@R+ZS+%Z51 iz/uierda in(erior del teclado num<rico
N5@R+ZS+%Z57 derecha in(erior del teclado num<rico
N5@R+ZS+%ZB,AB ta# hacia atr*s
N5@R+ZS+%ZB+G comienzo
N5@R+ZS+%Z5AN5+L cancelar
N5@R+ZS+%Z5LO+ cerrar
N5@R+ZS+%Z5OMMAND cmd >comando?
N5@R+ZS+%Z5OP% copiar
N5@R+ZS+%Z5R+A,+ crear
N5@R+ZS+%Z+ND (in
N5@R+ZS+%Z+J., salida
N5@R+ZS+%ZF.ND encontrar
N5@R+ZS+%Z&+LP ayuda
N5@R+ZS+%ZMARS marca
N5@R+ZS+%ZM+AG+ mensa'e
constante significado
N5@R+ZS+%ZMO$+ mover
N5@R+ZS+%ZN+J, siguiente
N5@R+ZS+%ZOP+N a#rir
N5@R+ZS+%ZOP,.ON opciones
N5@R+ZS+%ZPR+$.O@ anterior
N5@R+ZS+%ZR+DO rehacer
N5@R+ZS+%ZR+F+R+N5+ re( >re(erencia?
N5@R+ZS+%ZR+FR+& re(rescar
N5@R+ZS+%ZR+PLA5+ reemplazar
N5@R+ZS+%ZR+,AR, reiniciar
N5@R+ZS+%ZR+@M+ reiniciar
N5@R+ZS+%ZA$+ guardar
N5@R+ZS+%ZB+G comienzo usando shi(t
N5@R+ZS+%Z5AN5+L cancelar usando shi(t
N5@R+ZS+%Z5OMMAND comando usando shi(t
N5@R+ZS+%Z5OP% copiar usando shi(t
N5@R+ZS+%Z5R+A,+ crear usando shi(t
N5@R+ZS+%ZD5 eliminar caracter usando shi(t
N5@R+ZS+%ZDL eliminar l)nea usando shi(t
N5@R+ZS+%Z+L+5, seleccionar
N5@R+ZS+%Z+ND (inal usando shi(t
N5@R+ZS+%Z+OL (in de l)nea usando shi(t
N5@R+ZS+%Z+J., salida usando shi(t
N5@R+ZS+%ZF.ND encontrar usando shi(t
N5@R+ZS+%Z&+LP ayuda usando shi(t
N5@R+ZS+%Z&OM+ home usando shi(t
N5@R+ZS+%Z.5 entrada usando shi(t
N5@R+ZS+%ZL+F, (lecha hacia la iz/uierda usando shi(t
N5@R+ZS+%ZM+AG+ mensa'e usando shi(t
N5@R+ZS+%ZMO$+ mover usando shi(t
N5@R+ZS+%ZN+J, siguiente usando shi(t
N5@R+ZS+%ZOP,.ON opciones usando shi(t
N5@R+ZS+%ZPR+$.O@ anterior usando shi(t
N5@R+ZS+%ZPR.N, imprimir usando shi(t
N5@R+ZS+%ZR+DO rehacer usando shi(t
N5@R+ZS+%ZR+PLA5+ reemplazar usando shi(t
N5@R+ZS+%ZR.G&, (lecha hacia la derecha usando shi(t
N5@R+ZS+%ZR@M+ reiniciar usando shi(t
constante significado
N5@R+ZS+%ZA$+ guardar usando shi(t
N5@R+ZS+%Z@P+ND suspender usando shi(t
N5@R+ZS+%Z@NDO deshacer
N5@R+ZS+%ZMO@+ evento del mouse ha ocurrido
N5@R+ZS+%ZMAJ valor m*Fimo de tecla
Mouse
Tabla 8. constantes de mouse
Constante significado
N5@R+ZB@,,ON1ZR+L+A+D 2
N5@R+ZB@,,ON8ZR+L+A+D
#ot-n >128? li#erado
N5@R+ZB@,,ON1ZPR++D 2
N5@R+ZB@,,ON8ZPR++D
#ot-n >128? presionado
N5@R+ZB@,,ON1Z5L.5S+D 2
N5@R+ZB@,,ON8Z5L.5S+D
#ot-n >128? pulsado
N5@R+ZB@,,ON1ZDO@BL+Z5L.5S+D 2
N5@R+ZB@,,ON8ZDO@BL+Z5L.5S+D
#ot-n >128? pulsado dos
veces
N5@R+ZB@,,ON1Z,R.PL+Z5L.5S+D 2
N5@R+ZB@,,ON8Z,R.PL+Z5L.5S+D
#ot-n >128? pulsado tres
veces
N5@R+ZB@,,ONZ5,RL
ctrl presionado durante el
clic
N5@R+ZB@,,ONZ&.F,
shi(t presionado durante el
clic
N5@R+ZB@,,ONZAL,
alt presionado durante el
clic
N5@R+ZALLZMO@+Z+$+N,
reportar todos los eventos
del mouse
N5@R+ZR+POR,ZMO@+ZPO.,.ON
reportar la posici-n del
mouse
Tabla de contenidos
ncursesZaddch 22 Agregar un caracter en la posici-n actual y avanzar el cursor
ncursesZaddchnstr 22 Agregar cadena con atri#utos y longitud especi(icada en la posici-n actual
ncursesZaddchstr 22 Agregar una cadena con atri#utos en la posici-n actual
ncursesZaddnstr 22 Agregar una cadena con la longitud especi(icada en la posici-n actual
ncursesZaddstr 22 .mprimir teFto en la posici-n actual
ncursesZassumeZde(aultZcolors 22 De(inir colores predeterminados para el color 3
ncursesZattro(( 22 Desha#ilitar los atri#utos dados
ncursesZattron 22 &a#ilitar los atri#utos dados
ncursesZattrset 22 +sta#lecer los atri#utos dados
ncursesZ#audrate 22 Devuelve la tasa de #audios de la terminal
ncursesZ#eep 22 Producir un #eep en la terminal
ncursesZ#"gd 22 +sta#lecer la propiedad de segundo plano para la pantalla de la terminal
ncursesZ#"gdset 22 5ontrola el segundo plano de la pantalla
ncursesZ#order 22 Di#u'ar un #orde alrededor de la pantalla usando caracteres con atri#utos
ncursesZ#ottomZpanel 22 Mueve un panel visi#le al (ondo de la pila
ncursesZcanZchangeZcolor 22 5he/uear si es posi#le cam#iar los colores de la terminal
ncursesZc#rea" 22 5am#io de #B(eres de entrada
ncursesZclear 22 Limpiar la pantalla
ncursesZclrto#ot 22 Limpiar la pantalla desde la posici-n actual al (inal
ncursesZclrtoeol 22 Limpiar la pantalla desde la posici-n actual al (inal de la l)nea
ncursesZcolorZcontent 22 O#tiene el valor RGB del color
ncursesZcolorZset 22 +sta#lecer los colores de primer y segundo plano
ncursesZcursZset 22 +sta#lecer el estado del cursor
ncursesZde(ZprogZmode 22 Guarda los modos de terminal >programa?
ncursesZde(ZshellZmode 22 Guarda los modos de terminal >int<rprete de comandos?
ncursesZde(ineZ"ey 22 De(inir un c-digo de tecla
ncursesZdelZpanel 22 Remover un panel de la pila y eliminarlo >pero no la ventana asociada?
ncursesZdelayZoutput 22 Retrasar la salida en la terminal usando caracteres de relleno
ncursesZdelch 22 +liminar un caracter en la posici-n actualA mover el resto de la l)nea hacia la
iz/uierda
ncursesZdeleteln 22 +liminar una l)nea en la posici-n actualA mover el resto de la pantalla hacia
arri#a
ncursesZdelEin 22 +liminar una ventana ncurses
ncursesZdoupdate 22 +scri#ir todas las actualizaciones preparadas so#re la terminal
ncursesZecho 22 Activar la repetici-n de entrada del teclado
ncursesZechochar 22 alida de un caracter sencilloA incluyendo actualizaci-n
ncursesZend 22 De'ar de usar ncursesA limpiar la pantalla
ncursesZerase 22 Limpiar pantalla de terminal
ncursesZerasechar 22 Devuelve el caracter de #orrado actual
ncursesZ(ilter 22 De(inir L.N+ para iniscr>? y neEterm>? a 1
ncursesZ(lash 22 Relampaguear la pantalla de terminal >campana visual?
ncursesZ(lushinp 22 $olcar el #B(er de entrada de teclado
ncursesZgetch 22 Leer un caracter desde el teclado
ncursesZgetmaFyF 22 Devuelve el tamaWo de una ventana
ncursesZgetmouse 22 Lee un evento del mouse
ncursesZgetyF 22 Devuelve la posici-n de cursor actual para una ventana
ncursesZhal(delay 22 5olocar la terminal en modo de medio retraso
ncursesZhasZcolors 22 5he/uear si la terminal tiene colores
ncursesZhasZic 22 5he/uear por el soporte de inserci-n y #orrado
ncursesZhasZil 22 5he/uea el soporte de inserci-n y #orrado
ncursesZhasZ"ey 22 5he/uear por la presencia de una tecla de (unci-n en el teclado de la terminal
ncursesZhideZpanel 22 Remover un panel de la pilaA haci<ndolo invisi#le
ncursesZhline 22 Di#u'ar una l)nea horizontal en la posici-n actual usando un caracter con atri#utosA
y de m*Fimo n caracteres de largo
ncursesZinch 22 O#tener el caracter y los atri#utos de la posici-n actual
ncursesZinitZcolor 22 +sta#lecer un nuevo valor RGB para un color
ncursesZinitZpair 22 Reservar una pare'a de color
ncursesZinit 22 .nicializar ncurses
ncursesZinsch 22 .nsertar un caracterA moviendo el resto de la l)neaA incluyendo el caracter en la
posici-n actual
ncursesZinsdelln 22 .nsertar l)neas antes de la l)nea actualA desplazando hacia a#a'o >los nBmeros
negativos eliminan l)neas y desplazan hacia arri#a?
ncursesZinsertln 22 .nsertar una l)neaA mover el resto de la pantalla hacia a#a'o
ncursesZinsstr 22 .nsertar cadena en la posici-n actualA moviendo el resto de la l)nea hacia la derecha
ncursesZinstr 22 Lee una cadena desde la pantalla de terminal
ncursesZisendEin 22 Ncurses se encuentra en modo endEinA puede e(ectuarse salida de pantalla
normal
ncursesZ"eyo" 22 &a#ilitar o desha#ilitar un c-digo de tecla
ncursesZ"eypad 22 Activa o desactiva el teclado num<rico
ncursesZ"illchar 22 Devuelve el caracter de eliminaci-n de l)nea actual
ncursesZlongname 22 Devuelve la descripci-n de la terminal
ncursesZmeta 22 &a#ilitaDdesha#ilita la meta2in(ormaci-n de M2#its de tecla
ncursesZmouseZtra(o 22 ,rans(orma coordenadas
ncursesZmouseinterval 22 +sta#lecer el tiempo de espera para clics de #ot-n del mouse
ncursesZmousemas" 22 +sta#lece opciones del mouse
ncursesZmoveZpanel 22 Mueve un panel de modo /ue su es/uina superior iz/uierda se encuentre en
PcomienzoZFA comienzoZyQ
ncursesZmove 22 Mover la posici-n de salida
ncursesZmvaddch 22 Mover la posici-n actual y agregar un caracter
ncursesZmvaddchnstr 22 Mover la posici-n y agregar una cadena con atri#utos con la longitud
especi(icada
ncursesZmvaddchstr 22 Mover la posici-n y agregar una cadena con atri#utos
ncursesZmvaddnstr 22 Mover la posici-n y agregar una cadena con la longitud especi(icada
ncursesZmvaddstr 22 Mover la posici-n y agregar una cadena
ncursesZmvcur 22 Mover el cursor inmediatamente
ncursesZmvdelch 22 Mover la posici-n y eliminar un caracterA desplazar el resto de la l)nea hacia la
iz/uierda
ncursesZmvgetch 22 Mover la posici-n y o#tener el caracter en la nueva posici-n
ncursesZmvhline 22 +sta#lecer una nueva posici-n y di#u'ar una l)nea horizontal usando un caracter
con atri#utos y una longitud m*Fima de n caracteres
ncursesZmvinch 22 Mover la posici-n y o#tener el caracter con atri#utos en la nueva posici-n
ncursesZmvvline 22 +sta#lecer una nueva posici-n y di#u'ar una l)nea vertical usando un caracter
con atri#utos y una longitud m*Fima de n caracteres
ncursesZmvEaddstr 22 Agregar una cadena en una nueva posici-n al interior de una ventana
ncursesZnapms 22 Dormir
ncursesZneEZpanel 22 5rear un nuevo panel y asociarlo con una ventana
ncursesZneEpad 22 5rea un nuevo pad >ventana?
ncursesZneEEin 22 5rear una nueva ventana
ncursesZnl 22 ,raducir l)nea nueva y retorno de carro D alimentaci-n de l)nea
ncursesZnoc#rea" 22 5am#iar la terminal a modo normal >coo"ed?
ncursesZnoecho 22 Desactivar la repetici-n de entrada del teclado
ncursesZnonl 22 No traducir l)nea nueva y retorno de carro D alimentaci-n de l)nea
ncursesZno/i(lush 22 No realizar volcados en caracteres de seWales
ncursesZnoraE 22 alir del modo puro en la terminal
ncursesZpairZcontent 22 O#tiene el valor RGB del color
ncursesZpanelZa#ove 22 Devuelve el panel encima del panel indicado
ncursesZpanelZ#eloE 22 Devuelve el panel por de#a'o del panel indicado
ncursesZpanelZEindoE 22 Devuelve la ventana asociada con el panel
ncursesZpnoutre(resh 22 5opia una regi-n desde un pad a la pantalla virtual
ncursesZpre(resh 22 5opia una regi-n desde un pad a la pantalla virtual
ncursesZputp 22 Aplicar la in(ormaci-n de m*rgenes a la cadena e imprimirla
ncursesZ/i(lush 22 Producir volcado en caracteres de seWales
ncursesZraE 22 5olocar la terminal en modo puro
ncursesZre(resh 22 Re(rescar la pantalla
ncursesZreplaceZpanel 22 Reemplaza la ventana asociada con el panel
ncursesZresetZprogZmode 22 Resta#lece el modo de programa guardado por de(ZprogZmode
ncursesZresetZshellZmode 22 Resta#lece el modo de int<rprete de comandos guardado por
de(ZshellZmode
ncursesZresetty 22 Resta#lece el estado guardado de la terminal
ncursesZsavetty 22 Guarda el estado de la terminal
ncursesZscrZdump 22 $uelca el contenido de la pantalla en un archivo
ncursesZscrZinit 22 .nicializar la pantalla desde un volcado en un archivo
ncursesZscrZrestore 22 Recuperar la pantalla desde un volcado en un archivo
ncursesZscrZset 22 &eredar la pantalla de un volcado en un archivo
ncursesZscrl 22 Desplazar el contenido de la ventana hacia arri#a o a#a'o sin cam#iar la posici-n
actual
ncursesZshoEZpanel 22 5oloca un panel invisi#le al comienzo de la pilaA haci<ndola visi#le
ncursesZsl"Zattr 22 Devuelve el atri#uto de la eti/ueta suave de teclado
ncursesZsl"Zattro(( 22 Desha#ilitar los atri#utos dados para las eti/uetas suaves de teclado
ncursesZsl"Zattron 22 &a#ilitar los atri#utos dados para las eti/uetas suaves de (unciones de teclado
ncursesZsl"Zattrset 22 De(inir los atri#utos dados para las eti/uetas suaves de (unciones de teclado
ncursesZsl"Zclear 22 Limpia las eti/uetas suaves de la pantalla
ncursesZsl"Zcolor 22 +sta#lece el color para las eti/uetas suaves de teclado
ncursesZsl"Zinit 22 .nicializa las eti/uetas suaves de (unciones de teclado
ncursesZsl"Znoutre(resh 22 5opia las eti/uetas suaves de teclado a la pantalla virtual
ncursesZsl"Zre(resh 22 5opia las eti/uetas suaves de teclado a la pantalla
ncursesZsl"Zrestore 22 Recupera las eti/uetas suaves de teclado
ncursesZsl"Zset 22 +sta#lece las eti/uetas de teclado
ncursesZsl"Ztouch 22 O#liga a /ue se produzca salida cuando se e'ecute ncursesZsl"Znoutre(resh
ncursesZstandend 22 De'ar de usar el atri#uto HstandoutH
ncursesZstandout 22 5omenzar a usar el atri#uto HstandoutH
ncursesZstartZcolor 22 5omenzar a usar colores
ncursesZtermattrs 22 Devuelve un valor OR l-gico de todas las #anderas de atri#utos soportados por
la terminal
ncursesZtermname 22 Devuelve el nom#re >corto? de la terminal
ncursesZtimeout 22 +sta#lecer el tiempo de espera para secuencias especiales de teclas
ncursesZtopZpanel 22 Mueve un panel visi#le al tope de la pila
ncursesZtypeahead 22 +speci(icar un descriptor de archivo di(erente para el che/ueo de escritura
siguiente
ncursesZungetch 22 5olocar un caracter de vuelta en la secuencia de entrada
ncursesZungetmouse 22 5oloca un evento de mouse en la cola
ncursesZupdateZpanels 22 Re(resca la pantalla virtualA para re(le'ar las relaciones entre los paneles
en la pila
ncursesZuseZde(aultZcolors 22 Asignar los colores predeterminados de la terminal al id de color 21
ncursesZuseZenv 22 5ontrolar el uso de in(ormaci-n del entorno so#re el tamaWo de la terminal
ncursesZuseZeFtendedZnames 22 5ontrolar el uso de nom#res eFtendidos en descripciones de
in(ormaci-n de terminal
ncursesZvidattr 22 Desplegar la cadena en la terminal con el atri#uto de modo de video
ncursesZvline 22 Di#u'ar una l)nea vertical en la posici-n actual usando un caracter con atri#utos y
una longitud m*Fima de n caracteres
ncursesZEaddch 22 Agrega un caracter en la posici-n actual de una ventana y avanza el cursor
ncursesZEaddstr 22 .mprime un teFto en la posici-n actual de una ventana
ncursesZEattro(( 22 Desha#ilita los atri#utos para una ventana
ncursesZEattron 22 &a#ilita los atri#utos para una ventana
ncursesZEattrset 22 +sta#lecer los atri#utos para una ventana
ncursesZE#order 22 Di#u'a un #orde alrededor de la ventana usando caracteres con atri#utos
ncursesZEclear 22 Limpia la ventana
ncursesZEcolorZset 22 +sta#lece pare'as de colores en la ventana
ncursesZEerase 22 +liminar los contenidos de la ventana
ncursesZEgetch 22 Lee un caracter desde el teclado >en la ventana?
ncursesZEhline 22 Di#u'a una l)nea horizontal en una ventana en la posici-n actual usando un
caracter con atri#utos y un largo m*Fimo de n caracteres
ncursesZEmouseZtra(o 22 ,rans(orma coordenadas de ventanaDstdscr
ncursesZEmove 22 Mueve la posici-n de salida de la ventana
ncursesZEnoutre(resh 22 5opia la ventana a la pantalla virtual
ncursesZEre(resh 22 Re(rescar la ventana en la pantalla de terminal
ncursesZEstandend 22 Finaliza el modo standout para una ventana
ncursesZEstandout 22 .ngresar a modo standout en una ventana
ncursesZEvline 22 Di#u'a una l)nea vertical en una ventana en la posici-n actual usando un caracter
con atri#utos y una longitud m*Fima de n caracteres
ncurses>addch
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZaddch 22 Agregar un caracter en la posici-n actual y avanzar el cursor
Kescripci"n
int ncurses>addch > int car ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>addchnstr
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZaddchnstr 22 Agregar cadena con atri#utos y longitud especi(icada en la posici-n actual
Kescripci"n
int ncurses>addchnstr > string sA int n ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>addchstr
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZaddchstr 22 Agregar una cadena con atri#utos en la posici-n actual
Kescripci"n
int ncurses>addchstr > string s ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>addnstr
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZaddnstr 22 Agregar una cadena con la longitud especi(icada en la posici-n actual
Kescripci"n
int ncurses>addnstr > string sA int n ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>addstr
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZaddstr 22 .mprimir teFto en la posici-n actual
Kescripci"n
int ncurses>addstr > string teFto ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>assume>default>colors
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZassumeZde(aultZcolors 22 De(inir colores predeterminados para el color 3
Kescripci"n
int ncurses>assume>default>colors > int (gA int #g ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>attroff
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZattro(( 22 Desha#ilitar los atri#utos dados
Kescripci"n
int ncurses>attroff > int atri#utos ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>attron
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZattron 22 &a#ilitar los atri#utos dados
Kescripci"n
int ncurses>attron > int atri#utos ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>attrset
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZattrset 22 +sta#lecer los atri#utos dados
Kescripci"n
int ncurses>attrset > int atri#utos ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>baudrate
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZ#audrate 22 Devuelve la tasa de #audios de la terminal
Kescripci"n
int ncurses>baudrate > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>beep
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZ#eep 22 Producir un #eep en la terminal
Kescripci"n
int ncurses>beep > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>beep./ env)a una alerta auditiva >campana?A y si no es posi#le produce un relampagueo en
la pantalla; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
$ea tam#i<n ncurses>flash./
ncurses>bBgd
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZ#"gd 22 +sta#lecer la propiedad de segundo plano para la pantalla de la terminal
Kescripci"n
int ncurses>bBgd > int atri#utoZcaracter ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>bBgdset
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZ#"gdset 22 5ontrola el segundo plano de la pantalla
Kescripci"n
void ncurses>bBgdset > int atri#utoZcaracter ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>border
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZ#order 22 Di#u'ar un #orde alrededor de la pantalla usando caracteres con atri#utos
Kescripci"n
int ncurses>border > int iz/uierdaA int derechaA int arri#aA int a#a'oA int es/uinaZsupZiz/A int
es/uinaZsupZderA int es/uinaZin(Ziz/A int es/uinaZin(Zder ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>border./ di#u'a las l)neas y es/uinas especi(icadas alrededor de la ventana principal; 5ada
par*metro espera 3 para di#u'ar una l)neaA y 1 para saltarla; Las es/uinas son la superior iz/uierdaA
la superior derechaA la in(erior iz/uiera y la in(erior derecha;
f@tilice ncurses>3border./ para los #ordes alrededor de su#2ventanasa
$ea tam#i<n ncurses>3border./;
ncurses>bottom>panel
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZ#ottomZpanel 22 Mueve un panel visi#le al (ondo de la pila
Kescripci"n
int ncurses>bottom>panel > resource panel ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>can>change>color
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZcanZchangeZcolor 22 5he/uear si es posi#le cam#iar los colores de la terminal
Kescripci"n
#ool ncurses>can>change>color > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
La (unci-n ncurses>can>change>color./ devuelve TRUE o FALSEA dependiendo de /ue la terminal
soporte coloresA y si el programador puede modi(icar los colores;
ncurses>cbreaB
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZc#rea" 22 5am#io de #B(eres de entrada
Kescripci"n
#ool ncurses>cbreaB > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>cbreaB./ desha#ilita el uso de #B(eres de l)nea y el procesamiento de caracteres >los
caracteres de interrupci-n y control de (lu'o no son alterados?A haciendo /ue los caracteres escritos
por el usuario sean entregados al programa inmediatamente;
ncurses>cbreaB./ devuelve TRUE o N5@R+Z+RR si ocurre un error;
$ea tam#i<nC ncurses>nocbreaB./
ncurses>clear
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZclear 22 Limpiar la pantalla
Kescripci"n
#ool ncurses>clear > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>clear./ limpia la pantalla completamente sin usar caracteres en #lanco; Devuelve TRUE si
todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
NotaC ncurses>clear./ limpia la pantalla sin usar caracteres en #lancoA /ue tienen la misma
apariencia del segundo plano actual; Para limpiar la pantalla con caracteres en #lancoA use
ncurses>erase./;
$ea tam#i<n ncurses>erase./;
ncurses>clrtobot
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZclrto#ot 22 Limpiar la pantalla desde la posici-n actual al (inal
Kescripci"n
#ool ncurses>clrtobot > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>clrtobot./ elimina todas las l)neas desde el cursor hasta el (in de la pantalla y crea
caracteres en #lanco; Los caracteres en #lanco creados por ncurses>clrtobot./ tienen la apariencia
del segundo plano actual; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de
(allo;
$ea tam#i<n ncurses>clear./A y ncurses>clrtoeol./
ncurses>clrtoeol
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZclrtoeol 22 Limpiar la pantalla desde la posici-n actual al (inal de la l)nea
Kescripci"n
#ool ncurses>clrtoeol > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>clrtoeol./ elimina la l)nea actual desde la posici-n actual hasta el (inal; Los caracteres en
#lanco creados por ncurses>clrtoeol./ tienen la apariencia del segundo plano actual; Devuelve
TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
$ea tam#i<n ncurses>clear./A y ncurses>clrtobot./
ncurses>color>content
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZcolorZcontent 22 O#tiene el valor RGB del color
Kescripci"n
int ncurses>color>content > int colorA int irA int igA int i# ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>color>set
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZcolorZset 22 +sta#lecer los colores de primer y segundo plano
Kescripci"n
int ncurses>color>set > int pare'a ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>curs>set
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZcursZset 22 +sta#lecer el estado del cursor
Kescripci"n
int ncurses>curs>set > int visi#ilidad ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>def>prog>mode
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZde(ZprogZmode 22 Guarda los modos de terminal >programa?
Kescripci"n
#ool ncurses>def>prog>mode > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>def>prog>mode./ guarda los modos de terminal actuales para programa >en curses? para
su uso por ncurses>reset>prog>mode./; Devuelve FALSE en caso de <FitoA o TRUE de otra (orma;
$ea tam#i<nC ncurses>reset>prog>mode./
ncurses>def>shell>mode
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZde(ZshellZmode 22 Guarda los modos de terminal >int<rprete de comandos?
Kescripci"n
#ool ncurses>def>shell>mode > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>def>shell>mode./ guarda los modos de terminal actuales de int<rprete de comandos >no en
curses? para su uso con ncurses>reset>shell>mode./; Devuelve FALSE en caso de <FitoA o TRUE
de lo contrario;
$ea tam#i<nC ncurses>reset>shell>mode./
ncurses>define>Bey
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZde(ineZ"ey 22 De(inir un c-digo de tecla
Kescripci"n
int ncurses>define>Bey > string de(inicionA int codigoZtecla ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>del>panel
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZdelZpanel 22 Remover un panel de la pila y eliminarlo >pero no la ventana asociada?
Kescripci"n
int ncurses>del>panel > resource panel ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>delay>output
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZdelayZoutput 22 Retrasar la salida en la terminal usando caracteres de relleno
Kescripci"n
int ncurses>delay>output > int milisegundos ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>delch
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZdelch 22 +liminar un caracter en la posici-n actualA mover el resto de la l)nea hacia la
iz/uierda
Kescripci"n
#ool ncurses>delch > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>delch./ elimina el caracter #a'o el cursor; ,odos los caracteres a la derecha del cursor en la
misma l)nea son desplazados una posici-n hacia la iz/uierdaA y el Bltimo caracter en la l)nea es
llenado con un caracter en #lanco; La posici-n del cursor no cam#ia; Devuelve FALSE en caso de
tener <FitoA o TRUE de lo contrario;
$ea tam#i<nC ncurses>deleteln./
ncurses>deleteln
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZdeleteln 22 +liminar una l)nea en la posici-n actualA mover el resto de la pantalla hacia
arri#a
Kescripci"n
#ool ncurses>deleteln > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>deleteln./ elimina la l)nea actual #a'o la posici-n del cursor; ,odas las l)neas por de#a'o de
la l)nea actual son desplazadas una l)nea hacia arri#a; La l)nea m*s #a'a es limpiada; La posici-n del
cursor no cam#ia; Devuelve FALSE en caso de <FitoA TRUE de lo contrario;
$ea tam#i<nC ncurses>delch./
ncurses>del3in
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZdelEin 22 +liminar una ventana ncurses
Kescripci"n
int ncurses>del3in > resource ventana ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>doupdate
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZdoupdate 22 +scri#ir todas las actualizaciones preparadas so#re la terminal
Kescripci"n
#ool ncurses>doupdate > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>doupdate././ compara la pantalla virtual con la pantalla ()sica y actualiza la pantalla ()sica;
De esta (orma es m*s e(ectivo /ue usando mBltiples llamadas de actualizaci-n; Devuelve TRUE si
todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ncurses>echo
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZecho 22 Activar la repetici-n de entrada del teclado
Kescripci"n
#ool ncurses>echo > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>echo./ ha#ilita el modo de repetici-n; ,odos los caracteres escritos por el usuario son
repetidos por ncurses>getch./; Devuelve FALSE de tener <FitoA o TRUE si ocurri- algBn error;
Para desha#ilitar el modo de repetici-nA use ncurses>noecho./;
ncurses>echochar
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZechochar 22 alida de un caracter sencilloA incluyendo actualizaci-n
Kescripci"n
int ncurses>echochar > int caracter ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>end
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZend 22 De'ar de usar ncursesA limpiar la pantalla
Kescripci"n
int ncurses>end > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>erase
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZerase 22 Limpiar pantalla de terminal
Kescripci"n
#ool ncurses>erase > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>erase./ llena la pantalla de terminal con caracteres en #lanco; Los caracteres creados tienen
la apariencia del segundo plano actualA esta#lecida por ncurses>bBgd./; Devuelve TRUE si todo se
llev- a ca#o correctamenteA FALSE en caso de (allo;
$ea tam#i<n ncurses>bBgd./A y ncurses>clear./
ncurses>erasechar
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZerasechar 22 Devuelve el caracter de #orrado actual
Kescripci"n
string ncurses>erasechar > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>erasechar./ devuelve el caracter de #orrado actual;
$ea tam#i<nC ncurses>Billchar./
ncurses>filter
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZ(ilter 22 De(inir L.N+ para iniscr>? y neEterm>? a 1
Kescripci"n
int ncurses>filter > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>flash
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZ(lash 22 Relampaguear la pantalla de terminal >campana visual?
Kescripci"n
#ool ncurses>flash > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>flash./ relampaguea la pantallaA y si no es posi#leA env)a una aletra auditiva >campana?;
Devuelve FALSE de tener <FitoA TRUE de lo contrario;
$ea tam#i<nC ncurses>beep./
ncurses>flushinp
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZ(lushinp 22 $olcar el #B(er de entrada de teclado
Kescripci"n
#ool ncurses>flushinp > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
La (unci-n ncurses>flushinp./ env)a cual/uier contenido /ue haya sido escrito y no haya sido leido
aun por su programa; Devuelve FALSE en caso de tener <FitoA TRUE de lo contrario;
ncurses>getch
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZgetch 22 Leer un caracter desde el teclado
Kescripci"n
int ncurses>getch > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>getma+y+
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZgetmaFyF 22 Devuelve el tamaWo de una ventana
Kescripci"n
void ncurses>getma+y+ > resource ventanaA int iyA int iF ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>getma+y+./ coloca los tamaWos horizontal y vertical de la ventana entana en las varia#les
]? y ]8 dadas; Las varia#les de#en ser pasadas como re(erenciasA de modo /ue sean actualizadas
cuando el usuario cam#ie el tamaWo de la terminal;
ncurses>getmouse
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZgetmouse 22 Lee un evento del mouse
Kescripci"n
#ool ncurses>getmouse > array ieventoZmouse ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>getmouse./ lee un evento de mouse desde la cola; La (unci-n ncurses>getmouse./
devolver* FALSE si un evento del mouse es visi#le en la ventana dadaA o TRUE de lo contrario; Las
opciones del evento ser*n entregadas en el par*metro eento_mouseA el cual de#e ser una matrizA
pasada por re(erencia >vea el e'emplo siguiente?; +n caso de <FitoA se entregar* una matriz
asociativa con las siguientes clavesC
=id= C .d para distinguir mBltiples dispositivos
=F= C posici-n F de pantalla relativa en celdas de caracter
=y= C posici-n y de pantalla relativa en celdas de caracter
=z= C no soportado por el momento
=mmas"= C acci-n del mouse
E'emplo !. E'emplo de ncurses>getmouse./
<?php
s8itch 3ncurses%Eetch399:
case .R+'&E&%]EP%"?+&E@
i# 3!ncurses%Eetmouse3&$me=ent99:
i# 3$me=ent)"mmasI"/ & .R+'&E&%"?+&E%Z+**?.6%'E&&EL9:
$mouse%x > $me=ent)"x"/; // -uardar la posicion del mouse
$mouse%y > $me=ent)"y"/;
;
;
breaI;
de#ault@
/W .... W/
;
?>
$ea tam#i<n ncurses>ungetmouse./
ncurses>gety+
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZgetyF 22 Devuelve la posici-n de cursor actual para una ventana
Kescripci"n
void ncurses>gety+ > resource ventanaA int iyA int iF ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>halfdelay
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZhal(delay 22 5olocar la terminal en modo de medio retraso
Kescripci"n
int ncurses>halfdelay > int decimo ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>has>colors
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZhasZcolors 22 5he/uear si la terminal tiene colores
Kescripci"n
#ool ncurses>has>colors > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>has>colors./ devuelve TRUE o FALSE dependiendo de /ue la terminal tenga soporte de
colores;
$ea tam#i<nC ncurses>can>change>color./
ncurses>has>ic
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZhasZic 22 5he/uear por el soporte de inserci-n y #orrado
Kescripci"n
#ool ncurses>has>ic > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>has>ic./ che/uea el soporte de inserci-n y #orrado de la terminal; Devuelve TRUE cuando
la terminal tiene soporte de inserci-nD#orradoA FALSE de lo contrario;
$ea tam#i<nC ncurses>has>il./
ncurses>has>il
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZhasZil 22 5he/uea el soporte de inserci-n y #orrado
Kescripci"n
#ool ncurses>has>il > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>has>il./ che/uea el soporte de inserci-n y #orrado de l)neas de la terminal; Devuelve
TRUE cuando la terminal tiene soporte de inserci-nD#orrado de l)neasA FALSE de lo contrario;
$ea tam#i<nC ncurses>has>ic./
ncurses>has>Bey
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZhasZ"ey 22 5he/uear por la presencia de una tecla de (unci-n en el teclado de la terminal
Kescripci"n
int ncurses>has>Bey > int codigoZtecla ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>hide>panel
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZhideZpanel 22 Remover un panel de la pilaA haci<ndolo invisi#le
Kescripci"n
int ncurses>hide>panel > resource panel ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>hline
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZhline 22 Di#u'ar una l)nea horizontal en la posici-n actual usando un caracter con atri#utosA
y de m*Fimo n caracteres de largo
Kescripci"n
int ncurses>hline > int caracterZatri#utosA int n ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>inch
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZinch 22 O#tener el caracter y los atri#utos de la posici-n actual
Kescripci"n
string ncurses>inch > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>inch./ devuelve el caracter de la posici-n actual;
ncurses>init>color
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZinitZcolor 22 +sta#lecer un nuevo valor RGB para un color
Kescripci"n
int ncurses>init>color > int colorA int rA int gA int # ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>init>pair
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZinitZpair 22 Reservar una pare'a de color
Kescripci"n
int ncurses>init>pair > int pare'aA int (gA int #g ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>init
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZinit 22 .nicializar ncurses
Kescripci"n
int ncurses>init > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>init./ inicializa la inter(az ncurses y de#e ser usada antes de cual/uier otra (unci-n de
ncurses;
ncurses>insch
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZinsch 22 .nsertar un caracterA moviendo el resto de la l)neaA incluyendo el caracter en la
posici-n actual
Kescripci"n
int ncurses>insch > int caracter ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>insdelln
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZinsdelln 22 .nsertar l)neas antes de la l)nea actualA desplazando hacia a#a'o >los nBmeros
negativos eliminan l)neas y desplazan hacia arri#a?
Kescripci"n
int ncurses>insdelln > int conteo ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>insertln
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZinsertln 22 .nsertar una l)neaA mover el resto de la pantalla hacia a#a'o
Kescripci"n
#ool ncurses>insertln > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>insertln./ inserta una nueva l)nea antes de la l)nea actual; La l)nea m*s #a'a se perder*;
ncurses>insstr
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZinsstr 22 .nsertar cadena en la posici-n actualA moviendo el resto de la l)nea hacia la derecha
Kescripci"n
int ncurses>insstr > string teFto ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>instr
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZinstr 22 Lee una cadena desde la pantalla de terminal
Kescripci"n
int ncurses>instr > string i#u(er ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>instr./ devuelve el nBmero de caracteres leidos desde la posici-n del caracter actual hasta
el (in de l)nea; 1u9er contiene los caracteres; Los atri#utos son retirados de los caracteres;
ncurses>isend3in
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZisendEin 22 Ncurses se encuentra en modo endEinA puede e(ectuarse salida de pantalla
normal
Kescripci"n
#ool ncurses>isend3in > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>isend3in./ devuelve TRUE si la (unci-n ncurses>end3in./ ha sido llamada sin llamada
su#siguiente alguna a ncurses>3refresh./A o FALSE de lo contrario;
$ea tam#i<n ncurses>end3in./ y ncurses>3refresh./;
ncurses>BeyoB
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZ"eyo" 22 &a#ilitar o desha#ilitar un c-digo de tecla
Kescripci"n
int ncurses>BeyoB > int codigoZteclaA #ool ha#ilitar ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>Beypad
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZ"eypad 22 Activa o desactiva el teclado num<rico
Kescripci"n
int ncurses>Beypad > resource ventanaA #ool #( ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>Billchar
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZ"illchar 22 Devuelve el caracter de eliminaci-n de l)nea actual
Kescripci"n
#ool ncurses>Billchar > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>Billchar./ devuelve el caracter de eliminaci-n de l)nea actual;
$ea tam#i<nC ncurses>erasechar./
ncurses>longname
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZlongname 22 Devuelve la descripci-n de la terminal
Kescripci"n
string ncurses>longname > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>longname./ devuelve una descripci-n detallada de la terminal; La descripci-n es truncada
a 10M caracteres; +n caso de (alloA ncurses>longname./ devuelve N@LL;
$ea tam#i<nC ncurses>termname./
ncurses>meta
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZmeta 22 &a#ilitaDdesha#ilita la meta2in(ormaci-n de M2#its de tecla
Kescripci"n
int ncurses>meta > resource ventanaA #ool M#it ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>mouse>trafo
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZmouseZtra(o 22 ,rans(orma coordenadas
Kescripci"n
#ool ncurses>mouse>trafo > int iyA int iFA #ool aZpantalla ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>mouseinter5al
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZmouseinterval 22 +sta#lecer el tiempo de espera para clics de #ot-n del mouse
Kescripci"n
int ncurses>mouseinter5al > int milisegundos ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>mousemasB
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZmousemas" 22 +sta#lece opciones del mouse
Kescripci"n
int ncurses>mousemasB > int nuevaZmascaraA int ivie'aZmascara ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
La (unci-n ncurses>mousemasB./ esta#lecer* los eventos del mouse a ser reportados; Por de(ectoA
ningBn evento del mouse ser* reportado; La (unci-n ncurses>mousemasB./ devolver* una m*scara
para indicar cBales de los eventos especi(icados en el par*metro nuea_mascara pueden ser
reportados; +n caso de un total (racasoA devuelve 3; +n el par*metro 6eUa_mascaraA el cual es
pasado por re(erenciaA ncurses>mousemasB./ devuelve el valor previo de la m*scara de eventos del
mouse; Los eventos del mouse son representados por N5@R+ZS+%ZMO@+ en la secuencia de
entrada ncurses>3getch./; Para leer los datos del evento y recuperar el evento de la colaA llame a
ncurses>getmouse./;
5omo e(ecto secundarioA de(inir una m*scara del mouse como 3 en nuea_mascara desha#ilita el
puntero del mouse; De(inir un valor distinto de cero ha#ilita el puntero del mouse;
Las opciones de m*scara del mouse pueden de(inirse con las siguientes constantes prede(inidasC
N5@R+ZB@,,ON1ZPR++D
N5@R+ZB@,,ON1ZR+L+A+D
N5@R+ZB@,,ON1Z5L.5S+D
N5@R+ZB@,,ON1ZDO@BL+Z5L.5S+D
N5@R+ZB@,,ON1Z,R.PL+Z5L.5S+D
N5@R+ZB@,,ON0ZPR++D
N5@R+ZB@,,ON0ZR+L+A+D
N5@R+ZB@,,ON0Z5L.5S+D
N5@R+ZB@,,ON0ZDO@BL+Z5L.5S+D
N5@R+ZB@,,ON0Z,R.PL+Z5L.5S+D
N5@R+ZB@,,ON7ZPR++D
N5@R+ZB@,,ON7ZR+L+A+D
N5@R+ZB@,,ON7Z5L.5S+D
N5@R+ZB@,,ON7ZDO@BL+Z5L.5S+D
N5@R+ZB@,,ON7Z,R.PL+Z5L.5S+D
N5@R+ZB@,,ON8ZPR++D
N5@R+ZB@,,ON8ZR+L+A+D
N5@R+ZB@,,ON8Z5L.5S+D
N5@R+ZB@,,ON8ZDO@BL+Z5L.5S+D
N5@R+ZB@,,ON8Z,R.PL+Z5L.5S+D
N5@R+ZB@,,ONZ&.F,_
N5@R+ZB@,,ONZ5,RL
N5@R+ZB@,,ONZAL,
N5@R+ZALLZMO@+Z+$+N,
N5@R+ZR+POR,ZMO@+ZPO.,.ON
E'emplo !. E'emplo de ncurses>mousemasB./
<?php
$nue=a%mascara > .R+'&E&%Z+**?.6%RO4R]EL [ .R+'&E&%Z+**?.6%'EOE,&EL;
$mascara > ncurses%mousemasI3$nue=a%mascara, &$=ieja%mascara9;
i# 3$mascara & $nue=a%mascara9:
print# 3"*odas las opciones del mouse especi#icadas ser&aacute;n soportadasVn"9;
;
?>
$ea tam#i<n ncurses>getmouse./A ncurses>ungetmouse./ y ncurese>getch./;
ncurses>mo5e>panel
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZmoveZpanel 22 Mueve un panel de modo /ue su es/uina superior iz/uierda se encuentre en
PcomienzoZFA comienzoZyQ
Kescripci"n
int ncurses>mo5e>panel > resource panelA int comienzoZFA int comienzoZy ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>mo5e
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZmove 22 Mover la posici-n de salida
Kescripci"n
int ncurses>mo5e > int yA int F ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>m5addch
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZmvaddch 22 Mover la posici-n actual y agregar un caracter
Kescripci"n
int ncurses>m5addch > int yA int FA int c ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>m5addchnstr
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZmvaddchnstr 22 Mover la posici-n y agregar una cadena con atri#utos con la longitud
especi(icada
Kescripci"n
int ncurses>m5addchnstr > int yA int FA string sA int n ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>m5addchstr
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZmvaddchstr 22 Mover la posici-n y agregar una cadena con atri#utos
Kescripci"n
int ncurses>m5addchstr > int yA int FA string s ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>m5addnstr
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZmvaddnstr 22 Mover la posici-n y agregar una cadena con la longitud especi(icada
Kescripci"n
int ncurses>m5addnstr > int yA int FA string sA int n ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>m5addstr
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZmvaddstr 22 Mover la posici-n y agregar una cadena
Kescripci"n
int ncurses>m5addstr > int yA int FA string s ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>m5cur
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZmvcur 22 Mover el cursor inmediatamente
Kescripci"n
int ncurses>m5cur > int vie'oZyA int vie'oZFA int nuevoZyA int nuevoZF ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>m5delch
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZmvdelch 22 Mover la posici-n y eliminar un caracterA desplazar el resto de la l)nea hacia la
iz/uierda
Kescripci"n
int ncurses>m5delch > int yA int F ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>m5getch
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZmvgetch 22 Mover la posici-n y o#tener el caracter en la nueva posici-n
Kescripci"n
int ncurses>m5getch > int yA int F ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>m5hline
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZmvhline 22 +sta#lecer una nueva posici-n y di#u'ar una l)nea horizontal usando un caracter
con atri#utos y una longitud m*Fima de n caracteres
Kescripci"n
int ncurses>m5hline > int yA int FA int caracterZatri#utosA int n ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>m5inch
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZmvinch 22 Mover la posici-n y o#tener el caracter con atri#utos en la nueva posici-n
Kescripci"n
int ncurses>m5inch > int yA int F ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>m55line
>no version in(ormationA might #e only in 5$?
ncursesZmvvline 22 +sta#lecer una nueva posici-n y di#u'ar una l)nea vertical usando un caracter
con atri#utos y una longitud m*Fima de n caracteres
Kescripci"n
int ncurses>m55line > int yA int FA int caracterZatri#utosA int n ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>m53addstr
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZmvEaddstr 22 Agregar una cadena en una nueva posici-n al interior de una ventana
Kescripci"n
int ncurses>m53addstr > resource ventanaA int yA int FA string teFto ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>napms
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZnapms 22 Dormir
Kescripci"n
int ncurses>napms > int milisegundos ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>ne3>panel
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZneEZpanel 22 5rear un nuevo panel y asociarlo con una ventana
Kescripci"n
resource ncurses>ne3>panel > resource ventana ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>ne3pad
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZneEpad 22 5rea un nuevo pad >ventana?
Kescripci"n
resource ncurses>ne3pad > int (ilasA int columnas ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>ne33in
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZneEEin 22 5rear una nueva ventana
Kescripci"n
int ncurses>ne33in > int (ilasA int columnasA int yA int F ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>ne33in./ crea una nueva ventana en donde di#u'ar elementos; Las ventanas pueden ser
posicionadas usando 8A ?A 96las y columnas; 5uando se creen ventanas adicionalesA recuerde usar
ncurses>getma+y+./ para veri(icar el espacio disponi#leA ya /ue el tamaWo de terminal es individual
y puede variar; +l valor de retorno es un .D de recurso usado para cam#iar entre mBltiples ventanas;
ncurses>nl
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZnl 22 ,raducir l)nea nueva y retorno de carro D alimentaci-n de l)nea
Kescripci"n
#ool ncurses>nl > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>nocbreaB
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZnoc#rea" 22 5am#iar la terminal a modo normal >coo"ed?
Kescripci"n
#ool ncurses>nocbreaB > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
La rutina ncurses>nocbreaB./ devuelve la terminal a modo normal >coo"ed?; .nicialmente la
terminal puede o no estar en modo c#rea"A ya /ue el modo se hereda; De tal modo /ue un programa
de#er)a llamar a ncurses>cbreaB./ y ncurses>nocbreaB./ eFpl)citamente; Devuelve TRUE si
ocurri- un errorA o FALSE de lo contrario;
$ea tam#i<nC ncurses>cbreaB./
ncurses>noecho
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZnoecho 22 Desactivar la repetici-n de entrada del teclado
Kescripci"n
#ool ncurses>noecho > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>noecho./ previene la repetici-n de los caracteres escritos por el usuario; Devuelve TRUE si
ocurre un errorA o FALSE de lo contrario;
$ea tam#i<nC ncurses>echo./A ncurses>getch./
ncurses>nonl
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZnonl 22 No traducir l)nea nueva y retorno de carro D alimentaci-n de l)nea
Kescripci"n
#ool ncurses>nonl > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>no?iflush
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZno/i(lush 22 No realizar volcados en caracteres de seWales
Kescripci"n
int ncurses>no?iflush > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>nora3
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZnoraE 22 alir del modo puro en la terminal
Kescripci"n
#ool ncurses>nora3 > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>nora3./ retira la terminal del modo puro; +l modo puro >raE? es similar al modo c#re"A en
tanto /ue los caracteres escritos son pasados inmediatamente al programa del usuario; Las
di(erencias consisten en /ueA en modo puroA los caracteres de control de interrupci-nA salidaA
suspensi-n y (lu'o son todos pasados sin ser interpretadosA en lugar de generar una seWal; Devuelve
TRUE si ocurri- un errorA o FALSE de lo contrario;
$ea tam#i<nC ncurses>ra3./A ncurses>cbreaB./A ncurses>nocbreaB./
ncurses>pair>content
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZpairZcontent 22 O#tiene el valor RGB del color
Kescripci"n
int ncurses>pair>content > int pare'aA int i(A int i# ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>panel>abo5e
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZpanelZa#ove 22 Devuelve el panel encima del panel indicado
Kescripci"n
int ncurses>panel>abo5e > resource panel ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
i el panel es nullA devuelve el panel al (ondo de la pila;
ncurses>panel>belo3
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZpanelZ#eloE 22 Devuelve el panel por de#a'o del panel indicado
Kescripci"n
int ncurses>panel>belo3 > resource panel ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
i el panel no eFisteA devuelve el panel m*s arri#a en la pila
ncurses>panel>3indo3
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZpanelZEindoE 22 Devuelve la ventana asociada con el panel
Kescripci"n
int ncurses>panel>3indo3 > resource panel ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>pnoutrefresh
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZpnoutre(resh 22 5opia una regi-n desde un pad a la pantalla virtual
Kescripci"n
int ncurses>pnoutrefresh > resource padA int pZ(ilZminA int pZcolZminA int sZ(ilZminA int
sZcolZminA int sZ(ilZmaFA int sZcolZmaF ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>prefresh
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZpre(resh 22 5opia una regi-n desde un pad a la pantalla virtual
Kescripci"n
int ncurses>prefresh > resource padA int pZ(ilZminA int pZcolZminA int sZ(ilZminA int sZcolZminA int
sZ(ilZmaFA int sZcolZmaF ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>putp
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZputp 22 Aplicar la in(ormaci-n de m*rgenes a la cadena e imprimirla
Kescripci"n
int ncurses>putp > string teFto ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>?iflush
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZ/i(lush 22 Producir volcado en caracteres de seWales
Kescripci"n
int ncurses>?iflush > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>ra3
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZraE 22 5olocar la terminal en modo puro
Kescripci"n
#ool ncurses>ra3 > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>ra3./ coloca la terminal en modo puro; +l modo puro es similar al modo c#rea"A en tanto
/ue los caracteres escritos son pasados inmediatamente al programa del usuario; Las di(erencias
consisten en /ueA en modo puroA los caracteres de control de interrupci-nA salidaA suspensi-n y (lu'o
son todos pasados sin ser interpretadosA en lugar de generar una seWal; Devuelve TRUE si ocurre
algBn errorA o FALSE de lo contrario;
$ea tam#i<nC ncurses>nora3./A ncurses>cbreaB./A ncurses>nocbreaB./
ncurses>refresh
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZre(resh 22 Re(rescar la pantalla
Kescripci"n
int ncurses>refresh > int ch ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>replace>panel
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZreplaceZpanel 22 Reemplaza la ventana asociada con el panel
Kescripci"n
int ncurses>replace>panel > resource panelA resource ventana ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>reset>prog>mode
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZresetZprogZmode 22 Resta#lece el modo de programa guardado por de(ZprogZmode
Kescripci"n
int ncurses>reset>prog>mode > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>reset>shell>mode
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZresetZshellZmode 22 Resta#lece el modo de int<rprete de comandos guardado por
de(ZshellZmode
Kescripci"n
int ncurses>reset>shell>mode > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>resetty
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZresetty 22 Resta#lece el estado guardado de la terminal
Kescripci"n
#ool ncurses>resetty > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
La (unci-n ncurses>resetty./ recupera el estado de la terminalA el cual (ue guardado previamente al
llamar ncurses>sa5etty./; +sta (unci-n siempre devuelve FALSE;
$ea tam#i<nC ncurses>sa5etty./
ncurses>sa5etty
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZsavetty 22 Guarda el estado de la terminal
Kescripci"n
#ool ncurses>sa5etty > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
La (unci-n ncurses>sa5etty./ guarda el estado actual de la terminal; +l estado de terminal guardado
puede ser recuperado con la (unci-n ncurses>resetty./; ncurses>sa5etty./ siempre devuelve
FALSE;
$ea tam#i<nC ncurses>resetty./
ncurses>scr>dump
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZscrZdump 22 $uelca el contenido de la pantalla en un archivo
Kescripci"n
int ncurses>scr>dump > string nom#reZarchivo ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>scr>init
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZscrZinit 22 .nicializar la pantalla desde un volcado en un archivo
Kescripci"n
int ncurses>scr>init > string nom#reZarchivo ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>scr>restore
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZscrZrestore 22 Recuperar la pantalla desde un volcado en un archivo
Kescripci"n
int ncurses>scr>restore > string nom#reZarchivo ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>scr>set
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZscrZset 22 &eredar la pantalla de un volcado en un archivo
Kescripci"n
int ncurses>scr>set > string nom#reZarchivo ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>scrl
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZscrl 22 Desplazar el contenido de la ventana hacia arri#a o a#a'o sin cam#iar la posici-n
actual
Kescripci"n
int ncurses>scrl > int conteo ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>sho3>panel
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZshoEZpanel 22 5oloca un panel invisi#le al comienzo de la pilaA haci<ndola visi#le
Kescripci"n
int ncurses>sho3>panel > resource panel ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>slB>attr
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZsl"Zattr 22 Devuelve el atri#uto de la eti/ueta suave de teclado
Kescripci"n
#ool ncurses>slB>attr > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>slB>attr./ devuelve el atri#uto de la eti/ueta suave de teclado actual; +n caso de (alloA
devuelve TRUEA FALSE de lo contrario;
ncurses>slB>attroff
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZsl"Zattro(( 22 Desha#ilitar los atri#utos dados para las eti/uetas suaves de teclado
Kescripci"n
int ncurses>slB>attroff > int argZint ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>slB>attron
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZsl"Zattron 22 &a#ilitar los atri#utos dados para las eti/uetas suaves de (unciones de teclado
Kescripci"n
int ncurses>slB>attron > int intarg ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>slB>attrset
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZsl"Zattrset 22 De(inir los atri#utos dados para las eti/uetas suaves de (unciones de teclado
Kescripci"n
int ncurses>slB>attrset > int intarg ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>slB>clear
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZsl"Zclear 22 Limpia las eti/uetas suaves de la pantalla
Kescripci"n
#ool ncurses>slB>clear > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
La (unci-n ncurses>slB>clear./ limpia las eti/uetas suaves de teclado de la pantalla; Devuelve
TRUE en caso de (alloA o FALSE de lo contrario;
ncurses>slB>color
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZsl"Zcolor 22 +sta#lece el color para las eti/uetas suaves de teclado
Kescripci"n
int ncurses>slB>color > int intarg ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>slB>init
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZsl"Zinit 22 .nicializa las eti/uetas suaves de (unciones de teclado
Kescripci"n
#ool ncurses>slB>init > int (ormato ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
La (unci-n ncurses>slB>init./ de#e ser llamada antes de ncurses>initscr./ o de /ue
ncurses>ne3term./ sea llamada; i ncurses>initscr./ usa eventualmente una l)nea de stdscr para
emular las eti/uetas suavesA entonces 9ormato determina el modo en /ue las eti/uetas son
acomodadas en la pantalla; Al de(inir 9ormato como 3A se indica un arreglo 72027 de las eti/uetasA 1
indica un arreglo 828 y 0 indica el modo est*ndar de P5 82828A pero adicionalmente se crear* una
l)nea de )ndice;
ncurses>slB>noutrefresh
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZsl"Znoutre(resh 22 5opia las eti/uetas suaves de teclado a la pantalla virtual
Kescripci"n
#ool ncurses>slB>noutrefresh > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>slB>refresh
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZsl"Zre(resh 22 5opia las eti/uetas suaves de teclado a la pantalla
Kescripci"n
#ool ncurses>slB>refresh > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>slB>refresh./ copia eti/uetas suaves de teclado desde la pantalla virtual a la pantalla ()sica;
Devuelve TRUE en caso de (alloA o FALSE de lo contrario;
ncurses>slB>restore
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZsl"Zrestore 22 Recupera las eti/uetas suaves de teclado
Kescripci"n
#ool ncurses>slB>restore > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
La (unci-n ncurses>slB>restore./ recupera las eti/uetas suaves de teclado despu<s de /ue se ha
completado un proceso ncurses>slB>clear./;
ncurses>slB>set
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZsl"Zset 22 +sta#lece las eti/uetas de teclado
Kescripci"n
#ool ncurses>slB>set > int numZeti/uetaA string eti/uetaA int (ormato ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>slB>touch
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZsl"Ztouch 22 O#liga a /ue se produzca salida cuando se e'ecute ncursesZsl"Znoutre(resh
Kescripci"n
#ool ncurses>slB>touch > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
La (unci-n ncurses>slB>touch./ o#liga a /ue todas las eti/uetas suaves sean desplegadas la
pr-Fima vez /ue se realiza un llamado a ncurses>slB>noutrefresh./;
ncurses>standend
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZstandend 22 De'ar de usar el atri#uto HstandoutH
Kescripci"n
int ncurses>standend > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>standout
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZstandout 22 5omenzar a usar el atri#uto HstandoutH
Kescripci"n
int ncurses>standout > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>start>color
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZstartZcolor 22 5omenzar a usar colores
Kescripci"n
int ncurses>start>color > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>termattrs
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZtermattrs 22 Devuelve un valor OR l-gico de todas las #anderas de atri#utos soportados por
la terminal
Kescripci"n
#ool ncurses>termattrs > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>termname
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZtermname 22 Devuelve el nom#re >corto? de la terminal
Kescripci"n
string ncurses>termname > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>termname./ devuelve el nom#re corto de las terminales; +l nom#re corto es truncado a 18
caracteres; +n caso de (alloA ncurses>termname./ devuelve N@LL;
$ea tam#i<nC ncurses>longname./
ncurses>timeout
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZtimeout 22 +sta#lecer el tiempo de espera para secuencias especiales de teclas
Kescripci"n
void ncurses>timeout > int milisegundos ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>top>panel
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZtopZpanel 22 Mueve un panel visi#le al tope de la pila
Kescripci"n
int ncurses>top>panel > resource panel ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>typeahead
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZtypeahead 22 +speci(icar un descriptor de archivo di(erente para el che/ueo de escritura
siguiente
Kescripci"n
int ncurses>typeahead > int da ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>ungetch
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZungetch 22 5olocar un caracter de vuelta en la secuencia de entrada
Kescripci"n
int ncurses>ungetch > int codigoZtecla ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>ungetmouse
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZungetmouse 22 5oloca un evento de mouse en la cola
Kescripci"n
#ool ncurses>ungetmouse > array eventoZmouse ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>getmouse./ coloca un evento S+%ZMO@+ en la cola de eventos devueltos y asocia con
<l los datos de estado y coordenadas relativas2a2pantalla de celda de caracter especi(icadas en
eento_mouse; Las opciones del evento son especi(icadas en la matriz asociativa eento_mouseC
=id= C .d para distinguir mBltiples dispositivos
=F= C posici-n F relativa a la pantalla en celdas de caracter
=y= C posici-n y relativa a la pantalla en celdas de caracter
=z= C por el momento sin soporte
=mmas"= C acci-n del mouse
ncurses>ungetmouse./ devuelve FALSE en caso de <FitoA o TRUE de lo contrario;
$ea tam#i<nC ncurses>getmouse./
ncurses>update>panels
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZupdateZpanels 22 Re(resca la pantalla virtualA para re(le'ar las relaciones entre los paneles
en la pila
Kescripci"n
void ncurses>update>panels > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>use>default>colors
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZuseZde(aultZcolors 22 Asignar los colores predeterminados de la terminal al id de color 21
Kescripci"n
#ool ncurses>use>default>colors > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>use>en5
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZuseZenv 22 5ontrolar el uso de in(ormaci-n del entorno so#re el tamaWo de la terminal
Kescripci"n
void ncurses>use>en5 > #ool #andera ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>use>e+tended>names
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZuseZeFtendedZnames 22 5ontrolar el uso de nom#res eFtendidos en descripciones de
in(ormaci-n de terminal
Kescripci"n
int ncurses>use>e+tended>names > #ool #andera ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>5idattr
>P&P 8 _^ 8;1;3A P&P 4?
ncursesZvidattr 22 Desplegar la cadena en la terminal con el atri#uto de modo de video
Kescripci"n
int ncurses>5idattr > int intarg ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>5line
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZvline 22 Di#u'ar una l)nea vertical en la posici-n actual usando un caracter con atri#utos y
una longitud m*Fima de n caracteres
Kescripci"n
int ncurses>5line > int caracterZatri#utosA int n ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3addch
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZEaddch 22 Agrega un caracter en la posici-n actual de una ventana y avanza el cursor
Kescripci"n
int ncurses>3addch > resource ventanaA int ch ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3addstr
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZEaddstr 22 .mprime un teFto en la posici-n actual de una ventana
Kescripci"n
int ncurses>3addstr > resource ventanaA string cadena PA int nQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3attroff
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZEattro(( 22 Desha#ilita los atri#utos para una ventana
Kescripci"n
int ncurses>3attroff > resource ventanaA int atri#utos ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3attron
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZEattron 22 &a#ilita los atri#utos para una ventana
Kescripci"n
int ncurses>3attron > resource ventanaA int atri#utos ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3attrset
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZEattrset 22 +sta#lecer los atri#utos para una ventana
Kescripci"n
int ncurses>3attrset > resource ventanaA int atri#utos ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3border
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZE#order 22 Di#u'a un #orde alrededor de la ventana usando caracteres con atri#utos
Kescripci"n
int ncurses>3border > resource ventanaA int iz/uierdaA int derechaA int arri#aA int a#a'oA int
es/ZsupZiz/A int es/ZsupZderA int es/Zin(Ziz/A int es/Zin(Zder ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ncurses>3border./ di#u'a las l)neas y es/uinas indicadas alrededor de la ventana entana dada;
5ada par*metro espera 3 para di#u'ar una l)neaA y 1 para saltarla; Las es/uinas son la superior
iz/uierdaA la superior derechaA la in(erior iz/uierda y la in(erior derecha;
@tilice ncurses>border./ para #ordes alrededor de la ventana principal;
$ea tam#i<n ncurses>border./;
ncurses>3clear
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZEclear 22 Limpia la ventana
Kescripci"n
int ncurses>3clear > resource ventana ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3color>set
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZEcolorZset 22 +sta#lece pare'as de colores en la ventana
Kescripci"n
int ncurses>3color>set > resource ventanaA int pare'aZcolor ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3erase
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZEerase 22 +liminar los contenidos de la ventana
Kescripci"n
int ncurses>3erase > resource ventana ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3getch
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZEgetch 22 Lee un caracter desde el teclado >en la ventana?
Kescripci"n
int ncurses>3getch > resource ventana ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3hline
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZEhline 22 Di#u'a una l)nea horizontal en una ventana en la posici-n actual usando un
caracter con atri#utos y un largo m*Fimo de n caracteres
Kescripci"n
int ncurses>3hline > resource ventanaA int caracterZatri#utosA int n ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3mouse>trafo
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZEmouseZtra(o 22 ,rans(orma coordenadas de ventanaDstdscr
Kescripci"n
#ool ncurses>3mouse>trafo > resource ventanaA int iyA int iFA #ool aZpantalla ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3mo5e
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZEmove 22 Mueve la posici-n de salida de la ventana
Kescripci"n
int ncurses>3mo5e > resource ventanaA int yA int F ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3noutrefresh
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZEnoutre(resh 22 5opia la ventana a la pantalla virtual
Kescripci"n
int ncurses>3noutrefresh > resource ventana ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3refresh
>P&P 8 _^ 8;0;3A P&P 4?
ncursesZEre(resh 22 Re(rescar la ventana en la pantalla de terminal
Kescripci"n
int ncurses>3refresh > resource ventana ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3standend
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZEstandend 22 Finaliza el modo standout para una ventana
Kescripci"n
int ncurses>3standend > resource ventana ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>3standout
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZEstandout 22 .ngresar a modo standout en una ventana
Kescripci"n
int ncurses>3standout > resource ventana ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ncurses>35line
>P&P 8 _^ 8;7;3A P&P 4?
ncursesZEvline 22 Di#u'a una l)nea vertical en una ventana en la posici-n actual usando un caracter
con atri#utos y una longitud m*Fima de n caracteres
Kescripci"n
int ncurses>35line > resource ventanaA int caracterZatri#utosA int n ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
:IIIII. ;unciones de Med
Introducci"n
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones de Configuraci"n de Med
Nombre Predeterminado Modificable
de(ineZsyslogZvaria#le
s
=3= P&PZ.N.ZALL
Para m*s detalles so#re las constantes P&PZ.N.ZV y su de(inici-nA vea ini>set./;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
#e96ne_s?sloE_ar6a1les boolean
.ndica si de#en de(inirse las di(erentes varia#les syslog >p;e'; YLOGZP.DA YLOGZ5RONA
etc;?; Desha#ilitar este par*metro es una #uena idea desde el punto de vista del rendimiento;
+n tiempo de e'ecuci-nA puede de(inir estas varia#les con un llamado a
define>syslog>5ariables./;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
Las constantes listadas a/ui est*n siempre disponi#les a trav<s del =nBcleo P&P=;
Tabla *. Jpciones de openlog./
Constante Kescripci"n
LOGZ5ON
si hay un error durante el env)o de datos al registro del sistemaA escri#ir
directamente a la consola de sistema
LOGZND+LA
%
a#rir la coneFi-n con el registro inmediatamente
LOGZOD+LA
%
>predeterminado? retrasar la apertura de coneFi-n hasta /ue el primer mensa'e sea
registrado
LOGZNOLA.
,

LOGZP+RRO
R
imprimir mensa'es de registro tam#i<n en stderr
LOGZP.D incluir P.D con cada mensa'e
Tabla 7. ;acilidades de openlog./
Constante Kescripci"n
LOGZA@,&
mensa'es de seguridadDautorizaci-n >usar LOGZA@,&PR.$ en su lugar
en sistemas en donde tal constante est* de(inida?
LOGZA@,&PR.$ mensa'es de seguridadDautorizaci-n >privados?
LOGZ5RON daemonio de relo' >cron y at?
LOGZDA+MON otros daemonios de sistema
LOGZS+RN mensa'es de "ernel
LOGZLO5AL3 ;;;
LOGZLO5AL:
reservadas para uso localA no est*n disponi#les en LindoEs
LOGZLPR su#sistema de impresi-n de l)nea
LOGZMA.L su#sistema de correo
LOGZN+L su#sistema de noticias @+N+,
LOGZ%LOG mensa'es generados internamente por syslogd
LOGZ@+R mensa'es gen<ricos de nivel de usuario
LOGZ@@5P su#sistema @@5P
Tabla 8. Prioridades de syslog./ .en orden descendiente/
Constante Kescripci"n
LOGZ+M+RG el sistema es inutiliza#le
Constante Kescripci"n
LOGZAL+R,
de#e tomarse una acci-n
inmediatamente
LOGZ5R., condiciones cr)ticas
LOGZ+RR condiciones de error
LOGZLARN.NG condiciones de advertencia
LOGZNO,.5+ condici-n normalA pero signi(icativa
LOGZ.NFO mensa'e in(ormativo
LOGZD+B@G mensa'e de nivel de depuraci-n
Tabla 9. Jpciones de dns>get>record./
Constante Kescripci"n
DNZA Recurso de Direcci-n .Pv8
DNZMJ Recurso de .ntercam#io de 5orreo
DNZ5NA
M+
Recurso Alias >Nom#re 5an-nico?
DNZN Recurso de Autoridad de ervidor de Nom#res
DNZP,R Recurso de Apuntador
DNZ&.NF
O
Recurso de .n(ormaci-n de &ost >$ea los Nom#res de istemas Operativos de
.ANA para consultar el signi(icado de estos valores?
DNZOA 5omienzo de Recurso de Autoridad
DNZ,J, Recurso de ,eFto
DNZAN%
5ual/uier Registro de Recurso; +n la mayor)a de sistemasA <ste valor devuelve todos
los registros de recursoA sin em#argoA no de#er)a con(iarse en <l para usos cr)ticos;
Prue#e con DNZALL en su lugar;
DNZAAA
A
Recurso de Direcci-n .PvK
DNZALL 5onsultar el nom#re de servidor iterativamente para cada tipo de registro disponi#le;
Tabla de contenidos
chec"dnsrr 22 5omprue#a registros DN correspondientes a nom#res de m*/uinas en .nternet o
direcciones .P;
closelog 22 cierra la coneFi-n con el logger del sistema
de#uggerZo(( 22 desha#ilita el depurador interno de P&P
de#uggerZon 22 ha#ilita el depurador interno de P&P
de(ineZsyslogZvaria#les 22 .nicializa todas las constantes relacionadas con syslog
dnsZchec"Zrecord 22 in-nimo para checBdnsrr./
dnsZgetZmF 22 in-nimo para getm+rr./
dnsZgetZrecord 22 Recuperar Registros de Recursos DN asociados con un nom#re de servidor
hu<sped
(soc"open 22 A#rir una coneFi-n de soc"ets de dominio de .nternet o @niF
gethost#yaddr 22 O#tiene el nom#re de una m*/uina en .nternet mediante su direcci-n .P;
gethost#yname 22 O#tiene la direcci-n .P correspondiente al nom#re de una m*/uina conectada a
.nternet;
gethost#ynamel 22 O#tiene una lista de direcciones .P correspondientea a los nom#res de m*/uinas
conectadas a .nternet;
getmFrr 22 O#tiene registros MJ correspondientes a una m*/uina conectada a .nternet;
getproto#yname 22 O#tener el nBmero de protocolo asociado con el nom#re de protocolo
getproto#ynum#er 22 O#tener el nom#re de protocolo asociado con un nBmero de protocolo
getserv#yname 22 o#tiene el ncde|mero del puerto asociado al servicio .nternet especi(icado
getserv#yport 22 o#tiene el servicio .nternet /ue correspondiente al puerto del protocolo especi(icado
inetZntop 22 5onverts a pac"ed internet address to a human reada#le representation
inetZpton 22 5onverts a human reada#le .P address to its pac"ed inZaddr representation
ip0long 22 5onvierte una cadena /ue contiene una direcci-n con puntos del Protocolo de .nternet
>.Pv8? en una direcci-n apropiada
long0ip 22 5onvierte una direcci-n de red .nternet >.Pv8? a una cadena en (ormato est*ndar de
.nternet con puntos
openlog 22 a#re una coneFi-n con el logger del sistema
p(soc"open 22 A#re coneFiones persistentes de dominio .nternet o @niF;
soc"etZgetZstatus 22 Alias de stream>get>meta>data./
soc"etZsetZ#loc"ing 22 Alias de stream>set>blocBing./
soc"etZsetZtimeout 22 Alias de stream>set>timeout./
syslog 22 genera un mensa'e de sistema
checBdnsrr
>P&P 7A P&P 8 A P&P 4?
chec"dnsrr 22 5omprue#a registros DN correspondientes a nom#res de m*/uinas en .nternet o
direcciones .P;
Kescripci"n
int checBdnsrr > string host PA string typeQ ?
Busca en DN entradas del tipo t?pe correspondientes a host; Devuelve verdadero si encuentra
algBn registroX devuelve (also si no encuentra ninguno o sucedi- algBn error;
t?pe puede serC AA MJA NA OAA P,RA 5NAM+A o AN%; Por de(ecto es MJ;
host puede ser o la direcci-n .P de la (orma FFFF;FFFF;FFFF;FFFF o el nom#re de la m*/uina;
$er tam#i<n getm+rr./A gethostbyaddr./A gethostbyname./A gethostbynamel./A y named>M? en las
p*ginas del manual;
closelog
>P&P 7A P&P 8 A P&P 4?
closelog 22 cierra la coneFi-n con el logger del sistema
Kescripci"n
int closelog > void ?
closelog./ cierra el descriptor /ue se est* usando para escri#ir en el logger del sistema; +l uso de
closelog./ es opcional;
debugger>off
>P&P 7?
de#uggerZo(( 22 desha#ilita el depurador interno de P&P
Kescripci"n
int debugger>off > void ?
Desha#ilita el depurador interno de P&P; +l depurador est* aBn en desarrollo;
debugger>on
>P&P 7?
de#uggerZon 22 ha#ilita el depurador interno de P&P
Kescripci"n
int debugger>on > string address ?
&a#ilita el depurador interno de P&PA conect*ndolo a a##ress; +l depurador esta aBn en desarrollo;
define>syslog>5ariables
>P&P 7A P&P 8 A P&P 4?
de(ineZsyslogZvaria#les 22 .nicializa todas las constantes relacionadas con syslog
Kescripci"n
void define>syslog>5ariables > void ?
.nicializa todas las constantes usadas en las (unciones syslog;
$ea tam#i<n openlog./A syslog./ y closelog./;
dns>checB>record
>P&P 4?
dnsZchec"Zrecord 22 in-nimo para checBdnsrr./
Kescripci"n
int dns>checB>record > string host PA string tipoQ ?
5he/uea los registros DN correspondientes a un nom#re de servidor hu<sped de .nternet o
direcci-n .P dada;
dns>get>m+
>P&P 4?
dnsZgetZmF 22 in-nimo para getm+rr./
Kescripci"n
int dns>get>m+ > string nom#reZhostA array ihostsZmF PA array ipesoQ ?
O#tener registros MJ correspondientes a un nom#re de servidor hu<sped de .nternet dado;
dns>get>record
>P&P 4?
dnsZgetZrecord 22 Recuperar Registros de Recursos DN asociados con un nom#re de servidor
hu<sped
Kescripci"n
array dns>get>record > string nom#reZhost PA int tipo PA array iauthnsA array iaddtlQQ ?
Nota- +sta (unci-n no est* implementada en plata(ormas LindoEs; Prue#e con la clase
P+AR NetZDN;
+sta (unci-n devuelve una matriz de matrices asociativas; 5ada matriz asociativa contiene por lo
menos las siguientes clavesC
Tabla !. Atributos KN, bsicos
Atribut
o
,ignificado
host
+l registro en el espacio de nom#res DN al /ue hacen re(erencia el resto de datos
asociados;
class
dns>get>record./ devuelve Bnicamente registros de clase .nternet y como talA <ste
par*metro siempre devolver* 0N;
type
5adena /ue contiene el tipo de registro; Otros atri#utos adicionales ser*n contenidos
tam#i<n en la matriz resultante dependiendo del valor de type; $ea la ta#la m*s adelante;
ttl
$alor ,ime ,o Live restante para este registro; +ste no ser* igual al ttl original del
registroA sino /ue ser* igual al ttl original menos cual/uiera /ue haya sido la longitud de
tiempo transcurrido desde /ue el servidor de nom#res o(icial (uera consultado;
nom1re_host de#e ser un nom#re de servidor hu<sped DN v*lidoA como =EEE;eFample;com=;
Pueden generarse consultas revertidas usando la notaci-n in2addr;arpaA pero gethostbyaddr./ es
m*s apropiada para la mayor)a de consultas revertidas;
Por de(ectoA dns>get>record./ #uscar* por cual/uier registro de recurso asociado con nom1re_host;
Para limitar la consultaA especi(i/ue el par*metro opcional t6po; t6po puede ser cual/uiera de los
siguientesC DNS_AA DNS_CNAMEA DNS_HINFOA DNS_M%A DNS_NSA DNS_PTRA DNS_SOAA
DNS_T%TA DNS_AAAAA DNS_SR$A DNS_NAPTRA DNS_A1A DNS_ALL o DNS_ANY; +l valor
predeterminado es DNS_,NB;
Nota- De#ido a eFcentricidades en el rendimiento de li#resolv entre plata(ormasA
DNS_ANY no siempre devolver* todos los registrosA la alternativa m*s lenta DNS_ALL
recolectar* todos los registros de (orma m*s con(ia#le;
Los opcionales tercer y cuarto argumento de esta (unci-nA authns y a##tl son pasados por re(erencia
yA si son usadosA ser*n llenados con Registros de Recurso para los Ser6#ores #e Nom1res O96c6alesA
y cual/uier ReE6stro ,#6c6onal respectivamente; $ea el e'emplo m*s adelante;
Tabla *. Jtras cla5es en las matrices asociati5asE dependientes de UtypeU
Tipo Columnas E+tra
, 6pC @na direcci-n .Pv8 en notaci-n decimal con puntos;
MF
pr6C Prioridad del gestor de correo; NBmeros #*s #a'os indican mayor prioridad; tarEetC
FODN del gestor de correo; $ea tam#i<n dns>get>m+./;
CN,ME
tarEetC FODN de la u#icaci-n en el espacio de nom#res DN de la cual es alias el
registro;
NS tarEetC FODN del servidor de nom#res /ue es la autoridad para este nom#re de host;
+TR tarEetC @#icaci-n dentro del espacio de nom#res DN a la /ue apunta este registro;
TFT t8tC 5adena de datos ar#itraria asociada con este registro;
!0N3O
cpuC NBmero .ANA /ue indica el 5P@ de la m*/uina re(erenciada por este registro; osC
NBmero .ANA /ue indica el istema Operativo en la m*/uina re(erenciada por este
registro; $ea los Nom#res de istemas Operativos de .ANA para consultar el
signi(icado de estos valores;
SO,
mnameC FODN de la m*/uina desde donde se originaron los registros de recurso;
rnameC Direcci-n de correo electr-nico del contacto administrativo para este dominio;
ser6alC n serial de esta revisi-n del dominio solicitado; re9reshC .ntervalo de
actualizaci-n >segundos? /ue de#en usar los servidores de nom#re secundarios cuando
actualicen las copias remotas de este dominio; retr?C Periodo de tiempo >segundos? para
esperar despu<s de una actualizaci-n (allida antes de hacer un segundo intento; e8p6reC
Periodo m*Fimo de tiempo >segundos? /ue un servidor DN secundario de#e conservar
copias remotas de los datos de zona sin una actualizaci-n eFitosa antes de descartarlos;
m6n6mum=ttlC Periodo m)nimo de tiempo >segundos? en el /ue un cliente puede
continuar usando una resoluci-n DN antes de /ue de#a solicitar una nueva resoluci-n
del servidor; Puede ser so#rescrito por registros de recurso individuales;
,,,, 6pXC Direcci-n .PvK
,X>P&P
_^ 4;1;3?
mas>lenC Longitud >en #its? para heredar del destino especi(icado por cha6n; 6pXC
Direcci-n para mezclar este registro espec)(ico con cha6n; cha6nC Registro padre a
mezclar con los datos de 6pX;
SR(
pr6C >Prioridad? las prioridades m*s #a'as de#en ser usadas primero; 7e6EhtC Rangos
para pesar cu*l de los #est6nos comunmente con prioridades de#e ser elegido al azar;
tarEet y portC nom#re de servidor hu<sped y puerto en dondo puede encontrarse el
servicio solicitado; Para m*s in(ormaci-nA veaC RF5 0:M0
Tipo Columnas E+tra
N,+TR
or#er y pre9C Walente a pr6 y 7e6Eht descritos anteriormente; 9laEsA ser6cesA reEe8A y
replacementC Par*metrosA como se de(inen por RF5 0914;
Nota- De#ido a est*ndares DNA las direcciones de correo electr-nico son dadas en
(ormato usuario;host >por e'emploC hostmaster;eFample;com en lugar de
hostmasterGeFample;com?A asegBrese de che/uear este valor y modi(icarlo si es
necesario antes de usarlo con (unciones como mail./;
E'emplo !. )so de dns>get>record./
<?php
$resultado > dns%Eet%record3"php.net"9;
print%r3$resultado9;
?>
Produce una salida similar a la siguienteC
,rray
3
)2/ >> ,rray
3
)host/ >> php.net
)type/ >> "X
)pri/ >> 5
)tarEet/ >> pairC.php.net
)class/ >> 4.
)ttl/ >> GHG5
9
)6/ >> ,rray
3
)host/ >> php.net
)type/ >> ,
)ip/ >> G1.C1G.<2.<H
)class/ >> 4.
)ttl/ >> J6C5
9
9
%a /ue es muy comBn desear la direcci-n .P de un servidor de correo una vez el registro MJ ha
sido resueltoA dns>get>record./ tam#i<n devuelve una matriz en a##tl la cual contiene registros
asociados; authns es devuelto tam#i<nA conteniendo una lista de servidores de nom#re o(iciales;
E'emplo *. )so de dns>get>record./ y KN,>AN@
<?php
/W &olicitar "cualQuier" reEistro para php.net, y crear las matrices
$authns y $addtl conteniendo una lista de ser=idores de nombre y
cualQuier reEistro adicional Que =aya con ellos W/
$resultado > dns%Eet%record3"php.net", L.&%,.P, $authns, $addtl9;
echo "'esultado > ";
print%r3$resultado9;
echo ",uth .& > ";
print%r3$authns9;
echo ",dicional > ";
print%r3$addtl9;
?>
Produce una salida similar a la siguienteC
'esult > ,rray
3
)2/ >> ,rray
3
)host/ >> php.net
)type/ >> "X
)pri/ >> 5
)tarEet/ >> pairC.php.net
)class/ >> 4.
)ttl/ >> GHG5
9
)6/ >> ,rray
3
)host/ >> php.net
)type/ >> ,
)ip/ >> G1.C1G.<2.<H
)class/ >> 4.
)ttl/ >> J6C5
9
9
,uth .& > ,rray
3
)2/ >> ,rray
3
)host/ >> php.net
)type/ >> .&
)tarEet/ >> remote6.easydns.com
)class/ >> 4.
)ttl/ >> 62HCC
9
)6/ >> ,rray
3
)host/ >> php.net
)type/ >> .&
)tarEet/ >> remoteC.easydns.com
)class/ >> 4.
)ttl/ >> 62HCC
9
)C/ >> ,rray
3
)host/ >> php.net
)type/ >> .&
)tarEet/ >> ns6.easydns.com
)class/ >> 4.
)ttl/ >> 62HCC
9
)</ >> ,rray
3
)host/ >> php.net
)type/ >> .&
)tarEet/ >> nsC.easydns.com
)class/ >> 4.
)ttl/ >> 62HCC
9
9
,dditional > ,rray
3
)2/ >> ,rray
3
)host/ >> pairC.php.net
)type/ >> ,
)ip/ >> C6G.KC.6<6.5
)class/ >> 4.
)ttl/ >> GHGG
9
$ea tam#i<n dns>get>m+./A y dns>checB>record./
fsocBopen
>P&P 7A P&P 8 A P&P 4?
(soc"open 22 A#rir una coneFi-n de soc"ets de dominio de .nternet o @niF
Kescripci"n
resource fsocBopen > string destinoA int puerto PA int ierrno PA string ierrstr PA (loat
tiempoZesperaQQQ ?
.nicia una coneFi-n a trav<s de soc"ets con el recurso especi(icado por #est6no; P&P soporta el uso
de destinos en los dominios de .nternet y @niFA tal y como se descri#e en Ap<ndice N; @na lista de
transportes soportados puede recuperarse usando stream>get>transports./;
Nota- i necesita esta#lecer un tiempo de espera para la lecturaDescritura de datos a
trav<s del soc"etA use stream>set>timeout./A dado /ue el par*metro t6empo_espera de
fsocBopen./ s-lo se aplica cuando se conecta con el soc"et;
A partir de P&P 8;7;3A si ha compilado el soporte para OpenLA usted puede usar un pre(i'o so#re
el nom1re_hostA ya sea Hssl://H o Htls://H para usar una coneFi-n de cliente L o ,L so#re ,5PD.P
para conectarse con el host remoto;
fsocBopen./ devuelve un apuntador de archivo el cual puede ser usado 'unto con otras (unciones de
archivos >como fgets./A fgetss./A f3rite./A fclose./A y feof./?;
i la llamada (allaA devolver* FALSEA y si los argumentos opcionales errno y errstr est*n presentesA
ser*n modi(icados para indicar el error de nivel de sistema real /ue ocurri- en la llamada de sistema
connectLM; i el valor devuelto en errno es 0 y la (unci-n devolvi- FALSEA es un indicio de /ue el
error ocurri- antes de la llamada a connectLM; Lo m*s pro#a#le es /ue esto se de#a a un pro#lema
con la inicializaci-n del soc"et; Note /ue los argumentos errno y errstr siempre ser*n pasados por
re(erencia;
Dependiendo del entornoA el dominio @niF o el tiempo de espera de coneFi-n opcional pueden no
estar disponi#les;
+l soc"et ser* a#ierto por de(ecto en modo de #lo/ueo; Puede cam#iar a modo de no2#lo/ueo
usando stream>set>blocBing./;
E'emplo !. E'emplo de fsocBopen./
<?php
$da > #socIopen3"888.example.com", J2, $errno, $errstr, <29;
i# 3!$da9 :
echo "$errstr 3$errno9<br />Vn";
; else :
$salida > "-E* / H**/6.6VrVn";
$salida .> "Host@ 888.example.comVrVn";
$salida .> "Ronnection@ RloseVrVnVrVn";
#8rite3$da, $salida9;
8hile 3!#eo#3$da99 :
echo #Eets3$da, 6CJ9;
;
#close3$da9;
;
?>
+l e'emplo a continuaci-n presenta la (orma de recuperar la (echa y hora desde el servicio @DP
=daytime= >puerto 17? en su propia m*/uina;
E'emplo *. )so de una cone+i"n )KP
<?php
$da > #socIopen3"udp@//6CH.2.2.6", 6<, $errno, $errstr9;
i# 3!$da9 :
echo "E''?'@ $errno F $errstr<br />Vn";
; else :
#8rite3$da, "Vn"9;
echo #read3$da, CG9;
#close3$da9;
;
?>
A5iso
+n ocasionesA los soc"ets @DP parecer*n ha#er sido a#iertos sin erroresA incluso si el host remoto
no puede ser contactado; +l error s-lo se perci#ir* cuando lea o escri#a datos haciaDdesde el
soc"et; La raz-n es /ue @DP es un protocolo =sin coneFi-n=A lo /ue /uiere decir /ue el sistema
operativo no intenta esta#lecer un enlace con el soc"et hasta /ue necesite realmente enviar o
reci#ir datos;
Nota- 5uando se especi(i/ue una direcci-n num<rica .PvK >p;e'; (eM3CC1? se de#e incluir
la .P entre corchetes; Por e'emplo tcp://)9eP0::1.:P0;
Nota- +l par*metro de tiempo de espera (ue introducido en P&P 7;3;9 y el soporte para
@DP (ue aWadido en P&P 8;
$ea tam#i<n pfsocBopen./A stream>set>blocBing./A stream>set>timeout./A fgets./A fgetss./A f3rite
./A fclose./A feof./A y la eFtensi-n 5url;
gethostbyaddr
>P&P 7A P&P 8 A P&P 4?
gethost#yaddr 22 O#tiene el nom#re de una m*/uina en .nternet mediante su direcci-n .P;
Kescripci"n
string gethostbyaddr > string ipZaddress ?
Devuelve el nom#re del ordenador conectado a .nternet espe(icado por el par*metro 6p_a##ress; i
ocurre un errorA devuelve 6p_a##ress;
$er tam#i<n gethostbyname./;
gethostbyname
>P&P 7A P&P 8 A P&P 4?
gethost#yname 22 O#tiene la direcci-n .P correspondiente al nom#re de una m*/uina conectada a
.nternet;
Kescripci"n
string gethostbyname > string hostname ?
Devuelve la direcci-n .P de una m*/uina conectada a .nternet especi(icada por hostname;
$er tam#i<n gethostbyaddr./;
gethostbynamel
>P&P 7A P&P 8 A P&P 4?
gethost#ynamel 22 O#tiene una lista de direcciones .P correspondientea a los nom#res de m*/uinas
conectadas a .nternet;
Kescripci"n
array gethostbynamel > string hostname ?
Devuleve una lista de direcciones .P pertenecientes a ordenadores especi(icados por hostname;
$er tam#i<n gethostbyname./A gethostbyaddr./A checBdnsrr./A getm+rr./A y named>M? en las
p*ginas del manual;
getm+rr
>P&P 7A P&P 8 A P&P 4?
getmFrr 22 O#tiene registros MJ correspondientes a una m*/uina conectada a .nternet;
Kescripci"n
int getm+rr > string hostnameA array mFhosts PA array EeightQ ?
Busca DN de registros MJ correspondientes a hostname; Devuelve verdadero si encuentra algc
de|n registroX devuelve (also si no encuentra ninguno o se produce un error;
La lista de registros MJ encontrados se colocan en el array m8hosts; i se proporciona el array
7e6EhtA se rellenar* con la in(ormaci-n o#tenida;
$er tam#i<n checBdnsrr./A gethostbyname./A gethostbynamel./A gethostbyaddr./A y named>M? de
las p*ginas del manual;
getprotobyname
>P&P 8 A P&P 4?
getproto#yname 22 O#tener el nBmero de protocolo asociado con el nom#re de protocolo
Kescripci"n
int getprotobyname > string nom#re ?
getprotobyname./ devuelve el nBmero de protocolo asociado con el nom1re de protocoloA indicado
por /etc/protocols;
E'emplo !. E'emplo de getprotobyname./
<?php
$protocolo > MtcpM;
$obtener%prot > Eetprotobyname3$protocolo9;
i# 3$obtener%prot >> F69 :
// si no se encuentra nada, de=uel=e F6
echo Mrotocolo 4n=&aacute;lidoM;
; else :
echo Mrotocolo UM . $obtener%prot;
;
?>
$ea tam#i<nC getprotobynumber./;
getprotobynumber
>P&P 8 A P&P 4?
getproto#ynum#er 22 O#tener el nom#re de protocolo asociado con un nBmero de protocolo
Kescripci"n
string getprotobynumber > int numero ?
getprotobynumber./ devuelve el nom#re de protocolo asociado con el numero de procotoloA como
lo indica /etc/protocols;
$ea tam#i<nC getprotobyname./;
getser5byname
>P&P 8 A P&P 4?
getserv#yname 22 o#tiene el ncde|mero del puerto asociado al servicio .nternet especi(icado
Kescripci"n
int getser5byname > string serviceA string protocol ?
getser5byname./ devuelve el puerto /ue corresponde al ser6ce especi(icado por el protocol en D
etcDservices; protocol puede ser tcp o u#p; $er tam#i<n getser5byport./;
getser5byport
>P&P 8 A P&P 4?
getserv#yport 22 o#tiene el servicio .nternet /ue correspondiente al puerto del protocolo especi(icado
Kescripci"n
string getser5byport > int portA string protocol ?
getser5byport./ delvuelve el servicio .nternet asociado al port para el protocol especi(icado en D
etcDservices; protocol puede ser tcp o u#p; $er tam#i<n getser5byname./;
inet>ntop
>no version in(ormationA might #e only in 5$?
inetZntop 22 5onverts a pac"ed internet address to a human reada#le representation
Kescription
string inet>ntop > string inZaddr ?
,his (unction converts a 70#it .Pv8A or 10M#it .PvK address >i( P&P Eas #uilt Eith .PvK support
ena#led? into an address (amily appropriate string representation; Returns FALSE on (ailure;
E'emplo !. inet>ntop./ E+ample
<?php
$pacIed > chr36CH9 . chr329 . chr329 . chr369;
$expanded > inet%pton3$pacIed9;
/W ?utputs@ 6CH.2.2.6 W/
echo $expanded;
$pacIed > str%repeat3chr329, 659 . chr369;
$expanded > inet%pton3$pacIed9;
/W ?utputs@ @@6 W/
echo $expanded;
?>
ee also long*ip./A inet>pton./A and ip*long./;
inet>pton
>no version in(ormationA might #e only in 5$?
inetZpton 22 5onverts a human reada#le .P address to its pac"ed inZaddr representation
Kescription
string inet>pton > string address ?
,his (unction converts a human reada#le .Pv8 or .PvK address >i( P&P Eas #uilt Eith .PvK support
ena#led? into an address (amily appropriate 70#it or 10M#it #inary structure;
E'emplo !. inet>pton./ E+ample
<?php
$in%addr > inet%pton3M6CH.2.2.6M9;
$inG%addr > inet%pton3M@@6M9;
?>
ee also ip*long./A inet>ntop./A and long*ip./;
ip*long
>P&P 8 A P&P 4?
ip0long 22 5onvierte una cadena /ue contiene una direcci-n con puntos del Protocolo de .nternet
>.Pv8? en una direcci-n apropiada
Kescripci"n
int ip*long > string direccionZip ?
La (unci-n ip*long./ genera una direcci-n de red .nternet .Pv8 desde su representaci-n en (ormato
est*ndar de .nternet >cadena con puntos?; i #6recc6on_6p es inv*lidaA entonces se devuelve =1; Note
/ue =1 no evalBa a FALSE en P&P;
Nota- A partir de P&P 4;3;3A ip*long./ devuelve FALSE cuando 6p_a##ress es inv*lido;
E'emplo !. E'emplo de ip*long./
<?php
$ip > Eethostbyname3M888.example.comM9;
$salida > "Oas siEuientes +'Os son Dalentes@<br />Vn";
$salida .> Mhttp@//888.example.com/, http@//M . $ip . M/, y http@//M . sprint#3"\u", ipClonE3$ip99 . "/<br />Vn";
echo $salida;
?>
Nota- %a /ue el tipo entero de P&P tiene signoA y muchas direcciones .P resultar*n en
enteros negativosA necesita usar el especi(icador de (ormato =bu= de sprintf./ o printf./
para o#tener la representaci-n de cadena de la direcci-n .P sin signo;
+ste segundo e'emplo muestra c-mo imprimir una direcci-n convertida con la (unci-n printf./
tanto en P&P 8 como en P&P 4C
E'emplo *. Kesplegar una direcci"n IP .PHP 8/
<?php
$ip > Eethostbyname3M888.example.comM9;
$lonE > ipClonE3$ip9;
i# 3$lonE >> F6 TT $lonE >>> S,O&E9 :
echo M4 in=&aacute;lida, por #a=or intente de nue=oM;
; else :
echo $ip . "Vn"; // 6KC.2.<1.6GG
echo $lonE . "Vn"; // F62H<H<CK51
print#3"\uVn", ipClonE3$ip99; // <CC6C<1<1C
;
?>
ip*long./ no de#er)a usarse como la Bnica (orma de validaci-n de .P; 5om#)nela con long*ip./C
E'emplo 7. Calidaci"n de IP
<?php
// aseEurarse de Que las 4 son =alidas. tambien con=ierte una 4
// noFcompleta en un cuarteto debidamente separado con puntos, como
// se explica mas adelante.
$ip > lonECip3ipClonE3"6CH.2.2.6"99; // "6CH.2.2.6"
$ip > lonECip3ipClonE3"62.2.2"99; // "62.2.2.2"
$ip > lonECip3ipClonE3"62.2.C5G"99; // "62.2.6.2"
?>
ip*long./ tra#a'ar* tam#i<n con direcciones .P no2completas; Lea
httpCDDpu#li#n;#oulder;i#m;comDdocZlin"DenZ@DaZdocZli#Dli#sDcommtr(0DinetZaddr;htm para m*s
in(ormaci-n;
Nota- ip*long./ devolver* =1 >P&P 8? o FALSE >P&P 4? para la .P 2SS.2SS.2SS.2SS;
$ea tam#i<n long*ip./ y sprintf./;
long*ip
>P&P 8 A P&P 4?
long0ip 22 5onvierte una direcci-n de red .nternet >.Pv8? a una cadena en (ormato est*ndar de
.nternet con puntos
Kescripci"n
string long*ip > int direccionZapropiada ?
La (unci-n long*ip./ genera una direcci-n de .nternet en (ormato con puntos >esto /uiere decirC
aaa;###;ccc;ddd? a partir de su representaci-n apropiada de direcci-n;
$ea tam#i<nC ip*long./
openlog
>P&P 7A P&P 8 A P&P 4?
openlog 22 a#re una coneFi-n con el logger del sistema
Kescripci"n
int openlog > string identA int optionA int (acility ?
openlog./ a#re una coneFi-n con el logger del sistema; La cadena 6#ent se acdeuade a cada
mensa'e; Los valores de opt6on y 9ac6l6t? se eFponen en la siguiente secci-n; +l uso de openlog>? is
opcionalX +sta ser* llamada automaticamente por syslog./ si (uera necesarioA en este caso 6#ent
valdr* por de(ecto FALSE; $er tam#i<n syslog./ y closelog./;
pfsocBopen
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
p(soc"open 22 A#re coneFiones persistentes de dominio .nternet o @niF;
Kescripci"n
int pfsocBopen > string hostnameA int port PA int errno PA string errstr PA int timeoutQQQ ?
+sta (unci-n se comporta eFactamente como fsocBopen./ con la di(erencia /ue la coneFion no se
cierra despu<s de /ue termine el script; +sta es la versi-n persistente de fsocBopen./;
socBet>get>status
soc"etZgetZstatus 22 Alias de stream>get>meta>data./
Kescripci"n
+sta (unci-n es un alias de stream>get>meta>data./;
socBet>set>blocBing
soc"etZsetZ#loc"ing 22 Alias de stream>set>blocBing./
Kescripci"n
+sta (unci-n es un alias de stream>set>blocBing./;
socBet>set>timeout
soc"etZsetZtimeout 22 Alias de stream>set>timeout./
Kescripci"n
socBet>set>timeout./ es un alias de stream>set>timeout./;
syslog
>P&P 7A P&P 8 A P&P 4?
syslog 22 genera un mensa'e de sistema
Kescripci"n
int syslog > int priorityA string message ?
syslog./ genera un mensa'e /ue ser* distri#uido por el logger del sistema; pr6or6t? es una
com#inaci-n de la (acility y el levelA los valores se indicar*n en la secci-n siguiente; +l argumento
restante es el mensa'e a enviarA eFcepto /ue los dos caracteres Tm sean reemplazados por la cadena
de error >strerror? correspondiente al valor actual de errno;
M*s in(ormaci-n acerca de syslog se puede encontrar en las p*ginas del manual en e/uipos @niF;
+n LindoEs N,A el servicio syslog es emulado usando el Log de +ventos;
:IIIIII. NI, funciona
N. > anteriormente llamado Paginas Amarillas ? permite la administracion de red de los archivos de
administracion importantes >e;g;+l archivo de contraseWas?; Para mas in(ormacion dirigirse a las
paginas de ayuda de N. y a la direccion; .ntroduccion a %PDN. &ay tam#ien un li#ro llamado
gestionando NF % N. por &al tern;
Para o#tener estas (unciones de tra#a'oA usted tiene /ue con(igure P&P con == con= ?p;
Tabla de contenidos
ypZall 22 ,raverse the map and call a (unction on each entry
ypZcat 22 Return an array containing the entire map
ypZerrZstring 22 devuelve el mensa'e de error asociado con la operacion previa;@til /ue indica el
pro#lema eFacto;
ypZerrno 22 Retorna el codigo de error de la operacion previa;
ypZ(irst 22 devuelve la primera clave empare'ada con el nom#rado mapa;
ypZgetZde(aultZdomain 22 ,rae el valor por omision de dominios de ma/uina N.;
ypZmaster 22 Returns the machine name o( the master N. server (or a map
ypZmatch 22 Retorna la linea compaWera >pare'a?;
ypZneFt 22 Devuelve la siguiente clave tecleada en el nom#re de mapa
ypZorder 22 Returns the order num#er (or a map
yp>all
>P&P 8 _^ 8;3;KA P&P 4?
ypZall 22 ,raverse the map and call a (unction on each entry
Kescription
void yp>all > string domainA string mapA string call#ac" ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
yp>cat
>P&P 8 _^ 8;3;KA P&P 4?
ypZcat 22 Return an array containing the entire map
Kescription
array yp>cat > string domainA string map ?
yp>cat./ returns all map entries as an array Eith the maps "ey values as array indices and the maps
entries as array data;
yp>err>string
>P&P 8 _^ 8;3;KA P&P 4?
ypZerrZstring 22 devuelve el mensa'e de error asociado con la operacion previa;@til /ue indica el
pro#lema eFacto;
Kescripcion
cadena yp>err>string > void ?
yp>err>string./ Retorna el mensa'e de error asociado con la operacion previa;@til para indicar /ue
salio mal eFactamente;
E'emplo !. E'emplo para errores de NI,
$ea tam#ienC yp errno
yp>errno
>P&P 8 _^ 8;3;KA P&P 4?
ypZerrno 22 Retorna el codigo de error de la operacion previa;
Kescripcion
int yp>errno > void ?
yp>errno./ retorna el codigo de error de la operacion previa;
Los errores posi#les sonC
1 args para (uncionar son malos
0 (allo de RP52 dominio ha sido un#ound
7 no puede unir a servidor en este dominio
8 ningun tal mapa en dominio de servidor
4 ninguna tal llave en
K interno yp error de cliente o servidor
: (allo de asignacion de recurso
M ningunos m*s registros en #ase de datos de
mapa
9 no puede comunicar Ei,h portmapper
13 no puede comunicar con yp#ind
11 no puede comunicar con ypserv
10 nom#re de dominio local no con'unto
17 yp #ase de datos es malo
18 yp La version mismatch
14 violacion de acceso
1K #ase de datos ocupar
$er tam#ienC ypZerrZstring
yp>first
ypZ(irst 22 devuelve la primera clave empare'ada con el nom#rado mapa;
Kescripcion
strinE)/ ;p_9irst 3cadena dominio, cadena mapa9
yp>first.nombre de la funcion/./ Retorna la primera clave de valor pareada del mapa nom#rado en
el dominioA de otra manera FALO;
E'emplo !. E'emplo para el primer NI,
<?$entry> yp%#irst3$dominio,pass8d.byname"9;
i# 3!$entry9:"echo yp%errno39."@".yp%err%strinE39;;
$Iey>Iey3$entry9;
echo"rimera entrada en este mapa #ue ".$Iey ."P =alor".$entry)$Iey/;?>
$er tam#ienC ypZgetZde(aultZdomain ypZerrno y ypZerrZstring
yp>get>default>domain
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
ypZgetZde(aultZdomain 22 ,rae el valor por omision de dominios de ma/uina N.;
Kescripcion
int yp>get>default>domain > void ?
yp> get>default>domain./ Retorna el valor por omision del dominio del nodo o FALO; Puede ser
usado el parametro de dominio para sucesivas llamadas a N.;
@n dominio de N. puede ser descrito en un grupo de mapas N.; 5ada host necesita #uscar
uniones de in(ormacion en un mismo dominio; Acudir a los documentos mencionados en el
comienzo para mas in(ormacion;
E'emplo !. E'emplo para el dominio por omision
<?$domain > yp% Eet%de#ault%domain 39; i# 3!$ domain9 :"echo yp%errno39."@" .yp%err%strinE39;;
echo "El =alor por omision de dominio .4& es@ $ domain;?>
$er tam#ienC ypZ errno >nom#re de la (uncion? y ypZerrZstring >nom#re de la (uncion?
yp>master
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
ypZmaster 22 Returns the machine name o( the master N. server (or a map
Kescription
string yp>master > string domainA string map ?
yp>master./ returns the machine name o( the master N. server (or a map;
E'emplo !. E+ample for the NI, master
<?php
$number > yp%master3$domain, $mapname9;
echo ""aster #or this map is@ " . $master;
?>
ee also yp>get>default>domain./;
yp>match
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
ypZmatch 22 Retorna la linea compaWera >pare'a?;
Kescripcion
cadena yp>match > cadena dominioA cadena mapaA cadena teclea ?
yp>match.nombre de la funcion/./ Retorna el valor asociado con la llave pasada (uera del mapa
especi(icado o FALO; esta llave tiene /ue ser eFacta;
E'emplo !. E'emplo para NI, pare'o
+n este caso esto puede serC !oeCnn'oeC11111C133C'oe usuarioCDhogarD'D'oeC @serCDusrDlocalD#inD#ash
$er tam#ienC ypZgetZde(aultZdomain ypZerrno y ypZerrZstring
yp>ne+t
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
ypZneFt 22 Devuelve la siguiente clave tecleada en el nom#re de mapa
Kescripcion
stringPQ yp>ne+t > cadena dominioA cadena mapaA cadena teclea ?
yp>ne+t./ devuelve el siguiente par de valor tecleado en el mapa de nom#res despues de la clave
especi(icada o FALO;
E'emplo !. E'emplo para NI, siguiente
<?$entry>yp%next3$dominio,"pass8d. byname"."joe"9;
i#3!$entry9:echo yp%errno39."@".yp%err%strinE39;;
$Iey>Iey3$entry9; echo "Oa siEuiente entrada despues joe #ue".$Iey."P su =alor".$entry)$Iey/;?>
$er tam#ienC ypZgetZde(aultZdomain ypZerrno y ypZerrZstring
yp>order
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
ypZorder 22 Returns the order num#er (or a map
Kescription
int yp>order > string domainA string map ?
yp>order./ returns the order num#er (or a map or FALSE;
E'emplo !. E+ample for the NI, order
<?php
$number > yp%order3$domain, $mapname9;
echo "?rder number #or this map is@ " . $number;
?>
ee also yp>get>default>domain./;
:IIIIC. :otus Notes ;unctions
Introducci"n
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
Nota- ,his eFtension has #een moved to the P+5L repository and is no longer #undled
Eith P&P as o( P&P 4;3;3;
Tabla de contenidos
notesZ#ody 22 Open the message msgZnum#er in the speci(ied mail#oF on the speci(ied server
>leave serv
notesZcopyZd# 22 5opy a Lotus Notes data#ase
notesZcreateZd# 22 5reate a Lotus Notes data#ase
notesZcreateZnote 22 5reate a note using (orm (ormZname
notesZdropZd# 22 Drop a Lotus Notes data#ase
notesZ(indZnote 22 Returns a note id (ound in data#aseZname
notesZheaderZin(o 22 Open the message msgZnum#er in the speci(ied mail#oF on the speci(ied
server >leave serv
notesZlistZmsgs 22 Returns the notes (rom a selected data#aseZname
notesZmar"Zread 22 Mar" a noteZid as read (or the @ser userZname
notesZmar"Zunread 22 Mar" a noteZid as unread (or the @ser userZname
notesZnavZcreate 22 5reate a navigator nameA in data#aseZname
notesZsearch 22 Find notes that match "eyEords in data#aseZname
notesZunread 22 Returns the unread note idHs (or the current @ser userZname
notesZversion 22 Get the version Lotus Notes
notes>body
>P&P 8 _^ 8;3;4?
notesZ#ody 22 Open the message msgZnum#er in the speci(ied mail#oF on the speci(ied server
>leave serv
Kescription
array notes>body > string serverA string mail#oFA int msgZnum#er ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
notes>copy>db
>P&P 8 _^ 8;3;4?
notesZcopyZd# 22 5opy a Lotus Notes data#ase
Kescription
string notes>copy>db > string (romZdata#aseZnameA string toZdata#aseZname ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
notes>create>db
>P&P 8 _^ 8;3;4?
notesZcreateZd# 22 5reate a Lotus Notes data#ase
Kescription
#ool notes>create>db > string data#aseZname ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
notes>create>note
>P&P 8 _^ 8;3;4?
notesZcreateZnote 22 5reate a note using (orm (ormZname
Kescription
string notes>create>note > string data#aseZnameA string (ormZname ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
notes>drop>db
>P&P 8 _^ 8;3;4?
notesZdropZd# 22 Drop a Lotus Notes data#ase
Kescription
#ool notes>drop>db > string data#aseZname ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
notes>find>note
>P&P 8 _^ 8;3;4?
notesZ(indZnote 22 Returns a note id (ound in data#aseZname
Kescription
#ool notes>find>note > string data#aseZnameA string name PA string typeQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
notes>header>info
>P&P 8 _^ 8;3;4?
notesZheaderZin(o 22 Open the message msgZnum#er in the speci(ied mail#oF on the speci(ied
server >leave serv
Kescription
o#'ect notes>header>info > string serverA string mail#oFA int msgZnum#er ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
notes>list>msgs
>P&P 8 _^ 8;3;4?
notesZlistZmsgs 22 Returns the notes (rom a selected data#aseZname
Kescription
#ool notes>list>msgs > string d# ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
notes>marB>read
>P&P 8 _^ 8;3;4?
notesZmar"Zread 22 Mar" a noteZid as read (or the @ser userZname
Kescription
string notes>marB>read > string data#aseZnameA string userZnameA string noteZid ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
notes>marB>unread
>P&P 8 _^ 8;3;4?
notesZmar"Zunread 22 Mar" a noteZid as unread (or the @ser userZname
Kescription
string notes>marB>unread > string data#aseZnameA string userZnameA string noteZid ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
notes>na5>create
>P&P 8 _^ 8;3;4?
notesZnavZcreate 22 5reate a navigator nameA in data#aseZname
Kescription
#ool notes>na5>create > string data#aseZnameA string name ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
notes>search
>P&P 8 _^ 8;3;4?
notesZsearch 22 Find notes that match "eyEords in data#aseZname
Kescription
string notes>search > string data#aseZnameA string "eyEords ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
notes>unread
>P&P 8 _^ 8;3;4?
notesZunread 22 Returns the unread note idHs (or the current @ser userZname
Kescription
string notes>unread > string data#aseZnameA string userZname ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
notes>5ersion
>P&P 8 _^ 8;3;4?
notesZversion 22 Get the version Lotus Notes
Kescription
string notes>5ersion > string data#aseZname ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
:IIIC. N,API(specific ;unctions
Introducci"n
,hese (unctions are only availa#le Ehen running P&P as a NAP. module in
NetscapeDiPlanetDunON+ Ee#servers;
Instalaci"n
For P&P installation on NetscapeDiPlanetDunON+ Ee#servers see the NAP. section >@N.JA
LindoEs? in the installation chapter;
Configuraci"n en tiempo de e'ecuci"n
,he #ehaviour o( the NAP. P&P module is a((ected #y settings in php.ini; 5on(iguration
settings (rom php.ini may #e overridden #y additional parameters to the php;_e8ecute call in
obj.con#
Tabla !. N,API configuration options
Name Kefault Changeable
nsapi;readZtimeou
t
K3 P&PZ.N.ZALL
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
nsap6.rea#_t6meout integer
ets the time in seconds the plugin is Eaiting (or PO, data (rom the client;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Cer tambi%n
NAP. implements a su#set o( the (unctions (rom the Apache module (or maFimum compati#ility;
Tabla *. Apache functions implemented by N,API
Apache function .only as
alias/
N,API function Kescription
apache>re?uest>headers./ nsapi>re?uest>headers./ Fetch all &,,P re/uest headers
apache>response>headers./ nsapi>response>headers./
Fetch all &,,P response
headers
getallheaders./ nsapi>re?uest>headers./ Fetch all &,,P re/uest headers
5irtual./ nsapi>5irtual./ Ma"e NAP. su#2re/uest
Tabla de contenidos
nsapiZre/uestZheaders 22 Fetch all &,,P re/uest headers
nsapiZresponseZheaders 22 Fetch all &,,P response headers
nsapiZvirtual 22 Per(orm an NAP. su#2re/uest
nsapi>re?uest>headers
>P&P 8 _^ 8;7;7A P&P 4?
nsapiZre/uestZheaders 22 Fetch all &,,P re/uest headers
Kescripci"n
array nsapi>re?uest>headers > void ?
nsapi>re?uest>headers./ gets all the &,,P headers in the current re/uest; ,his is only supported
Ehen P&P runs as a NAP. module;
Nota- Prior to P&P 8;7;7A getallheaders./ Eas only availa#le (or the Apache servers;
A(ter P&P 8;7;7A getallheaders./ is an alias (or nsapi>re?uest>headers./ i( you use the
NAP. module;
Nota- %ou can also get at the value o( the common 5G. varia#les #y reading them (rom
the '_SER(ER superglo#alA Ehich Eor"s Ehether or not you are using P&P as a NAP.
module;
Calores retornados
Returns an associative array Eith all the &,,P headers;
E'emplos
E'emplo !. nsapi>re?uest>headers./ e+ample
<?php
$headers > nsapi%reQuest%headers39;
#oreach 3$headers as $header >> $=alue9 :
echo "$header@ $=alue <br />Vn";
;
?>
nsapi>response>headers
>P&P 8 _^ 8;7;7A P&P 4?
nsapiZresponseZheaders 22 Fetch all &,,P response headers
Kescripci"n
array nsapi>response>headers > void ?
Gets all the NAP. response headers;
Calores retornados
Returns an associative array Eith all the NAP. response headers;
Cer tambi%n
nsapi>re?uest>headers./
headers>sent./
nsapi>5irtual
>P&P 8 _^ 8;7;7A P&P 4?
nsapiZvirtual 22 Per(orm an NAP. su#2re/uest
Kescripci"n
#ool nsapi>5irtual > string uri ?
nsapi>5irtual./ is an NAP.2speci(ic (unction Ehich is Walent to `a22ninclude virtual;;;22_ in .
>.shtml (iles?; .t does an NAP. su#2re/uest; .t is use(ul (or including 5G. scripts or ;shtml (ilesA
or anything else that youHd parse through Ee#server;
,o run the su#2re/uestA all #u((ers are terminated and (lushed to the #roEserA pending headers are
sent too;
%ou cannot ma"e recursive re/uests Eith this (unction to other P&P scripts; .( you Eant to include
P&P scriptsA use include./ or re?uire./;
Nota- ,his (unction depends on a undocumented (eature o( the
NetscapeDiPlanetDunON+ Ee#servers; @se phpinfo./ to determine i( it is availa#le; .n
the @niF environment it should alEays Eor"A in EindoEs it depends on the name o( a
nsFhttpdXX.dll (ile;
Read the note a#out su#re/uests in the NAP. section >@N.JA LindoEs? i( you
eFperience this pro#lem;
:ista de parmetros
ur6
,he @R. o( the script;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
:IIICI. Jb'ect AggregationAComposition
;unctions
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
Introducci"n
.n O#'ect Oriented ProgrammingA it is common to see the composition o( simple classes >andDor
instances? into a more compleF one; ,his is a (leFi#le strategy (or #uilding complicated o#'ects and
o#'ect hierarchies and can (unction as a dynamic alternative to multiple inheritance; ,here are tEo
Eays to per(orm class >andDor o#'ect? composition depending on the relationship #etEeen the
composed elementsC ,ssoc6at6on and ,EEreEat6on;
An ,ssoc6at6on is a composition o( independently constructed and eFternally visi#le parts; Lhen Ee
associate classes or o#'ectsA each one "eeps a re(erence to the ones it is associated Eith; Lhen Ee
associate classes staticallyA one class Eill contain a re(erence to an instance o( the other class; For
eFampleC
E'emplo !. Class association
<?php
class Late*ime :

#unction Late*ime39
:
// empty constructor
;
#unction no839
:
return date3"PFmFd H@i@s"9;
;
;
class 'eport :
=ar $%dt;
// more properties ...
#unction 'eport39
:
$thisF>%dt > ne8 Late*ime39;
// initiali0ation code ...
;
#unction Eenerate'eport39
:
$date*ime > $thisF>%dtF>no839;
// more code ...
;
// more methods ...
;
$rep > ne8 'eport39;
?>
Le can also associate instances at runtime #y passing a re(erence in a constructor >or any other
method?A Ehich alloE us to dynamically change the association relationship #etEeen o#'ects; Le
Eill modi(y the eFample a#ove to illustrate this pointC
E'emplo *. Jb'ect association
<?php
class Late*ime :
// same as pre=ious example
;
class Late*imelus :
=ar $%#ormat;

#unction Late*imelus3$#ormat>"PFmFd H@i@s"9
:
$thisF>%#ormat > $#ormat;
;
#unction no839
:
return date3$thisF>%#ormat9;
;
;
class 'eport :
=ar $%dt; // 8eMll Ieep the re#erence to Late*ime here
// more properties ...
#unction 'eport39
:
// do some initiali0ation
;
#unction setLate*ime3&$dt9
:
$thisF>%dt >& $dt;
;
#unction Eenerate'eport39
:
$date*ime > $thisF>%dtF>no839;
// more code ...
;
// more methods ...
;
$rep > ne8 'eport39;
$dt > ne8 Late*ime39;
$dtp > ne8 Late*imelus3"l, S j, P 3h@i@s a, *9"9;
// Eenerate report 8ith simple date #or 8eb display
$repF>setLate*ime3&$dt9;
echo $repF>Eenerate'eport39;
// later on in the code ...
// Eenerate report 8ith #ancy date
$repF>setLate*ime3&$dtp9;
$output > $repF>Eenerate'eport39;
// sa=e $output in database
// ... etc ...
?>
,EEreEat6onA on the other handA implies encapsulation >hidding? o( the parts o( the composition; Le
can aggregate classes #y using a >static? inner class >P&P does not yet support inner classes?A in this
case the aggregated class de(inition is not accessi#leA eFcept through the class that contains it; ,he
aggregation o( instances >o#'ect aggregation? involves the dynamic creation o( su#o#'ects inside an
o#'ectA in the processA eFpanding the properties and methods o( that o#'ect;
O#'ect aggregation is a natural Eay o( representing a Ehole2part relationshipA >(or eFampleA
molecules are aggregates o( atoms?A or can #e used to o#tain an e((ect Walent to multiple inheritanceA
Eithout having to permanently #ind a su#class to tEo or more parent classes and their inter(aces; .n
(act o#'ect aggregation can #e more (leFi#leA in Ehich Ee can select Ehat methods or properties to
=inherit= in the aggregated o#'ect;
E'emplos
Le de(ine 7 classesA each implementing a di((erent storage methodC
E'emplo 7. storage>classes.inc
<?php
class Sile&toraEe :
=ar $data;
#unction Sile&toraEe3$data9
:
$thisF>data > $data;
;

#unction 8rite3$name9
:
$#p > #open3name, "8"9;
#8rite3$#p, $thisF>data9;
#close3$data9;
;
;
class 7LLX&toraEe :
=ar $data;
=ar $=ersion > "6.2";
=ar $%id; // "pri=ate" =ariable
#unction 7LLX&toraEe3$data9
:
$thisF>data > $data;
$thisF>%id > $thisF>%Een4L39;
;
#unction store39
:
i# 3$thisF>%id9 :
$pid > 8ddx%pacIet%start3$thisF>%id9;
8ddx%add%=ars3$pid, "thisF>data"9;
$pacIet > 8ddx%pacIet%end3$pid9;
; else :
$pacIet > 8ddx%seriali0e%=alue3$thisF>data9;
;
$dbh > dba%open3"=arstore", "8", "Edbm"9;
dba%insert3md53uniQid3"", true99, $pacIet, $dbh9;
dba%close3$dbh9;
;
// a pri=ate method
#unction %Een4L39
:
return md53uniQid3rand39, true99;
;
;
class LZ&toraEe :
=ar $data;
=ar $dbtype > "mysQl";
#unction LZ&toraEe3$data9
:
$thisF>data > $data;
;
#unction sa=e39
:
$dbh > mysQl%connect39;
mysQl%select%db3"storaEe", $dbh9;
$serdata > seriali0e3$thisF>data9;
mysQl%Query3"insert into =ars 3M$serdataM,no8399", $dbh9;
mysQl%close3$dbh9;
;
;
?>
Le then instantiate a couple o( o#'ects (rom the de(ined classesA and per(orm some aggregations
and deaggregationsA printing some o#'ect in(ormation along the EayC
E'emplo 8. test>aggregation.php
<?php
include "storaEeclasses.inc";
// some utilty #unctions
#unction p%arr3$arr9
:
#oreach 3$arr as $I >> $=9
$out)/ > "Vt$I >> $=";
return implode3"Vn", $out9;
;
#unction object%in#o3$obj9
:
$out)/ > "Rlass@ " . Eet%class3$obj9;
#oreach 3Eet%object%=ars3$obj9 as $=ar>>$=al9 :
i# 3is%array3$=al99 :
$out)/ > "property@ $=ar 3array9Vn" . p%arr3$=al9;
; else :
$out)/ > "property@ $=ar > $=al";
;
;
#oreach 3Eet%class%methods3$obj9 as $method9 :
$out)/ > "method@ $method";
;
return implode3"Vn", $out9;
;
$data > array3"%4, "IludEe !> cru#t"9;
// 8e create some basic objects
$#s > ne8 Sile&toraEe3$data9;
$8s > ne8 7LLX&toraEe3$data9;
// print in#ormation on the objects
echo "V$#s objectVn";
echo object%in#o3$#s9 . "Vn";
echo "VnV$8s objectVn";
echo object%in#o3$8s9 . "Vn";
// do some aEEreEation
echo "VnOetMs aEEreEate V$#s to the 7LLX&toraEe classVn";
aEEreEate3$#s, "7LLX&toraEe"9;
echo "V$#s objectVn";
echo object%in#o3$#s9 . "Vn";
echo "Vn.o8 let us aEEreEate it to the LZ&toraEe classVn";
aEEreEate3$#s, "LZ&toraEe"9;
echo "V$#s objectVn";
echo object%in#o3$#s9 . "Vn";
echo "Vn,nd #inally deaEEreEate 7LLX&toraEeVn";
deaEEreEate3$#s, "7LLX&toraEe"9;
echo "V$#s objectVn";
echo object%in#o3$#s9 . "Vn";
?>
Le Eill noE consider the output to understand some o( the side2e((ects and limitation o( o#'ect
aggregation in P&P; FirstA the neEly created '9s and '7s o#'ects give the eFpected output
>according to their respective class declaration?; Note that (or the purposes o( o#'ect aggregationA
pr6ate elements o9 a class/o1Uect 1eE6n 76th an un#erscore character L*_*MA even though there is
not real distinction #etEeen pu#lic and private classDo#'ect elements in P&P;
$#s object
Rlass@ #ilestoraEe
property@ data 3array9
2 >> <.6165KCG5<5JKJ
6 >> IludEe !> cru#t
method@ #ilestoraEe
method@ 8rite
$8s object
Rlass@ 8ddxstoraEe
property@ data 3array9
2 >> <.6165KCG5<5JKJ
6 >> IludEe !> cru#t
property@ =ersion > 6.2
property@ %id > 4L@@KbbCbG12HG1d1<H2eb21J2Ja#Jb2HGa5
method@ 8ddxstoraEe
method@ store
method@ %Eenid
Le then aggregate '9s Eith the 2KKI,torage classA and print out the o#'ect in(ormation; Le can
see noE that even though nominally the '9s o#'ect is still o( ;ile,torageA it noE has the property
'ers6onA and the method store./A #oth de(ined in 2KKI,torage; One important thing to note is
that it has not aggregated the private elements de(ined in the classA Ehich are present in the '7s
o#'ect; Also a#sent is the constructor (rom 2KKI,torageA Ehich Eill not #e logical to aggegate;
OetMs aEEreEate $#s to the 7LLX&toraEe class
$#s object
Rlass@ #ilestoraEe
property@ data 3array9
2 >> <.6165KCG5<5JKJ
6 >> IludEe !> cru#t
property@ =ersion > 6.2
method@ #ilestoraEe
method@ 8rite
method@ store
,he process o( aggregation is cumulativeA so Ehen Ee aggregate '9s Eith the class K1,torageA
generating an o#'ect that can use the storage methods o( all the de(ined classes;
.o8 let us aEEreEate it to the LZ&toraEe class
$#s object
Rlass@ #ilestoraEe
property@ data 3array9
2 >> <.6165KCG5<5JKJ
6 >> IludEe !> cru#t
property@ =ersion > 6.2
property@ dbtype > mysQl
method@ #ilestoraEe
method@ 8rite
method@ store
method@ sa=e
FinallyA the same Eay Ee aggregated properties and methods dynamicallyA Ee can also deaggregate
them (rom the o#'ect; oA i( Ee deaggregate the class 2KKI,torage (rom '9sA Ee Eill o#tainC
,nd deaEEreEate the 7LLX&toraEe methods and properties
$#s object
Rlass@ #ilestoraEe
property@ data 3array9
2 >> <.6165KCG5<5JKJ
6 >> IludEe !> cru#t
property@ dbtype > mysQl
method@ #ilestoraEe
method@ 8rite
method@ sa=e
One point that Ee have not mentioned a#oveA is that the process o( aggregation Eill not override
eFisting properties or methods in the o#'ects; For eFampleA the class ;ile,torage de(ines a '#ata
propertyA and the class 2KKI,torage also de(ines a similar property Ehich Eill not override the
one in the o#'ect ac/uired during instantiation (rom the class ;ile,torage;
Tabla de contenidos
aggregateZin(o 22 Returns an associative array o( the methods and properties (rom each class that
has #een aggregated to the o#'ect
aggregateZmethodsZ#yZlist 22 elective dynamic class methods aggregation to an o#'ect
aggregateZmethodsZ#yZregeFp 22 elective class methods aggregation to an o#'ect using a regular
eFpression
aggregateZmethods 22 Dynamic class and o#'ect aggregation o( methods
aggregateZpropertiesZ#yZlist 22 elective dynamic class properties aggregation to an o#'ect
aggregateZpropertiesZ#yZregeFp 22 elective class properties aggregation to an o#'ect using a
regular eFpression
aggregateZproperties 22 Dynamic aggregation o( class properties to an o#'ect
aggregate 22 Dynamic class and o#'ect aggregation o( methods and properties
aggregationZin(o 22 Alias o( aggregate>info./
deaggregate 22 Removes the aggregated methods and properties (rom an o#'ect
aggregate>info
>no version in(ormationA might #e only in 5$?
aggregateZin(o 22 Returns an associative array o( the methods and properties (rom each class that
has #een aggregated to the o#'ect
Kescription
array aggregate>info > o#'ect o#'ect ?
Lill return the aggregation in(ormation (or a particular o#'ect as an associative array o( arrays o(
methods and properties; ,he "ey (or the main array is the name o( the aggregated class;
For eFample the code #eloE
E'emplo !. )sing aggregate>info./
<?php
class &licer :
=ar $=eEetable;
#unction &licer3$=eEetable9
:
$thisF>=eEetable > $=eEetable;
;
#unction slice%it3$num%cuts9
:
echo "LoinE some simple slicinEVn";
#or 3$i>2; $i < $num%cuts; $i[[9 :
// do some slicinE
;
;
;
class Licer :
=ar $=eEetable;
=ar $rotation%anEle > K2; // deErees
#unction Licer3$=eEetable9
:
$thisF>=eEetable > $=eEetable;
;
#unction dice%it3$num%cuts9
:
echo "RuttinE in one directionVn";
#or 3$i>2; $i < $num%cuts; $i[[9 :
// do some cuttinE
;
$thisF>rotate3$thisF>rotation%anEle9;
echo "RuttinE in a second directionVn";
#or 3$i>2; $i < $num%cuts; $i[[9 :
// do some more cuttinE
;
;
#unction rotate3$deE9
:
echo ".o8 rotatinE :$thisF>=eEetable; :$deE; deEreesVn";
;
#unction %secret%super%dicinE3$num%cuts9
:
// so secret 8e cannot sho8 you ;F9
;
;
$obj > ne8 &licer3MonionM9;
aEEreEate3$obj, MLicerM9;
print%r3aEEreEate%in#o3$obj99;
?>
Lill produce the output
,rray
3
)dicer/ >> ,rray
3
)methods/ >> ,rray
3
)2/ >> dice%it
)6/ >> rotate
9
)properties/ >> ,rray
3
)2/ >> rotation%anEle
9
9
9
As you can seeA all properties and methods o( the Kicer class have #een aggregated into our neE
o#'ectA Eith the eFception o( the class constructor and the method %secret%super%dicinE
ee also aggregate./A aggregate>methods./A aggregate>methods>by>list./A
aggregate>methods>by>rege+p./A aggregate>properties./A aggregate>properties>by>list./A
aggregate>properties>by>rege+p./A deaggregate./
aggregate>methods>by>list
>P&P 8 _^ 8;0;3?
aggregateZmethodsZ#yZlist 22 elective dynamic class methods aggregation to an o#'ect
Kescription
void aggregate>methods>by>list > o#'ect o#'ectA string classZnameA array methodsZlist PA #ool
eFcludeQ ?
Aggregates methods (rom a class to an eFisting o#'ect using a list o( method names; ,he optional
parameter e8clu#e is used to decide Ehether the list contains the names o( methods to include in the
aggregation >i;e; e8clu#e is FALSEA Ehich is the de(ault value?A or to eFclude (rom the aggregation
>e8clu#e is TRUE?;
,he class constructor or methods Ehose names start Eith an underscore character >Z?A Ehich are
considered private to the aggregated classA are alEays eFcluded;
ee also aggregate./A aggregate>info./A aggregate>methods./A aggregate>methods>by>rege+p./A
aggregate>properties./A aggregate>properties>by>list./A aggregate>properties>by>rege+p./A
deaggregate./
aggregate>methods>by>rege+p
>P&P 8 _^ 8;0;3?
aggregateZmethodsZ#yZregeFp 22 elective class methods aggregation to an o#'ect using a regular
eFpression
Kescription
void aggregate>methods>by>rege+p > o#'ect o#'ectA string classZnameA string regeFp PA #ool
eFcludeQ ?
Aggregates methods (rom a class to an eFisting o#'ect using a regular eFpression to match method
names; ,he optional parameter e8clu#e is used to decide Ehether the regular eFpression Eill select
the names o( methods to include in the aggregation >i;e; e8clu#e is FALSEA Ehich is the de(ault
value?A or to eFclude (rom the aggregation >e8clu#e is TRUE?;
,he class constructor or methods Ehose names start Eith an underscore character >Z?A Ehich are
considered private to the aggregated classA are alEays eFcluded;
ee also aggregate./A aggregate>info./A aggregate>methods./A aggregate>methods>by>list./A
aggregate>properties./A aggregate>properties>by>list./A aggregate>properties>by>rege+p./A
deaggregate./
aggregate>methods
>P&P 8 _^ 8;0;3?
aggregateZmethods 22 Dynamic class and o#'ect aggregation o( methods
Kescription
void aggregate>methods > o#'ect o#'ectA string classZname ?
Aggregates all methods de(ined in a class to an eFisting o#'ectA eFcept (or the class constructorA or
methods Ehose names start Eith an underscore character >Z? Ehich are considered private to the
aggregated class;
ee also aggregate./A aggregate>info./A aggregate>methods>by>list./A
aggregate>methods>by>rege+p./A aggregate>properties./A aggregate>properties>by>list./A
aggregate>properties>by>rege+p./A deaggregate./
aggregate>properties>by>list
>P&P 8 _^ 8;0;3?
aggregateZpropertiesZ#yZlist 22 elective dynamic class properties aggregation to an o#'ect
Kescription
void aggregate>properties>by>list > o#'ect o#'ectA string classZnameA array propertiesZlist PA #ool
eFcludeQ ?
Aggregates properties (rom a class to an eFisting o#'ect using a list o( property names; ,he optional
parameter e8clu#e is used to decide Ehether the list contains the names o( class properties to include
in the aggregation >i;e; e8clu#e is FALSEA Ehich is the de(ault value?A or to eFclude (rom the
aggregation >e8clu#e is TRUE?;
,he properties Ehose names start Eith an underscore character >Z?A Ehich are considered private to
the aggregated classA are alEays eFcluded;
ee also aggregate./A aggregate>methods./A aggregate>methods>by>list./A
aggregate>methods>by>rege+p./A aggregate>properties./A aggregate>properties>by>rege+p./A
aggregate>info./A deaggregate./
aggregate>properties>by>rege+p
>P&P 8 _^ 8;0;3?
aggregateZpropertiesZ#yZregeFp 22 elective class properties aggregation to an o#'ect using a
regular eFpression
Kescription
void aggregate>properties>by>rege+p > o#'ect o#'ectA string classZnameA string regeFp PA #ool
eFcludeQ ?
Aggregates properties (rom a class to an eFisting o#'ect using a regular eFpression to match their
names; ,he optional parameter e8clu#e is used to decide Ehether the regular eFpression Eill select
the names o( class properties to include in the aggregation >i;e; e8clu#e is FALSEA Ehich is the
de(ault value?A or to eFclude (rom the aggregation >e8clu#e is TRUE?;
,he properties Ehose names start Eith an underscore character >Z?A Ehich are considered private to
the aggregated classA are alEays eFcluded;
ee also aggregate./A aggregate>methods./A aggregate>methods>by>list./A
aggregate>methods>by>rege+p./A aggregate>properties./A aggregate>properties>by>list./A
aggregate>info./A deaggregate./
aggregate>properties
>P&P 8 _^ 8;0;3?
aggregateZproperties 22 Dynamic aggregation o( class properties to an o#'ect
Kescription
void aggregate>properties > o#'ect o#'ectA string classZname ?
Aggregates all properties de(ined in a class to an eFisting o#'ectA eFcept (or properties Ehose names
start Eith an underscore character >Z? Ehich are considered private to the aggregated class;
ee also aggregate./A aggregate>methods./A aggregate>methods>by>list./A
aggregate>methods>by>rege+p./A aggregate>properties>by>list./A
aggregate>properties>by>rege+p./A aggregate>info./A deaggregate./
aggregate
>P&P 8 _^ 8;0;3?
aggregate 22 Dynamic class and o#'ect aggregation o( methods and properties
Kescription
void aggregate > o#'ect o#'ectA string classZname ?
Aggregates methods and properties de(ined in a class to an eFisting o#'ect; Methods and properties
Eith names starting Eith an underscore character >Z? are considered private to the aggregated class
and are not usedA constructors are also eFcluded (rom the aggregation procedure;
ee also aggregate>info./A aggregate>methods./A aggregate>methods>by>list./A
aggregate>methods>by>rege+p./A aggregate>properties./A aggregate>properties>by>list./A
aggregate>properties>by>rege+p./A deaggregate./
aggregation>info
aggregationZin(o 22 Alias o( aggregate>info./
Kescription
,his (unction is an alias o( aggregate>info./;
deaggregate
>P&P 8 _^ 8;0;3?
deaggregate 22 Removes the aggregated methods and properties (rom an o#'ect
Kescription
void deaggregate > o#'ect o#'ect PA string classZnameQ ?
Removes the methods and properties (rom classes that Eere aggregated to an o#'ect; .( the optional
class_name parameters is passedA only those methods and properties de(ined in that class are
removedA otherEise all aggregated methods and properties are eliminated;
ee also aggregate./A aggregate>methods./A aggregate>methods>by>list./A
aggregate>methods>by>rege+p./A aggregate>properties./A aggregate>properties>by>list./A
aggregate>properties>by>rege+p./A aggregate>info./
:IIICII. ;unciones de Jracle N
Introducci"n
+stas (unciones le permiten acceder a #ases de datos Oracle9A OracleM y Oracle:; @san la .nter(az de
Llamadas Oracle >O5. por sus siglas en .ngl<s?;
+sta eFtensi-n es m*s (leFi#le /ue la eFtensi-n antigua de Oracle; [sta soporta la vinculaci-n de
varia#les P&P glo#ales y locales con recipientes OracleA tiene soporte completo LOBA F.L+ y
ROL.DA y le permite usar varia#les de de(inici-n entregadas por el usuario; +s recomenda#le usar
esta eFtensi-n en lugar de la eFtensi-n antigua de Oracle siempre /ue sea posi#le;
Me?uirimientos
+s necesario contar con las #i#liotecas de cliente Oracle para usar esta eFtensi-n; Los usuarios de
LindoEs necesitan por lo menos la versi-n M;1 de Oracle para usar php%ociJ.dll;
Antes de usar esta eFtensi-nA asegBrese de ha#er con(igurado apropiadamente sus varia#les de
entorno Oracle para /ue correspondan con el usuario de OracleA as) como su usuario del demonio
Ee#; Las varia#les /ue necesita de(inir son las siguientesC
ORA5L+Z&OM+
ORA5L+Z.D
LDZPR+LOAD
LDZL.BRAR%ZPA,&
NLZLANG
ORAZNL77
Despu<s de de(inir las varia#les de entorno para su usuario de servidor Ee#A asegBrese tam#i<n de
agregar al usuario del servidor Ee# >no#odyA EEE? al grupo oracle;
,i su ser5idor 3eb no arrancaE o falla al arrancar- $eri(i/ue /ue Apache est<
enlazado con la #i#lioteca pthreadC
U ldd /888/apache/bin/httpd
libpthread.so.2 >> /lib/libpthread.so.2 32x1226c2229
libm.so.G >> /lib/libm.so.G 32x122C#2229
libcrypt.so.6 >> /lib/libcrypt.so.6 32x1221c2229
libdl.so.C >> /lib/libdl.so.C 32x122Ha2229
libc.so.G >> /lib/libc.so.G 32x122He2229
/lib/ldFlinux.so.C >> /lib/ldFlinux.so.C 32x122222229
i li#pthread no se encuentra en la listaA necesita re2instalar ApacheC
U cd /usr/src/apache%6.<.xx
U maIe clean
U O4Z&>Flpthread ./con#iE.status
U maIe
U maIe install
Por (avor note /ue en algunos sistemasA como @niFLareA se trata de li#thread en lugar
de li#pthread; P&P y Apache de#en con(igurarse con +J,RAZL.B^2lthread;
Instalaci"n
%ou have to compile P&P Eith the option ==76th=oc6P):D0R.A Ehere D.R de(aults to your
environment varia#le ORA5L+Z&OM+;
.( youHre using Oracle .nstant 5lientA you need to #uild P&P Eith the option ==76th=oc6P=6nstant=
cl6ent):D0R.; Note that Oracle .nstant 5lient support (irst appeared in versions 8;7;11 and 4;3;8;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
OCI_DEFAULT >integer?
tatement eFecution mode; tatement is not committed automatically Ehen using this mode;
OCI_DESCRI(E_ONLY >integer?
tatement eFecution mode; @se this mode i( you donHt Eant to really eFecute /ueryA #ut only
get select2list description;
OCI_COMMIT_ON_SUCCESS >integer?
tatement eFecution mode; tatement is automatically committed a(ter oci>e+ecute./ call;
OCI_E%ACT_FETCH >integer?
tatement (etch mode; @sed Ehen the application "noEs in advance eFactly hoE many roEs it
Eill #e (etching; ,his mode turns pre(etching o(( (or Oracle release M or later mode; 5ursor is
cancelled a(ter the desired roEs are (etched and may result in reduced server2side resource
usage;
OCI_SYSDATE >integer?
OCI_(_(FILE >integer?
@sed Eith oci>bind>by>name./ Ehen #inding BF.L+s;
OCI_(_CFILEE >integer?
@sed Eith oci>bind>by>name./ Ehen #inding 5F.L+s;
OCI_(_CLO( >integer?
@sed Eith oci>bind>by>name./ Ehen #inding 5LOBs;
OCI_(_(LO( >integer?
@sed Eith oci>bind>by>name./ Ehen #inding BLOBs;
OCI_(_RO"ID >integer?
@sed Eith oci>bind>by>name./ Ehen #inding ROL.Ds;
OCI_(_CURSOR >integer?
@sed Eith oci>bind>by>name./ Ehen #inding cursorsA previously allocated Eith
oci>ne3>descriptor./;
OCI_(_NTY >integer?
@sed Eith oci>bind>by>name./ Ehen #inding named data types;
OCI_(_(IN >integer?
S.LT_(FILEE >integer?
,he same as OCI_(_(FILE;
S.LT_CFILEE >integer?
,he same as OCI_(_CFILEE;
S.LT_CLO( >integer?
,he same as OCI_(_CLO(;
S.LT_(LO( >integer?
,he same as OCI_(_(LO(;
S.LT_RDD >integer?
,he same as OCI_(_RO"ID;
S.LT_NTY >integer?
,he same as OCI_(_NTY;
OCI_FETCHSTATEMENT_(Y_COLUMN >integer?
De(ault mode o( oci>fetch>all./;
OCI_FETCHSTATEMENT_(Y_RO" >integer?
Alternative mode o( oci>fetch>all./;
OCI_ASSOC >integer?
@sed Eith oci>fetch>all./ and oci>fetch>array./ to get an associative array as a result;
OCI_NUM >integer?
@sed Eith oci>fetch>all./ and oci>fetch>array./ to get an enumerated array as a result;
OCI_(OTH >integer?
@sed Eith oci>fetch>all./ and oci>fetch>array./ to get an array Eith #oth associative and
num#er indices;
OCI_RETURN_NULLS >integer?
@sed Eith oci>fetch>array./ to get empty array elements i( (ieldHs value is NULL;
OCI_RETURN_LO(S >integer?
@sed Eith oci>fetch>array./ to get value o( LOB instead o( the descriptor;
OCI_DTYPE_FILE >integer?
,his (lag tells oci>ne3>descriptor./ to initialize neE F.L+ descriptor;
OCI_DTYPE_LO( >integer?
,his (lag tells oci>ne3>descriptor./ to initialize neE LOB descriptor;
OCI_DTYPE_RO"ID >integer?
,his (lag tells oci>ne3>descriptor./ to initialize neE ROL.D descriptor;
OCI_D_FILE >integer?
,he same as OCI_DTYPE_FILE;
OCI_D_LO( >integer?
,he same as OCI_DTYPE_LO(;
OCI_D_RO"ID >integer?
,he same as OCI_DTYPE_RO"ID;
E'emplos
E'emplo !. Conse'os JCI
<?php
// por serEo arroba bacup punto ru
// +se la opcion ?R4%LES,+O* en el comando de ejecucion para apla0ar
// la ejecucion
?R4Execute3$sentencia, ?R4%LES,+O*9;
// para recuperar datos use 3despues de #etch9@
$resultado > ?R4'esult3$sentencia, $n9;
i# 3is%object3$result99 $resultado > $resultadoF>load39;
// ara una sentencia 4.&E'* o +L,*E use@
$sQl > "insert into tabla 3campo6, campoC9 =alues 3campo6 > M=alorM,
campoC > empty%clob399 returninE campoC into @campoC";
?R4arse3$con, $sQl9;
$clob > ?R4.e8Lescriptor3$con, ?R4%L%O?Z9;
?R4ZindZy.ame3$sentencia, "@campoC", &$clob, F6, ?R4%Z%RO?Z9;
?R4Execute3$sentencia, ?R4%LES,+O*9;
$clobF>sa=e3"cualQuier texto"9;
?R4Rommit3$con9;
?>
+s posi#le acceder (*cilmente a procedimientos almacenados en la misma (orma en /ue lo har)a
desde la l)nea de comandos;
E'emplo *. )so de Procedimientos Almacenados
<?php
// por 8ebmaster arroba remoterealty punto com
$sth > ?R4arse3$dbh, "beEin proc%nue=a%dir3 @id%direccion, M$nombreM,
M$apellidoM, M$companyiaM, M$dir6M, M$dirCM, M$ciudadM, M$estadoM,
M$cod%postalM, M$paisM, @cod%error 9;end;"9;
// Esto llama al procedimiento almacenado proc%nue=a%dir, en donde
// @id%direccion es una =ariable de entrada/salida y @cod%error es una
// =ariable de salida.
// Entonces crea la =inculacion@
?R4ZindZy.ame3$sth, "@id%direccion", $id%direccion, 629;
?R4ZindZy.ame3$sth, "@cod%error", $cod%error, 629;
?R4Execute3$sth9;
?>
Tabla de contenidos
ociZ#indZ#yZname 22 Binds the P&P varia#le to the Oracle placeholder
ociZcancel 22 5ancels reading (rom cursor
ociZclose 22 5loses Oracle connection
O5.25ollection2_append 22 Appends an o#'ect to the collection
O5.25ollection2_assign 22 Assigns a value to the collection (rom another eFisting collection
O5.25ollection2_assign+lem 22 Assigns a value to the element o( the collection
O5.25ollection2_get+lem 22 Returns value o( the element
O5.25ollection2_(ree 22 Frees resources associated Eith collection o#'ect
O5.25ollection2_maF 22 Gets the maFimum num#er o( elements in the collection
O5.25ollection2_size 22 Returns size o( the collection
O5.25ollection2_trim 22 ,rims elements (rom the end o( the collection
ociZcommit 22 5ommits outstanding statements
ociZconnect 22 +sta#lishes a connection to Oracle server
ociZde(ineZ#yZname 22 @ses a P&P varia#le (or the de(ine2step during a +L+5,
ociZerror 22 Returns the last error (ound
ociZeFecute 22 +Fecutes a statement
ociZ(etchZall 22 Fetches all roEs o( result data into an array
ociZ(etchZarray 22 Returns the neFt roE (rom the result data as an associative or numeric arrayA or
#oth
ociZ(etchZassoc 22 Returns the neFt roE (rom the result data as an associative array
ociZ(etchZo#'ect 22 Returns the neFt roE (rom the result data as an o#'ect
ociZ(etchZroE 22 Returns the neFt roE (rom the result data as a numeric array
ociZ(etch 22 Fetches the neFt roE into result2#u((er
ociZ(ieldZisZnull 22 5hec"s i( the (ield is NULL
ociZ(ieldZname 22 Returns the name o( a (ield (rom the statement
ociZ(ieldZprecision 22 ,ell the precision o( a (ield
ociZ(ieldZscale 22 ,ell the scale o( the (ield
ociZ(ieldZsize 22 Returns (ieldHs size
ociZ(ieldZtypeZraE 22 ,ell the raE Oracle data type o( the (ield
ociZ(ieldZtype 22 Returns (ieldHs data type
descriptor2_(ree 22 Frees resources associated Eith descriptor
ociZ(reeZstatement 22 Frees all resources associated Eith statement or cursor
ociZinternalZde#ug 22 +na#les or disa#les internal de#ug output
lo#2_append 22 Appends data (rom the large o#'ect to another large o#'ect
lo#2_close 22 5loses LOB descriptor
ociZlo#Zcopy 22 5opies large o#'ect
lo#2_eo( 22 ,ests (or end2o(2(ile on a large o#'ectHs descriptor
lo#2_erase 22 +rases a speci(ied portion o( the internal LOB data
lo#2_eFport 22 +Fports LOBHs contents to a (ile
lo#2_(lush 22 FlushesDErites #u((er o( the LOB to the server
lo#2_import 22 .mports (ile data to the LOB
ociZlo#ZisZe/ual 22 5ompares tEo LOBDF.L+ locators (or e/uality
lo#2_load 22 Returns large o#'ectHs contents
lo#2_read 22 Reads part o( large o#'ect
lo#2_reEind 22 Moves the internal pointer to the #eginning o( the large o#'ect
lo#2_save 22 aves data to the large o#'ect
lo#2_see" 22 ets the internal pointer o( the large o#'ect
lo#2_size 22 Returns size o( large o#'ect
lo#2_tell 22 Returns current position o( internal pointer o( large o#'ect
lo#2_truncate 22 ,runcates large o#'ect
lo#2_Erite,emporary 22 Lrites temporary large o#'ect
lo#2_Erite 22 Lrites data to the large o#'ect
ociZneEZcollection 22 Allocates neE collection o#'ect
ociZneEZconnect 22 +sta#lishes a neE connection to the Oracle server
ociZneEZcursor 22 Allocates and returns a neE cursor >statement handle?
ociZneEZdescriptor 22 .nitializes a neE empty LOB or F.L+ descriptor
ociZnumZ(ields 22 Returns the num#er o( result columns in a statement
ociZnumZroEs 22 Returns num#er o( roEs a((ected during statement eFecution
ociZparse 22 Prepares Oracle statement (or eFecution
ociZpassEordZchange 22 5hanges passEord o( OracleHs user
ociZpconnect 22 5onnect to an Oracle data#ase using a persistent connection
ociZresult 22 Returns (ieldHs value (rom the (etched roE
ociZroll#ac" 22 Rolls #ac" outstanding transaction
ociZserverZversion 22 Returns server version
ociZsetZpre(etch 22 ets num#er o( roEs to #e pre(etched
ociZstatementZtype 22 Returns the type o( an O5. statement
O5.BindByName 22 +nlaza una varia#le P&P a un Placeholder de Oracle
ocicancel 22 5ancel reading (rom cursor
ocicloselo# 22 5loses lo# descriptor
ocicollappend 22 Append an o#'ect to the collection
ocicollassign 22 Assign a collection (rom another eFisting collection
ocicollassignelem 22 Assign element val to collection at indeF ndF
ocicollgetelem 22 Retrieve the value at collection indeF ndF
ocicollmaF 22 Gets the maFimum num#er o( elements in the collection
ocicollsize 22 Return the size o( a collection
ocicolltrim 22 ,rim num elements (rom the end o( a collection
O5.5olumn.sN@LL 22 comprue#a si una una columna es NULL
O5.5olumnName 22 Devuelve el nom#re de una columna;
ocicolumnprecision 22 ,ell the precision o( a column
ocicolumnscale 22 ,ell the scale o( a column
O5.5olumnize 22 devuelve el tamaWo de la columna
O5.5olumn,ype 22 Devuelve el tipo de dato de una columna;
ocicolumntyperaE 22 ,ell the raE oracle data type o( a column
O5.5ommit 22 5on(irma transacciones pendientes
O5.De(ineByName 22 @sa una varia#le de P&P para el de(ine2step durante una sentencia +L+5,
O5.+rror 22 Devuelve el Bltimo error de stmtlconnlglo#al; i no ocurre ningBn error devuelve (also;
O5.+Fecute 22 +'ecuta una sentencia
O5.Fetch 22 Busca la siguiente (ila en el result2#u((er
O5.Fetch.nto 22 Busca la siguiente (ila dentro del result2array
O5.Fetchtatement 22 Busca todas la (ilas de un resultset dentro de un array;
oci(reecollection 22 Deletes collection o#'ect
O5.Free5ursor 22 Li#era todos los recursos asociados con cursor;
oci(reedesc 22 Deletes a large o#'ect descriptor
O5.Freetatement 22 Li#era todos los recursos asociados con una sentencia;
lo#2_getBu((ering 22 Returns current state o( #u((ering (or large o#'ect
O5..nternalDe#ug 22 &a#ilita o desha#ilita la salida del depurador interno; Por de(ecto este est*
desha#iltado
ociloadlo# 22 Loads a large o#'ect
O5.LogO(( 22 ,ermina la coneFion con Oracle
ocilogon 22 +sta#lece una coneFi-n con Oracle
ocineEcollection 22 .nitialize a neE collection
O5.NeE5ursor 22 devuelve un cursor nuevo >tatement2&andle? 2 use esto para enlazar re(2cursorsa
O5.NeEDescriptor 22 .nicializa un nuevo descriptor vac)o LOBDF.L+ >LOB por de(ecto?
ocinlogon 22 +sta#lece una nueva coneFi-n con Oracle
O5.Num5ols 22 Devuelve el nBmero de columnas resultantes en una sentencia
O5.Parse 22 Analiza una consulta y devuelve una sentencia
ociplogon 22 5onectarse con una #ase de datos Oracle usando una coneFi-n persistente
O5.Result 22 Devuelve el valor de una columna en la (ila #uscada
O5.Roll#ac" 22 Resta#lece todas las transaciones sin con(irmar
O5.RoE5ount 22 O#tiene el nBmero de (ilas a(ectadas
ocisavelo# 22 aves a large o#'ect
ocisavelo#(ile 22 aves a large o#'ect (ile
O5.erver$ersion 22 Devuelve una cadena conteniendo in(ormaci-n a cerca de la version del
servidor;
lo#2_setBu((ering 22 5hanges current state o( #u((ering (or large o#'ect
ocisetpre(etch 22 ets num#er o( roEs to #e pre(etched
O5.tatement,ype 22 Devuelve el tipo de una sentencia O5.;
ociEritelo#to(ile 22 aves a large o#'ect (ile
ociEritetemporarylo# 22 Lrites temporary #lo#
oci>bind>by>name
>P&P 4?
ociZ#indZ#yZname 22 Binds the P&P varia#le to the Oracle placeholder
Kescription
#ool oci>bind>by>name > resource stmtA string phZnameA miFed ivaria#le PA int maFlength PA int
typeQQ ?
oci>bind>by>name./ #inds the P&P varia#le ar6a1le to the Oracle placeholder ph_name; Lhether
it Eill #e used (or input or output Eill #e determined at run2time and the necessary storage space
Eill #e allocated; ,he lenEth parameter sets the maFimum length (or the #ind; .( you set lenEth to 21
oci>bind>by>name./ Eill use the current length o( ar6a1le to set the maFimum length;
.( you need to #ind an a#stract datatype >LOBDROL.DDBF.L+? you need to allocate it (irst using the
oci>ne3>descriptor./ (unction; ,he lenEth is not used (or a#stract datatypes and should #e set to
21; ,he t?pe parameter tells Oracle Ehich descriptor is used; Possi#le values areC
OCI_(_FILE 2 (or BF.L+sX
OCI_(_CFILE 2 (or 5F.L+sX
OCI_(_CLO( 2 (or 5LOBsX
OCI_(_(LO( 2 (or BLOBsX
OCI_(_RO"ID 2 (or ROL.DsX
OCI_(_NTY 2 (or named datatypesX
OCI_(_CURSOR 2 (or cursorsA that Eere created #e(ore Eith oci>ne3>cursor./;
E'emplo !. oci>bind>by>name./e+ample
<?php
/W oci%bind%by%name example thies at thieso dot net 3KJ2CC69
inserts < records into emp, and uses the '?74L #or updatinE the
records just a#ter the insert.
W/
$conn > oci%connect3"scott", "tiEer"9;
$stmt > oci%parse3$conn, "
4.&E'* 4.*?
emp 3empno, ename9
(,O+E&
3@empno,@ename9
'E*+'.4.-
'?74L
4.*?
@rid
"9;
$data > array3
6666 >> "Oarry",
CCCC >> "Zill",
<<<< >> "Aim"
9;
$ro8id > oci%ne8%descriptor3$conn, ?R4%L%'?74L9;
oci%bind%by%name3$stmt, "@empno", $empno, <C9;
oci%bind%by%name3$stmt, "@ename", $ename, <C9;
oci%bind%by%name3$stmt, "@rid", $ro8id, F6, ?R4%Z%'?74L9;
$update > oci%parse3$conn, "
+L,*E
emp
&E*
sal > @sal
7HE'E
'?74L > @rid
"9;
oci%bind%by%name3$update, "@rid", $ro8id, F6, ?R4%Z%'?74L9;
oci%bind%by%name3$update, "@sal", $sal, <C9;
$sal > 62222;
8hile 3list3$empno, $ename9 > each3$data99 :
oci%execute3$stmt9;
oci%execute3$update9;
;
$ro8idF>#ree39;
oci%#ree%statement3$update9;
oci%#ree%statement3$stmt9;
$stmt > oci%parse3$conn, "
&EOER*
W
S'?"
emp
7HE'E
empno
4.
36666,CCCC,<<<<9
"9;
oci%execute3$stmt9;

8hile 3$ro8 > oci%#etch%assoc3$stmt99 :
=ar%dump3$ro89;
;
oci%#ree%statement3$stmt9;
Remem#erA that this (unction strips trailing Ehitespace; ee the (olloEing eFampleC
E'emplo *. oci>bind>by>name./ e+ample
<?php
$connection > oci%connect3MapelsinM,MIanistraM9;
$Query > "4.&E'* 4.*? test%table (,O+E&3@id, @text9";
$statement > oci%parse3$Query9;
oci%bind%by%name3$statement, "@id", 69;
oci%bind%by%name3$statement, "@text", "trailinE spaces #ollo8 "9;
oci%execute3$statement9;
/W
*his code 8ill insert into LZ strinE MtrailinE spaces #ollo8M, 8ithout
trailinE spaces
W/
?>
E'emplo 7. oci>bind>by>name./ e+ample
<?php
$connection > oci%connect3MapelsinM,MIanistraM9;
$Query > "4.&E'* 4.*? test%table (,O+E&3@id, MtrailinE spaces #ollo8 M9";
$statement > oci%parse3$Query9;
oci%bind%by%name3$statement, "@id", 69;
oci%execute3$statement9;
/W
,nd this code 8ill add MtrailinE spaces #ollo8 M, preser=inE
trailinE 8hitespaces
W/
?>
A5iso
Do not use magicZ/uotesZgpc or addslashes./ and oci>bind>by>name./ simultaneously as no
/uoting is needed and any magically applied /uotes Eill #e Eritten into your data#ase as
oci>bind>by>name./ is not a#le to distinguish magically added /uotings (rom those added
intentionally;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocibindbyname./ instead; ,his name
still can #e usedA it Eas le(t as alias o( oci>bind>by>name./ (or doEnEards
compata#ility; ,hisA hoEeverA is deprecated and not recommended;
oci>cancel
>P&P 4?
ociZcancel 22 5ancels reading (rom cursor
Kescription
#ool oci>cancel > resource stmt ?
oci>cancel./ invalidates a cursorA (reeing all associated resources and cancels the a#ility to read
(rom it;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
.n P&P versions #e(ore 4;3;3 you must use ocicancel./ instead; ,his name still can #e usedA it Eas
le(t as alias o( oci>cancel./ (or doEnEards compata#ility; ,hisA hoEeverA is deprecated and not
recommended;
oci>close
>P&P 4?
ociZclose 22 5loses Oracle connection
Kescription
#ool oci>close > resource connection ?
oci>close./ closes the Oracle connection connect6on;
Nota- As non2persistent lin"s are closed automatically at the end o( script eFecutionA
calling this (unction is not re/uired; Because o( this and the method the eFtension uses
to handle connection resourcesA oci>close./ currently provides no actual (unctionality;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- .n P&P versions #e(ore 4;3;3 you must use ociclose./ instead; ,his name still can
#e usedA it Eas le(t as alias o( oci>close./ (or doEnEards compata#ility; ,hisA hoEeverA
is deprecated and not recommended;
JCI(Collection(Gappend
>no version in(ormationA might #e only in 5$?
O5.25ollection2_append 22 Appends an o#'ect to the collection
Kescription
#ool JCI(Collection(Gappend > miFed value ?
Appends an o#'ect to the end o( the collection; Parameter alue can #e a string or a num#er;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
JCI(Collection(Gassign
>no version in(ormationA might #e only in 5$?
O5.25ollection2_assign 22 Assigns a value to the collection (rom another eFisting collection
Kescription
#ool JCI(Collection(Gassign > O5.25ollection (rom ?
Assigns a value to the collection (rom anotherA previously created collection; Both collections must
#e created Eith oci>ne3>collection./ prior to using them;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
JCI(Collection(GassignElem
>no version in(ormationA might #e only in 5$?
O5.25ollection2_assign+lem 22 Assigns a value to the element o( the collection
Kescription
#ool JCI(Collection(GassignElem > int indeFA miFed value ?
Assigns a value to the element Eith indeF 6n#e8; Parameter alue can #e a string or a num#er;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
JCI(Collection(GgetElem
>no version in(ormationA might #e only in 5$?
O5.25ollection2_get+lem 22 Returns value o( the element
Kescription
miFed JCI(Collection(GgetElem > int indeF ?
Method JCI(Collection(GgetElem./ returns value o( the element Eith indeF 6n#e8 >12#ased?;
JCI(Collection(GgetElem./ Eill return FALSE i( such element doesnHt eFistX NULL i( element is
NULLX string i( element is column o( a string datatype or num#er i( element is numeric (ield;
JCI(Collection(GgetElem./ Eill return FALSE in case o( error;
JCI(Collection(Gfree
>no version in(ormationA might #e only in 5$?
O5.25ollection2_(ree 22 Frees resources associated Eith collection o#'ect
Kescription
#ool JCI(Collection(Gfree > void ?
Frees resources associated Eith collection o#'ect;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
JCI(Collection(Gma+
>no version in(ormationA might #e only in 5$?
O5.25ollection2_maF 22 Gets the maFimum num#er o( elements in the collection
Kescription
int JCI(Collection(Gma+ > void ?
Returns the maFimum num#er o( elements in the collection; .( the returned value is 3A then the
num#er o( elements is not limited; JCI(Collection(Gma+./ returns FALSE in case o( error;
ee also oci>collection>si6e./;
JCI(Collection(Gsi6e
>no version in(ormationA might #e only in 5$?
O5.25ollection2_size 22 Returns size o( the collection
Kescription
int JCI(Collection(Gsi6e > void ?
Returns the num#er o( elements in the collection;
ee also oci>collection>ma+./;
JCI(Collection(Gtrim
>no version in(ormationA might #e only in 5$?
O5.25ollection2_trim 22 ,rims elements (rom the end o( the collection
Kescription
#ool JCI(Collection(Gtrim > int num ?
,rims num o( elements (rom the end o( the collection;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also oci>collection>si6e./;
oci>commit
>P&P 4?
ociZcommit 22 5ommits outstanding statements
Kescription
#ool oci>commit > resource connection ?
oci>commit./ commits all outstanding statements (or the active transaction on the Oracle
connection connect6on;
E'emplo !. oci>commit./ e+ample
<?php
// OoEin to ?racle ser=er
$conn > oci%connect3MscottM, MtiEerM9;

// arse &NO
$stmt > oci%parse3$conn, "
4.&E'* 4.*?
employees 3name, surname9
(,O+E&
3M"aximM, M"aletsIyM9
"9;
/W Execute statement
?R4%LES,+O* tells oci%execute39
not to commit statement immediately W/
oci%execute3$stmt, ?R4%LES,+O*9;
/W
....
arsinE and executinE other statements here ...
....
W/

// Rommit transaction
$committed > oci%commit3$conn9;
// *est 8hether commit 8as success#ul. 4# error occurred, return error messaEe
i# 3!$committed9 :
$error > oci%error3$conn9;
echo MRommit #ailed. ?racle reports@ M . $error)MmessaEeM/;
;
?>
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocicommit./ instead; ,his name still
can #e usedA it Eas le(t as alias o( oci>commit./ (or doEnEards compata#ility; ,hisA
hoEeverA is deprecated and not recommended;
ee also oci>rollbacB./ and oci>e+ecute./;
oci>connect
>P&P 4?
ociZconnect 22 +sta#lishes a connection to Oracle server
Kescription
resource oci>connect > string usernameA string passEord PA string d# PA string charsetQQ ?
oci>connect./ returns a connection identi(ier needed (or most other O5. calls; ,he optional third
parameter can either contain the name o( the local Oracle instance or the name o( the entry in
tnsnames.ora to Ehich you Eant to connect; .( the optional third parameter is not speci(iedA
P&P uses the environment varia#les ORACLE_SID >Oracle instance? or T"O_TAS&
>tnsnames.ora? to determine Ehich data#ase to connect to;
Nota- oci>connect./ #oes not reesta#lish the connectionA i( a connection Eith such
parameters Eas esta#lished #e(ore; .n this caseA oci>connect./ Eill return identi(ier o(
previously opened connection; ,his meansA that you cannot use this (unction to separate
transactions; ,o esta#lish a distinctly neE connectionA use oci>ne3>connect./;
i usais Oracle server v;9;0 - superiorA podeis de(inir el parametro charsetA el cual ser* utilizado en
la nueva coneFi-n; i utilizais una version ` 9;0A este par*metro ser* ignorado y la varia#le de
entorno NLZLANG ser* usada en su lugar;
E'emplo !. oci>connect./ e+ample
<?php
echo "<pre>";
$db > "";
$c6 > oci%connect3"scott", "tiEer", $db9;
$cC > oci%connect3"scott", "tiEer", $db9;
#unction create%table3$conn9
:
$stmt > oci%parse3$conn, "create table scott.hallo 3test =archarC3G199"9;
oci%execute3$stmt9;
echo $conn . " created tableVnVn";
;
#unction drop%table3$conn9
:
$stmt > oci%parse3$conn, "drop table scott.hallo"9;
oci%execute3$stmt9;
echo $conn . " dropped tableVnVn";
;
#unction insert%data3$conn9
:
$stmt > oci%parse3$conn, "insert into scott.hallo
=alues3M$connM TT M M TT to%char3sysdate,MLLF"?.FPP HHC1@"4@&&M99"9;
oci%execute3$stmt, ?R4%LES,+O*9;
echo $conn . " inserted halloVnVn";
;
#unction delete%data3$conn9
:
$stmt > oci%parse3$conn, "delete #rom scott.hallo"9;
oci%execute3$stmt, ?R4%LES,+O*9;
echo $conn . " deleted halloVnVn";
;
#unction commit3$conn9
:
oci%commit3$conn9;
echo $conn . " committedVnVn";
;
#unction rollbacI3$conn9
:
oci%rollbacI3$conn9;
echo $conn . " rollbacIVnVn";
;
#unction select%data3$conn9
:
$stmt > oci%parse3$conn, "select W #rom scott.hallo"9;
oci%execute3$stmt, ?R4%LES,+O*9;
echo $conn."FFFFselectinEVnVn";
8hile 3oci%#etch3$stmt99 :
echo $conn . " )" . oci%result3$stmt, "*E&*"9 . "/VnVn";
;
echo $conn . "FFFFdoneVnVn";
;
create%table3$c69;
insert%data3$c69; // 4nsert a ro8 usinE c6
insert%data3$cC9; // 4nsert a ro8 usinE cC
select%data3$c69; // 'esults o# both inserts are returned
select%data3$cC9;
rollbacI3$c69; // 'ollbacI usinE c6
select%data3$c69; // Zoth inserts ha=e been rolled bacI
select%data3$cC9;
insert%data3$cC9; // 4nsert a ro8 usinE cC
oci>connect./ returns FALSE i( an error occured;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocilogon./ instead; ,his name still can
#e usedA it Eas le(t as alias o( oci>connect./ (or doEnEards compata#ility; ,hisA
hoEeverA is deprecated and not recommended;
ee also oci>pconnect./ and oci>ne3>connect./;
oci>define>by>name
>P&P 4?
ociZde(ineZ#yZname 22 @ses a P&P varia#le (or the de(ine2step during a +L+5,
Kescription
#ool oci>define>by>name > resource statementA string columnZnameA miFed ivaria#le PA int typeQ ?
oci>define>by>name./ de(ines P&P varia#les (or (etches o( OL25olumns; Be care(ul that Oracle
uses ALL2@PP+R5A+ column namesA Ehere#y in your select you can also Erite loEercase;
oci>define>by>name./ eFpects the column_name to #e in uppercase; .( you de(ine a varia#le that
doesnHt eFists in your select statementA no error Eill issued;
.( you need to de(ine an a#stract datatype >LOBDROL.DDBF.L+? you must allocate it (irst using
oci>ne3>descriptor./; ee also the oci>bind>by>name./ (unction;
E'emplo !. oci>define>by>name./ e+ample
<?php
/W oci%de#ine%by%name example F thies at thieso dot net 3KJ2C6K9 W/
$conn > oci%connect3"scott", "tiEer"9;
$stmt > oci%parse3$conn, "&EOER* empno, ename S'?" emp"9;
/W the de#ine "+&* be done ZES?'E oci%execute! W/
oci%de#ine%by%name3$stmt, "E".?", $empno9;
oci%de#ine%by%name3$stmt, "E.,"E", $ename9;
oci%execute3$stmt9;
8hile 3oci%#etch3$stmt99 :
echo "empno@" . $empno . "Vn";
echo "ename@" . $ename . "Vn";
;
oci%#ree%statement3$stmt9;
oci%close3$conn9;
?>
Nota- .n P&P versions #e(ore 4;3;3 you must use ocidefinebyname./ instead; ,his
name still can #e usedA it Eas le(t as alias o( oci>define>by>name./ (or doEnEards
compata#ility; ,hisA hoEeverA is deprecated and not recommended;
oci>error
>P&P 4?
ociZerror 22 Returns the last error (ound
Kescription
array oci>error > Presource sourceQ ?
For most errorsA the parameter is the most appropriate resource handle; For connection errors Eith
oci>connect./A oci>ne3>connect./ or oci>pconnect./A do not pass a parameter; .( no error is (oundA
oci>error./ returns FALSE; oci>error./ returns the error as an associative array; .n this arrayA co#e
consists the oracle error code and messaEe the oracle error string;
As of PHP 8.7- o99set and s@lte8t Eill also #e included in the return array to indicate the
location o( the error and the original OL teFt Ehich caused it;
E'emplo !. Kisplaying the Jracle error message after a connection error
$conn > ^oci%connect3"scott", "tiEer", "mydb"9;
i# 3!$conn9 :
$e > oci%error39; // Sor oci%connect errors pass no handle
echo htmlentities3$e)MmessaEeM/9;
;
E'emplo *. Kisplaying the Jracle error message after a parsing error
$stmt > ^oci%parse3$conn, "select M #rom dual"9; // note mismatched Quote
i# 3!$stmt9 :
$e > oci%error3$conn9; // Sor oci%parse errors pass the connection handle
echo htmlentities3$e)MmessaEeM/9;
;
E'emplo 7. Kisplaying the Jracle error message and problematic statement after an e+ecution
error
$r > oci%execute3$stmt9;
i# 3!$r9 :
$e > oci%error3$stmt9; // Sor oci%execute errors pass the statementhandle
echo htmlentities3$e)MmessaEeM/9;
echo "<pre>";
echo htmlentities3$e)MsQltextM/9;
print#3"Vn\".3$e)Mo##setM/[69."s", "c"9;
echo "</pre>";
;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocierror./ instead; ,his name still can
#e usedA it Eas le(t as alias o( oci>error./ (or doEnEards compata#ility; ,hisA hoEeverA
is deprecated and not recommended;
oci>e+ecute
>P&P 4?
ociZeFecute 22 +Fecutes a statement
Kescription
#ool oci>e+ecute > resource stmt PA int modeQ ?
oci>e+ecute./ eFecutes a previously parsed statement >see oci>parse./?; ,he optional mo#e alloEs
you to speci(y the eFecution mode >de(ault is OCI_COMMIT_ON_SUCCESS?; .( you donHt Eant
statements to #e committed automaticallyA you should speci(y OCI_DEFAULT as your mo#e;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocie+ecute./ instead; ,his name still
can #e usedA it Eas le(t as alias o( oci>e+ecute./ (or doEnEards compata#ility; ,hisA
hoEeverA is deprecated and not recommended;
oci>fetch>all
>P&P 4?
ociZ(etchZall 22 Fetches all roEs o( result data into an array
Kescription
int oci>fetch>all > resource statementA array ioutput PA int s"ip PA int maFroEs PA int (lagsQQQ ?
oci>fetch>all./ (etches all the roEs (rom a result into a user2de(ined array; oci>fetch>all./ returns
the num#er o( roEs (etched or FALSE in case o( error; s>6p is the num#er o( initial roEs to ignore
Ehen (etching the result >de(ault value o( 3A to start at the (irst line?; ma8ro7s is the num#er o( roEs
to readA starting at the s>6pth roE >de(ault to 21A meaning all the roEs?;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
Parameter 9laEs can #e any com#ination o( the (olloEingC
OCI_FETCHSTATEMENT_(Y_RO"
OCI_FETCHSTATEMENT_(Y_COLUMN >de(ault value?
OCI_NUM
OCI_ASSOC
E'emplo !. oci>fetch>all./ e+ample
<?php
/W oci%#etch%all example mbritton at =erinet dot com 3KK2GC19 W/
$conn > oci%connect3"scott", "tiEer"9;
$stmt > oci%parse3$conn, "select W #rom emp"9;
oci%execute3$stmt9;
$nro8s > oci%#etch%all3$stmt, $results9;
i# 3$nro8s > 29 :
echo "<table border>V"6V">Vn";
echo "<tr>Vn";
8hile 3list3$Iey, $=al9 > each3$results99 :
echo "<th>$Iey</th>Vn";
;
echo "</tr>Vn";

#or 3$i > 2; $i < $nro8s; $i[[9 :
reset3$results9;
echo "<tr>Vn";
8hile 3$column > each3$results99 :
$data > $column)M=alueM/;
echo "<td>$data)$i/</td>Vn";
;
echo "</tr>Vn";
;
echo "</table>Vn";
; else :
echo ".o data #ound<br />Vn";
;
echo "$nro8s 'ecords &elected<br />Vn";

oci%#ree%statement3$stmt9;
oci%close3$conn9;
?>
oci>fetch>all./ returns FALSE in case o( error;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocifetchstatement./ instead; ,his
name still can #e usedA it Eas le(t as alias o( oci>fetch>all./ (or doEnEards
compata#ility; ,hisA hoEeverA is deprecated and not recommended;
oci>fetch>array
>P&P 4?
ociZ(etchZarray 22 Returns the neFt roE (rom the result data as an associative or numeric arrayA or
#oth
Kescription
array oci>fetch>array > resource statement PA int modeQ ?
Returns an arrayA Ehich corresponds to the neFt result roE or FALSE in case o( error or there is no
more roEs in the result;
oci>fetch>array./ returns an array Eith #oth associative and numeric indices;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
Optional second parameter can #e any com#ination o( the (olloEing constantsC
OCI_(OTH 2 return an array Eith #oth associative and numeric indices >the same as OCI_ASSOC
R OCI_NUM?; ,his is the de(ault #ehavior;
OCI_ASSOC 2 return an associative array >as oci>fetch>assoc./ Eor"s?;
OCI_NUM 2 return a numeric arrayA >as oci>fetch>ro3./ Eor"s?;
OCI_RETURN_NULLS 2 create empty elements (or the NULL (ields;
OCI_RETURN_LO(S 2 return the value o( a LOB o( the descriptor;
De(ault mo#e is OCI_(OTH;
.t should #e mentioned hereA that oci>fetch>array./ is 6ns6En696cantl? sloEerA than oci>fetch>ro3./A
#ut much more handy;
Nota- DonHt (orgetA that Oracle returns all (ield names in uppercase and associative
indices in the result array Eill #e uppercased too;
E'emplo !. oci>fetch>array./ 3ith OCI_(OTH e+ample
<?php
$connection > oci%connect3"apelsin", "Ianistra"9;
$Query > "&EOER* id, name S'?" #ruits";
$statement > oci%parse 3$connection, $Query9;
oci%execute 3$statement9;
8hile 3$ro8 > oci%#etch%array 3$statement, ?R4%Z?*H99 :
echo $ro8)2/." and ".$ro8)M4LM/." is the same<br>";
echo $ro8)6/." and ".$ro8)M.,"EM/." is the same<br>";
;
?>
E'emplo *. oci>fetch>array./ 3ith OCI_NUM e+ample
<?php
$connection > oci%connect3"user", "pass8ord"9;
$Query > "&EOER* id, name, lob%#ield S'?" #ruits";
$statement > oci%parse 3$connection, $Query9;
oci%execute 3$statement9;
8hile 3$ro8 > oci%#etch%array 3$statement, ?R4%.+"99 :
echo $ro8)2/."<br>";
echo $ro8)6/."<br>";
echo $ro8)C/F>read36229."<br>"; //this 8ill output #irst 622 bytes #rom O?Z
;
?>
E'emplo 7. oci>fetch>array./ 3ith OCI_ASSOC e+ample
<?php
$connection > oci%connect3"user", "pass8ord"9;
$Query > "&EOER* id, name, lob%#ield S'?" #ruits";
$statement > oci%parse 3$connection, $Query9;
oci%execute 3$statement9;
8hile 3$ro8 > oci%#etch%array 3$statement, ?R4%.+"99 :
echo $ro8)M4LM/."<br>";
echo $ro8)M.,"EM/."<br>";
echo $ro8)MO?Z%S4EOLM/."<br>"; //this 8ill output "?bject id U6"
;
?>
E'emplo 8. oci>fetch>array./ 3ith OCI_RETURN_LO(S e+ample
<?php
$connection > oci%connect3"user", "pass8ord"9;
$Query > "&EOER* id, name, lob%#ield S'?" #ruits";
$statement > oci%parse 3$connection, $Query9;
oci%execute 3$statement9;
8hile 3$ro8 > oci%#etch%array 3$statement, ?R4%.+"99 :
echo $ro8)2/."<br>";
echo $ro8)6/."<br>";
echo $ro8)MO?Z%S4EOLM/."<br>"; //this 8ill output O?ZMs content
;
?>
ee also oci>fetch>assoc./A oci>fetch>ob'ect./A oci>fetch>ro3./ and oci>fetch>all./;
oci>fetch>assoc
>P&P 4?
ociZ(etchZassoc 22 Returns the neFt roE (rom the result data as an associative array
Kescription
array oci>fetch>assoc > resource statement ?
oci>fetch>assoc./ returns the neFt roE (rom the result data as an associative array >identical to
oci>fetch>array./ call Eith OCI_ASSOC (lag?;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
u#se/uent call to oci>fetch>assoc./ Eill return neFt roE or FALSE i( there is no more roEs;
Nota- DonHt (orgetA that Oracle returns all (ield names in uppercase and associative
indices in the result array Eill #e uppercased too;
ee also oci>fetch>array./A oci>fetch>ob'ect./A oci>fetch>ro3./ and oci>fetch>all./;
oci>fetch>ob'ect
>P&P 4?
ociZ(etchZo#'ect 22 Returns the neFt roE (rom the result data as an o#'ect
Kescription
o#'ect oci>fetch>ob'ect > resource statement ?
oci>fetch>ob'ect./ returns the neFt roE (rom the result data as an o#'ectA Ehich attri#utes
correspond to (ields in statement;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
u#se/uent calls to oci>fetch>ob'ect./ Eill return the neFt roE (rom the result or FALSE i( there is
no more roEs;
Nota- DonHt (orgetA that Oracle returns all (ield names in uppercase and attri#utesH names
in the result o#'ect Eill #e in uppercase as Eell;
ee also oci>fetch>array./A oci>fetch>assoc./A oci>fetch>ro3./ and oci>fetch>all./;
oci>fetch>ro3
>P&P 4?
ociZ(etchZroE 22 Returns the neFt roE (rom the result data as a numeric array
Kescription
array oci>fetch>ro3 > resource statement ?
5alling oci>fetch>ro3./ is identical to oci>fetch>array./ Eith OCI_NUM (lag and returns the neFt
roE (rom the result data as a numeric array;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
u#se/uent calls to oci>fetch>ro3./ Eill return the neFt roE (rom the result data or FALSE i( there
is no more roEs;
ee also oci>fetch>array./A oci>fetch>ob'ect./A oci>fetch>assoc./ and oci>fetch>all./;
oci>fetch
>P&P 4?
ociZ(etch 22 Fetches the neFt roE into result2#u((er
Kescription
#ool oci>fetch > resource statement ?
oci>fetch./ (etches the neFt roE >(or +L+5, statements? into the internal result2#u((er;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocifetch./ instead; ,his name still can
#e usedA it Eas le(t as alias o( oci>fetch./ (or doEnEards compata#ility; ,hisA hoEeverA
is deprecated and not recommended;
oci>field>is>null
>P&P 4?
ociZ(ieldZisZnull 22 5hec"s i( the (ield is NULL
Kescription
#ool oci>field>is>null > resource stmtA miFed (ield ?
oci>field>is>null./ returns TRUE i( (ield 96el# (rom the statement is NULL; Parameter 96el# could #e
a (ieldHs indeF or a (ieldHs name >uppercased?;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocicolumnisnull./ instead; ,his name
still can #e usedA it Eas le(t as alias o( oci>field>is>null./ (or doEnEards compata#ility;
,hisA hoEeverA is deprecated and not recommended;
oci>field>name
>P&P 4?
ociZ(ieldZname 22 Returns the name o( a (ield (rom the statement
Kescription
string oci>field>name > resource statementA int (ield ?
oci>field>name./ returns the name o( the (ield corresponding to the (ield num#er >12#ased?;
E'emplo !. oci>field>name./ e+ample
<?php
$conn > oci%connect3"scott", "tiEer"9;
$stmt > oci%parse3$conn, "&EOER* W S'?" emp"9;
oci%execute3$stmt9;

echo "<table border>V"6V">";
echo "<tr>";
echo "<th>.ame</th>";
echo "<th>*ype</th>";
echo "<th>OenEth</th>";
echo "</tr>";

$ncols > oci%num%#ields3$stmt9;

#or 3$i > 6; $i <> $ncols; $i[[9 :
$column%name > oci%#ield%name3$stmt, $i9;
$column%type > oci%#ield%type3$stmt, $i9;
$column%si0e > oci%#ield%si0e3$stmt, $i9;

echo "<tr>";
echo "<td>$column%name</td>";
echo "<td>$column%type</td>";
echo "<td>$column%si0e</td>";
echo "</tr>";
;

echo "</table>Vn";
oci%#ree%statement3$stmt9;
oci%close3$conn9;
?>
Nota- .n P&P versions #e(ore 4;3;3 you must use ocicolumnname./ instead; ,his name
still can #e usedA it Eas le(t as alias o( oci>field>name./ (or doEnEards compata#ility;
,hisA hoEeverA is deprecated and not recommended;
ee also oci>num>fields./A oci>field>type./A and oci>field>si6e./;
oci>field>precision
>P&P 4?
ociZ(ieldZprecision 22 ,ell the precision o( a (ield
Kescription
int oci>field>precision > resource statementA int (ield ?
Returns precision o( the (ield Eith 96el# indeF >12#ased?;
For FLOA, columnsA precision is nonzero and scale is 210:; .( precision is 3A then column is
N@MB+R; +lse itHs N@MB+R>precisionA scale?;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocicolumnprecision./ instead; ,his
name still can #e usedA it Eas le(t as alias o( oci>field>precision./ (or doEnEards
compata#ility; ,hisA hoEeverA is deprecated and not recommended;
ee also oci>field>scale./ and oci>field>type./;
oci>field>scale
>P&P 4?
ociZ(ieldZscale 22 ,ell the scale o( the (ield
Kescription
int oci>field>scale > resource statementA int (ield ?
Returns scale o( the column Eith 96el# indeF >12#ased? or FALSE i( there is no such (ield;
For FLOA, columnsA precision is nonzero and scale is 210:; .( precision is 3A then column is
N@MB+R; +lse itHs N@MB+R>precisionA scale?;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocicolumnscale./ instead; ,his name
still can #e usedA it Eas le(t as alias o( oci>field>scale./ (or doEnEards compata#ility;
,hisA hoEeverA is deprecated and not recommended;
ee also oci>field>precision./ and oci>field>type./;
oci>field>si6e
>P&P 4?
ociZ(ieldZsize 22 Returns (ieldHs size
Kescription
int oci>field>si6e > resource stmtA miFed (ield ?
oci>field>si6e./ returns the size o( a (ield in #ytes; $alue o( 96el# parameter can #e the (ieldHs indeF
>12#ased? or itHs name;
E'emplo !. oci>field>si6e./e+ample
<?php
$conn > oci%connect3"scott", "tiEer"9;
$stmt > oci%parse3$conn, "&EOER* W S'?" emp"9;
oci%execute3$stmt9;

echo "<table border>V"6V">";
echo "<tr>";
echo "<th>.ame</th>";
echo "<th>*ype</th>";
echo "<th>OenEth</th>";
echo "</tr>";

$ncols > oci%num%#ields3$stmt9;

#or 3$i > 6; $i <> $ncols; $i[[9 :
$column%name > oci%#ield%name3$stmt, $i9;
$column%type > oci%#ield%type3$stmt, $i9;
$column%si0e > oci%#ield%si0e3$stmt, $i9;
echo "<tr>";
echo "<td>$column%name</td>";
echo "<td>$column%type</td>";
echo "<td>$column%si0e</td>";
echo "</tr>";
;

echo "</table>";

oci%#ree%statement3$stmt9;
oci%close3$conn9;
?>
Nota- .n P&P versions #e(ore 4;3;3 you must use ocicolumnsi6e./ instead; ,his name
still can #e usedA it Eas le(t as alias o( oci>field>si6e./ (or doEnEards compata#ility;
,hisA hoEeverA is deprecated and not recommended;
ee also oci>num>fields./ and oci>field>name./;
oci>field>type>ra3
>P&P 4?
ociZ(ieldZtypeZraE 22 ,ell the raE Oracle data type o( the (ield
Kescription
int oci>field>type>ra3 > resource statementA int (ield ?
oci>field>type>ra3./ returns OracleHs raE data type o( the (ield;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocicolumntypera3./ instead; ,his
name still can #e usedA it Eas le(t as alias o( oci>field>type>ra3./ (or doEnEards
compata#ility; ,hisA hoEeverA is deprecated and not recommended;
&oEeverA i( you Eant to get (ieldHs typeA then oci>field>type./ Eill suit you #etter; ee
oci>field>type./ (or additional in(ormation;
oci>field>type
>P&P 4?
ociZ(ieldZtype 22 Returns (ieldHs data type
Kescription
miFed oci>field>type > resource stmtA int (ield ?
oci>field>type./ returns a (ieldHs data type; Parameter 96el# is an indeF o( the (ield in the statement
>12#ased?;
E'emplo !. oci>field>type./ e+ample
<?php
$conn > oci%connect3"scott", "tiEer"9;
$stmt > oci%parse3$conn, "&EOER* W S'?" emp"9;
oci%execute3$stmt9;

echo "<table border>V"6V">";
echo "<tr>";
echo "<th>.ame</th>";
echo "<th>*ype</th>";
echo "<th>OenEth</th>";
echo "</tr>";

$ncols > oci%num%#ields3$stmt9;

#or 3$i > 6; $i <> $ncols; $i[[9 :
$column%name > oci%#ield%name3$stmt, $i9;
$column%type > oci%#ield%type3$stmt, $i9;
$column%si0e > oci%#ield%si0e3$stmt, $i9;

echo "<tr>";
echo "<td>$column%name</td>";
echo "<td>$column%type</td>";
echo "<td>$column%si0e</td>";
echo "</tr>";
;

echo "</table>Vn";

oci%#ree%statement3$stmt9;
oci%close3$conn9;
?>
Nota- .n P&P versions #e(ore 4;3;3 you must use ocicolumntype./ instead; ,his name
still can #e usedA it Eas le(t as alias o( oci>field>type./ (or doEnEards compata#ility;
,hisA hoEeverA is deprecated and not recommended;
ee also oci>num>fields./A oci>field>name./A and oci>field>si6e./;
descriptor(Gfree
>no version in(ormationA might #e only in 5$?
descriptor2_(ree 22 Frees resources associated Eith descriptor
Kescription
#ool descriptor(Gfree > void ?
descriptor(Gfree./ (rees resources associated Eith descriptorA previously allocated Eith
oci>ne3>descriptor./;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
oci>free>statement
>P&P 4?
ociZ(reeZstatement 22 Frees all resources associated Eith statement or cursor
Kescription
#ool oci>free>statement > resource statement ?
oci>free>statement./ (rees resources associated Eith OracleHs cursor or statementA Ehich Eas
received (rom as a result o( oci>parse./ or o#tained (rom Oracle;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
oci>internal>debug
>P&P 4?
ociZinternalZde#ug 22 +na#les or disa#les internal de#ug output
Kescription
void oci>internal>debug > int ono(( ?
oci>internal>debug./ ena#les or disa#les internal de#ug output; et ono99 to 3 to turn de#ug output
o(( or 1 to turn it on;
Nota- .n P&P versions #e(ore 4;3;3 you must use ociinternaldebug./ instead; ,his
name still can #e usedA it Eas le(t as alias o( oci>internal>debug./ (or doEnEards
compata#ility; ,hisA hoEeverA is deprecated and not recommended;
lob(Gappend
>no version in(ormationA might #e only in 5$?
lo#2_append 22 Appends data (rom the large o#'ect to another large o#'ect
Kescription
#ool lob(Gappend > O5.2Lo# lo#Z(rom ?
Appends data (rom the large o#'ect to the end o( another large o#'ect;
Lriting to the large o#'ect Eith lob(Gappend./ Eill (ail i( #u((ering Eas previously ena#led; %ou
must disa#le #u((ering #e(ore appending; %ou may need to (lush #u((ers Eith oci>lob>flush./
#e(ore disa#ling #u((ering;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also oci>lob>flush./A ocisetbufferinglob./ and ocigetbufferinglob./;
lob(Gclose
>no version in(ormationA might #e only in 5$?
lo#2_close 22 5loses LOB descriptor
Kescription
#ool lob(Gclose > void ?
lob(Gclose./ closes descriptor o( LOB or F.L+; ,his (unction should #e used only Eith lob(
G3riteTemporary./;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocicloselob./ instead; ,his name still
can #e usedA it Eas le(t as alias o( oci>lob>close./ (or doEnEards compata#ility; ,hisA
hoEeverA is deprecated and not recommended;
ee also oci>lob>3rite>temporary./;
oci>lob>copy
>P&P 4?
ociZlo#Zcopy 22 5opies large o#'ect
Kescription
#ool oci>lob>copy > O5.2Lo# lo#ZtoA O5.2Lo# lo#Z(rom PA int lengthQ ?
5opies large o#'ect or a part o( large o#'ect to another large o#'ect; Parameter lenEth indicates the
length o( data to #e copied; Old data o( LOB2recipient Eill #e overEritten;
.( you need to copy a particular part o( LOB to a particular position o( LOBA you can use
oci>lob>seeB./ to move internal pointers o( LOBs;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
lob(Geof
>no version in(ormationA might #e only in 5$?
lo#2_eo( 22 ,ests (or end2o(2(ile on a large o#'ectHs descriptor
Kescription
#ool lob(Geof > void ?
Returns TRUE i( internal pointer o( large o#'ect is at the end o( LOB; OtherEise returns FALSE;
ee also oci>lob>si6e./;
lob(Gerase
>no version in(ormationA might #e only in 5$?
lo#2_erase 22 +rases a speci(ied portion o( the internal LOB data
Kescription
int lob(Gerase > Pint o((set PA int lengthQQ ?
+rases a speci(ied portion o( the internal LOB data starting at a speci(ied o99set; Parameters lenEth
and o99set are optional; lob(Gerase./ erases all LOB data #y de(ault;
For BLOBsA erasing means that the eFisting LOB value is overEritten Eith zero2#ytes; For 5LOBsA
the eFisting LOB value is overEritten Eith spaces;
lob(Gerase./ returns the actual num#er o( charactersD#ytes erased or FALSE in case o( error;
lob(Ge+port
>no version in(ormationA might #e only in 5$?
lo#2_eFport 22 +Fports LOBHs contents to a (ile
Kescription
#ool lob(Ge+port > string (ilename PA int start PA int lengthQQ ?
+Fports LOBHs contents to a (ileA Ehich name is given in parameter 96lename; Optional parameter
start indicates (rom Ehat position to start eFport and parameter lenEth 2 length o( data to #e
eFported;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
lob(Gflush
>no version in(ormationA might #e only in 5$?
lo#2_(lush 22 FlushesDErites #u((er o( the LOB to the server
Kescription
#ool lob(Gflush > Pint (lagQ ?
lob(Gflush./ actually Erites data to the server; By de(aultA resources are not (reedA #ut using (lag
OCI_LO(_(UFFER_FREE you can do it eFplicitly; Be sure you "noE Ehat youHre doing 2 neFt
readDErite operation to the same part o( LOB Eill involve a round2trip to the server and initialize
neE #u((er resources; ,t is recommended to use OCI_LO(_(UFFER_FREE (lag only Ehen you
are not going to Eor" Eith the LOB anymore;
lob(Gflush./ returns FALSE i( #u((ering Eas not ena#led or an error occurred;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
lob(Gimport
>no version in(ormationA might #e only in 5$?
lo#2_import 22 .mports (ile data to the LOB
Kescription
#ool lob(Gimport > string (ilename ?
Lrites data (rom 96lename in to the current position o( large o#'ect;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocisa5elobfile./ instead; ,his name
still can #e usedA it Eas le(t as alias o( oci>lob>import./ (or doEnEards compata#ility;
,hisA hoEeverA is deprecated and not recommended;
oci>lob>is>e?ual
>P&P 4?
ociZlo#ZisZe/ual 22 5ompares tEo LOBDF.L+ locators (or e/uality
Kescription
#ool oci>lob>is>e?ual > O5.2Lo# lo#1A O5.2Lo# lo#0 ?
5ompares tEo LOBDF.L+ locators; Returns TRUE i( these o#'ects are e/ual and FALSE otherEise;
lob(Gload
>no version in(ormationA might #e only in 5$?
lo#2_load 22 Returns large o#'ectHs contents
Kescription
string lob(Gload > void ?
Returns large o#'ectHs contents; As script eFecution is terminated Ehen the memoryZlimit is
reachedA ensure that the LOB does not eFceed this limit; .n most cases itHs recommended to use
oci>lob>read./ instead; .n case o( error lob(Gload./ returns FALSE;
Nota- .n P&P versions #e(ore 4;3;3 you must use ociloadlob./ instead; ,his name still
can #e usedA it Eas le(t as alias o( oci>lob>load./ (or doEnEards compata#ility; ,hisA
hoEeverA is deprecated and not recommended;
lob(Gread
>no version in(ormationA might #e only in 5$?
lo#2_read 22 Reads part o( large o#'ect
Kescription
string lob(Gread > int length ?
Reads lenEth #ytes (rom the current position o( LOBHs internal pointer; Reading stops Ehen lenEth
#ytes have #een read or end o( large o#'ect is reached; .nternal pointer o( large o#'ect Eill #e shi(ted
on the amount o( #ytes read;
Returns FALSE in case o( error;
ee also oci>lob>eof./A oci>lob>seeB./A oci>lob>tell./ and oci>lob>3rite./;
lob(Gre3ind
>no version in(ormationA might #e only in 5$?
lo#2_reEind 22 Moves the internal pointer to the #eginning o( the large o#'ect
Kescription
#ool lob(Gre3ind > void ?
ets the internal pointer to the #eginning o( the large o#'ect;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also oci>lob>seeB./ and oci>lob>tell./;
lob(Gsa5e
>no version in(ormationA might #e only in 5$?
lo#2_save 22 aves data to the large o#'ect
Kescription
#ool lob(Gsa5e > string data PA int o((setQ ?
aves #ata to the large o#'ect; Parameter o99set can #e used to indicate o((set (rom the #eginning o(
the large o#'ect;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocisa5elob./ instead; ,his name still
can #e usedA it Eas le(t as alias o( oci>lob>sa5e./ (or doEnEards compata#ility; ,hisA
hoEeverA is deprecated and not recommended;
ee also oci>lob>3rite./ and oci>lob>import./;
lob(GseeB
>no version in(ormationA might #e only in 5$?
lo#2_see" 22 ets the internal pointer o( the large o#'ect
Kescription
#ool lob(GseeB > int o((set PA int EhenceQ ?
ets the internal pointer o( the large o#'ect; Parameter o99set indicates the amount o( #ytesA on Ehich
internal pointer should #e moved (rom the positionA pointed #y 7henceC
OCI_SEE&_SET 2 sets the position e/ual to o99set
OCI_SEE&_CUR 2 adds o99set #ytes to the current position
OCI_SEE&_END 2 adds o99set #ytes to the end o( large o#'ect >use negative value to move to a
position #e(ore the end o( large o#'ect?
ee also oci>lob>re3ind./ and oci>lob>tell./;
lob(Gsi6e
>no version in(ormationA might #e only in 5$?
lo#2_size 22 Returns size o( large o#'ect
Kescription
int lob(Gsi6e > void ?
Returns length o( large o#'ect value or FALSE in case o( error; +mpty o#'ects have zero length;
lob(Gtell
>no version in(ormationA might #e only in 5$?
lo#2_tell 22 Returns current position o( internal pointer o( large o#'ect
Kescription
int lob(Gtell > void ?
Returns current position o( a LOBHs internal pointer or FALSE i( an error occurred;
ee also oci>lob>si6e./ and oci>lob>eof./;
lob(Gtruncate
>no version in(ormationA might #e only in 5$?
lo#2_truncate 22 ,runcates large o#'ect
Kescription
#ool lob(Gtruncate > Pint lengthQ ?
.( parameter lenEth is givenA lob(Gtruncate./ truncates large o#'ect to lenEth #ytes; OtherEiseA lob(
Gtruncate./ Eill purge the LOB completely;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also oci>lob>erase./;
lob(G3riteTemporary
>no version in(ormationA might #e only in 5$?
lo#2_Erite,emporary 22 Lrites temporary large o#'ect
Kescription
#ool lob(G3riteTemporary > string data PA int lo#ZtypeQ ?
5reates a temporary large o#'ect and Erites #ata to it;
Parameter lo1_t?pe can #e one o( the (olloEingC
OCI_TEMP_(LO( is used to create temporary BLOBs
OCI_TEMP_CLO( is used to create temporary 5LOBs
lob(G3riteTemporary./ creates a 5LOB #y de(ault;
%ou should use oci>lob>close./ Ehen the Eor" Eith the o#'ect is over;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- .n P&P versions #e(ore 4;3;3 you must use oci3ritetemporarylob./ instead; ,his
name still can #e usedA it Eas le(t as alias o( oci>lob>3rite>temporary./ (or
doEnEards compata#ility; ,hisA hoEeverA is deprecated and not recommended;
ee also oci>lob>close./;
lob(G3rite
>no version in(ormationA might #e only in 5$?
lo#2_Erite 22 Lrites data to the large o#'ect
Kescription
int lob(G3rite > string data PA int lengthQ ?
Lrites data (rom the parameter #ata into the current position o( LOBHs internal pointer; .( the
parameter lenEth is givenA Eriting Eill stop a(ter lenEth #ytes have #een Eritten or the end o( #ata is
reachedA Ehichever comes (irst;
lob(G3rite./ returns the num#er o( #ytes Eritten or FALSE in case o( error;
ee also oci>lob>read./;
oci>ne3>collection
>P&P 4?
ociZneEZcollection 22 Allocates neE collection o#'ect
Kescription
O5.25ollection oci>ne3>collection > resource connectionA string tdo PA string schemaQ ?
Allocates neE collection o#'ect; Parameter t#o should #e a valid named type >uppercased?; ,hirdA
optional parameter schema should point to the schemeA Ehere the named type Eas created;
oci>ne3>collection./ uses name o( the current user as de(ault value o( schema;
oci>ne3>collection./ returns FALSE on error;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocine3collection./ instead; ,his name
still can #e usedA it Eas le(t as alias o( oci>ne3>collection./ (or doEnEards
compata#ility; ,hisA hoEeverA is deprecated and not recommended;
oci>ne3>connect
>P&P 4?
ociZneEZconnect 22 +sta#lishes a neE connection to the Oracle server
Kescription
resource oci>ne3>connect > string usernameA string passEord PA string d# PA string charsetQQ ?
oci>ne3>connect./ creates a neE connection to an Oracle server and logs on; ,he optional third
parameter can either contain the name o( the local Oracle instance or the name o( the entry in
tnsnames.ora; .( the third parameter is not speci(iedA P&P uses environment varia#les
OR,C4E_S0D and TIO_T,S2 to determine the name o( local Oracle instance and location o(
tnsnames.ora accordingly;
i usais Oracle server v;9;0 - superiorA podeis de(inir el parametro charsetA el cual ser* utilizado en
la nueva coneFi-n; i utilizais una version ` 9;0A este par*metro ser* ignorado y la varia#le de
entorno NLZLANG ser* usada en su lugar;
oci>ne3>connect./ (orces the creation o( a neE connection; ,his should #e used i( you need to
isolate a set o( transactions; By de(aultA connections are shared and su#se/uent calls to oci>connect
./ Eill return the same connection identi(ier;
,he (olloEing demonstrates hoE you can separate connections;
E'emplo !. oci>ne3>connect./ e+ample
<?php
echo "<html><pre>";
$db > "";
$c6 > oci%connect3"scott", "tiEer", $db9;
$cC > oci%ne8%connect3"scott", "tiEer", $db9;
#unction create%table3$conn9
:
$stmt > oci%parse3$conn, "create table scott.hallo 3test
=archarC3G199"9;
oci%execute3$stmt9;
echo $conn . " created tableVnVn";
;
#unction drop%table3$conn9
:
$stmt > oci%parse3$conn, "drop table scott.hallo"9;
oci%execute3$stmt9;
echo $conn . " dropped tableVnVn";
;
#unction insert%data3$conn9
:
$stmt > oci%parse3$conn, "insert into scott.hallo
=alues3M$connM TT M M TT to%char3sysdate,MLLF"?.FPP HHC1@"4@&&M99"9;
oci%execute3$stmt, ?R4%LES,+O*9;
echo $conn . " inserted halloVnVn";
;
#unction delete%data3$conn9
:
$stmt > oci%parse3$conn, "delete #rom scott.hallo"9;
oci%execute3$stmt, ?R4%LES,+O*9;
echo $conn . " deleted halloVnVn";
;
#unction commit3$conn9
:
oci%commit3$conn9;
echo $conn . " committedVnVn";
;
#unction rollbacI3$conn9
:
oci%rollbacI3$conn9;
echo $conn . " rollbacIVnVn";
;
#unction select%data3$conn9
:
$stmt > oci%parse3$conn, "select W #rom scott.hallo"9;
oci%execute3$stmt, ?R4%LES,+O*9;
echo $conn . "FFFFselectinEVnVn";
8hile 3oci%#etch3$stmt99 :
echo $conn . " <" . oci%result3$stmt, "*E&*"9 . ">VnVn";
;
echo $conn . "FFFFdoneVnVn";
;
create%table3$c69;
insert%data3$c69;
select%data3$c69;
select%data3$cC9;
rollbacI3$c69;
select%data3$c69;
select%data3$cC9;
insert%data3$cC9;
oci>ne3>connect./ returns FALSE on error;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocinlogon./ instead; ,his name still
can #e usedA it Eas le(t as alias o( oci>ne3>connect./ (or doEnEards compata#ility;
,hisA hoEeverA is deprecated and not recommended;
ee also oci>connect./ and oci>pconnect./;
oci>ne3>cursor
>P&P 4?
ociZneEZcursor 22 Allocates and returns a neE cursor >statement handle?
Kescription
resource oci>ne3>cursor > resource connection ?
oci>ne3>cursor./ allocates a neE statement handle on the speci(ied connection;
E'emplo !. )sing ME; C)M,JM in an JracleUs stored procedure
<?php
// suppose your stored procedure in#o.output returns a re# cursor in @data
$conn > oci%connect3"scott", "tiEer"9;
$curs > oci%ne8%cursor3$conn9;
$stmt > oci%parse3$conn, "beEin in#o.output3@data9; end;"9;
oci%bind%by%name3$stmt, "data", $curs, F6, ?R4%Z%R+'&?'9;
oci%execute3$stmt9;
oci%execute3$curs9;
8hile 3$data > oci%#etch%ro83$curs99 :
=ar%dump3$data9;
;

oci%#ree%statement3$stmt9;
oci%#ree%statement3$curs9;
oci%close3$conn9;
?>
E'emplo *. )sing ME; C)M,JM in an JracleUs select statement
<?php
echo "<html><body>";
$conn > oci%connect3"scott", "tiEer"9;
$count%cursor > "R+'&?'3select count3empno9 num%emps #rom emp " .
"8here emp.deptno > dept.deptno9 as E"R.* #rom dept";
$stmt > oci%parse3$conn, "select deptno,dname,$count%cursor"9;
oci%execute3$stmt9;
echo "<table border>V"6V">";
echo "<tr>";
echo "<th>LE* .,"E</th>";
echo "<th>LE* U</th>";
echo "<th>U E"O?PEE&</th>";
echo "</tr>";
8hile 3$data > oci%#etch%assoc3$stmt99 :
echo "<tr>";
$dname > $data)"L.,"E"/;
$deptno > $data)"LE*.?"/;
echo "<td>$dname</td>";
echo "<td>$deptno</td>";
oci%execute3$data)"E"R.*"/9;
8hile 3$subdata > oci%#etch%assoc3$data)"E"R.*"/99 :
$num%emps > $subdata)".+"%E"&"/;
echo "<td>$num%emps</td>";
;
echo "</tr>";
;
echo "</table>";
echo "</body></html>";
oci%#ree%statement3$stmt9;
oci%close3$conn9;
?>
oci>ne3>cursor./ returns FALSE on error;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocine3cursor./ instead; ,his name
still can #e usedA it Eas le(t as alias o( oci>ne3>cursor./ (or doEnEards compata#ility;
,hisA hoEeverA is deprecated and not recommended;
oci>ne3>descriptor
>P&P 4?
ociZneEZdescriptor 22 .nitializes a neE empty LOB or F.L+ descriptor
Kescription
O5.2Lo# oci>ne3>descriptor > resource connection PA int typeQ ?
oci>ne3>descriptor./ allocates resources to hold descriptor or LOB locator; $alid values (or t?pe
areC OCI_D_FILEA OCI_D_LO( and OCI_D_RO"ID;
E'emplo !. oci>ne3>descriptor./ e+ample
<?php
/W *his script is desiEned to be called #rom a H*"O #orm.
W 4t expects $user, $pass8ord, $table, $8here, and $commitsi0e
W to be passed in #rom the #orm. *he script then deletes
W the selected ro8s usinE the '?74L and commits a#ter each
W set o# $commitsi0e ro8s. 3+se 8ith care, there is no rollbacI9
W/
$conn > oci%connect3$user, $pass8ord9;
$stmt > oci%parse3$conn, "select ro8id #rom $table $8here"9;
$ro8id > oci%ne8%descriptor3$conn, ?R4%L%'?74L9;
oci%de#ine%by%name3$stmt, "'?74L", $ro8id9;
oci%execute3$stmt9;
8hile 3oci%#etch3$stmt99 :
$nro8s > oci%num%ro8s3$stmt9;
$delete > oci%parse3$conn, "delete #rom $table 8here '?74L > @rid"9;
oci%bind%by%name3$delete, "@rid", $ro8id, F6, ?R4%Z%'?74L9;
oci%execute3$delete9;
echo "$nro8sVn";
i# 33$nro8s \ $commitsi0e9 >> 29 :
oci%commit3$conn9;
;
;
$nro8s > oci%num%ro8s3$stmt9;
echo "$nro8s deleted...Vn";
oci%#ree%statement3$stmt9;
oci%close3$conn9;
?>
<?php
/W *his script demonstrates #ile upload to O?Z columns
W *he #orm#ield used #or this example looIs liIe this
W <#orm action>"upload.php" method>"post" enctype>"multipart/#ormFdata">
W <input type>"#ile" name>"lob%upload" />
W ...
W/
i# 3!isset3$lob%upload9 TT $lob%upload >> MnoneM9:
?>
<#orm action>"upload.php" method>"post" enctype>"multipart/#ormFdata">
+pload #ile@ <input type>"#ile" name>"lob%upload" /><br />
<input type>"submit" =alue>"+pload" /> F <input type>"reset" =alue>"'eset" />
</#orm>
<?php
; else :
// $lob%upload contains the temporary #ilename o# the uploaded #ile
// see also the #eatures section on #ile upload,
// i# you 8ould liIe to use secure uploads

$conn > oci%connect3$user, $pass8ord9;
$lob > oci%ne8%descriptor3$conn, ?R4%L%O?Z9;
$stmt > oci%parse3$conn, "insert into $table 3id, the%blob9
=alues3my%seQ..EX*(,O, E"*P%ZO?Z399 returninE the%blob into @the%blob"9;
oci%bind%by%name3$stmt, M@the%blobM, $lob, F6, ?R4%Z%ZO?Z9;
oci%execute3$stmt, ?R4%LES,+O*9;
i# 3$lobF>sa=e#ile3$lob%upload99:
oci%commit3$conn9;
echo "Zlob success#ully uploadedVn";
;else:
echo "RouldnMt upload ZlobVn";
;
oci%#ree%descriptor3$lob9;
oci%#ree%statement3$stmt9;
oci%close3$conn9;
;
?>
E'emplo *. oci>ne3>descriptor./ e+ample
<?php
/W RallinE O/&NO stored procedures 8hich contain clobs as input
W parameters 3H 1 >> 1.2.G9.
W Example O/&NO stored procedure siEnature is@
W
W '?REL+'E sa=e%data
W ,rEument .ame *ype 4n/?ut Le#ault?
W FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF FFFFFF FFFFFFFF
W ]EP .+"ZE'3<J9 4.
W L,*, RO?Z 4.
W
W/
$conn > oci%connect3$user, $pass8ord9;
$stmt > oci%parse3$conn, "beEin sa=e%data3@Iey, @data9; end;"9;
$clob > oci%ne8%descriptor3$conn, ?R4%L%O?Z9;
oci%bind%by%name3$stmt, M@IeyM, $Iey9;
oci%bind%by%name3$stmt, M@dataM, $clob, F6, ?R4%Z%RO?Z9;
$clobF>8rite3$data9;
oci%execute3$stmt, ?R4%LES,+O*9;
oci%commit3$conn9;
$clobF>#ree39;
oci%#ree%statement3$stmt9;
?>
oci>ne3>descriptor./ returns FALSE on error;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocine3descriptor./ instead; ,his
name still can #e usedA it Eas le(t as alias o( oci>ne3>descriptor./ (or doEnEards
compata#ility; ,hisA hoEeverA is deprecated and not recommended;
oci>num>fields
>P&P 4?
ociZnumZ(ields 22 Returns the num#er o( result columns in a statement
Kescription
int oci>num>fields > resource statement ?
oci>num>fields./ returns the num#er o( columns in the statement;
E'emplo !. oci>num>fields./ e+ample
<?php
echo "<pre>Vn";
$conn > oci%connect3"scott", "tiEer"9;
$stmt > oci%parse3$conn, "select W #rom emp"9;

oci%execute3$stmt9;

8hile 3oci%#etch3$stmt99 :
echo "Vn";
$ncols > oci%num%#ields3$stmt9;
#or 3$i > 6; $i <> $ncols; $i[[9 :
$column%name > oci%#ield%name3$stmt, $i9;
$column%=alue > oci%result3$stmt, $i9;
echo $column%name . M@ M . $column%=alue . "Vn";
;
echo "Vn";
;

oci%#ree%statement3$stmt9;
oci%close3$conn9;

echo "</pre>";
?>
oci>num>fields./ returns FALSE on error;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocinumcols./ instead; ,his name still
can #e usedA it Eas le(t as alias o( oci>num>fields./ (or doEnEards compata#ility; ,hisA
hoEeverA is deprecated and not recommended;
oci>num>ro3s
>P&P 4?
ociZnumZroEs 22 Returns num#er o( roEs a((ected during statement eFecution
Kescription
int oci>num>ro3s > resource stmt ?
oci>num>ro3s./ returns num#er o( roEs a((ected during statement eFecution;
Nota- ,his (unction #oes not return num#er o( roEs selecteda For +L+5, statements
this (unction Eill return the num#er o( roEsA that Eere (etched to the #u((er Eith
oci>fetchL./ (unctions;
E'emplo !. oci>num>ro3s./ e+ample
<?php
echo "<pre>";
$conn > oci%connect3"scott", "tiEer"9;

$stmt > oci%parse3$conn, "create table empC as select W #rom emp"9;
oci%execute3$stmt9;
echo oci%num%ro8s3$stmt9 . " ro8s inserted.<br />";
oci%#ree%statement3$stmt9;

$stmt > oci%parse3$conn, "delete #rom empC"9;
oci%execute3$stmt, ?R4%LES,+O*9;
echo oci%num%ro8s3$stmt9 . " ro8s deleted.<br />";
oci%commit3$conn9;
oci%#ree%statement3$stmt9;

$stmt > oci%parse3$conn, "drop table empC"9;
oci%execute3$stmt9;
oci%#ree%statement3$stmt9;

oci%close3$conn9;
echo "</pre>";
?>
oci>num>ro3s./ returns FALSE on error;
Nota- .n P&P versions #e(ore 4;3;3 you must use ociro3count./ instead; ,his name still
can #e usedA it Eas le(t as alias o( oci>num>ro3s./ (or doEnEards compata#ility; ,hisA
hoEeverA is deprecated and not recommended;
oci>parse
>P&P 4?
ociZparse 22 Prepares Oracle statement (or eFecution
Kescription
resource oci>parse > resource connectionA string /uery ?
oci>parse./ prepares the @uer? using connect6on and returns the statement identi(ierA Ehich can #e
used Eith oci>bind>by>name./A oci>e+ecute./ and other (unctions;
Nota- ,his (unction #oes not validate @uer?; ,he only Eay to (ind out i( @uer? is valid
OL or PLDOL statement 2 is to eFecute it;
oci>parse./ returns FALSE on error;
Nota- .n P&P versions #e(ore 4;3;3 you must use ociparse./ instead; ,his name still can
#e usedA it Eas le(t as alias o( oci>parse./ (or doEnEards compata#ility; ,hisA hoEeverA
is deprecated and not recommended;
oci>pass3ord>change
>P&P 4?
ociZpassEordZchange 22 5hanges passEord o( OracleHs user
Kescription
#ool oci>pass3ord>change > resource connectionA string usernameA string oldZpassEordA string
neEZpassEord ?
5hanges passEord (or user Eith username; Parameters ol#_pass7or# and ne7_pass7or# should
indicate old and neE passEords respectively;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocipass3ordchange./ instead; ,his
name still can #e usedA it Eas le(t as alias o( oci>pass3ord>change./ (or doEnEards
compata#ility; ,hisA hoEeverA is deprecated and not recommended;
oci>pconnect
>P&P 4?
ociZpconnect 22 5onnect to an Oracle data#ase using a persistent connection
Kescription
resource oci>pconnect > string usernameA string passEord PA string d# PA string charsetQQ ?
oci>pconnect./ creates a neE persistent connection to an Oracle server and logs on; ,he optional
third parameter can either contain the name o( the local Oracle instance or the name o( the entry in
tnsnames.ora; .( the third parameter is not speci(iedA P&P uses environment varia#les
OR,C4E_S0D and TIO_T,S2 to determine the name o( local Oracle instance and location o(
tnsnames.ora accordingly;
i usais Oracle server v;9;0 - superiorA podeis de(inir el parametro charsetA el cual ser* utilizado en
la nueva coneFi-n; i utilizais una version ` 9;0A este par*metro ser* ignorado y la varia#le de
entorno NLZLANG ser* usada en su lugar;
oci>pconnect./ returns connection identi(ier or FALSE on error;
Nota- NoteA that these "ind o( lin"s only Eor" i( you are using a module version o(
P&P; ee the Persistent Data#ase 5onnections section (or more in(ormation;
Nota- .n P&P versions #e(ore 4;3;3 you must use ociplogon./ instead; ,his name still
can #e usedA it Eas le(t as alias o( oci>pconnect./ (or doEnEards compata#ility; ,hisA
hoEeverA is deprecated and not recommended;
ee also oci>connect./ and oci>ne3>connect./;
oci>result
>P&P 4?
ociZresult 22 Returns (ieldHs value (rom the (etched roE
Kescription
miFed oci>result > resource statementA miFed (ield ?
oci>result./ returns the data (rom the (ield 96el# in the current roEA (etched #y oci>fetch./;
oci>result./ returns everything as strings eFcept (or a#stract types >ROL.DsA LOBs and F.L+s?;
oci>result./ returns FALSE on error;
%ou can either use the column num#er >12#ased? or the column name >in uppercase? (or the field./
parameter;
Nota- .n P&P versions #e(ore 4;3;3 you must use ociresult./ instead; ,his name still can
#e usedA it Eas le(t as alias o( oci>result./ (or doEnEards compata#ility; ,hisA hoEeverA
is deprecated and not recommended;
ee also oci>fetch>array./A oci>fetch>assoc./A oci>fetch>ob'ect./A oci>fetch>ro3./ and
oci>fetch>all./;
oci>rollbacB
>P&P 4?
ociZroll#ac" 22 Rolls #ac" outstanding transaction
Kescription
#ool oci>rollbacB > resource connection ?
oci>rollbacB./ rolls #ac" all outstanding statements (or Oracle connection connect6on;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocirollbacB./ instead; ,his name still
can #e usedA it Eas le(t as alias o( oci>rollbacB./ (or doEnEards compata#ility; ,hisA
hoEeverA is deprecated and not recommended;
ee also oci>commit./;
oci>ser5er>5ersion
>P&P 4?
ociZserverZversion 22 Returns server version
Kescription
string oci>ser5er>5ersion > resource connection ?
Returns a string Eith version in(ormation o( the Oracle serverA Ehich uses connection connect6on or
returns FALSE on error;
E'emplo !. oci>ser5er>5ersion./ e+ample
<?php
$conn > oci%connect3"scott", "tiEer"9;
echo "&er=er (ersion@ " . oci%ser=er%=ersion3$conn9;
oci%close3$conn9;
?>
Nota- .n P&P versions #e(ore 4;3;3 you must use ociser5er5ersion./ instead; ,his name
still can #e usedA it Eas le(t as alias o( oci>ser5er>5ersion./ (or doEnEards
compata#ility; ,hisA hoEeverA is deprecated and not recommended;
oci>set>prefetch
>P&P 4?
ociZsetZpre(etch 22 ets num#er o( roEs to #e pre(etched
Kescription
#ool oci>set>prefetch > resource statement PA int roEsQ ?
ets the num#er o( roEs to #e pre(etched a(ter success(ul call to oci>e+ecute./; ,he de(ault value
(or ro7s is 1;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocisetprefetch./ instead; ,his name
still can #e usedA it Eas le(t as alias o( oci>set>prefetch./ (or doEnEards compata#ility;
,hisA hoEeverA is deprecated and not recommended;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
oci>statement>type
>P&P 4?
ociZstatementZtype 22 Returns the type o( an O5. statement
Kescription
string oci>statement>type > resource statement ?
oci>statement>type./ returns the /uery type o( statement statement as one o( the (olloEing valuesC
1; SE4ECT
0; U+D,TE
7; DE4ETE
8; 0NSERT
4; CRE,TE
K; DRO+
:; ,4TER
M; AE-0N
9; DEC4,RE
13;UN2NOIN
Parameter statement is a valid O5. statement identi(ierA returned (rom oci>parse./;
E'emplo !. oci>statement>type./ e+ample
<?php
$conn > oci%connect3"scott", "tiEer"9;
$sQl > "delete #rom emp 8here deptno > 62";

$stmt > oci%parse3$conn, $sQl9;
i# 3oci%statement%type3$stmt9 >> "LEOE*E"9 :
die3"Pou are not allo8ed to delete #rom this table<br />"9;
;

oci%close3$conn9;
?>
oci>statement>type./ returns FALSE on error;
Nota- .n P&P versions #e(ore 4;3;3 you must use ocistatementtype./ instead; ,his
name still can #e usedA it Eas le(t as alias o( oci>statement>type./ (or doEnEards
compata#ility; ,hisA hoEeverA is deprecated and not recommended;
JCI1ind1yName
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
O5.BindByName 22 +nlaza una varia#le P&P a un Placeholder de Oracle
Kescripci"n
int JCI1ind1yName > int stmtA string phZnameA miFed i varia#leA int length PA int typeQ ?
JCI1ind1yName./ enlaza la varia#le P&P ar6a1le a un placeholder de Oracle ph_name; i esta
ser* usada para entrada o salida se determinar* en tiempo de e'ecuci-nA y sera resevado el espacio
necesario de almacenamiento; +l par*metro lenEth esta#lece el tamaWo m*Fimo del enlace; i
esta#lece lenEth a 21 JCI1ind1yName./ usar* el tamaWo de la ar6a1le para esta#lecer el tamaWo
m*Fimo;
i necesita enlazar tipos de datos a#stractos >LOBDROL.DDBF.L+? necesitar* primero reservar la
memoria con la (unci-n JCINe3Kescriptor./; lenEth no se usa para tipos de datos a#stractos y
de#er)a esta#lecerse a 21; La varia#le t?pe le in(orma a OracleA /ue tipo de descriptor /ueremos usar;
Los valores posi#les sonC O5.ZBZF.L+ >Binary2File?A O5.ZBZ5F.L+ >5haracter2File?A
O5.ZBZ5LOB >5haracter2LOB?A O5.ZBZBLOB >Binary2LOB? and O5.ZBZROL.D >ROL.D?;
E'emplo !. JCIKefine1yName
<?php
/W ?R4ZindZyos example thies^diEicol.de 3KJ2CC69
inserts < resords into emp, and uses the '?74L #or updatinE the
records just a#ter the insert.
W/
$conn > ?R4OoEon3"scott","tiEer"9;
$stmt > ?R4arse3$conn,"insert into emp 3empno, ename9 ".
"=alues 3@empno,@ename9 ".
"returninE '?74L into @rid"9;
$data > array36666 >> "Oarry", CCCC >> "Zill", <<<< >> "Aim"9;
$ro8id > ?R4.e8Lescriptor3$conn,?R4%L%'?74L9;
?R4ZindZy.ame3$stmt,"@empno",&$empno,<C9;
?R4ZindZy.ame3$stmt,"@ename",&$ename,<C9;
?R4ZindZy.ame3$stmt,"@rid",&$ro8id,F6,?R4%Z%'?74L9;
$update > ?R4arse3$conn,"update emp set sal > @sal 8here '?74L > @rid"9;
?R4ZindZy.ame3$update,"@rid",&$ro8id,F6,?R4%Z%'?74L9;
?R4ZindZy.ame3$update,"@sal",&$sal,<C9;
$sal > 62222;
8hile 3list3$empno,$ename9 > each3$data99 :
?R4Execute3$stmt9;
?R4Execute3$update9;
;
$ro8idF>#ree39;
?R4Sree&tatement3$update9;
?R4Sree&tatement3$stmt9;
$stmt > ?R4arse3$conn,"select W #rom emp 8here empno in 36666,CCCC,<<<<9"9;
?R4Execute3$stmt9;
8hile 3?R4Setch4nto3$stmt,&$arr,?R4%,&&?R99 :
=ar%dump3$arr9;
;
?R4Sree&tatement3$stmt9;
/W delete our "junI" #rom the emp table.... W/
$stmt > ?R4arse3$conn,"delete #rom emp 8here empno in 36666,CCCC,<<<<9"9;
?R4Execute3$stmt9;
?R4Sree&tatement3$stmt9;
?R4OoEo##3$conn9;
?>
ocicancel
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
ocicancel 22 5ancel reading (rom cursor
Kescription
#ool ocicancel > resource stmt ?
.( you do not Eant read more data (rom a cursorA then call ocicancel./;
Nota- ,his (unction Eas renamed to oci>cancel./ a(ter P&P _^ 4;3;3; For doEnEard
compati#ility ocicancel./ can also #e used; ,his is deprecatedA hoEever;
ocicloselob
>no version in(ormationA might #e only in 5$?
ocicloselo# 22 5loses lo# descriptor
Kescription
#ool ocicloselob > void ?
Nota- ,his (unction Eas renamed to oci>lob>close./ a(ter P&P _^ 4;3;3; For doEnEard
compati#ility ocicloselob./ can also #e used; ,his is deprecatedA hoEever;
ocicollappend
>P&P 8 _^ 8;3;KA P&P 4?
ocicollappend 22 Append an o#'ect to the collection
Kescription
#ool ocicollappend > string value ?
Nota- ,his (unction Eas renamed to oci>collection>append./ a(ter P&P _^ 4;3;3; For
doEnEard compati#ility ocicollappend./ can also #e used; ,his is deprecatedA hoEever;
ocicollassign
>P&P 8 _^ 8;3;K?
ocicollassign 22 Assign a collection (rom another eFisting collection
Kescription
#ool ocicollassign > O5.25ollection (rom ?
Nota- ,his (unction Eas renamed to oci>collection>assign./ a(ter P&P _^ 4;3;3; For
doEnEard compati#ility ocicollassign./ can also #e used; ,his is deprecatedA hoEever;
ocicollassignelem
>P&P 8 _^ 8;3;KA P&P 4?
ocicollassignelem 22 Assign element val to collection at indeF ndF
Kescription
#ool ocicollassignelem > int ndFA string val ?
Nota- ,his (unction Eas renamed to oci>collection>element>assign./ a(ter P&P _^
4;3;3; For doEnEard compati#ility ocicollassignelem./ can also #e used; ,his is
deprecatedA hoEever;
ocicollgetelem
>P&P 8 _^ 8;3;KA P&P 4?
ocicollgetelem 22 Retrieve the value at collection indeF ndF
Kescription
string ocicollgetelem > int ndF ?
Nota- ,his (unction Eas renamed to oci>collection>element>get./ a(ter P&P _^ 4;3;3;
For doEnEard compati#ility ocicollgetelem./ can also #e used; ,his is deprecatedA
hoEever;
ocicollma+
>P&P 8 _^ 8;3;KA P&P 4?
ocicollmaF 22 Gets the maFimum num#er o( elements in the collection
Kescription
int ocicollma+ > void ?
Nota- ,his (unction Eas renamed to oci>collection>ma+./ a(ter P&P _^ 4;3;3; For
doEnEard compati#ility ocicollma+./ can also #e used; ,his is deprecatedA hoEever;
ocicollsi6e
>P&P 8 _^ 8;3;KA P&P 4?
ocicollsize 22 Return the size o( a collection
Kescription
int ocicollsi6e > void ?
Nota- ,his (unction Eas renamed to oci>collection>si6e./ a(ter P&P _^ 4;3;3; For
doEnEard compati#ility ocicollsi6e./ can also #e used; ,his is deprecatedA hoEever;
ocicolltrim
>P&P 8 _^ 8;3;KA P&P 4?
ocicolltrim 22 ,rim num elements (rom the end o( a collection
Kescription
#ool ocicolltrim > int num ?
Nota- ,his (unction Eas renamed to oci>collection>trim./ a(ter P&P _^ 4;3;3; For
doEnEard compati#ility ocicolltrim./ can also #e used; ,his is deprecatedA hoEever;
JCIColumnIsN)::
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
O5.5olumn.sN@LL 22 comprue#a si una una columna es NULL
Kescripci"n
int JCIColumnIsN):: > int stmtA miFed column ?
JCIColumnIsN)::./ devuelve vedadero si la columna devuelta column en el resultset de la
sentencia stmt es NULL; Puede usar el nBmero de la columna >12Based? o el nom#re de la columa
indicado por el par*metro col;
JCIColumnName
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
O5.5olumnName 22 Devuelve el nom#re de una columna;
Kescripci"n
string JCIColumnName > int stmtA int col ?
JCIColumnName./ Devuelve el nom#re de la columna correspondiente al nBmero de la columna
>12#ased? /ue es pasado;
E'emplo !. JCIColumnName
<?php
print "<H*"O><'E>Vn";
$conn > ?R4OoEon3"scott", "tiEer"9;
$stmt > ?R4arse3$conn,"select W #rom emp"9;
?R4Execute3$stmt9;
print "<*,ZOE Z?'LE'>V"6V">";
print "<*'>";
print "<*H>.ame</*H>";
print "<*H>*ype</*H>";
print "<*H>OenEth</*H>";
print "</*'>";
$ncols > ?R4.umRols3$stmt9;
#or 3 $i > 6; $i <> $ncols; $i[[ 9 :
$column%name > ?R4Rolumn.ame3$stmt,$i9;
$column%type > ?R4Rolumn*ype3$stmt,$i9;
$column%si0e > ?R4Rolumn&i0e3$stmt,$i9;
print "<*'>";
print "<*L>$column%name</*L>";
print "<*L>$column%type</*L>";
print "<*L>$column%si0e</*L>";
print "</*'>";
;
?R4Sree&tatement3$stmt9;
?R4OoEo##3$conn9;
print "</'E>";
print "</H*"O>Vn";
?>
$ea tam#i<n JCINumCols./A JCIColumnType./A y JCIColumn,i6e./;
ocicolumnprecision
>P&P 8 A P&P 4?
ocicolumnprecision 22 ,ell the precision o( a column
Kescription
int ocicolumnprecision > resource stmtA int col ?
Returns precision o( the (ield Eith col indeF >12#ased?;
For FLOA, columns precision is nonzero and scale is 210:; .( precision is 3A then columnt is
N@MB+R; +lse itHs N@MB+R>precisionA scale?;
Nota- ,his (unction Eas renamed to oci>field>precision./ a(ter P&P _^ 4;3;3; For
doEnEard compati#ility ocicolumnprecision./ can also #e used; ,his is deprecatedA
hoEever;
ocicolumnscale
>P&P 8 A P&P 4?
ocicolumnscale 22 ,ell the scale o( a column
Kescription
int ocicolumnscale > resource stmtA int col ?
Nota- ,his (unction Eas renamed to oci>field>scale./ a(ter P&P _^ 4;3;3; For
doEnEard compati#ility ocicolumnscale./ can also #e used; ,his is deprecatedA
hoEever;
JCIColumn,i6e
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
O5.5olumnize 22 devuelve el tamaWo de la columna
Kescripci"n
int JCIColumn,i6e > int stmtA miFed column ?
JCIColumn,i6e./ devuelve el tamaWo de la columna indicada por Oracle Puede utilizar el nBmero
de la columna >12Based? o el nom#re indicado en el par*metro col;
E'emplo !. JCIColumn,i6e
<?php
print "<H*"O><'E>Vn";
$conn > ?R4OoEon3"scott", "tiEer"9;
$stmt > ?R4arse3$conn,"select W #rom emp"9;
?R4Execute3$stmt9;
print "<*,ZOE Z?'LE'>V"6V">";
print "<*'>";
print "<*H>.ame</*H>";
print "<*H>*ype</*H>";
print "<*H>OenEth</*H>";
print "</*'>";
$ncols > ?R4.umRols3$stmt9;
#or 3 $i > 6; $i <> $ncols; $i[[ 9 :
$column%name > ?R4Rolumn.ame3$stmt,$i9;
$column%type > ?R4Rolumn*ype3$stmt,$i9;
$column%si0e > ?R4Rolumn&i0e3$stmt,$i9;
print "<*'>";
print "<*L>$column%name</*L>";
print "<*L>$column%type</*L>";
print "<*L>$column%si0e</*L>";
print "</*'>";
;
print "</*,ZOE>";
?R4Sree&tatement3$stmt9;
?R4OoEo##3$conn9;
print "</'E>";
print "</H*"O>Vn";
?>
$ea tam#i<n JCINumCols./A JCIColumnName./A y JCIColumn,i6e./;
JCIColumnType
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
O5.5olumn,ype 22 Devuelve el tipo de dato de una columna;
Kescripci"n
miFed JCIColumnType > int stmtA int col ?
JCIColumnType./ devuelve el tipo de dato de una columna correspondiente al nBmero de la
columna >12#ased? /ue es pasado;
E'emplo !. JCIColumnType
<?php
print "<H*"O><'E>Vn";
$conn > ?R4OoEon3"scott", "tiEer"9;
$stmt > ?R4arse3$conn,"select W #rom emp"9;
?R4Execute3$stmt9;
print "<*,ZOE Z?'LE'>V"6V">";
print "<*'>";
print "<*H>.ame</*H>";
print "<*H>*ype</*H>";
print "<*H>OenEth</*H>";
print "</*'>";
$ncols > ?R4.umRols3$stmt9;
#or 3 $i > 6; $i <> $ncols; $i[[ 9 :
$column%name > ?R4Rolumn.ame3$stmt,$i9;
$column%type > ?R4Rolumn*ype3$stmt,$i9;
$column%si0e > ?R4Rolumn&i0e3$stmt,$i9;
print "<*'>";
print "<*L>$column%name</*L>";
print "<*L>$column%type</*L>";
print "<*L>$column%si0e</*L>";
print "</*'>";
;
?R4Sree&tatement3$stmt9;
?R4OoEo##3$conn9;
print "</'E>";
print "</H*"O>Vn";
?>
$ea tam#i<n JCINumCols./A JCIColumnName./A y JCIColumn,i6e./;
ocicolumntypera3
>P&P 8 A P&P 4?
ocicolumntyperaE 22 ,ell the raE oracle data type o( a column
Kescription
int ocicolumntypera3 > resource stmtA int col ?
ocicolumntypera3./ returns OracleHs raE data type o( the (ield;
Nota- ,his (unction Eas renamed to oci>field>type>ra3./ a(ter P&P _^ 4;3;3; For
doEnEard compati#ility ocicolumntypera3./ can also #e used; ,his is deprecatedA
hoEever;
JCICommit
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
O5.5ommit 22 5on(irma transacciones pendientes
Kescripci"n
int JCICommit > int connection ?
JCICommit./ con(irma todas las sentencias pendientes para la coneFi-n con Oracle connect6on;
JCIKefine1yName
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
O5.De(ineByName 22 @sa una varia#le de P&P para el de(ine2step durante una sentencia +L+5,
Kescripci"n
int JCIKefine1yName > int stmtA string 5olumn2NameA miFed i varia#le PA int typeQ ?
JCIKefine1yName./ #usca el valor de las 5olumnas2OL dentro de varia#les P&P de(inidas por
el usuario; 5uidado /ue Oracle nom#ra todas las columnas en MA%@5@LAA mientras /ue en su
select puede usar tam#i<n minBsculas Erite loEer2case; JCIKefine1yName./ espera /ue Column=
Name est< en mayBsculas; i de(ine una varia#le /ue no eFiste en la sentecia +L+5,A no se
producir* ningBn error;
i necesita de(inir un tipo de dato a#stracto >LOBDROL.DDBF.L+? tendr* /ue alo'arlo primero
usando la (unci-n JCINe3Kescriptor./ (unction; $ea tam#i<n la (unci-n JCI1ind1yName./;
E'emplo !. JCIKefine1yName
<?php
/W ?R4Le#ineZyos example thies^diEicol.de 3KJ2C6K9 W/
$conn > ?R4OoEon3"scott","tiEer"9;
$stmt > ?R4arse3$conn,"select empno, ename #rom emp"9;
/W la de#iniciin LEZE hacerse ,.*E& del ociexecute! W/
?R4Le#ineZy.ame3$stmt,"E".?",&$empno9;
?R4Le#ineZy.ame3$stmt,"E.,"E",&$ename9;
?R4Execute3$stmt9;
8hile 3?R4Setch3$stmt99 :
echo "empno@".$empno."Vn";
echo "ename@".$ename."Vn";
;
?R4Sree&tatement3$stmt9;
?R4OoEo##3$conn9;
?>
JCIError
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
O5.+rror 22 Devuelve el Bltimo error de stmtlconnlglo#al; i no ocurre ningBn error devuelve (also;
Kescripci"n
array JCIError > Pint stmtlconnlglo#alQ ?
JCIError./ devuelve el Bltimo error encontrado; i el par*metro opcional stmtVconnVElo1al no es
usadoA es devuelto el Bltimo error encontrado; i no se encuentra ningBn errorA JCIError./
devuelve (also; JCIError./ devuelve el error como un array asociativo; +n este arrayA co#e consiste
en el c-digo de error de Oracle y messaEe en la cadena de descripci-n del error;
JCIE+ecute
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
O5.+Fecute 22 +'ecuta una sentencia
Kescripci"n
int JCIE+ecute > int statement PA int modeQ ?
JCIE+ecute./ e'ecuta una sentencia previamente analizada; >see JCIParse./?; +l par*metro
opcional mo#e le permite especi(icar el modo de e'ecuci-n >de(ault is
O5.Z5OMM.,ZONZ@55+?; i no desea /ue las sentencias se con(irmen automaticamenteA
especi(i/ue O5.ZD+FA@L, como su modo;
JCI;etch
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
O5.Fetch 22 Busca la siguiente (ila en el result2#u((er
Kescripci"n
int JCI;etch > int statement ?
JCI;etch./ Busca la siguiente (ila >para sentencias +L+5,? dentro del result2#u((er interno;
JCI;etchInto
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
O5.Fetch.nto 22 Busca la siguiente (ila dentro del result2array
Kescripci"n
int JCI;etchInto > int stmtA array i result PA int modeQ ?
JCI;etchInto./ #usca la siguiente (ila >(or +L+5, statements? dentro del array result;
JCI;etchInto./ so#reescri#ir* el contenido previo de result; Por de(ecto result contendr* un array
#asado en todas las columnas /ue no son NULL;
+l par*metro mo#e le permite cam#iar el comportamineto por de(ecto; Puede especi(icar m*s de una
(lag simplemente aWadiendolas >e'; O5.ZAO5RO5.ZR+,@RNZN@LL?; Las (lags sonC
OC0_,SSOC Devuelve un array asociativo;
OC0_NUM Devuelve un array numerado empezando en 1; >POR
D+F+5,O?
OC0_RETURN_NU44S Devuelve columnas vacias;
OC0_RETURN_4OAS Devuelve el valor de un LOB en vez de el descriptor;
JCI;etch,tatement
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
O5.Fetchtatement 22 Busca todas la (ilas de un resultset dentro de un array;
Kescripci"n
int JCI;etch,tatement > int stmtA array i varia#le ?
JCI;etch,tatement./ #usca todas las (ilas de un resultset dentro de un array de(inido por el
usuario; JCI;etch,tatement./ devuelve el numero de (ilas #uscadas;
E'emplo !. JCI;etch,tatement
<?php
/W ?R4Setch&tatement example mbritton^=erinet.com 3KK2GC19 W/
$conn > ?R4OoEon3"scott","tiEer"9;
$stmt > ?R4arse3$conn,"select W #rom emp"9;
?R4Execute3$stmt9;
$nro8s > ?R4Setch&tatement3$stmt,$results9;
i# 3 $nro8s > 2 9 :
print "<*,ZOE Z?'LE'>V"6V">Vn";
print "<*'>Vn";
8hile 3 list3 $Iey, $=al 9 > each3 $results 9 9 :
print "<*H>$Iey</*H>Vn";
;
print "</*'>Vn";

#or 3 $i > 2; $i < $nro8s; $i[[ 9 :
reset3$results9;
print "<*'>Vn";
8hile 3 $column > each3$results9 9 :
$data > $column)M=alueM/;
print "<*L>$data)$i/</*L>Vn";
;
print "</*'>Vn";
;
print "</*,ZOE>Vn";
; else :
echo ".o data #ound<Z'>Vn";
;
print "$nro8s 'ecords &elected<Z'>Vn";

?R4Sree&tatement3$stmt9;
?R4OoEo##3$conn9;
?>
ocifreecollection
>P&P 8 _^ 8;1;3A P&P 4?
oci(reecollection 22 Deletes collection o#'ect
Kescription
#ool ocifreecollection > void ?
Nota- ,his (unction Eas renamed to oci>free>collection./ a(ter P&P _^ 4;3;3; For
doEnEard compati#ility ocifreecollection./ can also #e used; ,his is deprecatedA
hoEever;
JCI;reeCursor
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
O5.Free5ursor 22 Li#era todos los recursos asociados con cursor;
Kescripci"n
int JCI;reeCursor > int stmt ?
JCI;reeCursor./ devuelve cierto si la operacion se lleva a ca#oA o (also en caso contrario;
ocifreedesc
>P&P 8 A P&P 4?
oci(reedesc 22 Deletes a large o#'ect descriptor
Kescription
#ool ocifreedesc > void ?
ocifreedesc./ deletes a large o#'ect descriptor; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
Nota- ,his (unction Eas renamed to oci>free>descriptor./ a(ter P&P _^ 4;3;3; For
doEnEard compati#ility ocifreedesc./ can also #e used; ,his is deprecatedA hoEever;
JCI;ree,tatement
>P&P 7_^ 7;3;4A P&P 8 A P&P 4?
O5.Freetatement 22 Li#era todos los recursos asociados con una sentencia;
Kescripci"n
int JCI;ree,tatement > int stmt ?
JCI;ree,tatement./ devuelve cierto si la operacion se lleva a ca#oA o (also en caso contrario;
lob(Gget1uffering
>no version in(ormationA might #e only in 5$?
lo#2_getBu((ering 22 Returns current state o( #u((ering (or large o#'ect
Kescription
#ool lob(Gget1uffering > void ?
Returns FALSE i( #u((ering (or the large o#'ect is o(( and TRUE i( #u((ering is used;
ee also ocisetbufferinglob./;
JCIInternalKebug
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
O5..nternalDe#ug 22 &a#ilita o desha#ilita la salida del depurador interno; Por de(ecto este est*
desha#iltado
Kescripci"n
void JCIInternalKebug > int ono(( ?
JCIInternalKebug./ ha#ilita la salida del depurador interno; Asigne 3 a ono99 para desha#ilitar la
salida y 1 para ha#ilitarla;
ociloadlob
>P&P 8 A P&P 4?
ociloadlo# 22 Loads a large o#'ect
Kescription
string ociloadlob > void ?
Nota- ,his (unction Eas renamed to oci>lob>load./ a(ter P&P _^ 4;3;3; For doEnEard
compati#ility ociloadlob./ can also #e used; ,his is deprecatedA hoEever;
JCI:ogJff
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
O5.LogO(( 22 ,ermina la coneFion con Oracle
Kescripci"n
int JCI:ogJff > int connection ?
JCI:ogJff./ cierra una coneFi-n con Oracle;
ocilogon
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
ocilogon 22 +sta#lece una coneFi-n con Oracle
Kescripci"n
resource ocilogon > string nom#reZusuarioA string contrasenya PA string #d PA string
'uegoZcaracteresQQ ?
ocilogon./ devuelve un identi(icador de coneFi-n necesario para la mayor)a de las dem*s llamadas
O5.; +l tercer par*metro opcional puede contener el nom#re de la instancia local a Oracle o el
nom#re de una entrada en tnsnames;ora con la cual desea conectarse; i el tercer par*metro opcional
no se especi(icaA P&P usa las varia#les de entorno ORA5L+Z.D >instancia de Oracle? o
,LOZ,AS >tnsnames;ora? para determinar a cu*l #ase de datos conectarse;
i usais Oracle server v;9;0 - superiorA podeis de(inir el parametro charsetA el cual ser* utilizado en
la nueva coneFi-n; i utilizais una version ` 9;0A este par*metro ser* ignorado y la varia#le de
entorno NLZLANG ser* usada en su lugar;
Las coneFiones son compartidas al nivel de p*gina cuando se use ocilogon./; +sto /uiere decir /ue
los procesos =commit= y =roll#ac"= se aplican a todas las transacciones a#iertas en la p*ginaA incluso
si usted ha creado coneFiones mBltiples;
+ste e'emplo demuestra c-mo son compartidas las coneFiones;
E'emplo !. E'emplo de ocilogon./
<?php
echo "<pre>";
$bd > "";
$c6 > ociloEon3"scott", "tiEer", $bd9;
$cC > ociloEon3"scott", "tiEer", $bd9;
#unction crear%tabla3$con9
:
$sentencia > ociparse3$con, "create table scott.hallo 3test =archarC3G199"9;
ociexecute3$sentencia9;
echo $con . " tabla creadaVnVn";
;
#unction abandonar%tabla3$con9
:
$sentencia > ociparse3$con, "drop table scott.hallo"9;
ociexecute3$sentencia9;
echo $con . " tabla abandonadaVnVn";
;
#unction insertar%datos3$con9
:
$sentencia > ociparse3$con, "insert into scott.hallo
=alues3M$conM TT M M TT to%char3sysdate,MLLF"?.FPP HHC1@"4@&&M99"9;
ociexecute3$sentencia, ?R4%LES,+O*9;
echo $con . " datos insertados en halloVnVn";
;
#unction eliminar%datos3$con9
:
$sentencia > ociparse3$con, "delete #rom scott.hallo"9;
ociexecute3$sentencia, ?R4%LES,+O*9;
echo $con . " datos eliminados de halloVnVn";
;
#unction commit3$con9
:
ocicommit3$con9;
echo $con . " committedVnVn";
;
#unction rollbacI3$con9
:
ocirollbacI3$con9;
echo $con . " rollbacIVnVn";
;
#unction seleccionar%datos3$con9
:
$sentencia > ociparse3$con, "select W #rom scott.hallo"9;
ociexecute3$sentencia, ?R4%LES,+O*9;
echo $con."FFFFseleccionandoVnVn";
8hile 3oci#etch3$sentencia99 :
echo $con . " )" . ociresult3$sentencia, "*E&*"9 . "/VnVn";
;
echo $con . "FFFFlistoVnVn";
;
crear%tabla3$c69;
insertar%datos3$c69; // 4nsertar una #ila usando c6
insertar%datos3$cC9; // 4nsertar una #ila usando cC
seleccionar%datos3$c69; // &on de=ueltos los resultados de ambas inserciones
seleccionar%datos3$cC9;
rollbacI3$c69; // 'ollbacI usando c6
seleccionar%datos3$c69; // ,mbas inserciones han sido de=ueltas
seleccionar%datos3$cC9;
insertar%datos3$cC9; // 4nsertar una #ila usando cC
$ea tam#i<n ociplogon./ y ocinlogon./;
ocine3collection
>P&P 8 _^ 8;3;KA P&P 4?
ocineEcollection 22 .nitialize a neE collection
Kescription
O5.25ollection ocine3collection > resource connectionA string tdo PA string schemaQ ?
Nota- ,his (unction Eas renamed to oci>ne3>collection./ a(ter P&P _^ 4;3;3; For
doEnEard compati#ility ocine3collection./ can also #e used; ,his is deprecatedA
hoEever;
JCINe3Cursor
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
O5.NeE5ursor 22 devuelve un cursor nuevo >tatement2&andle? 2 use esto para enlazar re(2cursorsa
Kescripci"n
int JCINe3Cursor > int conn ?
JCINe3Cursor./ allocates a neE statement handle on the speci(ied connection;
E'emplo !. )sando un ME; C)M,JM de un procedimiento almacenado
<?php
// suppose your stored procedure in#o.output returns a re# cursor in @data
$conn > ?R4OoEon3"scott","tiEer"9;
$curs > ?R4.e8Rursor3$conn9;
$stmt > ?R4arse3$conn,"beEin in#o.output3@data9; end;"9;
ocibindbyname3$stmt,"data",&$curs,F6,?R4%Z%R+'&?'9;
ociexecute3$stmt9;
ociexecute3$curs9;
8hile 3?R4Setch4nto3$curs,&$data99 :
=ar%dump3$data9;
;

?R4SreeRursor3$stmt9;
?R4Sree&tatement3$curs9;
?R4OoEo##3$conn9;
?>
E'emplo *. )sando un ME; C)M,JM en una sentencia select
<?php
print "<H*"O><Z?LP>";
$conn > ?R4OoEon3"scott","tiEer"9;
$count%cursor > "R+'&?'3select count3empno9 num%emps #rom emp " .
"8here emp.deptno > dept.deptno9 as E"R.* #rom dept";
$stmt > ?R4arse3$conn,"select deptno,dname,$count%cursor"9;
ociexecute3$stmt9;
print "<*,ZOE Z?'LE'>V"6V">";
print "<*'>";
print "<*H>LE* .,"E</*H>";
print "<*H>LE* U</*H>";
print "<*H>U E"O?PEE&</*H>";
print "</*'>";
8hile 3?R4Setch4nto3$stmt,&$data,?R4%,&&?R99 :
print "<*'>";
$dname > $data)"L.,"E"/;
$deptno > $data)"LE*.?"/;
print "<*L>$dname</*L>";
print "<*L>$deptno</*L>";
ociexecute3$data) "E"R.*" /9;
8hile 3?R4Setch4nto3$data) "E"R.*" /,&$subdata,?R4%,&&?R99 :
$num%emps > $subdata)".+"%E"&"/;
print "<*L>$num%emps</*L>";
;
print "</*'>";
;
print "</*,ZOE>";
print "</Z?LP></H*"O>";
?R4Sree&tatement3$stmt9;
?R4OoEo##3$conn9;
?>
JCINe3Kescriptor
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
O5.NeEDescriptor 22 .nicializa un nuevo descriptor vac)o LOBDF.L+ >LOB por de(ecto?
Kescripci"n
string JCINe3Kescriptor > int connection PA int typeQ ?
JCINe3Kescriptor./ Reserva espacio para mantener descriptores o localizadores LOB; Los
valores v*lidos para el tipo t?pe son O5.ZDZF.L+A O5.ZDZLOBA O5.ZDZROL.D; Para
descriptores LOBA los m<todos loadA saveA y save(ile est*n asociados con el descriptorA para BF.L+
s-lo el m<todo load eFiste; $ea el segundo e'emplo;
E'emplo !. JCINe3Kescriptor
<?php
/W *his script is desiEned to be called #rom a H*"O #orm.
W 4t expects $user, $pass8ord, $table, $8here, and $commitsi0e
W to be passed in #rom the #orm. *he script then deletes
W the selected ro8s usinE the '?74L and commits a#ter each
W set o# $commitsi0e ro8s. 3+se 8ith care, there is no rollbacI9
W/
$conn > ?R4OoEon3$user, $pass8ord9;
$stmt > ?R4arse3$conn,"select ro8id #rom $table $8here"9;
$ro8id > ?R4.e8Lescriptor3$conn,?R4%L%'?74L9;
?R4Le#ineZy.ame3$stmt,"'?74L",&$ro8id9;
?R4Execute3$stmt9;
8hile 3 ?R4Setch3$stmt9 9 :
$nro8s > ?R4'o8Rount3$stmt9;
$delete > ?R4arse3$conn,"delete #rom $table 8here '?74L > @rid"9;
?R4ZindZy.ame3$delete,"@rid",&$ro8id,F6,?R4%Z%'?74L9;
?R4Execute3$delete9;
print "$nro8sVn";
i# 3 3$nro8s \ $commitsi0e9 >> 2 9 :
?R4Rommit3$conn9;
;
;
$nro8s > ?R4'o8Rount3$stmt9;
print "$nro8s deleted...Vn";
?R4Sree&tatement3$stmt9;
?R4OoEo##3$conn9;
?>
<?php
/W *his script demonstrates #ile upload to O?Z columns
W *he #orm#ield used #or this example looIs liIe this
W <#orm action>"upload.php<" method>"post" enctype>"multipart/#ormFdata">
W <input type>"#ile" name>"lob%upload">
W ...
W/
i#3!isset3$lob%upload9 TT $lob%upload >> MnoneM9:
?>
<#orm action>"upload.php<" method>"post" enctype>"multipart/#ormFdata">
+pload #ile@ <input type>"#ile" name>"lob%upload"><br>
<input type>"submit" =alue>"+pload"> F <input type>"reset">
</#orm>
<?php
; else :
// $lob%upload contains the temporary #ilename o# the uploaded #ile
$conn > ?R4OoEon3$user, $pass8ord9;
$lob > ?R4.e8Lescriptor3$conn, ?R4%L%O?Z9;
$stmt > ?R4arse3$conn,"insert into $table 3id, the%blob9
=alues3my%seQ..EX*(,O, E"*P%ZO?Z399 returninE the%blob into @the%blob"9;
?R4ZindZy.ame3$stmt, M@the%blobM, &$lob, F6, ?R4%Z%ZO?Z9;
?R4Execute3$stmt9;
i#3$lobF>sa=e#ile3$lob%upload99:
?R4Rommit3$conn9;
echo "Zlob success#ully uploadedVn";
;else:
echo "RouldnMt upload ZlobVn";
;
?R4SreeLescriptor3$lob9;
?R4Sree&tatement3$stmt9;
?R4OoEo##3$conn9;
;
?>
ocinlogon
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
ocinlogon 22 +sta#lece una nueva coneFi-n con Oracle
Kescripci"n
resource ocinlogon > string nom#reZusuarioA string contrasenya PA string #d PA string
'uegoZcaracteresQQ ?
ocinlogon./ crea una nueva coneFi-n con una #ase de datos Oracle M e inicia una sesi-n; +l tercer
par*metro opcional puede contener el nom#re de la instancia a Oracle o el nom#re de una entrada en
tnsnames;ora a la cual desea conectarse; i el tercer par*metro opcional no es especi(icadoA P&P usa
las varia#les de entorno ORA5L+Z.D >instancia de Oracle? o ,LOZ,AS >tnsnames;ora? para
determinar a cu*l #ase de datos conectarse;
ocinlogon./ o#liga a crear una nueva coneFi-n; De#e usar usada si necesita aislar un con'unto de
transacciones; Por de(ectoA las coneFiones son compartidas al nivel de p*gina si usa ocilogon./ o al
nivel de proceso del servidor Ee# si usa ociplogon./; i tiene mBltiples coneFiones a#iertas usando
ocinlogon./A todos los procesos =commit= y =roll#ac"= se aplican s-lo a la coneFi-n especi(icada;
i usais Oracle server v;9;0 - superiorA podeis de(inir el parametro charsetA el cual ser* utilizado en
la nueva coneFi-n; i utilizais una version ` 9;0A este par*metro ser* ignorado y la varia#le de
entorno NLZLANG ser* usada en su lugar;
+ste e'emplo demuestra el modo en /ue las coneFiones son separadas;
E'emplo !. E'emplo de ocinlogon./
<?php
echo "<html><pre>";
$bd > "";
$c6 > ociloEon3"scott", "tiEer", $bd9;
$cC > ocinloEon3"scott", "tiEer", $bd9;
#unction crear%tabla3$con9
:
$sentencia > ociparse3$con, "create table scott.hallo 3test
=archarC3G199"9;
ociexecute3$sentencia9;
echo $con . " tabla creadaVnVn";
;
#unction abandonar%tabla3$con9
:
$sentencia > ociparse3$con, "drop table scott.hallo"9;
ociexecute3$sentencia9;
echo $con . " tabla abandonadaVnVn";
;
#unction insertar%datos3$con9
:
$sentencia > ociparse3$con, "insert into scott.hallo
=alues3M$conM TT M M TT to%char3sysdate,MLLF"?.FPP HHC1@"4@&&M99"9;
ociexecute3$sentencia, ?R4%LES,+O*9;
echo $con . " datos insertados en halloVnVn";
;
#unction eliminar%datos3$con9
:
$sentencia > ociparse3$con, "delete #rom scott.hallo"9;
ociexecute3$sentencia, ?R4%LES,+O*9;
echo $con . " datos eliminados de halloVnVn";
;
#unction commit3$con9
:
ocicommit3$con9;
echo $con . " aplicadoVnVn";
;
#unction rollbacI3$con9
:
ocirollbacI3$con9;
echo $con . " rollbacIVnVn";
;
#unction seleccionar%datos3$con9
:
$sentencia > ociparse3$con, "select W #rom scott.hallo"9;
ociexecute3$sentencia, ?R4%LES,+O*9;
echo $con . "FFFFseleccionandoVnVn";
8hile 3oci#etch3$sentencia99 :
echo $con . " <" . ociresult3$sentencia, "*E&*"9 . ">VnVn";
;
echo $con . "FFFFlistoVnVn";
;
crear%tabla3$c69;
insertar%datos3$c69;
seleccionar%datos3$c69;
seleccionar%datos3$cC9;
rollbacI3$c69;
seleccionar%datos3$c69;
seleccionar%datos3$cC9;
insertar%datos3$cC9;
$ea tam#i<n ocilogon./ y ociplogon./;
JCINumCols
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
O5.Num5ols 22 Devuelve el nBmero de columnas resultantes en una sentencia
Kescripci"n
int JCINumCols > int stmt ?
JCINumCols./ devuelve el nBmero de columnas en una sentencia
E'emplo !. JCINumCols
<?php
print "<H*"O><'E>Vn";
$conn > ?R4OoEon3"scott", "tiEer"9;
$stmt > ?R4arse3$conn,"select W #rom emp"9;
?R4Execute3$stmt9;
8hile 3 ?R4Setch3$stmt9 9 :
print "Vn";
$ncols > ?R4.umRols3$stmt9;
#or 3 $i > 6; $i <> $ncols; $i[[ 9 :
$column%name > ?R4Rolumn.ame3$stmt,$i9;
$column%=alue > ?R4'esult3$stmt,$i9;
print $column%name . M@ M . $column%=alue . "Vn";
;
print "Vn";
;
?R4Sree&tatement3$stmt9;
?R4OoEo##3$conn9;
print "</'E>";
print "</H*"O>Vn";
?>
JCIParse
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
O5.Parse 22 Analiza una consulta y devuelve una sentencia
Kescripci"n
int JCIParse > int connA strint /uery ?
JCIParse./ analiza la @uer? usando conn; Devuelve el identi(icador de la sentencia si la consulta es
v*lidaA y (also si no lo es; La @uer? puede ser cual/uier sentencia OL v*lida;
ociplogon
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
ociplogon 22 5onectarse con una #ase de datos Oracle usando una coneFi-n persistente
Kescripci"n
resource ociplogon > string nom#reZusuarioA string contrasenya PA string #d PA string
'uegoZcaracteresQQ ?
ociplogon./ crea una coneFi-n persistente con una #ase de datos Oracle M e inicia una sesi-n; +l
tercer par*metro opcional puede contener el nom#re de la instancia local a Oracle o el nom#re de la
entrada en tnsnames;ora a la cual desea conectarse; i el tercer par*metro opcional no se especi(icaA
P&P usa las varia#les de entorno OR,C4E_S0D >instancia de Oracle? o TIO_T,S2 >tnsnames;ora?
para determinar a cu*l #ase de datos conectarse;
i usais Oracle server v;9;0 - superiorA podeis de(inir el parametro charsetA el cual ser* utilizado en
la nueva coneFi-n; i utilizais una version ` 9;0A este par*metro ser* ignorado y la varia#le de
entorno NLZLANG ser* usada en su lugar;
$ea tam#i<n ocilogon./ y ocinlogon./;
JCIMesult
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
O5.Result 22 Devuelve el valor de una columna en la (ila #uscada
Kescripci"n
miFed JCIMesult > int statementA miFed column ?
JCIMesult./ devuelve el valor de la columna column de la (ila actual >vea JCI;etch./?;JCIMesult
./ devolver* todo como una cadena eFcepto para los tipo de datos a#stractos >ROL.DsA LOBs and
F.L+s?;
JCIMollbacB
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
O5.Roll#ac" 22 Resta#lece todas las transaciones sin con(irmar
Kescripci"n
int JCIMollbacB > int connection ?
JCIMollbacB./ resta#lece todas las transacciones sin con(irmar para la coneFi-n Oracle
connect6on;
JCIMo3Count
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
O5.RoE5ount 22 O#tiene el nBmero de (ilas a(ectadas
Kescripci"n
int JCIMo3Count > int statement ?
JCIMo3Count./ devuelve el nBmero de (ilas a(ectadasA por e'; en sentencias de actualizaci-n; a
+sta (unci-n no indicar* el nBmero de de (ilas /ue devuelve una sentencia +L+5,a
E'emplo !. JCIMo3Count
<?php
print "<H*"O><'E>";
$conn > ?R4OoEon3"scott","tiEer"9;
$stmt > ?R4arse3$conn,"create table empC as select W #rom emp"9;
?R4Execute3$stmt9;
print ?R4'o8Rount3$stmt9 . " ro8s inserted.<Z'>";
?R4Sree&tatement3$stmt9;
$stmt > ?R4arse3$conn,"delete #rom empC"9;
?R4Execute3$stmt9;
print ?R4'o8Rount3$stmt9 . " ro8s deleted.<Z'>";
?R4Rommit3$conn9;
?R4Sree&tatement3$stmt9;
$stmt > ?R4arse3$conn,"drop table empC"9;
?R4Execute3$stmt9;
?R4Sree&tatement3$stmt9;
?R4OoE?##3$conn9;
print "</'E></H*"O>";
?>
ocisa5elob
>P&P 8 A P&P 4?
ocisavelo# 22 aves a large o#'ect
Kescription
#ool ocisa5elob > void ?
Nota- ,his (unction Eas renamed to oci>lob>sa5e./ a(ter P&P _^ 4;3;3; For doEnEard
compati#ility ocisa5elob./ can also #e used; ,his is deprecatedA hoEever;
ocisa5elobfile
>P&P 8 A P&P 4?
ocisavelo#(ile 22 aves a large o#'ect (ile
Kescription
#ool ocisa5elobfile > void ?
Nota- ,his (unction Eas renamed to oci>lob>import./ a(ter P&P _^ 4;3;3; For
doEnEard compati#ility ocisa5elobfile./ can also #e used; ,his is deprecatedA hoEever;
JCI,er5erCersion
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
O5.erver$ersion 22 Devuelve una cadena conteniendo in(ormaci-n a cerca de la version del
servidor;
Kescripci"n
string JCI,er5erCersion > int conn ?
E'emplo !. JCI,er5erCersion
<?php
$conn > ?R4OoEon3"scott","tiEer"9;
print "&er=er (ersion@ " . ?R4&er=er(ersion3$conn9;
?R4OoE?##3$conn9;
?>
lob(Gset1uffering
>no version in(ormationA might #e only in 5$?
lo#2_setBu((ering 22 5hanges current state o( #u((ering (or large o#'ect
Kescription
#ool lob(Gset1uffering > #ool onZo(( ?
lob(Gset1uffering./ sets the #u((ering (or the large o#'ectA depending on the value o( the on_o99
parameter; Repeated calls to lob(Gset1uffering./ Eith the same (lag Eill return TRUE; ,he values
(or on_o99 areC TRUE (or on and FALSE (or o((;
@se o( this (unction may provide per(ormance improvements #y #u((ering small reads and Erites o(
LOBs #y reducing the num#er o( netEor" round2trips and LOB versions; oci>lob>flush./ should #e
used to (lush #u((ersA Ehen you have (inished Eor"ing Eith the large o#'ect;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also ocigetbufferinglob./;
ocisetprefetch
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
ocisetpre(etch 22 ets num#er o( roEs to #e pre(etched
Kescription
#ool ocisetprefetch > resource stmtA int roEs ?
ets the num#er o( top level roEs to #e pre(etched to ro7s; ,he de(ault value (or ro7s is 1 roE;
Nota- ,his (unction Eas renamed to oci>set>prefetch./ a(ter P&P _^ 4;3;3; For
doEnEard compati#ility ocisetprefetch./ can also #e used; ,his is deprecatedA hoEever;
JCI,tatementType
>P&P 7_^ 7;3;4A P&P 8 A P&P 4?
O5.tatement,ype 22 Devuelve el tipo de una sentencia O5.;
Kescripci"n
string JCI,tatementType > int stmt ?
JCI,tatementType./ devuelve uno de los siguiente valoresC
1; =+L+5,=
0; =@PDA,+=
7; =D+L+,+=
8; =.N+R,=
4; =5R+A,+=
K; =DROP=
:; =AL,+R=
M; =B+G.N=
9; =D+5LAR+=
13;=@NSNOLN=
E'emplo !. Code e+amples
<?php
print "<H*"O><'E>";
$conn > ?R4OoEon3"scott","tiEer"9;
$sQl > "delete #rom emp 8here deptno > 62";

$stmt > ?R4arse3$conn,$sQl9;
i# 3 ?R4&tatement*ype3$stmt9 >> "LEOE*E" 9 :
die "Pou are not allo8ed to delete #rom this table<Z'>";
;

?R4OoEo##3$conn9;
print "</'E></H*"O>";
?>
oci3ritelobtofile
>P&P 8 A P&P 4?
ociEritelo#to(ile 22 aves a large o#'ect (ile
Kescription
#ool oci3ritelobtofile > Pstring (ilename PA int start PA int lengthQQQ ?
Nota- ,his (unction Eas renamed to oci>lob>e+port./ a(ter P&P _^ 4;3;3; For
doEnEard compati#ility oci3ritelobtofile./ can also #e used; ,his is deprecatedA
hoEever;
oci3ritetemporarylob
>no version in(ormationA might #e only in 5$?
ociEritetemporarylo# 22 Lrites temporary #lo#
Kescription
#ool oci3ritetemporarylob > string var PA int lo#ZtypeQ ?
Nota- ,his (unction Eas renamed to oci>lob>3rite>temporary./ a(ter P&P _^ 4;3;3;
For doEnEard compati#ility oci3ritetemporarylob./ can also #e used; ,his is
deprecatedA hoEever;
:IIICIII. JpenA: Audio 1indings
Introducci"n
Plat(orm independent audio #indings; Re/uires the OpenAL li#rary;
Instalaci"n
+sta eFtension P+5L no esta ligada a P&P;
Mas in(ormacion so#re nuevos lanzamientosA descargas (icheros de (uentesA in(ormacion so#re los
responsa#les asi como un H5&ANG+LOGHA se puede encontrar a/uiC
httpCDDpecl;php;netDpac"ageDopenal;
Podeis descargar esta DLL de las eFtensiones P+5L desde la pagina P&P DoEnloads o desde
httpCDDsnaps;php;netD;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
,his eFtension de(ines (our resource typesC Open ,4LDe6ceM 2 Returned #y openal>de5ice>open./A
Open ,4LConte8tM 2 Returned #y openal>conte+t>create./A Open ,4LAu99erM 2 Returned #y
openal>buffer>create./A and Open ,4LSourceM 2 Returned #y openal>source>create./;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
ALC_FRE.UENCY >integer?
5onteFt Attri#ute
ALC_REFRESH >integer?
5onteFt Attri#ute
ALC_SYNC >integer?
5onteFt Attri#ute
AL_FRE.UENCY >integer?
Bu((er etting
AL_(ITS >integer?
Bu((er etting
AL_CHANNELS >integer?
Bu((er etting
AL_SI/E >integer?
Bu((er etting
AL_(UFFER >integer?
ourceDListener etting >.nteger?
AL_SOURCE_RELATI$E >integer?
ourceDListener etting >.nteger?
AL_SOURCE_STATE >integer?
ourceDListener etting >.nteger?
AL_PITCH >integer?
ourceDListener etting >Float?
AL_#AIN >integer?
ourceDListener etting >Float?
AL_MIN_#AIN >integer?
ourceDListener etting >Float?
AL_MA%_#AIN >integer?
ourceDListener etting >Float?
AL_MA%_DISTANCE >integer?
ourceDListener etting >Float?
AL_ROLLOFF_FACTOR >integer?
ourceDListener etting >Float?
AL_CONE_OUTER_#AIN >integer?
ourceDListener etting >Float?
AL_CONE_INNER_AN#LE >integer?
ourceDListener etting >Float?
AL_CONE_OUTER_AN#LE >integer?
ourceDListener etting >Float?
AL_REFERENCE_DISTANCE >integer?
ourceDListener etting >Float?
AL_POSITION >integer?
ourceDListener etting >Float $ector?
AL_$ELOCITY >integer?
ourceDListener etting >Float $ector?
AL_DIRECTION >integer?
ourceDListener etting >Float $ector?
AL_ORIENTATION >integer?
ourceDListener etting >Float $ector?
AL_FORMAT_MONO, >integer?
P5M Format
AL_FORMAT_MONO)1 >integer?
P5M Format
AL_FORMAT_STEREO, >integer?
P5M Format
AL_FORMAT_STEREO)1 >integer?
P5M Format
AL_INITIAL >integer?
ource tate
AL_PLAYIN# >integer?
ource tate
AL_PAUSED >integer?
ource tate
AL_STOPPED >integer?
ource tate
AL_LOOPIN# >integer?
ource tate
AL_TRUE >integer?
Boolean value recognized #y OpenAL
AL_FALSE >integer?
Boolean value recognized #y OpenAL
Tabla de contenidos
openalZ#u((erZcreate 22 Generate OpenAL #u((er
openalZ#u((erZdata 22 Load a #u((er Eith data
openalZ#u((erZdestroy 22 Destroys an OpenAL #u((er
openalZ#u((erZget 22 Retrieve an OpenAL #u((er property
openalZ#u((erZloadEav 22 Load a ;Eav (ile into a #u((er
openalZconteFtZcreate 22 5reate an audio processing conteFt
openalZconteFtZcurrent 22 Ma"e the speci(ied conteFt current
openalZconteFtZdestroy 22 Destroys a conteFt
openalZconteFtZprocess 22 Process the speci(ied conteFt
openalZconteFtZsuspend 22 uspend the speci(ied conteFt
openalZdeviceZclose 22 5lose an OpenAL device
openalZdeviceZopen 22 .nitialize the OpenAL audio layer
openalZlistenerZget 22 Retrieve a listener property
openalZlistenerZset 22 et a listener property
openalZsourceZcreate 22 Generate a source resource
openalZsourceZdestroy 22 Destroy a source resource
openalZsourceZget 22 Retrieve an OpenAL source property
openalZsourceZpause 22 Pause the source
openalZsourceZplay 22 tart playing the source
openalZsourceZreEind 22 ReEind the source
openalZsourceZset 22 et source property
openalZsourceZstop 22 top playing the source
openalZstream 22 Begin streaming on a source
openal>buffer>create
>no version in(ormationA might #e only in 5$?
openalZ#u((erZcreate 22 Generate OpenAL #u((er
Kescripci"n
resource openal>buffer>create > void ?
Calores retornados
Returns an Open AL>Bu((er? resource on success or FALSE on (ailure;
Cer tambi%n
openal>buffer>load3a5
./
openal>buffer>data./
openal>buffer>data
>no version in(ormationA might #e only in 5$?
openalZ#u((erZdata 22 Load a #u((er Eith data
Kescripci"n
#ool openal>buffer>data > resource #u((erA int (ormatA string dataA int (re/ ?
:ista de parmetros
1u99er
An Open AL>Bu((er? resource >previously created #y openal>buffer>create./?;
9ormat
Format o( #ataA one o(C AL_FORMAT_MONO,A AL_FORMAT_MONO)1A
AL_FORMAT_STEREO,A y AL_FORMAT_STEREO)1
#ata
Bloc" o( #inary audio data in the 9ormat and 9re@ speci(ied;
9re7
Fre/uency o( #ata given in &z;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>buffer>load3a5./
openal>stream./
openal>buffer>destroy
>no version in(ormationA might #e only in 5$?
openalZ#u((erZdestroy 22 Destroys an OpenAL #u((er
Kescripci"n
#ool openal>buffer>destroy > resource #u((er ?
:ista de parmetros
1u99er
An Open AL>Bu((er? resource >previously created #y openal>buffer>create./?;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>buffer>create./
openal>buffer>get
>no version in(ormationA might #e only in 5$?
openalZ#u((erZget 22 Retrieve an OpenAL #u((er property
Kescripci"n
int openal>buffer>get > resource #u((erA int property ?
:ista de parmetros
1u99er
An Open AL>Bu((er? resource >previously created #y openal>buffer>create./?;
propert?
peci(ic propertyA one o(C AL_FRE.UENCYA AL_(ITSA AL_CHANNELSA y AL_SI/E;
Calores retornados
Returns an integer value appropriate to the propert? re/uested or FALSE on (ailure;
Cer tambi%n
openal>buffer>create./
openal>buffer>load3a5
>no version in(ormationA might #e only in 5$?
openalZ#u((erZloadEav 22 Load a ;Eav (ile into a #u((er
Kescripci"n
#ool openal>buffer>load3a5 > resource #u((erA string Eav(ile ?
:ista de parmetros
1u99er
An Open AL>Bu((er? resource >previously created #y openal>buffer>create./?;
7a96le
Path to ;LA$ (ile on local (ile system;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>buffer>data./
openal>stream./
openal>conte+t>create
>no version in(ormationA might #e only in 5$?
openalZconteFtZcreate 22 5reate an audio processing conteFt
Kescripci"n
resource openal>conte+t>create > resource device ?
:ista de parmetros
#e6ce
An Open AL>Device? resource >previously created #y openal>de5ice>open./?;
Calores retornados
Returns an Open AL>5onteFt? resource on success or FALSE on (ailure;
Cer tambi%n
openal>de5ice>open./
openal>conte+t>destroy./
openal>conte+t>current
>no version in(ormationA might #e only in 5$?
openalZconteFtZcurrent 22 Ma"e the speci(ied conteFt current
Kescripci"n
#ool openal>conte+t>current > resource conteFt ?
:ista de parmetros
conte8t
An Open AL>5onteFt? resource >previously created #y openal>conte+t>create./?;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>conte+t>create./
openal>conte+t>destroy
>no version in(ormationA might #e only in 5$?
openalZconteFtZdestroy 22 Destroys a conteFt
Kescripci"n
#ool openal>conte+t>destroy > resource conteFt ?
:ista de parmetros
conte8t
An Open AL>5onteFt? resource >previously created #y openal>conte+t>create./?;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>conte+t>create./
openal>conte+t>process
>no version in(ormationA might #e only in 5$?
openalZconteFtZprocess 22 Process the speci(ied conteFt
Kescripci"n
#ool openal>conte+t>process > resource conteFt ?
:ista de parmetros
conte8t
An Open AL>5onteFt? resource >previously created #y openal>conte+t>create./?;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>conte+t>create./
openal>conte+t>current./
openal>conte+t>suspend./
openal>conte+t>suspend
>no version in(ormationA might #e only in 5$?
openalZconteFtZsuspend 22 uspend the speci(ied conteFt
Kescripci"n
#ool openal>conte+t>suspend > resource conteFt ?
:ista de parmetros
conte8t
An Open AL>5onteFt? resource >previously created #y openal>conte+t>create./?;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>conte+t>create./
openal>conte+t>current./
openal>conte+t>process./
openal>de5ice>close
>no version in(ormationA might #e only in 5$?
openalZdeviceZclose 22 5lose an OpenAL device
Kescripci"n
#ool openal>de5ice>close > resource device ?
:ista de parmetros
#e6ce
An Open AL>Device? resource >previously created #y openal>de5ice>open./? to #e closed;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>de5ice>open./
openal>de5ice>open
>no version in(ormationA might #e only in 5$?
openalZdeviceZopen 22 .nitialize the OpenAL audio layer
Kescripci"n
resource openal>de5ice>open > Pstring deviceZdescQ ?
:ista de parmetros
#e6ce_#esc
Open an audio device optionally speci(ied #y #e6ce_#esc; .( #e6ce_#esc is not speci(ied the
(irst availa#le audio device Eill #e used;
Calores retornados
Returns an Open AL>Device? resource on success or FALSE on (ailure;
Cer tambi%n
openal>de5ice>close./
openal>conte+t>create./
openal>listener>get
>no version in(ormationA might #e only in 5$?
openalZlistenerZget 22 Retrieve a listener property
Kescripci"n
miFed openal>listener>get > int property ?
:ista de parmetros
propert?
Property to retrieveA one o(C AL_#AIN >(loat?A AL_POSITION >array>(loatA(loatA(loat??A
AL_$ELOCITY >array>(loatA(loatA(loat??A y AL_ORIENTATION >array>(loatA(loatA(loat??;
Calores retornados
Returns a (loat or array o( (loats >as appropriate?A or FALSE on (ailure;
Cer tambi%n
openal>listener>set./
openal>listener>set
>no version in(ormationA might #e only in 5$?
openalZlistenerZset 22 et a listener property
Kescripci"n
#ool openal>listener>set > int propertyA miFed setting ?
:ista de parmetros
propert?
Property to setA one o(C AL_#AIN >(loat?A AL_POSITION >array>(loatA(loatA(loat??A
AL_$ELOCITY >array>(loatA(loatA(loat??A y AL_ORIENTATION >array>(loatA(loatA(loat??;
sett6nE
$alue to setA either (loatA or an array o( (loats as appropriate;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>listener>get./
openal>source>create
>no version in(ormationA might #e only in 5$?
openalZsourceZcreate 22 Generate a source resource
Kescripci"n
resource openal>source>create > void ?
Calores retornados
Returns an Open AL>ource? resource on success or FALSE on (ailure;
Cer tambi%n
openal>source>set./
openal>source>play./
openal>source>destroy./
openal>source>destroy
>no version in(ormationA might #e only in 5$?
openalZsourceZdestroy 22 Destroy a source resource
Kescripci"n
resource openal>source>destroy > resource source ?
:ista de parmetros
source
An Open AL>ource? resource >previously created #y openal>source>create./?;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>source>create./
openal>source>get
>no version in(ormationA might #e only in 5$?
openalZsourceZget 22 Retrieve an OpenAL source property
Kescripci"n
miFed openal>source>get > resource sourceA int property ?
:ista de parmetros
source
An Open AL>ource? resource >previously created #y openal>source>create./?;
propert?
Property to getA one o(C AL_SOURCE_RELATI$E >int?A AL_SOURCE_STATE >int?A
AL_PITCH >(loat?A AL_#AIN >(loat?A AL_MIN_#AIN >(loat?A AL_MA%_#AIN >(loat?A
AL_MA%_DISTANCE >(loat?A AL_ROLLOFF_FACTOR >(loat?A AL_CONE_OUTER_#AIN
>(loat?A AL_CONE_INNER_AN#LE >(loat?A AL_CONE_OUTER_AN#LE >(loat?A
AL_REFERENCE_DISTANCE >(loat?A AL_POSITION >array>(loatA(loatA(loat??A
AL_$ELOCITY >array>(loatA(loatA(loat??A AL_DIRECTION >array>(loatA(loatA(loat??;
Calores retornados
Returns the type associated Eith the property #eing retrieved or FALSE on (ailure;
Cer tambi%n
openal>source>create./
openal>source>set./
openal>source>play./
openal>source>pause
>no version in(ormationA might #e only in 5$?
openalZsourceZpause 22 Pause the source
Kescripci"n
#ool openal>source>pause > resource source ?
:ista de parmetros
source
An Open AL>ource? resource >previously created #y openal>source>create./?;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>source>stop./
openal>source>play./
openal>source>re3ind./
openal>source>play
>no version in(ormationA might #e only in 5$?
openalZsourceZplay 22 tart playing the source
Kescripci"n
#ool openal>source>play > resource source ?
:ista de parmetros
source
An Open AL>ource? resource >previously created #y openal>source>create./?;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>source>stop./
openal>source>pause./
openal>source>re3ind./
openal>source>re3ind
>no version in(ormationA might #e only in 5$?
openalZsourceZreEind 22 ReEind the source
Kescripci"n
#ool openal>source>re3ind > resource source ?
:ista de parmetros
source
An Open AL>ource? resource >previously created #y openal>source>create./?;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>source>stop./
openal>source>pause./
openal>source>play./
openal>source>set
>no version in(ormationA might #e only in 5$?
openalZsourceZset 22 et source property
Kescripci"n
#ool openal>source>set > resource sourceA int propertyA miFed setting ?
:ista de parmetros
source
An Open AL>ource? resource >previously created #y openal>source>create./?;
propert?
Property to setA one o(C AL_(UFFER >OpenAL>ource??A AL_LOOPIN# >#ool?A
AL_SOURCE_RELATI$E >int?A AL_SOURCE_STATE >int?A AL_PITCH >(loat?A AL_#AIN
>(loat?A AL_MIN_#AIN >(loat?A AL_MA%_#AIN >(loat?A AL_MA%_DISTANCE >(loat?A
AL_ROLLOFF_FACTOR >(loat?A AL_CONE_OUTER_#AIN >(loat?A
AL_CONE_INNER_AN#LE >(loat?A AL_CONE_OUTER_AN#LE >(loat?A
AL_REFERENCE_DISTANCE >(loat?A AL_POSITION >array>(loatA(loatA(loat??A
AL_$ELOCITY >array>(loatA(loatA(loat??A AL_DIRECTION >array>(loatA(loatA(loat??;
sett6nE
$alue to assign to speci(ied propert?; Re(er to the description o( propert? (or a description o(
the value>s? eFpected;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>source>create./
openal>source>get./
openal>source>play./
openal>source>stop
>no version in(ormationA might #e only in 5$?
openalZsourceZstop 22 top playing the source
Kescripci"n
#ool openal>source>stop > resource source ?
:ista de parmetros
source
An Open AL>ource? resource >previously created #y openal>source>create./?;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
openal>source>play./
openal>source>pause./
openal>source>re3ind./
openal>stream
>no version in(ormationA might #e only in 5$?
openalZstream 22 Begin streaming on a source
Kescripci"n
resource openal>stream > resource sourceA int (ormatA int rate ?
:ista de parmetros
source
An Open AL>ource? resource >previously created #y openal>source>create./?;
9ormat
Format o( #ataA one o(C AL_FORMAT_MONO,A AL_FORMAT_MONO)1A
AL_FORMAT_STEREO,A y AL_FORMAT_STEREO)1
rate
Fre/uency o( data to stream given in &z;
Calores retornados
Returns a stream resource on successA or FALSE on (ailure;
Cer tambi%n
openal>source>create./
f3rite./
:IIIII. Jpen,,: ;unctions
Introducci"n
,his module uses the (unctions o( OpenL (or generation and veri(ication o( signatures and (or
sealing >encrypting? and opening >decrypting? data; OpenL o((ers many (eatures that this module
currently doesnHt support; ome o( these may #e added in the (uture;
Me?uirimientos
.n order to use the OpenL (unctions you need to install the OpenL pac"age; P&P #etEeen
versions 8;3;4 and 8;7;1 Eill Eor" Eith OpenL _^ 3;9;4; Other versions >P&P `^8;3;8pl1 and _^
8;7;0? re/uire OpenL _^ 3;9;K;
A5iso
%ou are strongly encouraged to use the most recent OpenL versionA otherEise your Ee# server
could #e vulnera#le to attac";
Instalaci"n
,o use P&PHs OpenL support you must also compile P&P ==76th=openssl):D0R.;
Note to 2in7* )sers- .n order to ena#le this module on a LindoEs environmentA you
must copy libeay<C.dll (rom the DLL (older o( the P&PDLin70 #inary pac"age to
the %,+M70 (older o( your EindoEs machine; >+FC R@V74..*V&P&*E"<C or
R@V74.L?7&V&P&*E"<C?
AdditionallyA i( you are planning to use the "ey generation and certi(icate signing
(unctionsA you Eill need to install a valid openssl.cn# on your system; As o( P&P
8;7;3A Ee include a sample con(iguration (ile in the openssl (older o( our Ein70
#inary distri#ution; .( you are using P&P 8;0;3 or later and are missing the (ileA you can
o#tain it (rom the OpenL home page or #y doEnloading the P&P 8;7;3 release and
using the con(iguration (ile (rom there;
Note to 2in7* )sers- P&P Eill search (or the openssl.cn# using the (olloEing
logicC
the O+ENSS4_CON3 environmental varia#leA i( setA Eill #e used as the path
>including (ilename? o( the con(iguration (ile;
the SS4E,B_CON3 environmental varia#leA i( setA Eill #e used as the path
>including (ilename? o( the con(iguration (ile;
,he (ile openssl.cn# Eill #e assumed to #e (ound in the de(ault certi(icate
areaA as con(igured at the time that the openssl DLL Eas compiled; ,his is
usually means that the de(ault (ilename is
c@VusrVlocalVsslVopenssl.cn#;
.n your installationA you need to decide Ehether to install the con(iguration (ile at
c@VusrVlocalVsslVopenssl.cn# or Ehether to install it someplace else and use
environmental varia#les >possi#ly on a per2virtual2host #asis? to locate the con(iguration
(ile; Note that it is possi#le to override the de(ault path (rom the script using the
con96EarEs o( the (unctions that re/uire a con(iguration (ile;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
`eyACertificate parameters
Ouite a (eE o( the openssl (unctions re/uire a "ey or a certi(icate parameter; P&P 8;3;4 and earlier
have to use a "ey or certi(icate resource returned #y one o( the opensslZgetZFFF (unctions; Later
versions may use one o( the (olloEing methodsC
5erti(icates
An J;439 resource returned (rom openssl>+9DO>read./
A string having the (ormat #ile@//path/to/cert.pemX the named (ile must
contain a P+M encoded certi(icate
A string containing the content o( a certi(icateA P+M encoded
Pu#licDPrivate Seys
A "ey resource returned (rom openssl>get>publicBey./ or openssl>get>pri5ateBey./
For pu#lic "eys onlyC an J;439 resource
A string having the (ormat #ile@//path/to/#ile.pem 2 the named (ile must
contain a P+M encoded certi(icateDprivate "ey >it may contain #oth?
A string containing the content o( a certi(icateD"eyA P+M encoded
For private "eysA you may also use the syntaF arra?L'>e?C 'passphraseM Ehere Y"ey
represents a "ey speci(ied using the (ileCDD or teFtual content notation a#oveA and
Ypassphrase represents a string containing the passphrase (or that private "ey
Certificate Cerification
Lhen calling a (unction that Eill veri(y a signatureDcerti(icateA the ca6n9o parameter is an array
containing (ile and directory names that speci(y the locations o( trusted 5A (iles; .( a directory is
speci(iedA then it must #e a correctly (ormed hashed directory as the openssl command Eould use;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
Purpose checBing flags
%20=_PURPOSE_SSL_CLIENT >integer?
%20=_PURPOSE_SSL_SER$ER >integer?
%20=_PURPOSE_NS_SSL_SER$ER >integer?
%20=_PURPOSE_SMIME_SI#N >integer?
%20=_PURPOSE_SMIME_ENCRYPT >integer?
%20=_PURPOSE_CRL_SI#N >integer?
%20=_PURPOSE_ANY >integer?
Padding flags
OPENSSL_P&CS)_PADDIN# >integer?
OPENSSL_SSL$*>_PADDIN# >integer?
OPENSSL_NO_PADDIN# >integer?
OPENSSL_P&CS)_OAEP_PADDIN# >integer?
`ey types
OPENSSL_&EYTYPE_RSA >integer?
OPENSSL_&EYTYPE_DSA >integer?
OPENSSL_&EYTYPE_DH >integer?
P`C,= ;lagsAConstants
,he DM.M+ (unctions ma"e use o( (lags Ehich are speci(ied using a #it(ield Ehich can include one
or more o( the (olloEing valuesC
Tabla !. P`C,= CJN,TANT,
Constant Kescription
PS5:Z,+J,
Adds teFtDplain content type headers to encryptedDsigned message; .( decrypting
or veri(yingA it strips those headers (rom the output 2 i( the decrypted or veri(ied
message is not o( M.M+ type teFtDplain then an error Eill occur;
PS5:ZB.NA
R%
Normally the input message is converted to =canonical= (ormat Ehich is
e((ectively using 5R and LF as end o( lineC as re/uired #y the DM.M+
speci(ication; Lhen this options is presentA no translation occurs; ,his is use(ul
Ehen handling #inary data Ehich may not #e in M.M+ (ormat;
PS5:ZNO.N
,+RN
Lhen veri(ying a messageA certi(icates >i( any? included in the message are
normally searched (or the signing certi(icate; Lith this option only the
certi(icates speci(ied in the e8tracerts parameter o( openssl>pBcs=>5erify./ are
used; ,he supplied certi(icates can still #e used as untrusted 5As hoEever;
PS5:ZNO$+
R.F%
Do not veri(y the signers certi(icate o( a signed message;
PS5:ZNO5&
A.N
Do not chain veri(ication o( signers certi(icatesC that is donHt use the certi(icates
in the signed message as untrusted 5As;
PS5:ZNO5+
R,
Lhen signing a message the signerHs certi(icate is normally included 2 Eith this
option it is eFcluded; ,his Eill reduce the size o( the signed message #ut the
veri(ier must have a copy o( the signers certi(icate availa#le locally >passed using
the e8tracerts to openssl>pBcs=>5erify./ (or eFample?;
Constant Kescription
PS5:ZNOA,
,R
Normally Ehen a message is signedA a set o( attri#utes are included Ehich
include the signing time and the supported symmetric algorithms; Lith this
option they are not included;
PS5:ZD+,A
5&+D
Lhen signing a messageA use clearteFt signing Eith the M.M+ type
multipartDsigned; ,his is the de(ault i( you do not speci(y any 9laEs to
openssl>pBcs=>sign./; .( you turn this option o((A the message Eill #e signed
using opa/ue signingA Ehich is more resistant to translation #y mail relays #ut
cannot #e read #y mail agents that do not support DM.M+;
PS5:ZNO.
G
DonHt try and veri(y the signatures on a message
Nota- ,hese constants Eere added in 8;3;K;
Tabla de contenidos
opensslZcsrZeFportZtoZ(ile 22 +Fports a 5R to a (ile
opensslZcsrZeFport 22 +Fports a 5R as a string
opensslZcsrZneE 22 Generates a 5R
opensslZcsrZsign 22 ign a 5R Eith another certi(icate >or itsel(? and generate a certi(icate
opensslZerrorZstring 22 Return openL error message
opensslZ(reeZ"ey 22 Free "ey resource
opensslZgetZprivate"ey 22 Get a private "ey
opensslZgetZpu#lic"ey 22 +Ftract pu#lic "ey (rom certi(icate and prepare it (or use
opensslZopen 22 Open sealed data
opensslZp"cs:Zdecrypt 22 Decrypts an DM.M+ encrypted message
opensslZp"cs:Zencrypt 22 +ncrypt an DM.M+ message
opensslZp"cs:Zsign 22 ign an DM.M+ message
opensslZp"cs:Zveri(y 22 $eri(ies the signature o( an DM.M+ signed message
opensslZp"eyZeFportZtoZ(ile 22 Gets an eFporta#le representation o( a "ey into a (ile
opensslZp"eyZeFport 22 Gets an eFporta#le representation o( a "ey into a string
opensslZp"eyZgetZprivate 22 Get a private "ey
opensslZp"eyZgetZpu#lic 22 +Ftract pu#lic "ey (rom certi(icate and prepare it (or use
opensslZp"eyZneE 22 Generates a neE private "ey
opensslZprivateZdecrypt 22 Decrypts data Eith private "ey
opensslZprivateZencrypt 22 +ncrypts data Eith private "ey
opensslZpu#licZdecrypt 22 Decrypts data Eith pu#lic "ey
opensslZpu#licZencrypt 22 +ncrypts data Eith pu#lic "ey
opensslZseal 22 eal >encrypt? data
opensslZsign 22 Generate signature
opensslZveri(y 22 $eri(y signature
opensslZF439Zchec"ZprivateZ"ey 22 5hec"s i( a private "ey corresponds to a certi(icate
opensslZF439Zchec"purpose 22 $eri(ies i( a certi(icate can #e used (or a particular purpose
opensslZF439ZeFportZtoZ(ile 22 +Fports a certi(icate to (ile
opensslZF439ZeFport 22 +Fports a certi(icate as a string
opensslZF439Z(ree 22 Free certi(icate resource
opensslZF439Zparse 22 Parse an J439 certi(icate and return the in(ormation as an array
opensslZF439Zread 22 Parse an J;439 certi(icate and return a resource identi(ier (or it
openssl>csr>e+port>to>file
>P&P 8 _^ 8;0;3A P&P 4?
opensslZcsrZeFportZtoZ(ile 22 +Fports a 5R to a (ile
Kescription
#ool openssl>csr>e+port>to>file > resource csrA string out(ilename PA #ool noteFtQ ?
openssl>csr>e+port>to>file./ ta"es the 5erti(icate igning Re/uest represented #y csr and saves it
as ascii2armoured teFt into the (ile named #y out96lename;
,he optional parameter note8t a((ects the ver#osity o( the outputX i( it is FALSE then additional
human2reada#le in(ormation is included in the output; ,he de(ault value o( note8t is TRUE;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also openssl>csr>e+port./A openssl>csr>ne3./ and openssl>csr>sign./;
openssl>csr>e+port
>P&P 8 _^ 8;0;3A P&P 4?
opensslZcsrZeFport 22 +Fports a 5R as a string
Kescription
#ool openssl>csr>e+port > resource csrA string iout PA #ool noteFtQ ?
openssl>csr>e+port./ ta"es the 5erti(icate igning Re/uest represented #y csr and stores it as ascii2
armoured teFt into outA Ehich is passed #y re(erence;
,he optional parameter note8t a((ects the ver#osity o( the outputX i( it is FALSE then additional
human2reada#le in(ormation is included in the output; ,he de(ault value o( note8t is TRUE;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also openssl>csr>e+port>to>file./A openssl>csr>ne3./ and openssl>csr>sign./;
openssl>csr>ne3
>P&P 8 _^ 8;0;3A P&P 4?
opensslZcsrZneE 22 Generates a 5R
Kescription
#ool openssl>csr>ne3 > array dnA resource ipriv"ey PA array con(igargs PA array eFtraattri#sQQ ?
openssl>csr>ne3./ generates a neE 5R >5erti(icate igning Re/uest? #ased on the in(ormation
provided #y #nA Ehich represents the Distinguished Name to #e used in the certi(icate;
pr6>e? should #e set to a private "ey that Eas previously generated #y openssl>pBey>ne3./ >or
otherEise o#tained (rom the other opensslZp"ey (amily o( (unctions?; ,he corresponding pu#lic
portion o( the "ey Eill #e used to sign the 5R;
e8traattr61s is used to speci(y additional con(iguration options (or the 5R; Both #n and
e8traattr61s are associative arrays Ehose "eys are converted to O.Ds and applied to the relevant part
o( the re/uest;
Nota- %ou need to have a valid openssl.cn# installed (or this (unction to operate
correctly; ee the notes under the installation section (or more in(ormation;
By de(aultA the in(ormation in your system openssl.con9 is used to initialize the re/uestX you can
speci(y a con(iguration (ile section #y setting the con96E_sect6on_sect6on "ey o( con96EarEs; %ou can
also speci(y an alternative openssl con(iguration (ile #y setting the value o( the con96E "ey to the
path o( the (ile you Eant to use; ,he (olloEing "eysA i( present in con96EarEs #ehave as their Walents
in the openssl.con9A as listed in the ta#le #eloE;
Tabla !. Configuration o5errides
configargs
Bey
type
openssl.conf
Walent
description
digestZalg string de(aultZmd elects Ehich digest method to use
F439ZeFtens
ions
string
F439ZeFtensi
ons
elects Ehich eFtensions should #e used Ehen creating an
F439 certi(icate
re/ZeFtensio
ns
string
re/ZeFtension
s
elects Ehich eFtensions should #e used Ehen creating a
5R
privateZ"ey
Z#its
string de(aultZ#its
peci(ies hoE many #its should #e used to generate a
private "ey
privateZ"ey
Ztype
integer none
peci(ies the type o( private "ey to create; ,his can #e one
o( OPENSSL_&EYTYPE_DSAA OPENSSL_&EYTYPE_DH
or OPENSSL_&EYTYPE_RSA; ,he de(ault value is
OPENSSL_&EYTYPE_RSA Ehich is currently the only
supported "ey type;
encryptZ"ey boolean encryptZ"ey hould an eFported "ey >Eith passphrase? #e encryptedN
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. openssl>csr>ne3./ e+ample ( creating a self(signed(certificate
<?php
// Sill in data #or the distinEuished name to be used in the cert
// Pou must chanEe the =alues o# these Ieys to match your name and
// company, or more precisely, the name and company o# the person/site
// that you are EeneratinE the certi#icate #or.
// Sor &&O certi#icates, the common.ame is usually the domain name o#
// that 8ill be usinE the certi#icate, but #or &/"4"E certi#icates,
// the common.ame 8ill be the name o# the indi=idual 8ho 8ill use the
// certi#icate.
$dn > array3
"country.ame" >> "+]",
"state?rro=ince.ame" >> "&omerset",
"locality.ame" >> "-lastonbury",
"orEani0ation.ame" >> "*he Zrain 'oom Oimited",
"orEani0ational+nit.ame" >> "H Locumentation *eam",
"common.ame" >> "7e0 SurlonE",
"email,ddress" >> "8e0^example.com"
9;
// -enerate a ne8 pri=ate 3and public9 Iey pair
$pri=Iey > openssl%pIey%ne839;
// -enerate a certi#icate siEninE reQuest
$csr > openssl%csr%ne83$dn, $pri=Iey9;
// Pou 8ill usually 8ant to create a sel#FsiEned certi#icate at this
// point until your R, #ul#ills your reQuest.
// *his creates a sel#FsiEned cert that is =alid #or <G5 days
$sscert > openssl%csr%siEn3$csr, null, $pri=Iey, <G59;
// .o8 you 8ill 8ant to preser=e your pri=ate Iey, R&' and sel#FsiEned
// cert so that they can be installed into your 8eb ser=er, mail ser=er
// or mail client 3dependinE on the intended use o# the certi#icate9.
// *his example sho8s ho8 to Eet those thinEs into =ariables, but you
// can also store them directly into #iles.
// *ypically, you 8ill send the R&' on to your R, 8ho 8ill then issue
// you 8ith the "real" certi#icate.
openssl%csr%export3$csr, $csrout9 and =ar%dump3$csrout9;
openssl%x52K%export3$sscert, $certout9 and =ar%dump3$certout9;
openssl%pIey%export3$pri=Iey, $pIeyout, "mypass8ord"9 and =ar%dump3$pIeyout9;
// &ho8 any errors that occurred here
8hile 33$e > openssl%error%strinE399 !>> #alse9 :
echo $e . "Vn";
;
?>
openssl>csr>sign
>P&P 8 _^ 8;0;3A P&P 4?
opensslZcsrZsign 22 ign a 5R Eith another certi(icate >or itsel(? and generate a certi(icate
Kescription
resource openssl>csr>sign > miFed csrA miFed cacertA miFed privZ"eyA int days PA array con(igargs PA
int serialQQ ?
openssl>csr>sign./ generates an F439 certi(icate resource (rom the csr previously generated #y
openssl>csr>ne3./A #ut it can also #e the path to a P+M encoded 5R Ehen speci(ied as
#ile@//path/to/csr or an eFported string generated #y openssl>csr>e+port./; ,he generated
certi(icate Eill #e signed #y cacert; .( cacert is NULLA the generated certi(icate Eill #e a sel(2signed
certi(icate; pr6_>e? is the private "ey that corresponds to cacert; #a?s speci(ies the length o( time
(or Ehich the generated certi(icate Eill #e validA in days; %ou can (inetune the 5R signing #y
con96EarEs; ee openssl>csr>ne3./ (or more in(ormation a#out con96EarEs; ince P&P 8;7;7 you
can speci(y the serial num#er o( issued certi(icate #y ser6al; .n earlier versionsA it Eas alEays 3;
Returns an F439 certi(icate resource on successA FALSE on (ailure;
Nota- %ou need to have a valid openssl.cn# installed (or this (unction to operate
correctly; ee the notes under the installation section (or more in(ormation;
E'emplo !. openssl>csr>sign./ e+ample ( signing a C,M .ho3 to implement your o3n CA/
<?php
// OetMs assume that this script is set to recei=e a R&' that has
// been pasted into a textarea #rom another paEe
$csrdata > $%?&*)"R&'"/;
// 7e 8ill siEn the reQuest usinE our o8n "certi#icate authority"
// certi#icate. Pou can use any certi#icate to siEn another, but
// the process is 8orthless unless the siEninE certi#icate is trusted
// by the so#t8are/users that 8ill deal 8ith the ne8ly siEned certi#icate
// 7e need our R, cert and its pri=ate Iey
$cacert > "#ile@//path/to/ca.crt";
$pri=Iey > array3"#ile@//path/to/ca.Iey", "your%ca%Iey%passphrase"9;
$userscert > openssl%csr%siEn3$csrdata, $cacert, $pri=Iey, <G59;
// .o8 display the Eenerated certi#icate so that the user can
// copy and paste it into their local con#iEuration 3such as a #ile
// to hold the certi#icate #or their &&O ser=er9
openssl%x52K%export3$usercert, $certout9;
echo $certout;
// &ho8 any errors that occurred here
8hile 33$e > openssl%error%strinE399 !>> #alse9 :
echo $e . "Vn";
;
?>
openssl>error>string
>P&P 8 _^ 8;3;KA P&P 4?
opensslZerrorZstring 22 Return openL error message
Kescription
miFed openssl>error>string > void ?
Returns an error message stringA or FALSE i( there are no more error messages to return;
openssl>error>string./ returns the last error (rom the openL li#rary; +rror messages are stac"edA
so this (unction should #e called multiple times to collect all o( the in(ormation;
E'emplo !. openssl>error>string./ e+ample
<?php
// lets assume you just called an openssl #unction that #ailed
8hile 3$msE > openssl%error%strinE399
echo $msE . "<br />Vn";
?>
openssl>free>Bey
>P&P 8 _^ 8;3;8A P&P 4?
opensslZ(reeZ"ey 22 Free "ey resource
Kescription
void openssl>free>Bey > resource "eyZidenti(ier ?
openssl>free>Bey./ (rees the "ey associated Eith the speci(ied >e?_6#ent696er (rom memory;
openssl>get>pri5ateBey
>P&P 8 _^ 8;3;8A P&P 4?
opensslZgetZprivate"ey 22 Get a private "ey
Kescription
resource openssl>get>pri5ateBey > miFed "ey PA string passphraseQ ?
,his is an alias (or openssl>pBey>get>pri5ate./;
openssl>get>publicBey
>P&P 8 _^ 8;3;8A P&P 4?
opensslZgetZpu#lic"ey 22 +Ftract pu#lic "ey (rom certi(icate and prepare it (or use
Kescription
resource openssl>get>publicBey > miFed certi(icate ?
,his is an alias (or openssl>pBey>get>public./;
openssl>open
>P&P 8 _^ 8;3;8A P&P 4?
opensslZopen 22 Open sealed data
Kescription
#ool openssl>open > string sealedZdataA string iopenZdataA string envZ"eyA miFed privZ"eyZid ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo; .( success(ul the
opened data is returned in open_#ata;
openssl>open./ opens >decrypts? seale#_#ata using the private "ey associated Eith the "ey
identi(ier pr6_>e?_6# and the envelope "ey en_>e?A and (ills open_#ata Eith the decrypted data;
,he envelope "ey is generated Ehen the data are sealed and can only #e used #y one speci(ic private
"ey; ee openssl>seal./ (or more in(ormation;
E'emplo !. openssl>open./ e+ample
<?php
// $sealed and $en=%Iey are assumed to contain the sealed data
// and our en=elope Iey, both Ei=en to us by the sealer.
// #etch pri=ate Iey #rom #ile and ready it
$#p > #open3"/src/opensslF2.K.G/demos/siEn/Iey.pem", "r"9;
$pri=%Iey > #read3$#p, J6KC9;
#close3$#p9;
$pIeyid > openssl%Eet%pri=ateIey3$pri=%Iey9;
// decrypt the data and store it in $open
i# 3openssl%open3$sealed, $open, $en=%Iey, $pIeyid99 :
echo "here is the opened data@ ", $open;
; else :
echo "#ailed to open data";
;
// #ree the pri=ate Iey #rom memory
openssl%#ree%Iey3$pIeyid9;
?>
ee also openssl>seal./;
openssl>pBcs=>decrypt
>P&P 8 _^ 8;3;KA P&P 4?
opensslZp"cs:Zdecrypt 22 Decrypts an DM.M+ encrypted message
Kescription
#ool openssl>pBcs=>decrypt > string in(ilenameA string out(ilenameA miFed recipcert PA miFed
recip"eyQ ?
Decrypts the DM.M+ encrypted message contained in the (ile speci(ied #y 6n96lename using the
certi(icate and its associated private "ey speci(ied #y rec6pcert and rec6p>e?;
,he decrypted message is output to the (ile speci(ied #y out96lename
E'emplo !. openssl>pBcs=>decrypt./ e+ample
<?php
// $cert and $Iey are assumed to contain your personal certi#icate and pri=ate
// Iey pair, and that you are the recipient o# an &/"4"E messaEe
$in#ilename > "encrypted.msE"; // this #ile holds your encrypted messaEe
$out#ilename > "decrypted.msE"; // maIe sure you can 8rite to this #ile
i# 3openssl%pIcsH%decrypt3$in#ilename, $out#ilename, $cert, $Iey99 :
echo "decrypted!";
; else :
echo "#ailed to decrypt!";
;
?>
openssl>pBcs=>encrypt
>P&P 8 _^ 8;3;KA P&P 4?
opensslZp"cs:Zencrypt 22 +ncrypt an DM.M+ message
Kescription
#ool openssl>pBcs=>encrypt > string in(ileA string out(ileA miFed recipcertsA array headers PA int
(lags PA int cipheridQQ ?
openssl>pBcs=>encrypt./ ta"es the contents o( the (ile named 6n96le and encrypts them using an
R50 832#it cipher so that they can only #e read #y the intended recipients speci(ied #y rec6pcertsA
Ehich is either a lone J;439 certi(icateA or an array o( J;439 certi(icates; hea#ers is an array o(
headers that Eill #e prepended to the data a(ter it has #een encrypted; 9laEs can #e used to speci(y
options that a((ect the encoding process 2 see PS5: constants; hea#ers can #e either an associative
array "eyed #y header nameA or an indeFed arrayA Ehere each element contains a single header line;
5ipher can #e selected Eith c6pher6# since P&P 4;
E'emplo !. openssl>pBcs=>encrypt./ e+ample
<?php
// the messaEe you 8ant to encrypt and send to your secret aEent
// in the #ield, Ino8n as niEhtha8I. Pou ha=e his certi#icate
// in the #ile niEhtha8I.pem
$data > <<<E?L
.iEhtha8I,
*op secret, #or your eyes only!
*he enemy is closinE in! "eet me at the ca#e at J.<2am
to collect your #orEed passport!
HN
E?L;
// load Iey
$Iey > #ile%Eet%contents3"niEhtha8I.pem"9;
// sa=e messaEe to #ile
$#p > #open3"msE.txt", "8"9;
#8rite3$#p, $data9;
#close3$#p9;
// encrypt it
i# 3openssl%pIcsH%encrypt3"msE.txt", "enc.txt", $Iey,
array3"*o" >> "niEhtha8I^example.com", // Ieyed syntax
"Srom@ HN <hQ^example.com>", // indexed syntax
"&ubject" >> "Eyes only"999 :
// messaEe encrypted F send it!
exec3ini%Eet3"sendmail%path"9 . " < enc.txt"9;
;
?>
openssl>pBcs=>sign
>P&P 8 _^ 8;3;KA P&P 4?
opensslZp"cs:Zsign 22 ign an DM.M+ message
Kescription
#ool openssl>pBcs=>sign > string in(ilenameA string out(ilenameA miFed signcertA miFed priv"eyA
array headers PA int (lags PA string eFtracertsQQ ?
openssl>pBcs=>sign./ ta"es the contents o( the (ile named 6n96lename and signs them using the
certi(icate and its matching private "ey speci(ied #y s6Encert and pr6>e? parameters;
hea#ers is an array o( headers that Eill #e prepended to the data a(ter it has #een signed >see
openssl>pBcs=>encrypt./ (or more in(ormation a#out the (ormat o( this parameter;
9laEs can #e used to alter the output 2 see PS5: constants 2 i( not speci(iedA it de(aults to
PS5:ZD+,A5&+D;
e8tracerts speci(ies the name o( a (ile containing a #unch o( eFtra certi(icates to include in the
signature Ehich can (or eFample #e used to help the recipient to veri(y the certi(icate that you used;
E'emplo !. openssl>pBcs=>sign./ e+ample
<?php
// the messaEe you 8ant to siEn so that recipient can be sure it 8as you that
// sent it
$data > <<<E?L
Pou ha=e my authori0ation to spend $62,222 on dinner expenses.
*he RE?
E?L;
// sa=e messaEe to #ile
$#p > #open3"msE.txt", "8"9;
#8rite3$#p, $data9;
#close3$#p9;
// encrypt it
i# 3openssl%pIcsH%siEn3"msE.txt", "siEned.txt", "mycert.pem",
array3"#ile@//mycert.pem", "mypassphrase"9,
array3"*o" >> "joes^example.com", // Ieyed syntax
"Srom@ HN <ceo^example.com>", // indexed syntax
"&ubject" >> "Eyes only"9
99 :
// messaEe siEned F send it!
exec3ini%Eet3"sendmail%path"9 . " < siEned.txt"9;
;
?>
openssl>pBcs=>5erify
>P&P 8 _^ 8;3;KA P&P 4?
opensslZp"cs:Zveri(y 22 $eri(ies the signature o( an DM.M+ signed message
Kescription
#ool openssl>pBcs=>5erify > string (ilenameA int (lags PA string out(ilename PA array cain(o PA string
eFtracertsQQQ ?
openssl>pBcs=>5erify./ reads the DM.M+ message contained in the (ilename speci(ied #y
96lename and eFamines the digital signature; .t returns TRUE i( the signature is veri(iedA FALSE i( it
is not correct >the message has #een tampered EithA or the signing certi(icate is invalid?A or 21 on
error;
9laEs can #e used to a((ect hoE the signature is veri(ied 2 see PS5: constants (or more
in(ormation;
.( the out96lename is speci(iedA it should #e a string holding the name o( a (ile into Ehich the
certi(icates o( the persons that signed the messages Eill #e stored in P+M (ormat;
.( the ca6n9o is speci(iedA it should hold in(ormation a#out the trusted 5A certi(icates to use in the
veri(ication process 2 see certi(icate veri(ication (or more in(ormation a#out this parameter;
.( the e8tracerts is speci(iedA it is the (ilename o( a (ile containing a #unch o( certi(icates to use as
untrusted 5As;
openssl>pBey>e+port>to>file
>P&P 8 _^ 8;0;3A P&P 4?
opensslZp"eyZeFportZtoZ(ile 22 Gets an eFporta#le representation o( a "ey into a (ile
Kescription
#ool openssl>pBey>e+port>to>file > miFed "eyA string out(ilename PA string passphrase PA array
con(igargsQQ ?
openssl>pBey>e+port>to>file./ saves an ascii2armoured >P+M encoded? rendition o( >e? into the
(ile named #y out96lename; ,he "ey can #e optionally protected #y a passphrase; con96EarEs can #e
used to (ine2tune the eFport process #y speci(ying andDor overriding options (or the openssl
con(iguration (ile; ee openssl>csr>ne3./ (or more in(ormation a#out con96EarEs; Devuelve TRUE
si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- %ou need to have a valid openssl.cn# installed (or this (unction to operate
correctly; ee the notes under the installation section (or more in(ormation;
openssl>pBey>e+port
>P&P 8 _^ 8;0;3A P&P 4?
opensslZp"eyZeFport 22 Gets an eFporta#le representation o( a "ey into a string
Kescription
#ool openssl>pBey>e+port > miFed "eyA string iout PA string passphrase PA array con(igargsQQ ?
openssl>pBey>e+port./ eFports >e? as a P+M encoded string and stores it into out >Ehich is passed
#y re(erence?; ,he "ey is optionally protected #y passphrase; con96EarEs can #e used to (ine2tune the
eFport process #y speci(ying andDor overriding options (or the openssl con(iguration (ile; ee
openssl>csr>ne3./ (or more in(ormation a#out con96EarEs; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
Nota- %ou need to have a valid openssl.cn# installed (or this (unction to operate
correctly; ee the notes under the installation section (or more in(ormation;
openssl>pBey>get>pri5ate
>P&P 8 _^ 8;0;3A P&P 4?
opensslZp"eyZgetZprivate 22 Get a private "ey
Kescription
resource openssl>pBey>get>pri5ate > miFed "ey PA string passphraseQ ?
Returns a positive "ey resource identi(ier on successA or FALSE on error;
openssl>get>pri5ateBey./ parses >e? and prepares it (or use #y other (unctions; >e? can #e one o(
the (olloEingC
1; a string having the (ormat #ile@//path/to/#ile.pem; ,he named (ile must contain a
P+M encoded certi(icateDprivate "ey >it may contain #oth?;
0; A P+M (ormatted private "ey;
,he optional parameter passphrase must #e used i( the speci(ied "ey is encrypted >protected #y a
passphrase?;
openssl>pBey>get>public
>P&P 8 _^ 8;0;3A P&P 4?
opensslZp"eyZgetZpu#lic 22 +Ftract pu#lic "ey (rom certi(icate and prepare it (or use
Kescription
resource openssl>pBey>get>public > miFed certi(icate ?
Returns a positive "ey resource identi(ier on successA or FALSE on error;
openssl>get>publicBey./ eFtracts the pu#lic "ey (rom cert696cate and prepares it (or use #y other
(unctions; cert696cate can #e one o( the (olloEingC
1; an J;439 certi(icate resource
0; a string having the (ormat #ile@//path/to/#ile.pem; ,he named (ile must contain a
P+M encoded certi(icateDprivate "ey >it may contain #oth?;
7; A P+M (ormatted private "ey;
openssl>pBey>ne3
>P&P 8 _^ 8;0;3A P&P 4?
opensslZp"eyZneE 22 Generates a neE private "ey
Kescription
resource openssl>pBey>ne3 > Parray con(igargsQ ?
openssl>pBey>ne3./ generates a neE private and pu#lic "ey pair; ,he pu#lic component o( the "ey
can #e o#tained using openssl>pBey>get>public./; %ou can (inetune the "ey generation >such as
speci(ying the num#er o( #its? using con96EarEs; ee openssl>csr>ne3./ (or more in(ormation a#out
con96EarEs;
Nota- %ou need to have a valid openssl.cn# installed (or this (unction to operate
correctly; ee the notes under the installation section (or more in(ormation;
openssl>pri5ate>decrypt
>P&P 8 _^ 8;3;KA P&P 4?
opensslZprivateZdecrypt 22 Decrypts data Eith private "ey
Kescription
#ool openssl>pri5ate>decrypt > string dataA string idecryptedA miFed "ey PA int paddingQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
openssl>pri5ate>decrypt./ decrypts #ata that Eas previous encrypted via openssl>public>encrypt
./ and stores the result into #ecr?pte#; >e? must #e the private "ey corresponding that Eas used to
encrypt the data; pa##6nE de(aults to OPENSSL_P&CS)_PADDIN#A #ut can also #e one o(
OPENSSL_SSL$*>_PADDIN#A OPENSSL_P&CS)_OAEP_PADDIN#A
OPENSSL_NO_PADDIN#;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
%ou can use this (unction e;g; to decrypt data Ehich Eere supposed only to you;
ee also openssl>public>encrypt./ and openssl>public>decrypt./;
openssl>pri5ate>encrypt
>P&P 8 _^ 8;3;KA P&P 4?
opensslZprivateZencrypt 22 +ncrypts data Eith private "ey
Kescription
#ool openssl>pri5ate>encrypt > string dataA string icryptedA miFed "ey PA int paddingQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
openssl>pri5ate>encrypt./ encrypts #ata Eith private >e? and stores the result into cr?pte#;
+ncrypted data can #e decrypted via openssl>public>decrypt./; pa##6nE de(aults to
OPENSSL_P&CS)_PADDIN#A #ut can also #e OPENSSL_NO_PADDIN#;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,his (unction can #e used e;g; to sign data >or its hash? to prove that it is not Eritten #y someone
else;
ee also openssl>public>decrypt./ and openssl>public>encrypt./;
openssl>public>decrypt
>P&P 8 _^ 8;3;KA P&P 4?
opensslZpu#licZdecrypt 22 Decrypts data Eith pu#lic "ey
Kescription
#ool openssl>public>decrypt > string dataA string idecryptedA miFed "ey PA int paddingQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
openssl>public>decrypt./ decrypts #ata that Eas previous encrypted via openssl>pri5ate>encrypt
./ and stores the result into #ecr?pte#; >e? must #e the pu#lic "ey corresponding that Eas used to
encrypt the data; pa##6nE de(aults to OPENSSL_P&CS)_PADDIN#A #ut can also #e
OPENSSL_NO_PADDIN#;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
%ou can use this (unction e;g; to chec" i( the message Eas Eritten #y the oEner o( the private "ey;
ee also openssl>pri5ate>encrypt./ and openssl>pri5ate>decrypt./;
openssl>public>encrypt
>P&P 8 _^ 8;3;KA P&P 4?
opensslZpu#licZencrypt 22 +ncrypts data Eith pu#lic "ey
Kescription
#ool openssl>public>encrypt > string dataA string icryptedA miFed "ey PA int paddingQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
openssl>public>encrypt./ encrypts #ata Eith pu#lic >e? and stores the result into cr?pte#;
+ncrypted data can #e decrypted via openssl>pri5ate>decrypt./; pa##6nE de(aults to
OPENSSL_P&CS)_PADDIN#A #ut can also #e one o( OPENSSL_SSL$*>_PADDIN#A
OPENSSL_P&CS)_OAEP_PADDIN#A OPENSSL_NO_PADDIN#;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
,his (unction can #e used e;g; to encrypt message Ehich can #e then read only #y oEner o( the
private "ey; .t can #e also used to store secure data in data#ase;
ee also openssl>pri5ate>decrypt./ and openssl>pri5ate>encrypt./;
openssl>seal
>P&P 8 _^ 8;3;8A P&P 4?
opensslZseal 22 eal >encrypt? data
Kescription
int openssl>seal > string dataA string isealedZdataA array ienvZ"eysA array pu#Z"eyZids ?
Returns the length o( the sealed data on successA or FALSE on error; .( success(ul the sealed data is
returned in seale#_#ataA and the envelope "eys in en_>e?s;
openssl>seal./ seals >encrypts? #ata #y using R58 Eith a randomly generated secret "ey; ,he "ey is
encrypted Eith each o( the pu#lic "eys associated Eith the identi(iers in pu1_>e?_6#s and each
encrypted "ey is returned in en_>e?s; ,his means that one can send sealed data to multiple
recipients >provided one has o#tained their pu#lic "eys?; +ach recipient must receive #oth the sealed
data and the envelope "ey that Eas encrypted Eith the recipientHs pu#lic "ey;
E'emplo !. openssl>seal./ e+ample
<?php
// $data is assumed to contain the data to be sealed
// #etch public Ieys #or our recipients, and ready them
$#p > #open3"/src/opensslF2.K.G/demos/maurice/cert.pem", "r"9;
$cert > #read3$#p, J6KC9;
#close3$#p9;
$pI6 > openssl%Eet%publicIey3$cert9;
// 'epeat #or second recipient
$#p > #open3"/src/opensslF2.K.G/demos/siEn/cert.pem", "r"9;
$cert > #read3$#p, J6KC9;
#close3$#p9;
$pIC > openssl%Eet%publicIey3$cert9;
// seal messaEe, only o8ners o# $pI6 and $pIC can decrypt $sealed 8ith Ieys
// $eIeys)2/ and $eIeys)6/ respecti=ely.
openssl%seal3$data, $sealed, $eIeys, array3$pI6, $pIC99;
// #ree the Ieys #rom memory
openssl%#ree%Iey3$pI69;
openssl%#ree%Iey3$pIC9;
?>
ee also openssl>open./;
openssl>sign
>P&P 8 _^ 8;3;8A P&P 4?
opensslZsign 22 Generate signature
Kescription
#ool openssl>sign > string dataA string isignatureA miFed privZ"eyZid PA int signatureZalgQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo; .( success(ul the
signature is returned in s6Enature;
openssl>sign./ computes a signature (or the speci(ied #ata #y using &A1 (or hashing (olloEed #y
encryption using the private "ey associated Eith pr6_>e?_6#; Note that the data itsel( is not
encrypted;
E'emplo !. openssl>sign./ e+ample
<?php
// $data is assumed to contain the data to be siEned
// #etch pri=ate Iey #rom #ile and ready it
$#p > #open3"/src/opensslF2.K.G/demos/siEn/Iey.pem", "r"9;
$pri=%Iey > #read3$#p, J6KC9;
#close3$#p9;
$pIeyid > openssl%Eet%pri=ateIey3$pri=%Iey9;
// compute siEnature
openssl%siEn3$data, $siEnature, $pIeyid9;
// #ree the Iey #rom memory
openssl%#ree%Iey3$pIeyid9;
?>
ee also openssl>5erify./;
openssl>5erify
>P&P 8 _^ 8;3;8A P&P 4?
opensslZveri(y 22 $eri(y signature
Kescription
int openssl>5erify > string dataA string signatureA miFed pu#Z"eyZid ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Returns 1 i( the signature is correctA 3 i( it is incorrectA and 21 on error;
openssl>5erify./ veri(ies that the s6Enature is correct (or the speci(ied #ata using the pu#lic "ey
associated Eith pu1_>e?_6#; ,his must #e the pu#lic "ey corresponding to the private "ey used (or
signing;
E'emplo !. openssl>5erify./ e+ample
<?php
// $data and $siEnature are assumed to contain the data and the siEnature
// #etch public Iey #rom certi#icate and ready it
$#p > #open3"/src/opensslF2.K.G/demos/siEn/cert.pem", "r"9;
$cert > #read3$#p, J6KC9;
#close3$#p9;
$pubIeyid > openssl%Eet%publicIey3$cert9;
// state 8hether siEnature is oIay or not
$oI > openssl%=eri#y3$data, $siEnature, $pubIeyid9;
i# 3$oI >> 69 :
echo "Eood";
; elsei# 3$oI >> 29 :
echo "bad";
; else :
echo "uEly, error checIinE siEnature";
;
// #ree the Iey #rom memory
openssl%#ree%Iey3$pubIeyid9;
?>
ee also openssl>sign./;
openssl>+9DO>checB>pri5ate>Bey
>P&P 8 _^ 8;0;3A P&P 4?
opensslZF439Zchec"ZprivateZ"ey 22 5hec"s i( a private "ey corresponds to a certi(icate
Kescription
#ool openssl>+9DO>checB>pri5ate>Bey > miFed certA miFed "ey ?
openssl>+9DO>checB>pri5ate>Bey./ returns TRUE i( >e? is the private "ey that corresponds to certA
or FALSE otherEise;
openssl>+9DO>checBpurpose
>P&P 8 _^ 8;3;KA P&P 4?
opensslZF439Zchec"purpose 22 $eri(ies i( a certi(icate can #e used (or a particular purpose
Kescription
#ool openssl>+9DO>checBpurpose > miFed F439certA int purpose PA array cain(o PA string
untrusted(ileQQ ?
Returns TRUE i( the certi(icate can #e used (or the intended purposeA FALSE i( it cannotA or 21 on
error;
openssl>+9DO>checBpurpose./ eFamines the certi(icate speci(ied #y 8S0Ocert to see i( it can #e
used (or the purpose speci(ied #y purpose;
ca6n9o should #e an array o( trusted 5A (ilesDdirs as descri#ed in 5erti(icate $eri(ication; .t de(aults
to an empty array;
untruste#96leA i( speci(iedA is the name o( a P+M encoded (ile holding certi(icates that can #e used to
help veri(y the certi(icateA although no trust in placed in the certi(icates that come (rom that (ile;
Tabla !. openssl>+9DO>checBpurpose./ purposes
Constant Kescription
J439ZP@RPO+ZLZ5L.+N,
5an the certi(icate #e used (or the client side o( an L
connectionN
J439ZP@RPO+ZLZ+R$+R
5an the certi(icate #e used (or the server side o( an L
connectionN
J439ZP@RPO+ZNZLZ+R$
+R
5an the cert #e used (or Netscape L serverN
J439ZP@RPO+ZM.M+Z.GN 5an the cert #e used to sign DM.M+ emailN
J439ZP@RPO+ZM.M+Z+N5R
%P,
5an the cert #e used to encrypt DM.M+ emailN
J439ZP@RPO+Z5RLZ.GN
5an the cert #e used to sign a certi(icate revocation list
>5RL?N
J439ZP@RPO+ZAN% 5an the cert #e used (or AnyDAll purposesN
,hese options are not #it(ields 2 you may speci(y one onlya
openssl>+9DO>e+port>to>file
>P&P 8 _^ 8;0;3A P&P 4?
opensslZF439ZeFportZtoZ(ile 22 +Fports a certi(icate to (ile
Kescription
#ool openssl>+9DO>e+port>to>file > miFed F439A string out(ilename PA #ool noteFtQ ?
openssl>+9DO>e+port>to>file./ stores 8S0O into a (ile named #y out96lename in a P+M encoded
(ormat;
,he optional parameter note8t a((ects the ver#osity o( the outputX i( it is FALSE then additional
human2reada#le in(ormation is included in the output; ,he de(ault value o( note8t is TRUE;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
openssl>+9DO>e+port
>P&P 8 _^ 8;0;3A P&P 4?
opensslZF439ZeFport 22 +Fports a certi(icate as a string
Kescription
#ool openssl>+9DO>e+port > miFed F439A string ioutput PA #ool noteFtQ ?
openssl>+9DO>e+port./ stores 8S0O into a string named #y output in a P+M encoded (ormat;
,he optional parameter note8t a((ects the ver#osity o( the outputX i( it is FALSE then additional
human2reada#le in(ormation is included in the output; ,he de(ault value o( note8t is TRUE;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
openssl>+9DO>free
>P&P 8 _^ 8;3;KA P&P 4?
opensslZF439Z(ree 22 Free certi(icate resource
Kescription
void openssl>+9DO>free > resource F439cert ?
openssl>+9DO>free./ (rees the certi(icate associated Eith the speci(ied 8S0Ocert resource (rom
memory;
openssl>+9DO>parse
>P&P 8 _^ 8;3;KA P&P 4?
opensslZF439Zparse 22 Parse an J439 certi(icate and return the in(ormation as an array
Kescription
array openssl>+9DO>parse > miFed F439cert PA #ool shortnamesQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
openssl>+9DO>parse./ returns in(ormation a#out the supplied 8S0OcertA including (ields such as
su#'ect nameA issuer nameA purposesA valid (rom and valid to dates etc; shortnames controls hoE the
data is indeFed in the array 2 i( shortnames is TRUE >the de(ault? then (ields Eill #e indeFed Eith the
short name (ormA otherEiseA the long name (orm Eill #e used 2 e;g;C 5N is the shortname (orm o(
commonName;
The structure o9 the returne# #ata 6s L#el61eratel?M not ?et #ocumente#C as 6t 6s st6ll su1Uect to
chanEe.
openssl>+9DO>read
>P&P 8 _^ 8;3;KA P&P 4?
opensslZF439Zread 22 Parse an J;439 certi(icate and return a resource identi(ier (or it
Kescription
resource openssl>+9DO>read > miFed F439certdata ?
openssl>+9DO>read./ parses the certi(icate supplied #y 8S0Ocert#ata and returns a resource
identi(ier (or it;
IC. ;unciones Jracle
Tabla de contenidos
OraZBind 22 $incula una varia#le P&P a un par*metro Oracle
OraZ5lose 22 5ierra un cursor Oracle
OraZ5olumnName 22 toma el nom#re de una columna de resultados Oracle
oraZcolumnsize 22 Returns the size o( an Oracle result column
OraZ5olumn,ype 22 toma el tipo de una columna de resultados Oracle
OraZ5ommit 22 realiza una transacci-n Oracle
OraZ5ommitO(( 22 desha#ilita el modo automatico de e'ecucion de tareas >autocommit?
OraZ5ommitOn 22 &a#ilita la e'ecucion autom*tica de tareas >autocommit?
oraZdo 22 ParseA +FecA Fetch
OraZ+rror 22 toma los mensa'es de error de Oracle
OraZ+rror5ode 22 captura el c-digo de error Oracle
OraZ+Fec 22 e'ecuta las declaraciones interpretadas en un cursor Oracle
oraZ(etchZinto 22 Fetch a roE into the speci(ied result array
OraZFetch 22 eFtrae una (ila de datos a partir de un cursor
OraZGet5olumn 22 toma datos de la (ila eFtra)da
OraZLogo(( 22 cierra una coneFi-n Oracle
OraZLogon 22 A#re una coneFi-n Oracle
oraZnumcols 22 Returns the num#er o( columns
oraZnumroEs 22 Returns the num#er o( roEs
OraZOpen 22 a#re un cursor Oracle
OraZParse 22 interpreta una declaraci-n OL
oraZplogon 22 Open a persistent Oracle connection
OraZRoll#ac" 22 retrocede en la lista de transacciones >hace un roll #ac"?
Jra>1ind
>P&P 7A P&P 8 A P&P 4?
OraZBind 22 $incula una varia#le P&P a un par*metro Oracle
Kescripci"n
int ora>bind > int cursorA string nom#re de varia#le P&PA string nom#re de par*metro OLA int
longitud PA int tipoQ ?
Devuelve verdadero si el v)nculo se realiza con <FitoA y sino devuelve (also; Los detalles de los
errores pueden eFaminarse usando la (unciones ora>error./ y ora>errorcode./;
+sta (unci-n liga la varia#le P&P nom#rada con el par*metro OL; +l par*mtro OL de#e estar en
la (orma =Cname=; 5on el par*metro optativo tipoA se de(ine si el par*metro OL se trata de un
par*metro de entradaDsalida >3 y por de(ecto?A entrada >1? o salida >0?; 5omo en P&P 7;3;1A se puede
usar las constantes ORAZB.NDZ.NO@,A ORAZB.NDZ.N y ORAZB.NDZO@, en lugar de los
nBmeros;
oraZ#ind de#e ser llamada despu<s de ora>parse./ y antes de ora>e+ec./; Los valores de entrada
pueden pasarse por asignaci-n a las varia#les P&P vinculadasA despues de la llamada a ora>e+ec./
dichas varia#les contendr*n los valores de salidaA si <stos estuvieran disponi#les;
<?php
ora%parse3$curs, "declare tmp 4.*E-E'; beEin tmp @> @in; @out @> tmp; @x @> H.HH; end;"9;
ora%bind3$curs, "result", "@x", $len, C9;
ora%bind3$curs, "input", "@in", 5, 69;
ora%bind3$curs, "output", "@out", 5, C9;
$input > HG5;
ora%exec3$curs9;
echo "'esult@ $result<Z'>?ut@ $output<Z'>4n@ $input";
?>
Jra>Close
>P&P 7A P&P 8 A P&P 4?
OraZ5lose 22 5ierra un cursor Oracle
Kescripci"n
int ora>close > int cursor ?
Devuelve verdadero si el cierre (u< eFitosoA o (also de lo contrario; Los detalles de los errores se
recuperan usando las (unciones ora>error./ y ora>errorcode./;
+sta (unci-n cierra un cursor de datos a#ierto con ora>open./;
Jra>ColumnName
>P&P 7A P&P 8 A P&P 4?
OraZ5olumnName 22 toma el nom#re de una columna de resultados Oracle
Kescripci"n
string Jra>ColumnName > int cursorA int column ?
Devuelve el nomre de un campoDcolumna column en el cursor cursor; el nom#re devuelto estar* en
letras mayBsculas;
ora>columnsi6e
>P&P 7A P&P 8 A P&P 4?
oraZcolumnsize 22 Returns the size o( an Oracle result column
Kescription
int ora>columnsi6e > resource cursorA int column ?
Returns the size o( the Oracle column column on the cursor cursor; 5olumn 3 is the (irst column;
Jra>ColumnType
>P&P 7A P&P 8 A P&P 4?
OraZ5olumn,ype 22 toma el tipo de una columna de resultados Oracle
Kescripci"n
string Jra>ColumnType > int cursorA int column ?
Devuelve el nom#re del tipo de datos del campo o columna column en el cursor cursor; e
devolver* un tipo de datosA de entre los siguientesC
*(,RC!,R2*
*(,RC!,R*
*C!,R*
*NUMAER*
*4ON-*
*4ON- R,I*
*ROI0D*
*D,TE*
*CURSOR*
Jra>Commit
>P&P 7A P&P 8 A P&P 4?
OraZ5ommit 22 realiza una transacci-n Oracle
Kescripci"n
int ora>commit > int conn ?
Devuelve verdadero si es eFitosaA de lo cantrario devuelve (also; Puede verse los detalles del error
usando las (unciones ora>error./ y ora>errorcode./; +sta (unci-n realiza una transacci-n Oracle;
e de(ine como transacci-n cual/uier cam#io en una coneFi-n dadaA desde la Bltima tareaDretroceso
en la e'ecucion >roll#ac"?A anulaci-n de la e'ecuci-n autom*tica de tareas >autocommit?A o cuando se
ha esta#lecido la coneFi-n;
Jra>CommitJff
>P&P 7A P&P 8 A P&P 4?
OraZ5ommitO(( 22 desha#ilita el modo automatico de e'ecucion de tareas >autocommit?
Kescripci"n
int ora>commitoff > int conn ?
Devuelve verdadero si se e'ecuta con <FitoA sino devuelve (also; Los pormenores del error en
cuestionA pueden revisarse invocando las (unciones ora>error./ y ora>errorcode./;
+sta (unci-n desha#ilita la e'ecucion automatica luego de cada instancia ora>e+ec./;
Jra>CommitJn
>P&P 7A P&P 8 A P&P 4?
OraZ5ommitOn 22 &a#ilita la e'ecucion autom*tica de tareas >autocommit?
Kescripci"n
int ora>commiton > int conn ?
+sta (unci-n ha#ilita la e'ecucion automatica luego de cada instancia ora>e+ec./ en la coneFi-n
dada;
Devuelve verdadero si se e'ecuta con <FitoA sino devuelve (also; Los pormenores del error en
cuestionA pueden revisarse invocando las (unciones ora>error./ y ora>errorcode./;
ora>do
>P&P 7A P&P 8 A P&P 4?
oraZdo 22 ParseA +FecA Fetch
Kescription
resource ora>do > resource connA string /uery ?
ora>do./ is /uic" com#ination o( ora>parse./A ora>e+ec./ and ora>fetch./; .t Eill parse and
eFecute a statementA then (etch the (irst result roE;
,his (unction returns a cursor indeF or FALSE on (ailure; Details a#out the error can #e retrieved
using the ora>error./ and ora>errorcode./ (unctions;
ee also ora>parse./Aora>e+ec./A and ora>fetch./;
Jra>Error
>P&P 7A P&P 8 A P&P 4?
OraZ+rror 22 toma los mensa'es de error de Oracle
Kescripci"n
string Jra>Error > int cursorZorZconnection ?
Devuelve los mensa'es de error en la (orma FFF2NNNNN donde FFF es la procedencia del error y
NNNNN es la identi(icaci-n del mensa'e de error;
Nota- +l soporte para las identi(icaciones de coneFi-n (ue agregado en la versi-n 7;3;8;
+n las versiones @N.J de OracleA pueden encontrarse detalles acerca de un mensa'e de error como
esteC $ oerr ora 00001 22226, 22222, "uniQue constraint 3\s.\s9
=iolated" // WRause@ ,n update or insert statement attempted to
insert a duplicate Iey // Sor *rusted ?',ROE con#iEured in LZ"&
",R mode, you may see // this messaEe i# a duplicate entry exists
at a di##erent le=el. // W,ction@ Either remo=e the uniQue
restriction or do not insert the Iey
Jra>ErrorCode
>P&P 7A P&P 8 A P&P 4?
OraZ+rror5ode 22 captura el c-digo de error Oracle
Kescripci"n
int Jra>ErrorCode > int cursorZorZconnection ?
Devuelve el codigo num<rico de error de la Bltima declaraci-n e'ecutada en el cursor o coneFion
espaci(icada;
Nota- +l soporte para las identi(icaciones de coneFi-n (ue agregado en la versi-n 7;3;8;
Jra>E+ec
>P&P 7A P&P 8 A P&P 4?
OraZ+Fec 22 e'ecuta las declaraciones interpretadas en un cursor Oracle
Kescripci"n
int ora>e+ec > int cursor ?
Devuelve verdadero ante la e'ecuci-n eFitosaA de lo contrarioA devuelve (also; Los detalles del error
pueden verse invocando las (unciones ora>error./ y ora>errorcode./;
ora>fetch>into
>P&P 7A P&P 8 A P&P 4?
oraZ(etchZinto 22 Fetch a roE into the speci(ied result array
Kescription
int ora>fetch>into > resource cursorA array iresult PA int (lagsQ ?
Fetches a roE o( data into an array; ,he 9laEs has tEo (lag valuesC i( the
ORA_FETCHINTO_NULLS (lag is setA columns Eith NULL values are set in the arrayX and i( the
ORA_FETCHINTO_ASSOC (lag is setA an associative array is created;
Returns the num#er o( columns (etched;
E'emplo !. ora>fetch>into./
<?php
$results > array39;
ora%#etch%into3$cursor, $results9;
echo $results)2/;
echo $results)6/;
$results > array39;
ora%#etch%into3$cursor, $results, ?',%SE*RH4.*?%.+OO&T?',%SE*RH4.*?%,&&?R9;
echo $results)M"yRolumnM/;
?>
ee also ora>parse./Aora>e+ec./A ora>fetch./A and ora>do./;
Jra>;etch
>P&P 7A P&P 8 A P&P 4?
OraZFetch 22 eFtrae una (ila de datos a partir de un cursor
Kescripci"n
int ora>fetch > int cursor ?
Devuelve verdadero >se eFtra'o una (ila? o (also >no hay mas (ilasA o ha ocurrido un error?; i ocurre
un errorA los detalles del mismo pueden verse invocando las (unciones ora>error./ y
ora>errorcode./; i no hu#o erroresA ora>errorcode./ devolver* 3; Recupera una hilera de datos
partiendo de un cursor especi(icado;
Jra>FetColumn
>P&P 7A P&P 8 A P&P 4?
OraZGet5olumn 22 toma datos de la (ila eFtra)da
Kescripci"n
miFed ora>getcolumn > int cursorA miFed column ?
Devuelve la columna de datos; i hay un errorA se devuelve (also y ora>errorcode./ devulve un
valor distinto de cero; NoteA de igual maneraA /ue la #us/ueda de un resultado Falso en esta (unci-nA
puede resultar verdaderaA aBn en casos en /ue no ocurran erroresC>resultado N@LOA cadenas vaciasA
valor 3 o cadenas =3=?; +Ftrae los datos para una columna o resultado de (unci-n;
Jra>:ogoff
>P&P 7A P&P 8 A P&P 4?
OraZLogo(( 22 cierra una coneFi-n Oracle
Kescripci"n
int ora>logoff > int connection ?
Devuelve verdadero si es eFitosaA o (also si hay errores; Los detalles del error pueden verse
invocando las (unciones ora>error./ y ora>errorcode./; 5ierra la sesi-n de tra#a'o del usuarioA y lo
desconecta del servidor;
Jra>:ogon
>P&P 7A P&P 8 A P&P 4?
OraZLogon 22 A#re una coneFi-n Oracle
Kescripci"n
int ora>logon > string usuarioA string contraseWa ?
+sta#lece una coneFi-n entre P&P y una #ase de datos OracleA con los datos de nom#re de usuario y
contraseWa especi(icados;
Las coneFiones pueden llevarse adelante usando OLVNet indicando el nom#re ,N al usuar6o de
este modoC
$conn > ?ra%OoEon3"usuario@TNSNAME", "contraseDa"9;
i hu#iesen datos con caracteres no2A5..A ha#r)a /ue asegurarse de /ue est< presente la varia#le de
entorno N4S_4,N- en el sistema; Para los modulos de servidorA de#er)an de(inirse en el entorno
del servidor antes de iniciarlo;
Devuelve el )ndice de la coneFi-n si a/uella tuvo <FitoA de lo cantrario devuelve (also; Los detalles
del error pueden verse invocando las (unciones ora>error./ y ora>errorcode./;
ora>numcols
>P&P 7A P&P 8 A P&P 4?
oraZnumcols 22 Returns the num#er o( columns
Kescription
int ora>numcols > resource cursor ?
ora>numcols./ returns the num#er o( columns in a result; Only returns meaning(ul values a(ter an
parseDeFecD(etch se/uence;
ee also ora>parse./Aora>e+ec./A ora>fetch./A and ora>do./;
ora>numro3s
>P&P 7A P&P 8 A P&P 4?
oraZnumroEs 22 Returns the num#er o( roEs
Kescription
int ora>numro3s > resource cursor ?
ora>numro3s./ returns the num#er o( roEs in a result;
Jra>Jpen
>P&P 7A P&P 8 A P&P 4?
OraZOpen 22 a#re un cursor Oracle
Kescripci"n
int ora>open > int connection ?
A#re un cursor asociado con la coneFi-n;
Devuelve el )ndice del cursor o Falso si hay un error; Los detalles del error pueden verse invocando
las (unciones ora>error./ y ora>errorcode./;
Jra>Parse
>P&P 7A P&P 8 A P&P 4?
OraZParse 22 interpreta una declaraci-n OL
Kescripci"n
int ora>parse > int cursorZindA string s/lZstatementA int de(er ?
+sta (unci-n interpreta una declaraci-n OL o un #lo/ue PLDOL y los asocia con el cursor dado;
Devuelve 3 si se e'ecuta con eFitoA o 21 ante un error;
ora>plogon
>P&P 7A P&P 8 A P&P 4?
oraZplogon 22 Open a persistent Oracle connection
Kescription
resource ora>plogon > string userA string passEord ?
+sta#lishes a persistent connection #etEeen P&P and an Oracle data#ase Eith the username user
and passEord pass7or#;
ee also ora>logon./;
Jra>MollbacB
>P&P 7A P&P 8 A P&P 4?
OraZRoll#ac" 22 retrocede en la lista de transacciones >hace un roll #ac"?
Kescripci"n
int ora>rollbacB > int connection ?
Deshace una transaccion Oracle; >$er ora>commit./ para la de(inici-n de transacci-n;?
Devuelve verdadero si tiene <FitoA o (also si hay un error; Los detalles del error pueden verse
invocando las (unciones ora>error./ y ora>errorcode./;
ICI. ;unciones de Control de ,alida
Introducci"n
Las (unciones de 5ontrol de alida le permiten controlar cu*ndo es enviada la salida desde el script;
+sto puede resultar Btil en muchas situaciones di(erentesA especialmente si necesita enviar ca#eceras
al navegador despu<s de /ue su script ha comenzado a enviar datos; Las (unciones de 5ontrol de
alida no a(ectan las ca#eceras enviadas usando header./ o setcooBie./A s-lo (unciones como echo
./ y los datos entre #lo/ues de c-digo P&P;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones de configuraci"n del Control de ,alida
Nombre Predeterminado Modificable
outputZ#u((eri
ng
=3=
P&PZ.N.ZP+RD.Rl
P&PZ.N.Z%,+M
outputZhandler N@LL
P&PZ.N.ZP+RD.Rl
P&PZ.N.Z%,+M
implicitZ(lush =3=
P&PZ.N.ZP+RD.Rl
P&PZ.N.Z%,+M
Para m*s detalles so#re las constantes P&PZ.N.ZV y su de(inici-nA vea ini>set./;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
output_1u99er6nE booleanDinteger
Puede ha#ilitar el uso de #B(eres de salida para todos los archivosA de(iniendo esta directiva
como HOnH; i desea limitar el tamaWo del #B(er a cierta cantidad 2 puede usar un nBmero
m*Fimo de #ytesA en lugar de HOnHA como valor para esta directiva >p;e';A
outputZ#u((ering^839K?;
output_han#ler string
Puede redireccionar toda la salida de sus scripts a una (unci-n; Por e'emploA si esta#lece el
valor de outputZhandler a mb>output>handler./A la codi(icaci-n de caracteres ser*
convertida de (orma transparente a la codi(icaci-n especi(icada; Al de(inir cual/uier gestor de
salidaA el control mediante #B(eres se activa autom*ticamente;
Nota- @sted no puede usar mb>output>handler./ con ob>icon5>handler./ al
tiempoA y no puede usar ob>g6handler./ y zli#;outputZcompression al tiempo;
6mpl6c6t_9lush boolean
FALSE por de(ecto; 5am#iar este valor a TRUE le indica a P&P /ue de#e decirle a la capa de
salida /ue se vac)e autom*ticamente despu<s de cada #lo/ue de salida; +sto es Walente a
llamar la (unci-n de P&P flush./ despu<s de todas y cada una de las llamadas a print./ o echo
./A y cada #lo/ue !TM4;
5uando use P&P #a'o un entorno Ee#A el ha#ilitar esta opci-n tiene unas implicaciones serias
en el rendimientoA y por lo general se recomienda su uso Bnicamente para prop-sitos de
depuraci-n; +ste valor es igual a TRUE por de(ecto cuando se opera #a'o la S,+0 C40;
$ea tam#i<n ob>implicit>flush./;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
E'emplos
E'emplo !. E'emplo de Control de ,alida
<?php
ob%start39;
echo "HolaVn";
setcooIie3"nombre%cooIie", "datos%cooIie"9;
ob%end%#lush39;
?>
+n el anterior e'emploA la salida de echo./ ser)a almacenada en el #B(er de salida hasta /ue
ob>end>flush./ sea llamada; +ntre tantoA la llamada a setcooBie./ almacena satis(actoriamente una
coo"ie sin causar un error; >NormalmenteA usted no puede enviar ca#eceras al navegador despu<s de
/ue se han enviado datos;?
Nota- 5uando se actualice desde P&P 8;1 >y 8;0? hacia 8;7A de#e asegurarse de /ue
6mpl6ct_9lush tenga el valor O33 en su php.ini de#ido a un (allo en versiones
antiguasA de otra (ormaA cual/uier salida procesada por ob>start./ no ser* ocultada en la
salida (inal;
Cer tambi%n
$ea tam#i<n header./ y setcooBie./;
Tabla de contenidos
(lush 22 Flush the output #u((er
o#Zclean 22 Limpiar >eliminar? el #B(er de salida
o#ZendZclean 22 5lean >erase? the output #u((er and turn o(( output #u((ering
o#ZendZ(lush 22 Flush >send? the output #u((er and turn o(( output #u((ering
o#Z(lush 22 $aciar >enviar? el #B(er de salida
o#ZgetZclean 22 O#tener los contenidos del #B(er actual y eliminar el #B(er de salida actual
o#ZgetZcontents 22 Devolver el contenido del #B(er de salida
o#ZgetZ(lush 22 Flush the output #u((erA return it as a string and turn o(( output #u((ering
o#ZgetZlength 22 Return the length o( the output #u((er
o#ZgetZlevel 22 Devolver el nivel de anidamiento del mecanismo de #B(eres de salida
o#ZgetZstatus 22 O#tener el status de los #B(eres de salida
o#Zgzhandler 22 Llamada de retorno de o#Zstart para comprimir mediante gzip el #B(er de salida
o#ZimplicitZ(lush 22 ,urn implicit (lush onDo((
o#ZlistZhandlers 22 List all output handlers in use
o#Zstart 22 ,urn on output #u((ering
outputZaddZreEriteZvar 22 Add @RL reEriter values
outputZresetZreEriteZvars 22 Reset @RL reEriter values
flush
>P&P 7A P&P 8 A P&P 4?
(lush 22 Flush the output #u((er
Kescription
void flush > void ?
Flushes the output #u((ers o( P&P and Ehatever #ac"end P&P is using >5G.A a Ee# serverA etc;?
,his e((ectively tries to push all the output so (ar to the userHs #roEser;
ob>clean
>P&P 8 _^ 8;0;3A P&P 4?
o#Zclean 22 Limpiar >eliminar? el #B(er de salida
Kescripci"n
void ob>clean > void ?
+sta (unci-n descarta los contenidos del #B(er de salida;
+sta (unci-n no destruye el #B(er de salidaA como lo hace ob>end>clean./;
$ea tam#i<n ob>flush./A ob>end>flush./ y ob>end>clean./;
ob>end>clean
>P&P 8 A P&P 4?
o#ZendZclean 22 5lean >erase? the output #u((er and turn o(( output #u((ering
Kescription
void ob>end>clean > void ?
,his (unction discards the contents o( the output #u((er and turns o(( output #u((ering;
ee also ob>start./ and ob>end>flush./;
ob>end>flush
>P&P 8 A P&P 4?
o#ZendZ(lush 22 Flush >send? the output #u((er and turn o(( output #u((ering
Kescription
void ob>end>flush > void ?
,his (unction Eill send the contents o( the output #u((er >i( any? and turn output #u((ering o((; .( you
Eant to (urther process the #u((erHs contents you have to call ob>get>contents./ #e(ore
ob>end>flush./ as the #u((er contents are discarded a(ter ob>get>contents./ is called;
ee also ob>start./A ob>get>contents./A and ob>end>clean./;
ob>flush
>P&P 8 _^ 8;0;3A P&P 4?
o#Z(lush 22 $aciar >enviar? el #B(er de salida
Kescripci"n
void ob>flush > void ?
+sta (unci-n enviar* los contenidos del #B(er de salida >si los hay?; i desea continuar procesando
los contenidos del #B(erA tiene /ue llamar ob>get>contents./ antes de ob>flush./A ya /ue los
contenidos del #B(er son descartados luego de /ue la (unci-n ob>flush./ es llamada;
+sta (unci-n no destruye el #B(er de salidaA como lo hace ob>end>flush./;
$ea tam#i<n ob>get>contents./A ob>clean./A ob>end>flush./ y ob>end>clean./;
ob>get>clean
>P&P 8 _^ 8;7;3A P&P 4?
o#ZgetZclean 22 O#tener los contenidos del #B(er actual y eliminar el #B(er de salida actual
Kescripci"n
string ob>get>clean > void ?
+sta (unci-n devolver* los contenidos del #B(er de salida y (inalizar* el control de salida mediante
#B(eres; i el control de salida con #B(eres no est* activoA entonces se devuelve FALSE;
ob>get>clean./ #*sicamente e'ecuta tanto ob>get>contents./ como ob>end>clean./;
E'emplo !. )n e'emplo simple de ob>get>clean./
<?php
ob%start39;
echo "Hola "undo";
$salida > ob%Eet%clean39;
$salida > strtolo8er3$salida9;
=ar%dump3$salida9;
?>
Nuestro e'emplo producir* la salidaC
strinE3629 "hola mundo"
$ea tam#i<n ob>start./ y ob>get>contents./;
ob>get>contents
>P&P 8 A P&P 4?
o#ZgetZcontents 22 Devolver el contenido del #B(er de salida
Kescripci"n
string ob>get>contents > void ?
+sta (unci-n devolver* los contenidos del #B(er de salidaA o FALSEA si no est* activo el uso del
#B(er de salida;
$ea tam#i<n ob>start./ y ob>get>length./;
ob>get>flush
>P&P 8 _^ 8;7;3A P&P 4?
o#ZgetZ(lush 22 Flush the output #u((erA return it as a string and turn o(( output #u((ering
Kescription
string ob>get>flush > void ?
ob>get>flush./ (lushs the output #u((erA return it as a string and turns o(( output #u((ering;
ob>get>flush./ returns FALSE i( no #u((ering is active;
Nota- ,his (unction is similar to ob>end>flush./A eFcept that this (unction returns the
#u((er as a string;
E'emplo !. ob>get>flush./ e+ample
<?php
//usinE output%bu##erinE>?n
print%r3ob%list%handlers399;
//sa=e bu##er in a #ile
$bu##er > ob%Eet%#lush39;
#ile%put%contents3Mbu##er.txtM, $bu##er9;
print%r3ob%list%handlers399;
?>
,he a#ove eFample Eill outputC
,rray
3
)2/ >> de#ault output handler
9
,rray
3
9
ee also ob>end>clean./A ob>end>flush./ and ob>list>handlers./;
ob>get>length
>P&P 8 _^ 8;3;0A P&P 4?
o#ZgetZlength 22 Return the length o( the output #u((er
Kescription
string ob>get>length > void ?
,his Eill return the length o( the contents in the output #u((er or FALSEA i( output #u((ering isntHt
active;
ee also ob>start./ and ob>get>contents./;
ob>get>le5el
>P&P 8 _^ 8;0;3A P&P 4?
o#ZgetZlevel 22 Devolver el nivel de anidamiento del mecanismo de #B(eres de salida
Kescripci"n
int ob>get>le5el > void ?
+sta (unci-n devolver* el nivel de gestores de #B(eres de control anidados o cero si el uso de
#B(eres de salida se encuentra desactivado;
$ea tam#i<n ob>start./ y ob>get>contents./;
ob>get>status
>P&P 8 _^ 8;0;3A P&P 4?
o#ZgetZstatus 22 O#tener el status de los #B(eres de salida
Kescripci"n
array ob>get>status > P#ool statusZcompletoQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
+sta (unci-n devolver* el status actual de los #B(eres de salida; Devuelve una matriz /ue contiene el
est*tus de #B(erA o FALSE en caso de (allo;
$ea tam#i<n ob>get>le5el./;
ob>g6handler
>P&P 8 _^ 8;3;8A P&P 4?
o#Zgzhandler 22 Llamada de retorno de o#Zstart para comprimir mediante gzip el #B(er de salida
Kescripci"n
string ob>g6handler > string #u(erA int modo ?
+l prop-sito de ob>g6handler./ es el de ser usado como una llamada de retorno para ob>start./A
(acilitando el env)o de datos codi(icados mediante gz hacia navegadores Ee# /ue soportan la
gesti-n de p*ginas Ee# comprimidas; Antes de /ue ob>g6handler./ env)e realmente los datosA
determina /u< tipo de codi(icaci-n de contenido acepta el navegador >=gzip=A =de(late= o ninguno? y
devolver* su salida acordemente; ,odos los navegadores son soportadosA ya /ue es tarea del
navegador el enviar la ca#ecera apropiada indicando /ue acepta p*ginas Ee# comprimidas;
Nota- mo#o (ue aWadido en P&P 8;3;4;
E'emplo !. E'emplo de ob>g6handler./
<?php
ob%start3"ob%E0handler"9;
?>
<html>
<body>
<p>Esta debe ser una p&aacute;Eina 8eb comprimida.</p>
</html>
<body>
Nota- No puede usar ob>g6handler./ y zli#;outputZcompression al mismo tiempo;
,am#i<n note /ue el uso de zli#;outputZcompression se pre(iere so#re el uso de
ob>g6handler./;
$ea tam#i<n ob>start./ y ob>end>flush./;
ob>implicit>flush
>P&P 8 A P&P 4?
o#ZimplicitZ(lush 22 ,urn implicit (lush onDo((
Kescription
void ob>implicit>flush > Pint (lagQ ?
ob>implicit>flush./ Eill turn implicit (lushing on or o(( >i( no 9laE is givenA it de(aults to on?;
.mplicit (lushing Eill result in a (lush operation a(ter every output callA so that eFplicit calls to flush
./ Eill no longer #e needed;
,urning implicit (lushing on Eill disa#le output #u((eringA the output #u((ers current output Eill #e
sent as i( ob>end>flush./ had #een called;
ee also flush./A ob>start./A and ob>end>flush./;
ob>list>handlers
>P&P 8 _^ 8;7;3A P&P 4?
o#ZlistZhandlers 22 List all output handlers in use
Kescription
array ob>list>handlers > void ?
,his Eill return an array Eith the output handlers in use >i( any?; .( outputZ#u((ering is ena#ledA
ob>list>handlers./ Eill return =de(ault output handler=;
E'emplo !. ob>list>handlers./ e+ample
<?php
//usinE output%bu##erinE>?n
print%r3ob%list%handlers399;
ob%end%#lush39;
ob%start3"ob%E0handler"9;
print%r3ob%list%handlers399;
ob%end%#lush39;
?>
,he a#ove eFample Eill outputC
,rray
3
)2/ >> de#ault output handler
9
,rray
3
)2/ >> ob%E0handler
9
ee also ob>end>clean./A ob>end>flush./A ob>get>flush./A ob>start./;
ob>start
>P&P 8 A P&P 4?
o#Zstart 22 ,urn on output #u((ering
Kescription
void ob>start > void ?
,his (unction Eill turn output #u((ering on; Lhile output #u((ering is active no output is sent (rom
the scriptA instead the output is stored in an internal #u((er;
,he contents o( this internal #u((er may #e copied into a string varia#le using ob>get>contents./;
,o output Ehat is stored in the internal #u((erA use ob>end>flush./; AlternativelyA ob>end>clean./
Eill silently discard the #u((er contents;
ee also ob>get>contents./A ob>end>flush./A ob>end>clean./A and ob>implicit>flush./
output>add>re3rite>5ar
>P&P 8 _^ 8;7;3A P&P 4?
outputZaddZreEriteZvar 22 Add @RL reEriter values
Kescription
#ool output>add>re3rite>5ar > string nameA string value ?
,his (unction reErite the @RLs and (orms Eith the given varia#le;
Nota- ,his (unction #u((ers the output;
E'emplo !. output>add>re3rite>5ar./ e+ample
<?php
output%add%re8rite%=ar3M=arM, M=alueM9;
// a linI
echo M<a hre#>"#ile.php">linI</a>M;
// a #orm
echo M<#orm action>"script.php" method>"post">
<input type>"text" name>"=arC" />
</#orm>M;
print%r3ob%list%handlers399;
?>
,he a#ove eFample Eill outputC
<a hre#>"#ile.php?=ar>=alue">linI</a>
<#orm action>"script.php" method>"post">
<input type>"hidden" name>"=ar" =alue>"=alue" />
<input type>"text" name>"=arC" />
</#orm>
,rray
3
)2/ >> +'OF'e8riter
9
ee also output>reset>re3rite>5ars./A ob>flush./ and ob>list>handlers./;
output>reset>re3rite>5ars
>P&P 8 _^ 8;7;3A P&P 4?
outputZresetZreEriteZvars 22 Reset @RL reEriter values
Kescription
#ool output>reset>re3rite>5ars > void ?
,his (unction resets the @RL reEriter and undo the changes made #y output>add>re3rite>5ar./
andDor #y session>start./ that are still in the #u((er;
E'emplo !. output>reset>re3rite>5ars./ e+ample
<?php
session%start39;
output%add%re8rite%=ar3M=arM, M=alueM9;
echo M<a hre#>"#ile.php">linI</a>M;
ob%#lush39;
output%reset%re8rite%=ars39;
echo M<a hre#>"#ile.php">linI</a>M;
?>
,he a#ove eFample Eill outputC
<a hre#>"#ile.php?H&E&&4L>xxx&=ar>=alue">linI</a>
<a hre#>"#ile.php">linI</a>
ee also output>add>re3rite>5ar./A ob>flush./A ob>list>handlers./ and session>start./;
ICII. Jb'ect property and method call
o5erloading
Introducci"n
,he purpose o( this eFtension is to alloE overloading o( o#'ect property access and method calls;
Only one (unction is de(ined in this eFtensionA o5erload./ Ehich ta"es the name o( the class that
should have this (unctionality ena#led; ,he class named has to de(ine appropriate methods i( it
Eants to have this (unctionalityC __EetLMA __setLM and __callLM respectively (or gettingDsetting a
propertyA or calling a method; ,his Eay overloading can #e selective; .nside these handler (unctions
the overloading is disa#led so you can access o#'ect properties normally;
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
A5iso
,his eFtension is not a part o( P&P 4; P&P 4 supports __EetLMA __setLM and __callLM natively; ee
the Overloading in P&P 4 page (or more in(ormation;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
.n order to use these (unctionsA you must compile P&P Eith the ==ena1le=oerloa# option; tarting
Eith P&P 8;7;3 this eFtension is ena#led #y de(ault; %ou can disa#le overload support Eith ==
#6sa1le==oerloa#;
La versi-n para LindoEs de +!+ tiene soporte nativo para esta eFtensi-n; No se necesita cargar
ninguna eFtensi-n adicional para usar estas (unciones;
Nota- Builtin support (or overload is availa#le Eith P&P 8;7;3;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
E'emplos
ome simple eFamples on using the o5erload./ (unctionC
E'emplo !. J5erloading a PHP class
<?php
class ?? :
=ar $a > 666;
=ar $elem > array3MbM >> K, McM >> 1C9;
// RallbacI method #or EettinE a property
#unction %%Eet3$prop%name, &$prop%=alue9
:
i# 3isset3$thisF>elem)$prop%name/99 :
$prop%=alue > $thisF>elem)$prop%name/;
return true;
; else :
return #alse;
;
;
// RallbacI method #or settinE a property
#unction %%set3$prop%name, $prop%=alue9
:
$thisF>elem)$prop%name/ > $prop%=alue;
return true;
;
;
// Here 8e o=erload the ?? object
o=erload3M??M9;
$o > ne8 ??;
echo "V$oF>a@ $oF>aVn"; // print@ $oF>a@ 666
echo "V$oF>b@ $oF>bVn"; // print@ $oF>b@ K
echo "V$oF>c@ $oF>cVn"; // print@ $oF>c@ 1C
echo "V$oF>d@ $oF>dVn"; // print@ $oF>d@
// add a ne8 item to the $elem array in ??
$oF>x > 5G;
// instantiate stdclass 3it is builtFin in H 19
// $=al is not o=erloaded!
$=al > ne8 stdclass;
$=alF>prop > 555;
// &et "a" to be an array 8ith the $=al object in it
// Zut %%set39 8ill put this in the $elem array
$oF>a > array3$=al9;
=ar%dump3$oF>a)2/F>prop9;
?>
Tabla de contenidos
overload 22 +na#le property and method call overloading (or a class
o5erload
>P&P 8 _^ 8;0;3?
overload 22 +na#le property and method call overloading (or a class
Kescription
void o5erload > Pstring classZnameQ ?
,he o5erload./ (unction Eill ena#le property and method call overloading (or a class identi(ied #y
class_name; ee an eFample in the introductory section o( this part;
ICIII. J5rimos ,$: functions
Ovrimos OL erverA is a clientDserverA transactional RDBM com#ined Eith Le# capa#ilities and
(ast transactions;
Ovrimos OL erver is availa#le at EEE;ovrimos;com; ,o ena#le ovrimos support in P&P 'ust
compile php Eith the H22Eith2ovrimosH parameter to con(igure script; %ouHll need to install the s/lcli
li#rary availa#le in the Ovrimos OL erver distri#ution;
E'emplo !. Connect to J5rimos ,$: ,er5er and select from a system table
<?php
$conn > o=rimos%connect 3"ser=er.domain.com", "J226", "admin", "pass8ord"9;
i# 3$conn !> 29 :
echo 3"Ronnection oI!"9;
$res > o=rimos%exec 3$conn, "select table%id, table%name #rom sys.tables"9;
i# 3$res !> 29 :
echo "&tatement oI!";
o=rimos%result%all 3$res9;
o=rimos%#ree%result 3$res9;
;
o=rimos%close3$conn9;
;
?>
,his Eill 'ust connect to OL erver;
Tabla de contenidos
ovrimosZclose 22 5loses the connection to ovrimos
ovrimosZcommit 22 5ommits the transaction
ovrimosZconnect 22 5onnect to the speci(ied data#ase
ovrimosZcursor 22 Returns the name o( the cursor
ovrimosZeFec 22 +Fecutes an OL statement
ovrimosZeFecute 22 +Fecutes a prepared OL statement
ovrimosZ(etchZinto 22 Fetches a roE (rom the result set
ovrimosZ(etchZroE 22 Fetches a roE (rom the result set
ovrimosZ(ieldZlen 22 Returns the length o( the output column
ovrimosZ(ieldZname 22 Returns the output column name
ovrimosZ(ieldZnum 22 Returns the >12#ased? indeF o( the output column
ovrimosZ(ieldZtype 22 Returns the >numeric? type o( the output column
ovrimosZ(reeZresult 22 Frees the speci(ied resultZid
ovrimosZlongreadlen 22 peci(ies hoE many #ytes are to #e retrieved (rom long datatypes
ovrimosZnumZ(ields 22 Returns the num#er o( columns
ovrimosZnumZroEs 22 Returns the num#er o( roEs a((ected #y update operations
ovrimosZprepare 22 Prepares an OL statement
ovrimosZresultZall 22 Prints the Ehole result set as an &,ML ta#le
ovrimosZresult 22 Retrieves the output column
ovrimosZroll#ac" 22 Rolls #ac" the transaction
o5rimos>close
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZclose 22 5loses the connection to ovrimos
Kescription
void o5rimos>close > int connection ?
o5rimos>close./ is used to close the speci(ied connection;
o5rimos>close./ closes a connection to Ovrimos; ,his has the e((ect o( rolling #ac" uncommitted
transactions;
o5rimos>commit
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZcommit 22 5ommits the transaction
Kescription
int o5rimos>commit > int connectionZid ?
o5rimos>commit./ is used to commit the transaction;
o5rimos>commit./ commits the transaction;
o5rimos>connect
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZconnect 22 5onnect to the speci(ied data#ase
Kescription
int o5rimos>connect > string hostA string d#A string userA string passEord ?
o5rimos>connect./ is used to connect to the speci(ied data#ase;
o5rimos>connect./ returns a connection id >greater than 3? or 3 (or (ailure; ,he meaning o( HhostH
and HportH are those used everyEhere in Ovrimos AP.s; H&ostH is a host name or .P address and Hd#H is
either a data#ase nameA or a string containing the port num#er;
E'emplo !. o5rimos>connect./ E+ample
<?php
$conn > o=rimos%connect 3"ser=er.domain.com", "J226", "admin", "pass8ord"9;
i# 3$conn !> 29 :
echo "Ronnection oI!";
$res>o=rimos%exec 3$conn, "select table%id, table%name #rom sys.tables"9;
i# 3$res !> 29 :
echo "&tatement oI!";
o=rimos%result%all 3$res9;
o=rimos%#ree%result 3$res9;
;
o=rimos%close 3$conn9;
;
?>
,he a#ove eFample Eill connect to the data#ase and print out the speci(ied ta#le;
o5rimos>cursor
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZcursor 22 Returns the name o( the cursor
Kescription
int o5rimos>cursor > int resultZid ?
o5rimos>cursor./ is used to get the name o( the cursor;
o5rimos>cursor./ returns the name o( the cursor; @se(ul Ehen Eishing to per(orm positioned
updates or deletes;
o5rimos>e+ec
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZeFec 22 +Fecutes an OL statement
Kescription
int o5rimos>e+ec > int connectionZidA string /uery ?
o5rimos>e+ec./ is used to eFecute an OL statement;
o5rimos>e+ec./ eFecutes an OL statement >/uery or update? and returns a resultZid or FALSE;
+videntlyA the OL statement should not contain parameters;
o5rimos>e+ecute
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZeFecute 22 +Fecutes a prepared OL statement
Kescription
int o5rimos>e+ecute > int resultZid PA array parametersZarrayQ ?
o5rimos>e+ecute./ is used to eFecute an OL statement;
o5rimos>e+ecute./ eFecutes a prepared statement; Returns TRUE or FALSE; .( the prepared
statement contained parameters >/uestion mar"s in the statement?A the correct num#er o( parameters
should #e passed in an array; Notice that . donHt (olloE the P&P convention o( placing 'ust the name
o( the optional parameter inside s/uare #rac"ets; . couldnHt #ring mysel( on li"ing it;
o5rimos>fetch>into
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZ(etchZinto 22 Fetches a roE (rom the result set
Kescription
int o5rimos>fetch>into > int resultZidA array resultZarray PA string hoE PA int roEnum#erQQ ?
o5rimos>fetch>into./ is used to (etch a roE (rom the result set;
o5rimos>fetch>into./ (etches a roE (rom the result set into HresultZarrayHA Ehich should #e passed
#y re(erence; Lhich roE is (etched is determined #y the tEo last parameters; HhoEH is one o( HNeFtH
>de(ault?A HPrevHA HFirstHA HLastHA HA#soluteHA corresponding to (orEard direction (rom current positionA
#ac"Eard direction (rom current positionA (orEard direction (rom the startA #ac"Eard direction (rom
the end and a#solute position (rom the start >essentially Walent to H(irstH #ut needs HroEnum#erH?; 5ase
is not signi(icant; HRoEnum#erH is optional eFcept (or a#solute positioning; Returns TRUE or
FALSE;
E'emplo !. A fetch into e+ample
<?php
$conn>o=rimos%connect 3"neptune", "J226", "admin", "pass8ord"9;
i# 3$conn!>29 :
echo "Ronnection oI!";
$res>o=rimos%exec 3$conn,"select table%id, table%name #rom sys.tables"9;
i# 3$res !> 29 :
echo "&tatement oI!";
i# 3o=rimos%#etch%into 3$res, $ro899 :
list 3$table%id, $table%name9 > $ro8;
echo "table%id>".$table%id.", table%name>".$table%name."Vn";
i# 3o=rimos%#etch%into 3$res, $ro899 :
list 3$table%id, $table%name9 > $ro8;
echo "table%id>".$table%id.", table%name>".$table%name."Vn";
; else :
echo ".ext@ errorVn";
;
; else :
echo "Sirst@ errorVn";
;
o=rimos%#ree%result 3$res9;
;
o=rimos%close 3$conn9;
;
?>
,his eFample Eill (etch a roE;
o5rimos>fetch>ro3
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZ(etchZroE 22 Fetches a roE (rom the result set
Kescription
int o5rimos>fetch>ro3 > int resultZid PA int hoE PA int roEZnum#erQQ ?
o5rimos>fetch>ro3./ is used to (etch a roE (rom the result set;
o5rimos>fetch>ro3./ (etches a roE (rom the result set; 5olumn values should #e retrieved Eith
other calls; Returns TRUE or FALSE;
E'emplo !. A fetch ro3 e+ample
<?php
$conn > o=rimos%connect 3"remote.host", "J226", "admin", "pass8ord"9;
i# 3$conn !> 29 :
echo "Ronnection oI!";
$res>o=rimos%exec 3$conn, "select table%id, table%name #rom sys.tables"9;
i# 3$res !> 29 :
echo "&tatement oI!";
i# 3o=rimos%#etch%ro8 3$res, "Sirst"99 :
$table%id > o=rimos%result 3$res, 69;
$table%name > o=rimos%result 3$res, C9;
echo "table%id>".$table%id.", table%name>".$table%name."Vn";
i# 3o=rimos%#etch%ro8 3$res, ".ext"99 :
$table%id > o=rimos%result 3$res, "table%id"9;
$table%name > o=rimos%result 3$res, "table%name"9;
echo "table%id>".$table%id.", table%name>".$table%name."Vn";
; else :
echo ".ext@ errorVn";
;
; else :
echo "Sirst@ errorVn";
;
o=rimos%#ree%result 3$res9;
;
o=rimos%close 3$conn9;
;
?>
,his Eill (etch a roE and print the result;
o5rimos>field>len
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZ(ieldZlen 22 Returns the length o( the output column
Kescription
int o5rimos>field>len > int resultZidA int (ieldZnum#er ?
o5rimos>field>len./ is used to get the length o( the output column;
o5rimos>field>len./ returns the length o( the output column at the >12#ased? indeF speci(ied;
o5rimos>field>name
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZ(ieldZname 22 Returns the output column name
Kescription
int o5rimos>field>name > int resultZidA int (ieldZnum#er ?
o5rimos>field>name./ is used to get the output column name;
o5rimos>field>name./ returns the output column name at the >12#ased? indeF speci(ied;
o5rimos>field>num
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZ(ieldZnum 22 Returns the >12#ased? indeF o( the output column
Kescription
int o5rimos>field>num > int resultZidA string (ieldZname ?
o5rimos>field>num./ is used to get the >12#ased? indeF o( the output column;
o5rimos>field>num./ returns the >12#ased? indeF o( the output column speci(ied #y nameA or
FALSE;
o5rimos>field>type
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZ(ieldZtype 22 Returns the >numeric? type o( the output column
Kescription
int o5rimos>field>type > int resultZidA int (ieldZnum#er ?
o5rimos>field>type./ is used to get the >numeric? type o( the output column;
o5rimos>field>type./ returns the >numeric? type o( the output column at the >12#ased? indeF
speci(ied;
o5rimos>free>result
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZ(reeZresult 22 Frees the speci(ied resultZid
Kescription
int o5rimos>free>result > int resultZid ?
o5rimos>free>result./ is used to (ree the resultZid;
o5rimos>free>result./ (rees the speci(ied resultZid; Returns TRUE;
o5rimos>longreadlen
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZlongreadlen 22 peci(ies hoE many #ytes are to #e retrieved (rom long datatypes
Kescription
int o5rimos>longreadlen > int resultZidA int length ?
o5rimos>longreadlen./ is used to speci(y hoE many #ytes are to #e retrieved (rom long datatypes;
o5rimos>longreadlen./ speci(ies hoE many #ytes are to #e retrieved (rom long datatypes >long
varchar and long var#inary?; De(ault is zero; Regardless o( its ta"ing a resultZid as an argumentA it
currently sets this parameter (or all result sets; Returns TRUE;
o5rimos>num>fields
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZnumZ(ields 22 Returns the num#er o( columns
Kescription
int o5rimos>num>fields > int resultZid ?
o5rimos>num>fields./ is used to get the num#er o( columns;
o5rimos>num>fields./ returns the num#er o( columns in a resultZid resulting (rom a /uery;
o5rimos>num>ro3s
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZnumZroEs 22 Returns the num#er o( roEs a((ected #y update operations
Kescription
int o5rimos>num>ro3s > int resultZid ?
o5rimos>num>ro3s./ is used to get the num#er o( roEs a((ected #y update operations;
o5rimos>num>ro3s./ returns the num#er o( roEs a((ected #y update operations;
o5rimos>prepare
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZprepare 22 Prepares an OL statement
Kescription
int o5rimos>prepare > int connectionZidA string /uery ?
o5rimos>prepare./ is used to prepare an OL statement;
o5rimos>prepare./ prepares an OL statement and returns a resultZid >or FALSE on (ailure?;
E'emplo !. Connect to J5rimos ,$: ,er5er and prepare a statement
<?php
$conn>o=rimos%connect 3"db%host", "J226", "admin", "pass8ord"9;
i# 3$conn!>29 :
echo "Ronnection oI!";
$res>o=rimos%prepare 3$conn, "select table%id, table%name
#rom sys.tables 8here table%id>6"9;
i# 3$res !> 29 :
echo "repare oI!";
i# 3o=rimos%execute 3$res99 :
echo "Execute oI!Vn";
o=rimos%result%all 3$res9;
; else :
echo "Execute not oI!";
;
o=rimos%#ree%result 3$res9;
; else :
echo "repare not oI!Vn";
;
o=rimos%close 3$conn9;
;
?>
,his Eill connect to Ovrimos OL erverA prepare a statement and the eFecute it;
o5rimos>result>all
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZresultZall 22 Prints the Ehole result set as an &,ML ta#le
Kescription
int o5rimos>result>all > int resultZid PA string (ormatQ ?
o5rimos>result>all./ is used to print an &,ML ta#le containing the Ehole result set;
o5rimos>result>all./ prints the Ehole result set as an &,ML ta#le; Returns TRUE or FALSE;
E'emplo !. Prepare a statementE e+ecuteE and 5ie3 the result
<?php
$conn > o=rimos%connect 3"db%host", "J226", "admin", "pass8ord"9;
i# 3$conn !> 29 :
echo "Ronnection oI!";
$res > o=rimos%prepare 3$conn, "select table%id, table%name
#rom sys.tables 8here table%id > H"9;
i# 3$res !> 29 :
echo "repare oI!";
i# 3o=rimos%execute 3$res, array3<999 :
echo "Execute oI!Vn";
o=rimos%result%all 3$res9;
; else :
echo "Execute not oI!";
;
o=rimos%#ree%result 3$res9;
; else :
echo "repare not oI!Vn";
;
o=rimos%close 3$conn9;
;
?>
,his Eill eFecute an OL statement and print the result in an &,ML ta#le;
E'emplo *. J5rimos>result>all 3ith meta(information
<?php
$conn > o=rimos%connect 3"db%host", "J226", "admin", "pass8ord"9;
i# 3$conn !> 29 :
echo "Ronnection oI!";
$res > o=rimos%exec 3$conn, "select table%id, table%name
#rom sys.tables 8here table%id > 6"9
i# 3$res !> 29 :
echo "&tatement oI! cursor>".o=rimos%cursor 3$res9."Vn";
$colnb > o=rimos%num%#ields 3$res9;
echo "?utput columns>".$colnb."Vn";
#or 3$i>6; $i<>$colnb; $i[[9 :
$name > o=rimos%#ield%name 3$res, $i9;
$type > o=rimos%#ield%type 3$res, $i9;
$len > o=rimos%#ield%len 3$res, $i9;
echo "Rolumn ".$i." name>".$name." type>".$type." len>".$len."Vn";
;
o=rimos%result%all 3$res9;
o=rimos%#ree%result 3$res9;
;
o=rimos%close 3$conn9;
;
?>
E'emplo 7. o5rimos>result>all e+ample
<?php
$conn > o=rimos%connect 3"db%host", "J226", "admin", "pass8ord"9;
i# 3$conn !> 29 :
echo "Ronnection oI!";
$res > o=rimos%exec 3$conn, "update test set i>5"9;
i# 3$res !> 29 :
echo "&tatement oI!";
echo o=rimos%num%ro8s 3$res9." ro8s a##ectedVn";
o=rimos%#ree%result 3$res9;
;
o=rimos%close 3$conn9;
;
?>
o5rimos>result
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZresult 22 Retrieves the output column
Kescription
int o5rimos>result > int resultZidA miFed (ield ?
o5rimos>result./ is used to retrieve the output column;
o5rimos>result./ retrieves the output column speci(ied #y H(ieldHA either as a string or as an 12#ased
indeF;
o5rimos>rollbacB
>P&P 8 _^ 8;3;7A P&P 4?
ovrimosZroll#ac" 22 Rolls #ac" the transaction
Kescription
int o5rimos>rollbacB > int connectionZid ?
o5rimos>rollbacB./ is used to roll #ac" the transaction;
o5rimos>rollbacB./ rolls #ac" the transaction;
ICIC. ParseBit ;unctions
Introducci"n
,hese (unctions alloE runtime analysis o( opcodes compiled (rom P&P scripts;
Instalaci"n
+sta eFtension P+5L no esta ligada a P&P;
Mas in(ormacion so#re nuevos lanzamientosA descargas (icheros de (uentesA in(ormacion so#re los
responsa#les asi como un H5&ANG+LOGHA se puede encontrar a/uiC
httpCDDpecl;php;netDpac"ageDparse"it;
Podeis descargar esta DLL de las eFtensiones P+5L desde la pagina P&P DoEnloads o desde
httpCDDsnaps;php;netD;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
PARSE&IT_.UIET >int?
Return (ull detailA #ut Eithout unnecessary N@LL eFtries;
PARSE&IT_SIMPLE >int?
Return shorthand opcode notation;
PARSE&IT_E%TENDED_$ALUE >int?
Opnode Flag
PARSE&IT_RESULT_CONST >int?
Opnode Flag
PARSE&IT_RESULT_EA_TYPE >int?
Opnode Flag
PARSE&IT_RESULT_'MP_ADDR >int?
Opnode Flag
PARSE&IT_RESULT_OPARRAY >int?
Opnode Flag
PARSE&IT_RESULT_OPLINE >int?
Opnode Flag
PARSE&IT_RESULT_$AR >int?
Opnode Flag
PARSE&IT_USA#E_UN&NO"N >int?
Opnode Flag
PARSE&IT_/END_INTERNAL_CLASS >int?
5lass ,ype
PARSE&IT_/END_USER_CLASS >int?
5lass ,ype
PARSE&IT_/END_E$AL_CODE >int?
Function ,ype
PARSE&IT_/END_INTERNAL_FUNCTION >int?
Function ,ype
PARSE&IT_/END_O$ERLOADED_FUNCTION >int?
Function ,ype
PARSE&IT_/END_O$ERLOADED_FUNCTION_TEMPORARY >int? P&P _^ 4;3;3
Function ,ype
PARSE&IT_/END_USER_FUNCTION >int?
Function ,ype
PARSE&IT_IS_CONST >int?
Node ,ype
PARSE&IT_IS_TMP_$AR >int?
Node ,ype
PARSE&IT_IS_UNUSED >int?
Node ,ype
PARSE&IT_IS_$AR >int?
Node ,ype
PARSE&IT_/END_ADD >int?
Opcode
PARSE&IT_/END_ADD_ARRAY_ELEMENT >int?
Opcode
PARSE&IT_/END_ADD_CHAR >int?
Opcode
PARSE&IT_/END_ADD_INTERFACE >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_ADD_STRIN# >int?
Opcode
PARSE&IT_/END_ADD_$AR >int?
Opcode
PARSE&IT_/END_ASSI#N >int?
Opcode
PARSE&IT_/END_ASSI#N_ADD >int?
Opcode
PARSE&IT_/END_ASSI#N_("_AND >int?
Opcode
PARSE&IT_/END_ASSI#N_("_OR >int?
Opcode
PARSE&IT_/END_ASSI#N_("_%OR >int?
Opcode
PARSE&IT_/END_ASSI#N_CONCAT >int?
Opcode
PARSE&IT_/END_ASSI#N_DIM >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_ASSI#N_DI$ >int?
Opcode
PARSE&IT_/END_ASSI#N_MOD >int?
Opcode
PARSE&IT_/END_ASSI#N_MUL >int?
Opcode
PARSE&IT_/END_ASSI#N_O(' >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_ASSI#N_REF >int?
Opcode
PARSE&IT_/END_ASSI#N_SL >int?
Opcode
PARSE&IT_/END_ASSI#N_SR >int?
Opcode
PARSE&IT_/END_ASSI#N_SU( >int?
Opcode
PARSE&IT_/END_(E#IN_SILENCE >int?
Opcode
PARSE&IT_/END_(OOL >int?
Opcode
PARSE&IT_/END_(OOL_NOT >int?
Opcode
PARSE&IT_/END_(OOL_%OR >int?
Opcode
PARSE&IT_/END_(R& >int?
Opcode
PARSE&IT_/END_("_AND >int?
Opcode
PARSE&IT_/END_("_NOT >int?
Opcode
PARSE&IT_/END_("_OR >int?
Opcode
PARSE&IT_/END_("_%OR >int?
Opcode
PARSE&IT_/END_CASE >int?
Opcode
PARSE&IT_/END_CAST >int?
Opcode
PARSE&IT_/END_CATCH >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_CLONE >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_CONCAT >int?
Opcode
PARSE&IT_/END_CONT >int?
Opcode
PARSE&IT_/END_DECLARE_CLASS >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_DECLARE_FUNCTION >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_DECLARE_INHERITED_CLASS >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_DI$ >int?
Opcode
PARSE&IT_/END_DO_FCALL >int?
Opcode
PARSE&IT_/END_DO_FCALL_(Y_NAME >int?
Opcode
PARSE&IT_/END_ECHO >int?
Opcode
PARSE&IT_/END_END_SILENCE >int?
Opcode
PARSE&IT_/END_E%IT >int?
Opcode
PARSE&IT_/END_E%T_FCALL_(E#IN >int?
Opcode
PARSE&IT_/END_E%T_FCALL_END >int?
Opcode
PARSE&IT_/END_E%T_NOP >int?
Opcode
PARSE&IT_/END_E%T_STMT >int?
Opcode
PARSE&IT_/END_FETCH_CLASS >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_FETCH_CONSTANT >int?
Opcode
PARSE&IT_/END_FETCH_DIM_FUNC_AR# >int?
Opcode
PARSE&IT_/END_FETCH_DIM_IS >int?
Opcode
PARSE&IT_/END_FETCH_DIM_R >int?
Opcode
PARSE&IT_/END_FETCH_DIM_R" >int?
Opcode
PARSE&IT_/END_FETCH_DIM_TMP_$AR >int?
Opcode
PARSE&IT_/END_FETCH_DIM_UNSET >int?
Opcode
PARSE&IT_/END_FETCH_DIM_" >int?
Opcode
PARSE&IT_/END_FETCH_FUNC_AR# >int?
Opcode
PARSE&IT_/END_FETCH_IS >int?
Opcode
PARSE&IT_/END_FETCH_O('_FUNC_AR# >int?
Opcode
PARSE&IT_/END_FETCH_O('_IS >int?
Opcode
PARSE&IT_/END_FETCH_O('_R >int?
Opcode
PARSE&IT_/END_FETCH_O('_R" >int?
Opcode
PARSE&IT_/END_FETCH_O('_UNSET >int?
Opcode
PARSE&IT_/END_FETCH_O('_" >int?
Opcode
PARSE&IT_/END_FETCH_R >int?
Opcode
PARSE&IT_/END_FETCH_R" >int?
Opcode
PARSE&IT_/END_FETCH_UNSET >int?
Opcode
PARSE&IT_/END_FETCH_" >int?
Opcode
PARSE&IT_/END_FE_FETCH >int?
Opcode
PARSE&IT_/END_FE_RESET >int?
Opcode
PARSE&IT_/END_FREE >int?
Opcode
PARSE&IT_/END_HANDLE_E%CEPTION >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_IMPORT_CLASS >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_IMPORT_CONST >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_IMPORT_FUNCTION >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_INCLUDE_OR_E$AL >int?
Opcode
PARSE&IT_/END_INIT_ARRAY >int?
Opcode
PARSE&IT_/END_INIT_CTOR_CALL >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_INIT_FCALL_(Y_NAME >int?
Opcode
PARSE&IT_/END_INIT_METHOD_CALL >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_INIT_STATIC_METHOD_CALL >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_INIT_STRIN# >int?
Opcode
PARSE&IT_/END_INSTANCEOF >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_ISSET_ISEMPTY >int? P&P ` 4;3;3
Opcode
PARSE&IT_/END_ISSET_ISEMPTY_DIM_O(' >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_ISSET_ISEMPTY_PROP_O(' >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_ISSET_ISEMPTY_$AR >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_IS_E.UAL >int?
Opcode
PARSE&IT_/END_IS_IDENTICAL >int?
Opcode
PARSE&IT_/END_IS_NOT_E.UAL >int?
Opcode
PARSE&IT_/END_IS_NOT_IDENTICAL >int?
Opcode
PARSE&IT_/END_IS_SMALLER >int?
Opcode
PARSE&IT_/END_IS_SMALLER_OR_E.UAL >int?
Opcode
PARSE&IT_/END_'MP >int?
Opcode
PARSE&IT_/END_'MPN/ >int?
Opcode
PARSE&IT_/END_'MPN/_E% >int?
Opcode
PARSE&IT_/END_'MP/ >int?
Opcode
PARSE&IT_/END_'MP/N/ >int?
Opcode
PARSE&IT_/END_'MP/_E% >int?
Opcode
PARSE&IT_/END_'MP_NO_CTOR >int?
Opcode
PARSE&IT_/END_MOD >int?
Opcode
PARSE&IT_/END_MUL >int?
Opcode
PARSE&IT_/END_NE" >int?
Opcode
PARSE&IT_/END_NOP >int?
Opcode
PARSE&IT_/END_OP_DATA >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_POST_DEC >int?
Opcode
PARSE&IT_/END_POST_DEC_O(' >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_POST_INC >int?
Opcode
PARSE&IT_/END_POST_INC_O(' >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_PRE_DEC >int?
Opcode
PARSE&IT_/END_PRE_DEC_O(' >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_PRE_INC >int?
Opcode
PARSE&IT_/END_PRE_INC_O(' >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_PRINT >int?
Opcode
PARSE&IT_/END_.M_ASSI#N >int?
Opcode
PARSE&IT_/END_RAISE_A(STRACT_ERROR >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_REC$ >int?
Opcode
PARSE&IT_/END_REC$_INIT >int?
Opcode
PARSE&IT_/END_RETURN >int?
Opcode
PARSE&IT_/END_SEND_REF >int?
Opcode
PARSE&IT_/END_SEND_$AL >int?
Opcode
PARSE&IT_/END_SEND_$AR >int?
Opcode
PARSE&IT_/END_SEND_$AR_NO_REF >int?
Opcode
PARSE&IT_/END_SL >int?
Opcode
PARSE&IT_/END_SR >int?
Opcode
PARSE&IT_/END_SU( >int?
Opcode
PARSE&IT_/END_S"ITCH_FREE >int?
Opcode
PARSE&IT_/END_THRO" >int? P&P _^ 4;3;3
Opcode
PARSE&IT_/END_TIC&S >int?
Opcode
PARSE&IT_/END_UNSET_DIM_O(' >int?
Opcode
PARSE&IT_/END_UNSET_$AR >int?
Opcode
PARSE&IT_/END_$ERIFY_A(STRACT_CLASS >int? P&P _^ 4;3;3
Opcode
Tabla de contenidos
parse"itZcompileZ(ile 22 5ompile a string o( P&P code and return the resulting op array
parse"itZcompileZstring 22 5ompile a string o( P&P code and return the resulting op array
parse"itZ(uncZargin(o 22 Return in(ormation regarding (unction argument>s?
parseBit>compile>file
>no version in(ormationA might #e only in 5$?
parse"itZcompileZ(ile 22 5ompile a string o( P&P code and return the resulting op array
Kescripci"n
array parseBit>compile>file > string (ilename PA array ierrors PA int optionsQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
:ista de parmetros
96lename
A string containing the name o( the (ile to compile; imilar to the argument to include./;
errors
A 0D hash o( errors >including (atal errors? encountered during compilation; Returned #y
re(erence;
opt6ons
One o( either PARSE&IT_.UIET or PARSE&IT_SIMPLE; ,o produce varying degrees o(
ver#osity in the returned output;
Calores retornados
Returns a compleF multi2layer array structure as detailed #eloE;
E'emplos
E'emplo !. parseBit>compile>file./ e+ample
<?php
=ar%dump3parseIit%compile%#ile3Mhello%8orld.phpM, $errors, ,'&E]4*%&4"OE99;
?>
+l resultado del e'emplo seriaC
array359 :
)2/>>
strinE3<H9 "YE.L%ERH? +.+&EL MHello 7orldM +.+&EL"
)6/>>
strinE3<29 "YE.L%'E*+'. +.+&EL .+OO +.+&EL"
)C/>>
strinE31C9 "YE.L%H,.LOE%EXRE*4?. +.+&EL +.+&EL +.+&EL"
)"#unction%table"/>>
.+OO
)"class%table"/>>
.+OO
;
Cer tambi%n
parseBit>compile>string./
parseBit>compile>string
>no version in(ormationA might #e only in 5$?
parse"itZcompileZstring 22 5ompile a string o( P&P code and return the resulting op array
Kescripci"n
array parseBit>compile>string > string phpcode PA array ierrors PA int optionsQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
:ista de parmetros
phpco#e
A string containing phpcode; imilar to the argument to e5al./;
errors
A 0D hash o( errors >including (atal errors? encountered during compilation; Returned #y
re(erence;
opt6ons
One o( either PARSE&IT_.UIET or PARSE&IT_SIMPLE; ,o produce varying degrees o(
ver#osity in the returned output;
Calores retornados
Returns a compleF multi2layer array structure as detailed #eloE;
E'emplos
E'emplo !. parseBit>compile>string./ e+ample
<?php
$ops > parseIit%compile%strinE3M
echo "SooVn";
M, $errors, ,'&E]4*%N+4E*9;
=ar%dump3$ops9;
?>
+l resultado del e'emplo seriaC
array3C29 :
)"type"/>>
int319
)"type%name"/>>
strinE3619 "YE.L%E(,O%R?LE"
)"#n%#laEs"/>>
int329
)"num%arEs"/>>
int329
)"reQuired%num%arEs"/>>
int329
)"pass%rest%by%re#erence"/>>
bool3#alse9
)"uses%this"/>>
bool3#alse9
)"line%start"/>>
int329
)"line%end"/>>
int329
)"return%re#erence"/>>
bool3#alse9
)"re#count"/>>
int369
)"last"/>>
int3<9
)"si0e"/>>
int3<9
)"*"/>>
int329
)"last%brI%cont"/>>
int329
)"current%brI%cont"/>>
int3F69
)"bacIpatch%count"/>>
int329
)"done%pass%t8o"/>>
bool3true9
)"#ilename"/>>
strinE36H9 "arseIit Rompiler"
)"opcodes"/>>
array3<9 :
)J5K1J22/>>
array359 :
)"opcode"/>>
int3129
)"opcode%name"/>>
strinE3K9 "YE.L%ERH?"
)"#laEs"/>>
int3HGJ9
)"op6"/>>
array3<9 :
)"type"/>>
int369
)"type%name"/>>
strinE3J9 "4&%R?.&*"
)"constant"/>>
&strinE319 "Soo
"
;
)"lineno"/>>
int3C9
;
)"J5K1J1R"/>>
array3G9 :
)"opcode"/>>
int3GC9
)"opcode%name"/>>
strinE3669 "YE.L%'E*+'."
)"#laEs"/>>
int36GHHHKJ19
)"op6"/>>
array3<9 :
Cer tambi%n
parseBit>compile>file./
parseBit>func>arginfo
>no version in(ormationA might #e only in 5$?
parse"itZ(uncZargin(o 22 Return in(ormation regarding (unction argument>s?
Kescripci"n
array parseBit>func>arginfo > miFed (unction ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
:ista de parmetros
9unct6on
A string descri#ing a (unctionA or an array descri#ing a classDmethod;
Calores retornados
Returns an array containing argument in(ormation;
E'emplos
E'emplo !. parseBit>func>arginfo./ e+ample
<?php
#unction #oo3$bar, stdRlass $ba0, &$bomb, $blinE > #alse9 :
;
=ar%dump3parseIit%#unc%arEin#o3M#ooM99;
?>
+l resultado del e'emplo seriaC
array319 :
)2/>>
array3<9 :
)"name"/>>
strinE3<9 "bar"
)"allo8%null"/>>
bool3true9
)"pass%by%re#erence"/>>
bool3#alse9
;
)6/>>
array319 :
)"name"/>>
strinE3<9 "ba0"
)"class%name"/>>
strinE3J9 "stdRlass"
)"allo8%null"/>>
bool3#alse9
)"pass%by%re#erence"/>>
bool3#alse9
;
)C/>>
array3<9 :
)"name"/>>
strinE319 "bomb"
)"allo8%null"/>>
bool3true9
)"pass%by%re#erence"/>>
bool3true9
;
)</>>
array3<9 :
)"name"/>>
strinE359 "blinE"
)"allo8%null"/>>
bool3true9
)"pass%by%re#erence"/>>
bool3#alse9
;
;
ICC. ;unciones de Control de Procesos
Introducci"n
+l soporte de 5ontrol de Procesos en P&P implementa el estilo @niF de creacicd n de procesosA
e'ecucicd n de programaA administracicd n de seWales y (inalizacicd n de procesos; +l 5ontrol de
Procesos no de#er)a estar activado para un servidor de entorno Ee#A ya /ue podr)an ocurrir
resultados inesperados utilizando las (unciones de 5ontrol de Procesos;
+sta documentacicd n eFplica en modo general como se utilizan las (unciones de 5ontrol de
Procesos; Para una in(ormacicd n m*s detallada so#re controles de procesos en @niF de#er)as acudir
a la documentacicd n de tu sistema so#re (or">0?A Eaitpid>0?A signal>0? o al manual de re(erecia de
programacicd n avanzada #a'o entornos @niF >Advanced Programming in the @N.J +nvironment?
de Richard tevensA Addison2Lesley;
P5N,L ahora utiliza seWales para mane'ar el mecanismo de llamadas de retornoA /ue es mucho m*s
r*pido /ue el anterior mecanismo; +ste cam#io sigue la misma sem*ntica /ue utilizar =seWales del
usuario=; De#es utilizar declare./ para de(inir /ue lugares en tus programas se permiten las
llamadas de retorno; De esta manera se minimiza la carga de eventos as)ncronos; AnteriormenteA al
compilar P&P con la eFtensicd n pcntl siempre esta#an activadas las llamadas de retornoA
produciendo as) una carga innecesaria para las aplicaciones /ue no utiliza#an pcntl;
Para scripts pcntl anteriores al P&P 8;7;3 hay /ue realizar los a'ustes para de(inir con el declare./ en
/ue secciones de la aplicacicd n se permiten las llamadas de retorno o simplemente permitirlo en
toda la aplicacicd n mediante la sintaFis glo#al de declare./;
Nota- +sta eFtensi-n no est* disponi#le en plata(ormas LindoEs
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
+l soporte de 5ontrol de Procesos en P&P no est* activado por de(ecto; Para activarloA tienes /ue
compilar la versi-n 5G. o 5L. de P&P con la opci-n ==ena1le=pcntl en la con(iguraci-n;
Nota- Actualmente este modulo no (unciona en plata(ormas di(erentes a @niF
>LindoEs?;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
Las siguiente lista de seWales est*n soportadas por las (unciones de 5ontrol de Procesos; 5omprue#a
el manual de seWales de tu sistema para m*s detalles so#re el comportamiento por de(ecto de las
mismas;
"NOHAN# >integer?
"UNTRACED >integer?
SI#_I#N >integer?
SI#_DFL >integer?
SI#_ERR >integer?
SI#HUP >integer?
SI#INT >integer?
SI#.UIT >integer?
SI#ILL >integer?
SI#TRAP >integer?
SI#A(RT >integer?
SI#IOT >integer?
SI#(US >integer?
SI#FPE >integer?
SI#&ILL >integer?
SI#USR) >integer?
SI#SE#$ >integer?
SI#USR* >integer?
SI#PIPE >integer?
SI#ALRM >integer?
SI#TERM >integer?
SI#ST&FLT >integer?
SI#CLD >integer?
SI#CHLD >integer?
SI#CONT >integer?
SI#STOP >integer?
SI#TSTP >integer?
SI#TTIN >integer?
SI#TTOU >integer?
SI#UR# >integer?
SI#%CPU >integer?
SI#%FS/ >integer?
SI#$TALRM >integer?
SI#PROF >integer?
SI#"INCH >integer?
SI#POLL >integer?
SI#IO >integer?
SI#P"R >integer?
SI#SYS >integer?
SI#(A(Y >integer?
E'emplos
+ste e'emplo realiza un (or" >#i(urcacicd n? de un proceso daemon >demonio? con administracicd n
de seWales;
E'emplo !. E'emplo de Control de Procesos
<?php
declare3ticIs>69;
$pid > pcntl%#orI39;
i# 3$pid >> F69 :
die3"no se puede hacer #orI"9;
; else i# 3$pid9 :
exit39; // somos el proceso padre
; else :
// somos el proceso hijo
;
// detatch desde la terminal
i# 3!posix%setsid399 :
die3"no se puede hacer un detach desde la terminal"9;
;
// bucle in#inito reali0ando tareas
8hile 369 :
// hacer alEo interesante aQug ..
;
#unction siE%handler3$siEno9
:
s8itch 3$siEno9 :
case &4-*E'"@
// tareas de #inali0aciin
exit;
breaI;
case &4-H+@
// tareas de reinicio
breaI;
de#ault@
// tareas para las demes seDales
;
;
// conEiEuraciin de las seDales
pcntl%siEnal3&4-*E'", "siE%handler"9;
pcntl%siEnal3&4-H+, "siE%handler"9;
?>
Cer tambi%n
,e puede ser Btil echar un vistazo a PO.J (unctions
Tabla de contenidos
pcntlZalarm 22 Programa una alarma para hacer una llamada de una seWal
pcntlZeFec 22 +'ecuta un programa espec)(ico en el espacio de proceso actual
pcntlZ(or" 22 For"s the currently running process
pcntlZgetpriority 22 Get the priority o( any process
pcntlZsetpriority 22 5hange the priority o( any process
pcntlZsignal 22 .nstalls a signal handler
pcntlZEait 22 Laits on or returns the status o( a (or"ed child
pcntlZEaitpid 22 Laits on or returns the status o( a (or"ed child
pcntlZEeFitstatus 22 Returns the return code o( a terminated child
pcntlZEi(eFited 22 Returns TRUE i( status code represents a success(ul eFit
pcntlZEi(signaled 22 Returns TRUE i( status code represents a termination due to a signal
pcntlZEi(stopped 22 Returns TRUE i( child process is currently stopped
pcntlZEstopsig 22 Returns the signal Ehich caused the child to stop
pcntlZEtermsig 22 Returns the signal Ehich caused the child to terminate
pcntl>alarm
>P&P 8 _^ 8;7;3A P&P 4?
pcntlZalarm 22 Programa una alarma para hacer una llamada de una seWal
Kescripci"n
int pcntl>alarm > int segundos ?
La (unci-n pcntl>alarm./ crea un contador para enviar una seWal S0-,4RM; i seEun#os es ceroA
no se crea ninguna alarma; 5ual/uier llamada a pcntl>alarm./ cancelar* las alarmas anteriormente
programadas;
pcntl>alarm./ devolver* el nBmero de segundos restantes para la e'ecuci-n de la alarma
programadaA o 0 si no eFiste ninguna alarma programada;
pcntl>e+ec
>P&P 8 _^ 8;0;3A P&P 4?
pcntlZeFec 22 +'ecuta un programa espec)(ico en el espacio de proceso actual
Kescripci"n
#ool pcntl>e+ec > string ruta PA array args PA array envsQQ ?
pcntl>e+ec./ e'ecuta el programa path con los argumentos arEs; path de#e ser un #inario e'ecuta#le
o un script apuntando a un e'ecuta#le con la ruta correcta en la primera l)nea >por e'emplo
naDusrDlocalD#inDperl?; Para m*s in(ormaci-n mira la p*gina del man eFecve>0? en tu sistema;
arEs de#e ser una matriz con los argumentos /ue se le pasan al programa;
ens de#e ser una matriz de cadenas de teFto en la cual se pasan varia#les de entorno al programa;
La matriz de#e tener el (ormato indice ^_ contenidoA el indice ser*a el nom#re de la varia#le de
entorno y el contenido ser* el valor de la varia#le;
pcntl>e+ec./ devuelve FALSE en errores;
pcntl>forB
>P&P 8 _^ 8;1;3A P&P 4?
pcntlZ(or" 22 For"s the currently running process
Kescription
int pcntl>forB > void ?
,he pcntl>forB./ (unction creates a child process that di((ers (rom the parent process only in its P.D
and PP.D; Please see your systemHs (or">0? man page (or speci(ic details as to hoE (or" Eor"s on
your system;
On successA the P.D o( the child process is returned in the parentHs thread o( eFecutionA and a 3 is
returned in the childHs thread o( eFecution; On (ailureA a 21 Eill #e returned in the parentHs conteFtA
no child process Eill #e createdA and a P&P error is raised;
E'emplo !. pcntl>forB./ e+ample
<?php
$pid > pcntl%#orI39;
i# 3$pid >> F69 :
die3Mcould not #orIM9;
; else i# 3$pid9 :
// 8e are the parent
pcntl%8ait3$status9; //rotect aEainst Yombie children
; else :
// 8e are the child
;
?>
ee also pcntl>3aitpid./ and pcntl>signal./;
pcntl>getpriority
>P&P 4?
pcntlZgetpriority 22 Get the priority o( any process
Kescription
int pcntl>getpriority > Pint pid PA int processZidenti(ierQQ ?
pcntl>getpriority./ gets the priority o( p6#; .( p6# is not speci(iedA the pid o( the current process is
used; Because priority levels can di((er #etEeen system types and "ernel versionsA please see your
systemHs getpriority>0? man page (or speci(ic details;
pcntl>getpriority./ returns the priority o( the process or FALSE on error; A loEer numerical value
causes more (avora#le scheduling;
process_6#ent696er is one o( PRIO_P#RPA PRIO_USER or PRIO_PROCESS;
A5iso
+sta (unci-n puede devolver FALSEA pero tam#i<n puede devolver un valor no2#ooleano /ue ser*
evaluado FALSEA como por e'emplo 0 o ==; Por (avorA lea la secci-n Booleans para m*s
in(ormaci-n; @tilice el operador ^^^ para compro#ar el valor devuelto por esta (unci-n;
pcntl>setpriority
>P&P 4?
pcntlZsetpriority 22 5hange the priority o( any process
Kescription
#ool pcntl>setpriority > int priority PA int pid PA int processZidenti(ierQQ ?
pcntl>setpriority./ sets the priority o( p6# to pr6or6t?; .( p6# is not speci(iedA the pid o( the current
process is used;
pr6or6t? is generally a value in the range =20 to 20; ,he de(ault priority is 0 Ehile a loEer numerical
value causes more (avora#le scheduling; Because priority levels can di((er #etEeen system types
and "ernel versionsA please see your systemHs setpriority>0? man page (or speci(ic details;
process_6#ent696er is one o( PRIO_P#RPA PRIO_USER or PRIO_PROCESS;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
pcntl>signal
>P&P 8 _^ 8;1;3A P&P 4?
pcntlZsignal 22 .nstalls a signal handler
Kescription
#ool pcntl>signal > int signoA call#ac" handle PA #ool restartZsyscallsQ ?
,he pcntl>signal./ (unction installs a neE signal handler (or the signal indicated #y s6Eno; ,he
signal handler is set to han#ler Ehich may #e the name o( a user created (unctionA or either o( the
tEo glo#al constants .GZ.GN or .GZDFL; ,he optional restart_s?scalls speci(ies Ehether system
call restarting should #e used Ehen this signal arrives and de(aults to TRUE;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- ,he optional restart_s?scalls parameter #ecame availa#le in P&P 8;7;3;
Nota- ,he a#ility to use an o#'ect method as a call#ac" #ecame availa#le in P&P 8;7;3;
Note that Ehen you set a handler to an o#'ect methodA that o#'ectHs re(erence count is
increased Ehich ma"es it persist until you either change the handler to something elseA
or your script ends;
E'emplo !. pcntl>signal./ e+ample
<?php
// ticI use reQuired as o# H 1.<.2
declare3ticIs > 69;
// siEnal handler #unction
#unction siE%handler3$siEno9
:
s8itch 3$siEno9 :
case &4-*E'"@
// handle shutdo8n tasIs
exit;
breaI;
case &4-H+@
// handle restart tasIs
breaI;
case &4-+&'6@
echo "RauEht &4-+&'6...Vn";
breaI;
de#ault@
// handle all other siEnals
;
;
echo "4nstallinE siEnal handler...Vn";
// setup siEnal handlers
pcntl%siEnal3&4-*E'", "siE%handler"9;
pcntl%siEnal3&4-H+, "siE%handler"9;
pcntl%siEnal3&4-+&'6, "siE%handler"9;
// or use an object, a=ailable as o# H 1.<.2
// pcntl%siEnal3&4-+&'6, array3$obj, "do%somethinE"9;
echo"-eneratinE siEnal &4-*E'" to sel#...Vn";
// send &4-+&'6 to current process id
posix%Iill3posix%Eetpid39, &4-+&'69;
echo "LoneVn"
?>
Nota- As o( P&P 8;7;3 P5N,L uses tic"s as the signal handle call#ac" mechanismA
Ehich is much (aster than the previous mechanism; ,his change (olloEs the same
semantics as using =user tic"s=; %ou must use the declare>? statement to speci(y the
locations in your program Ehere call#ac"s are alloEed to occur (or the signal handler to
(unction properly >as used in the a#ove eFample?;
ee also pcntl>forB./ and pcntl>3aitpid./;
pcntl>3ait
>P&P 4?
pcntlZEait 22 Laits on or returns the status o( a (or"ed child
Kescription
int pcntl>3ait > int istatus PA int optionsQ ?
,he Eait (unction suspends eFecution o( the current process until a child has eFitedA or until a signal
is delivered Ehose action is to terminate the current process or to call a signal handling (unction; .( a
child has already eFited #y the time o( the call >a so2called =zom#ie= process?A the (unction returns
immediately; Any system resources used #y the child are (reed; Please see your systemHs Eait>0?
man page (or speci(ic details as to hoE Eait Eor"s on your system;
pcntl>3ait./ returns the process .D o( the child Ehich eFitedA 21 on error or zero i( LNO&ANG
Eas provided as an option >on Eait72availa#le systems? and no child Eas availa#le;
.( Eait7 is availa#le on your system >mostly BD2style systems?A you can provide the optional
opt6ons parameter; .( this parameter is not providedA Eait Eill #e used (or the system call; .( Eait7 is
not availa#leA providing a value (or opt6ons Eill have no e((ect; ,he value o( opt6ons is the value o(
zero or more o( the (olloEing tEo constants ORHed togetherC
Tabla !. Possible 5alues for options if 3ait7 is a5ailable
INO!,N- Return immediately i( no child has eFited;
IUNTR,CE
D
Return (or children Ehich are stoppedA and Ehose status has not #een
reported;
pcntl>3ait./ Eill store status in(ormation in the status parameter Ehich can #e evaluated using the
(olloEing (unctionsC pcntl>3ife+ited./A pcntl>3ifstopped./A pcntl>3ifsignaled./A
pcntl>3e+itstatus./A pcntl>3termsig./ and pcntl>3stopsig./;
Nota- ,his (unction is Walent to calling pcntl>3aitpid./ Eith a =1 p6# and no opt6ons;
ee also pcntl>forB./A pcntl>signal./A pcntl>3ife+ited./A pcntl>3ifstopped./A pcntl>3ifsignaled
./A pcntl>3e+itstatus./A pcntl>3termsig./A pcntl>3stopsig./ and pcntl>3aitpid./;
pcntl>3aitpid
>P&P 8 _^ 8;1;3A P&P 4?
pcntlZEaitpid 22 Laits on or returns the status o( a (or"ed child
Kescription
int pcntl>3aitpid > int pidA int istatus PA int optionsQ ?
,he pcntl>3aitpid./ (unction suspends eFecution o( the current process until a child as speci(ied #y
the p6# argument has eFitedA or until a signal is delivered Ehose action is to terminate the current
process or to call a signal handling (unction; .( a child as re/uested #y p6# has already eFited #y the
time o( the call >a so2called =zom#ie= process?A the (unction returns immediately; Any system
resources used #y the child are (reed; Please see your systemHs Eaitpid>0? man page (or speci(ic
details as to hoE Eaitpid Eor"s on your system;
pcntl>3aitpid./ returns the process .D o( the child Ehich eFitedA 21 on error or zero i( LNO&ANG
Eas used and no child Eas availa#le
,he value o( p6# can #e one o( the (olloEingC
Tabla !. possible 5alues for pid
$
=1
Eait (or any child process Ehose process group .D is e/ual to the a#solute value o(
p6#;
=1 Eait (or any child processX this is the same #ehaviour that the Eait (unction eFhi#its;
0
Eait (or any child process Ehose process group .D is e/ual to that o( the calling
process;
& 0 Eait (or the child Ehose process .D is e/ual to the value o( p6#;
Nota- peci(ying =1 as the p6# is Walent to the (unctionality pcntl>3ait./ provides
>minus opt6ons?;
pcntl>3aitpid./ Eill store status in(ormation in the status parameter Ehich can #e evaluated using
the (olloEing (unctionsC pcntl>3ife+ited./A pcntl>3ifstopped./A pcntl>3ifsignaled./A
pcntl>3e+itstatus./A pcntl>3termsig./ and pcntl>3stopsig./;
,he value o( opt6ons is the value o( zero or more o( the (olloEing tEo glo#al constants ORHed
togetherC
Tabla *. possible 5alues for options
INO!,N- return immediately i( no child has eFited;
IUNTR,CE
D
return (or children Ehich are stoppedA and Ehose status has not #een
reported;
ee also pcntl>forB./A pcntl>signal./A pcntl>3ife+ited./A pcntl>3ifstopped./A pcntl>3ifsignaled
./A pcntl>3e+itstatus./A pcntl>3termsig./ and pcntl>3stopsig./;
pcntl>3e+itstatus
>P&P 8 _^ 8;1;3A P&P 4?
pcntlZEeFitstatus 22 Returns the return code o( a terminated child
Kescription
int pcntl>3e+itstatus > int status ?
Returns the return code o( a terminated child; ,his (unction is only use(ul i( pcntl>3ife+ited./
returned TRUE;
+l parametro status es un parametro de estado enviado a una llamada con eFito de pcntl>3aitpid./;
ee also pcntl>3aitpid./ and pcntl>3ife+ited./;
pcntl>3ife+ited
>P&P 8 _^ 8;1;3A P&P 4?
pcntlZEi(eFited 22 Returns TRUE i( status code represents a success(ul eFit
Kescription
int pcntl>3ife+ited > int status ?
Returns TRUE i( the child status code represents a success(ul eFit;
+l parametro status es un parametro de estado enviado a una llamada con eFito de pcntl>3aitpid./;
ee also pcntl>3aitpid./ and pcntl>3e+itstatus./;
pcntl>3ifsignaled
>P&P 8 _^ 8;1;3A P&P 4?
pcntlZEi(signaled 22 Returns TRUE i( status code represents a termination due to a signal
Kescription
int pcntl>3ifsignaled > int status ?
Returns TRUE i( the child process eFited #ecause o( a signal Ehich Eas not caught;
+l parametro status es un parametro de estado enviado a una llamada con eFito de pcntl>3aitpid./;
ee also pcntl>3aitpid./ and pcntl>signal./;
pcntl>3ifstopped
>P&P 8 _^ 8;1;3A P&P 4?
pcntlZEi(stopped 22 Returns TRUE i( child process is currently stopped
Kescription
int pcntl>3ifstopped > int status ?
Returns TRUE i( the child process Ehich caused the return is currently stoppedX this is only possi#le
i( the call to pcntl>3aitpid./ Eas done using the option IUNTR,CED;
+l parametro status es un parametro de estado enviado a una llamada con eFito de pcntl>3aitpid./;
ee also pcntl>3aitpid./;
pcntl>3stopsig
>P&P 8 _^ 8;1;3A P&P 4?
pcntlZEstopsig 22 Returns the signal Ehich caused the child to stop
Kescription
int pcntl>3stopsig > int status ?
Returns the num#er o( the signal Ehich caused the child to stop; ,his (unction is only use(ul i(
pcntl>3ifstopped./ returned TRUE;
+l parametro status es un parametro de estado enviado a una llamada con eFito de pcntl>3aitpid./;
ee also pcntl>3aitpid./ and pcntl>3ifstopped./;
pcntl>3termsig
>P&P 8 _^ 8;1;3A P&P 4?
pcntlZEtermsig 22 Returns the signal Ehich caused the child to terminate
Kescription
int pcntl>3termsig > int status ?
Returns the num#er o( the signal that caused the child process to terminate; ,his (unction is only
use(ul i( pcntl>3ifsignaled./ returned TRUE;
+l parametro status es un parametro de estado enviado a una llamada con eFito de pcntl>3aitpid./;
ee also pcntl>3aitpid./A pcntl>signal./ and pcntl>3ifsignaled./;
ICCI. ;unciones de E+presiones Megulares
.Compatibles con Perl/
Introducci"n
La sintaFis para los patrones usados en <stas (unciones se aseme'a considera#lemente con la sintaFis
de Perl; La eFpresi-n de#e estar rodeada por delimitadoresA una #arra acostada >D?A por e'emplo;
5ual/uier caracter puede ser usado como delimitador siempre y cuando no sea al(anum<rico ni la
#arra invertida >h?; i el caracter delimitador tiene /ue ser usado en la eFpresi-n mismaA necesita ser
escapado por la #arra invertida; A partir de P&P 8;3;8A puede usar tam#i<n los delimitadores de
coincidencia tipo Perl >?A \]A PQA y `_; $ea intaFis de los Patrones para una eFplicaci-n detallada;
+l delimitador de cierre puede estar seguido de varios modi(icadores /ue a(ectan las coincidencias;
$ea Modi(icadores de Patr-n;
P&P soporta tam#i<n eFpresiones regulares usando una sintaFis PO.J2eFtendidaA por medio de las
(unciones regeF PO.J2eFtendidas;
A5iso
+s importante /ue conozca so#re las limitaciones de P5R+; Lea httpCDDEEE;pcre;orgDpcre;tFt para
m*s in(ormaci-n;
Me?uirimientos
+l soporte de eFpresiones regulares es provisto por el pa/uete de #i#lioteca P5R+A el cual es
so(tEare de c-digo a#iertoA escrito por Philip &azelA y con copyright de la @niversidad de
5am#ridgeA .nglaterra; e encuentra disponi#le en
(tpCDD(tp;csF;cam;ac;u"Dpu#Dso(tEareDprogrammingDpcreD;
Instalaci"n
A partir de P&P 8;0;3A estas (unciones est*n ha#ilitadas por de(ecto; Puede desha#ilitar las
(unciones pcre con ==76thout=pcre=reEe8; @se ==76th=pcre=reEe8:D0R para especi(icar la u#icaci-n
de los archivos de inclusi-n y #i#liotecas de P5R+A si no desea usar la #i#lioteca incluida; +n
versiones m*s antiguasA usted tendr* /ue con(igurar y compilar P&P con ==76th=pcre=reEe8):D0R.
para poder hacer uso de estas (unciones;
La versi-n para LindoEs de +!+ tiene soporte nativo para esta eFtensi-n; No se necesita cargar
ninguna eFtensi-n adicional para usar estas (unciones;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
Tabla !. constantes PMEF
constante descripci"n
PR+GZPA,,+
RNZORD+R
Ordena los resultados de modo /ue YcoincidenciasP3Q sea una matriz de
coincidencias del patr-n completoA YcoincidenciasP1Q sea una matriz de cadenas
/ue coincidieron con el primer su#patr-n entre par<ntesisA y as) sucesivamente;
+sta #andera s-lo es usada con preg>match>all./;
constante descripci"n
PR+GZ+,ZO
RD+R
Ordena los resultados de modo /ue YcoincidenciasP3Q resulte ser una matriz del
primer con'unto de coincidenciasA YmatchesP1Q sea una matriz del segundo
con'unto de coincidenciasA y as) sucesivamente; +sta #andera Bnicamente es
usada con preg>match>all./;
PR+GZOFF+
,Z5AP,@R+
5onsulte la descripci-n de PRE#_SPLIT_OFFSET_CAPTURE; +sta #andera
est* disponi#le desde P&P 8;7;3;
PR+GZPL.,Z
NOZ+MP,%
+sta #andera le dice a preg>split./ /ue devuelva Bnicamente resultados /ue no
sean vac)os;
PR+GZPL.,Z
D+L.MZ5AP,
@R+
+sta #andera le indica a preg>split./ /ue capture las eFpresiones entre par<ntesis
dentro del patr-n de delimitaci-n tam#i<n; +sta #andera est* disponi#le desde
P&P 8;3;4;
PR+GZPL.,Z
OFF+,Z5AP
,@R+
i esta #andera est* activaA la posici-n de desplazamiento correspondiente a cada
coincidencia ser* devuelta tam#i<n; Note /ue esto modi(ica el valor devuelto a
una matriz en la /ue cada elemento es tam#i<n una matriz /ue consiste de la
cadena coincidente en el su#)ndice 3 y su posici-n de desplazamiento al interior
de la cadena de asunto en el su#)ndice 1; +sta #andera est* disponi#le a partir de
P&P 8;7;3 y s-lo es usada por preg>split./;
E'emplos
E'emplo !. E'emplos de patrones 5lidos
/$Q/Q7Y&/
VLQ#GRHM=Q#YVSm
/ZL%6Mphp)R;./
GZQsYLQsYM%'H
E'emplo *. E'emplos de patrones in5lidos
/hre9:<L./M< 2 carece de delimitador de cierre
/Q7YQs/Q7Y/b 2 modi(icador H!H desconocido
1=Q#R=Q#R=Q#;V 2 carece del delimitador de apertura
Tabla de contenidos
Modi(icadores de Patr-n 22 Descri#e los posi#les modi(icadores en patrones de eFpresiones
regulares
intaFis de los Patrones 22 Descri#e la sintaFis de eFpresiones regulares P5R+
pregZgrep 22 Devuelve un array con los elementos /ue casen con el patr-n
pregZmatchZall 22 Realizar una comparaci-n glo#al con una eFpresi-n regular
pregZmatch 22 Realiza un empare'amiento dada una eFpresi-n
pregZ/uote 22 Prepara los caracteres de eFpresiones
pregZreplaceZcall#ac" 22 Realizar una #Bs/ueda con eFpresiones regulares y generar reemplazos
usando una llamada de retorno
pregZreplace 22 Lleva a ca#o la #Bs/ueda de una eFpresi-n y su sustituci-n
pregZsplit 22 Divide una cadena dada una eFpresi-n
Modificadores de Patr"n
Modi(icadores de Patr-n 22 Descri#e los posi#les modi(icadores en patrones de eFpresiones
regulares
Kescripci"n
Los modi(icadores P5R+ disponi#les en la actualidad son listados a continuaci-n; Los nom#res
entre par<ntesis se re(ieren a nom#res internos de P5R+ para dichos modi(icadores;
6 >P5R+Z5A+L+?
i <ste modi(icador es de(inidoA las letras en el patr-n coincidir*n tanto con letras
mayBsculas como minBsculas;
m >P5R+ZM@L,.L.N+?
Por de(ectoA P5R+ trata la cadena de asunto como si consistiera de una =Bnica=
l)nea de caracteres >aun si en realidad contiene varias?; +l meta2caracter de =inicio
de l)nea= >k? coincide s-lo al principio de la cadenaA mientras /ue el meta2caracter
de =(in de l)nea= >Y? coincide s-lo el (inal de la cadenaA o antes un caracter de
nueva l)nea (inal >a menos /ue el modi(icador D sea de(inido?; +sto es igual /ue
en Perl;
5uando este modi(icador es de(inidoA los constructores de =inicio de l)nea= y =(in
de l)nea= coinciden inmediatamente despu<s o inmediatamente antes de cual/uier
caracter de nueva l)neaA respectivamenteA al igual /ue al comienzo o (inal a#soluto
de la cadena; +ste comportamiento es Walente al modi(icador Dm del Perl; i no
hay caracteres =hn= en la cadena de asuntoA o no hay ocurrencias de k o Y en un
patr-nA este modi(icador no tiene e(ecto alguno;
s >P5R+ZDO,ALL?
i se de(ine <ste modi(icadorA un meta2caracter de punto en el patr-n coincidir*
con todos los caracteresA incluyendo el de nueva l)nea; in <lA los saltos de l)nea
son eFclu)dos; +ste modi(icador es Walente a Ds en Perl; @na clase negativa como
PkaQ siempre coincide con un caracter de nueva l)neaA independientemente del uso
de este modi(icador;
8 >P5R+Z+J,+ND+D?
i <ste modi(icador es de(inidoA los caracteres de datos /ue representan espacios
en #lanco en el patr-n son completamente ignoradosA eFcepto cuando son
escapados o cuando se encuentran al interior de una clase caracterA y los caracteres
entre un n sin escapar (uera de una clase de caracter y el siguiente caracter de
nueva l)neaA inclusiveA son ignorados tam#i<n; +sto es Walente al modi(icador DF de
Perl y hace posi#le incluir comentarios al interior de patrones complicados; NoteA
sin em#argoA /ue esto es s-lo aplica#le a caracteres de datos; Los caracteres de
espacio en #lanco nunca pueden aparecer en secuencias de caracteres especiales en
un patr-nA por e'emplo al interior de la secuencia >N>A la cual inicia un su#2patr-n
condicional;
e
i <ste modi(icador es usadoA preg>replace./ realiza las sustituciones normales de
re(erencias hacia atr*s en la cadena de reemplazoA evalBa <sta como c-digo P&P y
usa el resultado para reemplazar la cadena de #Bs/ueda; Las comillas sencillas y
do#les son escapadas con #arras invertidas en las re(erencias hacia atr*s
sustituidas;
-lo preg>replace./ usa <ste modi(icadorX es ignorado por otras (unciones de
P5R+;
Nota- +ste modi(icador no se encontra#a disponi#le en P&P 7;
, >P5R+ZAN5&OR+D?
i <ste modi(icador es de(inidoA el patr-n es o#ligado a ser =anclado=A es decirA es
limitado para /ue coincida s-lo al inicio de la cadena /ue est* siendo analizada >la
=cadena de asunto=?; +ste e(ecto puede alcanzarse tam#i<n mediante las
construcciones apropiadas en el patr-n mismoA la cual es la Bnica manera de
hacerlo en Perl;
D >P5R+ZDOLLARZ+NDONL%?
i <ste modi(icador es de(inidoA un meta2caracter de signo d-lar en el patr-n
coincide Bnicamente al (inal de la cadena de asunto; in <ste modi(icadorA un d-lar
coincide tam#i<n inmediatamente antes del caracter (inal si <ste es un salto de
l)nea >pero no antes de cual/uier otra nueva l)nea?; +ste modi(icador es ignorado
si m es de(inido; No hay Walente en Perl para este modi(icador;
S
5uando un patr-n va a ser usado varias vecesA vale la pena dedicar m*s tiempo a
analizarlo para acelerar el proceso de comparaciones; i <ste modi(icador es
de(inidoA entonces se realizar* este an*lisis adicional; Por el momentoA el estudio
de un patr-n es Btil s-lo para patrones no2anclados /ue no tienen un car*cter de
inicio Bnico arreglado;
U >P5R+Z@NGR++D%?
+ste modi(icador invierte la =am#ici-n= de los cuanti(icadoresA de modo /ue no
sean codiciosos por de(ectoA en su lugar se vuelven codiciosos si son seguidos por
un =N=; No es compati#le con Perl; ,am#i<n puede de(inirse con un modi(icador
>N@? al interior del patr-n o
F >P5R+Z+J,RA?
+ste modi(icador activa (uncionalidad adicional de P5R+ /ue no es compati#le
con Perl; 5ual/uier #arra invertida en un patr-n /ue sea seguida por una letra /ue
no tenga un signi(icado especial provocar* un errorA logrando en e(ecto reservar
<stas com#inaciones para (uturas ampliaciones; Por de(ectoA como en PerlA una
#arra invertida seguida por una letra sin un signi(icado especial es tratada como un
literal; No hay otras caracter)sticas controladas por este modi(icador a la (echa de
hoy;
u >P5R+Z@,FM?
+ste modi(icador activa (uncionalidad adicional de P5R+ /ue no es compati#le
con Perl; Las cadenas de patrones son tratadas como @,F2M; +ste modi(icador se
encuentra disponi#le a partir de P&P 8;1;3 o versiones posteriores en @niFA y
desde P&P 8;0;7 en Ein70;
,inta+is de los Patrones
intaFis de los Patrones 22 Descri#e la sintaFis de eFpresiones regulares P5R+
Kescripci"n
La #i#lioteca P5R+ es un con'unto de (unciones /ue implementa comparaciones con patrones de
eFpresiones regulares usando usando la misma sintaFis y sem*ntica de Perl 4A con tan solo unas
pocas di(erencias >ver m*s adelante?; La implementaci-n actual corresponde a Perl 4;334;
Kiferencias con Perl
Las di(erencias descritas a/u) eFisten con respecto a Perl 4;334;
1; Por de(ectoA un caracter de espacio en #lanco es cual/uier caracter /ue reconozca la (unci-n
isspace>? de la #i#lioteca 5A aun/ue es posi#le compilar P5R+ con ta#las alternativas de tipos de
caracteres; NormalmenteA isspace>? coincide con el espacioA la alimentaci-n de p*ginaA la nueva
l)neaA el retorno de carroA el ta#ulador horizontal y el ta#ulador vertical; Perl 4 ya no incluye el
ta#ulador vertical en su con'unto de caracteres de espacio en #lanco; La secuencia de escape hv
/ue permaneci- durante mucho tiempo en la documentaci-n de Perl nunca (ue reconocida en
realidad; in em#argoA el caracter mismo era tratado como espacio en #lanco por lo menos hasta
4;330; +n 4;338 y 4;334 no coincide con hs;
0; P5R+ no permite cuanti(icadores de repetici-n en aserciones hacia adelante; Perl las permiteA
pero no /uieren decir lo /ue pro#a#lemente piense; Por e'emploA >Naa?\7] no /uiere decir /ue los
siguientes tres caracteres no sean =a=; implemente indica /ue el siguiente caracter no sea =a= tres
veces;
7; Los su#2patrones de captura /ue aparecen al interior de aserciones negativas hacia adelante son
contadosA pero sus entradas en el vector de desplazamientos no son de(inidas; Perl de(ine sus
varia#les num<ricas a partir de cual/uiera de tales patrones /ue coinciden antes /ue la aserci-n
(alle en coincidir algo >y por lo tanto tiene <Fito?A pero solo si la aserci-n negativa hacia adelante
contiene una sola rama;
8; Aun/ue los caracteres de cero #inario son soportados en la cadena de asuntoA no son permitidos
en una cadena de patr-n por/ue <stas son pasadas como un cadena normal de 5A terminada en
cero; La secuencia de escape =h3= puede ser usada en el patr-n para representar el cero #inario;
4; Las siguientes secuencias de escape de Perl no son soportadasC hlA huA hLA h@A h+A hO; De hechoA
estas son implementadas por el mecanismo de gesti-n general de cadenas de Perl y no son parte
de su motor de comparaci-n de patrones;
K; La aserci-n hG de Perl no es soportadaA ya /ue no es relevante para las coincidencias sencillas de
patrones;
:; O#viamenteA P5R+ no soporta la construcci-n >N\c-digo]?;
M; +n la actualidad hay algunas peculiaridades en Perl 4;334Z30 con respecto a los grupos de
cadenas capturadas cuando parte de un patr-n se repite; Por e'emploA al coincidir =a#a= con el
patr-n Dk>a>#?N?RYD se de(ine Y0 como =#=A pero al coincidir =aa##aa= con Dk>aa>##?N?RYD de'a Y0
sin de(inir; in em#argoA si el patr-n se modi(ica a Dk>aa>#>#??N?RYD entonces Y0 >y Y7? se
de(inen; +n Perl 4;338 se de(ine Y0 en am#os casosA y tam#i<n ocurre en P5R+; i en el (uturo
Perl se adapta a un estilo consistente /ue sea di(erenteA P5R+ puede cam#iar para a'ustarse;
9; Otra discrepancia aBn no resuelta consiste en /ueA en Perl 4;334Z30A el patr-n Dk>a?N>N>1?al#?RYD
coincide con la cadena =a=A pero en P5R+ no; in em#argoA tanto en Perl como en P5R+ Dk>a?NaD
coincide con =a=A de'ando Y1 sin de(inir;
13;P5R+ o(rece algunas eFtensiones a las capacidades de eFpresiones regulares de PerlC
a; Aun/ue las aserciones hacia atr*s de#en coincidir con cadenas de longitud (i'aA cada rama
alternativa de una aserci-n hacia atr*s puede coincidir con una longitud di(erente de
cadena; Perl 4;334 re/uiere /ue todas ellas tengan la misma longitud;
#; i P5R+ZDOLLARZ+NDONL% se de(ine y P5R+ZM@L,.L.N+ noA el meta2caracter Y
s-lo coincide al (inal a#soluto de la cadena;
c; i se de(ine P5R+Z+J,RAA una #arra invertida seguida de una letra sin signi(icado
especial provoca un error;
d; i se de(ine P5R+Z@NGR++D%A la am#ici-n de los cuanti(icadores de repetici-n es
invertidaA es decirA no son am#iciosos por de(ectoA pero si son seguidos de un signo de
interrogaci-nA s) lo ser*n;
Ketalles de las E+presiones Megulares
Introducci"n
La sintaFis y sem*ntica de las eFpresiones regulares soportadas por P5R+ se descri#e a
continuaci-n; Las eFpresiones reglurares son descritas en la documentaci-n de Perl y en varios
li#ros m*sA algunos de los cuales contienen numerosos e'emplos; +l li#ro =Mastering Regular
+Fpressions= de !e((rey FriedlA pu#licado por OHReilly >.BN 124K490204:27?A las cu#re con gran
detalle; +l prop-sito de la presente descripci-n es el de servir como documentaci-n de re(erencia;
@na eFpresi-n regular es un patr-n /ue es comparado contra una cadena de asuntoA de iz/uierda a
derecha; La mayor)a de caracteres se representan a ellos mismos en un patr-nA y coinciden con el
caracter correspondiente en el asunto; 5omo e'emplo trivialA el patr-n The @u6c> 1ro7n 9o8 coincide
con una porci-n de la cadena de asunto /ue sea id<ntica al patr-n dado;
Meta(caracteres
+l poder de las eFpresiones regulares proviene de la ha#ilidad de incluir alternativas y repeticiones
en el patr-n; [stos recursos son codi(icados en el patr-n mediante el uso de meta=caracteresA los
cuales no se representan a ellos mismosA en su lugarA son interpretados de una (orma especial;
&ay dos con'untos di(erentes de meta2caracteresC a/uellos /ue son reconocidos en cual/uier parte
dentro del patr-n eFcepto entre corchetes cuadradosA y a/uellos /ue son reconocidos entre corchetes
cuadrados; Por (uera de tales corchetesA los meta2caracteres son los siguientesC
Q
caracter de escape general con varios usos
Z
aserci-n de inicio de la cadena de asunto >o l)neaA en modo multil)nea?
'
aserci-n de (in de la cadena de asunto >o l)neaA en modo multil)nea?
.
coincide con cual/uier caracter eFcepto la nueva l)nea >por de(ecto?
)
inicia la de(inici-n de clases de caracteres
.
(in de la de(inici-n de clases de caracteres
V
inicio de rama alternativa
L
inicio de su#2patr-n
M
(in de su#2patr-n
%
eFtiende el signi(icado de >A tam#i<n es el cuanti(icador 3 - 1 tam#i<n es el cuanti(icador de
m)nimo
/
cuanti(icador cero o m*s
Y
cuanti(icador uno o m*s
G
cuanti(icador de inicio de valores m)nimoDm*Fimo
H
cuanti(icador de (inal de valores m)nimoDm*Fimo
@n segmento de un patr-n /ue se encuentre entre corchetes cuadrados es llamado una =clase de
caracteres=; +n una clase de caracteresA los Bnicos meta2caracteres sonC
Q
caracter general de escape
Z
niega la claseA pero s-lo si se trata del primer caracter
=
indica un rango de caracteres
.
(inaliza la clase de caracteres
Las secciones siguientes descri#en el uso de cada uno de los meta2caracteres;
barra in5ertida
+l caracter de #arra invertida tiene varios usos; PrimeroA si es seguido por un caracter no2
al(anum<ricoA remueve cual/uier signi(icado /ue el caracter pueda tener; +ste uso de la #arra
invertida como un caracter de escape se aplica tanto dentro como (uera de las clases de caracteres;
Por e'emploA si desea crear una coincidencia con un caracter =V=A de#e escri#ir =hV= en el patr-n;
+sto es aplica#le #ien sea /ue el caracter siguiente hu#iese sido interpretado como un meta2caracter
o noA as) /ue siempre es seguro preceder un caracter no2al(anum<rico con =h= para indicar /ue se
representa a <l mismo; +n particularA si desea crear una coincidencia con una #arra invertidaA escri#a
=hh=;
i un patr-n es compilado con la opci-n P5R+Z+J,+ND+DA los espacios en #lanco del patr-n
>(uera de una clase de caracteres? y los caracteres entre un =n=A (uera de una clase de caracteresA y el
siguiente salto de l)nea son ignorados; @na #arra invertida de escape puede ser usada para incluir un
espacio en #lanco o un caracter =n= como parte del patr-n;
@n segundo uso de la #arra invertida o(rece una (orma de codi(icar caracteres no2imprimi#les en los
patrones de una (orma visi#le; No hay restricciones so#re la apariencia de los caracteres no2
imprimi#lesA aparte del cero #inario /ue (inaliza un patr-nA pero cuando un patr-n est* siendo
preparado mediante la edici-n de teFtoA usualmente es m*s (*cil usar una de las siguientes
secuencias de escape en lugar de los caracteres #inarios /ue representanC
Qa
alarmaA esto esA el caracter B+L >heFadecimal 3:?
Qc8
=control2F=A en donde F es cual/uier caracter
Qe
escape >heFadecimal 1B?
Q9
alimentaci-n de p*gina >heFadecimal 35?
Qn
nueva l)nea >heFadecimal 3A?
Qr
retorno de carro >heFadecimal 3D?
Qt
ta#ulador >heFadecimal 39?
Q8hh
caracter con c-digo heFadecimal hh
Q###
caracter con c-digo octal dddA o re(erencia hacia atr*s
+l e(ecto preciso de =Qc8= es como sigueC si =8= es una letra minBsculaA <sta es convertida a
mayBscula; +ntonces el seFto #it del caracter >83 en heFadecimal? es invertido; Por lo tantoA =QcD= se
convierte en 1A en heFadecimalA pero =QcG= se convierte en 7B en heFadecimalA mientras /ue =QcJ=
se convierte en :B en heFadecimal;
Despu<s de =Q8=A son leidos hasta dos d)gitos heFadecimales >las letras pueden ser mayBsculas o
minBsculas?;
Despu<s de =Q0=A son le)dos hasta dos d)gitos octales m*s; +n am#os casosA si hay menos de dos
d)gitosA se usar*n s-lo los /ue est<n presentes; Por lo tantoA la secuencia =Q0Q8Q07= especi(ica dos
ceros #inarios seguidos de un caracter B+L; AsegBrese de indicar dos d)gitos despu<s del cero
inicial si el caracter /ue sigue es en s) un d)gito octal;
La gesti-n de una #arra invertida seguida por un d)gito di(erente de cero es complicada; Por (uera de
una clase de caracteresA P5R+ lee el d)gito y cual/uier otro /ue le siga como un nBmero decimal; i
el nBmero es menor /ue diezA o si han ha#ido al menos tantos par<ntesis iz/uierdos de captura en la
eFpresi-nA entonces la secuencia entera es tomada como una re9erenc6a hac6a atr[s; @na
descripci-n de c-mo tra#a'a esto es presentada m*s adelanteA tras la discusi-n so#re su#2patrones
con par<ntesis;
Al interior de una clase de caracteresA o si el nBmero decimal es mayor /ue 9 y no han ha#ido tantos
su#2patrones de capturaA P5R+ lee de nuevo hasta tres d)gitos octales /ue sigan a la #arra invertidaA
y genera un #yte sencillo a partir de los ocho #its menos signi(icativos del valor; 5ual/uier d)gito
su#siguiente se representa a <l mismo; Por e'emploC
Q0;0
es otro modo de escri#ir un espacio
Q;0
es lo mismoA siempre /ue haya menos de cuarenta su#2patrones de captura previos
Q7
siempre es una re(erencia hacia atr*s
Q11
puede ser una re(erencia hacia atr*sA u otra (orma de escri#ir un ta#ulador
Q011
siempre es un ta#ulador
Q011R
es un ta#ulador seguido del caracter =7=
Q11R
es el caracter con el c-digo octal 117 >ya /ue no puede ha#er m*s de 99 re(erencias hacia
atr*s?
QR77
es un #yte /ue consiste completamente de #its 1
QP1
puede ser una re(erencia hacia atr*sA o un cero #inario seguido por los caracteres =M= y =1=
Note /ue los valores octales del 133 o nBmeros m*s grandes no de#en iniciar con un ceroA ya /ue no
se leen m*s de tres d)gitos octales;
,odas las secuencias /ue de(inen el valor de un #yte sencillo pueden ser usadas tanto dentro como
(uera de las clases de caracteres; AdicionalmenteA la secuencia =Q1= es interpretada como el caracter
#ac"space >heFadecimal 3M? al interior de una clase de caracteres; Por (uera de una clase de
caracteres tiene un signi(icado di(erente >ver m*s adelante?;
+l tercer uso de la #arra invertida es para especi(icar tipos gen<ricos de caracteresC
Q#
cual/uier d)gito decimal
QD
cual/uier caracter /ue no sea un d)gito decimal
Qs
cual/uier caracter de espacio en #lanco
QS
cual/uier caracter /ue no sea un espacio en #lanco
Q7
cual/uier caracter de =pala#ra=
QI
cual/uier caracter /ue no sea de =pala#ra=
5ada pare'a de las secuencias de escape divide el con'unto glo#al de caracteres en dos grupos
separados; 5ual/uier caracter dado coincide con unoA y s-lo unoA de cada pare'a;
@n caracter de =pala#ra= es cual/uier letra o d)gitoA o el caracter de su#rayadoA esto /uiere decirA
cual/uier caracter /ue pueda ser parte de una =pala1ra= en Perl; La de(inici-n de letras y d)gitos es
controlada por las ta#las de caracteres de P5R+A y puede variar si se est*n e(ectuando coincidencias
espec)(icas a localidades >vea =oporte de localidades= m*s arri#a?; Por e'emploA en la localidad =(r=
>Francia?A algunos c-digos de caracteres mayores a 10M son usados para letras con acentosA y <stas
coinciden con Q7;
+stas secuencias de tipos de caracter pueden aparecer tanto dentro como (uera de las clases de
caracteres; 5ada una coincide con un caracter del tipo apropiado; i el punto de coincidencia actual
es el (inal de la cadena de asuntoA todas las secuencias (allanA ya /ue no hay caracteres a coincidir;
+l cuarto uso de la #arra invertida es para ciertas aserciones simples; @na aserci-n especi(ica una
condici-n /ue tiene /ue cumplirse en un punto particular de una coincidenciaA sin consumir caracter
alguno de la cadena de asunto; +l uso de su#2patrones para aserciones m*s complicadas se descri#e
m*s adelante; Las aserciones de #arra invertida son
Q1
l)mite de pala#ra
QA
no2l)mite de pala#ra
Q,
inicio de la cadena de asunto >independiente del modo multil)nea?
Q^
(in de la cadena de asunto o una nueva l)nea al (inal >independiente del modo multil)nea?
QD
(in de la cadena de asunto >independiente del modo multil)nea?
+stas aserciones no pueden aparecer dentro de clases de caracteres >pero note /ue =Q1= tiene un
signi(icado di(erenteA el cual es el caracter #ac"spaceA dentro de una clase de caracteres?;
@n l)mite de pala#ra es una posici-n en la cadena de asunto en donde el caracter actual y el anterior
no coinciden am#os con Q7 o QI >es decirA uno coincide con Q7 y el otro coincide con QI?A o se
puede tratar del principio o el (inal de la cadenaA si el primer o Bltimo caracter coincide con Q7A
respectivamente;
Las aserciones Q,A Q^A y QD se di(erencian de los caracteres tradicionales circun(le'o y d-lar >descritos
m*s adelante? en /ue las primeras s-lo coinciden al inicio y (inal a#solutos de la cadena de asuntoA
independientemente de las opciones de(inidas; No son in(luenciadas por las opciones
P5R+ZM@L,.L.N+ o P5R+ZDOLLARZ+NDONL%; La di(erencia entre Q^ y QD es /ue Q^ coincide
antes de una nueva l)nea /ue sea el Bltimo caracter de la cadena como tam#i<n al (inal de la cadenaA
mientas /ue QD s-lo coincide al (inal;
El circunfle'o y el d"lar
Por (uera de una clase de caracteresA en el modo predeterminado de coincidenciaA el caracter
circun(le'o es una aserci-n /ue s-lo es verdadera si el punto de coincidencia actual es el inicio de la
cadena de asunto; Al interior de una clase de caracteresA el circun(le'o tiene un signi(icado
completamente distinto >ver m*s adelante?;
+l circun(le'o no necesita ser el primer caracter del patr-n si se involucra un nBmero de alternativasA
pero de#e ser la primer cosa en cada alternativa en la /ue aparezca si se espera /ue el patr-n
coincida con esa rama; i todas las alternativas posi#les empiezan con un circun(le'oA esto esA si el
patr-n est* limitado a coincidir s-lo con en el inicio del asuntoA se dice /ue es un patr-n =anclado=;
>,am#i<n hay otras construcciones /ue pueden hacer /ue un patr-n sea anclado;?
@n caracter de d-lar es una aserci-n /ue es verdadera s-lo si el punto de coincidencia actual se
encuentra al (inal de la cadena de asuntoA o inmediatamente antes de un caracter de nueva l)nea /ue
sea el Bltimo caracter en la cadena >por de(ecto?; +l d-lar no necesita ser el Bltimo caracter del
patr-n si hay varias alternativas involucradasA pero de#e ser el Bltimo elemento en cada rama en la
/ue aparezca; +l d-lar no tiene un signi(icado especial en una clase de caracteres;
+l signi(icado del d-lar puede ser modi(icado para /ue coincida s-lo al (inal a#soluto de la cadenaA
de(iniendo la opci-n P5R+ZDOLLARZ+NDONL% en tiempo de compilaci-n o a la hora de
e(ectuar la comparaci-n; +sto no a(ecta a la aserci-n hI;
Los signi(icados de los caracteres circun(le'o y d-lar son modi(icados si la opci-n
P5R+ZM@L,.L.N+ es de(inida; 5uando <ste es el casoA <stos caracteres coinciden inmediatamente
antes e inmediatamente despu<s de un caracter =hn= internoA respectivamenteA adem*s de coincidir
con el inicio y el (inal de la cadena de asunto; Por e'emploA el patr-n Dka#cYD coincide con la cadena
de asunto =de(hna#c= en modo multil)neaA pero no en otro caso; 5onsecuentementeA los patrones /ue
son anclados en modo de l)nea sencilla ya /ue todas las ramas empiezan con =k= no son anclados en
modo multil)nea; La opci-n P5R+ZDOLLARZ+NDONL% es ignorada si P5R+ZM@L,.L.N+ es
de(inido;
,enga en cuenta /ue las secuencias hAA hI y hz pueden ser usadas para coincidir con el inicio y el
(inal del asunto en am#os modosA y si todas las ramas de un patr-n comienzan con hAA el patr-n
siempre es ancladoA independientemente de si P5R+ZM@L,.L.N+ es de(inido o no;
P)NTJ
Por (uera de una clase de caracteresA un punto en el patr-n coincide con cual/uier caracter del
asuntoA incluyendo caracteres no2imprimi#lesA pero no el salto de l)nea >por de(ecto?; i la opci-n
P5R+ZDO,ALL es de(inidaA entonces los puntos coinciden con los saltos de l)nea tam#i<n; +l
mane'o del punto es completamente independiente del uso del circun(le'o y el d-larA dado /ue la
Bnica relaci-n entre ellos es /ue am#os casos involucran caracteres de nueva l)nea; +l punto no tiene
un signi(icado especial dentro de una clase de caracteres;
Corchetes cuadrados
@n corchete cuadrado de apertura inicia una clase de caracteresA terminada por un corchete cuadrado
de cierre; @n corchete cuadrado de cierre por s) solo no es especial; i un corchete cuadrado de
cierre es re/uerido como un miem#ro de la claseA de#er)a ser el primer caracter de datos en la clase
>despu<s de un circun(le'o inicialA si est* presente? o escapado con una #arra invertida;
@na clase de caracteres coincide con un caracter Bnico en el asuntoX el caracter de#e estar en el
con'unto de los caracteres de(inidos por la claseA a menos /ue el primer caracter en la clase sea un
circun(le'oA en cuyo caso el caracter del asunto no de#e estar en el con'unto de(inido por la clase; i
un circun(le'o es necesitado realmente como un miem#ro de la claseA asegBrese de /ue no sea el
primer caracterA o esc*pelo con una #arra invertida;
Por e'emploA la clase de caracteres PaeiouQ coincide con cual/uier vocal minBsculaA mientras /ue
PkaeiouQ coincide con cual/uier caracter /ue no sea una vocal minBscula; Note /ue un circun(le'o es
una notaci-n conveniente para especi(icar los caracteres /ue est*n en la clase enumerando a/uellos
/ue no lo est*n; No es una aserci-nC aun consume un caracter de la cadena de asuntoA y (alla si el
apuntador actual est* al (inal de la cadena;
5uando se recurre a las comparaciones insensi#les a mayBsculas y minBsculasA cual/uier letra en
una clase representa am#as versionesA por e'emploA un patr-n insensi#le a mayBsculas y minBsculas
PaeiouQ coincide tanto con =A= como con =a=A y un patr-n insensi#le a mayBsculas y minBsculas
PkaeiouQ no coincide con =A=A mientras /ue una versi-n sensi#le lo har)a;
+l caracter de nueva l)nea nunca es tratado de un modo especial entra las clases de caracteresA
independientemente de los valores de las opciones P5R+ZDO,ALL o P5R+ZM@L,.L.N+; @na
clase como PkaQ siempre coincidir* con una nueva l)nea;
+l caracter menos >gui-n? puede ser usado para especi(icar un rango de caracteres en una clase de
caracteres; Por e'emploA Pd2mQ coincide con cual/uier letra entre d y mA am#as inclusive; i un
caracter menos es re/uerido en una claseA de#e ser escapado con una #arra invertidaA o aparecer en
una posici-n en donde no pueda ser interpretado como indicador de rangoA normalmente como
primer o Bltimo caracter de la clase;
No es posi#le tener el caracter literal =Q= como el caracter (inal de un rango; @n patr-n como PL2Q
8KQ es interpretado como una clase de dos caracteres >=L= y =2=? seguida por la cadena literal =8KQ=A
as) /ue coincidir)a con =L8KQ= o =28KQ=; in em#argoA si el caracter =Q= es escapado con una #arra
invertidaA <ste es interpretado como el (inal del rangoA as) /ue PL2hQ8KQ es interpretado como una
clase Bnica /ue contiene un rango seguido por dos caracteres di(erentes; La representaci-n octal o
heFadecimal de =Q= puede ser usada tam#i<n para (inalizar un rango;
Los rangos tra#a'an en el orden de la secuencia A5..; Pueden ser usados tam#i<n para caracteres
especi(icados num<ricamenteA por e'emplo Ph3332h37:Q; i un rango /ue incluye letras es usado
cuando es de(inida la comparaci-n insensi#le a mayBsculas y minBsculasA el rango coincide las
letras en cual/uiera de los casos; Por e'emploA PL2cQ es Walente a PQPhkZmEFyza#cQA e(ectuando la
coincidencia insensi#le a mayBsculas y minBsculasA y si las ta#las de caracteres para la localidad =(r=
est*n en usoA entonces PhFcM2hFc#Q coincide con los caracteres + acentuados en am#os casos;
Los tipos de caracteres hdA hDA hsA hA hEA y hL tam#i<n pueden aparecer en una clase de caracteresA y
aWaden los caracteres /ue ellos representan a la clase; Por e'emploA PhdAB5D+FQ coincide con
cual/uier d)gito heFadecimal; @n circun(le'o puede ser convenientemente usado con los tipos de
caracter en mayBscula para especi(icar un con'unto m*s restringido de caracteres /ue el de una
comparaci-n con tipo en minBscula; Por e'emploA la clase PkhLZQ coincide con cual/uier letra o
d)gitoA pero no con el signo de su#rayado;
,odos los caracteres no2al(anum<ricos di(erentes a hA 2A k >al comienzo? y el caracter Q de cierre no
tienen un signi(icado especial en una clase de caracteresA pero no hace daWo /ue se encuentren
escapados;;
1arra 5ertical
Los caracteres de #arra vertical son usados para separar patrones alternativos; Por e'emploA el patr-n
E6l1ertVsull6an coincide o #ien con =gil#ert= o con =sullivan=; Puede usarse cual/uier nBmero de
alternativasA y se permiten alternativas vac)as >/ue coinciden con la cadena vac)a?; +l proceso de
comparaci-n prue#a con cada alternativa de iz/uierda a derechaA y la primera /ue tenga <Fito es
usada; i las alternativas est*n al interior de un su#2patr-n >de(inido m*s adelante?A el =<Fito= /uiere
decir /ue coincida con el resto del patr-n principal como tam#i<n con la alternativa en el su#2
patr-n;
Kefinici"n de opciones internas
Los valores de P5R+Z5A+L+A P5R+ZM@L,.L.N+A P5R+ZDO,ALLA P5R+Z@NGR++D%A
y P5R+Z+J,+ND+D pueden ser modi(icados desde el interior del patr-n por una secuencia de
letras de opciones de Perl encerradas entre =>N= y =?=; Las letras de opciones son
Tabla !. :etras de opciones internas
6 para P5R+Z5A+L+
m para P5R+ZM@L,.L.N+
s para P5R+ZDO,ALL
8 para P5R+Z+J,+ND+D
U
para
P5R+Z@NGR++D%
Por e'emploA >Nim? de(ine una comparaci-n insensi#le a mayBsculas y minBsculas y en modo
multil)nea; ,am#i<n es posi#le eliminar <stas opciones precediendo las letras con un gui-nA as)
como se permite tam#i<n una com#inaci-n de activaciones y desactivaciones como >Nim2sF?A la cual
de(ine P5R+Z5A+L+ y P5R+ZM@L,.L.N+ al mismo tiempo /ue desactiva P5R+ZDO,ALL
y P5R+Z+J,+ND+D; i una letra aparece antes y despu<s del gui-nA la opci-n ser* desactivada;
+l conteFto de <stas opciones cam#ia dependiendo del lugar en el /ue ocurra la de(inici-n; Para las
de(iniciones /ue son hechas por (uera de su#2patrones >de(inidos m*s adelante?A el e(ecto es el
mismo /ue si la opci-n (uera activada o desactivada al inicio de la coincidencia; Los siguientes
patrones se comportan todos de la misma maneraC
>Ni?a#c
a>Ni?#c
a#>Ni?c
a#c>Ni?

/ue a su vez tienen el mismo e(ecto /ue compilar el patr-n a#c con la opci-n P5R+Z5A+L+
activa; +n otras pala#rasA tales de(iniciones de =nivel superior= se aplican en todo el patr-n >a menos
/ue haya otros cam#ios al interior de su#2patrones?; i hay m*s de una de(inici-n de la misma
opci-n en el nivel superiorA la de(inici-n m*s a la derecha es usada;
i un cam#io de opci-n sucede dentro de un su#2patr-nA el e(ecto es di(erente; +ste es un cam#io
respecto a la conducta de Perl 4;334; @n cam#io de opci-n dentro de un su#2patr-n a(ecta s-lo a la
parte del su#2patr-n /ue lo sigueA de modo /ue LaL%6M1Mc coincide con a#c y aBc y ninguna otra
cadena >asumiendo /ue no se est* usando P5R+Z5A+L+?; De esta (ormaA las opciones pueden
de(inirse para tener di(erentes signi(icados en di(erente partes del patr-n; 5ual/uier cam#io
realizado en una alternativa ciertamente se aplica a ramas su#secuentes al interior del mismo su#2
patr-n; Por e'emploA LaL%6M1VcM coincide con =a#=A =aB=A =c=A y =5=A aun cuando al coincidir con =5=A
la primera rama es a#andonada antes de de(inir la opci-n; +sto es por/ue los e(ectos de de(inir de
opciones ocurren en tiempo de compilaci-n; De otro modoA ocurrir)a un comportamiento muy
eFtraWo;
Las opciones espec)(icas de P5R+ P5R+Z@NGR++D% y P5R+Z+J,RA pueden ser modi(icadas
del mismo modo /ue las opciones compati#les con Perl usando los caracteres @ y J
respectivamente; La opci-n #andera >NJ? es especial en el sentido en /ue siempre de#e ocurrir antes
/ue cual/uier otra caracter)stica adicional /ue active en el patr-nA incluso cuando es de(inida en el
nivel superior; u me'or u#icaci-n es el inicio;
sub(patrones
Los su#2patrones son delimitados por par<ntesisA y pueden estar anidados; Marcar parte de un patr-n
como un su#2patr-n logra dos cosasC
1; @#ica un con'unto de alternativas; Por e'emploA el patr-n catLaractVerp6llarVM coincide con una de
las pala#ras =cat=A =cataract=A o =caterpillar=; in los par<ntesisA coincidir)a con =cataract=A =erpillar=
o la cadena vac)a;
0; De(ine el su#2patr-n como un su#2patr-n de captura >como se de(ini- anteriormente?; 5uando el
patr-n completo coincidaA esa porci-n de la cadena de asunto /ue coincidi- con el su#2patr-n es
devuelta al origen mediante el argumento oector de pcre>e+ec./; Los par<ntesis de apertura son
contados de iz/uierda a derecha >empezando desde 1? para o#tener los nBmeros de los su#2patrones
de captura;
Por e'emploA si la cadena =the red "ing= es comparada contra el patr-n the LLre#V7h6teM L>6nEV@ueenMM
las su#2cadenas capturadas son =red "ing=A =red=A y ="ing=A y son numeradas como 1A 0 y 7;
+l hecho de /ue los simples par<ntesis realicen dos (unciones no siempre es Btil; 5on (recuencia se
presenta el caso en el /ue un su#2patr-n de agrupamiento es re/uerido sin necesidad de una captura;
i un par<ntesis de apertura es seguido por =NC=A el su#2patr-n no realiza ninguna capturaA y no es
contado cuando se compute el nBmero de su#2patrones su#siguientes capturados; Por e'emploA si la
cadena =the Ehite /ueen= es comparada con el patr-n the LL%:re#V7h6teM L>6nEV@ueenMM las su#2
cadenas capturadas son =Ehite /ueen= y =/ueen=A y son numeradas como 1 y 0; +l nBmero m*Fimo
de su#2cadenas capturadas es de 99A y el nBmero m*Fimo de todos los su#2patronesA de captura o noA
es de 033;
5omo un ata'o convenienteA si cual/uiera de las opciones se re/uiere al inicio de un su#2patr-n /ue
no sea de capturaA las letras de las opciones pueden aparecer entre los caracteres =N= y =C=; Por lo
tantoA los dos patrones
>NiCsaturdaylsunday?
>NC>Ni?saturdaylsunday?

coinciden con eFactamente el mismo con'unto de cadenas; Dado /ue las ramas alternativas son
pro#adas de iz/uierda a derechaA y las opciones no son reesta#lecidas hasta el (inal del su#2patr-nA
una de(inici-n de opci-n en una rama a(ecta las ramas su#secuentesA as) /ue los patrones anteriores
coinciden con =@NDA%=A al igual /ue con =aturday=;
Mepetici"n
La repetici-n es especi(icada por cuanti(icadoresA los cuales pueden ir tras cual/uiera de los
siguientes elementosC
un caracter sencilloA posi#lemente escapado
el meta2caracter ;
una clase de caracteres
una re(erencia hacia atr*s >vea la siguiente secci-n?
un su#2patr-n entre par<ntesis >a menos /ue se trate de una aserci-n 2 vea m*s adelante?
+l cuanti(icador general de repetici-n indica un nBmero m)nimo y un nBmero m*Fimo de
coincidencias permitidasA dando los dos nBmeros entre corchetes ondulados >llaves?A separados por
una coma; Los nBmeros de#en ser menores a K447KA y el primero de#e ser menor o igual al segundo;
Por e'emploC DG2C;H coincide con =zz=A =zzz=A o =zzzz=; @na llave de cierre por s) sola no es un
caracter especial; i el segundo nBmero es omitidoA pero aparece la comaA entonces no hay l)mite
superiorX si el segundo nBmero y la coma son omitidos am#osA el cuanti(icador indica el nBmero
eFacto de repeticiones re/ueridas; Por lo tanto )ae6ou.GRCH coincide con al menos 7 vocales
sucesivasA pero podr)a coincidir con muchas m*sA mientras /ue Q#GPH coincide con eFactamente
ocho d)gitos; @na llave de apertura /ue aparezca en una posici-n en donde no se permite un
cuanti(icadorA o una /ue no coincida con la sintaFis de un cuanti(icadorA es tomada como un caracter
literal; Por e'emploA \AK] no es un cuanti(icadorA sino una cadena literal de cuatro caracteres;
e permite el uso del cuanti(icador \3]A lo /ue provoca /ue la eFpresi-n se comporte como si el
elemento anterior y el cuanti(icador no estuvieran presentes;
Por conveniencia >y compati#ilidad hist-rica? los tres cuanti(icadores m*s comunes tienen
a#reviaciones de un solo caracterC
Tabla *. Cuantificadores de caracter(4nico
/ Walente a G0CH
Y Walente a G1CH
%
Walente a
G0C1H
+s posi#le construir ciclos in(initos mediante un su#2patr-n /ue no pueda coincidar con ningBn
caracter con un cuanti(icador /ue no tenga l)mite superiorA por e'emploC La%M/
Las primeras versiones de Perl y P5R+ sol)an producir un error en tiempo de compilaci-n para tales
patrones; in em#argoA dado /ue eFisten casos en donde esto puede ser BtilA tales patrones son
aceptados ahoraA pero si cual/uier repetici-n del su#2patr-n no coincide realmente con ningBn
caracterA el ciclo es interrumpido a la (uerza;
Por de(ectoA los cuanti(icadores son =am#iciosos=A lo /ue /uiere decirA coinciden con tanto material
como les es posi#le >hasta el nBmero m*Fimo de veces permitido?A sin provocar /ue el resto del
patr-n (alle; +l e'emplo cl*sico en el /ue esto causa pro#lema es a la hora de crear coincidencias
con comentarios en programas en 5; [stos aparecen entre las secuencias DV y VD yA al interior de la
secuenciaA los caracteres V y D pueden aparecer individualmente; @n intento por coincidir
comentarios en 5 al aplicar el patr-n /Q/./Q// so#re la cadena // pr6mer comentar6o // no comenta#o
// seEun#o comentar6o // (allaA ya /ue coincide con la cadena entera de#ido a la am#ici-n del
elemento ;V
in em#argoA si un cuanti(icador es seguido por un signo de interrogaci-nA entonces de'a de ser
am#iciosoA y en su lugar coincide el m)nimo nBmero de veces posi#lesA de tal suerte /ue el patr-n /
Q/./%Q// hace lo correcto con los comentarios en 5; +l signi(icado de los varios cuanti(icadores no se
modi(ica en otro modoA tan s-lo el nBmero pre(erido de coincidencias; No con(unda <ste uso del
signo de interrogaci-n con su uso como un cuanti(icador por s) solo; De#ido a /ue tiene dos usosA a
veces puede aparecer dos veces seguidasA como en Q#%%Q# caso /ue coincide con un d)gito de ser
posi#leA pero puede coincidir con dos si ese el Bnico modo en /ue el resto del patr-n coincida;
i se encuentra de(inida la opci-n P5R+Z@NGR++D% >la cual no est* disponi#le en Perl? entonces
los cuanti(icadores no son am#iciosos por de(ectoA pero cada uno por separado puede serlo cuando a
continuaci-n de ellos se encuentra un signo de interrogaci-n; +n otras pala#rasA invierte la conducta
predeterminada;
5uando un su#2patr-n entre par<ntesis es cuanti(icado con un nBmero m)nimo de repeticiones
superior a 1 o con un l)mite m*FimoA se necesita mayor almacenamiento para el patr-n compiladoA
en proporci-n al tamaWo del m)nimo o del m*Fimo;
i un patr-n empieza con ;V o ;\3A] y la opci-n P5R+ZDO,ALL >Walente a Ds en Perl? es de(inidaA
permitiendo de esa (orma /ue ; coincida con nuevas l)neasA entonces el patr-n es anclado
impl)citamenteA ya /ue cual/uier cosa a continuaci-n ser* comparada contra cada posici-n de
caracter en la cadena de asuntoA as) /ue no hay razones para reintentar la coincidencia en su
totalidad en cual/uier posici-n luego de la primera; P5R+ trata tales patrones como si estuvieran
precedidos por hA; +n los casos donde se conoce /ue la cadena de asunto no contiene nuevas l)neasA
vale la pena de(inir P5R+ZDO,ALL cuando el patr-n comienza con ;V para o#tener esta
optimizaci-nA o alternativamente usar k para indicar el anclamiento eFpl)citamente;
5uando un su#2patr-n de captura es repetidoA el valor capturado es la su#2cadena /ue coincidi- con
la iteraci-n (inal; Por e'emploA luego de /ue Lt7ee#le)#ume.GRHQs/MY ha coincidido con
=tEeedledum tEeedledee= el valor de la su#2cadena capturada es =tEeedledee=; in em#argoA si hay
su#2patrones de captura anidadosA los valores capturados correspondientes pueden ha#er sido
de(inidos en las iteraciones anteriores; Por e'emploA despu<s de /ue /LaVL1MMY/ coincide con =a#a=A el
valor de la segunda su#2cadena capturada es =#=;
ME;EMENCIA, HACIA ATM\c^ ,
Por (uera de una clase de caracteresA una #arra invertida seguida por un digito mayor /ue cero >y
posi#lemente m*s d)gitos? es una re(erencia hacia atr*s a un su#2patr-n de captura anterior >es decirA
a su iz/uierda? en el patr-nA siempre y cuando eFistan tantos par<ntesis iz/uierdos de captura;
in em#argoA si el nBmero decimal a continuaci-n de la #arra invertida es menor /ue diezA siempre
es tomado como una re(erencia hacia atr*sA y causa un error s-lo si no hay los su(icientes par<ntesis
iz/uierdos de captura en todo el patr-n; +n otras pala#rasA los par<ntesis /ue son re(eridos no
necesitan estar a la iz/uierda de la re(erencia para nBmeros menores /ue diez; $ea la secci-n
anterior titulada =Barra invertida= para m*s detalles so#re el mane'o de los d)gitos /ue siguen a una
#arra invertida;
@na re(erencia hacia atr*s coincide con cual/uier cosa /ue haya coincidido realmente con el su#2
patr-n de captura en la cadena de asunto actualA en lugar de hacerlo con cual/uier cosa /ue coincida
con el su#2patr-n mismo; De modo /ue el patr-n LsensVresponsMe an# Q1616l6t? coincide con =sense
and sensi#ility= y =response and responsi#ility=A pero no =sense and responsi#ility=; i se est*
aplicando una comparaci-n sensi#le a mayBsculas y minBsculas al momento de la re(erencia hacia
atr*sA entonces la distinci-n de las letras es importante; Por e'emploA LL%6MrahMQsYQ1 coincide con
=rah rah= y =RA& RA&=A pero no =RA& rah=A incluso cuando el su#2patr-n de captura original (ue
comparado de (orma insensi#le a mayBsculas y minBsculas;
Puede ha#er m*s de una re(erencia hacia atr*s hacia el mismo su#2patr-n; i un su#2patr-n no ha
sido usado realmente en una coincidencia particularA entonces cual/uier re(erencia hacia atr*s hacia
a/u<l siempre (alla; Por e'emploA el patr-n LaVL1cMMQ2 siempre (alla si comienza coincidiendo con =a=
en lugar de =#c=; %a /ue puede ha#er hasta 99 re(erencias hacia atr*sA todos los d)gitos /ue siguen a
la #arra invertida son tomados como parte de un potencial nBmero de re(erencia hacia atr*s; i el
patr-n continBa con un caracter de d)gitoA entonces de#e ser usado algBn delimitador para terminar
la re(erencia hacia atr*s; i la opci-n P5R+Z+J,+ND+D es de(inidaA este puede ser el espacio en
#lanco; De otro modoA un comentario vaci- puede ser usado;
@na re(erencia hacia atr*s /ue ocurra dentro del par<ntesis al cual hace re(erencia (alla cuando el
su#2patr-n es usado por primera vezA as) /ueA por e'emploA >ah1? nunca crea coincidencias; in
em#argoA tales re(erencia pueden ser Btiles al interior de su#2patrones repetidos; Por e'emploA el
patr-n LaV1Q1MY coincide con cual/uier nBmero de =a=s y tam#i<n con =a#a=A =a#a#aa= etc; Para cada
iteraci-n del su#2patr-nA la re(erencia hacia atr*s coincide con la cadena de caracteres
correspondiente a la iteraci-n anterior; Para /ue esto (uncioneA el patr-n de#e ser tal /ue la primera
iteraci-n no necesite coincidir con la re(erencia hacia atr*s; +sto puede lograrse usando
alternacionesA como en el e'emplo anteriorA o por medio de un cuanti(icador con un m)nimo de cero;
Aserciones
@na aserci-n es una prue#a so#re los caracteres a continuaci-n o antes del punto actual de
coincidencia /ue no consume caracteres en realidad; Las aserciones simples codi(icadas como h#A
hBA hAA hIA hzA k y Y son descritas anteriormente; Las aserciones m*s complicadas son codi(icadas
como su#2patrones; &ay dos tiposC a/uellas /ue tra#a'an con material m*s adelante de la posici-n
actual en la cadena de asunto y a/uellas /ue lo hacen con material hacia atr*s;
@n su#2patr-n de aserci-n es comparado del modo usualA eFcepto /ue no causa /ue el punto actual
de coincidencia cam#ie; Las aserciones hacia adelante comienzan con >N^ en el caso de aserciones
positivas y >Na para las negativas; Por e'emploA Q7YL%:JM coincide con una pala#ra seguida por un
punto2y2coma; pero no incluye el punto2y2coma en la coincidenciaA y 9ooL%_1arM coincide con
cual/uier ocurrencia de =(oo= /ue no sea seguida por =#ar=; Note /ue el patr-nA en apariencia
seme'anteA L%_9ooM1ar no encuentra una ocurrencia de =#ar= /ue sea precedida por algo di(erente de
=(oo=X encuentra cual/uier ocurrencia de =#ar=A ya /ue la aserci-n >Na(oo? es siempre verdadera
cuando los siguientes tres caracteres son =#ar=; @na aserci-n hacia atr*s es necesaria para conseguir
este e(ecto;
Las aserciones hacia atr*s comienzan con >N`^ para las aserciones positivas y >N`a para las
negativas; Por e'emploA L%$_9ooM1ar encuentra una ocurrencia de =#ar= /ue no es precedida por
=(oo=; Los contenidos de una aserci-n hacia atr*s son restringidos de tal (orma /ue todas las cadenas
con las /ue coinciden de#en tener una longitud (i'a; in em#argoA si hay varias alternativasA no todas
tienen /ue tener la misma longitud; Por lo tanto L%$:1ulloc>V#on>e?M se permiteA pero L%$_#oEs%V
cats%M genera un error en tiempo de compilaci-n; Las ramas /ue coinciden con cadenas de
di(erentes longitudes son permitidas s-lo en el nivel superior de la aserci-n hacia atr*s; [sta es una
eFtensi-n en comparaci-n con Perl 4;334A en donde se re/uiere /ue todas las ramas coincidan con la
misma longitud de cadena; @na aserci-n como L%$:a1LcV#eMM no es permitidaA ya /ue su rama Bnica
de nivel superior puede coincidir con dos longitudes di(erentesA pero es acepta#le si se reescri#e
para usar dos ramas de nivel superiorC L%$:a1cVa1#eM La implementaci-n de las aserciones hacia
atr*s consiste enA para cada alternativaA mover temporalmente la posici-n actual hacia atr*s en el
ancho (i'o e intentar la coincidencia; i no hay su(icientes caracteres antes de la posici-n actualA la
coincidencia est* destinada a (allar; Las aserciones hacia atr*sA en uni-n con los su#2patrones de una
sola aplicaci-nA pueden ser particularmente Btiles para las coincidencias al (inal de cadenasX un
e'emplo es dado al (inal de la secci-n so#re su#2patrones de una aplicaci-n;
$arias aserciones >de cual/uier tipo? pueden ocurrir en sucesi-n; Por e'emploA L%$:Q#GRHML%$_OOOM
9oo coincide con =(oo= precedido de tres d)gitos /ue no sean =999=; Note /ue cada una de las
aserciones es aplicada independientemente en el mismo punto en la cadena de asunto; Primero hay
un che/ueo para /ue los tres caracteres previos sean todos d)gitosA luego hay un che/ueo para /ue
los mismos caracteres no sean =999=; +ste patr-n no coincide con =(oo= precedido de seis caracteresA
en donde los primeros son d)gitos y los Bltimos tres no son =999=; Por e'emploA no coincide con
=107a#c(oo=; @n patr-n para conseguir eso es L%$:Q#GRH...ML%$_OOOM9oo
+n este caso la primera aserci-n revisa los seis caracteres anterioresA y che/uea /ue los tres primeros
sean d)gitosA y luego la segunda aserci-n che/uea /ue los tres caracteres anteriores no sean =999=;
Las aserciones puede ser anidadas en cual/uier com#inaci-n; Por e'emploA L%$:L%$_9ooM1arM1aD
coincide con una ocurrencia de =#az= /ue sea precedida por =#ar=A la cual a su vez no sea precedida
por =(oo=A mientras /ue L%$:Q#GRH...L%$_OOOMM9oo es otro patr-n /ue coincide con =(oo= precedido
por tres d)gitos y tres caracteres cual/uiera /ue no sean =999=;
Los su#2patrones de aserci-n no son su#2patrones de capturaA y no pueden ser repetidosA ya /ue no
tiene sentido a(irmar la misma cosa varias veces; i una aserci-n de cual/uier tipo contiene su#2
patrones de captura en su interiorA <stos son contados con el prop-sito de numerar los su#2patrones
de captura en todo el patr-n; in em#argoA la captura de su#cadenas solo se lleva a ca#o en las
aserciones positivasA por/ue no tiene sentido para las negativas;
Las aserciones cuentan para el m*Fimo de 033 su#2patrones entre par<ntesis;
,ub(patrones de una sola aplicaci"n
,anto con las repeticiones m*Fimas como en las m)nimasA el hecho de /ue (alle de lo /ue se
encuentra a continuaci-n causa por lo general /ue el item repetido sea re2evaluado para ver si un
nBmero di(erente de repeticiones permite /ue el resto del patr-n coincida; A veces es Btil prevenir
estoA ya sea cam#iando la naturaleza de la coincidenciaA o causando /ue (alle antes de cuando
ocurrir)a de otra (ormaA cuando el creador del patr-n sa#e /ue no tiene sentido continuar;
5onsidereA por e'emploA el patr-n hdR(oo cuando se aplica a la l)nea de asunto 12R;SX1ar
Despu<s de coincidir con los seis d)gitos y (allar al comparar con =(oo=A la acci-n normal del motor
es intentar otra vez con s-lo cinco d)gitos para coincidir con hdRA y luego con cuatroA y as)
sucesivamenteA antes de (allar por completo; Los su#2patrones de una aplicaci-n o(recen el medio de
especi(icar /ue una vez una porci-n del patr-n ha coincididoA no de#e ser re2evaluada en esta
maneraA as) /ue el motor se rendir)a inmediamente al (allar su intento por coincidir con =(oo= la
primera vez; La notaci-n es otra (orma especial de par<ntesisA iniciado con >N_ como en este
e'emploC L%&Q#YM1ar
+ste tipo de par<ntesis =#lo/uea= la parte del patr-n /ue contiene una vez ha coincididoA y se
previene /ue un (allo m*s al interior del patr-n retroceda al punto original; +l retroceso hacia
elementos previos (unciona normalmenteA despu<s de todo;
@na descripci-n alternativa es /ue un su#2patr-n de este tipo coincide con la cadena de carecteres
/ue un patr-n independiente id<ntico coincidir)aA si estuviera anclado en el punto actual de la
cadena de asunto;
Los su#2patrones de una sola aplicaci-n no son su#2patrones de captura; Los casos simples como el
e'emplo anterior pueden verse como una repetici-n m*Fima /ue de#e tragar todo lo /ue pueda; As)
/ueA mientras /ue tanto hdR como hdN est*n preparados para a'ustar el nBmero de d)gitos con los /ue
coinciden para hacer /ue el resto del patr-n coincidaA >N_hdR? puede coincidir s-lo con un secuencia
enteramente de d)gitos;
+sta construcci-n puedeA por supuestoA contener su#2patrones ar#itrariamente complicadosA y
pueden estar anidados;
Los su#2patrones de una aplicaci-n pueden ser usados en uni-n con aserciones hacia atr*s para
especi(icar coincidencias e(icientes al (inal de la cadena de asunto; 5onsidere un patr-n sencillo
como a1c#' cuando se aplica a una cadena larga con la cual no coincide; Dado /ue la comparaci-n
se realiza de iz/uierda a derechaA P5R+ #uscar* cada =a= en el asunto y luego ver* si lo /ue sigue
coincide con el resto del patr-n; i el patr-n se especi(ica como Z./a1c#' entonces el segmento ;V
inicial coincide con la cadena entera primeroA pero cuando esto (alle >ya /ue no ha#r* una =a= a
continuaci-n?A retrocede para coincidir con todo menos el Bltimo caracterA luego con todo eFcepto
los dos Bltimos y as) sucesivamente; @na vez m*sA la #Bs/ueda de =a= cu#re la cadena completaA de
derecha a iz/uierdaA as) /ue no hemos me'orado; in em#argoA si el patr-n se escri#iese como Z
L%&./ML%$:a1c#M entonces no hay retroceso para el elemento ;VX s-lo puede coincidir con la cadena
entera; La aserci-n hacia atr*s su#siguiente realiza una prue#a Bnica so#re los Bltimos cuatro
caracteres; i (allaA la coincidencia (alla inmediatamente; Para cadena largasA este en(o/ue
representa una di(erencia signi(icativa en el tiempo de procesamiento;
5uando un patr-n contiene una repetici-n ilimitada al interior de un su#2patr-n /ue puede ser por s)
mismo repetido un nBmero ilimitado de vecesA el uso de un su#2patr-n de una aplicaci-n es la Bnica
(orma de evitar algunas coincidencias (allidas /ue consumen ciertamente un tiempo muy largo; +l
patr-n LQDYV$Q#Y&M/)_%. coincide con un nBmero ilimitado de su#cadenas /ue consisten ya sea de
no2d)gitosA o d)gitos entre `_A seguidos por a o N; 5uando coincidaA se e'ecuta r*pido; in em#argoA
si se aplica so#re aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa toma un largo
tiempo antes de reportar el (allo; +sto es por/ue la cadena puede ser dividida entre las dos
repeticiones en un gran nBmero de (ormasA y todas de#en ser pro#adas; >+l e'emplo us- PaNQ en lugar
de un caracter sencillo al (inalA ya /ue tanto P5R+ como Perl cuentan con una optimizaci-n /ue
permite reportar (allos r*pidamente cuando un caracter sencillo es usado; Recuerdan el Bltimo
caracter simple /ue es re/uerido para una coincidenciaA y (alla tempranamente si no est* presente en
la cadena;? i el patr-n es modi(icado a LL%&QDYMV$Q#Y&M/)_%. las secuencias de no2d)gitos no
pueden ser interrumpidasA y la (alla ocurre r*pidamente;
,ub(patrones condicionales
+s posi#le hacer /ue el proceso de comparaci-n o#edezca a un su#2patr-n condicionalmente o /ue
eli'a entre dos su#2patrones alternativosA dependiendo del resultado de una aserci-nA o de si un su#2
patr-n de captura previo coincidi- o no; Las dos (ormas posi#les de su#2patrones condicionales sonC
>N>condici-n?patr-n2si?
>N>condici-n?patr-n2silpatr-n2no?

i la condici-n es satis(echaA el patr-n2si es usadoX de otra (orma el patr-n2no es usado >si est*
presente?; i hay m*s de dos alternativas en el su#2patr-nA se produce un error en tiempo de
compilaci-n;
&ay dos clases de condici-n; i el teFto entre los par<ntesis consiste de una secuencia de d)gitosA
entonces la condici-n es satis(echa si el su#2patr-n de captura de ese nBmero ha sido coincidido
previamente; 5onsideremos el siguiente patr-nA el cual contiene espacios en #lanco sin signi(icado
para hacerlo m*s legi#le >asumiendo la opci-n P5R+Z+J,+ND+D? y lo dividimos en tres partes
para (acilitar su discusi-nC L QL M% )ZLM.Y L%L1M QM M
La primera parte coincide con un par<ntesis de apertura opcionalA y si ese caracter est* presenteA lo
de(ine como la primera su#cadena capturada; La segunda parte coincide con uno o m*s caracteres
/ue no sean par<ntesis; La tercera parte es un su#2patr-n condicional /ue eFamina si el primer
con'unto de par<ntesis coincidi- o no; i lo hizoA es decirA si el asunto comenz- con un par<ntesis de
aperturaA la condici-n es ciertaA as) /ue el patr-n2si es e'ecutado y un par<ntesis de cierre es
re/uerido; De otro modoA ya /ue no eFiste un patr-n2noA el su#2patr-n coincide con nada; +n otras
pala#rasA este patr-n coincide con una secuencia de no2par<ntesisA opcionalmente entre par<ntesis;
i la condici-n no es una secuencia de d)gitosA de#e ser una aserci-n; [sta puede ser una aserci-n
positiva o negativa hacia adelante o hacia atr*s; 5onsidere este patr-nA el cual contiene una vez m*s
espacios en #lanco sin signi(icadoA y con las dos alternativas en la siguiente l)neaC
>N>N^Pka2zQVPa2zQ?
hd\0]2Pa2zQ\7]2hd\0] l hd\0]2hd\0]2hd\0] ?

La condici-n es una aserci-n positiva hacia adelante /ue coincide con una secuencia opcional de
no2letras seguida por una letra; +n otras pala#rasA eFamina la presencia de al menos una letra en el
asunto; i se encuentra una letraA el asunto es comparado contra la primera alternativaX de otra (orma
lo es con la segunda; +ste patr-n coincide con cadenas en una de las dos (ormas dd2aaa2dd o dd2dd2
ddA en donde aaa son letras y dd son d)gitos;
Comentarios
La secuencia >Nn marca el inicio de un comentario el cual continBa hasta el siguiente par<ntesis de
cierre; Los par<ntesis anidados no son permitidos; Los caracteres /ue (orman un comentario no
hacen parte del patr-n de coincidencia en ningBn caso;
i la opci-n P5R+Z+J,+ND+D es de(inidaA un caracter n no escapado por (uera de una clase de
caracteres crea un comentario /ue continBa hasta el pr-Fimo caracter de nueva l)nea en el patr-n;
Patrones recursi5os
5onsidere el pro#lema de coincidir con una cadena entre par<ntesisA permitiendo un nBmero
ilimitado de par<ntesis anidados; in el uso de recursionesA lo me'or /ue puede lograrse es usar un
patr-n /ue coincida hasta un nBmero l)mite de pro(undidad en el anidamiento; No es posi#le
mane'ar una pro(undidad ar#itraria de anidamiento; Perl 4;K contiene una caracter)stica
eFperimental /ue permite /ue las eFpresiones regulares sean recursivas >entre otras cosas?; +l
elemento especial >NR? est* disponi#le para el caso espec)(ico de recursi-n; +ste patr-n de P5R+
resuelve el pro#lema de los par<ntesis >asumiendo /ue la opci-n P5R+Z+J,+ND+D es de(inidaA
de modo /ue los espacios en #lanco sean ignorados?C QL L L%&)ZLM.YM V L%RM M/ QM
Primero coincide con un par<ntesis de apertura; Luego coincide con cual/uier nBmero de
su#cadenasA /ue pueden ser o #ien una secuencia de no2par<ntesisA o una coincidencia recursiva del
patr-n mismo >es decirA una su#cadena correctamente envuelta por par<ntesis?; Finalmente hay un
par<ntesis de cierre;
+ste patr-n de e'emplo en particular contiene repeticiones anidadas ilimitadasA as) /ue el uso de un
su#2patr-n de una aplicaci-n para la comparaci-n de cadenas de no2par<ntesis es importante cuando
se aplica el patr-n a cadenas /ue no coinciden; Por e'emploA cuando se aplica a
LaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLM descu#re una =no
coincidencia= r*pidamente; in em#argoA si un su#2patr-n de una aplicaci-n no es usadoA la
comparaci-n es e'ecutada por un tiempo muy largo realmente ya /ue hay muchas (ormas di(erentes
en las /ue las repeticiones R y V pueden moldear el asuntoA y todas de#en ser pro#adas antes /ue
pueda reportarse el (allo;
Los valores esta#lecidos para cual/uier su#2patr-n de captura son a/uellos del nivel de recursi-n
m*s eFterno en el /ue est< de(inido el valor del su#2patr-n; i el patr-n anterior (uera comparado
contra La1Lc#Me9M el valor para los par<ntesis de captura es =e(=A el cual es el Bltimo valor tomado del
nivel superior; i se agregan par<ntesis adicionalesA produciendo QL L L L%&)ZLM.YM V L%RM M/ M QM
entonces la cadena /ue capturan es =a#>cd?e(=A los contenidos de los par<ntesis del nivel superior; i
hay m*s de 14 par<ntesis de captura en un patr-nA P5R+ tiene /ue o#tener memoria eFtra para
almacenar datos durante una recursi-nA cosa /ue logra usando pcreZmallocA y la li#era m*s adelante
mediante pcreZ(ree; i no se puede o#tener memoriaA guarda datos Bnicamente para los primeros 14
par<ntesis de capturaA dado /ue no hay (orma de producir un error de memoria2insu(iciente desde el
interior de una recursi-n;
Mendimientos
5iertos elementos /ue pueden aparecer entre los patrones son m*s e(icientes /ue otros; +s m*s
e(iciente usar una clase de caracteres como PaeiouQ /ue un con'unto de alternativas tal como >alelilol
u?; +n generalA la contrucci-n m*s simple /ue o(rezca el comportamiento re/uerido es usualmente la
m*s e(iciente; +l li#ro de !e((rey Friedl contiene una cantidad considera#le de comentarios so#re la
optimizaci-n de eFpresiones regulares para un rendimiento e(iciente;
5uando un patr-n empieza con ;V y la opci-n P5R+ZDO,ALL est* de(inidaA el patr-n es anclado
impl)citamente por P5R+A ya /ue s-lo puede coincidir al inicio de la cadena de asunto; in
em#argoA si P5R+ZDO,ALL no es de(inidoA P5R+ no puede hacer esta optimizaci-nA ya /ue el
meta2caracter ; no coincide entonces con una nueva l)nea y si la cadena de asunto contiene nuevas
l)neasA el patr-n podr)a coincidir desde el caracter inmediatamente siguiente a una de ellas en vez
del inicio a#soluto; Por e'emploA el patr-n L./M secon# coincide con el asunto =(irsthnand second= >en
donde hn representa un caracter de nueva l)nea? con la primera su#cadena capturada /ue sea =and=;
Para conseguirloA P5R+ tiene /ue reintentar la coincidencia comenzando en cada nueva l)nea del
asunto;
i est* usando un patr-n as) con cadenas de asunto /ue no contienen nuevas l)neasA el me'or
rendimiento se o#tiene de(iniendo P5R+ZDO,ALL o iniciando el patr-n con k;V para indicar un
anclamiento eFpl)cito; +sto le ahorra a P5R+ tener /ue eFaminar toda la cadena de entrada
#uscando nuevas l)neas para empezar de nuevo;
,enga cuidado con los patrones /ue contienen repeticiones anidadas ilimitadas; [stos pueden tomar
un tiempo de e'ecuci-n muy largo cuando se aplican so#re una cadena /ue no coincide; 5onsidere el
(ragmento de patr-n LaYM/
[ste puede coincidir con =aaaa= en 77 maneras di(erentesA y este nBmero crece muy r*pidamente a
medida /ue la cadena se hace m*s larga; >La repetici-n V puede coincidir 3A 1A 0A 7A o 8 vecesA y por
cada uno de esos casos di(erentes a 3A las repeticiones R pueden coincidir un nBmero di(erente de
veces;? 5uando el resto del patr-n es de tal (orma /ue la coincidencia completa est* destinada a
(allarA P5R+ en principio intenta cada variaci-n posi#leA y esto puede tomar un tiempo
eFtremadamente largo;
@na optimizaci-n atrapa algunos de los casos m*s simples tales como LaYM/1 en donde un caracter
literal se encuentra a continuaci-n; Antes de em#arcarse en el procedimiento est*ndar de
comparaci-nA P5R+ che/uea /ue haya una letra =#= m*s adelante en la cadena de asuntoA y si no lo
hayA (alla la coincidencia inmediatamente; in em#argoA cuando no hay un literal a continuaci-nA
esta optimizaci-n no puede ser usada; Puede apreciar la di(erencia al comparar el comportamiento
de LaYM/Q# con el patr-n anterior; +l primero produce un (allo casi instant*neamente cuando se
aplica a una l)nea completa de caracteres =a=A mientras /ue el segundo toma un tiempo aprecia#le
con cadenas m*s largas de aproFimadamente 03 caracteres;
preg>grep
>P&P 8 A P&P 4?
pregZgrep 22 Devuelve un array con los elementos /ue casen con el patr-n
Kescripci"n
array preg>grep > string patternA array input ?
preg>grep./ devuelve un array conteniendo los elementos del array 6nput /ue empare'en con el
patr-n >pattern? dado;
E'emplo !. E'emplo de la funci"n preg>grep./
preE%Erep3"/c3Vd[9?V.Vd[$/", $array9; // encuentra todos los nhmeros reales en el array
Nota- +sta (unci-n (ue aWadida en P&P 8;3;
preg>match>all
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
pregZmatchZall 22 Realizar una comparaci-n glo#al con una eFpresi-n regular
Kescripci"n
int preg>match>all > string patronA string asuntoA array icoincidencias PA int #anderas PA int
desplazamientoQQ ?
Busca el asunto por todas las coincidencias con la eFpresi-n regular dada en patronA y las coloca en
co6nc6#enc6as en el orden especi(icado por 1an#eras;
Despu<s de /ue la primera coincidencia es encontradaA las #Bs/uedas su#siguientes continBan desde
el (inal de la Bltima coincidencia;
1an#eras puede ser una com#inaci-n de las siguientes #anderas >note /ue no tiene sentido usar
PRE#_PATTERN_ORDER 'unto con PRE#_SET_ORDER?C
PR+GZPA,,+RNZORD+R
Ordena los resultados de tal (orma /ue YcoincidenciasP3Q es una matriz con las coincidencias
completas del patr-nA YcoincidenciasP1Q es una matriz con las cadenas /ue coinciden con el
primer su#2patr-n entre par<ntesisA y as) sucesivamente;
<?php
preE%match%all3"T<)c>/[>3.W9</)c>/[>T+",
"<b>ejemplo@ </b><di= aliEn>le#t>esta es una prueba</di=>",
$salida, 'E-%,**E'.%?'LE'9;
echo $salida)2/)2/ . ", " . $salida)2/)6/ . "Vn";
echo $salida)6/)2/ . ", " . $salida)6/)6/ . "Vn";
?>
+ste e'emplo producir*C
<b>ejemplo@ </b>, <di= aliEn>le#t>esta es una prueba</di=>
ejemplo@ , esta es una prueba
As) /ue YsalidaP3Q contiene una matriz de cadenas /ue coincidieron con el patr-n completoA y
YsalidaP1Q contiene una matriz de cadenas u#icadas entre eti/uetas;
PR+GZ+,ZORD+R
Ordena los resultados de (orma tal /ue YcoincidenciasP3Q es una matriz /ue contiene el primer
con'unto de coincidenciasA YcoincidenciasP1Q es una matriz con el segundo con'unto de
coincidenciasA y as) sucesivamente;
<?php
preE%match%all3"T<)c>/[>3.W9</)c>/[>T+",
"<b>ejemplo@ </b><di= aliEn>V"le#tV">esta es una prueba</di=>",
$salida, 'E-%&E*%?'LE'9;
echo $salida)2/)2/ . ", " . $salida)2/)6/ . "Vn";
echo $salida)6/)2/ . ", " . $salida)6/)6/ . "Vn";
?>
+ste e'emplo producir*C
<b>ejemplo@ </b>, ejemplo@
<di= aliEn>"le#t">esta es una prueba</di=>, esta es una prueba
+n este casoA YcoincidenciasP3Q es el primer con'unto de coincidenciasA y YcoincidenciasP3QP3Q
tiene el teFto /ue coincidi- con el patr-n completoA YcoincidenciasP3QP1Q tiene el teFto /ue
coincidi- con el primer su#2patr-n y as) sucesivamente; De (orma seme'anteA Ycoincidencias
P1Q es el segundo con'unto de coincidenciasA etc;
PR+GZOFF+,Z5AP,@R+
i es pasada esta #anderaA para cada coincidencia /ue ocurreA ser* devuelto tam#i<n el
desplazamiento de la cadena ad'unta; Note /ue esto modi(ica el valor de retornoA
convirti<ndolo en una matriz en donde cada elemento es una matriz /ue consiste de la cadena
/ue coincidi- en la posici-n 0A y su desplazamiento de cadena al interior del asunto en la
posici-n 1; +sta #andera se encuentra disponi#le a partir de P&P 8;7;3;
i no se indica #andera algunaA se asume el uso de PRE#_PATTERN_ORDER;
NormalmenteA la #Bs/ueda comienza desde el inicio de la cadena de asunto; +l par*metro opcional
#esplaDam6ento puede ser usado para especi(icar el lugar alternativo desde donde de#e iniciar la
#Bs/ueda; +s Walente a pasar substr./>YasuntoA Ydesplazamiento? a preg>match./ en lugar de la
cadena de asunto; +l par*metro #esplaDam6ento se encuentra disponi#le a partir de P&P 8;7;7;
Devuelve el nBmero de coincidencias con el patr-n completo >/ue puede ser cero?A o FALSE si
ocurre un error;
E'emplo !. Jbtener todos los n4meros telef"nicos de un segmento de te+to.
<?php
preE%match%all3"/V3? 3Vd:<;9? V9? 3?369 )VFVs/ 9 Vd:<;FVd:1;/x",
"Olame al 555F6C6C 6FJ22F555F6C6C", $tele#onos9;
?>
E'emplo *. Encontrar eti?uetas HTM: coincidentes .de forma ambiciosa/
<?php
// El VVC es un ejemplo de re#erencia hacia atras. Este le dice a pcre
// Que debe buscar el seEundo conjunto de parentesis en la expresion
// reEular misma, Que seria 3)V8/[9 en este caso. Oa barra in=ertida
// extra es reQuerida ya Que la cadena se encuentra entre comillas
// dobles.
$html > "<b>texto en neErilla</b><a hre#>hola.html>haEa clic aQui</a>";
preE%match%all3"/3<3)V8/[9)c>/W>93.W93<V/VVC>9/", $html, $coincidencias9;
#or 3$i>2; $i< count3$coincidencias)2/9; $i[[9 :
echo "coincidencia@ " . $coincidencias)2/)$i/ . "Vn";
echo "parte 6@ " . $coincidencias)6/)$i/ . "Vn";
echo "parte C@ " . $coincidencias)</)$i/ . "Vn";
echo "parte <@ " . $coincidencias)1/)$i/ . "VnVn";
;
?>
+ste e'emplo producir*
coincidencia@ <b>texto en neErilla</b>
parte 6@ <b>
parte C@ texto en neErilla
parte <@ </b>
coincidencia@ <a hre#>hola.html>haEa clic aQui</a>
parte 6@ <a hre#>hola.html>
parte C@ haEa clic aQui
parte <@ </a>
$ea tam#i<n preg>match./A preg>replace./A y preg>split./;
preg>match
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
pregZmatch 22 Realiza un empare'amiento dada una eFpresi-n
Kescripci"n
int preg>match > string patternA string su#'ect PA array matchesQ ?
Busca en su1Uect para un empare'amientoA dada la eFpresi-n pattern;
i matches es dadoA entonces ser* de(inido con el resultado de la #Bs/ueda; YmatchesP3Q contendr*
el teFto /ue empare'a con el patr-n en su totalidad; YmatchesP1Q tendr* la cadena /ue empare'e con
el primer su#patr-n /ue est< entre par<ntesis y as) sucesivamente;
Devuelve TRUE si se encontr- en la cadena un empare'amiento dado el patr-n patternA FALSE si no
se produ'o o hu#o un error;
E'emplo !. Jbtener el n4mero de la siguiente pgina dada una cadena
i# 3preE%match3"/paEeVs[U3Vd[9/i", "-o to paEe UK.", $parts99
print ".ext paEe is $parts)6/"; // Oa siEuiente peEina es $parts)6/
else
print "aEe not #ound."; // eEina no encontrada
+Faminar tam#i<n preg>match>all./A preg>replace./A y preg>split./;
preg>?uote
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
pregZ/uote 22 Prepara los caracteres de eFpresiones
Kescripci"n
string preg>?uote > string str ?
preg>?uote./ toma str y pone una #arra invertida >h? delante de todo car*cter /ue sea parte de la
sintaFis de las eFpresiones; +s Btil si tienes una cadena en tiempo de e'ecuci-n y puede contener
caracteres especiales;
Los caracteres especiales de las eFpresiones sonC
. VV [ W ? ) c / $ 3 9 : ; > ! < > T @
Nota- +sta (unci-n (ue aWadida en P&P 7;3;9;
preg>replace>callbacB
>P&P 8 _^ 8;3;4A P&P 4?
pregZreplaceZcall#ac" 22 Realizar una #Bs/ueda con eFpresiones regulares y generar reemplazos
usando una llamada de retorno
Kescripci"n
miFed preg>replace>callbacB > miFed patronA call#ac" llamadaZdeZretornoA miFed (uente PA int
limiteQ ?
+l comportamiento de esta (unci-n es casi id<ntico al de preg>replace./A con la eFcepci-n de /ue
en lugar del par*metro reemplaDoA uno de#e especi(icar una llama#a_#e_retorno /ue ser* usada
pas*ndole una matriz de los elementos coincidentes en la cadena (uente; La llamada de retorno
de#er)a devolver la cadena de reemplazo;
E'emplo !. E'emplo de preg>replace>callbacB./
<?php
// este texto #ue usado en C22C
// Queremos actuali0arlo para C22<
$texto > "El d&iacute;a de los inocentes es 21/26/C22CVn";
$texto.> "Oa &uacute;ltima na=idad #ue 6C/C1/C226Vn";

// la llamada de retorno
#unction siEuiente%anyo3$coincidencias9
:
// como es usual@ $coincidencias)2/ es la coincidencia completa
// $coincidencias)6/ la coincidencia para el primer subpatron
// ubicado entre M3...9M y asi sucesi=amente
return $coincidencias)6/.3$coincidencias)C/[69;
;
echo preE%replace%callbacI3
"T3Vd:C;/Vd:C;/93Vd:1;9T",
"siEuiente%anyo",
$texto9;
// el resultado es@
// El d&iacute;a de los inocentes es 21/26/C22<
// Oa &uacute;ltima na=idad #ue 6C/C1/C22C
?>
5on (recuencia necesitar* la (unci-n de llama#a #e retorno cuando use preg>replace>callbacB./
Bnicamente en un lugar; +n este casoA usted puede usar create>function./ para declarar una (unci-n
an-nima como llamada de retorno dentro del llamado a preg>replace>callbacB./; Al hacerlo de
este modoA usted tendr* toda la in(ormaci-n necesaria para el llamado en un solo lugar y no a#arrota
su espacio de nom#res de (unciones con nom#res de llamadas de retorno /ue no son usadas en
ninguna otra parte;
E'emplo *. preg>replace>callbacB./ y create>function./
<?php
/W un #iltro de linea de comandos tipo +nix para con=ertir letras
W mayusculas al comien0o de los paraEra#os a minusculas W/
$da > #open3"php@//stdin", "r"9 or die3"no se puede leer stdin"9;
8hile 3!#eo#3$da99 :
$linea > #Eets3$da9;
$linea > preE%replace%callbacI3
MT<p>VsWV8TM,
create%#unction3
// las comillas sencillas son cruciales aQui,
// o alternati=amente escapar todos los siEnos $ como V$
M$coincidenciasM,
Mreturn strtolo8er3$coincidencias)2/9;M
9,
$linea
9;
echo $linea;
;
#close3$da9;
?>
$ea tam#i<n preg>replace./ y create>function./;
preg>replace
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
pregZreplace 22 Lleva a ca#o la #Bs/ueda de una eFpresi-n y su sustituci-n
Kescripci"n
miFed preg>replace > miFed patronA miFed reemplazoA miFed entrada PA int limiteQ ?
Busca en entra#a los empare'amientos con patron y los sustituye por reemplaDo; i se especi(ica el
par*metro l6m6teA solo l6m6te ser*n reemplazadosX si l6m6te se omite o es igual a 21 todas las
coincidencias ser*n reemplazadas;
reemplaDo puede contener re(erencias de la (orma QQn; [stas ser*n sustituidas por el teFto o#tenido
por el patr-n del par<ntesis n<simo; n puede tener un valor de cero a noventa y nueveA y QQ0 se
re(iere al teFto casado por el patr-n completo; Para o#tener el nBmero del su#patr-n de #Bs/uedaA
los par<ntesis a#iertos son contados de iz/uierda derecha tomando el primero como uno;
5uando tra#a'es con patrones de reemplazo donde una re(erencia hacia atr*s est< inmediatamente
seguida por otro nBmero >por e'emploC poniendo un nBmero literal despu<s de un patr-n
coincidente?A no puedes usar el m<todo normal hh1 para la re(erencia hacia atr*s; hh11A por e'emploA
con(undir* a preg>replace././ ya /ue no sa#e si /uieres usar la re(erencia hacia atr*s hh1 seguida de
un 1 literalA o la re(erencia hh11 seguida de nada; +n este caso la soluci-n es usar hY\1]1; +sto usa la
re(erencia hh1A de'ando el 1 literal tras el;
E'emplo !. )sando referencias hacia atrs seguidas de n4meros literales
<?php
$cadena > ",bril 65, C22<";
$patron > "/3V8[9 3Vd[9, 3Vd[9/i";
$reempla0o > "V$:6;6,V$<";
echo preE%replace3$patron, $reempla0o, $cadena9;
?>
alidaC
,bril6,C22<
i el patr-n no es encontrado en entra#aA entonces no se realizar*n cam#ios;
,odos los par*metros de la (unci-n preg>replace./ >eFcepto l6m6te? pueden ser un array
unidimensional; 5uando se usan arrays como patron o reemplaDoA las claves son procesadas en el
orden en /ue aparecen en el array; +ste no es necesar6amente el orden num<rico del mismo; i usas
indices num<ricos para identi(icar /ue patron corresponde a cada reemplaDo de#er*s aplicar un
Bsort./ a cada uno de los arrays antes de aplicar preg>replace./;
E'emplo *. )sando arrays con cla5es num%ricas con preg>replace./
<?php
$cadena > "El =elo0 murciBlaEo hindh comga #eli0 cardillo y Ii8i.";
$patrones)2/ > "/=elo0/";
$patrones)6/ > "/hind&uacute;/";
$patrones)C/ > "/murci&eacute;laEo/";
$reempla0os)C/ > "oso";
$reempla0os)6/ > "neEro";
$reempla0os)2/ > "lento";
echo preE%replace3$patrones, $reempla0os, $cadena9;
?>
alidaC
El oso lento neEro com&iacute;a #eli0 cardillo y Ii8i.
Aplicando Bsort./ so#re los patrones y los reemplazos podemos o#tener el comportamiento
esperado;
<?php
Isort3$patrones9;
Isort3$reempla0os9;
echo preE%replace3$patrones, $reempla0os, $cadena9;
?>
alidaC
El lento oso neEro comga #eli0 cardillo y Ii8i.
i entra#a es un arrayA entonces la #Bs/ueda y sustituci-n es realizada para todos los elementos de
entra#aA y el valor devuelto es tam#i<n un array;
i patron y reemplaDo son arraysA entonces preg>replace./ toma un valor desde cada array y los
usas para #uscar y sustituir so#re entra#a; i reemplaDo tiene menos valores /ue patronA entonces la
cadena vac)a es usada como valor para el resto de sustituciones; i patron es una array y reemplaDo
es una cadenaA entonces esta cadena de sustituci-n es usada para todos los valores de patron; in
em#argoA lo contrario no tiene sentido;
+l modi(icador /e hace /ue la (unci-n preg>replace./ trate el par*metro reemplaDo como c-digo
P&P despu<s de /ue la apropiada sustituci-n sea hecha; Atenci-nA asegBrate /ue reemplaDo es un
c-digo P&P correctoA de otro modo P&P dar* un error de parse en la l)nea /ue contenga
preg>replace./;
Nota- +ste modi(icador (ue aWadido en P&P 8;3;
E'emplo 7. ,ustituir 5arios 5alores
<?php
$patrones > array3"/36KTC2Vd:C;9F3Vd:6,C;9F3Vd:6,C;9/", "/cVsW:3V8[9;VsW>/"9;
$replace > array3"VV</VV1/VV6", "$VV6 >"9;
print preE%replace3$patrones, $replace, ":startLate; > 6KKKF5FCH"9;
?>
+sta e'emplo dar* como resultadoC
$startLate > 5/CH/6KKK
E'emplo 8. )sar el modificador Ae
<?php
preE%replace3"/3<V/?93V8[93)c>/W>9/e", "MVV6M.strtoupper3MVVCM9.MVV<M", $html%body9;
?>
Pondr* en mayBscula todos los tags &,ML del teFto de entrada;
+Famina tam#i<n preg>match./A preg>match>all./A y preg>split./;
preg>split
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
pregZsplit 22 Divide una cadena dada una eFpresi-n
Kescripci"n
array preg>split > string patternA string su#'ect PA int limit PA int (lagsQQ ?
Nota- +l par*metro 9laEs (ue aWadido en la Beta 7 de P&P
Devuelve un array conteniendo las su#cadenas de su1Uect divididas mediante los empare'amientos
limitados por pattern;
i l6m6t es proporcionadoA entonces s-lo l6m6t su#cadenas son devueltas;
i el (lags es PR+GZPL.,ZNOZ+MP,% entonces las cadenas vac)as no ser*n devueltas por
preg>split./;
E'emplo !. Jbtener las partes de una cadena de b4s?ueda
$Iey8ords > preE%split3"/)Vs,/[/", "hypertext lanEuaEe, proEramminE"9;
+Faminar tam#i<n preg>match./A preg>match>all./A y preg>replace./;
ICCII. ;unciones PK;
Introducci"n
Las (unciones PDF en P&P pueden crear archivos PDF utilizando la #i#lioteca PDFli# creada por
,homas Merz;
La documentaci-n en esta secci-n solamente es una descripci-n de las (unciones de la #i#lioteca
PDFli# y no de#er)a considerarse una re(erencia eFhaustiva; e ha de consultar la documentaci-n
incluida en el c-digo (uente de la distri#uci-n de PDFli# para una completa y detallada eFplicaci-n
de cada (unci-n; Proporciona muy #uena descripci-n de las capacidades de PDFli# y contiene
actualizada la documentaci-n de todas las (unciones;
,odas las (unciones de PDFli# y del m-dulo P&P tienen nom#res iguales para las (unciones y
par*metros; e necesitar* entender algunos de los conceptos #*sicos de PDF y Postcript para un
e(iciente uso de esta eFtensi-n; ,odas las longitudes y coordenadas se mesuran en puntos
Postcript; Generalmente hay :0 puntos Postcript por pulgadaA pero esto depende de la resoluci-n
de salida; e puede consultar la documentaci-n incluida en la distri#uci-n de PDFli# para una
detallada eFplicaci-n del sistema de coordenadas utilizado;
&ay /ue tener en cuenta /ue la mayor)a de las (unciones PDF re/uieren un primer par*metro
p#9#oc; +n los siguientes e'emplos hay m*s in(ormaci-n;
Nota- i se est* interesado en alternativas de generadores gratis de PDF /ue no utilizen
li#er)as eFternas PDFA mirar este FAO relacionado;
Me?uirimientos
PDFli# est* disponi#le para descargar en httpCDDEEE;pd(li#;comDproductsDpd(li#DindeF;htmlA pero
re/uiere la compra de una licencia para uso comercial; e re/uieren las #i#liotecas !P+G y ,.FF
para compilar esta eFtensi-n;
Compatibilidad con 5ersiones antiguas de PK;lib
5ual/uier versi-n de P&P despu<s del 9 de Marzo del 0333 no soporta versiones de PDFli#
anteriores a la 7;3;
PDFli# 7;3 o superior es compati#le desde P&P 7;3;19 en adelante;
Instalaci"n
+sta eFtension P+5L no esta ligada a P&P; Mas in(ormacion so#re nuevos lanzamientosA descargas
(icheros de (uentesA in(ormacion so#re los responsa#les asi como un H5&ANG+LOGHA se puede
encontrar a/uiC httpCDDpecl;php;netDpac"ageDpd(li#;
,o get these (unctions to Eor" in P&P ` 8;7;9A you have to compile P&P Eith ==76th=p#9l61):D0R.;
D.R is the PDFli# #ase install directoryA de(aults to /usr/local; .n addition you can speci(y the
'pegA ti((A and pngli#rary (or PDFli# to useA Ehich is optional (or PDFli# 8;F; ,o do so add to your
con(igure line the options ==76th=UpeE=#6r):D0R. ==76th=pnE=#6r):D0R. ==76th=t699=#6r):D0R.;
Lhen using version 7;F o( PDFli#A you should con(igure PDFli# Eith the option ==ena1le=share#=
p#9l61;
As o( P&P 8;7;9A you must install this eFtension through P+ARA using the (olloEing commandC
pear install pdflib;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Confusiones con antiguas 5ersiones de PK;lib
Desde P&P 8;3;4A la eFtensi-n P&P para PDFli# es o(icialmente soportada por PDFli# Gm#&; +sto
signi(ica /ue todas las (unciones descritas en el manual de PDFli# >$7;33 o superior? son
soportadas por P&P 8 con el mismo (uncionamiento y par*metros; -lo los valores devueltos
pueden variar en el manual PDFli#A ya /ue P&P adopt- la convenci-n de devolver FALSE; Por
razones de compati#ilidadA PDFli# aBn soporta las antiguas (uncionesA pero de#er)an reemplazarlas
en sus nuevas versiones; PDFli# Gm#& no dar* soporte a cual/uier pro#lema causado por el uso de
estas (unciones o#soletas;
Tabla !. ;unciones obsoletas y sus reempla6os.
Antigua funci"n Meempla6o
pdf>put>image./ %a no se necesita;
pdf>e+ecute>image./ %a no se necesita;
pdf>get>annotation
./
pdf>get>booBmarB./ utilizando los mismos par*metros;
pdf>get>font./ pdf>get>5alue./ pasando *9ont* como segundo par*metro;
pdf>get>fontsi6e./ pdf>get>5alue./ pasando *9onts6De* como segundo par*metro;
pdf>get>fontname./ pdf>get>parameter./ pasando *9ontname* como segundo par*metro;
pdf>set>info>creator
./
pdf>set>info./ pasando *Creator* como segundo par*metro;
Antigua funci"n Meempla6o
pdf>set>info>title./ pdf>set>info./ pasando *T6tle* como segundo par*metro;
pdf>set>info>sub'ect
./
pdf>set>info./ pasando *Su1Uect* como segundo par*metro;
pdf>set>info>author
./
pdf>set>info./ pasando *,uthor* como segundo par*metro;
pdf>set>info>Bey3o
rds./
pdf>set>info./ pasando *2e?7or#s* como segundo par*metro;
pdf>set>leading./ pdf>set>5alue./ pasando *lea#6nE* como segundo par*metro;
pdf>set>te+t>renderi
ng./
pdf>set>5alue./ pasando *te8tren#er6nE* como segundo par*metro;
pdf>set>te+t>rise./ pdf>set>5alue./ pasando *te8tr6se* como segundo par*metro;
pdf>set>hori6>scalin
g./
pdf>set>5alue./ pasando *hor6Dscal6nE* como segundo par*metro;
pdf>set>te+t>matri+
./
%a no se necesita;
pdf>set>char>spacin
g./
pdf>set>5alue./ pasando *charspac6nE* como segundo par*metro;
pdf>set>3ord>spaci
ng./
pdf>set>5alue./ pasando *7or#spac6nE* como segundo par*metro;
pdf>set>transition./ pdf>set>parameter./ pasando *trans6t6on* como segundo par*metro;
pdf>open./ pdf>ne3./ m*s la su#secuente llamada de pdf>open>file./
pdf>set>font./ pdf>findfont./ m*s la su#secuente llamada de pdf>setfont./
pdf>set>duration./ pdf>set>5alue./ pasando *#urat6on* como segundo par*metro;
pdf>open>gif./ pdf>open>image>file./ pasando *E69* como segundo par*metro;
pdf>open>'peg./ pdf>open>image>file./ pasando *UpeE* como segundo par*metro;
pdf>open>tiff./ pdf>open>image>file./ pasando *t699* como segundo par*metro;
pdf>open>png./ pdf>open>image>file./ pasando *pnE* como segundo par*metro;
pdf>get>image>3idt
h./
pdf>get>5alue./ pasando *6maEe76#th* como segundo par*metro y la
im*gen como tercer par*metro;
pdf>get>image>heig
ht./
pdf>get>5alue./ pasando *6maEehe6Eht* como segundo par*metro y la
im*gen como tercer par*metro;
E'emplos
La mayor)a de las (unciones son #astante (*ciles de utilizar; La parte m*s di()cil pro#a#lemente es la
creaci-n de un primer documento PDF; +l siguiente e'emplo de#er)a ayudar para comenzar; +l
e'emplo crea el archivo test.pd# en una p*gina; La p*gina contiene el teFto =,imes Roman
outlined= en un contornoA con (uente de 73pt; +l teFto tam#i<n est* su#rayado;
E'emplo !. Creando un documento PK; con PK;lib
<?php
$pd# > pd#%ne839;
pd#%open%#ile3$pd#, "test.pd#"9;
pd#%set%in#o3$pd#, ",uthor", "Aa=ier *acon"9;
pd#%set%in#o3$pd#, "*itle", "*est #or H 8rapper o# LSlib C.2"9;
pd#%set%in#o3$pd#, "Rreator", "&ee ,uthor"9;
pd#%set%in#o3$pd#, "&ubject", "*estinE"9;
pd#%beEin%paEe3$pd#, 5K5, J1C9;
pd#%add%outline3$pd#, "aEe 6"9;
$#ont > pd#%#ind#ont3$pd#, "*imes .e8 'oman", "8inansi", 69;
pd#%set#ont3$pd#, $#ont, 629;
pd#%set%=alue3$pd#, "textrenderinE", 69;
pd#%sho8%xy3$pd#, "*imes 'oman outlined", 52, H529;
pd#%mo=eto3$pd#, 52, H129;
pd#%lineto3$pd#, <<2, H129;
pd#%stroIe3$pd#9;
pd#%end%paEe3$pd#9;
pd#%close3$pd#9;
pd#%delete3$pd#9;
echo "<, H'ES>Eetpd#.php>#inished</,>";
?>
+l script Eetpd#.php simplemente devuelve el documento pd(;
E'emplo *. Mostrando un documento PK; precalculado
<?php
$len > #ilesi0e3$#ilename9;
header3"RontentFtype@ application/pd#"9;
header3"RontentFOenEth@ $len"9;
header3"RontentFLisposition@ inline; #ilename>#oo.pd#"9;
read#ile3$#ilename9;
?>
La distru#uci-n PDFli# contiene un e'emplo m*s comple'o para crear un relo' anal-gico en una
p*gina; A/u) se utiliza el m<todo de creaci-n en memoria de PDFli# para no tener /ue crear un
archivo temporal; +l e'emplo se ha convertido a P&P desde uno de PDFli# >+l mismo e'emplo est*
disponi#le en la documentaci-n 5li#PDF;?
E'emplo 7. E'emplo pdfclocB de la distribuci"n PK;lib
<?php
$radius > C22;
$marEin > C2;
$paEecount > 62;
$pd# > pd#%ne839;
i# 3!pd#%open%#ile3$pd#, ""99 :
echo error;
exit;
;;
pd#%set%parameter3$pd#, "8arninE", "true"9;
pd#%set%in#o3$pd#, "Rreator", "pd#%clocI.php"9;
pd#%set%in#o3$pd#, ",uthor", "+8e &teinmann"9;
pd#%set%in#o3$pd#, "*itle", ",naloE RlocI"9;
8hile 3$paEecountFF > 29 :
pd#%beEin%paEe3$pd#, C W 3$radius [ $marEin9, C W 3$radius [ $marEin99;
pd#%set%parameter3$pd#, "transition", "8ipe"9;
pd#%set%=alue3$pd#, "duration", 2.59;

pd#%translate3$pd#, $radius [ $marEin, $radius [ $marEin9;
pd#%sa=e3$pd#9;
pd#%setrEbcolor3$pd#, 2.2, 2.2, 6.29;
/W minute stroIes W/
pd#%setline8idth3$pd#, C.29;
#or 3$alpha > 2; $alpha < <G2; $alpha [> G9 :
pd#%rotate3$pd#, G.29;
pd#%mo=eto3$pd#, $radius, 2.29;
pd#%lineto3$pd#, $radiusF$marEin/<, 2.29;
pd#%stroIe3$pd#9;
;
pd#%restore3$pd#9;
pd#%sa=e3$pd#9;
/W 5 minute stroIes W/
pd#%setline8idth3$pd#, <.29;
#or 3$alpha > 2; $alpha < <G2; $alpha [> <29 :
pd#%rotate3$pd#, <2.29;
pd#%mo=eto3$pd#, $radius, 2.29;
pd#%lineto3$pd#, $radiusF$marEin, 2.29;
pd#%stroIe3$pd#9;
;
$ltime > Eetdate39;
/W dra8 hour hand W/
pd#%sa=e3$pd#9;
pd#%rotate3$pd#,F33$ltime)MminutesM//G2.29[$ltime)MhoursM/F<.29W<2.29;
pd#%mo=eto3$pd#, F$radius/62, F$radius/C29;
pd#%lineto3$pd#, $radius/C, 2.29;
pd#%lineto3$pd#, F$radius/62, $radius/C29;
pd#%closepath3$pd#9;
pd#%#ill3$pd#9;
pd#%restore3$pd#9;
/W dra8 minute hand W/
pd#%sa=e3$pd#9;
pd#%rotate3$pd#,F33$ltime)MsecondsM//G2.29[$ltime)MminutesM/F65.29WG.29;
pd#%mo=eto3$pd#, F$radius/62, F$radius/C29;
pd#%lineto3$pd#, $radius W 2.J, 2.29;
pd#%lineto3$pd#, F$radius/62, $radius/C29;
pd#%closepath3$pd#9;
pd#%#ill3$pd#9;
pd#%restore3$pd#9;
/W dra8 second hand W/
Cer tambi%n
Nota- @na alternativa de m-dulo P&P para la creaci-n de documentos PDF #asados en
Fast.OHs 5li#PDF est* disponi#le; Mirar la secci-n 5li#PDF para m*s detalles; ,ener en
cuenta /ue 5li#PDF tiene alguna di(erencia con PDFli#;
Tabla de contenidos
pd(ZaddZannotation 22 Adds annotation
pd(ZaddZ#oo"mar" 22 Adds #oo"mar" (or current page
pd(ZaddZlaunchlin" 22 Add a launch annotation (or current page
pd(ZaddZlocallin" 22 Add a lin" annotation (or current page
pd(ZaddZnote 22 ets annotation (or current page
PDFZaddZoutline 22 Adds #oo"mar" (or current page
pd(ZaddZpd(lin" 22 Adds (ile lin" annotation (or current page
pd(ZaddZthum#nail 22 Adds thum#nail (or current page
pd(ZaddZEe#lin" 22 Adds Ee#lin" (or current page
PDFZarc 22 DraEs an arc
pd(Zarcn 22 DraEs an arc >cloc"Eise?
pd(ZattachZ(ile 22 Adds a (ile attachment (or current page
PDFZ#eginZpage 22 tarts neE page
pd(Z#eginZpattern 22 tarts neE pattern
pd(Z#eginZtemplate 22 tarts neE template
PDFZcircle 22 DraEs a circle
PDFZclip 22 5lips to current path
PDFZcloseZimage 22 5loses an image
pd(ZcloseZpdiZpage 22 5lose the page handle
pd(ZcloseZpdi 22 5lose the input PDF document
PDFZclose 22 5loses a pd( document
PDFZclosepathZ(illZstro"e 22 5losesA (ills and stro"es current path
PDFZclosepathZstro"e 22 5loses path and draEs line along path
PDFZclosepath 22 5loses path
pd(Zconcat 22 5oncatenate a matriF to the 5,M
PDFZcontinueZteFt 22 Outputs teFt in neFt line
PDFZcurveto 22 DraEs a curve
pd(Zdelete 22 Deletes a PDF o#'ect
PDFZendZpage 22 +nds a page
pd(ZendZpattern 22 Finish pattern
pd(ZendZtemplate 22 Finish template
PDFZendpath 22 +nds current path
PDFZ(illZstro"e 22 Fills and stro"es current path
PDFZ(ill 22 Fills current path
pd(Z(ind(ont 22 Prepare (ont (or later use Eith pdf>setfont./
pd(ZgetZ#u((er 22 Fetch the #u((er containing the generated PDF data
pd(ZgetZ(ont 22 DeprecatedC (ont handling
pd(ZgetZ(ontname 22 DeprecatedC (ont handling
pd(ZgetZ(ontsize 22 DeprecatedC (ont handling
pd(ZgetZimageZheight 22 DeprecatedC returns height o( an image
pd(ZgetZimageZEidth 22 DeprecatedC Returns Eidth o( an image
pd(ZgetZma'orversion 22 Returns the ma'or version num#er o( the PDFli#
pd(ZgetZminorversion 22 Returns the minor version num#er o( the PDFli#
PDFZgetZparameter 22 Gets certain parameters
pd(ZgetZpdiZparameter 22 Get some PD. string parameters
pd(ZgetZpdiZvalue 22 Gets some PD. numerical parameters
PDFZgetZvalue 22 Gets certain numerical value
pd(Zinitgraphics 22 Resets graphic state
PDFZlineto 22 DraEs a line
pd(Zma"espotcolor 22 Ma"es a spotcolor
PDFZmoveto 22 ets current point
pd(ZneE 22 5reates a neE pd( resource
pd(ZopenZccitt 22 Opens a neE image (ile Eith raE 55.,, data
pd(ZopenZ(ile 22 Opens a neE pd( o#'ect
PDFZopenZgi( 22 Opens a G.F image
pd(ZopenZimageZ(ile 22 Reads an image (rom a (ile
pd(ZopenZimage 22 $ersatile (unction (or images
PDFZopenZ'peg 22 Opens a !P+G image
PDFZopenZmemoryZimage 22 Opens an image created Eith P&PHs image (unctions
pd(ZopenZpdiZpage 22 Prepare a page
pd(ZopenZpdi 22 Opens a PDF (ile
PDFZopenZpng 22 Opens a PNG image
pd(ZopenZti(( 22 DeprecatedC Opens a ,.FF image
PDFZopen 22 Opens a neE pd( document
PDFZplaceZimage 22 Places an image on the page
pd(ZplaceZpdiZpage 22 Places an image on the page
PDFZrect 22 DraEs a rectangle
PDFZrestore 22 Restores (ormerly saved environment
PDFZrotate 22 ets rotation
PDFZsave 22 aves the current environment
PDFZscale 22 ets scaling
PDFZsetZ#orderZcolor 22 ets color o( #order around lin"s and annotations
PDFZsetZ#orderZdash 22 ets dash style o( #order around lin"s and annotations
PDFZsetZ#orderZstyle 22 ets style o( #order around lin"s and annotations
PDFZsetZcharZspacing 22 ets character spacing
PDFZsetZduration 22 ets duration #etEeen pages
PDFZsetZ(ont 22 elects a (ont (ace and size
PDFZsetZhorizZscaling 22 ets horizontal scaling o( teFt
pd(ZsetZin(oZauthor 22 DeprecatedC Fills the author (ield o( the document
pd(ZsetZin(oZcreator 22 DeprecatedC Fills the creator (ield o( the document
pd(ZsetZin(oZ"eyEords 22 DeprecatedC Fills the "eyEords (ield o( the document
pd(ZsetZin(oZsu#'ect 22 DeprecatedC Fills the su#'ect (ield o( the document
pd(ZsetZin(oZtitle 22 DeprecatedC Fills the title (ield o( the document
PDFZsetZin(o 22 Fills a (ield o( the document in(ormation
PDFZsetZleading 22 ets distance #etEeen teFt lines
PDFZsetZparameter 22 ets certain parameters
PDFZsetZteFtZmatriF 22 ets the teFt matriF
PDFZsetZteFtZpos 22 ets teFt position
PDFZsetZteFtZrendering 22 Determines hoE teFt is rendered
PDFZsetZteFtZrise 22 ets the teFt rise
PDFZsetZvalue 22 ets certain numerical value
PDFZsetZEordZspacing 22 ets spacing #etEeen Eords
pd(Zsetcolor 22 ets (ill and stro"e color
PDFZsetdash 22 ets dash pattern
PDFZset(lat 22 ets (latness
pd(Zset(ont 22 et the current (ont
PDFZsetgrayZ(ill 22 ets (illing color to gray value
PDFZsetgrayZstro"e 22 ets draEing color to gray value
PDFZsetgray 22 ets draEing and (illing color to gray value
PDFZsetlinecap 22 ets linecap parameter
PDFZsetline'oin 22 ets line'oin parameter
PDFZsetlineEidth 22 ets line Eidth
pd(ZsetmatriF 22 ets current trans(ormation matriF
PDFZsetmiterlimit 22 ets miter limit
pd(Zsetpolydash 22 DeprecatedC ets complicated dash pattern
PDFZsetrg#colorZ(ill 22 ets (illing color to rg# color value
PDFZsetrg#colorZstro"e 22 ets draEing color to rg# color value
PDFZsetrg#color 22 ets draEing and (illing color to rg# color value
PDFZshoEZ#oFed 22 Output teFt in a #oF
PDFZshoEZFy 22 Output teFt at given position
PDFZshoE 22 Output teFt at current position
PDFZs"eE 22 "eEs the coordinate system
PDFZstringEidth 22 Returns Eidth o( teFt using current (ont
PDFZstro"e 22 DraEs line along path
PDFZtranslate 22 ets origin o( coordinate system
pdf>add>annotation
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
pd(ZaddZannotation 22 Adds annotation
Kescription
void pdf>add>annotation > int pd( documentA dou#le llFA dou#le llyA dou#le urFA dou#le uryA string
titleA string content ?
,he pdf>add>annotation./ adds a note Eith the loEer le(t corner at >ll8A ll?? and the upper right
corner at >ur8A ur??;
pdf>add>booBmarB
>P&P 8 _^ 8;3;1A P&P 4?
pd(ZaddZ#oo"mar" 22 Adds #oo"mar" (or current page
Kescription
int pdf>add>booBmarB > resource pd(docA string teFtA int parentA int open ?
Add a nested #oo"mar" under parentA or a neE top2level #oo"mar" i( parent ^ 3; Returns a
#oo"mar" descriptor Ehich may #e used as parent (or su#se/uent nested #oo"mar"s; .( open ^ 1A
child #oo"mar"s Eill #e (olded outA and invisi#le i( open ^ 3; Parameters parent and open Eere
optional #e(ore P&P 4;
E'emplo !. pdf>add>booBmarB./ e+ample
<?php
// create a ne8 LS
$pd# > pd#%ne839;
pd#%open%#ile3$pd#9;
pd#%set%in#o3$pd#, ",uthor", "Zob .ijman"9;
// beEin a ne8 paEe
pd#%beEin%paEe3$pd#, <22, <229;
// add a topFle=el booImarI
$booImarI > pd#%add%booImarI3$pd#, "eople"9;
// add a nested booImarI
pd#%add%booImarI3$pd#, "'asmus", $booImarI9;
// and some text
pd#%set%#ont3$pd#, "Hel=etica", C2, "host"9;
$text > "*his is 'Ms paEe";
$8idth > pd#%strinE8idth3$pd#, $text9;
pd#%set%text%pos3$pd#, 3<22F$8idth9/C, 6229;
pd#%sho83$pd#, $text9;
// close the paEe and the LS
pd#%end%paEe3$pd#9;
pd#%close3$pd#9;
?>
pdf>add>launchlinB
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZaddZlaunchlin" 22 Add a launch annotation (or current page
Kescription
#ool pdf>add>launchlinB > resource pd(docA (loat llFA (loat llyA (loat urFA (loat uryA string (ilename ?
Adds a lin" to a Ee# resource speci(ied #y 96lename; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
ee also pdf>add>locallinB./;
pdf>add>locallinB
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZaddZlocallin" 22 Add a lin" annotation (or current page
Kescription
#ool pdf>add>locallinB > resource pd(docA (loat loEerle(tFA (loat loEerle(tyA (loat upperrightFA (loat
upperrightyA int pageA string dest ?
Add a lin" annotation to a target Eithin the current PDF (ile; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
#est is the zoom setting on the destination pageA it can #e one o( reta6nA 96tpaEeA 96t76#thA 96the6Eht or
96t11o8;
ee also pdf>add>launchlinB./;
pdf>add>note
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZaddZnote 22 ets annotation (or current page
Kescription
#ool pdf>add>note > resource pd(docA (loat llFA (loat llyA (loat urFA (loat uryA string contentsA string
titleA string iconA int open ?
ets an annotation (or the current page; 6con is one o( commentA 6nsertA noteA paraEraphA
ne7paraEraphA >e?A or help; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso
de (allo;
PK;>add>outline
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZaddZoutline 22 Adds #oo"mar" (or current page
Kescription
int pdf>add>outline > int pd( documentA string teFt PA int parent PA int openQQ ?
,he PK;>add>outline./ (unction adds a #oo"mar" Eith teFt te8t that points to the current page;
,he #oo"mar" is inserted as a child o( parent and is #y de(ault open i( open is not 3; ,he return
value is an identi(ier (or the #oo"mar" Ehich can #e used as a parent (or other #oo"mar"s;
,here(ore you can #uild up hierarchies o( #oo"mar"s;
@n(ortunately pd(li# does not ma"e a copy o( the stringA Ehich (orces P&P to allocate the memory;
5urrently this piece o( memory is not #een (reed #y any PDF (unction #ut it Eill #e ta"en care o( #y
the P&P memory manager;
pdf>add>pdflinB
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
pd(ZaddZpd(lin" 22 Adds (ile lin" annotation (or current page
Kescription
#ool pdf>add>pdflinB > resource pd(docA (loat #ottomZle(tZFA (loat #ottomZle(tZyA (loat
upZrightZFA (loat upZrightZyA string (ilenameA int pageA string dest ?
Add a (ile lin" annotation >to a PDF target?; Devuelve TRUE si todo se llev- a ca#o correctamenteA
FALSE en caso de (allo;
ee also pdf>add>locallinB./ and pdf>add>3eblinB./;
pdf>add>thumbnail
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZaddZthum#nail 22 Adds thum#nail (or current page
Kescription
#ool pdf>add>thumbnail > resource pd(docA int image ?
Adds an eFisting image as thum#nail (or the current page; ,hum#nail images must not #e Eider or
higher than 13K piFels; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de
(allo;
ee also pdf>open>image./A pdf>open>image>file./ and pdf>open>memory>image./;
pdf>add>3eblinB
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
pd(ZaddZEe#lin" 22 Adds Ee#lin" (or current page
Kescription
#ool pdf>add>3eblinB > resource pd(docA (loat loEerle(tFA (loat loEerle(tyA (loat upperrightFA (loat
upperrightyA string url ?
Add a Ee#lin" annotation to a target url on the Le#; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
PK;>arc
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZarc 22 DraEs an arc
Kescription
void pdf>arc > int pd( documentA dou#le F2coorA dou#le y2coorA dou#le radiusA dou#le startA dou#le
end ?
,he PK;>arc./ (unction draEs an arc Eith center at point >8=coorA ?=coor? and radius ra#6usA
starting at angle start and ending at angle en#;
ee also PK;>circle./A PK;>stroBe./;
pdf>arcn
>P&P 8 _^ 8;3;4A P&P 4?
pd(Zarcn 22 DraEs an arc >cloc"Eise?
Kescription
#ool pdf>arcn > resource pd(docA (loat FA (loat yA (loat rA (loat alphaA (loat #eta ?
Add a cloc"Eise circular arc (rom alpha to 1eta degrees Eith center >8X ?? and radius r; Actual
draEing o( the circle is per(ormed #y the neFt stro"e or (ill operation;
E'emplo !. pdf>arcn./ e+ample
<?php
// prepare document
$pd# > pd#%ne839;
pd#%open%#ile3$pd#, ""9;
pd#%beEin%paEe3$pd#, 5K5, J1C9;
// an outlined arcn
pd#%arcn3$pd#, C22, H22, 622, 2, K29;
pd#%stroIe3$pd#9;
// a #illed arcn
pd#%arcn3$pd#, C22, H22, 52, 2, K29;
pd#%#ill3$pd#9;
// an outlined and #illed arcn
pd#%setcolor3$pd#, "#ill", "Eray", 2.J9;
pd#%arcn3$pd#, 122, H22, 52, 2, K29;
pd#%#ill%stroIe3$pd#9;
// #inish document
pd#%end%paEe3$pd#9;
pd#%close3$pd#9;
header3"RontentFtype@ application/pd#"9;
echo pd#%Eet%bu##er3$pd#9;
pd#%delete3$pd#9;
?>
ee alsoC pdf>arc./A pdf>circle./A pdf>stroBe./A pdf>fill./ and pdf>fillstroBe./;
pdf>attach>file
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZattachZ(ile 22 Adds a (ile attachment (or current page
Kescription
#ool pdf>attach>file > resource pd(docA (loat llFA (loat llyA (loat urFA (loat uryA string (ilenameA string
descriptionA string authorA string mimetypeA string icon ?
Add a (ile attachment annotation; 6con is one o( EraphA papercl6pA pushp6nA or taE; Devuelve TRUE
si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- Only the HFullH Acro#at so(tEare Eill #e a#le to display these (ile attachments; All
other PDF vieEers Eill either shoE nothing or display a /uestion mar";
PK;>begin>page
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZ#eginZpage 22 tarts neE page
Kescription
void pdf>begin>page > int pd( documentA dou#le EidthA dou#le height ?
,he PK;>begin>page./ (unction starts a neE page Eith height he6Eht and Eidth 76#th; .n order to
create a valid document you must call this (unction and PK;>end>page./;
ee also PK;>end>page./;
pdf>begin>pattern
>P&P 8 _^ 8;3;4A P&P 4?
pd(Z#eginZpattern 22 tarts neE pattern
Kescription
int pdf>begin>pattern > resource pd(docA (loat EidthA (loat heightA (loat FstepA (loat ystepA int
painttype ?
tarts a neE pattern de(inition and returns a pattern handle; 76#thA and he6Eht de(ine the #ounding
#oF (or the pattern; 8step and ?step give the repeated pattern o((sets; pa6ntt?pe^1 means that the
pattern has its oEn colour settings Ehereas a value o( 0 indicates that the current colour is used
Ehen the pattern is applied;
ee also pdf>end>pattern./;
pdf>begin>template
>P&P 8 _^ 8;3;4A P&P 4?
pd(Z#eginZtemplate 22 tarts neE template
Kescription
int pdf>begin>template > resource pd(docA (loat EidthA (loat height ?
tart a neE template de(inition;
PK;>circle
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZcircle 22 DraEs a circle
Kescription
void pdf>circle > int pd( documentA dou#le F2coorA dou#le y2coorA dou#le radius ?
,he PK;>circle./ (unction draEs a circle Eith center at point >8=coorA ?=coor? and radius ra#6us;
ee also PK;>arc./A PK;>stroBe./;
PK;>clip
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZclip 22 5lips to current path
Kescription
void pdf>clip > int pd( document ?
,he PK;>clip./ (unction clips all draEing to the current path;
PK;>close>image
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
PDFZcloseZimage 22 5loses an image
Kescription
void pdf>close>image > int image ?
,he PK;>close>image./ (unction closes an image Ehich has #een opened Eith any o( the
PK;>open>+++./ (unctions;
ee also PK;>open>'peg./A PK;>open>gif./A PK;>open>memory>image./;
pdf>close>pdi>page
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZcloseZpdiZpage 22 5lose the page handle
Kescription
#ool pdf>close>pdi>page > resource pd(docA int pagehandle ?
5lose the page handleA and (ree all page2related resources; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
pdf>close>pdi
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZcloseZpdi 22 5lose the input PDF document
Kescription
#ool pdf>close>pdi > resource pd(docA int dochandle ?
5lose all open page handlesA and close the input PDF document; Devuelve TRUE si todo se llev- a
ca#o correctamenteA FALSE en caso de (allo;
ee also pdf>open>pdi./;
PK;>close
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZclose 22 5loses a pd( document
Kescription
void pdf>close > int pd( document ?
,he PK;>close./ (unction closes the pd( document;
Nota- Due to an unclean implementation o( the pd(li# 3;K the internal closing o( the
document also closes the (ile; ,his should not #e done #ecause pd(li# did not open the
(ileA #ut eFpects an already open (ile Ehen PK;>open./ is called; 5onse/uently it
shouldnHt close the (ile; .n order to (iF this 'ust ta"e out line 193 o( the (ile pZ#asic;c in
the pd(li# 3;K source distri#ution until the neFt release o( pd(li# Eill (iF this;
Nota- ,his (unction Eor"s properly Eithout any patches to pd(li# i( pd(li# 0;3 support is
activated;
ee also PK;>open./A fclose./;
PK;>closepath>fill>stroBe
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZclosepathZ(illZstro"e 22 5losesA (ills and stro"es current path
Kescription
void pdf>closepath>fill>stroBe > int pd( document ?
,he PK;>closepath>fill>stroBe./ (unction closesA (ills the interior o( the current path Eith the
current (ill color and draEs current path;
ee also PK;>closepath./A PK;>stroBe./A PK;>fill./A PK;>setgray>fill./A PK;>setgray./A
PK;>setrgbcolor>fill./A PK;>setrgbcolor./;
PK;>closepath>stroBe
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZclosepathZstro"e 22 5loses path and draEs line along path
Kescription
void pdf>closepath>stroBe > int pd( document ?
,he PK;>closepath>stroBe./ (unction is a com#ination o( PK;>closepath./ and PK;>stroBe./; .t
also clears the path;
ee also PK;>closepath./A PK;>stroBe./;
PK;>closepath
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZclosepath 22 5loses path
Kescription
void pdf>closepath > int pd( document ?
,he PK;>closepath./ (unction closes the current path; ,his meansA it draEs a line (rom current
point to the point Ehere the (irst line Eas started; Many (unctions li"e PK;>mo5eto./A PK;>circle
./ and PK;>rect./ start a neE path;
pdf>concat
>P&P 8 _^ 8;3;4A P&P 4?
pd(Zconcat 22 5oncatenate a matriF to the 5,M
Kescription
#ool pdf>concat > resource pd(docA (loat aA (loat #A (loat cA (loat dA (loat eA (loat ( ?
5oncatenate a matriF to the 5,M; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en
caso de (allo;
PK;>continue>te+t
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZcontinueZteFt 22 Outputs teFt in neFt line
Kescription
void pdf>continue>te+t > int pd( documentA string teFt ?
,he PK;>continue>te+t./ (unction outputs the string in te8t in the neFt line; ,he distance #etEeen
the lines can #e set Eith PK;>set>leading./;
ee also PK;>sho3>+y./A PK;>set>leading./A PK;>set>te+t>pos./;
PK;>cur5eto
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZcurveto 22 DraEs a curve
Kescription
void pdf>cur5eto > int pd( documentA dou#le F1A dou#le y1A dou#le F0A dou#le y0A dou#le F7A
dou#le y7 ?
,he PK;>cur5eto./ (unction draEs a Bezier curve (rom the current point to the point >8RA ?R? using
>81A ?1? and >82A ?2? as control points;
ee also PK;>mo5eto./A PK;>lineto./A PK;>stroBe./;
pdf>delete
>P&P 8 _^ 8;3;4A P&P 4?
pd(Zdelete 22 Deletes a PDF o#'ect
Kescription
#ool pdf>delete > resource pd(doc ?
Delete the PDF resourceA and (ree all internal resources; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
ee also pdf>ne3./;
PK;>end>page
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZendZpage 22 +nds a page
Kescription
void pdf>end>page > int pd( document ?
,he PK;>end>page./ (unction ends a page; Once a page is ended it cannot #e modi(ied anymore;
ee also PK;>begin>page./;
pdf>end>pattern
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZendZpattern 22 Finish pattern
Kescription
#ool pdf>end>pattern > resource pd(doc ?
Finish the pattern de(inition; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso
de (allo;
ee also pdf>begin>pattern./;
pdf>end>template
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZendZtemplate 22 Finish template
Kescription
#ool pdf>end>template > resource pd(doc ?
Finish the template de(inition; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en
caso de (allo;
PK;>endpath
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZendpath 22 +nds current path
Kescription
void pdf>endpath > int pd( document ?
,he PK;>endpath./ (unction ends the current path #ut does not close it;
ee also PK;>closepath./;
PK;>fill>stroBe
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZ(illZstro"e 22 Fills and stro"es current path
Kescription
void pdf>fill>stroBe > int pd( document ?
,he PK;>fill>stroBe./ (unction (ills the interior o( the current path Eith the current (ill color and
draEs current path;
ee also PK;>closepath./A PK;>stroBe./A PK;>fill./A PK;>setgray>fill./A PK;>setgray./A
PK;>setrgbcolor>fill./A PK;>setrgbcolor./;
PK;>fill
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZ(ill 22 Fills current path
Kescription
void pdf>fill > int pd( document ?
,he PK;>fill./ (unction (ills the interior o( the current path Eith the current (ill color;
ee also PK;>closepath./A PK;>stroBe./A PK;>setgray>fill./A PK;>setgray./A
PK;>setrgbcolor>fill./A PK;>setrgbcolor./;
pdf>findfont
>P&P 8 _^ 8;3;4A P&P 4?
pd(Z(ind(ont 22 Prepare (ont (or later use Eith pdf>setfont./
Kescription
int pdf>findfont > resource pd(docA string (ontnameA string encodingA int em#ed ?
Prepare a (ont (or later use Eith pdf>setfont./; ,he metrics Eill #e loadedA and i( em1e# is nonzeroA
the (ont (ile Eill #e chec"edA #ut not yet used; enco#6nE is one o( 1u6lt6nA macromanA 76nans6A hostA
a user2de(ined encoding name or the name o( a 5Map; Parameter em1e# Eas optional #e(ore P&P 4;
pdf>findfont./ returns a (ont handle or FALSE on error;
E'emplo !. pdf>findfont./ e+ample
<?php
$#ont > pd#%#ind#ont3$pd#, "*imes .e8 'oman", "8inansi", 69;
i# 3$#ont9 :
pd#%set#ont3$pd#, $#ont, 629;
;
?>
pdf>get>buffer
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZgetZ#u((er 22 Fetch the #u((er containing the generated PDF data
Kescription
string pdf>get>buffer > resource pd(doc ?
Get the contents o( the PDF output #u((er; ,he result must #e used #y the client #e(ore calling any
other PDFli# (unction;
pdf>get>font
pd(ZgetZ(ont 22 DeprecatedC (ont handling
Kescription
,his (unction is deprecatedA use pdf>get>5alue./ instead;
pdf>get>fontname
pd(ZgetZ(ontname 22 DeprecatedC (ont handling
Kescription
,his (unction is deprecatedA use pdf>get>parameter./ instead;
pdf>get>fontsi6e
pd(ZgetZ(ontsize 22 DeprecatedC (ont handling
Kescription
,his (unction is deprecatedA use pdf>get>5alue./ instead;
pdf>get>image>height
pd(ZgetZimageZheight 22 DeprecatedC returns height o( an image
Kescription
,his (unction is deprecatedA use pdf>get>5alue./ instead;
pdf>get>image>3idth
pd(ZgetZimageZEidth 22 DeprecatedC Returns Eidth o( an image
Kescription
,his (unction is deprecatedA use pdf>get>5alue./ instead;
pdf>get>ma'or5ersion
>P&P 8 _^ 8;0;3A P&P 4?
pd(ZgetZma'orversion 22 Returns the ma'or version num#er o( the PDFli#
Kescription
int pdf>get>ma'or5ersion > void ?
Returns the ma'or version num#er o( the PDFli#;
ee also pdf>get>minor5ersion./;
pdf>get>minor5ersion
>P&P 8 _^ 8;0;3A P&P 4?
pd(ZgetZminorversion 22 Returns the minor version num#er o( the PDFli#
Kescription
int pdf>get>minor5ersion > void ?
Returns the minor version num#er o( the PDFli#;
ee also pdf>get>ma'or5ersion./;
PK;>get>parameter
>P&P 8 _^ 8;3;1A P&P 4?
PDFZgetZparameter 22 Gets certain parameters
Kescription
string pdf>get>parameter > int pd( documentA string nameA dou#le modi(ier ?
,he PK;>get>parameter./ (unction gets several parameters o( pd(li# Ehich are o( the type string;
,he (unction parameter mo#696er characterizes the parameter to get; .( the modi(ier is not needed it
has to #e 3;
ee also PK;>get>5alue./A PK;>set>5alue./A PK;>set>parameter./;
pdf>get>pdi>parameter
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZgetZpdiZparameter 22 Get some PD. string parameters
Kescription
string pdf>get>pdi>parameter > resource pd(docA string "eyA int documentA int pageA int indeF ?
Get the contents o( some PD. #ocument parameter Eith string type;
pdf>get>pdi>5alue
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZgetZpdiZvalue 22 Gets some PD. numerical parameters
Kescription
string pdf>get>pdi>5alue > resource pd(docA string "eyA int docA int pageA int indeF ?
Get the contents o( some PD. document parameter Eith numerical type;
PK;>get>5alue
>P&P 8 _^ 8;3;1A P&P 4?
PDFZgetZvalue 22 Gets certain numerical value
Kescription
dou#le pdf>get>5alue > int pd( documentA string nameA dou#le modi(ier ?
,he PK;>get>5alue./ (unction gets several numerical parameters o( pd(li#; ,he (unction parameter
mo#696er characterizes the parameter to get; .( the modi(ier is not needed it has to #e 3;
ee also PK;>set>5alue./A PK;>get>parameter./A PK;>set>parameter./;
pdf>initgraphics
>P&P 8 _^ 8;3;4A P&P 4?
pd(Zinitgraphics 22 Resets graphic state
Kescription
#ool pdf>initgraphics > resource pd(doc ?
Reset all implicit color and graphics state parameters to their de(aults; Devuelve TRUE si todo se
llev- a ca#o correctamenteA FALSE en caso de (allo;
PK;>lineto
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZlineto 22 DraEs a line
Kescription
void pdf>lineto > int pd( documentA dou#le F2coorA dou#le y2coor ?
,he PK;>lineto./ (unction draEs a line (rom the current point to the point Eith coordinates >8=coorA
?=coor?;
ee also PK;>mo5eto./A PK;>cur5eto./A PK;>stroBe./;
pdf>maBespotcolor
>P&P 8 _^ 8;3;4A P&P 4?
pd(Zma"espotcolor 22 Ma"es a spotcolor
Kescription
#ool pdf>maBespotcolor > resource pd(docA string spotname ?
Ma"e a named spot color (rom the current color; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
ee also pdf>setcolor./;
PK;>mo5eto
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZmoveto 22 ets current point
Kescription
void pdf>mo5eto > int pd( documentA dou#le F2coorA dou#le y2coor ?
,he PK;>mo5eto./ (unction sets the current point to the coordinates 8=coor and ?=coor;
pdf>ne3
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZneE 22 5reates a neE pd( resource
Kescription
resource pdf>ne3 > ?
5reate a neE PDF resourceA using de(ault error handling and memory management;
ee also pdf>close./;
pdf>open>ccitt
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZopenZccitt 22 Opens a neE image (ile Eith raE 55.,, data
Kescription
int pdf>open>ccitt > resource pd(docA string (ilenameA int EidthA int heightA int BitReverseA int "A int
Blac"ls1 ?
Open a raE 55.,, image;
pdf>open>file
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZopenZ(ile 22 Opens a neE pd( o#'ect
Kescription
#ool pdf>open>file > resource pd(docA string (ilename ?
5reate a neE PDF (ile using the supplied (ile name; .( 96lename is empty the PDF document Eill #e
generated in memory instead o( on (ile; ,he result must #e (etched #y the client Eith the
pdf>get>buffer./ (unction; Parameter 96lename Eas optional #e(ore P&P 4; Devuelve TRUE si todo
se llev- a ca#o correctamenteA FALSE en caso de (allo;
,he (olloEing eFample shoEs hoE to create a pd( document in memory and hoE to output it
correctly;
E'emplo !. Creating a PK; document in memory
<?php
$pd# > pd#%ne839;
pd#%open%#ile3$pd#9;
pd#%beEin%paEe3$pd#, 5K5, J1C9;
pd#%set%#ont3$pd#, "*imesF'oman", <2, "host"9;
pd#%set%=alue3$pd#, "textrenderinE", 69;
pd#%sho8%xy3$pd#, ", LS document created in memory!", 52, H529;
pd#%end%paEe3$pd#9;
pd#%close3$pd#9;
$data > pd#%Eet%bu##er3$pd#9;
header3"RontentFtype@ application/pd#"9;
header3"RontentFdisposition@ inline; #ilename>test.pd#"9;
header3"RontentFlenEth@ " . strlen3$data99;
echo $data;
?>
PK;>open>gif
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
PDFZopenZgi( 22 Opens a G.F image
Kescription
int pdf>open>gif > int pd( documentA string (ilename ?
,he PK;>open>gif./ (unction opens an image stored in the (ile Eith the name 96lename; ,he (ormat
o( the image has to #e gi(; ,he (unction returns a pd( image identi(ier;
E'emplo !. Including a gif image
<?php
$im > LS%open%Ei#3$pd#, "test.Ei#"9;
pd#%place%imaEe3$pd#, $im, 622, 622, 69;
pd#%close%imaEe3$pd#, $im9;
?>
ee also PK;>close>image./A PK;>open>'peg./A PK;>open>memory>image./A
PK;>e+ecute>image./A PK;>place>image./A PK;>put>image./;
pdf>open>image>file
>P&P 7 5$ onlyA P&P 8 A P&P 4?
pd(ZopenZimageZ(ile 22 Reads an image (rom a (ile
Kescription
int pdf>open>image>file > resource pd(docA string imagetypeA string (ilenameA string stringparamA
int intparam ?
Open an image (ile; upported types are UpeEA t699A E69A and pnE; str6nEparam is either emptyA mas>A
mas>e#A or paEe; 6ntparam is either 3A the image id o( the applied mas"A or the page; Parameters
str6nEparam and 6ntparam Eere optional #e(ore P&P 4;
pdf>open>image
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZopenZimage 22 $ersatile (unction (or images
Kescription
int pdf>open>image > resource pd(docA string imagetypeA string sourceA string dataA int lengthA int
EidthA int heightA int componentsA int #pcA string params ?
@se image data (rom a variety o( data sources; upported types are UpeEA cc6ttA ra7; upported
sources are memor?A 96lere9A url; len is only used Ehen type is ra7A params is only used Ehen type is
cc6tt;
PK;>open>'peg
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
PDFZopenZ'peg 22 Opens a !P+G image
Kescription
int pdf>open>'peg > int pd( documentA string (ilename ?
,he PK;>open>'peg./ (unction opens an image stored in the (ile Eith the name 96lename; ,he
(ormat o( the image has to #e 'peg; ,he (unction returns a pd( image identi(ier;
ee also PK;>close>image./A PK;>open>gif./A PK;>open>png./A PK;>open>memory>image./A
PK;>e+ecute>image./A PK;>place>image./A PK;>put>image./;
PK;>open>memory>image
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
PDFZopenZmemoryZimage 22 Opens an image created Eith P&PHs image (unctions
Kescription
int pdf>open>memory>image > int pd( documentA int image ?
,he PK;>open>memory>image./ (unction ta"es an image created Eith the P&PHs image (unctions
and ma"es it availa#le (or the pd( document; ,he (unction returns a pd( image identi(ier;
E'emplo !. Including a memory image
<?php
$im > 4maEeRreate3622, 6229;
$col > 4maEeRolor,llocate3$im, J2, 15, 6K29;
4maEeSill3$im, 62, 62, $col9;
$pim > LS%open%memory%imaEe3$pd#, $im9;
4maEeLestroy3$im9;
pd#%place%imaEe3$pd#, $pim, 622, 622, 69;
pd#%close%imaEe3$pd#, $pim9;
?>
ee also PK;>close>image./A PK;>open>'peg./A PK;>open>gif./A PK;>open>png./
PK;>e+ecute>image./A PK;>place>image./A PK;>put>image./;
pdf>open>pdi>page
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZopenZpdiZpage 22 Prepare a page
Kescription
int pdf>open>pdi>page > resource pd(docA int dochandleA int pagenum#erA string pagela#el ?
Prepare a page (or later use Eith pdf>place>image./
pdf>open>pdi
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZopenZpdi 22 Opens a PDF (ile
Kescription
int pdf>open>pdi > resource pd(docA string (ilenameA string stringparamA int intparam ?
Opens an eFisting PDF document and prepares it (or later use;
ee also pdf>close>pdi./;
PK;>open>png
>P&P 8 A P&P 4?
PDFZopenZpng 22 Opens a PNG image
Kescription
int pdf>open>png > int pd(A string pngZ(ile ?
,he PK;>open>png./ (unction opens an image stored in the (ile Eith the name 96lename; ,he
(ormat o( the image has to #e png; ,he (unction returns a pd( image identi(ier;
E'emplo !. Including a PNF image
<?php
$im > LS%open%pnE 3$pd#, "test.pnE"9;
pd#%place%imaEe 3$pd#, $im, 622, 622, 69;
pd#%close%imaEe 3$pd#, $im9;
?>
ee also PK;>close>image./A PK;>open>'peg./A PK;>open>gif./A PK;>open>memory>image./A
PK;>e+ecute>image./A PK;>place>image./A PK;>put>image./;
pdf>open>tiff
pd(ZopenZti(( 22 DeprecatedC Opens a ,.FF image
Kescription
,his (unction is deprecatedA use pdf>open>image./ instead;
PK;>open
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZopen 22 Opens a neE pd( document
Kescription
int pdf>open > int (ileA int in(o ?
,he PK;>open./ (unction opens a neE pd( document; ,he corresponding (ile has to #e opened Eith
fopen./ and the (ile descriptor passed as argument 96le; 6n9o is the in(o structure that has to #e
created Eith pdf>get>info./; ,he in(o structure Eill #e deleted Eithin this (unction;
Nota- ,he return value is needed as the (irst parameter in all other (unctions Eriting to
the pd( document;
Nota- ,his (unction does not alloE the second parameter i( pd(li# 0;3 support is
activated;
ee also fopen./A PK;>get>info./A PK;>close./;
PK;>place>image
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
PDFZplaceZimage 22 Places an image on the page
Kescription
void pdf>place>image > int pd( documentA int imageA dou#le F2coorA dou#le y2coorA dou#le scale ?
,he PK;>place>image./ (unction places an image on the page at postion >8=coorA 8=coor?; ,he
image can #e scaled at the same time;
ee also PK;>put>image./;
pdf>place>pdi>page
>P&P 8 _^ 8;3;KA P&P 4?
pd(ZplaceZpdiZpage 22 Places an image on the page
Kescription
#ool pdf>place>pdi>page > resource pd(docA int pageA (loat FA (loat yA (loat sFA (loat sy ?
Place a PD. page Eith the loEer le(t corner at >8A ??A and scale it; Devuelve TRUE si todo se llev- a
ca#o correctamenteA FALSE en caso de (allo;
PK;>rect
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZrect 22 DraEs a rectangle
Kescription
void pdf>rect > int pd( documentA dou#le F2coorA dou#le y2coorA dou#le EidthA dou#le height ?
,he PK;>rect./ (unction draEs a rectangle Eith its loEer le(t corner at point >8=coorA ?=coor?; ,his
Eidth is set to 76#Eth; ,his height is set to he6Eht;
ee also PK;>stroBe./;
PK;>restore
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZrestore 22 Restores (ormerly saved environment
Kescription
void pdf>restore > int pd( document ?
,he PK;>restore./ (unction restores the environment saved Eith PK;>sa5e./; .t Eor"s li"e the
postscript command grestore;
E'emplo !. ,a5e and Mestore
<?php LS%sa=e3$pd#9;
// do all Iinds o# rotations, trans#ormations, ...
LS%restore3$pd#9 ?>
ee also PK;>sa5e./;
PK;>rotate
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZrotate 22 ets rotation
Kescription
void pdf>rotate > int pd( documentA dou#le angle ?
,he PK;>rotate./ (unction sets the rotation in degress to anEle;
PK;>sa5e
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsave 22 aves the current environment
Kescription
void pdf>sa5e > int pd( document ?
,he PK;>sa5e./ (unction saves the current environment; .t Eor"s li"e the postscript command
gsave; $ery use(ul i( you Eant to translate or rotate an o#'ect Eithout e((ecting other o#'ects;
PK;>sa5e./ should alEays #e (olloEed #y PK;>restore./ to restore the environment #e(ore
PK;>sa5e./;
ee also PK;>restore./;
PK;>scale
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZscale 22 ets scaling
Kescription
void pdf>scale > int pd( documentA dou#le F2scaleA dou#le y2scale ?
,he PK;>scale./ (unction sets the scaling (actor in #oth directions; ,he (olloEing eFample scales F
and y direction #y :0; ,he (olloEing line Eill there(ore #e draEn one inch in #oth directions;
E'emplo !. ,caling
<?php LS%scale3$pd#, HC.2, HC.29;
LS%lineto3$pd#, 6, 69;
LS%stroIe3$pd#9;
?>
PK;>set>border>color
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
PDFZsetZ#orderZcolor 22 ets color o( #order around lin"s and annotations
Kescription
void pdf>set>border>color > int pd( documentA dou#le redA dou#le greenA dou#le #lue ?
,he PK;>set>border>color./ (unction sets the color o( the suroundig #oF o( lin"s and annotations;
,he three color components have to have a value #etEeen 3;3 and 1;3;
ee also PK;>set>border>style./A PK;>set>border>dash./;
PK;>set>border>dash
>P&P 8 _^ 8;3;1A P&P 4?
PDFZsetZ#orderZdash 22 ets dash style o( #order around lin"s and annotations
Kescription
void pdf>set>border>dash > int pd( documentA dou#le #lac"A dou#le Ehite ?
,he PK;>set>border>dash./ (unction sets the lenght o( #lac" and Ehite areas o( a dashed line o(
the suroundig #oF o( lin"s and annotations;
ee also PK;>set>border>style./A PK;>set>border>color./;
PK;>set>border>style
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
PDFZsetZ#orderZstyle 22 ets style o( #order around lin"s and annotations
Kescription
void pdf>set>border>style > int pd( documentA string styleA dou#le Eidth ?
,he PK;>set>border>style./ (unction sets the style and Eidth o( the suroundig #oF o( lin"s and
annotations; ,he parameter st?le can #e HsolidH or HdashedH;
ee also PK;>set>border>color./A PK;>set>border>dash./;
PK;>set>char>spacing
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetZcharZspacing 22 ets character spacing
Kescription
void pdf>set>char>spacing > int pd( documentA dou#le space ?
,he PK;>set>char>spacing./ (unction sets the spacing #etEeen characters;
ee also PK;>set>3ord>spacing./A PK;>set>leading./;
PK;>set>duration
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetZduration 22 ets duration #etEeen pages
Kescription
void pdf>set>duration > int pd( documentA dou#le duration ?
,he PK;>set>duration./ (unction set the duration #etEeen (olloEing pages in seconds;
ee also PK;>set>transition./;
PK;>set>font
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetZ(ont 22 elects a (ont (ace and size
Kescription
void pdf>set>font > int pd( documentA string (ont nameA dou#le sizeA string encoding PA int em#edQ ?
,he PK;>set>font./ (unction sets the current (ont (aceA (ont size and encoding; .( you use pd(li# 3;K
you Eill need to provide the Ado#e Font Metrics >a(m2(iles? (or the (ont in the (ont path >de(ault is ;D
(onts?; .( you use php7 or a version o( pd(li# older than 0;03 the (ourth parameter enco#6nE can ta"e
the (olloEing valuesC 3 ^ #uiltinA 1 ^ pd(docA 0 ^ macromanA 7 ^ maceFpertA 8 ^ Einansi; An
encoding greater than 8 and less than 3 Eill de(ault to Einansi; Einansi is o(ten a good choice; .(
you use php8 and a version o( pd(li# _^ 0;03 the encoding parameter has changed to a string; @se
HEinansiHA H#uiltinHA HhostHA HmacromanH etc; instead; .( the last parameter is set to 1 the (ont is
em#edded into the pd( document otherEise it is not; ,o em#ed a (ont is usually a good idea i( the
(ont is not Eidely spread and you cannot ensure that the person Eatching your document has access
on (onts in the document; . (ont is only em#edded once even i( you call PK;>set>font./ several
times;
Nota- ,his (unction has to #e called a(ter PK;>begin>page./ in order to create a valid
pd( document;
Nota- .( you re(erence a (ont in a ;upr (ile ma"e sure the name in the a(m (ile and the
(ont name are the same; OtherEiseA the (ont Eill #e em#edded several times >,han"s to
Paul &addon (or (inding this;?
PK;>set>hori6>scaling
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetZhorizZscaling 22 ets horizontal scaling o( teFt
Kescription
void pdf>set>hori6>scaling > int pd( documentA dou#le scale ?
,he PK;>set>hori6>scaling./ (unction sets the horizontal scaling to scale percent;
pdf>set>info>author
pd(ZsetZin(oZauthor 22 DeprecatedC Fills the author (ield o( the document
Kescription
,his (unction is deprecatedA use pdf>set>info./ instead;
pdf>set>info>creator
pd(ZsetZin(oZcreator 22 DeprecatedC Fills the creator (ield o( the document
Kescription
,his (unction is deprecatedA use pdf>set>info./ instead;
pdf>set>info>Bey3ords
pd(ZsetZin(oZ"eyEords 22 DeprecatedC Fills the "eyEords (ield o( the document
Kescription
,his (unction is deprecatedA use pdf>set>info./ instead;
pdf>set>info>sub'ect
pd(ZsetZin(oZsu#'ect 22 DeprecatedC Fills the su#'ect (ield o( the document
Kescription
,his (unction is deprecatedA use pdf>set>info./ instead;
pdf>set>info>title
pd(ZsetZin(oZtitle 22 DeprecatedC Fills the title (ield o( the document
Kescription
,his (unction is deprecatedA use pdf>set>info./ instead;
PK;>set>info
>P&P 8 _^ 8;3;1A P&P 4?
PDFZsetZin(o 22 Fills a (ield o( the document in(ormation
Kescription
void pdf>set>info > int pd( documentA string (ieldnameA string value ?
,he PK;>set>info./ (unction sets an in(ormation (ield o( a pd( document; Possi#le values (or the
(ieldname are Hu#'ectHA H,itleHA H5reatorHA HAuthorHA HSeyEordsH and one user2de(ined name; .t can #e
called #e(ore #eginning a page;
E'emplo !. ,etting document information
<?php
$#d > #open3"test.pd#", "8"9;
$pd#doc > pd#%open3$#d9;
pd#%set%in#o3$pd#doc, ",uthor", "+8e &teinmann"9;
pd#%set%in#o3$pd#doc, "Rreator", "+8e &teinmann"9;
pd#%set%in#o3$pd#doc, "*itle", "*estinE 4n#o Sields"9;
pd#%set%in#o3$pd#doc, "&ubject", "*est"9;
pd#%set%in#o3$pd#doc, "]ey8ords", "*est, Sields"9;
pd#%set%in#o3$pd#doc, "RustomSield", "7hat e=er maIes sense"9;
pd#%beEin%paEe3$pd#doc, 5K5, J1C9;
pd#%end%paEe3$pd#doc9;
pd#%close3$pd#doc9;
?>
Nota- ,his (unction replaces PK;>set>info>Bey3ords./A PK;>set>info>title./A
PK;>set>info>sub'ect./A PK;>set>info>creator./A PK;>set>info>syb'ect./;
PK;>set>leading
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetZleading 22 ets distance #etEeen teFt lines
Kescription
void pdf>set>leading > int pd( documentA dou#le distance ?
,he PK;>set>leading./ (unction sets the distance #etEeen teFt lines; ,his Eill #e used i( teFt is
output #y PK;>continue>te+t./;
ee also PK;>continue>te+t./;
PK;>set>parameter
>P&P 8 A P&P 4?
PDFZsetZparameter 22 ets certain parameters
Kescription
void pdf>set>parameter > int pd( documentA string nameA string value ?
,he PK;>set>parameter./ (unction sets several parameters o( pd(li# Ehich are o( the type string;
ee also PK;>get>5alue./A PK;>set>5alue./A PK;>get>parameter./;
PK;>set>te+t>matri+
>P&P 7_^ 7;3;K?
PDFZsetZteFtZmatriF 22 ets the teFt matriF
Kescription
void pdf>set>te+t>matri+ > int pd( documentA array matriF ?
,he PK;>set>te+t>matri+./ (unction sets a matriF Ehich descri#es a trans(ormation applied on the
current teFt (ont; ,he matriF has to passed as an array Eith siF elements;
PK;>set>te+t>pos
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetZteFtZpos 22 ets teFt position
Kescription
void pdf>set>te+t>pos > int pd( documentA dou#le F2coorA dou#le y2coor ?
,he PK;>set>te+t>pos./ (unction sets the position o( teFt (or the neFt pdf>sho3./ (unction call;
ee also PK;>sho3./A PK;>sho3>+y./;
PK;>set>te+t>rendering
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetZteFtZrendering 22 Determines hoE teFt is rendered
Kescription
void pdf>set>te+t>rendering > int pd( documentA int mode ?
,he PK;>set>te+t>rendering./ (unction determines hoE teFt is rendered; ,he possi#le values (or
mo#e are 3^(ill teFtA 1^stro"e teFtA 0^(ill and stro"e teFtA 7^invisi#leA 8^(ill teFt and add it to
cliping pathA 4^stro"e teFt and add it to clipping pathA K^(ill and stro"e teFt and add it to cliping
pathA :^add it to clipping path;
PK;>set>te+t>rise
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetZteFtZrise 22 ets the teFt rise
Kescription
void pdf>set>te+t>rise > int pd( documentA dou#le rise ?
,he PK;>set>te+t>rise./ (unction sets the teFt rising to r6se points;
PK;>set>5alue
>P&P 8 _^ 8;3;1A P&P 4?
PDFZsetZvalue 22 ets certain numerical value
Kescription
void pdf>set>5alue > int pd( documentA string nameA dou#le value ?
,he PK;>set>5alue./ (unction sets several numerical parameters o( pd(li#;
ee also PK;>get>5alue./A PK;>get>parameter./A PK;>set>parameter./;
PK;>set>3ord>spacing
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetZEordZspacing 22 ets spacing #etEeen Eords
Kescription
void pdf>set>3ord>spacing > int pd( documentA dou#le space ?
,he PK;>set>3ord>spacing./ (unction sets the spacing #etEeen Eords;
ee also PK;>set>char>spacing./A PK;>set>leading./;
pdf>setcolor
>P&P 8 _^ 8;3;4A P&P 4?
pd(Zsetcolor 22 ets (ill and stro"e color
Kescription
#ool pdf>setcolor > resource pd(docA string typeA string colorspaceA (loat c1A (loat c0A (loat c7A (loat
c8 ?
et the current color space and color; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE
en caso de (allo; ,he parameter t?pe can #e 96llA stro>e or 1oth to speci(y that the color is set (or
(illingA stro"ing or #oth (illing and stro"ing; ,he parameter colorspace can #e Era?A rE1A cm?>A spot
or pattern; ,he parameters c1A c2A cR and c; represent the color components (or the color space
speci(ied #y colorspace; +Fcept as otherEise notedA the color components are (loating2point values
that range (rom 3 to 1; Parameters c2A cR and c; Eere optional #e(ore P&P 4;
For Era? only c1 is used;
For rE1 parameters c1A c2A and cR speci(y the redA green and #lue values respectively;
<?php
// &et #ill and stroIe colors to 8hite.
pd#%setcolor3$pd#, "both", "rEb", 6, 6, 69;
?>
For cm?>A parameters c1A c2A cRA and c; are the cyanA magentaA yelloE and #lac" valuesA
respectively;
<?php
// &et #ill and stroIe colors to blacI.
pd#%setcolor3$pd#, "both", "cmyI", 2, 2, 2, 69;
?>
For spotA c1 should #e a spot color handles returned #y pdf>maBespotcolor./ and c2 is a tint value
#etEeen 3 and 1;
For patternA c1 should #e a pattern handle returned #y pdf>begin>pattern./;
PK;>setdash
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetdash 22 ets dash pattern
Kescription
void pdf>setdash > int pd( documentA dou#le EhiteA dou#le #lac" ?
,he PK;>setdash./ (unction sets the dash pattern 7h6te Ehite points and 1lac> #lac" points; .( #oth
are 3 a solid line is set;
PK;>setflat
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZset(lat 22 ets (latness
Kescription
void pdf>setflat > int pd( documentA dou#le value ?
,he PK;>setflat./ (unction sets the (latness to a value #etEeen 3 and 133;
pdf>setfont
>P&P 8 _^ 8;3;4A P&P 4?
pd(Zset(ont 22 et the current (ont
Kescription
#ool pdf>setfont > resource pd(docA int (ontA (loat size ?
et the current (ont in the given s6DeA using a 9ont handle returned #y pdf>findfont./; Devuelve
TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also pdf>findfont./;
PK;>setgray>fill
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetgrayZ(ill 22 ets (illing color to gray value
Kescription
void pdf>setgray>fill > int pd( documentA dou#le gray value ?
,he PK;>setgray>fill./ (unction sets the current gray value to (ill a path;
ee also PK;>setrgbcolor>fill./;
PK;>setgray>stroBe
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetgrayZstro"e 22 ets draEing color to gray value
Kescription
void pdf>setgray>stroBe > int pd( documentA dou#le gray value ?
,he PK;>setgray>stroBe./ (unction sets the current draEing color to the given gray value;
ee also PK;>setrgbcolor>stroBe./;
PK;>setgray
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetgray 22 ets draEing and (illing color to gray value
Kescription
void pdf>setgray > int pd( documentA dou#le gray value ?
,he PK;>setgray./ (unction sets the current draEing and (illing color to the given gray value;
ee also PK;>setrgbcolor>stroBe./A PK;>setrgbcolor>fill./;
PK;>setlinecap
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetlinecap 22 ets linecap parameter
Kescription
void pdf>setlinecap > int pd( documentA int value ?
,he PK;>setlinecap./ (unction sets the linecap parameter #etEeen a value o( 3 and 0;
PK;>setline'oin
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetline'oin 22 ets line'oin parameter
Kescription
void pdf>setline'oin > int pd( documentA long value ?
,he PK;>setline'oin./ (unction sets the line'oin parameter #etEeen a value o( 3 and 0;
PK;>setline3idth
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetlineEidth 22 ets line Eidth
Kescription
void pdf>setline3idth > int pd( documentA dou#le Eidth ?
,he PK;>setline3idth./ (unction sets the line Eidth to 76#th;
pdf>setmatri+
>P&P 8 _^ 8;3;4A P&P 4?
pd(ZsetmatriF 22 ets current trans(ormation matriF
Kescription
#ool pdf>setmatri+ > resource pd(docA (loat aA (loat #A (loat cA (loat dA (loat eA (loat ( ?
+Fplicitly set the current trans(ormation matriF; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
PK;>setmiterlimit
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetmiterlimit 22 ets miter limit
Kescription
void pdf>setmiterlimit > int pd( documentA dou#le value ?
,he PK;>setmiterlimit./ (unction sets the miter limit to a value greater o( e/ual than 1;
pdf>setpolydash
pd(Zsetpolydash 22 DeprecatedC ets complicated dash pattern
Kescription
,his (unction is deprecatedA use pdf>setdash./ instead;
PK;>setrgbcolor>fill
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetrg#colorZ(ill 22 ets (illing color to rg# color value
Kescription
void pdf>setrgbcolor>fill > int pd( documentA dou#le red valueA dou#le green valueA dou#le #lue
value ?
,he PK;>setrgbcolor>fill./ (unction sets the current rg# color value to (ill a path;
ee also PK;>setrgbcolor>fill./;
PK;>setrgbcolor>stroBe
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetrg#colorZstro"e 22 ets draEing color to rg# color value
Kescription
void pdf>setrgbcolor>stroBe > int pd( documentA dou#le red valueA dou#le green valueA dou#le #lue
value ?
,he PK;>setrgbcolor>stroBe./ (unction sets the current draEing color to the given rg# color value;
ee also PK;>setrgbcolor>stroBe./;
PK;>setrgbcolor
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZsetrg#color 22 ets draEing and (illing color to rg# color value
Kescription
void pdf>setrgbcolor > int pd( documentA dou#le red valueA dou#le green valueA dou#le #lue value ?
,he PK;>setrgbcolor>stroBe./ (unction sets the current draEing and (illing color to the given rg#
color value;
ee also PK;>setrgbcolor>stroBe./A PK;>setrgbcolor>fill./;
PK;>sho3>bo+ed
>P&P 8 A P&P 4?
PDFZshoEZ#oFed 22 Output teFt in a #oF
Kescription
int pdf>sho3>bo+ed > int pd( documentA string teFtA dou#le F2coorA dou#le y2coorA dou#le EidthA
dou#le heightA string mode ?
,he PK;>sho3>bo+ed./ (unction outputs the string te8t in a #oF Eith its loEer le(t position at >8=
coorA ?=coor?; ,he #oFes dimension is he6Eht #y 76#th; ,he parameter mo#e determines hoE the
teFt is type set; .( 76#th and he6Eht are zeroA the mo#e can #e =le(t=A =right= or =center=; .( 76#th or
he6Eht is une/ual zero it can also #e ='usti(y= and =(ull'usti(y=;
Returns the num#er o( characters that could not #e processed #ecause they did not (it into the #oF;
ee also PK;>sho3./A PK;>sho3>+y./;
PK;>sho3>+y
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZshoEZFy 22 Output teFt at given position
Kescription
void pdf>sho3>+y > int pd( documentA string teFtA dou#le F2coorA dou#le y2coor ?
,he PK;>sho3>+y./ (unction outputs the string te8t at position >8=coorA ?=coor?;
ee also PK;>sho3./;
PK;>sho3
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZshoE 22 Output teFt at current position
Kescription
void pdf>sho3 > int pd( documentA string teFt ?
,he PK;>sho3./ (unction outputs the string te8t at the current position using the current (ont;
ee also PK;>sho3>+y./A PK;>set>te+t>pos./A PK;>set>font./;
PK;>sBe3
>P&P 8 A P&P 4?
PDFZs"eE 22 "eEs the coordinate system
Kescription
void pdf>sBe3 > int pd( documentA dou#le alphaA dou#le #eta ?
,he PK;>sBe3./ (unction s"eE the coordinate system #y alpha >F? and 1eta >y? degrees; alpha and
1eta may not #e 93 or 0:3 degrees;
PK;>string3idth
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZstringEidth 22 Returns Eidth o( teFt using current (ont
Kescription
dou#le pdf>string3idth > int pd( documentA string teFt ?
,he PK;>string3idth./ (unction returns the Eidth o( the string in te8t #y using the current (ont; .t
re/uires a (ont to #e set #e(ore Eith PK;>set>font./;
ee also PK;>set>font./;
PK;>stroBe
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZstro"e 22 DraEs line along path
Kescription
void pdf>stroBe > int pd( document ?
,he PK;>stroBe./ (unction draEs a line along current path; ,he current path is the sum o( all line
draEing; Lithout this (unction the line Eould not #e draEn;
ee also PK;>closepath./A PK;>closepath>stroBe./;
PK;>translate
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
PDFZtranslate 22 ets origin o( coordinate system
Kescription
void pdf>translate > int pd( documentA dou#le F2coorA dou#le y2coor ?
,he PK;>translate./ (unction sets the origin o( coordinate system to the point >8=coorA ?=coor?
relativ the current origin; ,he (olloEing eFample draEs a line (rom >3A 3? to >033A 033? relative to
the initial coordinate system; %ou have to set the current point a(ter PK;>translate./ and #e(ore
you start draEing more o#'ects;
E'emplo !. Translation
<?php LS%mo=eto3$pd#, 2, 29;
LS%lineto3$pd#, 622, 6229;
LS%stroIe3$pd#9;
LS%translate3$pd#, 622, 6229;
LS%mo=eto3$pd#, 2, 29;
LS%lineto3$pd#, 622, 6229;
LS%stroIe3$pd#9;
?>
ICCIII. PKJ ;unctions
Introducci"n
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
,he P&P Data O#'ects >PDO? eFtension de(ines a lightEeightA consistent inter(ace (or accessing
data#ases in P&P; +ach data#ase driver that implements the PDO inter(ace can eFpose data#ase2
speci(ic (eatures as regular eFtension (unctions; Note that you cannot per(orm any data#ase
(unctions using the PDO eFtension #y itsel(X you must use a data#ase2speci(ic PDO driver to access
a data#ase server;
Instalaci"n
2indo3s
FolloE the same steps to install and ena#le the PDO drivers o( your choice;
1; LindoEs users can doEnload the eFtension DLL php%pdo.dll as part o( the P+5L collection
#inaries (rom httpCDDEEE;php;netDdoEnloads;php or a more recent version (rom a P&P 4 P+5L
napshot;
0; ,o ena#le the PDO eFtension on LindoEs operating systemsA you must add the (olloEing line to
php.iniC
extension>php%pdo.dll
7; NeFtA choose the other DB speci(ic DLL (iles and either use dl./ to load them at runtimeA or
ena#le them in php.ini #eloE pdo%pdo.dll; For eFampleC
extension>php%pdo.dll
extension>php%pdo%#irebird.dll
extension>php%pdo%mssQl.dll
extension>php%pdo%mysQl.dll
extension>php%pdo%oci.dll
extension>php%pdo%ociJ.dll
extension>php%pdo%odbc.dll
extension>php%pdo%pEsQl.dll
extension>php%pdo%sQlite.dll
,hese DLLHs should eFist in the systems eFtensionZdir;
:inu+ and )NII
Due to a #ug in the pear installer you should install the PDO pac"age manually using the (olloEing
stepsC
FolloE the same steps to install and ena#le the PDO drivers o( your choice;
1; DoEnload the PDO pac"age to your local machineC
bash$ 8Eet http@//pecl.php.net/Eet/L?
0; Determine your P&P bin directory; .( your P&P 4 5L. #inary lives at /
usr/local/php5/bin/php then the #in dir is /usr/local/php5/bin;
7; et your path so that your P&P bin directory is at the (rontC
export ,*H>"/usr/local/php5/bin@$,*H"
8; Manually #uild and install the PDO eFtensionC
bash$ tar x0# L?F2.C.tE0
bash$ cd L?F2.C
bash$ phpi0e
bash$ ./con#iEure
bash$ maIe
bash$ sudo Fs
bashU maIe install
bashU echo extension>pdo.so >> /usr/local/php5/lib/php.ini
PKJ Kri5ers
,he (olloEing drivers currently implement the PDO inter(aceC
Kri5er name ,upported databases
PDOZDBL.B
Free,D D Microso(t OL erver D
y#ase
PDOZF.R+B.RD Fire#irdD.nter#ase K
PDOZM%OL MyOL 7;FD8;3
PDOZO5. Oracle 5all .nter(ace
PDOZODB5 ODB5 v7 >.BM DB0 and uniFODB5?
PDOZPGOL PostgreOL
PDOZOL.,+ OLite 7;F
Clases predefinidas
PKJ
Represents a connection #etEeen P&P and a data#ase server;
Constructor
PDO 2 constructs a neE PDO o#'ect
M%todos
#egin,ransaction 2 #egins a transaction
commit 2 commits a transaction
eFec 2 issues an OL statement and returns the num#er o( a((ected roEs
error5ode 2 retrieves an error codeA i( anyA (rom the data#ase
error.n(o 2 retrieves an array o( error in(ormationA i( anyA (rom the data#ase
getAttri#ute 2 retrieves a data#ase connection attri#ute
last.nsert.d 2 retrieves the value o( the last roE that Eas inserted into a ta#le
prepare 2 prepares an OL statement (or eFecution
/uery 2 issues an OL statement and returns a result set
/uote 2 returns a /uoted version o( a string (or use in OL statements
rollBac" 2 roll #ac" a transaction
setAttri#ute 2 sets a data#ase connection attri#ute
PKJ,tatement
Represents a prepared statement andA a(ter the statement is eFecutedA an associated result set;
M%todos
#ind5olumn 2 #inds a P&P varia#le to an output column in a result set
#indParam 2 #inds a P&P varia#le to a parameter in the prepared statement
column5ount 2 returns the num#er o( columns in the result set
error5ode 2 retrieves an error codeA i( anyA (rom the statement
error.n(o 2 retrieves an array o( error in(ormationA i( anyA (rom the statement
eFecute 2 eFecutes a prepared statement
(etch 2 (etches a roE (rom a result set
(etchAll 2 (etches an array containing all o( the roEs (rom a result set
(etchingle 2 returns the data (rom the (irst column in a result set
getAttri#ute 2 retrieves a PDOtatement attri#ute
get5olumnMeta 2 retrieves metadata (or a column in the result set
roE5ount 2 returns the num#er o( roEs that Eere a((ected #y the eFecution o( an OL
statement
setAttri#ute 2 sets a PDOtatement attri#ute
setFetchMode 2 sets the (etch mode (or a PDOtatement
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
PDO_PARAM_NULL >integer?
Represents the OL N@LL data type;
PDO_PARAM_INT >integer?
Represents the OL .N,+G+R data type;
PDO_PARAM_STR >integer?
Represents the OL 5&ARA $AR5&ARA or other string data type;
PDO_PARAM_LO( >integer?
Represents the OL large o#'ect data type;
PDO_PARAM_STMT >integer?
PDO_FETCH_LA/Y >integer?
peci(ies that the (etch method shall return each roE as an o#'ect Eith varia#le names that
correspond to the column names returned in the result set; PDOZF+,5&ZLAI% creates the
o#'ect varia#le names as they are accessed;
PDO_FETCH_ASSOC >integer?
peci(ies that the (etch method shall return each roE as an array indeFed #y column name as
returned in the corresponding result set;
PDO_FETCH_NUM >integer?
peci(ies that the (etch method shall return each roE as an array indeFed #y column num#er
as returned in the corresponding result setA starting at column 3;
PDO_FETCH_(OTH >integer?
peci(ies that the (etch method shall return each roE as an array indeFed #y #oth column
name and num#er as returned in the corresponding result setA starting at column 3;
PDO_FETCH_O(' >integer?
peci(ies that the (etch method shall return each roE as an o#'ect Eith property names that
correspond to the column names returned in the result set;
PDO_FETCH_(OUND >integer?
peci(ies that the (etch method shall return ,R@+ and assign the values o( the columns in the
result set to the P&P varia#les to Ehich they Eere #ound Eith the
PKJ,tatement--bindParam./ or PKJ,tatement--bindColumn./ methods;
PDO_FETCH_COLUMN >integer?
peci(ies that the (etch method shall return only a single re/uested column (rom the neFt roE
in the result set;
PDO_FETCH_CLASS >integer?
peci(ies that the (etch method shall return a neE instance o( the re/uested classA mapping the
columns to named properties in the class;
PDO_FETCH_INTO >integer?
peci(ies that the (etch method shall update an eFisting instance o( the re/uested classA
mapping the columns to named properties in the class;
PDO_ATTR_AUTOCOMMIT >integer?
PDO_ATTR_PREFETCH >integer?
PDO_ATTR_TIMEOUT >integer?
PDO_ATTR_ERRMODE >integer?
PDO_ATTR_SER$ER_$ERSION >integer?
PDO_ATTR_CLIENT_$ERSION >integer?
PDO_ATTR_SER$ER_INFO >integer?
PDO_ATTR_CONNECTION_STATUS >integer?
PDO_ATTR_CASE >integer?
Force column names to a speci(ic case speci(ied #y the PDOZ5A+ZV constants;
PDO_ATTR_CURSOR_NAME >integer?
PDO_ATTR_CURSOR >integer?
PDO_ATTR_ORACLE_NULLS >integer?
PDO_ATTR_PERSISTENT >integer?
PDO_ERRMODE_SILENT >integer?
PDO_ERRMODE_"ARNIN# >integer?
PDO_ERRMODE_E%CEPTION >integer?
PDO_CASE_NATURAL >integer?
Leave column names as returned #y the data#ase driver;
PDO_CASE_LO"ER >integer?
Force column names to loEer case;
PDO_CASE_UPPER >integer?
Force column names to upper case;
PDO_FETCH_ORI_NE%T >integer?
Fetch the neFt roE in the result set; $alid only (or scrolla#le cursors;
PDO_FETCH_ORI_PRIOR >integer?
Fetch the previous roE in the result set; $alid only (or scrolla#le cursors;
PDO_FETCH_ORI_FIRST >integer?
Fetch the (irst roE in the result set; $alid only (or scrolla#le cursors;
PDO_FETCH_ORI_LAST >integer?
Fetch the last roE in the result set; $alid only (or scrolla#le cursors;
PDO_FETCH_ORI_A(S >integer?
Fetch the re/uested roE #y roE num#er (rom the result set; $alid only (or scrolla#le cursors;
PDO_FETCH_ORI_REL >integer?
Fetch the re/uested roE #y relative position (rom the current position o( the cursor in the
result set; $alid only (or scrolla#le cursors;
PDO_CURSOR_F"DONLY >integer?
5reate a PDOtatement o#'ect Eith a (orEard2only cursor; ,his may improve the per(ormance
o( your application #ut restricts your PDOtatement o#'ect to (etching one roE at a time (rom
the result set in a (orEard direction;
PDO_CURSOR_SCROLL >integer?
5reate a PDOtatement o#'ect Eith a scrolla#le cursor; Pass the PDOZF+,5&ZOR.ZV
constants to control the roEs (etched (rom the result set;
PDO_ERR_CANT_MAP >integer?
PDO_ERR_SYNTA% >integer?
PDO_ERR_CONSTRAINT >integer?
PDO_ERR_NOT_FOUND >integer?
PDO_ERR_ALREADY_E%ISTS >integer?
PDO_ERR_NOT_IMPLEMENTED >integer?
PDO_ERR_MISMATCH >integer?
PDO_ERR_TRUNCATED >integer?
PDO_ERR_DISCONNECTED >integer?
PDO_ERR_NO_PERM >integer?
PDO_ERR_NONE >string?
5orresponds to OL,A,+ H33333HA meaning that the OL statement Eas success(ully issued
Eith no errors or Earnings;
Tabla de contenidos
PDOCC#egin,ransaction 22 .nitiates a transaction
PDOCCcommit 22 5ommits a transaction
PDOCCZZconstruct 22 5reates a PDO instance representing a connection to a data#ase
PDOCCerror5ode 22 Fetch the OL,A,+ associated Eith the last operation on the data#ase handle
PDOCCerror.n(o 22 Fetch eFtended error in(ormation associated Eith the last operation on the
data#ase handle
PDOCCeFec 22 +Fecute an OL statement and return the num#er o( a((ected roEs
PDOCCgetAttri#ute 22 Retrieve a data#ase connection attri#ute
PDOCClast.nsert.d 22 Returns the .D o( the last inserted roE
PDOCCprepare 22 Prepares a statement (or eFecution and returns a statement o#'ect
PDOCC/uery 22 +Fecutes an OL statementA returning a result set as a PDOtatement o#'ect
PDOCC/uote 22 Ouotes a string (or use in a /uery;
PDOCCrollBac" 22 Rolls #ac" a transaction
PDOCCsetAttri#ute 22 et an attri#ute
PDOtatementCC#ind5olumn 22 Bind a column to a P&P varia#le
PDOtatementCC#indParam 22 Binds a parameter to a the speci(ied varia#le name
PDOtatementCCcolumn5ount 22 Returns the num#er o( columns in the result set
PDOtatementCCerror5ode 22 Fetch the OL,A,+ associated Eith the last operation on the
statement handle
PDOtatementCCerror.n(o 22 Fetch eFtended error in(ormation associated Eith the last operation on
the statement handle
PDOtatementCCeFecute 22 +Fecutes a prepared statement
PDOtatementCC(etch 22 Fetches the neFt roE (rom a result set
PDOtatementCC(etchAll 22 Returns an array containing all o( the result set roEs
PDOtatementCC(etchingle 22 Returns the (irst column in the neFt roE o( a result set
PDOtatementCCgetAttri#ute 22 Retrieve a statement attri#ute
PDOtatementCCget5olumnMeta 22 Returns meta data (or a num#ered column
PDOtatementCCroE5ount 22 Returns the num#er o( roEs a((ected #y the last OL statement
PDOtatementCCsetAttri#ute 22 et a statement attri#ute
PDOtatementCCsetFetchMode 22 et the de(ault (etch mode (or this statement
PKJ--beginTransaction
>no version in(ormationA might #e only in 5$?
PDOCC#egin,ransaction 22 .nitiates a transaction
Kescripci"n
#ool PKJ--beginTransaction > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
,urns o(( autocommit mode; 5all PKJ--commit./ or PKJ--rollbacB./ to end the transaction and
return to autocommit mode;
E'emplos
E'emplo !. Moll bacB a transaction
<?php
/W ZeEin a transaction, turninE o## autocommit W/
$dbhF>beEin*ransaction39;
/W RhanEe the database schema and data W/
$sth > $dbhF>exec3"L'? *,ZOE #ruit"9;
$sth > $dbhF>exec3"+L,*E dessert
&E* name > MhamburEerM"9;
/W 'ecoEni0e mistaIe and roll bacI chanEes W/
$dbhF>rollZacI39;
/W Latabase connection is no8 bacI in autocommit mode W/
?>
Cer tambi%n
PKJ--commit./
PKJ--roll1acB./
PKJ--commit
>no version in(ormationA might #e only in 5$?
PDOCCcommit 22 5ommits a transaction
Kescripci"n
#ool PKJ--commit > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
5ommits a transactionA returning the data#ase connection to autocommit mode until the neFt call to
PKJ--beginTransaction./ starts a neE transaction;
E'emplos
E'emplo !. Commit a transaction
<?php
/W ZeEin a transaction, turninE o## autocommit W/
$dbhF>beEin*ransaction39;
/W RhanEe the database schema W/
$sth > $dbhF>exec3"L'? *,ZOE #ruit"9;
/W Rommit the chanEes W/
$dbhF>commit39;
/W Latabase connection is no8 bacI in autocommit mode W/
?>
Cer tambi%n
PKJ--beginTransaction./
PKJ--roll1acB./
PKJ-->>construct
>no version in(ormationA might #e only in 5$?
PDOCCZZconstruct 22 5reates a PDO instance representing a connection to a data#ase
Kescripci"n
PDO PKJ-->>construct > string dsn PA string username PA string passEord PA array
driverZoptionsQQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
5reates a PDO instance to represent a connection to the re/uested data#ase;
:ista de parmetros
dsn
,he Data ource NameA or DNA contains the in(ormation re/uired to connect to the data#ase;
.n generalA a DN consists o( the PDO driver nameA (olloEed #y a colonA (olloEed #y the
PDO driver2speci(ic connection syntaF; +Famples o( each driver are given #eloEC
PDO_D(LI(
,he DN pre(iF is either sybase@ or mssQl@ depending on Ehich li#raries it Eas
lin"ed against during compilation;
sybase@host>localhost; dbname>testdb
mssQl@host>localhost; dbname>testdb
PDO_FIRE(IRD
#irebird@+ser>john;ass8ord>mypass;Latabase>L,*,Z,&E.-LE;La
ta&ource>localhost;ort><252
PDO_MYS.L
mysQl@host>localhost;dbname>testdb
PDO_OCI
,o connect via tnsnames.oraA useC
oci@mydb
.( using instantclientA useC
oci@dbname>//localhost@65C6/testdb
PDO_OD(C
odbc@L&.>&,"OE;+4L>john;7L>mypass
DN^AMPL+ re(ers to the AMPL+ data source con(igured in the ODB5 driver
manager;
PDO_P#S.L
pEsQl@host>localhost port>51<C dbname>testdb user>john
pass8ord>mypass
NoteA #y passing user and pass7or# in the DNA the username and pass7or# parameters
#ecome optional; .( speci(iedA they are glued to the end o( the connection string;
PDO_S.LITE
sQlite@/path/to/database
,o create a data#ase in memoryA useC
sQlite@@memory@
,he #sn parameter supports three di((erent methods o( speci(ying the arguments re/uired to
create a data#ase connectionC
Driver invocation
#sn contains the (ull DN;
@R. invocation
#sn consists o( uri@ (olloEed #y a @R. that de(ines the location o( a (ile containing the
DN string; ,he @R. can speci(y a local (ile or a remote @RL;
uri@#ile@///path/to/dsn#ile
Aliasing
#sn consists o( a name name that maps to p#o.#sn.name in php.ini de(ining the DN
string;
Nota- ,he alias must #e de(ined in php.iniA and not .htaccess or
httpd.con#
username
,he user name (or the DN string; ,his parameter is optional (or some PDO drivers;
passEord
,he passEord (or the DN string; ,his parameter is optional (or some PDO drivers;
driverZoptions
A "ey^_value array o( driver2speci(ic connection options;
Calores retornados
Returns a PDO o#'ect on success;
E+ceptions
PKJ--construct./ throEs a PDO+Fception i( the attempt to connect to the re/uested data#ase (ails;
E'emplos
E'emplo !. Create a PKJ instance 5ia dri5er in5ocation
<?php
// Ronnect to an ?LZR database usinE dri=er in=ocation
$dsn > MmysQl@dbname>testdb;host>6CH.2.2.6M;
$user > MdbuserM;
$pass8ord > MdbpassM;
try :
$dbh > ne8 L?3$dsn, $user, $pass8ord9;
; catch 3L?Exception $e9 :
echo MRonnection #ailed@ M . $eF>Eet"essaEe39;
;
?>
E'emplo *. Create a PKJ instance 5ia )MI in5ocation
,he (olloEing eFample assumes that the (ile /usr/local/dbconnect eFists Eith (ile
permissions that ena#le P&P to read the (ile; ,he (ile contains the PDO DN to connect to a DB0
data#ase through the PDOZODB5 driverC
odbc@L&.>&,"OE;+4L>john;7L>mypass
,he P&P script can then create a data#ase connection #y simply passing the ur6: parameter and
pointing to the (ile @R.C
<?php
// Ronnect to an ?LZR database usinE dri=er in=ocation
$dsn > Muri@#ile@///usr/local/dbconnectM;
$user > MM;
$pass8ord > MM;
try :
$dbh > ne8 L?3$dsn, $user, $pass8ord9;
; catch 3L?Exception $e9 :
echo MRonnection #ailed@ M . $eF>Eet"essaEe39;
;
?>
E'emplo 7. Create a PKJ instance using an alias
,he (olloEing eFample assumes that php.ini contains the (olloEing entry to ena#le a connection
to a MyOL data#ase using only the alias m?#1C
)L?/
pdo.dsn.mydb>"mysQl@dbname>testdb;host>localhost"
<?php
// Ronnect to an ?LZR database usinE an alias
$dsn > MmydbM;
$user > MM;
$pass8ord > MM;
try :
$dbh > ne8 L?3$dsn, $user, $pass8ord9;
;catch 3L?Exception $e9 :
echo MRonnection #ailed@ M . $eF>Eet"essaEe39;
;
?>
PKJ--errorCode
>no version in(ormationA might #e only in 5$?
PDOCCerror5ode 22 Fetch the OL,A,+ associated Eith the last operation on the data#ase handle
Kescripci"n
int PKJ--errorCode > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Calores retornados
Returns a OL,A,+A a (ive2character alphanumeric identi(ier de(ined in the AN. OL standard;
PKJ--errorCode./ only retrieves error codes (or operations per(ormed directly on the data#ase
handle; .( you create a PDOtatement o#'ect through PKJ--prepare./ or PKJ--?uery./ and invo"e
an error on the statement handleA PKJ--errorCode./ Eill return +DO_ERR_NONE; %ou must call
PKJ,tatement--errorCode./ to return the error code (or an operation per(ormed on a particular
statement handle;
E'emplos
E'emplo !. Metrie5ing a ,$:,TATE code
<?php
/W ro=oIe an error FF the Z?.E& table does not exist W/
$dbhF>exec3"4.&E'* 4.*? bones3sIull9 (,O+E& 3MlucyM9"9;
echo "VnL?@@errorRode39@ ";
print $dbhF>errorRode39;
?>
+l resultado del e'emplo seriaC
L?@@errorRode39@ 1C&2C
Cer tambi%n
PKJ--errorInfo./
PKJ,tatement--errorCode./
PKJ,tatement--errorInfo./
PKJ--errorInfo
>no version in(ormationA might #e only in 5$?
PDOCCerror.n(o 22 Fetch eFtended error in(ormation associated Eith the last operation on the
data#ase handle
Kescripci"n
array PKJ--errorInfo > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Calores retornados
PKJ--errorInfo./ returns an array o( error in(ormation a#out the last operation per(ormed #y this
data#ase handle; ,he array consists o( the (olloEing (ieldsC
Element Information
3
OL,A,+ error code >a (ive2character alphanumeric identi(ier de(ined in the AN.
OL standard?;
1 Driver2speci(ic error code;
0 Driver2speci(ic error message;
PKJ--errorInfo./ only retrieves error in(ormation (or operations per(ormed directly on the
data#ase handle; .( you create a PDOtatement o#'ect through PKJ--prepare./ or PKJ--?uery./
and invo"e an error on the statement handleA PKJ--errorInfo./ Eill insert an error code o(
+DO_ERR_NONE into the (irst element o( the returned array; %ou must call
PKJ,tatement--errorInfo./ to return the error in(ormation (or an operation per(ormed on a
particular statement handle;
E'emplos
E'emplo !. Kisplaying errorInfo./ fields for a PKJ>JK1C connection to a K1* database
<?php
/W ro=oIe an error FF the Z?.E& table does not exist W/
$err > $dbhF>prepare3M&EOER* sIull S'?" bonesM9;
$errF>execute39;
echo "VnL?@@error4n#o39@Vn";
print%r3$errF>error4n#o399;
?>
+l resultado del e'emplo seriaC
L?@@error4n#o39@
,rray
3
)2/ >> 1C&2C
)6/ >> FC21
)C/ >> )4Z"/)RO4 Lri=er/)LZC/O4.+X/ &NO2C21. "L,.4EO&.Z?.E&" is an unde#ined name. &NO&*,*E>1CH21
9
Cer tambi%n
PKJ--errorCode./
PKJ,tatement--errorCode./
PKJ,tatement--errorInfo./
PKJ--e+ec
>no version in(ormationA might #e only in 5$?
PDOCCeFec 22 +Fecute an OL statement and return the num#er o( a((ected roEs
Kescripci"n
long PKJ--e+ec > string statement ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
PKJ--e+ec./ prepares and eFecutes an OL statement in a single (unction callA returning the
num#er o( roEs a((ected #y the statement;
PKJ--e+ec./ does not return results (rom a +L+5, statement; For a +L+5, statement that you
only need to issue once during your programA consider issuing PKJ--?uery./; For a +L+5,
statement that you need to issue multiple timesA prepare a PDOtatement o#'ect Eith
PKJ--prepare./ and issue the statement Eith PKJ,tatement--e+ecute./;
:ista de parmetros
statement
,he OL statement to prepare and eFecute;
Calores retornados
PKJ--e+ec./ returns the num#er o( roEs that Eere modi(ied or deleted #y the OL statement you
issued; .( no roEs Eere a((ectedA PKJ--e+ec./ returns 0;
E'emplos
E'emplo !. Issuing a KE:ETE statement
5ount the num#er o( roEs deleted #y a D+L+,+ statement Eith no L&+R+ clause;
<?php
$dbh > ne8 L?3Modbc@sampleM, MdbCinst6M, MibmdbCM9;
/W Lelete all ro8s #rom the S'+4* table W/
$count > $dbhF>exec3"LEOE*E S'?" #ruit 7HE'E colour > MredM"9;
/W 'eturn number o# ro8s that 8ere deleted W/
print3"'eturn number o# ro8s that 8ere deleted@Vn"9;
print3"Leleted $count ro8s.Vn"9;
?>
+l resultado del e'emplo seriaC
'eturn number o# ro8s that 8ere deleted@
Leleted 6 ro8s.
Cer tambi%n
PKJ--prepare./
PKJ--?uery./
PKJ,tatement--e+ecute./
PKJ--getAttribute
>no version in(ormationA might #e only in 5$?
PDOCCgetAttri#ute 22 Retrieve a data#ase connection attri#ute
Kescripci"n
miFed PKJ--getAttribute > long attri#ute ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
,his (unction returns the value o( a data#ase connection attri#ute; ,o retrieve PDOtatement
attri#utesA re(er to PKJ,tatement--getAttribute./;
Note that some data#ases may not support all o( the data#ase connection attri#utes;
:ista de parmetros
attr61ute
One o( the +DO_,TTR_/ constants; ,he constants that apply to data#ase connections are as
(olloEsC
+DO_,TTR_,UTOCOMM0T
+DO_,TTR_C,SE
+DO_,TTR_C40ENT_(ERS0ON
+DO_,TTR_CONNECT0ON_ST,TUS
+DO_,TTR_ERRMODE
+DO_,TTR_OR,C4E_NU44S
+DO_,TTR_+ERS0STENT
+DO_,TTR_+RE3ETC!
+DO_,TTR_SER(ER_0N3O
+DO_,TTR_SER(ER_(ERS0ON
+DO_,TTR_T0MEOUT
Calores retornados
A success(ul call returns the value o( the re/uested PDO attri#ute; An unsuccess(ul call returns null;
E'emplos
E'emplo !. Metrie5ing database connection attributes
<?php
$conn > ne8 L?3Modbc@sampleM, MdbCinst6M, MibmdbCM9;
print "VnL?%,**'%,+*?R?""4*@ ";
print $connF>Eet,ttribute3L?%,**'%,+*?R?""4*9;
print "VnL?%,**'%E''"?LE@ ";
print $connF>Eet,ttribute3L?%,**'%E''"?LE9;
print "VnL?%,**'%R,&E@ ";
print $connF>Eet,ttribute3L?%,**'%R,&E9;
print "VnL?%,**'%RO4E.*%(E'&4?.@ ";
print $connF>Eet,ttribute3L?%,**'%RO4E.*%(E'&4?.9;
print "VnL?%,**'%R?..ER*4?.%&*,*+&@ ";
print $connF>Eet,ttribute3L?%,**'%R?..ER*4?.%&*,*+&9;
print "VnL?%,**'%?',ROE%.+OO&@ ";
print $connF>Eet,ttribute3L?%,**'%?',ROE%.+OO&9;
print "VnL?%,**'%E'&4&*E.*@ ";
print $connF>Eet,ttribute3L?%,**'%E'&4&*E.*9;
print "VnL?%,**'%'ESE*RH@ ";
print $connF>Eet,ttribute3L?%,**'%'ESE*RH9;
print "VnL?%,**'%&E'(E'%4.S?@ ";
print $connF>Eet,ttribute3L?%,**'%&E'(E'%4.S?9;
print "VnL?%,**'%&E'(E'%(E'&4?.@ ";
print $connF>Eet,ttribute3L?%,**'%&E'(E'%(E'&4?.9;
print "VnL?%,**'%*4"E?+*@ ";
print $connF>Eet,ttribute3L?%,**'%*4"E?+*9;
?>
Cer tambi%n
PKJ--setAttribute./
PKJ,tatement--getAttribute./
PKJ,tatement--setAttribute./
PKJ--lastInsertId
>no version in(ormationA might #e only in 5$?
PDOCClast.nsert.d 22 Returns the .D o( the last inserted roE
Kescription
int PKJ--lastInsertId > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Nota- Due to di((erences #etEeen data#ase server implementationsA this method may
not alEays return a meaning(ul result;
Calores retornados
Returns an integer representing the roE .D o( the last roE that Eas inserted into the data#ase; .( the
PDO driver does not support this capa#ilityA PKJ--lastInsertIK./ issues a PDOLarning eFception;
PKJ--prepare
>no version in(ormationA might #e only in 5$?
PDOCCprepare 22 Prepares a statement (or eFecution and returns a statement o#'ect
Kescripci"n
PDOtatement PKJ--prepare > string statement PA array driverZoptionsQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Prepares an OL statement to #e eFecuted #y the PKJ,tatement--e+ecute./ method; ,he OL
statement can contain zero or more named >Cname? or /uestion mar" >N? parameter mar"ers (or
Ehich real values Eill #e su#stituted Ehen the statement is eFecuted;
5alling PKJ--prepare./ and PKJ,tatement--e+ecute./ (or statements that Eill #e issued multiple
times Eith di((erent parameter values optimizes the per(ormance o( your application and helps
prevent OL in'ection attac"s;
:ista de parmetros
statement
,his must #e a valid OL statement (or the target data#ase server;
#r6er_opt6ons
,his array holds one or more "ey^_value pairs to set attri#ute values (or the PDOtatement
o#'ect that this method returns; %ou Eould most commonly use this to set the
+DO_,TTR_CURSOR value to +DO_CURSOR_SCRO44 to re/uest a scrolla#le cursor;
Calores retornados
.( the data#ase server success(ully prepares the statementA PKJ--prepare./ returns a PDOtatement
o#'ect;
E'emplos
E'emplo !. Prepare an ,$: statement 3ith named parameters
<?php
/W Execute a prepared statement by passinE an array o# =alues W/
$sQl > M&EOER* name, colour, calories
S'?" #ruit
7HE'E calories < @calories ,.L colour > @colourM
$sth > $dbhF>prepare3$sQl, array3L?%,**'%R+'&?', L?%R+'&?'%S7L?.OP99;
$sthF>execute3array3M@caloriesM >> 652, M@colourM >> MredM99;
$red > $sthF>#etch,ll39;
$sthF>execute3array3M@caloriesM >> 6H5, M@colourM >> Myello8M99;
$yello8 > $sthF>#etch,ll39;
?>
E'emplo *. Prepare an ,$: statement 3ith ?uestion marB parameters
<?php
/W Execute a prepared statement by passinE an array o# =alues W/
$sth > $dbhF>prepare3M&EOER* name, colour, calories
S'?" #ruit
7HE'E calories < ? ,.L colour > ?M9;
$sthF>execute3array3652, MredM99;
$red > $sthF>#etch,ll39;
$sthF>execute3array36H5, Myello8M99;
$yello8 > $sthF>#etch,ll39;
?>
Cer tambi%n
PKJ--e+ec./
PKJ--?uery./
PKJ,tatement--e+ecute./
PKJ--?uery
>no version in(ormationA might #e only in 5$?
PDOCC/uery 22 +Fecutes an OL statementA returning a result set as a PDOtatement o#'ect
Kescripci"n
o#'ect PKJ--?uery > string statement ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
PKJ--?uery./ prepares and eFecutes an OL statement in a single (unction callA returning the result
set >i( any? returned #y the statement as a PDOtatement o#'ect;
For a +L+5, statement that you need to issue multiple timesA prepare a PDOtatement o#'ect Eith
PKJ--prepare./ and issue the statement Eith PKJ,tatement--e+ecute./;
:ista de parmetros
statement
,he OL statement to prepare and eFecute;
Calores retornados
PKJ--?uery./ returns a PDOtatement o#'ect;
E'emplos
E'emplo !. Kemonstrate PKJ--?uery
A nice (eature o( PKJ--?uery./ is that it ena#les you to iterate over the roEset returned #y a
success(ully eFecuted +L+5, statement;
<?php
#unction EetSruit3$conn9 :
$sQl > M&EOER* name, colour, calories S'?" #ruit ?'LE' ZP nameM;
#oreach 3$connF>Query3$sQl9 as $ro89 :
print $ro8)M.,"EM/ . "Vt";
print $ro8)MR?O?+'M/ . "Vt";
print $ro8)MR,O?'4E&M/ . "Vn";
;
;
?>
+l resultado del e'emplo seriaC
apple red 652
banana yello8 C52
Ii8i bro8n H5
lemon yello8 C5
oranEe oranEe <22
pear Ereen 652
8atermelon pinI K2
Cer tambi%n
PKJ--e+ec./
PKJ--prepare./
PKJ,tatement--e+ecute./
PKJ--?uote
>no version in(ormationA might #e only in 5$?
PDOCC/uote 22 Ouotes a string (or use in a /uery;
Kescripci"n
string PKJ--?uote > string string PA int parameterZtypeQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
PKJ--?uote./ places /uotes around the input string and escapes and single /uotes Eithin the input
string; Ouoting input strings has #een a common means o( attempting to prevent OL in'ection
attac"sX hoEeverA an even sa(er approach is to use prepared statements Eith named parameters or
placeholders (or the input values;
Not all PDO drivers implement this method;
:ista de parmetros
str6nE
,he string to #e /uoted;
parameter_t?pe
Provides a data type hint (or drivers that have alternate /uoting styles; ,he de(ault value is
PDOZPARAMZ,R;
Calores retornados
Returns a /uoted string that is theoretically sa(e to pass into an OL statement;
E'emplos
E'emplo !. $uoting a normal string
<?php
$conn > ne8 L?3MsQlite@/home/lynn/music.sQl<M9;
/W &imple strinE W/
$strinE > M.iceM;
print "+nQuoted strinE@ $strinEVn";
print "Nuoted strinE@ " . $connF>Quote3$strinE9 . "Vn";
?>
+l resultado del e'emplo seriaC
+nQuoted strinE@ .ice
Nuoted strinE@ M.iceM
E'emplo *. $uoting a dangerous string
<?php
$conn > ne8 L?3MsQlite@/home/lynn/music.sQl<M9;
/W LanEerous strinE W/
$strinE > M.auEhty VM strinEM;
print "+nQuoted strinE@ $strinEVn";
print "Nuoted strinE@" . $connF>Quote3$strinE9 . "Vn";
?>
+l resultado del e'emplo seriaC
+nQuoted strinE@ .auEhty M strinE
Nuoted strinE@ M.auEhty MM strinEM
E'emplo 7. $uoting a comple+ string
<?php
$conn > ne8 L?3MsQlite@/home/lynn/music.sQl<M9;
/W Romplex strinE W/
$strinE > "RoMmplMMex V"stMV"rinE";
print "+nQuoted strinE@ $strinEVn";
print "Nuoted strinE@ " . $connF>Quote3$strinE9 . "Vn";
?>
+l resultado del e'emplo seriaC
+nQuoted strinE@ RoMmplMMex "stM"rinE
Nuoted strinE@ MRoMMmplMMMMex "stMM"rinEM
Cer tambi%n
PKJ--prepare./
PKJ,tatement--e+ecute./
PKJ--roll1acB
>no version in(ormationA might #e only in 5$?
PDOCCrollBac" 22 Rolls #ac" a transaction
Kescripci"n
#ool PKJ--roll1acB > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Lhen issued against data#ases that support transactionsA PKJ--roll1acB./ rolls #ac" any Eor" in
progress and and returns the connection state to autocommit mode;
%ou must issue PKJ--beginTransaction./ to set the connection state to manual commit mode
#e(ore issuing PKJ--roll1acB./ has any e((ect;
E'emplos
E'emplo !. Moll bacB a transaction
<?php
/W ZeEin a transaction, turninE o## autocommit W/
$dbhF>beEin*ransaction39;
/W RhanEe the database schema and data W/
$sth > $dbhF>exec3"L'? *,ZOE #ruit"9;
$sth > $dbhF>exec3"+L,*E dessert
&E* name > MhamburEerM"9;
/W 'ecoEni0e mistaIe and roll bacI chanEes W/
$dbhF>rollZacI39;
/W Latabase connection is no8 bacI in autocommit mode W/
?>
Cer tambi%n
PKJ--beginTransaction./
PKJ--commit./
PKJ--setAttribute
>no version in(ormationA might #e only in 5$?
PDOCCsetAttri#ute 22 et an attri#ute
Kescription
#ool PKJ--setAttribute > int attri#uteA miFed value ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ets a data#ase connection attri#ute; ,he generic PDO connection attri#utes includeC
+DO_,TTR_C,SEC Force column names to a speci(ic case;
+DO_C,SE_4OIERC Force column names to loEer case;
+DO_C,SE_N,TUR,4C Leave column names as returned #y the data#ase driver;
+DO_C,SE_U++ERC Force column names to upper case;
PDO drivers may de(ine (urther driver2speci(ic attri#utes;
PKJ,tatement--bindColumn
>no version in(ormationA might #e only in 5$?
PDOtatementCC#ind5olumn 22 Bind a column to a P&P varia#le
Kescripci"n
#ool PKJ,tatement--bindColumn > miFed columnA miFed iparam PA int type PA int maFlen PA
miFed driverZoptionsQQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
On each roE (etch param Eill contain the value o( the corresponding column; column is the 12#ased
o((set o( the columnA or the column name; For maFimum porta#ilityA do not call this (unction #e(ore
calling PKJ,tatement--e+ecute./;
:ista de parmetros
column
Num#er o( the column >12indeFed? in the result set;
param
Name o( the P&P varia#le to Ehich the column Eill #e #ound;
t?pe
Data type o( the parameterA speci(ied #y the PDOZPARAMZV constants;
ma8len
MaFimum length o( the parameter;
#r6er_opt6ons
E'emplos
E'emplo !. 1inding result set output to PHP 5ariables
Binding columns in the result set to P&P varia#les is an e((ective Eay to ma"e the data contained in
each roE immediately availa#le to your application; ,he (olloEing eFample demonstrates hoE PDO
alloEs you to #ind and retrieve columns Eith a variety o( options and Eith intelligent de(aults;
<?php
#unction readLata3$dbh9 :
$sQl > M&EOER* name, colour, calories S'?" #ruitM;
try :
$stmt > $dbhF>prepare3$sQl9;
$stmtF>execute39;
/W Zind by column number 8ith an explicit data type & lenEth W/
$stmtF>bindRolumn36, $name, L?%,',"%&*', G19;
/W Zind by column number 8ith de#ault data type & lenEth W/
$stmtF>bindRolumn3C, $colour9;
/W Zind by column name 8ith de#ault data type & lenEth W/
$stmtF>bindRolumn3MR,O?'4E&M, $cals9;
8hile 3$ro8 > $stmtF>#etch3L?%SE*RH%Z?+.L99 :
$data > $name . "Vt" . $colour . "Vt" . $cals . "Vn";
print $data;
;
;
catch 3L?Exception $e9 :
print $eF>Eet"essaEe39;
;
;
readLata3$dbh9;
?>
+l resultado del e'emplo seriaC
apple red 652
banana yello8 6H5
Ii8i Ereen H5
oranEe oranEe 652
manEo red C22
stra8berry red C5
Cer tambi%n
PKJ,tatement--e+ecute./
PKJ,tatement--fetch./
PKJ,tatement--fetchAll./
PKJ,tatement--fetch,ingle./
PKJ,tatement--bindParam
>no version in(ormationA might #e only in 5$?
PDOtatementCC#indParam 22 Binds a parameter to a the speci(ied varia#le name
Kescription
#ool PKJ,tatement--bindParam > miFed parameterZnameA miFed ivaria#le PA int dataZtype PA int
lengthQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Binds an OL statement parameter to the speci(ied varia#le name; ,he OL statement parameter
can either #e a named placeholder or a /uestion mar" placeholder;
Output parameters Eill set the value o( the #ound P&P varia#le to the value returned #y the data#ase
Ehen the OL statement is eFecuted; ,his ena#les you to call stored procedures Eith output or
inputDoutput parametersA (or eFampleA (or data#ases that support such (eatures;
For input2only varia#lesA you can pass an array o( input values to PKJ,tatement--e+ecute./
instead;
E'emplo !. E+ecute a prepared statement 3ith named placeholders
<?php
/W Execute a prepared statement by bindinE H =ariables W/
$calories > 652;
$colour > MredM;
$sth > $dbhF>prepare3M&EOER* name, colour, calories
S'?" #ruit
7HE'E calories < @calories ,.L colour > @colourM9;
$sthF>bindaram3M@caloriesM, $calories, L?%,',"%4.*9;
$sthF>bindaram3M@colourM, $colour, L?%,',"%&*', 6C9;
$sthF>execute39;
?>
E'emplo *. E+ecute a prepared statement 3ith ?uestion marB placeholders
<?php
/W Execute a prepared statement by bindinE H =ariables W/
$calories > 652;
$colour > MredM;
$sth > $dbhF>prepare3M&EOER* name, colour, calories
S'?" #ruit
7HE'E calories < ? ,.L colour > ?M9;
$sthF>bindaram36, $calories, L?%,',"%4.*9;
$sthF>bindaram3C, $colour, L?%,',"%&*', 6C9;
$sthF>execute39;
?>
PKJ,tatement--columnCount
>no version in(ormationA might #e only in 5$?
PDOtatementCCcolumn5ount 22 Returns the num#er o( columns in the result set
Kescripci"n
int PKJ,tatement--columnCount > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
@se PKJ,tatement--columnCount./ to return the num#er o( columns in the result set represented
#y the PDOtatement o#'ect;
.( the PDOtatement o#'ect Eas returned (rom PKJ--?uery./A the column count is immediately
availa#le;
.( the PDOtatement o#'ect Eas returned (rom PKJ--prepare./A an accurate column count Eill not
#e availa#le until you invo"e PKJ,tatement--e+ecute./;
Calores retornados
Returns the num#er o( columns in the result set represented #y the PDOtatement o#'ect; .( there is
no result setA PKJ,tatement--columnCount./ returns 0;
E'emplos
E'emplo !. Counting columns
,his eFample demonstrates hoE PKJ,tatement--columnCount./ operates Eith and Eithout a
result set;
<?php
$dbh > ne8 L?3Modbc@sampleM, MdbCinst6M, MibmdbCM9;
$sth > $dbhF>prepare3"&EOER* name, colour S'?" #ruit"9;
/W Rount the number o# columns in the 3nonFexistent9 result set W/
$colcount > $sthF>columnRount39;
print3"Ze#ore execute39, result set has $colcount columns 3should be 29Vn"9;
$sthF>execute39;
/W Rount the number o# columns in the result set W/
$colcount > $sthF>columnRount39;
print3",#ter execute39, result set has $colcount columns 3should be C9Vn"9;
?>
+l resultado del e'emplo seriaC
Ze#ore execute39, result set has 2 columns 3should be 29
,#ter execute39, result set has C columns 3should be C9
Cer tambi%n
PKJ--prepare./
PKJ,tatement--e+ecute./
PKJ,tatement--ro3Count./
PKJ,tatement--errorCode
>no version in(ormationA might #e only in 5$?
PDOtatementCCerror5ode 22 Fetch the OL,A,+ associated Eith the last operation on the
statement handle
Kescripci"n
int PKJ,tatement--errorCode > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Calores retornados
Returns a OL,A,+A a (ive2character alphanumeric identi(ier de(ined in the AN. OL standard;
PKJ,tatement--errorCode./ only retrieves error codes (or operations per(ormed Eith
PDOtatement o#'ects;
E'emplos
E'emplo !. Metrie5ing a ,$:,TATE code
<?php
/W ro=oIe an error FF the Z?.E& table does not exist W/
$err > $dbhF>prepare3M&EOER* sIull S'?" bonesM9;
$errF>execute39;
echo "VnL?&tatement@@errorRode39@ ";
print $errF>errorRode39;
?>
+l resultado del e'emplo seriaC
L?&tatement@@errorRode39@ 1C&2C
Cer tambi%n
PKJ--errorCode./
PKJ--errorInfo./
PKJ,tatement--errorInfo./
PKJ,tatement--errorInfo
>no version in(ormationA might #e only in 5$?
PDOtatementCCerror.n(o 22 Fetch eFtended error in(ormation associated Eith the last operation on
the statement handle
Kescripci"n
array PKJ,tatement--errorInfo > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Calores retornados
PKJ,tatement--errorInfo./ returns an array o( error in(ormation a#out the last operation
per(ormed #y this statement handle; ,he array consists o( the (olloEing (ieldsC
Element Information
3
OL,A,+ error code >a (ive2character alphanumeric identi(ier de(ined in the AN.
OL standard?;
1 Driver2speci(ic error code;
0 Driver2speci(ic error message;
E'emplos
E'emplo !. Kisplaying errorInfo./ fields for a PKJ>JK1C connection to a K1* database
<?php
/W ro=oIe an error FF the Z?.E& table does not exist W/
$sth > $dbhF>prepare3M&EOER* sIull S'?" bonesM9;
$sthF>execute39;
echo "VnL?&tatement@@error4n#o39@Vn";
$arr > $sthF>error4n#o39;
print%r3$arr9;
?>
+l resultado del e'emplo seriaC
L?&tatement@@error4n#o39@
,rray
3
)2/ >> 1C&2C
)6/ >> FC21
)C/ >> )4Z"/)RO4 Lri=er/)LZC/O4.+X/ &NO2C21. "L,.4EO&.Z?.E&" is an unde#ined name. &NO&*,*E>1CH21
9
Cer tambi%n
PKJ--errorCode./
PKJ--errorInfo./
PKJ,tatement--errorCode./
PKJ,tatement--e+ecute
>no version in(ormationA might #e only in 5$?
PDOtatementCCeFecute 22 +Fecutes a prepared statement
Kescription
#ool PKJ,tatement--e+ecute > Parray inputZparametersQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
+Fecute the prepared statement; .( the prepared statement included parameter mar"ersA you must
eitherC
call PKJ,tatement--bindParam./ to #ind P&P varia#les to the parameter mar"ersC #ound
varia#les pass their value as input and receive the output valueA i( anyA o( their associated
parameter mar"ers
or pass an array o( input2only parameter values
E'emplo !. E+ecute a prepared statement 3ith bound 5ariables
<?php
/W Execute a prepared statement by bindinE H =ariables W/
$calories > 652;
$colour > MredM;
$sth > $dbhF>prepare3M&EOER* name, colour, calories
S'?" #ruit
7HE'E calories < @calories ,.L colour > @colourM9;
$sthF>bindaram3M@caloriesM, $calories, L?%,',"%4.*9;
$sthF>bindaram3M@colourM, $colour, L?%,',"%&*', 6C9;
$sthF>execute39;
?>
E'emplo *. E+ecute a prepared statement 3ith an array of insert 5alues
<?php
/W Execute a prepared statement by passinE an array o# insert =alues W/
$calories > 652;
$colour > MredM;
$sth > $dbhF>prepare3M&EOER* name, colour, calories
S'?" #ruit
7HE'E calories < @calories ,.L colour > @colourM9;
$sthF>bindaram3M@caloriesM, $calories, L?%,',"%4.*9;
$sthF>bindaram3M@colourM, $colour, L?%,',"%&*', 6C9;
$sthF>execute3array3M@caloriesM >> $calories, M@colourM >> $colour99;
?>
E'emplo 7. E+ecute a prepared statement 3ith ?uestion marB placeholders
<?php
/W Execute a prepared statement by bindinE H =ariables W/
$calories > 652;
$colour > MredM;
$sth > $dbhF>prepare3M&EOER* name, colour, calories
S'?" #ruit
7HE'E calories < ? ,.L colour > ?M9;
$sthF>bindaram36, $calories, L?%,',"%4.*9;
$sthF>bindaram3C, $colour, L?%,',"%&*', 6C9;
$sthF>execute39;
?>
PKJ,tatement--fetch
>no version in(ormationA might #e only in 5$?
PDOtatementCC(etch 22 Fetches the neFt roE (rom a result set
Kescripci"n
miFed PKJ,tatement--fetch > Pint (etchZstyle PA int cursorZorientation PA int cursorZo((setQQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Fetches a roE (rom a result set associated Eith a PDOtatement o#'ect;
:ista de parmetros
9etch_st?le
5ontrols hoE the neFt roE Eill #e returned to the caller; ,his value must #e one o( the
+DO_3ETC!_/ constantsA de(aulting to +DO_3ETC!_AOT!;
+DO_3ETC!_,SSOCC returns an array indeFed #y column name as returned in your
result set
+DO_3ETC!_AOT! >de(ault?C returns an array indeFed #y #oth column name and
column num#er as returned in your result set
+DO_3ETC!_AOUNDC returns TRUE and assigns the values o( the columns in your
result set to the P&P varia#les to Ehich they Eere #ound Eith the
PKJ,tatement--bindParam./ method
+DO_3ETC!_4,^BC com#ines +DO_3ETC!_AOT! and +DO_3ETC!_OAbA
creating the o#'ect varia#le names as they are accessed
+DO_3ETC!_OAbC returns an anonymous o#'ect Eith property names that
correspond to the column names returned in your result set
+DO_3ETC!_NUMC returns an array indeFed #y column num#er as returned in your
result setA starting at column 3
cursor_or6entat6on
For a PDOtatement o#'ect representing a scrolla#le cursorA this value determines Ehich roE
Eill #e returned to the caller; ,his value must #e one o( the +DO_3ETC!_OR0_/ constantsA
de(aulting to +DO_3ETC!_OR0_NEFT;
o99set
For a PDOtatement o#'ect representing a scrolla#le cursor (or Ehich the cursor_or6entat6on
parameter is set to +DO_3ETC!_OR0_,ASA this value speci(ies the a#solute num#er o( the
roE in the result set that shall #e (etched;
For a PDOtatement o#'ect representing a scrolla#le cursor (or Ehich the cursor_or6entat6on
parameter is set to +DO_3ETC!_OR0_RE4A this value speci(ies the roE to (etch relative to
the cursor position #e(ore PKJ,tatement--fetch./ Eas called;
E'emplos
E'emplo !. ;etching ro3s using different fetch styles
<?php
$sth > $dbhF>prepare3"&EOER* name, colour S'?" #ruit"9;
$sthF>execute39;
/W Exercise L?&tatement@@#etch styles W/
print3"L?%SE*RH%,&&?R@ "9;
print3"'eturn next ro8 as an array indexed by column nameVn"9;
$result > $sthF>#etch3L?%SE*RH%,&&?R9;
print%r3$result9;
print3"Vn"9;
print3"L?%SE*RH%Z?*H@ "9;
print3"'eturn next ro8 as an array indexed by both column name and numberVn"9;
$result > $sthF>#etch3L?%SE*RH%Z?*H9;
print%r3$result9;
print3"Vn"9;
print3"L?%SE*RH%O,YP@ "9;
print3"'eturn next ro8 as an anonymous object 8ith column names as propertiesVn"9;
$result > $sthF>#etch3L?%SE*RH%O,YP9;
print%r3$result9;
print3"Vn"9;
print3"L?%SE*RH%?ZA@ "9;
print3"'eturn next ro8 as an anonymous object 8ith column names as propertiesVn"9;
$result > $sthF>#etch3L?%SE*RH%?ZA9;
print $resultF>.,"E;
print3"Vn"9;
?>
+l resultado del e'emplo seriaC
L?%SE*RH%,&&?R@ 'eturn next ro8 as an array indexed by column name
,rray
3
).,"E/ >> apple
)R?O?+'/ >> red
9
L?%SE*RH%Z?*H@ 'eturn next ro8 as an array indexed by both column name and number
,rray
3
).,"E/ >> banana
)2/ >> banana
)R?O?+'/ >> yello8
)6/ >> yello8
9
L?%SE*RH%O,YP@ 'eturn next ro8 as an anonymous object 8ith column names as properties
L?'o8 ?bject
3
).,"E/ >> oranEe
)R?O?+'/ >> oranEe
9
L?%SE*RH%?ZA@ 'eturn next ro8 as an anonymous object 8ith column names as properties
Ii8i
E'emplo *. ;etching ro3s 3ith a scrollable cursor
<?php
#unction readLataSor8ards3$dbh9 :
$sQl > M&EOER* hand, 8on, bet S'?" mynumbers ?'LE' ZP ZE*M;
try :
$stmt > $dbhF>prepare3$sQl, array3L?%,**'%R+'&?', L?%R+'&?'%&R'?OO99;
$stmtF>execute39;
8hile 3$ro8 > $stmtF>#etch3L?%SE*RH%.+", L?%SE*RH%?'4%.EX*99 :
$data > $ro8)2/ . "Vt" . $ro8)6/ . "Vt" . $ro8)C/ . "Vn";
print $data;
;
$stmt > null;
;
catch 3L?Exception $e9 :
print $eF>Eet"essaEe39;
;
;
#unction readLataZacI8ards3$dbh9 :
$sQl > M&EOER* hand, 8on, bet S'?" mynumbers ?'LE' ZP betM;
try :
$stmt > $dbhF>prepare3$sQl, array3L?%,**'%R+'&?', L?%R+'&?'%&R'?OO99;
$stmtF>execute39;
$ro8 > $stmtF>#etch3L?%SE*RH%.+", L?%SE*RH%?'4%O,&*9;
do :
$data > $ro8)2/ . "Vt" . $ro8)6/ . "Vt" . $ro8)C/ . "Vn";
print $data;
; 8hile 3$ro8 > $stmtF>#etch3L?%SE*RH%.+", L?%SE*RH%?'4%'4?'99;
$stmt > null;
;
catch 3L?Exception $e9 :
print $eF>Eet"essaEe39;
;
;
print "'eadinE #or8ards@Vn";
readLataSor8ards3$conn9;
print "'eadinE bacI8ards@Vn";
readLataZacI8ards3$conn9;
?>
+l resultado del e'emplo seriaC
'eadinE #or8ards@
C6 62 5
6G 2 5
6K C2 62
'eadinE bacI8ards@
6K C2 62
6G 2 5
C6 62 5
Cer tambi%n
PKJ--?uery./
PKJ,tatement--fetchAll./
PKJ,tatement--fetch,ingle./
PKJ,tatement--prepare./
PKJ,tatement--set;etchMode./
PKJ,tatement--fetchAll
>no version in(ormationA might #e only in 5$?
PDOtatementCC(etchAll 22 Returns an array containing all o( the result set roEs
Kescripci"n
array PKJ,tatement--fetchAll > Pint (etchZstyleQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
:ista de parmetros
9etch_st?le
5ontrols the contents o( the returned array as documented in PKJ,tatement--fetch./;
De(aults to +DO_3ETC!_AOT!;
Calores retornados
PKJ,tatement--fetchAll./ returns an array containing all o( the remaining roEs in the result set;
,he array represents each roE as either an array o( column values or an o#'ect Eith properties
corresponding to each column name;
@sing this method to (etch large result sets Eill result in a heavy demand on system and possi#ly
netEor" resources; Rather than retrieving all o( the data and manipulating it in P&PA consider using
the data#ase server to manipulate the result sets; For eFampleA use the L&+R+ and OR, B%
clauses in OL to restrict results #e(ore retrieving and processing them Eith P&P;
E'emplos
E'emplo !. ;etch all remaining ro3s in a result set
<?php
$sth > $dbhF>prepare3"&EOER* name, colour S'?" #ruit"9;
$sthF>execute39;
/W Setch all o# the remaininE ro8s in the result set W/
print3"Setch all o# the remaininE ro8s in the result set@Vn"9;
$result > $sthF>#etch,ll39;
print%r3$result9;
?>
+l resultado del e'emplo seriaC
Setch all o# the remaininE ro8s in the result set@
,rray
3
)2/ >> ,rray
3
).,"E/ >> pear
)2/ >> pear
)R?O?+'/ >> Ereen
)6/ >> Ereen
9
)6/ >> ,rray
3
).,"E/ >> 8atermelon
)2/ >> 8atermelon
)R?O?+'/ >> pinI
)6/ >> pinI
9
9
Cer tambi%n
PKJ--?uery./
PKJ,tatement--fetch./
PKJ,tatement--fetch,ingle./
PKJ,tatement--prepare./
PKJ,tatement--set;etchMode./
PKJ,tatement--fetch,ingle
>no version in(ormationA might #e only in 5$?
PDOtatementCC(etchingle 22 Returns the (irst column in the neFt roE o( a result set
Kescripci"n
string PKJ,tatement--fetch,ingle > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
Calores retornados
PKJ,tatement--fetch,ingle./ returns the (irst column in the neFt roE o( a result set as a str6nE
value;
A5iso
,here is no Eay to return the second or su#se/uent columns (rom a roE i( you use this method to
retrieve data;
E'emplos
E'emplo !. Meturn first column of the ne+t ro3
<?php
$sth > $dbhF>prepare3"&EOER* name, colour S'?" #ruit"9;
$sthF>execute39;
/W Setch the #irst column #rom the next ro8 in the result set W/
print3"Setch the #irst column #rom the next ro8 in the result set@Vn"9;
$result > $sthF>#etch&inEle39;
print3"$resultVn"9;
$result > $sthF>#etch&inEle39;
print3"$resultVn"9;
?>
+l resultado del e'emplo seriaC
Setch the #irst column #rom the next ro8 in the result set@
lemon
oranEe
Cer tambi%n
PKJ--?uery./
PKJ,tatement--fetch./
PKJ,tatement--fetchAll./
PKJ,tatement--prepare./
PKJ,tatement--set;etchMode./
PKJ,tatement--getAttribute
>no version in(ormationA might #e only in 5$?
PDOtatementCCgetAttri#ute 22 Retrieve a statement attri#ute
Kescripci"n
miFed PKJ,tatement--getAttribute > long attri#ute ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Cer tambi%n
PKJ--getAttribute./
PKJ--setAttribute./
PKJ,tatement--setAttribute./
PKJ,tatement--getColumnMeta
>no version in(ormationA might #e only in 5$?
PDOtatementCCget5olumnMeta 22 Returns meta data (or a num#ered column
Kescripci"n
array PKJ,tatement--getColumnMeta > int Ycolumn ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
:ista de parmetros
'column
.ts description
Calores retornados
Lhat the (unction returnsA (irst on successA then on (ailure; ee also the Devuelve TRUE si todo se
llev- a ca#o correctamenteA FALSE en caso de (allo; entity
PKJ,tatement--ro3Count
>no version in(ormationA might #e only in 5$?
PDOtatementCCroE5ount 22 Returns the num#er o( roEs a((ected #y the last OL statement
Kescription
int PKJ,tatement--ro3Count > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
PKJ,tatement--ro3Count./ returns the num#er o( roEs a((ected #y the last D+L+,+A .N+R,A
or @PDA,+ statement eFecuted #y the corresponding +DOStatement o#'ect;
.( the last OL statement eFecuted #y the associated +DOStatement Eas a +L+5, statementA some
data#ases may return the num#er o( roEs returned #y that statement; &oEeverA this #ehaviour is not
guaranteed (or all data#ases and should not #e relied on (or porta#le applications;
E'emplo !. Meturn the number of deleted ro3s
<?php
/W Lelete all ro8s #rom the S'+4* table W/
$del > $dbhF>prepare3MLEOE*E S'?" #ruitM9;
$delF>execute39;
/W 'eturn number o# ro8s that 8ere deleted W/
print3"'eturn number o# ro8s that 8ere deleted@Vn"9;
$count > $delF>ro8Rount39;
print3"Leleted $count ro8s.Vn"9;
?>
PKJ,tatement--setAttribute
>no version in(ormationA might #e only in 5$?
PDOtatementCCsetAttri#ute 22 et a statement attri#ute
Kescripci"n
#ool PKJ,tatement--setAttribute > long attri#uteA miFed value ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Cer tambi%n
PKJ--getAttribute./
PKJ--setAttribute./
PKJ,tatement--getAttribute./
PKJ,tatement--set;etchMode
>no version in(ormationA might #e only in 5$?
PDOtatementCCsetFetchMode 22 et the de(ault (etch mode (or this statement
Kescripci"n
#ool PKJ,tatement--set;etchMode > int mode ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
:ista de parmetros
mo#e
,he (etch mode must #e one o( the +DO_3ETC!_/ constants;
Calores retornados
Returns 1 on success or FALSE on (ailure;
E'emplos
E'emplo !. ,etting the fetch mode
,he (olloEing eFample demonstrates hoE PKJ,tatement--set;etchMode./ changes the de(ault
(etch mode (or a PDOtatement o#'ect;
<?php
$sQl > M&EOER* name, colour, calories S'?" #ruitM;
try :
$stmt > $dbhF>Query3$sQl9;
$result > $stmtF>setSetch"ode3L?%SE*RH%.+"9;
8hile 3$ro8 > $stmtF>#etch399 :
print $ro8)2/ . "Vt" . $ro8)6/ . "Vt" . $ro8)C/ . "Vn";
;
;
catch 3L?Exception $e9 :
print $eF>Eet"essaEe39;
;
?>
+l resultado del e'emplo seriaC
apple red 652
banana yello8 C52
oranEe oranEe <22
Ii8i bro8n H5
lemon yello8 C5
pear Ereen 652
8atermelon pinI K2
ICII. Cerisign Payflo3 Pro functions
,his eFtension alloEs you to process credit cards and other (inancial transactions using $erisign
Payment ervicesA (ormerly "noEn as ignio
>httpCDDEEE;verisign;comDproductsDpay(loEDproDindeF;html?;
,hese (unctions are only availa#le i( P&P has #een compiled Eith the ==76th=p9pro):D0R. option;
%ou Eill re/uire the appropriate DS (or your plat(ormA Ehich may #e doEnloaded (rom Eithin the
manager inter(ace once you have registered;
Once you have doEnloaded the DS you should copy the (iles (rom the lib directory o( the
distri#ution; 5opy the header (ile p#pro.h to /usr/local/include and the li#rary (ile
libp#pro.so to /usr/local/lib;
Lhen using these (unctionsA you may omit calls to pfpro>init./ and pfpro>cleanup./ as this
eFtension Eill do so automatically i( re/uired; &oEever the (unctions are still availa#le in case you
are processing a num#er o( transactions and re/uire (ine control over the li#rary; %ou may per(orm
any num#er o( transactions using pfpro>process./ #etEeen the tEo;
,hese (unctions have #een added in P&P 8;3;0;
Nota- ,hese (unctions only provide a lin" to $erisign Payment ervices; Be sure to read
the Pay(loE Pro Developers Guide (or (ull details o( the re/uired parameters;
Tabla de contenidos
p(proZcleanup 22 huts doEn the Pay(loE Pro li#rary
p(proZinit 22 .nitialises the Pay(loE Pro li#rary
p(proZprocessZraE 22 Process a raE transaction Eith Pay(loE Pro
p(proZprocess 22 Process a transaction Eith Pay(loE Pro
p(proZversion 22 Returns the version o( the Pay(loE Pro so(tEare
pfpro>cleanup
>P&P 8 _^ 8;3;0A P&P 4?
p(proZcleanup 22 huts doEn the Pay(loE Pro li#rary
Kescription
void pfpro>cleanup > void ?
pfpro>cleanup./ is used to shutdoEn the Pay(loE Pro li#rary cleanly; .t should #e called a(ter you
have processed any transactions and #e(ore the end o( your script; &oEever you may omit this callA
in Ehich case this eFtension Eill automatically call pfpro>cleanup./ a(ter your script terminates;
ee also pfpro>init./;
pfpro>init
>P&P 8 _^ 8;3;0A P&P 4?
p(proZinit 22 .nitialises the Pay(loE Pro li#rary
Kescription
void pfpro>init > void ?
pfpro>init./ is used to initialise the Pay(loE Pro li#rary; %ou may omit this callA in Ehich case this
eFtension Eill automatically call pfpro>init./ #e(ore the (irst transaction;
ee also pfpro>cleanup./;
pfpro>process>ra3
>P&P 8 _^ 8;3;0A P&P 4?
p(proZprocessZraE 22 Process a raE transaction Eith Pay(loE Pro
Kescription
string pfpro>process>ra3 > string parameters PA string address PA int port PA int timeout PA string
proFy address PA int proFy port PA string proFy logon PA string proFy passEordQQQQQQQ ?
ReturnsC A string containing the response;
pfpro>process>ra3./ processes a raE transaction string Eith Pay(loE Pro; %ou should really use
pfpro>process./ insteadA as the encoding rules o( these transactions are non2standard;
,he (irst parameter in this case is a string containing the raE transaction re/uest; All other
parameters are the same as Eith pfpro>process./; ,he return value is a string containing the raE
response;
Nota- Be sure to read the Pay(loE Pro Developers Guide (or (ull details o( the re/uired
parameters and encoding rules; %ou Eould #e Eell advised to use pfpro>process./
instead;
E'emplo !. Payflo3 Pro ra3 e+ample
<?php
p#pro%init39;
$response > p#pro%process3"+&E'>myloEin&7L)5/>m&ndy&*'X*PE>&&*E.LE'>R&,"*>6.52&,RR*>1666666666666666&EXL,*E>2K21"9;
i# 3!$response9 :
die3"RouldnMt establish linI to (erisiEn.Vn"9;
;
echo "(erisiEn ra8 response 8as ".$response;
p#pro%cleanup39;
?>
pfpro>process
>P&P 8 _^ 8;3;0A P&P 4?
p(proZprocess 22 Process a transaction Eith Pay(loE Pro
Kescription
array pfpro>process > array parameters PA string address PA int port PA int timeout PA string proFy
address PA int proFy port PA string proFy logon PA string proFy passEordQQQQQQQ ?
ReturnsC An associative array containing the response
pfpro>process./ processes a transaction Eith Pay(loE Pro; ,he (irst parameter is an associative
array containing "eys and values that Eill #e encoded and passed to the processor;
,he second parameter is optional and speci(ies the host to connect to; By de(ault this is
=test;signio;com=A so you Eill certainly Eant to change this to =connect;signio;com= in order to
process live transactions;
,he third parameter speci(ies the port to connect on; .t de(aults to 887A the standard L port;
,he (ourth parameter speci(ies the timeout to #e usedA in seconds; ,his de(aults to 73 seconds; Note
that this timeout appears to only #egin once a lin" to the processor has #een esta#lished and so your
script could potentially continue (or a very long time in the event o( DN or netEor" pro#lems;
,he (i(th parameterA i( re/uiredA speci(ies the hostname o( your L proFy; ,he siFth parameter
speci(ies the port to use;
,he seventh and eighth parameters speci(y the logon identity and passEord to use on the proFy;
,he (unction returns an associative array o( the "eys and values in the response;
Nota- Be sure to read the Pay(loE Pro Developers Guide (or (ull details o( the re/uired
parameters;
E'emplo !. Payflo3 Pro e+ample
<?php
p#pro%init39;
$transaction > array3+&E' >> MmyloEinM,
7L >> Mmypass8ordM,
*'X*PE >> M&M,
*E.LE' >> MRM,
,"* >> 6.52,
,RR* >> M1666666666666666M,
EXL,*E >> M2K21M
9;
$response > p#pro%process3$transaction9;
i# 3!$response9 :
die3"RouldnMt establish linI to (erisiEn.Vn"9;
;
echo "(erisiEn response code 8as ".$response)'E&+O*/;
echo ", 8hich means@ ".$response)'E&"&-/."Vn";
echo "Vn*he transaction reQuest@ ";
print%r3$transaction9;
echo "Vn*he response@ ";
print%r3$response9;
p#pro%cleanup39;
?>
pfpro>5ersion
>P&P 8 _^ 8;3;0A P&P 4?
p(proZversion 22 Returns the version o( the Pay(loE Pro so(tEare
Kescription
string pfpro>5ersion > void ?
pfpro>5ersion./ returns the version string o( the Pay(loE Pro li#rary; At the time o( EritingA this
Eas L011;
C. ;unciones Postgre,$:
Introducci"n
La #ase de datos PostrgeOL es un producto Open ource y disponi#le sin costo; PostgresA
desarrollado originalmente en el Deportamento de 5iencias de 5omputaci-n de @5 Ber"eleyA (ue
pionero en muchos de los conceptos de o#'etos y relacionales /ue ahora est*n apareciendo en
algunas #ases de datos comerciales; Provee soporte para lengua'es OL90DOL99A transaccionesA
integridad re(erencialA procedimientos almacenados y eFtensi#ilidad de tipos; PostgreOL es un
descendiente de c-digo a#ierto de su c-digo original de Ber"eley;
Me?uirimientos
Para hacer uso del soporte PostgreOLA necesita PostgreOL K;4 o posteriorA PostgreOL :;3 o
posterior para ha#ilitar todas las caracter)sticas del m-dulo; PostgreOL soporta varias
codi(icaciones de caracteresA incluyendo codi(icaci-n de caracteres multi#yte; u versi-n actualA asi
como m*s in(ormaci-n so#re PostgreOL se encuentra disponi#le en httpCDDEEE;postgres/l;orgD y
httpCDDtechdocs;postgres/l;orgD;
Instalaci"n
.n order to ena#le PostgreOL supportA ==76th=pEs@l):D0R. is re/uired Ehen you compile P&P;
D.R is the PostgreOL #ase install directoryA de(aults to /usr/local/pEsQl; .( shared o#'ect
module is availa#leA PostgreOL module may #e loaded using eFtension directive in php.ini or
dl./ (unction;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Postgre,$: configuration options
Name Kefault Changeable
pgs/l;alloEZpersistent =1= P&PZ.N.Z%,+M
pgs/l;maFZpersistent =21= P&PZ.N.Z%,+M
pgs/l;maFZlin"s =21= P&PZ.N.Z%,+M
pgs/l;autoZresetZpersisten
t
=3= P&PZ.N.Z%,+M
pgs/l;ignoreZnotice =3= P&PZ.N.ZALL
pgs/l;logZnotice =3= P&PZ.N.ZALL
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
pEs@l.allo7_pers6stent boolean
Lhether to alloE persistent Postgres connections;
pEs@l.ma8_pers6stent integer
,he maFimum num#er o( persistent Postgres connections per process;
pEs@l.ma8_l6n>s integer
,he maFimum num#er o( Postgres connections per processA including persistent connections;
pEs@l.auto_reset_pers6stent integer
Detect #ro"en persistent lin"s Eith pg>pconnect./; Needs a little overhead;
pEs@l.6Enore_not6ce integer
Lhether or not to ignore PostgreOL #ac"end notices;
pEs@l.loE_not6ce integer
Lhether or not to log PostgreOL #ac"ends notice messages; ,he P&P directive
pgs/l;ignoreZnotice must #e o(( in order to log notice messages;
Modo de uso y conse'os
A5iso
+l uso del m-dulo PostgreOL con P&P 8;3;K no se recomienda de#ido a un (allo en el c-digo de
gesti-n de mensa'es tipo noticia; @se la versi-n 8;1;3 o posterior;
A5iso
Los nom#res de (unciones PostgreOL ser*n modi(icados en el lanzamiento 8;0;3 para adoptar los
est*ndares de c-digo actuales; La mayor)a de nom#res nuevos tendr*n signos de su#rayado
adicionalesA p;e'; pgZloZopen>?; Algunas (unciones son renom#radas a nuevos nom#res por
razones de consistenciaA p;e'; pgZeFec>? a pgZ/uery>?; Los nom#res antiguos pueden ser usados en
8;0;3 y algunas versiones su#siguientesA pero pueden ser eliminados en el (uturo;
Tabla *. Nombres de funci"n modificados
Nombre antiguo Nombre nue5o
pg>cmdtuples./
pg>affected>ro3s
./
pg>errormessage./ pg>last>error./
pg>e+ec./ pg>?uery./
pg>fieldname./ pg>field>name./
pg>fieldsi6e./ pg>field>si6e./
pg>fieldnum./ pg>field>num./
pg>fieldprtlen./ pg>field>prtlen./
pg>fieldisnull./ pg>field>is>null./
pg>freeresult./ pg>free>result./
pg>getlastoid./ pg>last>oid./
pg>loreadall./ pg>lo>read>all./
pg>locreate./ pg>lo>create./
pg>lounlinB./ pg>lo>unlinB./
pg>loopen./ pg>lo>open./
pg>loclose./ pg>lo>close./
pg>loread./ pg>lo>read./
pg>lo3rite./ pg>lo>3rite./
pg>loimport./ pg>lo>import./
pg>loe+port./ pg>lo>e+port./
pg>numro3s./ pg>num>ro3s./
pg>numfields./ pg>num>fields./
pg>result./ pg>fetch>result./
La vie'a sintaFis pg>connect./Dpg>pconnect./ ser* marcada como o#soleta para dar soporte a
coneFiones asincr-nicas en el (uturo; Por (avor use una cadena de coneFi-n para pg>connect./ y
pg>pconnect./;
No todas las (unciones son soportadas en todas las instalaciones; Depende de su versi-n de li#p/ >la
inter(az 5 de 5liente PostrgeOL? y de c-mo (ue compilado li#p/; i hace (alta alguna (unci-nA
li#p/ no soporta la caracter)stica re/uerida para la (unci-n;
,am#i<n es importante /ue no use una versi-n de li#p/ m*s antigua /ue la del ervidor PostgreOL
al /ue se conectar*; i usa una versi-n de li#p/ m*s antigua /ue la /ue el ervidor PostgreOL
esperaA puede tener pro#lemas;
A partir de la versi-n K;7 >37D30D199M? PostgreOL usa soc"ets de dominio uniF por de(ecto; +l
puerto ,5P NO ser* a#ierto por de(ecto; A continuaci-n se presenta una ta#la /ue descri#e estas
posi#ilidades de coneFi-n nuevas; +ste soc"et se encontrar* en /tmp/.s.-&NO.51<C; +sta
opci-n puede ha#ilitarse con la #andera H2iH a postmaster y su signi(icado esC =escuche en soc"ets
,5PD.P asi como en soc"ets de dominio @niF=;
Tabla 7. Postmaster y PHP
Postmaster PHP ,tatus
postmaster
i
pgZconnect
>=d#name^Nom#reDeMiB
D=?X
OS
postmaster
2i i
pgZconnect
>=d#name^Nom#reDeMiB
D=?X
OS
postmaster
i
pgZconnect
>=host^localhost
d#name^Nom#reDeMiBD
=?X
No (ue posi#le conectarse con el servidor PostgreOLC
connectDB>? (all-C U+st* corriendo postmaster y acepta
coneFiones ,5PD.P >con 2i? en HlocalhostH en el puerto
H4870HN en DrutaDhaciaDarchivo;php en la l)nea 03;
postmaster
2i i
pgZconnect
>=host^localhost
d#name^Nom#reDeMiBD
=?X
OS
Puede esta#lecerse una coneFi-n con el servidor PostgreOL con el siguiente 'uego de pares de
valores en la cadena de comandoC Vcon H pg>connect.0hostHmiHost portHmiPuerto ttyHmiTT@
optionsHmisJpciones dbnameHmi1K userHmi)suario pass3ordHmiContrasenya 0/Z
La sintaFis previa deC Vconn H pg>connect .0host0E 0port0E 0options0E 0tty0E 0dbname0/ ha
sido marcada como o#soleta;
Las varia#les de entorno a(ectan el comportamiente de servidorDcliente de PostgreOL; Por e'emploA
el m-dulo PostgreOL #uscar* la varia#le de entorno PG&ON cuando el nom#re de host sea
omitido en la cadena de coneFi-n; Las varia#les de entorno soportadas son di(erentes entre versi-n y
versi-n; Re(i<rase el Manual de Programador de PostgreOL >li#p/ 2 $aria#les de +ntorno? para
m*s detalles;
AsegBrese de esta#lecer las varia#les de entorno para el usuario apropiado; @se '_EN( o geten5./
para che/uear cu*les varia#les de entorno est*n disponi#les en el proceso actual;
E'emplo !. Kefinici"n de parmetros predeterminados
-H?&*>pEsQl.example.com
-?'*>HJK2
-L,*,Z,&E>sistemaF8eb
-+&E'>usuarioF8eb
-,&&7?'L>secreto
-L,*E&*POE>4&?
-*Y>A&*
-RO4E.*E.R?L4.->E+RFA
export -H?&* -?'* -L,*,Z,&E -+&E' -,&&7?'L -L,*E&*POE -*Y -RO4E.*E.R?L4.-
Nota- PostgreOL convierte autom*ticamente todos los identi(icadores >p;e'; nom#res
de ta#lasDcolumnas? a valores en minBsculas; Para lograr /ue reconozca valores en
mayBsculasA de#e rodear siempre el identi(icador entre comillas;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
P#S.L_ASSOC >integer?
P#S.L_NUM >integer?
P#S.L_(OTH >integer?
P#S.L_CONNECTION_(AD >integer?
P#S.L_CONNECTION_O& >integer?
P#S.L_SEE&_SET >integer?
P#S.L_SEE&_CUR >integer?
P#S.L_SEE&_END >integer?
P#S.L_ESCAPE_STRIN# >integer?
P#S.L_ESCAPE_(YTEA >integer?
P#S.L_EMPTY_.UERY >integer?
P#S.L_COMMAND_O& >integer?
P#S.L_TUPLES_O& >integer?
P#S.L_COPY_OUT >integer?
P#S.L_COPY_IN >integer?
P#S.L_(AD_RESPONSE >integer?
P#S.L_NONFATAL_ERROR >integer?
P#S.L_FATAL_ERROR >integer?
E'emplos
A partir de PostgreOL :;1;3A puede almacenar hasta 1GB en un campo de tipo teFto; +n versiones
anterioresA <ste se encontra#a limitado al tamaWo de #lo/ue >por de(ecto MSBA el m*Fimo era 70SBA
de(inido en tiempo de compilaci-n?
Para usar la inter(az de o#'etos grandes >lo?A es necesario u#icar las (unciones de o#'etos grandes en
el interior de un #lo/ue de transacci-n; @n #lo/ue de transacci-n comienza con una sentencia OL
1EFIN yA si la transacci-n (ue v*lidaA termina con CJMMIT o ENK; i la transacci-n (allaA <sta
de#e ser cerrada con MJ::1AC` o A1JMT;
E'emplo *. )so de Jb'etos Frandes
<?php
$base%de%datos > pE%connect3"dbname>jacarta"9;
pE%Query3$base%de%datos, "beEin"9;
$oid > pE%lo%create3$base%de%datos9;
echo "$oidVn";
$Eestor > pE%lo%open3$base%de%datos, $oid, "8"9;
echo "$EestorVn";
pE%lo%8rite3$Eestor, "datos de objeto Erande"9;
pE%lo%close3$Eestor9;
pE%Query3$base%de%datos, "commit"9;
?>
@sted no de#e cerrar la coneFi-n con el servidor PostgreOL antes de cerrar el o#'eto grande;
Tabla de contenidos
pgZa((ectedZroEs 22 Returns num#er o( a((ected records >tuples?
pgZcancelZ/uery 22 5ancel asynchronous /uery
pgZclientZencoding 22 Gets the client encoding
pgZ5lose 22 5ierra una coneFi-n PostgreOL
pgZ5onnect 22 A#re una coneFi-n
pgZconnectionZ#usy 22 Get connection is #usy or not
pgZconnectionZreset 22 Reset connection >reconnect?
pgZconnectionZstatus 22 Get connection status
pgZconvert 22 5onvert associative array value into suita#le (or OL statement
pgZcopyZ(rom 22 .nsert records into a ta#le (rom an array
pgZcopyZto 22 5opy a ta#le to an array
pgZDBname 22 Nom#re de la #ase de datos
pgZdelete 22 Deletes records
pgZendZcopy 22 ync Eith PostgreOL #ac"end
pgZescapeZ#ytea 22 +scape #inary (or #ytea type
pgZescapeZstring 22 +scape string (or teFtDchar type
pgZ(etchZall 22 Fetches all roEs (rom a result as an array
pgZFetchZArray 22 o#tiene una (ila en la (orma de un array
pgZ(etchZassoc 22 Fetch a roE as an associative array
pgZFetchZO#'ect 22 o#tener una (ila en (orma de o#'eto
pgZ(etchZresult 22 Returns values (rom a result resource
pgZFetchZRoE 22 o#tiene la (ila como un array enumerado
pgZ(ieldZisZnull 22 ,est i( a (ield is NULL
pgZ(ieldZname 22 Returns the name o( a (ield
pgZ(ieldZnum 22 Returns the (ield num#er o( the named (ield
pgZ(ieldZprtlen 22 Returns the printed length
pgZ(ieldZsize 22 Returns the internal storage size o( the named (ield
pgZ(ieldZtypeZoid 22 Returns the type .D >O.D? (or the corresponding (ield num#er
pgZ(ieldZtype 22 Returns the type name (or the corresponding (ield num#er
pgZ(reeZresult 22 Free result memory
pgZgetZnoti(y 22 Ping data#ase connection
pgZgetZpid 22 Ping data#ase connection
pgZgetZresult 22 Get asynchronous /uery result
pgZ&ost 22 Devuelve el nom#re del host
pgZinsert 22 .nsert array into ta#le
pgZlastZerror 22 Get the last error message string o( a connection
pgZlastZnotice 22 Returns the last notice message (rom PostgreOL server
pgZlastZoid 22 Returns the last o#'ectHs oid
pgZloZclose 22 5lose a large o#'ect
pgZloZcreate 22 5reate a large o#'ect
pgZloZeFport 22 +Fport a large o#'ect to (ile
pgZloZimport 22 .mport a large o#'ect (rom (ile
pgZloZopen 22 Open a large o#'ect
pgZloZreadZall 22 Reads an entire large o#'ect and send straight to #roEser
pgZloZread 22 Read a large o#'ect
pgZloZsee" 22 ee"s position o( large o#'ect
pgZloZtell 22 Returns current position o( large o#'ect
pgZloZunlin" 22 Delete a large o#'ect
pgZloZErite 22 Lrite a large o#'ect
pgZmetaZdata 22 Get meta data (or ta#le
pgZnumZ(ields 22 Returns the num#er o( (ields
pgZnumZroEs 22 Returns the num#er o( roEs
pgZOptions 22 Devuelve opciones
pgZparameterZstatus 22 Returns the value o( a server parameter
pgZp5onnect 22 5rea una coneFi-n persistente con una #ase de datos
pgZping 22 Ping data#ase connection
pgZPort 22 Devuelve el nBmero de puerto
pgZputZline 22 end a N@LL2terminated string to PostgreOL #ac"end
pgZ/uery 22 +Fecute a /uery
pgZresultZerror 22 Get error message associated Eith result
pgZresultZsee" 22 et internal roE o((set in result resource
pgZresultZstatus 22 Get status o( /uery result
pgZselect 22 elect records
pgZsendZ/uery 22 ends asynchronous /uery
pgZsetZclientZencoding 22 et the client encoding
pgZtrace 22 +na#le tracing a PostgreOL connection
pgZtty 22 Devuelve el nom#re del tty
pgZunescapeZ#ytea 22 @nescape #inary (or #ytea type
pgZuntrace 22 Disa#le tracing o( a PostgreOL connection
pgZupdate 22 @pdate ta#le
pgZversion 22 Returns an array Eith clientA protocol and server version >Ehen availa#le?
pg>affected>ro3s
>P&P 8 _^ 8;0;3A P&P 4?
pgZa((ectedZroEs 22 Returns num#er o( a((ected records >tuples?
Kescription
int pg>affected>ro3s > resource result ?
pg>affected>ro3s./ returns the num#er o( tuples >instancesDrecordsDroEs? a((ected #y .N+R,A
@PDA,+A and D+L+,+ /ueries eFecuted #y pg>?uery./; .( no tuple is a((ected #y this (unctionA it
Eill return 3;
E'emplo !. pg>affected>ro3s./ e+ample
<?php
$result > pE%Query3$conn, "4.&E'* 4.*? authors (,O+E& 3M?r8ellM, C22C, M,nimal SarmM9"9;
$cmdtuples > pE%a##ected%ro8s3$result9;
echo $cmdtuples . " tuples are a##ected.Vn";
?>
Nota- ,his (unction used to #e called pE_cm#tuplesLM;
ee also pg>?uery./ and pg>num>ro3s./;
pg>cancel>?uery
>P&P 8 _^ 8;0;3A P&P 4?
pgZcancelZ/uery 22 5ancel asynchronous /uery
Kescription
#ool pg>cancel>?uery > resource connection ?
pg>cancel>?uery./ cancel asynchronous /uery sent #y pg>send>?uery./; %ou cannot cancel /uery
eFecuted #y pg>?uery./;
ee also pg>send>?uery./ and pg>connection>busy./;
pg>client>encoding
>P&P 7 5$ onlyA P&P 8 _^ 8;3;7A P&P 4?
pgZclientZencoding 22 Gets the client encoding
Kescription
string pg>client>encoding > Presource connectionQ ?
pg>client>encoding./ returns the client encoding as the string; ,he returned string should #e either C
OLZA5..A +@5Z!PA +@5Z5NA +@5ZSRA +@5Z,LA @N.5OD+A M@L+Z.N,+RNALA LA,.NJ
>J^1;;;9?A SO.MA L.NA AL,A !.A B.G4A L.N1043;
Nota- ,his (unction re/uires P&P28;3;7 or higher and PostgreOL2:;3 or higher; .(
li#p/ is compiled Eithout multi#yte encoding supportA pg>set>client>encoding./
alEays return =OLZA5..=; upported encoding depends on PostgreOL version;
Re(er to PostgreOL manual (or details to ena#le multi#yte support and encoding
supported;
,he (unction used to #e called pg>clientencoding./;
ee also pg>set>client>encoding./;
pg>Close
>P&P 7A P&P 8 A P&P 4?
pgZ5lose 22 5ierra una coneFi-n PostgreOL
Kescripci"n
#ool pg>close > int connection ?
Devuelve FALSE si connection no es un indice de coneFi-n valido y TRUE en cual/uier otro caso;
5ierra la coneFi-n a la #ase de datos PostgreOL asociada con el indice de coneFi-n pasado como
par*metro;
pg>Connect
>P&P 7A P&P 8 A P&P 4?
pgZ5onnect 22 A#re una coneFi-n
Kescripci"n
int pg>connect > string hostA string portA string optionsA string ttyA string d#name ?
Devuelve un )ndice de coneFi-n en caso de <FitoA o (also si la coneFi-n no se puede realizar; +sta
(unci-n a#re una coneFi-n a una #ase de datos PostgreOL; 5ada uno de los argumentos de#e ser
una cadena entrecomilladaA incluyendo el nBmero de puerto; Los par*metros options y tty son
opcionales y pueden ser omitidos; +sta (unci-n devuelve un )ndice de coneFi-n /ue se necesitar*
para otras (unciones PostgreOL; Puedes tener multiples coneFiones a#iertas al mismo tiempo;
@na coneFi-n tam#i<n se puede esta#lecer con el siguiente comandoC Vconn H pg>connect
.0dbnameHmarliese portH987*0/Z Otros par*metros aparte de #1name y port son hostA tt?A
opt6onsA user y pass7or#;
$er tam#i<n pg>pConnect./;
pg>connection>busy
>P&P 8 _^ 8;0;3A P&P 4?
pgZconnectionZ#usy 22 Get connection is #usy or not
Kescription
#ool pg>connection>busy > resource connection ?
pg>connection>busy./ returns TRUE i( the connection is #usy; .( it is #usyA a previous /uery is still
eFecuting; .( pg>get>result./ is calledA it Eill #e #loc"ed;
E'emplo !. pg>connection>busy./ e+ample
<?php
$dbconn > pE%connect3"dbname>publisher"9 or die3"Rould not connect"9;
$bs > pE%connection%busy3$dbconn9;
i# 3$bs9 :
echo Mconnection is busyM;
; else :
echo Mconnection is not busyM;
;
?>
ee also pg>connection>status./ and pg>get>result./;
pg>connection>reset
>P&P 8 _^ 8;0;3A P&P 4?
pgZconnectionZreset 22 Reset connection >reconnect?
Kescription
#ool pg>connection>reset > resource connection ?
pg>connection>reset./ resets the connection; .t is use(ul (or error recovery; Devuelve TRUE si todo
se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. pg>connection>reset./ e+ample
<?php
$dbconn > pE%connect3"dbname>publisher"9 or die3"Rould not connect"9;
$dbconnC > pE%connection%reset3$dbconn9;
i# 3$dbconnC9 :
echo "reset success#ulVn";
; else :
echo "reset #ailedVn";
;
?>
ee also pg>connect./A pg>pconnect./ and pg>connection>status./;
pg>connection>status
>P&P 8 _^ 8;0;3A P&P 4?
pgZconnectionZstatus 22 Get connection status
Kescription
int pg>connection>status > resource connection ?
pg>connection>status./ returns a connection status; Possi#le statuses are
+-S54_CONNECT0ON_O2 and +-S54_CONNECT0ON_A,D; ,he return value 3 as integer
indicates a valid connection;
E'emplo !. pg>connection>status./ e+ample
<?php
$dbconn > pE%connect3"dbname>publisher"9 or die3"Rould not connect"9;
$stat > pE%connection%status3$dbconn9;
i# 3$stat >>> 29 :
echo MRonnection status oIM;
; else :
echo MRonnection status badM;
;
?>
ee also pg>connection>busy./;
pg>con5ert
>P&P 8 _^ 8;7;3A P&P 4?
pgZconvert 22 5onvert associative array value into suita#le (or OL statement
Kescription
array pg>con5ert > resource connectionA string ta#leZnameA array assocZarray PA int optionsQ ?
pg>con5ert./ chec"s and converts the values in assoc_arra? into suita#le values (or use in a OL
statement; Precondition (or pg>con5ert./ is the eFistence o( a ta#le ta1le_name Ehich has at least as
many columns as assoc_arra? has elements; ,he (ieldnames as Eell as the (ieldvalues in
ta1le_name must match the indices and values o( assoc_arra?; Returns an array Eith the converted
values on successA FALSE otherEise;
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ee also pg>meta>data./;
pg>copy>from
>P&P 8 _^ 8;0;3A P&P 4?
pgZcopyZ(rom 22 .nsert records into a ta#le (rom an array
Kescription
#ool pg>copy>from > resource connectionA string ta#leZnameA array roEs PA string delimiter PA string
nullZasQQ ?
pg>copy>from./ insert records into a ta#le (rom ro7s; .t issues CO+B 3ROM OL command
internally to insert records; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso
de (allo;
ee also pg>copy>to./;
pg>copy>to
>P&P 8 _^ 8;0;3A P&P 4?
pgZcopyZto 22 5opy a ta#le to an array
Kescription
array pg>copy>to > resource connectionA string ta#leZname PA string delimiter PA string nullZasQQ ?
pg>copy>to./ copies a ta#le to an array; .t issues CO+B TO OL command internally to retrieve
records; ,he resulting array is returned; .t returns FALSE on (ailure;
ee also pg>copy>from./;
pg>K1name
>P&P 7A P&P 8 A P&P 4?
pgZDBname 22 Nom#re de la #ase de datos
Kescripci"n
string pg>dbname > int connection ?
Devuelve el nom#re de la #ase de datos a la cual es el )ndice de coneFi-n con PostgreOL est*
conectadoA o FALSE si connection no es un )ndice de coneFi-n v*lido;
pg>delete
>P&P 8 _^ 8;7;3A P&P 4?
pgZdelete 22 Deletes records
Kescription
miFed pg>delete > resource connectionA string ta#leZnameA array assocZarray PA int optionsQ ?
pg>delete./ deletes record condition speci(ied #y assoc_arra? Ehich has 96el#:&alue; .( opt6on is
speci(iedA pg>con5ert./ is applied to assoc_arra? Eith speci(ied option;
E'emplo !. pg>delete./ e+ample
<?php
$db > pE%connect3Mdbname>#ooM9;
// *his is sa#e, since $%?&* is con=erted automatically
$res > pE%delete3$db, Mpost%loEM, $%?&*9;
i# 3$res9 :
echo "?&* data is deleted@ $resVn";
; else :
echo "+ser must ha=e sent 8ronE inputsVn";
;
?>
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ee also pg>con5ert./;
pg>end>copy
>P&P 8 _^ 8;3;7A P&P 4?
pgZendZcopy 22 ync Eith PostgreOL #ac"end
Kescription
#ool pg>end>copy > Presource connectionQ ?
pg>end>copy./ syncs the PostgreOL (rontend >usually a Ee# server process? Eith the PostgreOL
server a(ter doing a copy operation per(ormed #y pg>put>line./; pg>end>copy./ must #e issuedA
otherEise the PostgreOL server may get out o( sync Eith the (rontend and Eill report an error;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
For (urther details and an eFampleA see also pg>put>line./;
pg>escape>bytea
>P&P 8 _^ 8;0;3A P&P 4?
pgZescapeZ#ytea 22 +scape #inary (or #ytea type
Kescription
string pg>escape>bytea > string data ?
pg>escape>bytea./ escapes string (or #ytea datatype; .t returns escaped string;
Nota- Lhen you +L+5, #ytea typeA PostgreOL returns octal #yte value pre(iFed #y h
>e;g; h370?; @sers are supposed to convert #ac" to #inary (ormat #y yoursel(;
,his (unction re/uires PostgreOL :;0 or later; Lith PostgreOL :;0;3 and :;0;1A #ytea
type must #e casted Ehen you ena#le multi2#yte support; i;e; 0NSERT 0NTO test_ta1le
L6maEeM (,4UES L<'6maEe_escape#<::1?teaMJ PostgreOL :;0;0 or later does not need
cast; +Fception is Ehen client and #ac"end character encoding does not matchA there
may #e multi2#yte stream error; @ser must cast to #ytea to avoid this error;
ee also pg>unescape>bytea./ and pg>escape>string./;
pg>escape>string
>P&P 8 _^ 8;0;3A P&P 4?
pgZescapeZstring 22 +scape string (or teFtDchar type
Kescription
string pg>escape>string > string data ?
pg>escape>string./ escapes string (or teFtDchar datatype; .t returns escaped string (or PostgreOL;
@se o( this (unction is recommended instead o( addslashes./;
Nota- ,his (unction re/uires PostgreOL :;0 or later;
ee also pg>escape>bytea./
pg>fetch>all
>P&P 8 _^ 8;7;3A P&P 4?
pgZ(etchZall 22 Fetches all roEs (rom a result as an array
Kescription
array pg>fetch>all > resource result ?
pg>fetch>all./ returns an array that contains all roEs >tuplesDrecords? in result resource; .t returns
FALSEA i( there are no roEs;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
E'emplo !. Postgre,$: fetch all
<?php
$conn > pE%pconnect3"dbname>publisher"9;
i# 3!$conn9 :
echo ",n error occured.Vn";
exit;
;
$result > pE%Query3$conn, "&EOER* W S'?" authors"9;
i# 3!$result9 :
echo ",n error occured.Vn";
exit;
;
$arr > pE%#etch%all3$result9;
=ar%dump3$arr9;
?>
ee also pg>fetch>ro3./A pg>fetch>array./A pg>fetch>ob'ect./ and pg>fetch>result./;
pg>;etch>Array
>P&P 7_^ 7;3;1A P&P 8 A P&P 4?
pgZFetchZArray 22 o#tiene una (ila en la (orma de un array
Kescripci"n
array pg>fetch>array > int resultA int roE PA int resultZtypeQ ?
DevuelveC @n array /ue se corresponde con la (ila o#tenidaA o FALSE si no hay m*s (ilas;
pg>fetch>array./ es una versi-n eFtendida de pg>fetch>ro3./; Adem*s de almacenar los datos en
los )ndices numericos del array resultanteA tam#i<n almacena los datos usando )ndices asociativosA
empleando para ello el nom#re del campo como la llave o )ndice;
+l tercer par*metro opcional result_t?pe en pg>fetch>array./ es una constante y puede tomar
cual/uiera de los siguientes valoresC PGOLZAO5A PGOLZN@MA y PGOLZBO,&;
Nota- Result_t?pe se aWadio en P&P 8;3;
@na cosa importante a tener en cuenta es /ue usar pg>fetch>array./ NO es signi(icativamente m*s
lento /ue usar pg>fetch>ro3./A y sin em#argo el valor aWadido /ue aporta s) lo es;
Para m*s detallesA ver pg>fetch>ro3./
E'emplo !. Postgre,$: fetch array
<?php
$conn > pE%pconnect3"","","","","publisher"9;
i# 3!$conn9 :
echo ",n error occured.Vn";
exit;
;
$result > pE%Exec 3$conn, "&EOER* W S'?" authors"9;
i# 3!$result9 :
echo ",n error occured.Vn";
exit;
;
$arr > pE%#etch%array 3$result, 29;
echo $arr)2/ . " <F arrayVn";
$arr > pE%#etch%array 3$result, 69;
echo $arr)"author"/ . " <F arrayVn";
?>
pg>fetch>assoc
>P&P 8 _^ 8;7;3A P&P 4?
pgZ(etchZassoc 22 Fetch a roE as an associative array
Kescription
array pg>fetch>assoc > resource result PA int roEQ ?
pg>fetch>assoc./ returns an associative array that corresponds to the (etched roE >tuplesDrecords?; .t
returns FALSEA i( there are no more roEs;
pg>fetch>assoc./ is Walent to calling pg>fetch>array./ Eith PGOLZAO5 (or the optional third
parameter; .t only returns an associative array; .( you need the numeric indicesA use pg>fetch>ro3./;
Nota- +sta (uncion de(ine campos N@LL como valores P&P NULL;
ro7 is roE >record? num#er to #e retrieved; First roE is 3;
pg>fetch>assoc./ is NO, signi(icantly sloEer than using pg>fetch>ro3./A Ehile it provides a
signi(icant ease o( use;
E'emplo !. pg>fetch>assoc./ e+ample
<?php
$conn > pE%connect3"dbname>publisher"9;
i# 3!$conn9 :
echo ",n error occured.Vn";
exit;
;
$result > pE%Query3$conn, "&EOER* id, author, email S'?" authors"9;
i# 3!$result9 :
echo ",n error occured.Vn";
exit;
;
8hile 3$ro8 > pE%#etch%assoc3$result99 :
echo $ro8)MidM/;
echo $ro8)MauthorM/;
echo $ro8)MemailM/;
;
?>
Nota- From 8;1;3A ro7 #ecame optional; 5alling pg>fetch>assoc./ Eill increment the
internal roE counter #y one;
ee also pg>fetch>ro3./A pg>fetch>array./A pg>fetch>ob'ect./ and pg>fetch>result./;
pg>;etch>Jb'ect
>P&P 7_^ 7;3;1A P&P 8 A P&P 4?
pgZFetchZO#'ect 22 o#tener una (ila en (orma de o#'eto
Kescripci"n
o#'ect pg>fetch>ob'ect > int resultA int roE PA int resultZtypeQ ?
DevuelveC @n o#'eto cuyas propiedades se corresponden con los campos de la (ila o#tenidaA o
FALSE si no hay m*s (ilas;
pg>fetch>ob'ect./ es parecida a pg>fetch>array./A con una di(erencia 2 se devuelve un o#'etoA en
vez de un array; .ndirectamenteA eso signi(ica /ue solo puedes acceder a los datos por medio de su
nom#re de campoA y no a trav<s de sus posiciones >los nBmeros son nom#res de propiedad
invalidos?;
+l tercer par*metro opcional result_t?pe en pg>fetch>ob'ect./ es una constante y puede tomar
cual/uiera de los siguientes valoresC PGOLZAO5A PGOLZN@MA y PGOLZBO,&;
Nota- Result_t?pe se aWadio en P&P 8;3;
Re(erente a la velocidadA la (unci-n es identica a pg>fetch>array./A y practicamente tan r*pida
como pg>fetch>ro3./ >la di(erencia es insigni(icante?;
$er tam#i<nC pg>fetch>array./ y pg>fetch>ro3./;
E'emplo !. Postgres fetch ob'ect
<?php
$database > "=erlaE";
$db%conn > pE%connect 3"localhost", "51<C", "", "", $database9;
i# 3!$db%conn9@ ?>
<H6>Sailed connectinE to postEres database <? echo $database ?></H6> <?
exit;
endi#;
$Qu > pE%exec 3$db%conn, "&EOER* W S'?" =erlaE ?'LE' ZP autor"9;
$ro8 > 2; // postEres needs a ro8 counter other dbs miEht not
8hile 3$data > pE%#etch%object 3$Qu, $ro899@
echo $dataF>autor." 3";
echo $dataF>jahr ."9@ ";
echo $dataF>titel."<Z'>";
$ro8[[;
end8hile; ?>
<'E><?php
$#ields)/ > ,rray 3"autor", ",uthor"9;
$#ields)/ > ,rray 3"jahr", " Pear"9;
$#ields)/ > ,rray 3"titel", " *itle"9;
$ro8> 2; // postEres needs a ro8 counter other dbs miEht not
8hile 3$data > pE%#etch%object 3$Qu, $ro899@
echo "FFFFFFFFFFVn";
reset 3$#ields9;
8hile 3list 3,$item9 > each 3$#ields99@
echo $item)6/."@ ".$dataF>$item)2/."Vn";
end8hile;
$ro8[[;
end8hile;
echo "FFFFFFFFFFVn"; ?>
</'E> <?php
pE%#ree'esult 3$Qu9;
pE%close 3$db%conn9;
?>
pg>fetch>result
>P&P 8 _^ 8;0;3A P&P 4?
pgZ(etchZresult 22 Returns values (rom a result resource
Kescription
miFed pg>fetch>result > resource resultA int roEA miFed (ield ?
miFed pg>fetch>result > resource resultA miFed (ield ?
pg>fetch>result./ returns values (rom a result resource returned #y pg>?uery./; ro7 is integer;
96el# is (ield name >string? or (ield indeF >integer?; ,he ro7 and 96el# speci(y Ehat cell in the ta#le o(
results to return; RoE num#ering starts (rom 3; .nstead o( naming the (ieldA you may use the (ield
indeF as an un/uoted num#er; Field indices start (rom 3;
PostgreOL has many #uilt in types and only the #asic ones are directly supported here; All (orms
o( integer types are returned as integer values; All (orms o( (loatA and real types are returned as
float values; Boolean is returned as =t= or =(=; All other typesA including arrays are returned as
strings (ormatted in the same de(ault PostgreOL manner that you Eould see in the ps?l program;
pg>;etch>Mo3
>P&P 7_^ 7;3;1A P&P 8 A P&P 4?
pgZFetchZRoE 22 o#tiene la (ila como un array enumerado
Kescripci"n
array pg>fetch>ro3 > int resultA int roE ?
DevuelveC @n array /ue se corresponde con la (ila o#tenidaA o FALSE en el caso de /ue no haya
m*s (ilas;
pg>fetch>ro3./ o#tiene una (ila de datos a partir del resultado asociado con el identi(icador de
resultado especi(icado; La (ila se devuelve en (orma de array; 5ada columna del resultado se
almacena en una posici-n del arrayA empezando a partir de la posici-n 3;
Las siguientes llamadas a pg>fetch>ro3./ devolver*n la (ila siguiente en el con'unto resultadoA o
(also en el caso de /ue no haya m*s (ilas /ue devolver;
$er tam#i<nC pg>fetch>array./A pg>fetch>ob'ect./A pg>result./;
E'emplo !. Postgres fetch ro3
<?php
$conn > pE%pconnect3"","","","","publisher"9;
i# 3!$conn9 :
echo ",n error occured.Vn";
exit;
;
$result > pE%Exec 3$conn, "&EOER* W S'?" authors"9;
i# 3!$result9 :
echo ",n error occured.Vn";
exit;
;
$ro8 > pE%#etch%ro8 3$result, 29;
echo $ro8)2/ . " <F ro8Vn";
$ro8 > pE%#etch%ro8 3$result, 69;
echo $ro8)2/ . " <F ro8Vn";
$ro8 > pE%#etch%ro8 3$result, C9;
echo $ro8)6/ . " <F ro8Vn";
?>
pg>field>is>null
>P&P 8 _^ 8;0;3A P&P 4?
pgZ(ieldZisZnull 22 ,est i( a (ield is NULL
Kescription
int pg>field>is>null > resource resultA int roEA miFed (ield ?
pg>field>is>null./ tests i( a (ield is NULL or not; .t returns 1 i( the (ield in the given roE is NULL; .t
returns 3 i( the (ield in the given roE is NO, NULL; Field can #e speci(ied as column indeF
>num#er? or (ieldname >string?; RoE num#ering starts at 3;
E'emplo !. pg>field>is>null./ e+ample
<?php
$dbconn > pE%connect3"dbname>publisher"9 or die 3"Rould not connect"9;
$res > pE%Query3$dbconn, "select W #rom authors 8here author > M?r8ellM"9;
i# 3$res9 :
i# 3pE%#ield%is%null3$res, 2, "year"9 >> 69 :
echo "*he =alue o# the #ield year is null.Vn";
;
i# 3pE%#ield%is%null3$res, 2, "year"9 >> 29 :
echo "*he =alue o# the #ield year is not null.Vn";
;
;
?>
Nota- ,his (unction used to #e called pE_96el#6snullLM;
pg>field>name
>P&P 8 _^ 8;0;3A P&P 4?
pgZ(ieldZname 22 Returns the name o( a (ield
Kescription
string pg>field>name > resource resultA int (ieldZnum#er ?
pg>field>name./ returns the name o( the (ield occupying the given 96el#_num1er in the given
PostgreOL result resource; Field num#ering starts (rom 3;
E'emplo !. Fetting information about fields
<?php
$dbconn > pE%connect3"dbname>publisher"9 or die3"Rould not connect"9;
$res > pE%Query3$dbconn, "select W #rom authors 8here author > M?r8ellM"9;
$i > pE%num%#ields3$res9;
#or 3$j > 2; $j < $i; $j[[9 :
echo "column $jVn";
$#ieldname > pE%#ield%name3$res, $j9;
echo "#ieldname@ $#ieldnameVn";
echo "printed lenEth@ " . pE%#ield%prtlen3$res, $#ieldname9 . " charactersVn";
echo "storaEe lenEth@ " . pE%#ield%si0e3$res, $j9 . " bytesVn";
echo "#ield type@ " . pE%#ield%type3$res, $j9 . " VnVn";
;
?>
,he a#ove eFample Eould produce the (olloEing outputC
column 2
#ieldname@ author
printed lenEth@ G characters
storaEe lenEth@ F6 bytes
#ield type@ =archar
column 6
#ieldname@ year
printed lenEth@ 1 characters
storaEe lenEth@ C bytes
#ield type@ intC
column C
#ieldname@ title
printed lenEth@ C1 characters
storaEe lenEth@ F6 bytes
#ield type@ =archar
Nota- ,his (unction used to #e called pE_96el#nameLM;
ee also pg>field>num./;
pg>field>num
>P&P 8 _^ 8;0;3A P&P 4?
pgZ(ieldZnum 22 Returns the (ield num#er o( the named (ield
Kescription
int pg>field>num > resource resultA string (ieldZname ?
pg>field>num./ Eill return the num#er o( the column >(ield? slot that corresponds to the 96el#_name
in the given PostgreOL result resource; Field num#ering starts at 3; ,his (unction Eill return 21 on
error;
ee the eFample given at the pg>field>name./ page;
Nota- ,his (unction used to #e called pE_96el#numLM;
ee also pg>field>name./;
pg>field>prtlen
>P&P 8 _^ 8;0;3A P&P 4?
pgZ(ieldZprtlen 22 Returns the printed length
Kescription
int pg>field>prtlen > resource result PA int roEZnum#erA miFed (ieldZnameZorZnum#erQ ?
pg>field>prtlen./ returns the actual printed length >num#er o( characters? o( a speci(ic value in a
PostgreOL result; RoE num#ering starts at 3; ,his (unction Eill return 21 on an error;
96el#_name_or_num1er can #e passed either as an integer or as a string; .( it is passed as an
integerA P&P recognises it as the (ield num#erA otherEise as (ield name;
ee the eFample given at the pg>field>name./ page;
Nota- ,his (unction used to #e called pE_96el#prtlenLM;
ee also pg>field>si6e./;
pg>field>si6e
>P&P 8 _^ 8;0;3A P&P 4?
pgZ(ieldZsize 22 Returns the internal storage size o( the named (ield
Kescription
int pg>field>si6e > resource resultA int (ieldZnum#er ?
pg>field>si6e./ returns the internal storage size >in #ytes? o( the (ield num#er in the given
PostgreOL result; Field num#ering starts at 3; A (ield size o( 21 indicates a varia#le length (ield;
,his (unction Eill return FALSE on error;
ee the eFample given at the pg>field>name./ page;
Nota- ,his (unction used to #e called pE_96el#s6DeLM;
ee also pg>field>prtlen./ and pg>field>type./;
pg>field>type>oid
>no version in(ormationA might #e only in 5$?
pgZ(ieldZtypeZoid 22 Returns the type .D >O.D? (or the corresponding (ield num#er
Kescription
int pg>field>type>oid > resource resultA int (ieldZnum#er ?
pg>field>type>oid./ returns an integer containing the type .D the given 96el#_num1er in the given
PostgreOL result resource; Field num#ering starts at 3;
%ou can get more in(ormation a#out the (ield type #y /uerying PostgreOL pgZtype system ta#le
using the .D o#tained Eith this (unction;
ee also pg>field>type./A pg>field>prtlen./ and pg>field>name./;
pg>field>type
>P&P 8 _^ 8;0;3A P&P 4?
pgZ(ieldZtype 22 Returns the type name (or the corresponding (ield num#er
Kescription
string pg>field>type > resource resultA int (ieldZnum#er ?
pg>field>type./ returns a string containing the type name o( the given 96el#_num1er in the given
PostgreOL result resource; Field num#ering starts at 3;
ee the eFample given at the pg>field>name./ page;
Nota- ,his (unction used to #e called pE_96el#t?peLM;
ee also pg>field>prtlen./A pg>field>name./ and pg>field>type>oid./;
pg>free>result
>P&P 8 _^ 8;0;3A P&P 4?
pgZ(reeZresult 22 Free result memory
Kescription
#ool pg>free>result > resource result ?
pg>free>result./ only needs to #e called i( you are Eorried a#out using too much memory Ehile
your script is running; All result memory Eill automatically #e (reed Ehen the script is (inished;
ButA i( you are sure you are not going to need the result data anymore in a scriptA you may call
pg>free>result./ Eith the result resource as an argument and the associated result memory Eill #e
(reed; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- ,his (unction used to #e called pE_9reeresultLM;
ee also pg>?uery./;
pg>get>notify
>P&P 8 _^ 8;7;3A P&P 4?
pgZgetZnoti(y 22 Ping data#ase connection
Kescription
array pg>get>notify > resource connection PA int resultZtypeQ ?
pg>get>notify./ gets noti(y message sent #y NOT03B OL command; ,o receive noti(y messagesA
40STEN OL command must #e issued; .( there is noti(y message on the connectionA array contains
message name and #ac"end P.D is returned; .( there is no messageA FALSE is returned;
ee also pg>get>pid./
E'emplo !. Postgre,$: NJTI;@ message
<?php
$conn > pE%pconnect3"dbname>publisher"9;
i# 3!$conn9 :
echo ",n error occured.Vn";
exit;
;
// Oisten Mauthor%updatedM messaEe #rom other processes
pE%Query3$conn, MO4&*E. author%updated;M9;
$noti#y > pE%Eet%noti#y3$conn9;
i# 3!$noti#y9 :
echo ".o messaEesVn";
; else :
print%r3$noti#y9;
;
?>
pg>get>pid
>P&P 8 _^ 8;7;3A P&P 4?
pgZgetZpid 22 Ping data#ase connection
Kescription
int pg>get>pid > resource connection ?
pg>get>pid./ gets #ac"end >data#ase server process? P.D; P.D is use(ul to chec" i( NOT03B
message is sent (rom other process or not;
E'emplo !. Postgre,$: bacBend PIK
<?php
$conn > pE%pconnect3"dbname>publisher"9;
i# 3!$conn9 :
echo ",n error occured.Vn";
exit;
;
// ZacIend process 4L. +se 4L 8ith pE%Eet%noti#y39
$pid > pE%Eet%pid3$conn9;
?>
ee also pg>get>notify./;
pg>get>result
>P&P 8 _^ 8;0;3A P&P 4?
pgZgetZresult 22 Get asynchronous /uery result
Kescription
resource pg>get>result > Presource connectionQ ?
pg>get>result./ get result resource (rom async /uery eFecuted #y pg>send>?uery./;
pg>send>?uery./ can send multiple /ueries to PostgreOL server and pg>get>result./ is used to
get /uery result one #y one; .t returns result resource; .( there is no more resultsA it returns FALSE;
pg>Host
>P&P 7A P&P 8 A P&P 4?
pgZ&ost 22 Devuelve el nom#re del host
Kescripci"n
string pg>host > int connectionZid ?
pg>Host./ devuelve el nom#re del host al /ue identi(icador coneFi-n PostgreOL pasado est*
conectado;
pg>insert
>P&P 8 _^ 8;7;3A P&P 4?
pgZinsert 22 .nsert array into ta#le
Kescription
#ool pg>insert > resource connectionA string ta#leZnameA array assocZarray PA int optionsQ ?
pg>insert./ inserts the values o( assoc_arra? into the ta#le speci(ied #y ta1le_name; ta1le_name
must at least have as many columns as assoc_arra? has elements; ,he (ieldnames as Eell as the
(ieldvalues in ta1le_name must match the indices and values o( assoc_arra?; Devuelve TRUE si
todo se llev- a ca#o correctamenteA FALSE en caso de (allo; .( opt6ons is speci(iedA pg>insert./ is
applied to assoc_arra? Eith speci(ied option;
E'emplo !. pg>insert./ e+ample
<?php
$dbconn > pE%connect3Mdbname>#ooM9;
// *his is sa#e, since $%?&* is con=erted automatically
$res > pE%insert3$dbconn, Mpost%loEM, $%?&*9;
i# 3$res9 :
echo "?&* data is success#ully loEEedVn";
; else :
echo "+ser must ha=e sent 8ronE inputsVn";
;
?>
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ee also pg>con5ert./;
pg>last>error
>P&P 8 _^ 8;0;3A P&P 4?
pgZlastZerror 22 Get the last error message string o( a connection
Kescription
string pg>last>error > Presource connectionQ ?
pg>last>error./ returns the last error message (or given connect6on;
+rror messages may #e overEritten #y internal PostgreOL>li#p/? (unction calls; .t may not return
appropriate error messageA i( multiple errors are occurred inside a PostgreOL module (unction;
@se pg>result>error./A pg>result>status./ and pg>connection>status./ (or #etter error handling;
Nota- ,his (unction used to #e called pE_errormessaEeLM;
ee also pg>result>error./;
pg>last>notice
>P&P 8 _^ 8;3;KA P&P 4?
pgZlastZnotice 22 Returns the last notice message (rom PostgreOL server
Kescription
string pg>last>notice > resource connection ?
pg>last>notice./ returns the last notice message (rom the PostgreOL server speci(ied #y
connect6on; ,he PostgreOL server sends notice messages in several casesA e;g; i( the transactions
canHt #e continued; Lith pg>last>notice./A you can avoid issuing useless /ueriesA #y chec"ing
Ehether the notice is related to the transaction or not;
A5iso
,his (unction is +JP+R.M+N,AL and it is not (ully implemented yet; pg>last>notice./ Eas
added in P&P 8;3;K; &oEeverA P&P 8;3;K has pro#lem Eith notice message handling; @se o( the
PostgreOL module Eith P&P 8;3;K is not recommended even i( you are not using pg>last>notice
./;
,his (unction is (ully implemented in P&P 8;7;3; P&P earlier than P&P 8;7;3 ignores data#ase
connection parameter;
Notice message trac"ing can #e set to optional #y setting 1 (or pEs@l.6Enore_not6ce in php.ini
(rom P&P 8;7;3;
Notice message logging can #e set to optional #y setting 3 (or pEs@l.loE_not6ce in php.ini (rom
P&P 8;7;3; @nless pEs@l.6Enore_not6ce is set to 3A notice message cannot #e logged;
ee also pg>?uery./ and pg>last>error./;
pg>last>oid
>P&P 8 _^ 8;0;3A P&P 4?
pgZlastZoid 22 Returns the last o#'ectHs oid
Kescription
int pg>last>oid > resource result ?
pg>last>oid./ is used to retrieve the o6# assigned to an inserted tuple >record? i( the result resource
is used (rom the last command sent via pg>?uery./ and Eas an OL .N+R,; Returns a positive
integer i( there Eas a valid o6#; .t returns FALSE i( an error occurs or the last command sent via
pg>?uery./ Eas not an .N+R, or .N+R, is (ailed;
O.D (ield #ecame an optional (ield (rom PostgreOL :;0; Lhen O.D (ield is not de(ined in a ta#leA
programmer must use pg>result>status./ to chec" i( record is is inserted success(ully or not;
Nota- ,his (unction used to #e called pE_Eetlasto6#LM;
ee also pg>?uery./ and pg>result>status./
pg>lo>close
>P&P 8 _^ 8;0;3A P&P 4?
pgZloZclose 22 5lose a large o#'ect
Kescription
#ool pg>lo>close > resource largeZo#'ect ?
pg>lo>close./ closes a Large O#'ect; larEe_o1Uect is a resource (or the large o#'ect (rom
pg>lo>open./;
,o use the large o#'ect >lo? inter(aceA it is necessary to enclose it Eithin a transaction #loc";
Nota- ,his (unction used to #e called pE_locloseLM;
ee also pg>lo>open./A pg>lo>create./ and pg>lo>import./;
pg>lo>create
>P&P 8 _^ 8;0;3A P&P 4?
pgZloZcreate 22 5reate a large o#'ect
Kescription
int pg>lo>create > Presource connectionQ ?
pg>lo>create./ creates a Large O#'ect and returns the o6# o( the large o#'ect; connect6on speci(ies a
valid data#ase connection opened #y pg>connect./ or pg>pconnect./; PostgreOL access modes
.N$ZR+ADA .N$ZLR.,+A and .N$ZAR5&.$+ are not supportedA the o#'ect is created alEays
Eith #oth read and Erite access; .N$ZAR5&.$+ has #een removed (rom PostgreOL itsel(
>version K;7 and a#ove?; .t returns large o#'ect oidA otherEise it returns FALSE i( an error occurred;
,o use the large o#'ect >lo? inter(aceA it is necessary to enclose it Eithin a transaction #loc";
Nota- ,his (unction used to #e called pE_locreateLM;
pg>lo>e+port
>P&P 8 _^ 8;0;3A P&P 4?
pgZloZeFport 22 +Fport a large o#'ect to (ile
Kescription
#ool pg>lo>e+port > Presource connectionA int oidA string pathnameQ ?
,he o6# argument speci(ies oid o( the large o#'ect to eFport and the pathname argument speci(ies
the pathname o( the (ile; .t returns FALSE i( an error occurredA TRUE otherEise;
,o use the large o#'ect >lo? inter(aceA it is necessary to enclose it Eithin a transaction #loc";
Nota- ,his (unction used to #e called pE_loe8portLM;
ee also pg>lo>import./;
pg>lo>import
>P&P 8 _^ 8;0;3A P&P 4?
pgZloZimport 22 .mport a large o#'ect (rom (ile
Kescription
int pg>lo>import > Presource connectionA string pathnameQ ?
.n versions #e(ore P&P 8;0;3 the syntaF o( this (unction Eas di((erentA see the (olloEing de(initionC
int pg>lo>import > string pathname PA resource connectionQ ?
,he pathname argument speci(ies the pathname o( the (ile to #e imported as a large o#'ect; .t returns
FALSE i( an error occurredA oid o( the 'ust created large o#'ect otherEise;
,o use the large o#'ect >lo? inter(aceA it is necessary to enclose it Eithin a transaction #loc";
Nota- 5uando sa(e2mode >modo2seguro? est* activadoA P&P comprue#a si los archivos
o directorios /ue va a utilizar tienen la misma @.D /ue el script /ue est* siendo
e'ecutado;
Nota- ,his (unction used to #e called pE_lo6mportLM;
ee also pg>lo>e+port./ and pg>lo>open./;
pg>lo>open
>P&P 8 _^ 8;0;3A P&P 4?
pgZloZopen 22 Open a large o#'ect
Kescription
resource pg>lo>open > resource connectionA int oidA string mode ?
pg>lo>open./ opens a Large O#'ect and returns large o#'ect resource; ,he resource encapsulates
in(ormation a#out the connection; o6# speci(ies a valid large o#'ect oid and mo#e can #e either =r=A
=E=A or =rE=; .t returns FALSE i( there is an error;
A5iso
Do not close the data#ase connection #e(ore closing the large o#'ect resource;
,o use the large o#'ect >lo? inter(aceA it is necessary to enclose it Eithin a transaction #loc";
Nota- ,his (unction used to #e called pE_loopenLM;
ee also pg>lo>close./ and pg>lo>create./;
pg>lo>read>all
>P&P 8 _^ 8;0;3A P&P 4?
pgZloZreadZall 22 Reads an entire large o#'ect and send straight to #roEser
Kescription
int pg>lo>read>all > resource largeZo#'ect ?
pg>lo>read>all./ reads a large o#'ect and passes it straight through to the #roEser a(ter sending all
pending headers; Mainly intended (or sending #inary data li"e images or sound; .t returns num#er o(
#ytes read; .t returns FALSEA i( an error occurred;
,o use the large o#'ect >lo? inter(aceA it is necessary to enclose it Eithin a transaction #loc";
Nota- ,his (unction used to #e called pE_lorea#allLM;
ee also pg>lo>read./;
pg>lo>read
>P&P 8 _^ 8;0;3A P&P 4?
pgZloZread 22 Read a large o#'ect
Kescription
string pg>lo>read > resource largeZo#'ect PA int lenQ ?
pg>lo>read./ reads at most len >de(aults to M190? #ytes (rom a large o#'ect and returns it as a string;
larEe_o1Uect speci(ies a valid large o#'ect resource andlen speci(ies the maFimum alloEa#le size o(
the large o#'ect segment; .t returns FALSE i( there is an error;
,o use the large o#'ect >lo? inter(aceA it is necessary to enclose it Eithin a transaction #loc";
Nota- ,his (unction used to #e called pE_lorea#LM;
ee also pg>lo>read>all./;
pg>lo>seeB
>P&P 8 _^ 8;0;3A P&P 4?
pgZloZsee" 22 ee"s position o( large o#'ect
Kescription
#ool pg>lo>seeB > resource largeZo#'ectA int o((set PA int EhenceQ ?
pg>lo>seeB./ see"s position o( large o#'ect resource; 7hence is PGOLZ++SZ+,A
PGOLZ++SZ5@R or PGOLZ++SZ+ND;
ee also pg>lo>tell./;
pg>lo>tell
>P&P 8 _^ 8;0;3A P&P 4?
pgZloZtell 22 Returns current position o( large o#'ect
Kescription
int pg>lo>tell > resource largeZo#'ect ?
pg>lo>tell./ returns current position >o((set (rom the #eginning o( large o#'ect?;
ee also pg>lo>seeB./;
pg>lo>unlinB
>P&P 8 _^ 8;0;3A P&P 4?
pgZloZunlin" 22 Delete a large o#'ect
Kescription
#ool pg>lo>unlinB > resource connectionA int oid ?
pg>lo>unlinB./ deletes a large o#'ect Eith the o6#; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo;
,o use the large o#'ect >lo? inter(aceA it is necessary to enclose it Eithin a transaction #loc";
Nota- ,his (unction used to #e called pE_lo_unl6n>LM;
ee also pg>lo>create./ and pg>lo>import./;
pg>lo>3rite
>P&P 8 _^ 8;0;3A P&P 4?
pgZloZErite 22 Lrite a large o#'ect
Kescription
int pg>lo>3rite > resource largeZo#'ectA string data PA int lenQ ?
pg>lo>3rite./ Erites at most to a large o#'ect (rom a varia#le #ata and returns the num#er o( #ytes
actually ErittenA or FALSE in the case o( an error; larEe_o1Uect is a large o#'ect resource (rom
pg>lo>open./;
,o use the large o#'ect >lo? inter(aceA it is necessary to enclose it Eithin a transaction #loc";
Nota- ,his (unction used to #e called pE_lo7r6teLM;
ee also pg>lo>create./ and pg>lo>open./;
pg>meta>data
>P&P 8 _^ 8;7;3A P&P 4?
pgZmetaZdata 22 Get meta data (or ta#le
Kescription
array pg>meta>data > resource connectionA string ta#leZname ?
pg>meta>data./ returns ta#le de(inition (or ta1le_name as an array; .( there is errorA it returns
FALSE
E'emplo !. Fetting table metadata
<?php
$dbconn > pE%connect3"dbname>publisher"9 or die3"Rould not connect"9;
$meta > pE%meta%data3$dbconn, MauthorsM9;
i# 3is%array3$meta99 :
echo M<pre>M;
=ar%dump3$meta9;
echo M</pre>M;
;
?>
,he a#ove eFample Eould produce the (olloEing outputC
array3<9 :
)"author"/>>
array359 :
)"num"/>>
int369
)"type"/>>
strinE3H9 "=archar"
)"len"/>>
int3F69
)"not null"/>>
bool3#alse9
)"has de#ault"/>>
bool3#alse9
;
)"year"/>>
array359 :
)"num"/>>
int3C9
)"type"/>>
strinE319 "intC"
)"len"/>>
int3C9
)"not null"/>>
bool3#alse9
)"has de#ault"/>>
bool3#alse9
;
)"title"/>>
array359 :
)"num"/>>
int3<9
)"type"/>>
strinE3H9 "=archar"
)"len"/>>
int3F69
)"not null"/>>
bool3#alse9
)"has de#ault"/>>
bool3#alse9
;
;
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ee also pg>con5ert./;
pg>num>fields
>P&P 8 _^ 8;0;3A P&P 4?
pgZnumZ(ields 22 Returns the num#er o( (ields
Kescription
int pg>num>fields > resource result ?
pg>num>fields./ returns the num#er o( (ields >columns? in a PostgreOL result; ,he argument is a
result resource returned #y pg>?uery./; ,his (unction Eill return 21 on error;
Nota- ,his (unction used to #e called pE_num96el#sLM;
ee also pg>num>ro3s./ and pg>affected>ro3s./;
pg>num>ro3s
>P&P 8 _^ 8;0;3A P&P 4?
pgZnumZroEs 22 Returns the num#er o( roEs
Kescription
int pg>num>ro3s > resource result ?
pg>num>ro3s./ Eill return the num#er o( roEs in a PostgreOL result resource; result is a /uery
result resource returned #y pg>?uery./; ,his (unction Eill return 21 on error;
Nota- @se pg>affected>ro3s./ to get num#er o( roEs a((ected #y .N+R,A @PDA,+
and D+L+,+ /uery;
Nota- ,his (unction used to #e called pE_numro7sLM;
ee also pg>num>fields./ and pg>affected>ro3s./;
pg>Jptions
>P&P 7A P&P 8 A P&P 4?
pgZOptions 22 Devuelve opciones
Kescripci"n
string pg>options > int connectionZid ?
pg>Jptions./ devuelve una cadena /ue contiene las opciones especi(icadas en el identi(icador de
coneFi-n con PostgreOL dado;
pg>parameter>status
>P&P 4?
pgZparameterZstatus 22 Returns the value o( a server parameter
Kescription
string pg>parameter>status > Presource connectionA string paramZnameQ ?
pg>parameter>status./ returns a string Eith the current param_name value; Returns FALSE on
(ailure;
,he parameters currently availa#le includeC serverZversionA clientZencodingA isZsuperuserA
sessionZauthorizationA and Datetyle;
pg>pConnect
>P&P 7A P&P 8 A P&P 4?
pgZp5onnect 22 5rea una coneFi-n persistente con una #ase de datos
Kescripci"n
int pg>pconnect > string hostA string portA string optionsA string ttyA string d#name ?
Devuelve un )ndice de coneFi-n en caso de <FitoA o FALSE si no es posi#le realizar la coneFi-n;
A#re una coneFi-n persistente hacia una #ase de datos de PostgreOL; 5ada uno de los par*metros
puede ser una cadena entrecomillada >/uoted?A incluyendo el nBmero de puerto; Los par*metros
options y tty son opcionales y pueden omitirse; +sta (unci-n devuelve un )ndice de coneFi-n /ue
luego ser* empleado al llamar a otras (unciones PostgreOL; Puedes tener multiples coneFiones
persistentes a#iertas al mismo tiempo; $er tam#i<n pg>Connect./;
@na coneFi-n tam#i<n se puede esta#lecer con el comando siguienteC Vconn H pg>pconnect
.0dbnameHmarliese portH987*0/Z Otros par*metros adem*s de #1name y port son hostA tt?A
opt6onsA user y pass7or#;
pg>ping
>P&P 8 _^ 8;7;3A P&P 4?
pgZping 22 Ping data#ase connection
Kescription
#ool pg>ping > resource connection ?
pg>ping./ ping data#ase connectionA try to reconnect i( it is #ro"en; .t returns TRUE i( connection is
aliveA otherEise FALSE;
E'emplo !. pg>ping./ e+ample
<?php
$conn > pE%pconnect3"dbname>publisher"9;
i# 3!$conn9 :
echo ",n error occured.Vn";
exit;
;
i# 3!pE%pinE3$conn99
die3"Ronnection is broIenVn"9;
?>
ee also pg>connection>status./ and pg>connection>reset./;
pg>Port
>P&P 7A P&P 8 A P&P 4?
pgZPort 22 Devuelve el nBmero de puerto
Kescripci"n
int pg>port > int connectionZid ?
pg>Port./ devuelve el nBmero del puerto al /ue el identi(icador de coneFi-n con PostgreOL est*
conectado;
pg>put>line
>P&P 8 _^ 8;3;7A P&P 4?
pgZputZline 22 end a N@LL2terminated string to PostgreOL #ac"end
Kescription
#ool pg>put>line > string data ?
#ool pg>put>line > resource connectionA string data ?
pg>put>line./ sends a N@LL2terminated string to the PostgreOL #ac"end server; ,his is use(ul (or
eFample (or very high2speed inserting o( data into a ta#leA initiated #y starting a PostgreOL copy2
operation; ,hat (inal N@LL2character is added automatically; Devuelve TRUE si todo se llev- a
ca#o correctamenteA FALSE en caso de (allo;
Nota- ,he application must eFplicitly send the tEo characters =h;= on the last line to
indicate to the #ac"end that it has (inished sending its data;
E'emplo !. High(speed insertion of data into a table
<?php
$conn > pE%pconnect3"dbname>#oo"9;
pE%Query3$conn, "create table bar 3a int1, b char36G9, d #loatJ9"9;
pE%Query3$conn, "copy bar #rom stdin"9;
pE%put%line3$conn, "<Vthello 8orldVt1.5Vn"9;
pE%put%line3$conn, "1VtEoodbye 8orldVtH.66Vn"9;
pE%put%line3$conn, "VV.Vn"9;
pE%end%copy3$conn9;
?>
A5iso
@se o( the pg>put>line./ causes most large o#'ect operationsA including pg>lo>read./ and
pg>lo>tell./A to su#se/uently (ail; %ou can use pg>copy>from./ and pg>copy>to./ instead;
ee also pg>end>copy./;
pg>?uery
>P&P 8 _^ 8;0;3A P&P 4?
pgZ/uery 22 +Fecute a /uery
Kescription
resource pg>?uery > string /uery ?
resource pg>?uery > resource connectionA string /uery ?
pg>?uery./ returns a /uery result resource i( /uery could #e eFecuted; .t returns FALSE on (ailure
or i( connection is not a valid connection; Details a#out the error can #e retrieved using the
pg>last>error./ (unction i( connection is valid; pg>?uery./ sends an OL statement to the
PostgreOL data#ase speci(ied #y the connect6on resource; ,he connect6on must #e a valid
connection that Eas returned #y pg>connect./ or pg>pconnect./; ,he return value o( this (unction
is an /uery result resource to #e used to access the results (rom other PostgreOL (unctions such as
pg>fetch>array./;
Nota- connect6on is an optional parameter (or pg>?uery./; .( connect6on is not setA
de(ault connection is used; De(ault connection is the last connection made #y
pg>connect./ or pg>pconnect./;
Although connect6on can #e omittedA it is not recommendedA since it could #e a cause o(
hard to (ind #ug in script;
Nota- ,his (unction used to #e called pE_e8ecLM; pE_e8ecLM is still availa#le (or
compati#ility reasons #ut users are encouraged to use the neEer name;
ee also pg>connect./A pg>pconnect./A pg>fetch>array./A pg>fetch>ob'ect./A pg>num>ro3s./ and
pg>affected>ro3s./;
pg>result>error
>P&P 8 _^ 8;0;3A P&P 4?
pgZresultZerror 22 Get error message associated Eith result
Kescription
string pg>result>error > resource result ?
pg>result>error./ returns error message associated Eith result resource; ,here(oreA user has #etter
chance to get #etter error message than pg>last>error./;
Because pg>?uery./ returns FALSE i( the /uery (ailsA you must use pg>send>?uery./ and
pg>get>result./ to get the result handle;
ee also pg>?uery./A pg>send>?uery./A pg>get>result./A pg>last>error./ and pg>last>notice./
pg>result>seeB
>P&P 8 _^ 8;7;3A P&P 4?
pgZresultZsee" 22 et internal roE o((set in result resource
Kescription
array pg>result>seeB > resource resultA int o((set ?
pg>result>seeB./ set internal roE o((set in result resource; .t returns FALSEA i( there is error;
ee also pg>fetch>ro3./A pg>fetch>assoc./A pg>fetch>array./A pg>fetch>ob'ect./ and
pg>fetch>result./;
pg>result>status
>P&P 8 _^ 8;0;3A P&P 4?
pgZresultZstatus 22 Get status o( /uery result
Kescription
int pg>result>status > resource result ?
pg>result>status./ returns status o( result resource; Possi#le return values are
PGOLZ+MP,%ZO@+R%A PGOLZ5OMMANDZOSA PGOLZ,@PL+ZOSA
PGOLZ5OP%Z,OA PGOLZ5OP%ZFROMA PGOLZBADZR+PON+A
PGOLZNONFA,ALZ+RROR and PGOLZFA,ALZ+RROR;
ee also pg>connection>status./;
pg>select
>P&P 8 _^ 8;7;3A P&P 4?
pgZselect 22 elect records
Kescription
array pg>select > resource connectionA string ta#leZnameA array assocZarray PA int optionsQ ?
pg>select./ selects records speci(ied #y assoc_arra? Ehich has 96el#:&alue; For success(ul /ueryA
it returns array contains all records and (ields that match the condition speci(ied #y assoc_arra?; .(
opt6ons is speci(iedA pg>con5ert./ is applied to assoc_arra? Eith speci(ied option;
E'emplo !. pg>select./ e+ample
<?php
$db > pE%connect3Mdbname>#ooM9;
// *his is sa#e, since $%?&* is con=erted automatically
$rec > pE%select3$db, Mpost%loEM, $%?&*9;
i# 3$rec9 :
echo "'ecords selectedVn";
=ar%dump3$rec9;
; else :
echo "+ser must ha=e sent 8ronE inputsVn";
;
?>
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ee also pg>con5ert./
pg>send>?uery
>P&P 8 _^ 8;0;3A P&P 4?
pgZsendZ/uery 22 ends asynchronous /uery
Kescription
#ool pg>send>?uery > resource connectionA string /uery ?
#ool pg>send>?uery > string /uery ?
pg>send>?uery./ send asynchronous /uery to the connect6on; @nli"e pg>?uery./A it can send
multiple /uery to PostgreOL and get the result one #y one using pg>get>result./; cript eFecution
is not #loc"ed Ehile /uery is eFecuting; @se pg>connection>busy./ to chec" connection is #usy
>i;e; /uery is eFecuting?; Ouery may #e cancelled #y calling pg>cancel>?uery./;
Although user can send multiple /uery at onceA user cannot send multiple /uery over #usy
connection; .( /uery is sent Ehile connection is #usyA it Eaits until last /uery is (inished and discards
all result;
E'emplo !. Asynchronous $ueries
<?php
$dbconn > pE%connect3"dbname>publisher"9 or die3"Rould not connect"9;
i# 3!pE%connection%busy3$dbconn99 :
pE%send%Query3$dbconn, "select W #rom authors; select count3W9 #rom authors;"9;
;

$res6 > pE%Eet%result3$dbconn9;
echo "Sirst call to pE%Eet%result39@ $res6Vn";
$ro8s6 > pE%num%ro8s3$res69;
echo "$res6 has $ro8s6 recordsVnVn";

$resC > pE%Eet%result3$dbconn9;
echo "second call to pE%Eet%result39@ $resCVn";
$ro8sC > pE%num%ro8s3$resC9;
echo "$resC has $ro8sC recordsVn";
?>
,he a#ove eFample Eould produce the (olloEing outputC
#irst call to pE%Eet%result39@ 'esource id U<
'esource id U< has < records
second call to pE%Eet%result39@ 'esource id U1
'esource id U1 has 6 records
ee also pg>?uery./A pg>cancel>?uery./A pg>get>result./ and pg>connection>busy./;
pg>set>client>encoding
>P&P 7 5$ onlyA P&P 8 _^ 8;3;7A P&P 4?
pgZsetZclientZencoding 22 et the client encoding
Kescription
int pg>set>client>encoding > string encoding ?
int pg>set>client>encoding > resource connectionA string encoding ?
pg>set>client>encoding./ sets the client encoding and returns 3 i( success or 21 i( error;
enco#6nE is the client encoding and can #e either C OLZA5..A +@5Z!PA +@5Z5NA +@5ZSRA
+@5Z,LA @N.5OD+A M@L+Z.N,+RNALA LA,.NJ >J^1;;;9?A SO.MA L.NA AL,A !.A B.G4A
L.N1043; Availa#le encoding depends on your PostgreOL and li#p/ version; Re(er to
PostgreOL manual (or supported encodings (or your PostgreOL;
Nota- ,his (unction re/uires P&P28;3;7 or higher and PostgreOL2:;3 or higher;
upported encoding depends on PostgreOL version; Re(er to PostgreOL manual (or
details;
,he (unction used to #e called pE_setcl6entenco#6nELM;
ee also pg>client>encoding./;
pg>trace
>P&P 8 _^ 8;3;1A P&P 4?
pgZtrace 22 +na#le tracing a PostgreOL connection
Kescription
#ool pg>trace > string pathname PA string mode PA resource connectionQQ ?
pg>trace./ ena#les tracing o( the PostgreOL (rontendD#ac"end communication to a de#ugging (ile
speci(ied as pathname; ,o (ully understand the resultsA one needs to #e (amiliar Eith the internals o(
PostgreOL communication protocol; For those Eho are notA it can still #e use(ul (or tracing errors
in /ueries sent to the serverA you could do (or eFample grep UdTo bacBendU trace.log and see Ehat
/uery actually Eere sent to the PostgreOL server; For more in(ormationA re(er to PostgreOL
manual;
pathname and mo#e are the same as in fopen./ >mo#e de(aults to HEH?A connect6on speci(ies the
connection to trace and de(aults to the last one opened;
pg>trace./ returns TRUE i( pathname could #e opened (or loggingA FALSE otherEise;
ee also fopen./ and pg>untrace./;
pg>tty
>P&P 7A P&P 8 A P&P 4?
pgZtty 22 Devuelve el nom#re del tty
Kescripci"n
string pg>tty > int connectionZid ?
pg>tty./ devuelve el nom#re del tty hacia el /ue se diri'e la salida de depuraci-n del lado del
servidor en el identi(icador de coneFi-n de PostgreOL dado;
pg>unescape>bytea
>P&P 8 _^ 8;7;3A P&P 4?
pgZunescapeZ#ytea 22 @nescape #inary (or #ytea type
Kescription
string pg>unescape>bytea > string data ?
pg>unescape>bytea./ unescapes string (rom #ytea datatype; .t returns unescaped string >#inary?;
Nota- Lhen you +L+5, #ytea typeA PostgreOL returns octal #yte value pre(iFed #y h
>e;g; h370?; @sers are supposed to convert #ac" to #inary (ormat #y yoursel(;
,his (unction re/uires PostgreOL :;0 or later; Lith PostgreOL :;0;3 and :;0;1A #ytea
type must #e casted Ehen you ena#le multi2#yte support; i;e; 0NSERT 0NTO test_ta1le
L6maEeM (,4UES L<'6maEe_escape#<::1?teaMJ PostgreOL :;0;0 or later does not need
cast; +Fception is Ehen client and #ac"end character encoding does not matchA there
may #e multi2#yte stream error; @ser must cast to #ytea to avoid this error;
ee also pg>escape>bytea./ and pg>escape>string./
pg>untrace
>P&P 8 _^ 8;3;1A P&P 4?
pgZuntrace 22 Disa#le tracing o( a PostgreOL connection
Kescription
#ool pg>untrace > Presource connectionQ ?
top tracing started #y pg>trace./; connect6on speci(ies the connection that Eas traced and de(aults
to the last one opened;
Returns alEays TRUE;
ee also pg>trace./;
pg>update
>P&P 8 _^ 8;7;3A P&P 4?
pgZupdate 22 @pdate ta#le
Kescription
miFed pg>update > resource connectionA string ta#leZnameA array dataA array condition PA int
optionsQ ?
pg>update./ updates records that matches con#6t6on Eith #ata; .( opt6ons is speci(iedA pg>con5ert./
is applied to #ata Eith speci(ied options;
E'emplo !. pg>update./ e+ample
<?php
$db > pE%connect3Mdbname>#ooM9;
$data > array3M#ield6M>>M,,M, M#ieldCM>>MZZM9;

// *his is sa#e, since $%?&* is con=erted automatically
$res > pE%update3$db, Mpost%loEM, $%?&*, $data9;
i# 3$res9 :
echo "Lata is updated@ $resVn";
; else :
echo "+ser must ha=e sent 8ronE inputsVn";
;
?>
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
ee also pg>con5ert./;
pg>5ersion
>P&P 4?
pgZversion 22 Returns an array Eith clientA protocol and server version >Ehen availa#le?
Kescription
array pg>5ersion > Presource connectionQ ?
pg>5ersion./ returns an array Eith the clientA protocol and server version; Protocol and server
versions are only avalia#le i( P&P Eas compiled Eith PostgreOL :;8 or later;
CI. ;unciones PJ,II
Introducci"n
+ste m-dulo contiene una inter(az con a/uellas (unciones de(inidas en el documento est*ndar .+++
1337;1 >PO.J;1?A y /ue no son ase/ui#les de otra manera; PO.J;1A por e'emploA de(ini- tam#i<n
las (unciones open>?A read>?A Erite>? y close>?A las cuales han sido tradicionalmente parte de P&P 7
durante mucho tiempo; in em#argoA algunas (unciones m*s espec)(icas del sistema no ha#)an
estado disponi#les antesA y <ste m-dulo intenta remediar esto o(reciendo un acceso (*cil a esas
(unciones;
A5iso
Pueden recuperarse datos sensi#les con las (unciones PO.JA p;e'; posi+>getp3nam./ y amigos;
Ninguna de las (unciones PO.J realizan algBn tipo de che/ueo de acceso cuando el modo seguro
se encuentra ha#ilitado; Por lo tantoA es muy recomenda#le desha#ilitar la eFtensi-n PO.J por
completo >use ==#6sa1le=pos68 en su l)nea de con(iguraci-n? si est* operando en tal tipo de entorno;
Nota- +sta eFtensi-n no est* disponi#le en plata(ormas LindoEs
Instalaci"n
Las (unciones PO.J son ha#ilitadas por de(ecto; Puede desha#ilitar las (unciones tipo PO.J con
==#6sa1le=pos68;
Cer tambi%n
La secci-n so#re Funciones de 5ontrol de Procesos puede ser de su inter<s;
Tabla de contenidos
posiFZaccess 22 Determine accessi#ility o( a (ile
posiFZctermid 22 Recoge el nom#re de ruta de la terminal de control
posiFZgetZlastZerror 22 Recuperar el nBmero de error esta#lecido por la Bltima (unci-n posiF /ue ha
(allado
posiFZgetcEd 22 Nom#re de ruta del directorio actual
posiFZgetegid 22 Devuelve el .D de grupo e(ectivo del proceso actual
posiFZgeteuid 22 Devuelve el .D de usuario e(ectivo del proceso actual
posiFZgetgid 22 Devuelve el .D de grupo real del proceso actual
posiFZgetgrgid 22 Devuelve in(ormaci-n so#re un grupo a trave del id de grupo
posiFZgetgrnam 22 Devuelve in(ormaci-n so#re un grupo a traves del nom#re
posiFZgetgroups 22 Devuelve el con'unto de grupos del proceso actual
posiFZgetlogin 22 Devuelve el nom#re de usuario
posiFZgetpgid 22 Recoge el id del grupo de procesos para el control de tra#a'o
posiFZgetpgrp 22 Devuelve el identi(icador de grupo del proceso actual
posiFZgetpid 22 Devuelve el identi(icador del proceso actual
posiFZgetppid 22 Devuelve el identi(icador del proceso padre
posiFZgetpEnam 22 Devuelve in(ormaci-n so#re un usuario a traves del nom#re de usuario
posiFZgetpEuid 22 Devuelve in(ormaci-n so#re un usuario a traves de su id
posiFZgetrlimit 22 Devuelve in(ormaci-n so#re los limites de recursos del sistema
posiFZgetsid 22 5onsigue el sid actual del proceso
posiFZgetuid 22 Devuelve el .D de usuario real del proceso actual
posiFZisatty 22 Determinar si un descriptor de archivo es una terminal interactiva
posiFZ"ill 22 Manda una seWal a un proceso
posiFZm"(i(o 22 5rear un archivo especial (i(o >un pipe con nom#re?
posiFZsetegid 22 +sta#lecer el G.D e(ectivo del proceso actual
posiFZseteuid 22 +sta#lecer el @.D e(ectivo del proceso actual
posiFZsetgid 22 Asigna el G.D e(ectivo del proceso actual
posiFZsetpgid 22 Asigna el id de grupo de procesos para el control de tra#a'os
posiFZsetsid 22 5onvierte el proceso actual en lider de sesi-n
posiFZsetuid 22 Asigna el @.D e(ectivo del proceso actual
posiFZstrerror 22 Recuperar el mensa'e de error del sistema asociado con el errno dado
posiFZtimes 22 Recoge el tiempo de los procesos
posiFZttyname 22 Determina el nom#re del dispositivo terminal
posiFZuname 22 5onsigue el nom#re del sistema
posi+>access
>no version in(ormationA might #e only in 5$?
posiFZaccess 22 Determine accessi#ility o( a (ile
Kescripci"n
#ool posi+>access > string (ile PA int modeQ ?
posi+>access./ chec"s the userHs permission o( a (ile;
Nota- 5uando sa(e2mode >modo2seguro? est* activadoA P&P comprue#a si los archivos
o directorios /ue va a utilizar tienen la misma @.D /ue el script /ue est* siendo
e'ecutado;
:ista de parmetros
96le
,he name o( the (ile to #e tested;
mo#e
A mas" consisting o( one or more o( POSI%_F_O&A POSI%_R_O&A POSI%_"_O& and
POSI%_%_O&; De(aults to POSI%_F_O&;
POSI%_R_O&A POSI%_"_O& and POSI%_%_O& re/uest chec"ing Ehether the (ile eFists
and has readA Erite and eFecute permissionsA respectively; POSI%_F_O& 'ust re/uests
chec"ing (or the eFistence o( the (ile;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. posi+>access./ e+ample
,his eFample Eill chec" i( the Y(ile is reada#le and Erita#leA otherEise Eill print an error message;
<?php
$#ile > Msome%#ileM;
i# 3posix%access3$#ile, ?&4X%'%?] T ?&4X%7%?]99 :
echo M*he #ile is readable and 8ritable!M;
; else :
$error > posix%Eet%last%error39;
echo "Error $error@ " . posix%strerror3$error9;
;
?>
Cer tambi%n
posi+>get>last>error./
posi+>strerror./
posi+>ctermid
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZctermid 22 Recoge el nom#re de ruta de la terminal de control
Kescripci"n
string posi+>ctermid > void ?
Necesita ser escrito;
posi+>get>last>error
>P&P 8 _^ 8;0;3A P&P 4?
posiFZgetZlastZerror 22 Recuperar el nBmero de error esta#lecido por la Bltima (unci-n posiF /ue ha
(allado
Kescripci"n
int posi+>get>last>error > void ?
Devuelve el valor errno >nBmero de error? esta#lecido por la Bltima (unci-n posiF /ue (all-; i no
eFiste errorA el valor 3 es devuelto; i desea contar con el mensa'e de error del sistema asociado con
el errnoA utilice posi+>strerror./;
$ea tam#i<n posi+>strerror./;
posi+>getc3d
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZgetcEd 22 Nom#re de ruta del directorio actual
Kescripci"n
string posi+>getc3d > void ?
Necesita ser escrito cuanto antes;
posi+>getegid
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
posiFZgetegid 22 Devuelve el .D de grupo e(ectivo del proceso actual
Kescripci"n
int posi+>getegid > void ?
Devuelve el valor num<rico .D de grupo e(ectivo del proceso actual; $ea tam#i<n posi+>getgrgid./
para in(ormaci-n so#re como convertir este nBmero en un nom#re de grupo mane'a#le;
posi+>geteuid
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
posiFZgeteuid 22 Devuelve el .D de usuario e(ectivo del proceso actual
Kescripci"n
int posi+>geteuid > void ?
Devuelve el valor num<rico .D de usuario e(ectivo del proceso actual; $ea tam#i<n
posi+>getp3uid./ para in(ormaci-n so#re como convertir este nBmero en un nom#re de usuario
mane'a#le;
posi+>getgid
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
posiFZgetgid 22 Devuelve el .D de grupo real del proceso actual
Kescripci"n
int posi+>getgid > void ?
Devuelve el valor nBmerico .D de grupo real del proceso actual; $ea tam#i<n posi+>getgrgid./ para
in(ormaci-n so#re como convertir esto en un nom#re de grupo mane'a#le;
posi+>getgrgid
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZgetgrgid 22 Devuelve in(ormaci-n so#re un grupo a trave del id de grupo
Kescripci"n
array posi+>getgrgid > int gid ?
Necesita ser escrito;
posi+>getgrnam
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZgetgrnam 22 Devuelve in(ormaci-n so#re un grupo a traves del nom#re
Kescripci"n
array posi+>getgrnam > string name ?
Necesita ser escrito;
posi+>getgroups
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
posiFZgetgroups 22 Devuelve el con'unto de grupos del proceso actual
Kescripci"n
array posi+>getgroups > void ?
Devuelve un vector de enteros /ue contiene los ids num<ricos de grupo de el con'unto de grupos del
proceso actual; $ea tam#i<n posi+>getgrgid./ para in(ormaci-n so#re como convertir esto en
nom#res de grupo mane'a#les;
posi+>getlogin
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZgetlogin 22 Devuelve el nom#re de usuario
Kescripci"n
string posi+>getlogin > void ?
Devuelve el nom#re de usuario >login? /ue es dueWo del proceso actual; $ea posi+>getp3nam./
para in(ormaci-n so#re como conseguir mas datos de este usuario;
posi+>getpgid
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
posiFZgetpgid 22 Recoge el id del grupo de procesos para el control de tra#a'o
Kescripci"n
int posi+>getpgid > int pid ?
Devuelve el identi(icador de grupo de procesos del proceso p6#;
+sta no es una (unci-n PO.JA pero es normal en sistemas BD y ystem $; i su sistema no
soporta esta (unci-n a nivel de sistemaA esta (unci-n P&P devolver* siempre FALSE;
posi+>getpgrp
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
posiFZgetpgrp 22 Devuelve el identi(icador de grupo del proceso actual
Kescripci"n
int posi+>getpgrp > void ?
Devuelve el identi(icador de grupo de proceso del proceso actual; $ea PO.J;1 y la p*gina de
manual getpgrp>0? de su sistema PO.J para m*s in(ormaci-n de grupos de procesos;
posi+>getpid
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
posiFZgetpid 22 Devuelve el identi(icador del proceso actual
Kescripci"n
int posi+>getpid > void ?
Devuelve el identi(icador de proceso del proceso actual;
posi+>getppid
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
posiFZgetppid 22 Devuelve el identi(icador del proceso padre
Kescripci"n
int posi+>getppid > void ?
Devuelve el identi(icador de proceso del proceso padre del proceso actual;
posi+>getp3nam
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZgetpEnam 22 Devuelve in(ormaci-n so#re un usuario a traves del nom#re de usuario
Kescription
array posi+>getp3nam > string username ?
Devuelve un vector asociativo conteniendo in(ormaci-n so#re un usuario re(erenciado por un
nom#re al(anum<ricoA pasado a la (unci-n en el parametro username;
Los elementos del vector devuelto sonC
Tabla !. El 5ector de informaci"n de usuario
Element
o
Kescripci"n
name
+l elemento name contiene el nom#re de usuario del usuario; +ste es un nom#reA
normalmente menor de 1K caracteresA /ue no es su nom#re completoA pero identi(ica al
usario; +ste de#e ser el mismo /ue el par*metro username usado en la llamada a la
(unci-n y por lo tanto es redundante;
Element
o
Kescripci"n
passEd
+l elemento passEd contiene la contraseWa del usuario en un (ormato encriptado;
NormalmenteA por e'emplo en un sistema /ue este utilizando contraseWas =shadoE=A
devolver* un asterisco;
uid +l .D de usuario del usuario en (ormato num<rico;
gid
+l .D de grupo del usuario; @tiliza la (unci-n posi+>getgrgid./ para resolver el nom#re
del grupo y una lista de sus miem#ros;
gecos
G+5O es un t<rmino o#soleto /ue se re(iere al campo apuntado de in(ormaci-n en un
sistema de procesamiento #atch &oneyEell; +l campo y sus contenidos han sido
(ormalizado por PO.J y contiene una lista separada por comas con el nom#re
completo del usuarioA tel<(ono del tra#a'oA nBmero de o(icina y t<le(ono de casa; +n
muchos sistemas solo est* disponi#le el nom#re completo del usuario;
dir +ste elemento contiene la ruta a#soluta al directorio del usuario >directorio home?;
shell
+l elemento shell contiene la ruta a#soluta al e'ecuta#le del shell por de(ecto del
usuario;
posi+>getp3uid
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZgetpEuid 22 Devuelve in(ormaci-n so#re un usuario a traves de su id
Kescripci"n
array posi+>getp3uid > int uid ?
Devuelve un vector asociativo /ue contiene in(ormaci-n so#re un usuario re(erenciado con un .D de
usuarioA pasado por el par*metro u6#;
Los elementos del array sonC
Tabla !. El 5ector de informaci"n del usuario
Elemento Kescripci"n
name
+l elemento name contiene el nom#re de usuario del usuario; +ste es un nom#reA
normalmente menor de 1K caracteresA /ue no es su verdadero nom#re;
passEd
+l elemento passEd contiene la contraseWa del usuario en un (ormato encriptado;
NormalmenteA por e'emplo en un sistema con contraseWas =shadoE=A devolver* un
asterisco;
uid
.D del usuarioA de#e ser el mismo /ue el parametro u6# usado en la llamada a la
(unci-nA y por lo tanto redundante;
gid
+l .D del grupo del usuario; @tiliza la (unci-n posi+>getgrgid./ para resolver el
nom#re del grupo y una lista de sus miem#ros;
Elemento Kescripci"n
gecos
G+5O es un t<rmino o#soleto /ue se re(iere al campo apuntado de de in(ormaci-n en
un sistema de procesamiento #atch &oneyEell; +l campo y sus contenidos han sido
(ormalizados por PO.J y contiene una lista separada por comas con el nom#re
completo del usuarioA tel<(ono del tra#a'oA nBmero de o(icina y tel<(ono de casa; +n
muchos sistemas solo est* disponi#le el nom#re completo del usuario;
dir +ste elemento contiene la ruta a#soluta al directorio del usuario >directorio home?;
shell
+l elemento shell contiene la ruta a#soluta al e'ecuta#le del shell por de(ecto del
usuario;
posi+>getrlimit
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
posiFZgetrlimit 22 Devuelve in(ormaci-n so#re los limites de recursos del sistema
Kescripci"n
array posi+>getrlimit > void ?
Necesita ser escrita tan pronto como sea posi#le;
posi+>getsid
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
posiFZgetsid 22 5onsigue el sid actual del proceso
Kescripci"n
int posi+>getsid > int pid ?
Devuelve el sid del proceso p6#; i p6# es 3A se devolver* el sid del proceso actual;
+sta no es una (unci-n PO.JA pero es normal en sistemas ystem $; i su sistema no soporta esta
(unci-n a nivel de sistemaA esta (unci-n P&P devolver* siempre FALSE;
posi+>getuid
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
posiFZgetuid 22 Devuelve el .D de usuario real del proceso actual
Kescripci"n
int posi+>getuid > void ?
Devuelve el valor numerico .D de usuario real del proceso actual; $ea tam#i<n posi+>getp3uid./
para in(ormaci-n so#re como convertir este .D en un nom#re de usuario mane'a#le;
posi+>isatty
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZisatty 22 Determinar si un descriptor de archivo es una terminal interactiva
Kescripci"n
#ool posi+>isatty > int da ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
posi+>Bill
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZ"ill 22 Manda una seWal a un proceso
Kescripci"n
#ool posi+>Bill > int pidA int sig ?
Manda la seWal s6E al proceso con el identi(icador de proceso p6#; Devuelve FALSEA si no puede
enviar la seWal;i s) la envia devuelve TRUE ;
$ea tam#i<n la p*gina de manual "ill>0? de su sistema PO.JA la cual contiene in(ormaci-n
adicional so#re los identi(icadores de proceso negativosA el pid especial 3A el pid especial 21A y la
seWal numero 3;
posi+>mBfifo
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZm"(i(o 22 5rear un archivo especial (i(o >un pipe con nom#re?
Kescripci"n
#ool posi+>mBfifo > string nom#reZrutaA int modo ?
posi+>mBfifo./ crea un archivo 303O especial /ue eFiste en el sistema de archivos y actBa como un
punto de comunicaci-n #i2direccional para los procesos;
+l segundo par*metro mo#o tiene /ue ser de(inido en notaci-n octal >p;e'; 3K88?; +l permiso del
303O reci<n creado depende tam#i<n del valor umasB./ actual; Los permisos del archivo creado son
>modo i gumas"?;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- 5uando sa(e2mode >modo2seguro? est* activadoA P&P comprue#a si los
directorios /ue va a utilizar tienen la misma @.D /ue el script /ue est* siendo e'ecutado;
posi+>setegid
>P&P 8 _^ 8;3;0A P&P 4?
posiFZsetegid 22 +sta#lecer el G.D e(ectivo del proceso actual
Kescripci"n
#ool posi+>setegid > int gid ?
+sta#lece el .D de grupo e(ectivo del proceso actual; +sta es una (unci-n privilegiada y usted
necesita los permisos apropiados >usualmente root? en su sistema para contar con la capacidad de
e'ecutar esta (unci-n;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
posi+>seteuid
>P&P 8 _^ 8;3;0A P&P 4?
posiFZseteuid 22 +sta#lecer el @.D e(ectivo del proceso actual
Kescripci"n
#ool posi+>seteuid > int uid ?
+sta#lece el .D de usuario real del proceso actual; +sta es una (unci-n privilegiada y usted necesita
los permisos apropiados >usualmente root? en su sistema para tener la capacidad de e'ecutar esta
(unci-n;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
$ea tam#i<n posi+>setgid./;
posi+>setgid
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZsetgid 22 Asigna el G.D e(ectivo del proceso actual
Kescripci"n
#ool posi+>setgid > int gid ?
Asigna el .D de grupo real del proceso actual; +sta es una (unci-n privilegiada y necesitas los
privilegion apropiados >normalmente root? en tu sistema para realizar esta (unci-n; +l orden
apropiado de llamada es posi+>setgid./ primeroA posi+>setuid./ despu<s;
Devuelve TRUE si tiene <FitoA FALSE en caso contrario;
posi+>setpgid
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZsetpgid 22 Asigna el id de grupo de procesos para el control de tra#a'os
Kescripci"n
int posi+>setpgid > int pidA int pgid ?
.nserta el proceso p6# en el grupo de procesos pE6#; $ea PO.J;1 y la p*gina de manual setsid>0? de
su sistema PO.J para m*s in(ormaci-n so#re grupos de procesos y control de tra#a'o; Devuelve
TRUE si tiene <Fito y FALSE en caso contrario;
posi+>setsid
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZsetsid 22 5onvierte el proceso actual en lider de sesi-n
Kescripci"n
int posi+>setsid > void ?
5onvierte el proceso actual en lider de sesi-n; $ea PO.J;1 y la p*gina de manual setsid>0? en su
sistema PO.J para m*s in(ormacion en grupos de proceso y control de tra#a'os; Devuelve el id de
sesi-n;
posi+>setuid
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZsetuid 22 Asigna el @.D e(ectivo del proceso actual
Kescripci"n
#ool posi+>setuid > int uid ?
Asigna el .D de usuario real al proceso actual; +sta es una (unci-n privilegiada y necesitas los
privilegios apropiados >normalmente root? en tu sistema para realizar esta (unci-n;
Devuelve TRUE si tiene eFitoA FALSE en caso contrario; $ea tam#i<n posi+>setgid./;
posi+>strerror
>P&P 8 _^ 8;0;3A P&P 4?
posiFZstrerror 22 Recuperar el mensa'e de error del sistema asociado con el errno dado
Kescripci"n
string posi+>strerror > int errno ?
Devuelve el mensa'e de error del sistema PO.J asociado con el errno dado; i errno es 3A entonces
la cadena =uccess= es devuelta; La (unci-n posi+>get>last>error./ es usada para recuperar el
Bltimo errno PO.J;
$ea tam#i<n posi+>get>last>error./;
posi+>times
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZtimes 22 Recoge el tiempo de los procesos
Kescripci"n
array posi+>times > void ?
Devuelve un hash de cadenas con in(ormaci-n so#re el uso de 5P@ del proceso actual; Los )ndices
del hash son
tic"s 2 el numero de tic"s de relo' /ue han pasado desde el reinicio;
utime 2 tiempo de usuario usado por el proceso actual;
stime 2 tiempo de sistema usado por el proceso actual;
cutime 2 tiempo de usuario usado por el proceso actual e hi'os;
cstime 2 tiempo de sistema usado por el proceso actual e hi'os;
posi+>ttyname
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
posiFZttyname 22 Determina el nom#re del dispositivo terminal
Kescripci"n
string posi+>ttyname > int (d ?
Necesita ser escrito;
posi+>uname
>P&P 7_^ 7;3;13A P&P 8 A P&P 4?
posiFZuname 22 5onsigue el nom#re del sistema
Kescripci"n
array posi+>uname > void ?
Devuelve un hash de cadenas con in(ormaci-n so#re el sistema; Los )ndices del hash son
sysname 2 nom#re del sistema operativo >e;g; LinuF?
nodename 2 nom#re del sistema >e;g; valiant?
release 2 release del sistema operativo >e;g; 0;0;13?
version 2 versi-n del sistema operativo >e;g; n8 ,ue !ul 03 1:C31C7K M+, 1999?
machine 2 ar/uitectura del sistema >e;g; i4MK?
PosiF re/uiere /ue usted no de#e hacer ninguna suposici-n so#re el (ormato de los valoresA por
e'emplo usted no puede con(iar en los tres d)gitos de la version o cual/uier cosa devuelta por esta
(unci-n;
CII. Printer ;unctions
Introducci"n
,hese (unctions are only availa#le under LindoEs 9;FA M+A N,8 and 0333; ,hey have #een added
in P&P 8;3;8;
Instalaci"n
,his P+5L eFtension is not #undled Eith P&P;
LindoEs users must ena#le php%printer.dll inside o( php.ini in order to use these
(unctions; %ou may o#tain this un#undled P+5L eFtension (rom the various P+5L snaps pages
>select the appropriate repository (or your version o( P&P?C P+5L (or P&P 8;7;FA P+5L (or P&P
4;3;F or P+5L @nsta#le;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Printer configuration options
Name Kefault Changeable
printer;de(aultZprint
er
== P&PZ.N.ZALL
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
Tabla de contenidos
printerZa#ort 22 Deletes the printerHs spool (ile
printerZclose 22 5lose an open printer connection
printerZcreateZ#rush 22 5reate a neE #rush
printerZcreateZdc 22 5reate a neE device conteFt
printerZcreateZ(ont 22 5reate a neE (ont
printerZcreateZpen 22 5reate a neE pen
printerZdeleteZ#rush 22 Delete a #rush
printerZdeleteZdc 22 Delete a device conteFt
printerZdeleteZ(ont 22 Delete a (ont
printerZdeleteZpen 22 Delete a pen
printerZdraEZ#mp 22 DraE a #mp
printerZdraEZchord 22 DraE a chord
printerZdraEZelipse 22 DraE an ellipse
printerZdraEZline 22 DraE a line
printerZdraEZpie 22 DraE a pie
printerZdraEZrectangle 22 DraE a rectangle
printerZdraEZroundrect 22 DraE a rectangle Eith rounded corners
printerZdraEZteFt 22 DraE teFt
printerZendZdoc 22 5lose document
printerZendZpage 22 5lose active page
printerZgetZoption 22 Retrieve printer con(iguration data
printerZlist 22 Return an array o( printers attached to the server
printerZlogicalZ(ontheight 22 Get logical (ont height
printerZopen 22 Open connection to a printer
printerZselectZ#rush 22 elect a #rush
printerZselectZ(ont 22 elect a (ont
printerZselectZpen 22 elect a pen
printerZsetZoption 22 5on(igure the printer connection
printerZstartZdoc 22 tart a neE document
printerZstartZpage 22 tart a neE page
printerZErite 22 Lrite data to the printer
printer>abort
>no version in(ormationA might #e only in 5$?
printerZa#ort 22 Deletes the printerHs spool (ile
Kescription
void printer>abort > resource handle ?
,his (unction deletes the printers spool (ile;
han#le must #e a valid handle to a printer;
E'emplo !. printer>abort./ e+ample
<?php
$handle > printer%open39;
printer%abort3$handle9;
printer%close3$handle9;
?>
printer>close
>no version in(ormationA might #e only in 5$?
printerZclose 22 5lose an open printer connection
Kescription
void printer>close > resource handle ?
,his (unction closes the printer connection; printer>close./ also closes the active device conteFt;
han#le must #e a valid handle to a printer;
E'emplo !. printer>close./ e+ample
<?php
$handle > printer%open39;
printer%close3$handle9;
?>
printer>create>brush
>no version in(ormationA might #e only in 5$?
printerZcreateZ#rush 22 5reate a neE #rush
Kescription
miFed printer>create>brush > int styleA string color ?
,he (unction creates a neE #rush and returns a handle to it; A #rush is used to (ill shapes; For an
eFample see printer>select>brush./; color must #e a color in RGB heF (ormatA i;e; =333333= (or
#lac"A st?le must #e one o( the (olloEing constantsC
+R0NTER_ARUS!_SO40DC creates a #rush Eith a solid color;
+R0NTER_ARUS!_D0,-ON,4C creates a #rush Eith a 842degree upEard le(t2to2right hatch
> D ?;
+R0NTER_ARUS!_CROSSC creates a #rush Eith a cross hatch > R ?;
+R0NTER_ARUS!_D0,-CROSSC creates a #rush Eith a 84 cross hatch > F ?;
+R0NTER_ARUS!_3D0,-ON,4C creates a #rush Eith a 842degree doEnEard le(t2to2right
hatch > h ?;
+R0NTER_ARUS!_!OR0^ONT,4C creates a #rush Eith a horizontal hatch > 2 ?;
+R0NTER_ARUS!_(ERT0C,4C creates a #rush Eith a vertical hatch > l ?;
+R0NTER_ARUS!_CUSTOMC creates a custom #rush (rom an BMP (ile; ,he second
parameter is used to speci(y the BMP instead o( the RGB color code;
printer>create>dc
>no version in(ormationA might #e only in 5$?
printerZcreateZdc 22 5reate a neE device conteFt
Kescription
void printer>create>dc > resource handle ?
,he (unction creates a neE device conteFt; A device conteFt is used to customize the graphic
o#'ects o( the document; han#le must #e a valid handle to a printer;
E'emplo !. printer>create>dc./ e+ample
<?php
$handle > printer%open39;
printer%start%doc3$handle9;
printer%start%paEe3$handle9;
printer%create%dc3$handle9;
/W do some stu## 8ith the dc W/
printer%set%option3$handle, '4.*E'%*EX*%R?O?', "<<<<<<"9;
printer%dra8%text3$handle, 6, 6, "text"9;
printer%delete%dc3$handle9;
/W create another dc W/
printer%create%dc3$handle9;
printer%set%option3$handle, '4.*E'%*EX*%R?O?', "222222"9;
printer%dra8%text3$handle, 6, 6, "text"9;
/W do some stu## 8ith the dc W/
printer%delete%dc3$handle9;
printer%end%paEe3$handle9;
printer%end%doc3$handle9;
printer%close3$handle9;
?>
printer>create>font
>no version in(ormationA might #e only in 5$?
printerZcreateZ(ont 22 5reate a neE (ont
Kescription
miFed printer>create>font > string (aceA int heightA int EidthA int (ontZEeightA #ool italicA #ool
underlineA #ool stri"eoutA int orientation ?
,he (unction creates a neE (ont and returns a handle to it; A (ont is used to draE teFt; For an
eFample see printer>select>font./; 9ace must #e a string speci(ying the (ont (ace; he6Eht speci(ies
the (ont heightA and 76#th the (ont Eidth; ,he 9ont_7e6Eht speci(ies the (ont Eeight >833 is normal?A
and can #e one o( the (olloEing prede(ined constants;
+R0NTER_3I_T!0NC sets the (ont Eeight to thin >133?;
+R0NTER_3I_U4TR,40-!TC sets the (ont Eeight to ultra light >033?;
+R0NTER_3I_40-!TC sets the (ont Eeight to light >733?;
+R0NTER_3I_NORM,4C sets the (ont Eeight to normal >833?;
+R0NTER_3I_MED0UMC sets the (ont Eeight to medium >433?;
+R0NTER_3I_AO4DC sets the (ont Eeight to #old >:33?;
+R0NTER_3I_U4TR,AO4DC sets the (ont Eeight to ultra #old >M33?;
+R0NTER_3I_!E,(BC sets the (ont Eeight to heavy >933?;
6tal6c can #e TRUE or FALSEA and sets Ehether the (ont should #e italic;
un#erl6ne can #e TRUE or FALSEA and sets Ehether the (ont should #e underlined;
str6>eout can #e TRUE or FALSEA and sets Ehether the (ont should #e stro"ed out;
or6entat6on speci(ies a rotation; For an eFample see printer>select>font./;
printer>create>pen
>no version in(ormationA might #e only in 5$?
printerZcreateZpen 22 5reate a neE pen
Kescription
miFed printer>create>pen > int styleA int EidthA string color ?
,he (unction creates a neE pen and returns a handle to it; A pen is used to draE lines and curves;
For an eFample see printer>select>pen./; color must #e a color in RGB heF (ormatA i;e; =333333=
(or #lac"A 76#th speci(ies the Eidth o( the pen Ehereas st?le must #e one o( the (olloEing constantsC
+R0NTER_+EN_SO40DC creates a solid pen;
+R0NTER_+EN_D,S!C creates a dashed pen;
+R0NTER_+EN_DOTC creates a dotted pen;
+R0NTER_+EN_D,S!DOTC creates a pen Eith dashes and dots;
+R0NTER_+EN_D,S!DOTDOTC creates a pen Eith dashes and dou#le dots;
+R0NTER_+EN_0N(0S0A4EC creates an invisi#le pen;
printer>delete>brush
>no version in(ormationA might #e only in 5$?
printerZdeleteZ#rush 22 Delete a #rush
Kescription
#ool printer>delete>brush > resource handle ?
,he (unction deletes the selected #rush; For an eFample see printer>select>brush./; Devuelve
TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo; han#le must #e a valid handle
to a #rush;
printer>delete>dc
>no version in(ormationA might #e only in 5$?
printerZdeleteZdc 22 Delete a device conteFt
Kescription
#ool printer>delete>dc > resource handle ?
,he (unction deletes the device conteFt; Devuelve TRUE si todo se llev- a ca#o correctamenteA
FALSE en caso de (allo; For an eFample see printer>create>dc./; han#le must #e a valid handle to
a printer;
printer>delete>font
>no version in(ormationA might #e only in 5$?
printerZdeleteZ(ont 22 Delete a (ont
Kescription
#ool printer>delete>font > resource handle ?
,he (unction deletes the selected (ont; For an eFample see printer>select>font./; Devuelve TRUE si
todo se llev- a ca#o correctamenteA FALSE en caso de (allo; han#le must #e a valid handle to a (ont;
printer>delete>pen
>no version in(ormationA might #e only in 5$?
printerZdeleteZpen 22 Delete a pen
Kescription
#ool printer>delete>pen > resource handle ?
,he (unction deletes the selected pen; For an eFample see printer>select>pen./; Devuelve TRUE si
todo se llev- a ca#o correctamenteA FALSE en caso de (allo; han#le must #e a valid handle to a pen;
printer>dra3>bmp
>no version in(ormationA might #e only in 5$?
printerZdraEZ#mp 22 DraE a #mp
Kescription
void printer>dra3>bmp > resource handleA string (ilenameA int FA int y PA int EidthA int heightQ ?
,he (unction simply draEs an #mp the #itmap 96lename at position 8A ?; han#le must #e a valid
handle to a printer;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. printer>dra3>bmp./ e+ample
<?php
$handle > printer%open39;
printer%start%doc3$handle, ""y Locument"9;
printer%start%paEe3$handle9;
printer%dra8%bmp3$handle, "c@VVimaEe.bmp", 6, 69;
printer%end%paEe3$handle9;
printer%end%doc3$handle9;
printer%close3$handle9;
?>
printer>dra3>chord
>no version in(ormationA might #e only in 5$?
printerZdraEZchord 22 DraE a chord
Kescription
void printer>dra3>chord > resource handleA int recZFA int recZyA int recZF1A int recZy1A int radZFA
int radZyA int radZF1A int radZy1 ?
,he (unction simply draEs an chord; han#le must #e a valid handle to a printer;
rec_8 is the upper le(t F coordinate o( the #ounding rectangle;
rec_? is the upper le(t y coordinate o( the #ounding rectangle;
rec_81 is the loEer right F coordinate o( the #ounding rectangle;
rec_?1 is the loEer right y coordinate o( the #ounding rectangle;
ra#_8 is F coordinate o( the radial de(ining the #eginning o( the chord;
ra#_? is y coordinate o( the radial de(ining the #eginning o( the chord;
ra#_81 is F coordinate o( the radial de(ining the end o( the chord;
ra#_?1 is y coordinate o( the radial de(ining the end o( the chord;
E'emplo !. printer>dra3>chord./ e+ample
<?php
$handle > printer%open39;
printer%start%doc3$handle, ""y Locument"9;
printer%start%paEe3$handle9;
$pen > printer%create%pen3'4.*E'%E.%&?O4L, C, "222222"9;
printer%select%pen3$handle, $pen9;
$brush > printer%create%brush3'4.*E'%Z'+&H%&?O4L, "CCCCSS"9;
printer%select%brush3$handle, $brush9;
printer%dra8%chord3$handle, 6, 6, 522, 522, 6, 6, 522, 69;
printer%delete%brush3$brush9;
printer%delete%pen3$pen9;
printer%end%paEe3$handle9;
printer%end%doc3$handle9;
printer%close3$handle9;
?>
printer>dra3>elipse
>no version in(ormationA might #e only in 5$?
printerZdraEZelipse 22 DraE an ellipse
Kescription
void printer>dra3>elipse > resource handleA int ulZFA int ulZyA int lrZFA int lrZy ?
,he (unction simply draEs an ellipse; han#le must #e a valid handle to a printer;
ul_8 is the upper le(t F coordinate o( the ellipse;
ul_? is the upper le(t y coordinate o( the ellipse;
lr_8 is the loEer right F coordinate o( the ellipse;
lr_? is the loEer right y coordinate o( the ellipse;
E'emplo !. printer>dra3>elipse./ e+ample
<?php
$handle > printer%open39;
printer%start%doc3$handle, ""y Locument"9;
printer%start%paEe3$handle9;
$pen > printer%create%pen3'4.*E'%E.%&?O4L, C, "222222"9;
printer%select%pen3$handle, $pen9;
$brush > printer%create%brush3'4.*E'%Z'+&H%&?O4L, "CCCCSS"9;
printer%select%brush3$handle, $brush9;
printer%dra8%elipse3$handle, 6, 6, 522, 5229;
printer%delete%brush3$brush9;
printer%delete%pen3$pen9;
printer%end%paEe3$handle9;
printer%end%doc3$handle9;
printer%close3$handle9;
?>
printer>dra3>line
>no version in(ormationA might #e only in 5$?
printerZdraEZline 22 DraE a line
Kescription
void printer>dra3>line > resource printerZhandleA int (romZFA int (romZyA int toZFA int toZy ?
,he (unction simply draEs a line (rom position 9rom_8A 9rom_? to position to_8A to_? using the
selected pen; pr6nter_han#le must #e a valid handle to a printer;
E'emplo !. printer>dra3>line./ e+ample
<?php
$handle > printer%open39;
printer%start%doc3$handle, ""y Locument"9;
printer%start%paEe3$handle9;
$pen > printer%create%pen3'4.*E'%E.%&?O4L, <2, "222222"9;
printer%select%pen3$handle, $pen9;
printer%dra8%line3$handle, 6, 62, 6222, 629;
printer%dra8%line3$handle, 6, G2, 522, G29;
printer%delete%pen3$pen9;
printer%end%paEe3$handle9;
printer%end%doc3$handle9;
printer%close3$handle9;
?>
printer>dra3>pie
>no version in(ormationA might #e only in 5$?
printerZdraEZpie 22 DraE a pie
Kescription
void printer>dra3>pie > resource handleA int recZFA int recZyA int recZF1A int recZy1A int rad1ZFA int
rad1ZyA int rad0ZFA int rad0Zy ?
,he (unction simply draEs an pie; han#le must #e a valid handle to a printer;
rec_8 is the upper le(t F coordinate o( the #ounding rectangle;
rec_? is the upper le(t y coordinate o( the #ounding rectangle;
rec_81 is the loEer right F coordinate o( the #ounding rectangle;
rec_?1 is the loEer right y coordinate o( the #ounding rectangle;
ra#1_8 is F coordinate o( the (irst radialHs ending;
ra#1_? is y coordinate o( the (irst radialHs ending;
ra#2_8 is F coordinate o( the second radialHs ending;
ra#2_? is y coordinate o( the second radialHs ending;
E'emplo !. printer>dra3>pie./ e+ample
<?php
$handle > printer%open39;
printer%start%doc3$handle, ""y Locument"9;
printer%start%paEe3$handle9;
$pen > printer%create%pen3'4.*E'%E.%&?O4L, C, "222222"9;
printer%select%pen3$handle, $pen9;
$brush > printer%create%brush3'4.*E'%Z'+&H%&?O4L, "CCCCSS"9;
printer%select%brush3$handle, $brush9;
printer%dra8%pie3$handle, 6, 6, 522, 522, 6, 6, 522, 69;
printer%delete%brush3$brush9;
printer%delete%pen3$pen9;
printer%end%paEe3$handle9;
printer%end%doc3$handle9;
printer%close3$handle9;
?>
printer>dra3>rectangle
>no version in(ormationA might #e only in 5$?
printerZdraEZrectangle 22 DraE a rectangle
Kescription
void printer>dra3>rectangle > resource handleA int ulZFA int ulZyA int lrZFA int lrZy ?
,he (unction simply draEs a rectangle;
han#le must #e a valid handle to a printer;
ul_8 is the upper le(t F coordinate o( the rectangle;
ul_? is the upper le(t y coordinate o( the rectangle;
lr_8 is the loEer right F coordinate o( the rectangle;
lr_? is the loEer right y coordinate o( the rectangle;
E'emplo !. printer>dra3>rectangle./ e+ample
<?php
$handle > printer%open39;
printer%start%doc3$handle, ""y Locument"9;
printer%start%paEe3$handle9;
$pen > printer%create%pen3'4.*E'%E.%&?O4L, C, "222222"9;
printer%select%pen3$handle, $pen9;
$brush > printer%create%brush3'4.*E'%Z'+&H%&?O4L, "CCCCSS"9;
printer%select%brush3$handle, $brush9;
printer%dra8%rectanEle3$handle, 6, 6, 522, 5229;
printer%delete%brush3$brush9;
printer%delete%pen3$pen9;
printer%end%paEe3$handle9;
printer%end%doc3$handle9;
printer%close3$handle9;
?>
printer>dra3>roundrect
>no version in(ormationA might #e only in 5$?
printerZdraEZroundrect 22 DraE a rectangle Eith rounded corners
Kescription
void printer>dra3>roundrect > resource handleA int ulZFA int ulZyA int lrZFA int lrZyA int EidthA int
height ?
,he (unction simply draEs a rectangle Eith rounded corners;
han#le must #e a valid handle to a printer;
ul_8 is the upper le(t F coordinate o( the rectangle;
ul_? is the upper le(t y coordinate o( the rectangle;
lr_8 is the loEer right F coordinate o( the rectangle;
lr_? is the loEer right y coordinate o( the rectangle;
76#th is the Eidth o( the ellipse;
he6Eht is the height o( the ellipse;
E'emplo !. printer>dra3>roundrect./ e+ample
<?php
$handle > printer%open39;
printer%start%doc3$handle, ""y Locument"9;
printer%start%paEe3$handle9;
$pen > printer%create%pen3'4.*E'%E.%&?O4L, C, "222222"9;
printer%select%pen3$handle, $pen9;
$brush > printer%create%brush3'4.*E'%Z'+&H%&?O4L, "CCCCSS"9;
printer%select%brush3$handle, $brush9;
printer%dra8%roundrect3$handle, 6, 6, 522, 522, C22, C229;
printer%delete%brush3$brush9;
printer%delete%pen3$pen9;
printer%end%paEe3$handle9;
printer%end%doc3$handle9;
printer%close3$handle9;
?>
printer>dra3>te+t
>no version in(ormationA might #e only in 5$?
printerZdraEZteFt 22 DraE teFt
Kescription
void printer>dra3>te+t > resource printerZhandleA string teFtA int FA int y ?
,he (unction simply draEs te8t at position 8A ? using the selected (ont; pr6nter_han#le must #e a
valid handle to a printer;
E'emplo !. printer>dra3>te+t./ e+ample
<?php
$handle > printer%open39;
printer%start%doc3$handle, ""y Locument"9;
printer%start%paEe3$handle9;
$#ont > printer%create%#ont3",rial", HC, 1J, 122, #alse, #alse, #alse, 29;
printer%select%#ont3$handle, $#ont9;
printer%dra8%text3$handle, "test", 62, 629;
printer%delete%#ont3$#ont9;
printer%end%paEe3$handle9;
printer%end%doc3$handle9;
printer%close3$handle9;
?>
printer>end>doc
>no version in(ormationA might #e only in 5$?
printerZendZdoc 22 5lose document
Kescription
#ool printer>end>doc > resource handle ?
5loses a neE document in the printer spooler; ,he document is noE ready (or printing; For an
eFample see printer>start>doc./; han#le must #e a valid handle to a printer;
printer>end>page
>no version in(ormationA might #e only in 5$?
printerZendZpage 22 5lose active page
Kescription
#ool printer>end>page > resource handle ?
,he (unction closes the active page in the active document; For an eFample see printer>start>doc
./; han#le must #e a valid handle to a printer;
printer>get>option
>no version in(ormationA might #e only in 5$?
printerZgetZoption 22 Retrieve printer con(iguration data
Kescription
miFed printer>get>option > resource handleA string option ?
,he (unction retrieves the con(iguration setting o( opt6on; han#le must #e a valid handle to a printer;
,a"e a loo" at printer>set>option./ (or the settings that can #e retrievedA additionally the (olloEing
settings can #e retrievedC
+R0NTER_DE(0CEN,ME returns the devicename o( the printer;
+R0NTER_DR0(ER(ERS0ON returns the printer driver version;
E'emplo !. printer>get>option./ e+ample
<?php
$handle > printer%open39;
echo printer%Eet%option3$handle, '4.*E'%L'4(E'(E'&4?.9;
printer%close3$handle9;
?>
printer>list
>no version in(ormationA might #e only in 5$?
printerZlist 22 Return an array o( printers attached to the server
Kescription
array printer>list > int enumtype PA string name PA int levelQQ ?
,he (unction enumerates availa#le printers and their capa#ilities; leel sets the level o( in(ormation
re/uest; 5an #e 1A0A8 or 4; enumt?pe must #e one o( the (olloEing prede(ined constantsC
+R0NTER_ENUM_4OC,4C enumerates the locally installed printers;
+R0NTER_ENUM_N,MEC enumerates the printer o( nameA can #e a serverA domain or print
provider;
+R0NTER_ENUM_S!,REDC this parameter canHt #e used aloneA it has to #e ORHed Eith
other parametersA i;e; PR.N,+RZ+N@MZLO5AL to detect the locally shared printers;
+R0NTER_ENUM_DE3,U4TC >Lin9;F only? enumerates the de(ault printer;
+R0NTER_ENUM_CONNECT0ONSC >LinN,D0333 only? enumerates the printers to Ehich
the user has made connections;
+R0NTER_ENUM_NETIOR2C >LinN,D0333 only? enumerates netEor" printers in the
computerHs domain; Only valid i( leel is 1;
+R0NTER_ENUM_REMOTEC >LinN,D0333 only? enumerates netEor" printers and print
servers in the computerHs domain; Only valid i( leel is 1;
E'emplo !. printer>list./ e+ample
<?php
/W detect locally shared printer W/
=ar%dump3printer%list3'4.*E'%E.+"%O?R,O T '4.*E'%E.+"%&H,'EL99;
?>
printer>logical>fontheight
>no version in(ormationA might #e only in 5$?
printerZlogicalZ(ontheight 22 Get logical (ont height
Kescription
int printer>logical>fontheight > resource handleA int height ?
,he (unction calculates the logical (ont height o( he6Eht; han#le must #e a valid handle to a printer;
E'emplo !. printer>logical>fontheight./ e+ample
<?php
$handle > printer%open39;
echo printer%loEical%#ontheiEht3$handle, HC9;
printer%close3$handle9;
?>
printer>open
>no version in(ormationA might #e only in 5$?
printerZopen 22 Open connection to a printer
Kescription
miFed printer>open > Pstring devicenameQ ?
,his (unction tries to open a connection to the printer #e6cenameA and returns a handle on success
or FALSE on (ailure;
.( no parameter Eas given it tries to open a connection to the de(ault printer >i( not speci(ied in
php.ini as pr6nter.#e9ault_pr6nterA P&P tries to detect it?;
printer>open./ also starts a device conteFt;
E'emplo !. printer>open./ e+ample
<?php
$handle > printer%open3"H LesIjet K<2c"9;
$handle > printer%open39;
?>
printer>select>brush
>no version in(ormationA might #e only in 5$?
printerZselectZ#rush 22 elect a #rush
Kescription
void printer>select>brush > resource printerZhandleA resource #rushZhandle ?
,he (unction selects a #rush as the active draEing o#'ect o( the actual device conteFt; A #rush is
used to (ill shapes; .( you draE an rectangle the #rush is used to draE the shapesA Ehile the pen is
used to draE the #order; .( you havenHt selected a #rush #e(ore draEing shapesA the shape EonHt #e
(illed; pr6nter_han#le must #e a valid handle to a printer; 1rush_han#le must #e a valid handle to a
#rush;
E'emplo !. printer>select>brush./ e+ample
<?php
$handle > printer%open39;
printer%start%doc3$handle, ""y Locument"9;
printer%start%paEe3$handle9;
$pen > printer%create%pen3'4.*E'%E.%&?O4L, C, "222222"9;
printer%select%pen3$handle, $pen9;
$brush > printer%create%brush3'4.*E'%Z'+&H%R+&*?", "c@VVbrush.bmp"9;
printer%select%brush3$handle, $brush9;
printer%dra8%rectanEle3$handle, 6, 6, 522, 5229;
printer%delete%brush3$brush9;
$brush > printer%create%brush3'4.*E'%Z'+&H%&?O4L, "222222"9;
printer%select%brush3$handle, $brush9;
printer%dra8%rectanEle3$handle, 6, 526, 522, 62269;
printer%delete%brush3$brush9;
printer%delete%pen3$pen9;
printer%end%paEe3$handle9;
printer%end%doc3$handle9;
printer%close3$handle9;
?>
printer>select>font
>no version in(ormationA might #e only in 5$?
printerZselectZ(ont 22 elect a (ont
Kescription
void printer>select>font > resource printerZhandleA resource (ontZhandle ?
,he (unction selects a (ont to draE teFt; pr6nter_han#le must #e a valid handle to a printer;
9ont_han#le must #e a valid handle to a (ont;
E'emplo !. printer>select>font./ e+ample
<?php
$handle > printer%open39;
printer%start%doc3$handle, ""y Locument"9;
printer%start%paEe3$handle9;
$#ont > printer%create%#ont3",rial", 61J, HG, '4.*E'%S7%"EL4+", #alse, #alse, #alse, F529;
printer%select%#ont3$handle, $#ont9;
printer%dra8%text3$handle, "H is simply cool", 12, 129;
printer%delete%#ont3$#ont9;
printer%end%paEe3$handle9;
printer%end%doc3$handle9;
printer%close3$handle9;
?>
printer>select>pen
>no version in(ormationA might #e only in 5$?
printerZselectZpen 22 elect a pen
Kescription
void printer>select>pen > resource printerZhandleA resource penZhandle ?
,he (unction selects a pen as the active draEing o#'ect o( the actual device conteFt; A pen is used to
draE lines and curves; .;e; i( you draE a single line the pen is used; .( you draE an rectangle the pen
is used to draE the #ordersA Ehile the #rush is used to (ill the shape; .( you havenHt selected a pen
#e(ore draEing shapesA the shape EonHt #e outlined; pr6nter_han#le must #e a valid handle to a
printer; pen_han#le must #e a valid handle to a pen;
E'emplo !. printer>select>pen./ e+ample
<?php
$handle > printer%open39;
printer%start%doc3$handle, ""y Locument"9;
printer%start%paEe3$handle9;
$pen > printer%create%pen3'4.*E'%E.%&?O4L, <2, "CCCCSS"9;
printer%select%pen3$handle, $pen9;
printer%dra8%line3$handle, 6, G2, 522, G29;
printer%delete%pen3$pen9;
printer%end%paEe3$handle9;
printer%end%doc3$handle9;
printer%close3$handle9;
?>
printer>set>option
>no version in(ormationA might #e only in 5$?
printerZsetZoption 22 5on(igure the printer connection
Kescription
#ool printer>set>option > resource handleA int optionA miFed value ?
,he (unction sets the (olloEing options (or the current connection; han#le must #e a valid handle to
a printer; For opt6on can #e one o( the (olloEing constantsC
+R0NTER_CO+0ESC sets hoE many copies should #e printedA alue must #e an integer;
+R0NTER_MODEC speci(ies the type o( data >teFtA raE or em(?A alue must #e a string;
+R0NTER_T0T4EC speci(ies the name o( the documentA alue must #e a string;
+R0NTER_OR0ENT,T0ONC speci(ies the orientation o( the paperA alue can #e either
PR.N,+RZOR.+N,A,.ONZPOR,RA., or PR.N,+RZOR.+N,A,.ONZLAND5AP+
+R0NTER_RESO4UT0ON_BC speci(ies the y2resolution in DP.A alue must #e an integer;
+R0NTER_RESO4UT0ON_FC speci(ies the F2resolution in DP.A alue must #e an integer;
+R0NTER_+,+ER_3ORM,TC speci(ies the a prede(ined paper (ormatA set alue to
PR.N,+RZFORMA,Z5@,OM i( you Eant to speci(y a custom (ormat Eith
PR.N,+RZPAP+RZL.D,& and PR.N,+RZPAP+RZL+NG,&; alue can #e one o( the
(olloEing constants;
+R0NTER_3ORM,T_CUSTOMC letHs you speci(y a custom paper (ormat;
+R0NTER_3ORM,T_4ETTERC speci(ies standard letter (ormat >M 1D02 #y 112inches?;
+R0NTER_3ORM,T_4ETTERC speci(ies standard legal (ormat >M 1D02 #y 182inches?;
+R0NTER_3ORM,T_,RC speci(ies standard A7 (ormat >09:2 #y 8032millimeters?;
+R0NTER_3ORM,T_,;C speci(ies standard A8 (ormat >0132 #y 09:2millimeters?;
+R0NTER_3ORM,T_,SC speci(ies standard A4 (ormat >18M2 #y 0132millimeters?;
+R0NTER_3ORM,T_A;C speci(ies standard B8 (ormat >0432 #y 7482millimeters?;
+R0NTER_3ORM,T_ASC speci(ies standard B4 (ormat >1M02 #y 04:2millimeter?;
+R0NTER_3ORM,T_3O40OC speci(ies standard FOL.O (ormat >M 1D02 #y 172inch?;
+R0NTER_+,+ER_4EN-T!C i( PR.N,+RZPAP+RZFORMA, is set to
PR.N,+RZFORMA,Z5@,OMA PR.N,+RZPAP+RZL+NG,& speci(ies a custom paper
length in mmA alue must #e an integer;
+R0NTER_+,+ER_I0DT!C i( PR.N,+RZPAP+RZFORMA, is set to
PR.N,+RZFORMA,Z5@,OMA PR.N,+RZPAP+RZL.D,& speci(ies a custom paper
Eidth in mmA alue must #e an integer;
+R0NTER_SC,4EC speci(ies the (actor #y Ehich the printed output is to #e scaled; the page
size is scaled (rom the physical page size #y a (actor o( scaleD133; (or eFample i( you set the
scale to 43A the output Eould #e hal( o( its original size; alue must #e an integer;
+R0NTER_A,C2-ROUND_CO4ORC speci(ies the #ac"ground color (or the actual device
conteFtA alue must #e a string containing the rg# in(ormation in heF (ormat i;e; =334477=;
+R0NTER_TEFT_CO4ORC speci(ies the teFt color (or the actual device conteFtA alue must
#e a string containing the rg# in(ormation in heF (ormat i;e; =334477=;
+R0NTER_TEFT_,40-NC speci(ies the teFt alignment (or the actual device conteFtA alue
can #e com#ined through ORHing the (olloEing constantsC
+R0NTER_T,_A,SE40NEC teFt Eill #e aligned at the #ase line;
+R0NTER_T,_AOTTOMC teFt Eill #e aligned at the #ottom;
+R0NTER_T,_TO+C teFt Eill #e aligned at the top;
+R0NTER_T,_CENTERC teFt Eill #e aligned at the center;
+R0NTER_T,_4E3TC teFt Eill #e aligned at the le(t;
+R0NTER_T,_R0-!TC teFt Eill #e aligned at the right;
E'emplo !. printer>set>option./ e+ample
<?php
$handle > printer%open39;
printer%set%option3$handle, '4.*E'%&R,OE, H59;
printer%set%option3$handle, '4.*E'%*EX*%,O4-., '4.*E'%*,%OES*9;
printer%close3$handle9;
?>
printer>start>doc
>no version in(ormationA might #e only in 5$?
printerZstartZdoc 22 tart a neE document
Kescription
#ool printer>start>doc > resource handle PA string documentQ ?
,he (unction creates a neE document in the printer spooler; A document can contain multiple pagesA
itHs used to schedule the print 'o# in the spooler; han#le must #e a valid handle to a printer; ,he
optional parameter #ocument can #e used to set an alternative document name;
E'emplo !. printer>start>doc./ e+ample
<?php
$handle > printer%open39;
printer%start%doc3$handle, ""y Locument"9;
printer%start%paEe3$handle9;
printer%end%paEe3$handle9;
printer%end%doc3$handle9;
printer%close3$handle9;
?>
printer>start>page
>no version in(ormationA might #e only in 5$?
printerZstartZpage 22 tart a neE page
Kescription
#ool printer>start>page > resource handle ?
,he (unction creates a neE page in the active document; For an eFample see printer>start>doc./;
han#le must #e a valid handle to a printer;
printer>3rite
>no version in(ormationA might #e only in 5$?
printerZErite 22 Lrite data to the printer
Kescription
#ool printer>3rite > resource handleA string content ?
Lrites content directly to the printer; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE
en caso de (allo;
han#le must #e a valid handle to a printer;
E'emplo !. printer>3rite./ e+ample
<?php
$handle > printer%open39;
printer%8rite3$handle, "*ext to print"9;
printer%close3$handle9;
?>
CIII. Pspell ;unctions
,he pspell./ (unctions alloE you to chec" the spelling o( a Eord and o((er suggestions;
%ou need the aspell and pspell li#rariesA availa#le (rom httpCDDaspell;source(orge;netD and
httpCDDaspell;netD respectivelyA and add the ==76th=pspell):#6r. option Ehen compiling php;
Tabla de contenidos
pspellZaddZtoZpersonal 22 Agrega la pala#ra a la lista personal de pala#ras
pspellZaddZtoZsession 22 Agrega la pala#ra a la lista de pala#ras en la sesi-n actual
pspellZchec" 22 5hec" a Eord
pspellZclearZsession 22 Limpia la sesi-n actual
pspellZcon(igZcreate 22 5reate a con(ig used to open a dictionary
pspellZcon(igZdataZdir 22 location o( language data (iles
pspellZcon(igZdictZdir 22 Location o( the main Eord list
pspellZcon(igZignore 22 .gnore Eords less than N characters long
pspellZcon(igZmode 22 5hange the mode num#er o( suggestions returned
pspellZcon(igZpersonal 22 et a (ile that contains personal Eordlist
pspellZcon(igZrepl 22 et a (ile that contains replacement pairs
pspellZcon(igZruntogether 22 5onsider run2together Eords as valid compounds
pspellZcon(igZsaveZrepl 22 Determine Ehether to save a replacement pairs list along Eith the
Eordlist
pspellZneEZcon(ig 22 Load a neE dictionary Eith settings #ased on a given con(ig
pspellZneEZpersonal 22 Load a neE dictionary Eith personal Eordlist
pspellZneE 22 Load a neE dictionary
pspellZsaveZEordlist 22 ave the personal Eordlist to a (ile
pspellZstoreZreplacement 22 tore a replacement pair (or a Eord
pspellZsuggest 22 uggest spellings o( a Eord
pspell>add>to>personal
>P&P 8 _^ 8;3;0A P&P 4?
pspellZaddZtoZpersonal 22 Agrega la pala#ra a la lista personal de pala#ras
Kescripci"n
int pspell>add>to>personal > int dictionaryZlin"A cadena pala#ra ?
pspell>add>to>personal./ agrega una pala#ra a la lista personal de pala#ras; i usas
pspell>ne3>config./ con pspell>config>personal./ para a#rir el diccionarioA puedes salvar la lista
de pala#ras luegoA con pspell>sa5e>3ordlist./; NotaC +sta (unci-n no (uncionar* hasta /ue tengas
pspell ;11;0 y aspell ;70;4 o superior;
E'emplo !. pspell>add>to>personal./
$pspell%con#iE > pspell%con#iE%create 3"en"9;
pspell%con#iE%personal 3$pspell%con#iE, "/=ar/dictionaries/custom.p8s"9;
$pspell%linI > pspell%ne8%con#iE 3$pspell%con#iE9;
pspell%add%to%personal 3$pspell%linI, "(lad"9;
pspell%sa=e%8ordlist 3$pspell%linI9;
pspell>add>to>session
>P&P 8 _^ 8;3;0A P&P 4?
pspellZaddZtoZsession 22 Agrega la pala#ra a la lista de pala#ras en la sesi-n actual
Kescripci"n
int pspell>add>to>session > int dictionaryZlin"A cadena pala#ra ?
pspell>add>to>session./ agrega la pala#ra a la lista de pala#ras asociada con la sesi-n actual; +sto
es muy similar a pspell>add>to>personal./
pspell>checB
>P&P 8 _^ 8;3;0A P&P 4?
pspellZchec" 22 5hec" a Eord
Kescription
#ool pspell>checB > int dictionaryZlin"A string Eord ?
pspell>checB./ chec"s the spelling o( a Eord and returns TRUE i( the spelling is correctA FALSE i(
not;
E'emplo !. pspell>checB./
<?php
$pspell%linI > pspell%ne83"en"9;
i# 3pspell%checI3$pspell%linI, "testt"99 :
echo "*his is a =alid spellinE";
; else :
echo "&orry, 8ronE spellinE";
;
?>
pspell>clear>session
>P&P 8 _^ 8;3;0A P&P 4?
pspellZclearZsession 22 Limpia la sesi-n actual
Kescripci"n
int pspell>clear>session > int dictionaryZlin" ?
pspell>clear>session./ limpia la sesi-n actual; La lista de pala#ras actual /ueda vac)aA yA por
e'emploA si intentas salvarla con pspell>sa5e>3ordlist./A nada ocurre;
E'emplo !. pspell>add>to>personal./
$pspell%con#iE > pspell%con#iE%create 3"en"9;
pspell%con#iE%personal 3$pspell%con#iE, "/=ar/dictionaries/custom.p8s"9;
$pspell%linI > pspell%ne8%con#iE 3$pspell%con#iE9;
pspell%add%to%personal 3$pspell%linI, "(lad"9;
pspell%clear%session 3$pspell%linI9;
pspell%sa=e%8ordlist 3$pspell%linI9; //"(lad" 8ill not be sa=ed
pspell>config>create
>P&P 8 _^ 8;3;0A P&P 4?
pspellZcon(igZcreate 22 5reate a con(ig used to open a dictionary
Kescription
int pspell>config>create > string language PA string spelling PA string 'argon PA string encodingQQQ ?
pspell>config>create./ has a very similar syntaF to pspell>ne3./; .n (actA using
pspell>config>create./ immediately (olloEed #y pspell>ne3>config./ Eill produce the eFact same
result; &oEeverA a(ter creating a neE con(igA you can also use pspell>config>L./ (unctions #e(ore
calling pspell>ne3>config./ to ta"e advantage o( some advanced (unctionality;
,he language parameter is the language code Ehich consists o( the tEo letter .O K79 language
code and an optional tEo letter .O 71KK country code a(ter a dash or underscore;
,he spelling parameter is the re/uested spelling (or languages Eith more than one spelling such as
+nglish; SnoEn values are HamericanHA H#ritishHA and HcanadianH;
,he 'argon parameter contains eFtra in(ormation to distinguish tEo di((erent Eords lists that have
the same language and spelling parameters;
,he encoding parameter is the encoding that Eords are eFpected to #e in; $alid values are Hut(2MHA
HisoMM492VHA H"oiM2rHA HvisciiHA Hcp1040HA Hmachine unsigned 1KHA Hmachine unsigned 70H; ,his parameter
is largely untestedA so #e care(ul Ehen using;
,he mode parameter is the mode in Ehich spellchec"er Eill Eor"; ,here are several modes
availa#leC
PSPELL_FAST 2 Fast mode >least num#er o( suggestions?
PSPELL_NORMAL 2 Normal mode >more suggestions?
PSPELL_(AD_SPELLERS 2 loE mode >a lot o( suggestions?
For more in(ormation and eFamplesA chec" out inline manual pspell Ee#siteChttpCDDaspell;netD;
E'emplo !. pspell>config>create./
<?php
$pspell%con#iE > pspell%con#iE%create3"en"9;
pspell%con#iE%personal3$pspell%con#iE, "/=ar/dictionaries/custom.p8s"9;
pspell%con#iE%repl3$pspell%con#iE, "/=ar/dictionaries/custom.repl"9;
$pspell%linI > pspell%ne8%personal3$pspell%con#iE, "en"9;
?>
pspell>config>data>dir
>P&P 4?
pspellZcon(igZdataZdir 22 location o( language data (iles
Kescription
#ool pspell>config>data>dir > int con(A string directory ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
pspell>config>dict>dir
>P&P 4?
pspellZcon(igZdictZdir 22 Location o( the main Eord list
Kescription
#ool pspell>config>dict>dir > int con(A string directory ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
pspell>config>ignore
>P&P 8 _^ 8;3;0A P&P 4?
pspellZcon(igZignore 22 .gnore Eords less than N characters long
Kescription
int pspell>config>ignore > int dictionaryZlin"A int n ?
pspell>config>ignore./ should #e used on a con(ig #e(ore calling pspell>ne3>config./; ,his
(unction alloEs short Eords to #e s"ipped #y the spell chec"er; Lords less than n characters Eill #e
s"ipped;
E'emplo !. pspell>config>ignore./
<?php
$pspell%con#iE > pspell%con#iE%create3"en"9;
pspell%con#iE%iEnore3$pspell%con#iE, 59;
$pspell%linI > pspell%ne8%con#iE3$pspell%con#iE9;
pspell%checI3$pspell%linI, "abcd"9; //8ill not result in an error
?>
pspell>config>mode
>P&P 8 _^ 8;3;0A P&P 4?
pspellZcon(igZmode 22 5hange the mode num#er o( suggestions returned
Kescription
int pspell>config>mode > int dictionaryZlin"A int mode ?
pspell>config>mode./ should #e used on a con(ig #e(ore calling pspell>ne3>config./; ,his
(unction determines hoE many suggestions Eill #e returned #y pspell>suggest./;
,he mode parameter is the mode in Ehich spellchec"er Eill Eor"; ,here are several modes
availa#leC
PSPELL_FAST 2 Fast mode >least num#er o( suggestions?
PSPELL_NORMAL 2 Normal mode >more suggestions?
PSPELL_(AD_SPELLERS 2 loE mode >a lot o( suggestions?
E'emplo !. pspell>config>mode./
<?php
$pspell%con#iE > pspell%con#iE%create3"en"9;
pspell%con#iE%mode3$pspell%con#iE, &EOO%S,&*9;
$pspell%linI > pspell%ne8%con#iE3$pspell%con#iE9;
pspell%checI3$pspell%linI, "thecat"9;
?>
pspell>config>personal
>P&P 8 _^ 8;3;0A P&P 4?
pspellZcon(igZpersonal 22 et a (ile that contains personal Eordlist
Kescription
int pspell>config>personal > int dictionaryZlin"A string (ile ?
pspell>config>personal./ should #e used on a con(ig #e(ore calling pspell>ne3>config./; ,he
personal Eordlist Eill #e loaded and used in addition to the standard one a(ter you call
pspell>ne3>config./; .( the (ile does not eFistA it Eill #e created; ,he (ile is also the (ile Ehere
pspell>sa5e>3ordlist./ Eill save personal Eordlist to; ,he (ile should #e Erita#le #y Ehoever P&P
runs as >e;g; no#ody?; PleaseA note that this (unction Eill not Eor" unless you have pspell ;11;0 and
aspell ;70;4 or later;
E'emplo !. pspell>config>personal./
<?php
$pspell%con#iE > pspell%con#iE%create3"en"9;
pspell%con#iE%personal3$pspell%con#iE, "/=ar/dictionaries/custom.p8s"9;
$pspell%linI > pspell%ne8%con#iE3$pspell%con#iE9;
pspell%checI3$pspell%linI, "thecat"9;
?>
pspell>config>repl
>P&P 8 _^ 8;3;0A P&P 4?
pspellZcon(igZrepl 22 et a (ile that contains replacement pairs
Kescription
int pspell>config>repl > int dictionaryZlin"A string (ile ?
pspell>config>repl./ should #e used on a con(ig #e(ore calling pspell>ne3>config./; ,he
replacement pairs improve the /uality o( the spellchec"er; Lhen a Eord is misspelledA and a proper
suggestion Eas not (ound in the listA pspell>store>replacement./ can #e used to store a replacement
pair and then pspell>sa5e>3ordlist./ to save the Eordlist along Eith the replacement pairs; ,he (ile
should #e Erita#le #y Ehoever P&P runs as >e;g; no#ody?; PleaseA note that this (unction Eill not
Eor" unless you have pspell ;11;0 and aspell ;70;4 or later;
E'emplo !. pspell>config>repl./
<?php
$pspell%con#iE > pspell%con#iE%create3"en"9;
pspell%con#iE%personal3$pspell%con#iE, "/=ar/dictionaries/custom.p8s"9;
pspell%con#iE%repl3$pspell%con#iE, "/=ar/dictionaries/custom.repl"9;
$pspell%linI > pspell%ne8%con#iE3$pspell%con#iE9;
pspell%checI3$pspell%linI, "thecat"9;
?>
pspell>config>runtogether
>P&P 8 _^ 8;3;0A P&P 4?
pspellZcon(igZruntogether 22 5onsider run2together Eords as valid compounds
Kescription
int pspell>config>runtogether > int dictionaryZlin"A #ool (lag ?
pspell>config>runtogether./ should #e used on a con(ig #e(ore calling pspell>ne3>config./; ,his
(unction determines Ehether run2together Eords Eill #e treated as legal compounds; ,hat isA
=thecat= Eill #e a legal compoundA although there should #e a space #etEeen the tEo Eords;
5hanging this setting only a((ects the results returned #y pspell>checB./X pspell>suggest./ Eill still
return suggestions;
E'emplo !. pspell>config>runtogether./
<?php
$pspell%con#iE > pspell%con#iE%create3"en"9;
pspell%con#iE%runtoEether3$pspell%con#iE, true9;
$pspell%linI > pspell%ne8%con#iE3$pspell%con#iE9;
pspell%checI3$pspell%linI, "thecat"9;
?>
pspell>config>sa5e>repl
>P&P 8 _^ 8;3;0A P&P 4?
pspellZcon(igZsaveZrepl 22 Determine Ehether to save a replacement pairs list along Eith the
Eordlist
Kescription
int pspell>config>sa5e>repl > int dictionaryZlin"A #ool (lag ?
pspell>config>sa5e>repl./ should #e used on a con(ig #e(ore calling pspell>ne3>config./; .t
determines Ehether pspell>sa5e>3ordlist./ Eill save the replacement pairs along Eith the Eordlist;
@sually there is no need to use this (unction #ecause i( pspell>config>repl./ is usedA the
replacement pairs Eill #e saved #y pspell>sa5e>3ordlist./ anyEayA and i( it is notA the replacement
pairs Eill not #e saved; PleaseA note that this (unction Eill not Eor" unless you have pspell ;11;0 and
aspell ;70;4 or later;
pspell>ne3>config
>P&P 8 _^ 8;3;0A P&P 4?
pspellZneEZcon(ig 22 Load a neE dictionary Eith settings #ased on a given con(ig
Kescription
int pspell>ne3>config > int con(ig ?
pspell>ne3>config./ opens up a neE dictionary Eith settings speci(ied in a con(igA created Eith
Eith pspell>config>create./ and modi(ied Eith pspell>config>L./ (unctions; ,his method provides
you Eith the most (leFi#ility and has all the (unctionality provided #y pspell>ne3./ and
pspell>ne3>personal./;
,he con(ig parameter is the one returned #y pspell>config>create./ Ehen the con(ig Eas created;
E'emplo !. pspell>ne3>config./
<?php
$pspell%con#iE > pspell%con#iE%create3"en"9;
pspell%con#iE%personal3$pspell%con#iE, "/=ar/dictionaries/custom.p8s"9;
pspell%con#iE%repl3$pspell%con#iE, "/=ar/dictionaries/custom.repl"9;
$pspell%linI > pspell%ne8%con#iE3$pspell%con#iE9;
?>
pspell>ne3>personal
>P&P 8 _^ 8;3;0A P&P 4?
pspellZneEZpersonal 22 Load a neE dictionary Eith personal Eordlist
Kescription
int pspell>ne3>personal > string personalA string language PA string spelling PA string 'argon PA string
encoding PA int modeQQQQ ?
pspell>ne3>personal./ opens up a neE dictionary Eith a personal Eordlist and returns the
dictionary lin" identi(ier (or use in other pspell (unctions; ,he Eordlist can #e modi(ied and saved
Eith pspell>sa5e>3ordlist./A i( desired; &oEeverA the replacement pairs are not saved; .n order to
save replacement pairsA you should create a con(ig using pspell>config>create./A set the personal
Eordlist (ile Eith pspell>config>personal./A set the (ile (or replacement pairs Eith
pspell>config>repl./A and open a neE dictionary Eith pspell>ne3>config./;
,he personal parameter speci(ies the (ile Ehere Eords added to the personal list Eill #e stored; .t
should #e an a#solute (ilename #eginning Eith HDH #ecause otherEise it Eill #e relative to Y&OM+A
Ehich is =Droot= (or most systemsA and is pro#a#ly not Ehat you Eant;
,he language parameter is the language code Ehich consists o( the tEo letter .O K79 language
code and an optional tEo letter .O 71KK country code a(ter a dash or underscore;
,he spelling parameter is the re/uested spelling (or languages Eith more than one spelling such as
+nglish; SnoEn values are HamericanHA H#ritishHA and HcanadianH;
,he 'argon parameter contains eFtra in(ormation to distinguish tEo di((erent Eords lists that have
the same language and spelling parameters;
,he encoding parameter is the encoding that Eords are eFpected to #e in; $alid values are Hut(2MHA
HisoMM492VHA H"oiM2rHA HvisciiHA Hcp1040HA Hmachine unsigned 1KHA Hmachine unsigned 70H; ,his parameter
is largely untestedA so #e care(ul Ehen using;
,he mode parameter is the mode in Ehich spellchec"er Eill Eor"; ,here are several modes
availa#leC
PSPELL_FAST 2 Fast mode >least num#er o( suggestions?
PSPELL_NORMAL 2 Normal mode >more suggestions?
PSPELL_(AD_SPELLERS 2 loE mode >a lot o( suggestions?
PSPELL_RUN_TO#ETHER 2 5onsider run2together Eords as legal compounds; ,hat isA
=thecat= Eill #e a legal compoundA although there should #e a space #etEeen the tEo Eords;
5hanging this setting only a((ects the results returned #y pspell>checB./X pspell>suggest./
Eill still return suggestions;
Mode is a #itmas" constructed (rom di((erent constants listed a#ove; &oEeverA PSPELL_FASTA
PSPELL_NORMAL and PSPELL_(AD_SPELLERS are mutually eFclusiveA so you should select
only one o( them;
For more in(ormation and eFamplesA chec" out inline manual pspell Ee#siteChttpCDDaspell;netD;
E'emplo !. pspell>ne3>personal./
<?php
$pspell%linI > pspell%ne8%personal 3"/=ar/dictionaries/custom.p8s",
"en", "", "", "", &EOO%S,&*T&EOO%'+.%*?-E*HE'9;
?>
pspell>ne3
>P&P 8 _^ 8;3;0A P&P 4?
pspellZneE 22 Load a neE dictionary
Kescription
int pspell>ne3 > string language PA string spelling PA string 'argon PA string encoding PA int modeQQQQ ?
pspell>ne3./ opens up a neE dictionary and returns the dictionary lin" identi(ier (or use in other
pspell (unctions;
,he language parameter is the language code Ehich consists o( the tEo letter .O K79 language
code and an optional tEo letter .O 71KK country code a(ter a dash or underscore;
,he spelling parameter is the re/uested spelling (or languages Eith more than one spelling such as
+nglish; SnoEn values are HamericanHA H#ritishHA and HcanadianH;
,he 'argon parameter contains eFtra in(ormation to distinguish tEo di((erent Eords lists that have
the same language and spelling parameters;
,he encoding parameter is the encoding that Eords are eFpected to #e in; $alid values are Hut(2MHA
HisoMM492VHA H"oiM2rHA HvisciiHA Hcp1040HA Hmachine unsigned 1KHA Hmachine unsigned 70H; ,his parameter
is largely untestedA so #e care(ul Ehen using;
,he mode parameter is the mode in Ehich spellchec"er Eill Eor"; ,here are several modes
availa#leC
PSPELL_FAST 2 Fast mode >least num#er o( suggestions?
PSPELL_NORMAL 2 Normal mode >more suggestions?
PSPELL_(AD_SPELLERS 2 loE mode >a lot o( suggestions?
PSPELL_RUN_TO#ETHER 2 5onsider run2together Eords as legal compounds; ,hat isA
=thecat= Eill #e a legal compoundA although there should #e a space #etEeen the tEo Eords;
5hanging this setting only a((ects the results returned #y pspell>checB./X pspell>suggest./
Eill still return suggestions;
Mode is a #itmas" constructed (rom di((erent constants listed a#ove; &oEeverA PSPELL_FASTA
PSPELL_NORMAL and PSPELL_(AD_SPELLERS are mutually eFclusiveA so you should select
only one o( them;
For more in(ormation and eFamplesA chec" out inline manual pspell Ee#siteChttpCDDaspell;netD;
E'emplo !. pspell>ne3./
<?php
$pspell%linI > pspell%ne83"en", "", "", "",
3&EOO%S,&*T&EOO%'+.%*?-E*HE'99;
?>
pspell>sa5e>3ordlist
>P&P 8 _^ 8;3;0A P&P 4?
pspellZsaveZEordlist 22 ave the personal Eordlist to a (ile
Kescription
int pspell>sa5e>3ordlist > int dictionaryZlin" ?
pspell>sa5e>3ordlist./ saves the personal Eordlist (rom the current session; ,he dictionary has to
#e open Eith pspell>ne3>personal./A and the location o( (iles to #e saved speci(ied Eith
pspell>config>personal./ and >optionally? pspell>config>repl./; PleaseA note that this (unction Eill
not Eor" unless you have pspell ;11;0 and aspell ;70;4 or later;
E'emplo !. pspell>add>to>personal./
<?php
$pspell%con#iE > pspell%con#iE%create3"en"9;
pspell%con#iE%personal3$pspell%con#iE, "/tmp/dicts/ne8dict"9;
$pspell%linI > pspell%ne8%con#iE3$pspell%con#iE9;
pspell%add%to%personal3$pspell%linI, "(lad"9;
pspell%sa=e%8ordlist3$pspell%linI9;
?>
pspell>store>replacement
>P&P 8 _^ 8;3;0A P&P 4?
pspellZstoreZreplacement 22 tore a replacement pair (or a Eord
Kescription
int pspell>store>replacement > int dictionaryZlin"A string misspelledA string correct ?
pspell>store>replacement./ stores a replacement pair (or a EordA so that replacement can #e
returned #y pspell>suggest./ later; .n order to #e a#le to ta"e advantage o( this (unctionA you have to
use pspell>ne3>personal./ to open the dictionary; .n order to permanently save the replacement
pairA you have to use pspell>config>personal./ and pspell>config>repl./ to set the path Ehere to
save your custom EordlistsA and then use pspell>sa5e>3ordlist./ (or the changes to #e Eritten to
dis"; PleaseA note that this (unction Eill not Eor" unless you have pspell ;11;0 and aspell ;70;4 or
later;
E'emplo !. pspell>store>replacement./
<?php
$pspell%con#iE > pspell%con#iE%create3"en"9;
pspell%con#iE%personal3$pspell%con#iE, "/=ar/dictionaries/custom.p8s"9;
pspell%con#iE%repl3$pspell%con#iE, "/=ar/dictionaries/custom.repl"9;
$pspell%linI > pspell%ne8%con#iE3$pspell%con#iE9;
pspell%store%replacement3$pspell%linI, $misspelled, $correct9;
pspell%sa=e%8ordlist3$pspell%linI9;
?>
pspell>suggest
>P&P 8 _^ 8;3;0A P&P 4?
pspellZsuggest 22 uggest spellings o( a Eord
Kescription
array pspell>suggest > int dictionaryZlin"A string Eord ?
pspell>suggest./ returns an array o( possi#le spellings (or the given Eord;
E'emplo !. pspell>suggest./ e+ample
<?php
$pspell%linI > pspell%ne83"en"9;
i# 3!pspell%checI3$pspell%linI, "testt"99 :
$suEEestions > pspell%suEEest3$pspell%linI, "testt"9;
#oreach 3$suEEestions as $suEEestion9 :
echo "ossible spellinE@ $suEEestion<br />";
;
;
?>
CIC. ?tdom ;unctions
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
Nota- +sta eFtensi-n no est* disponi#le en plata(ormas LindoEs
Nota- ,his eFtension has #een moved to the P+5L repository and is no longer #undled
Eith P&P as o( P&P 4;3;3;
Me?uirimientos
%ou need the Ot2li#rary _^0;0;3
Instalaci"n
5on(igure P&P ==76th=@t#om to use these (unctions;
Tabla de contenidos
/domZerror 22 Returns the error string (rom the last ODOM operation or FAL+ i( no errors
occurred
/domZtree 22 5reates a tree o( an JML string
?dom>error
>P&P 8 _^ 8;3;4?
/domZerror 22 Returns the error string (rom the last ODOM operation or FAL+ i( no errors
occurred
Kescription
string ?dom>error > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
?dom>tree
>P&P 8 _^ 8;3;8?
/domZtree 22 5reates a tree o( an JML string
Kescription
ODomDocument ?dom>tree > string doc ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
CC. Mar ;unctions
Introducci"n
Rar is a poEer(ul and e((ective archiver created #y +ugene Roshal; ,his eFtension gives you
possi#ility to read Rar archives #ut doesnHt support Eriting Rar archivesA #ecause this is not
supported #y @nRar li#rary and is directly prohi#ited #y itHs license;
More in(ormation a#out Rar and @nRar can #e (ound at httpCDDEEE;rarla#s;comD;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Instalaci"n
Rar is currently availa#le through P+5L httpCDDpecl;php;netDpac"ageDrar;
Also you can use the pear installer to install the Rar eFtensionA using the (olloEing commandC pear
(5 install rar;
%ou can alEays doEnload the tar;gz pac"age and install Rar #y handC
E'emplo !. Mar installation
Eun0ip rarFxxx.tE0
tar Fx=# rarFxxx.tar
cd rarFxxx
phpi0e
./con#iEure && maIe && maIe install
LindoEs users can doEnload the eFtension dll php%rar.dll hereC
httpCDDsnaps;php;netDEin70DP+5LZ,ABL+D;
Tipos de recursos
,here is one resource used in Rar eFtensionC a (ile descriptor returned #y rar>open./;
Constantes predefinidas
RAR_HOST_MSDOS >integer?
RAR_HOST_OS* >integer?
RAR_HOST_"IN>* >integer?
RAR_HOST_UNI% >integer?
RAR_HOST_(EOS >integer?
E'emplos
E'emplo *. Mar e+tension o5er5ie3 e+ample
<?php
$rar%#ile > rar%open3Mexample.rarM9 or die3"RanMt open 'ar archi=e"9;
$entries > rar%list3$rar%#ile9;
#oreach 3$entries as $entry9 :
echo MSilename@ M . $entryF>Eet.ame39 . "Vn";
echo MacIed si0e@ M . $entryF>EetacIed&i0e39 . "Vn";
echo M+npacIed si0e@ M . $entryF>Eet+npacIed&i0e39 . "Vn";
$entryF>extract3M/dir/extract/to/M9;
;
rar%close3$rar%#ile9;
?>
,his eFample opens a Rar (ile archive and eFtracts each entry to the speci(ied directory;
Tabla de contenidos
rarZclose 22 5lose Rar archive and (ree all resources
rarZentryZget 22 Get entry o#'ect (rom the Rar archive
RarCCeFtract 22 +Ftract entry (rom the archive
RarCCgetAttr 22 Get attri#utes o( the entry
RarCCget5rc 22 Get 5R5 o( the entry
RarCCgetFile,ime 22 Get entry last modi(ication time
RarCCget&ostOs 22 Get entry host O
RarCCgetMethod 22 Get pac" method o( the entry
RarCCgetName 22 Get name o( the entry
RarCCgetPac"edize 22 Get pac"ed size o( the entry
RarCCget@npac"edize 22 Get unpac"ed size o( the entry
RarCCget$ersion 22 Get version o( the archiver used to add the entry
rarZlist 22 Get entries list (rom the Rar archive
rarZopen 22 Open Rar archive
rar>close
>no version in(ormationA might #e only in 5$?
rarZclose 22 5lose Rar archive and (ree all resources
Kescription
#ool rar>close > resource rarZ(ile ?
5lose Rar archive and (ree all allocated resources;
rar>close./ returns FALSE on error;
rar>entry>get
>no version in(ormationA might #e only in 5$?
rarZentryZget 22 Get entry o#'ect (rom the Rar archive
Kescription
Rar+ntry rar>entry>get > resource rarZ(ileA string entryZname ?
Get entry o#'ect (rom the Rar archive;
E'emplo !. Mar--./ e+ample
<?php
$rar%#ile > rar%open3Mexample.rarM9 or die3"Sailed to open 'ar archi=e"9;
$entry > rar%entry%Eet3$rar%#ile, MLir/#ile.txtM9 or die3"Sailed to #ind such entry"9;
print%r3$entry9;
?>
rar>get>entry./ returns entry o#'ect or FALSE on error;
Mar--e+tract
>no version in(ormationA might #e only in 5$?
RarCCeFtract 22 +Ftract entry (rom the archive
Kescription
#ool Mar--e+tract > string dir PA string (ilepathQ ?
Mar--e+tract./ eFtracts entryHs data to the #6r; .t Eill create neE (ile in the speci(ied #6r Eith the
name identical to the entryHs name; .( parameter 96lepath is speci(ied instead #6rA Mar--e+tract./ Eill
eFtract entryHs data to the speci(ied (ile;
E'emplo !. Mar--e+tract./ e+ample
<?php
$rar%#ile > rar%open3Mexample.rarM9 or die3"Sailed to open 'ar archi=e"9;
$entry > rar%entry%Eet3$rar%#ile, MLir/#ile.txtM9 or die3"Sailed to #ind such entry"9;
$entryF>extract3M/dir/toM9; // create /dir/to/Lir/#ile.txt
$entryF>extract3#alse, M/dir/to/ne8%name.txtM9; // create /dir/to/ne8%name.txt
?>
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Mar--getAttr
>no version in(ormationA might #e only in 5$?
RarCCgetAttr 22 Get attri#utes o( the entry
Kescription
int Mar--getAttr > void ?
Mar--getAttr./ returns attri#utes o( the archive entry;
E'emplo !. Mar--getAttr./ e+ample
<?php
$rar%#ile > rar%open3Mexample.rarM9 or die3"RanMt open 'ar archi=e"9;
$entry > rar%entry%Eet3$rar%#ile, Mdir/in/the/archi=eM9 or die3"RanMt #ind such entry"9;
$host%os > $entryF>EetHost?s39;
$attr > $entryF>Eet,ttr39;
s8itch3$host%os9 :
case ','%H?&*%"&L?&@
case ','%H?&*%?&C@
case ','%H?&*%74.<C@
case ','%H?&*%",R?&@
print#3"\c\c\c\c\c\cVn",
3$attr & 2x2J9 ? M(M @ M.M,
3$attr & 2x629 ? MLM @ M.M,
3$attr & 2x269 ? M'M @ M.M,
3$attr & 2x2C9 ? MHM @ M.M,
3$attr & 2x219 ? M&M @ M.M,
3$attr & 2xC29 ? M,M @ M.M9;
breaI;
case ','%H?&*%+.4X@
case ','%H?&*%ZE?&@
s8itch 3$attr & 2xS2229
:
case 2x1222@
print#3"d"9;
breaI;
case 2x,222@
print#3"l"9;
breaI;
de#ault@
print#3"F"9;
breaI;
;
print#3"\c\c\c\c\c\c\c\c\cVn",
3$attr & 2x26229 ? MrM @ MFM,
3$attr & 2x22J29 ? M8M @ MFM,
3$attr & 2x22129 ? 33$attr & 2x2J229 ? MsM@MxM9@33$attr & 2x2J229 ? M&M@MFM9,
3$attr & 2x22C29 ? MrM @ MFM,
3$attr & 2x22629 ? M8M @ MFM,
3$attr & 2x222J9 ? 33$attr & 2x21229 ? MsM@MxM9@33$attr & 2x21229 ? M&M@MFM9,
3$attr & 2x22219 ? MrM @ MFM,
3$attr & 2x222C9 ? M8M @ MFM,
3$attr & 2x22269 ? MxM @ MFM9;
breaI;
;
rar%close3$rar%#ile9;
?>
Mar--getAttr./ returns FALSE on error;
ee also Mar--getHostJs./;
Mar--getCrc
>no version in(ormationA might #e only in 5$?
RarCCget5rc 22 Get 5R5 o( the entry
Kescription
int Mar--getCrc > void ?
Mar--getCrc./ returns 5R5 o( the archive entry;
E'emplo !. Mar--getCrc./ e+ample
<?php
?>
Mar--getCrc./ returns FALSE on error;
Mar--get;ileTime
>no version in(ormationA might #e only in 5$?
RarCCgetFile,ime 22 Get entry last modi(ication time
Kescription
string Mar--get;ileTime > void ?
Mar--get;ileTime./ returns entry last modi(ication time as string in (ormat %%%%2MM2DD
&&C..C;
E'emplo !. Mar--./ e+ample
<?php
?>
Mar--get;ileTime./ returns FALSE on error;
Mar--getHostJs
>no version in(ormationA might #e only in 5$?
RarCCget&ostOs 22 Get entry host O
Kescription
int Mar--getHostJs > void ?
Mar--getHostJs./ return code o( the host O o( the archive entry;
E'emplo !. Mar--getHostJs./ e+ample
<?php
$rar%#ile > rar%open3Mexample.rarM9 or die3"Sailed to open 'ar archi=e"9;
$entry > rar%entry%Eet3$rar%#ile, MLir/#ile.txtM9 or die3"Sailed to #ind such entry"9;
s8itch 3$entryF>EetHost?s399 :
case ','%H?&*%"&L?&@
echo ""&FL?&Vn";
breaI;
case ','%H?&*%?&C@
echo "?&CVn";
breaI;
case ','%H?&*%74.<C@
echo "7in<CVn";
breaI;
case ','%H?&*%",R?&@
echo ""ac?&Vn";
breaI;
case ','%H?&*%+.4X@
echo "+nix/OinuxVn";
breaI;
case ','%H?&*%ZE?&@
echo "Ze?&Vn";
breaI;
;
?>
Mar--getHostJs./ returns FALSE on error;
Mar--getMethod
>no version in(ormationA might #e only in 5$?
RarCCgetMethod 22 Get pac" method o( the entry
Kescription
int Mar--getMethod > void ?
Mar--getMethod./ returns num#er o( the method used Ehen adding current archive entry;
E'emplo !. Mar--getMethod./ e+ample
<?php
$rar%#ile > rar%open3Mexample.rarM9 or die3"Sailed to open 'ar archi=e"9;
$entry > rar%entry%Eet3$rar%#ile, MLir/#ile.txtM9 or die3"Sailed to #ind such entry"9;
echo ""ethod number@ " . $entryF>Eet"ethod39;
?>
Mar--getMethod./ returns FALSE on error;
Mar--getName
>no version in(ormationA might #e only in 5$?
RarCCgetName 22 Get name o( the entry
Kescription
string Mar--getName > void ?
Mar--getName./ returns (ull name o( the archive entry;
E'emplo !. Mar--getName./ e+ample
<?php
$rar%#ile > rar%open3Mexample.rarM9 or die3"Sailed to open 'ar archi=e"9;
$entry > rar%entry%Eet3$rar%#ile, MLir/#ile.txtM9 or die3"Sailed to #ind such entry"9;
echo "Entry name@ " . $entryF>Eet.ame39;
?>
Mar--getName./ returns FALSE on error;
Mar--getPacBed,i6e
>no version in(ormationA might #e only in 5$?
RarCCgetPac"edize 22 Get pac"ed size o( the entry
Kescription
int Mar--getPacBed,i6e > void ?
Get pac"ed size o( the archive entry;
E'emplo !. Mar--./ e+ample
<?php
$rar%#ile > rar%open3Mexample.rarM9 or die3"Sailed to open 'ar archi=e"9;
$entry > rar%entry%Eet3$rar%#ile, MLir/#ile.txtM9 or die3"Sailed to #ind such entry"9;
echo "acIed si0e o# " . $entryF>Eet.ame39 . " > " . $entryF>EetacIed&i0e39 . " bytes";
?>
Mar--getPacBed,i6e./ returns FALSE on error;
Mar--get)npacBed,i6e
>no version in(ormationA might #e only in 5$?
RarCCget@npac"edize 22 Get unpac"ed size o( the entry
Kescription
int Mar--get)npacBed,i6e > void ?
Get unpac"ed size o( the archive entry;
E'emplo !. Mar--get)npacBed,i6e./ e+ample
<?php
$rar%#ile > rar%open3Mexample.rarM9 or die3"Sailed to open 'ar archi=e"9;
$entry > rar%entry%Eet3$rar%#ile, MLir/#ile.txtM9 or die3"Sailed to #ind such entry"9;
echo "+npacIed si0e o# " . $entryF>Eet.ame39 . " > " . $entryF>EetacIed&i0e39 . " bytes";
?>
Mar--get)npacBed,i6e./ returns FALSE on error;
Mar--getCersion
>no version in(ormationA might #e only in 5$?
RarCCget$ersion 22 Get version o( the archiver used to add the entry
Kescription
int Mar--getCersion > void ?
Get version o( the archiver used to add the archive entry;
E'emplo !. Mar--getCersion./ e+ample
<?php
$rar%#ile > rar%open3Mexample.rarM9 or die3"Sailed to open 'ar archi=e"9;
$entry > rar%entry%Eet3$rar%#ile, MLir/#ile.txtM9 or die3"Sailed to #ind such entry"9;
echo "'ar 37in','9 =ersion used@ " . $entryF>Eet(ersion39;
?>
Mar--getCersion./ returns FALSE on error;
rar>list
>no version in(ormationA might #e only in 5$?
rarZlist 22 Get entries list (rom the Rar archive
Kescription
array rar>list > resource rarZ(ile ?
Get entries list (rom the Rar archive;
E'emplo !. Mar--./ e+ample
<?php
$rar%#ile > rar%open3Mexample.rarM9 or die3"Sailed to open 'ar archi=e"9;
$entries%list > rar%list3$rar%#ile9;
print%r3$entries%list9;
?>
rar>list./ returns array o( entries or FALSE on error;
rar>open
>no version in(ormationA might #e only in 5$?
rarZopen 22 Open Rar archive
Kescription
resource rar>open > string (ilename PA string passEordQ ?
Open speci(ied Rar archive and return Rar (ile resource;
rar>open./ returns Rar (ile resource or FALSE on error;
CCI. FN) Meadline
Introducci"n
Las (unciones readline./ implementan una inter(az con la #i#lioteca GN@ Readline; +stas son
(unciones /ue o(recen l)neas de comando edita#les; @n e'emplo de la manera en /ue tra#a'an podr)a
ser la (orma en /ue Bash le permite usar las teclas de (lechas para insertar caracteres o desplazarse a
trav<s del historial de comandos; De#ido a la naturaleza interactiva de esta #i#liotecaA tendr* un uso
muy reducido en la escritura de aplicaciones Le#A aun/ue puede ser Btil cuando se escri#en scripts
al usar P&P desde la l)nea de comandos;
Nota- +sta eFtensi-n no est* disponi#le en plata(ormas LindoEs
Me?uirimientos
Para usar las (unciones readlineA necesita instalar li#readline; Puede encontrar li#readlinea en la
p*gina Ee# del proyecto GN@ ReadlineA en httpCDDcnsEEE;cns;cEru;eduDgchetDreadlineDrltop;html;
+ste proyecto es administrado por 5het RameyA /uien es tam#i<n el autor de Bash;
,am#i<n puede usar estas (unciones con la #i#lioteca li#editA un reemplazo no2GPL de la #i#lioteca
readline; La #i#lioteca li#edit es distri#uida #a'o una licencia BD y est* disponi#le para su
descarga en httpCDDsource(orge;netDpro'ectsDli#editD;
Instalaci"n
Para usar estas (uncionesA de#e compilar la versi-n 5G. o 5L. de P&P con soporte para readline;
Necesita con(igurar P&P con la opci-n ==76th=rea#l6ne):D0R.; i desea usar el reemplazo de
readlineA li#editA con(igure P&P con la opci-n ==76th=l61e#6t):D0R.;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
readlineZaddZhistory 22 AWade una l)nea al historial
readlineZcall#ac"ZhandlerZinstall 22 .nitializes the readline call#ac" inter(ace and terminalA prints
the prompt and returns immediately
readlineZcall#ac"ZhandlerZremove 22 Removes a previously installed call#ac" handler and restores
terminal settings
readlineZcall#ac"ZreadZchar 22 Reads a character and in(orms the readline call#ac" inter(ace Ehen a
line is received
readlineZclearZhistory 22 Borra el historial
readlineZcompletionZ(unction 22 Registra una (unci-n de completitud
readlineZin(o 22 +sta#leceDO#tiene diversas varia#les internas de readline
readlineZlistZhistory 22 Lista el historial
readlineZonZneEZline 22 .n(orm readline that the cursor has moved to a neE line
readlineZreadZhistory 22 Lee el historial
readlineZredisplay 22 As" readline to redraE the display
readlineZEriteZhistory 22 +scri#e el historial
readline 22 Lee una l)nea
readline>add>history
>P&P 8 A P&P 4?
readlineZaddZhistory 22 AWade una l)nea al historial
Kescripci"n
void readline>add>history > string line ?
+sta (unci-n aWade una l)nea al historial de l)neas de comandos;
readline>callbacB>handler>install
>no version in(ormationA might #e only in 5$?
readlineZcall#ac"ZhandlerZinstall 22 .nitializes the readline call#ac" inter(ace and terminalA prints
the prompt and returns immediately
Kescripci"n
#ool readline>callbacB>handler>install > string promptA call#ac" call#ac" ?
ets up a readline call#ac" inter(ace then prints prompt and immediately returns; ,he call1ac>
(unction ta"es one parameterX the user input returned; 5alling this (unction tEice Eithout removing
the previous call#ac" inter(ace Eill automatically and conveniently overErite the old inter(ace;
,he call#ac" (eature is use(ul Ehen com#ined Eith stream>select./ as it alloEs interleaving o( .O
and user inputA unli"e readline./;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. Meadline CallbacB Interface E+ample
<?php
#unction rl%callbacI3$ret9
:
Elobal $c, $promptinE;
echo "Pou entered@ $retVn";
$c[[;
i# 3$c > 629 :
$promptinE > #alse;
readline%callbacI%handler%remo=e39;
; else :
readline%callbacI%handler%install3")$c/ Enter somethinE@ ", Mrl%callbacIM9;
;
;
$c > 6;
$promptinE > true;
readline%callbacI%handler%install3")$c/ Enter somethinE@ ", Mrl%callbacIM9;
8hile 3$promptinE9 :
$n > stream%select3$r > array3&*L4.9, $8 > null, $e > null, null9;
i# 3$n && in%array3&*L4., $r99 :
// read a character, 8ill call the callbacI 8hen a ne8line is entered
readline%callbacI%read%char39;
;
;
echo "romptinE disabled. ,ll done.Vn";
?>
Cer tambi%n
readline>callbacB>handler>remo5e./A readline>callbacB>read>char./A y stream>select./;
readline>callbacB>handler>remo5e
>no version in(ormationA might #e only in 5$?
readlineZcall#ac"ZhandlerZremove 22 Removes a previously installed call#ac" handler and restores
terminal settings
Kescripci"n
#ool readline>callbacB>handler>remo5e > void ?
Removes a previously installed call#ac" handler and restores terminal settings;
E'emplos
ee readline>callbacB>handler>install./ (or an eFample o( hoE to use the readline call#ac"
inter(ace;
Calores retornados
Returns TRUE i( a previously installed call#ac" handler Eas removedA or FALSE i( one could not #e
(ound;
Cer tambi%n
readline>callbacB>handler>install./A and readline>callbacB>read>char./;
readline>callbacB>read>char
>no version in(ormationA might #e only in 5$?
readlineZcall#ac"ZreadZchar 22 Reads a character and in(orms the readline call#ac" inter(ace Ehen a
line is received
Kescripci"n
void readline>callbacB>read>char > void ?
Reads a character o( user input; Lhen a line is receivedA this (unction in(orms the readline call#ac"
inter(ace installed using readline>callbacB>handler>install./ that a line is ready (or input;
E'emplos
ee readline>callbacB>handler>install./ (or an eFample o( hoE to use the readline call#ac"
inter(ace;
Cer tambi%n
readline>callbacB>handler>install./A and readline>callbacB>handler>remo5e./;
readline>clear>history
>P&P 8 A P&P 4?
readlineZclearZhistory 22 Borra el historial
Kescripci"n
#oolean readline>clear>history > void ?
+sta (unci-n #orra por completo el historial de la l)nea de comandos;
readline>completion>function
>P&P 8 A P&P 4?
readlineZcompletionZ(unction 22 Registra una (unci-n de completitud
Kescripci"n
#oolean readline>completion>function > string line ?
+sta (unci-n registra una (unci-n de completitud; De#e proporcionar el nom#re de una (unci-n
eFistente /ue acepte una l)nea de comandos parcial y devuelva una array con posi#les coincidencias;
+s el mismo tipo de (uncionalidad /ue se o#tiene al pulsar la tecla de ta#ulaci-n cuando se est*
usando el Bash;
readline>info
>P&P 8 A P&P 4?
readlineZin(o 22 +sta#leceDO#tiene diversas varia#les internas de readline
Kescripci"n
miFed readline>info > Pstring varname PA string neEvalueQQ ?
i es llamada sin par*metrosA esta (unci-n devuelve un array con los valores de todas las opciones
/ue readline usa; Los elementos vendr*n indeFados por los siguientes valoresC doneA endA
eraseZemptyZlineA li#raryZversionA lineZ#u((erA mar"A pendingZinputA pointA promptA readlineZnameA
y terminalZname;
i es llamada con un par*metrosA devuelve el valor de esa opci-n; i es llamada con dos par*metrosA
el valor de la opci-n ser* cam#iado al par*metro dado;
readline>list>history
>P&P 8 A P&P 4?
readlineZlistZhistory 22 Lista el historial
Kescripci"n
array readline>list>history > void ?
+sta (unci-n devuelve un array con el historial de l)neas de comandos completo; Los elementos
est*n indeFados por enteros comenzando por el cero;
readline>on>ne3>line
>no version in(ormationA might #e only in 5$?
readlineZonZneEZline 22 .n(orm readline that the cursor has moved to a neE line
Kescription
void readline>on>ne3>line > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
readline>read>history
>P&P 8 A P&P 4?
readlineZreadZhistory 22 Lee el historial
Kescripci"n
#ool readline>read>history > Pstring nom#reZarchivoQ ?
+sta (unci-n lee un historial de comandos desde un archivo;
readline>redisplay
>no version in(ormationA might #e only in 5$?
readlineZredisplay 22 As" readline to redraE the display
Kescription
void readline>redisplay > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
readline>3rite>history
>P&P 8 A P&P 4?
readlineZEriteZhistory 22 +scri#e el historial
Kescripci"n
#oolean readline>3rite>history > string (ilename ?
+sta (unci-n escri#e el historial de comandos en un archivo;
readline
>P&P 8 A P&P 4?
readline 22 Lee una l)nea
Kescripci"n
string readline > Pstring promptQ ?
+sta (unci-n devuelve una Bnica cadena del usuario; Puede especi(icar una cadena /ue se mostrar*
al usuario; La l)nea devuelta tiene el indicador (inal de nueva l)nea eliminado; Necesita aWadir esta
l)nea al historial usando la (unci-n readline>add>history./;
E'emplo !. readline./
<?php
//obtiene < comandos del usuario
#or 3$i>2; $i < <; $i[[9 :
$line > readline 3"Romando@ "9;
readline%add%history 3$line9;
;
//(uelca el historial
print%r 3readline%list%history399;
//(uelca las =ariables
print%r 3readline%in#o399;
?>
CCII. ;unciones FN) Mecode
Introducci"n
+ste m-dulo contiene una inter(az con la #i#lioteca GN@ Recode; La #i#lioteca GN@ Recode
convierte archivos entre varios 'uegos de caracteres codi(icados y codi(icaciones de super(icie;
5uando esto no puede conseguirse con eFactitudA puede /ue se deshaga de los caracteres
pro#lem*ticos o recurra a aproFimaciones; La #i#lioteca reconoce o produce cerca de 143 'uegos de
caracteres di(erentes y es capaz de convertir archivos entre casi cual/uier par de ellos; La mayor)a
de 'uegos de caracteres del documento RF5 1784 se encuentran soportados;
Nota- +sta eFtensi-n no est* disponi#le en plata(ormas LindoEs
Me?uirimientos
@sted de#e tener instalado GN@ Recode 7;4 o superior en su sistema; Puede descargar el pa/uete
desde httpCDDEEE;gnu;orgDdirectoryDAllZGN@ZPac"agesDrecode;html;
A5iso
La versi-n 7;K de la #i#lioteca Recode agrega caracteres eFtraWos detr*s de cadenas convertidas
#a'o ciertas circunstancias; Por lo tanto es m*s seguro usar Recode v7;4 o alguna de las
alternativas disponi#lesA como las eFtensiones iconv o m#string;
Instalaci"n
,o #e a#le to use the (unctions de(ined in this module you must compile your P&P interpreter using
the ==76th=reco#e):D0R. option;
A5iso
5rashes and startup pro#lems o( P&P may #e encountered Ehen loading the recode as eFtension
after loading any eFtension o( mys/l or imap; Loading the recode #e(ore those eFtension has
proved to (iF the pro#lem; ,his is due a technical pro#lem that #oth the c2client li#rary used #y
imap and recode have their oEn hash_loo>upLM (unction and #oth mys/l and recode have their
oEn hash_6nsert (unction;
A5iso
La eFtensi-n .MAP no puede ser usada 'unto con las eFtensiones recodeA %AI - 5yrus; +sto es
de#ido a /ue las dos utilizan el mismo s)m#olo interno
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
recodeZ(ile 22 Recodi(icar de un archivo a otro de acuerdo a la petici-n de recodi(icaci-n
recodeZstring 22 Recodi(ica una cadena literal segun una peticion de recodi(icacion;
recode 22 Alias o( recode>string./
recode>file
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
recodeZ(ile 22 Recodi(icar de un archivo a otro de acuerdo a la petici-n de recodi(icaci-n
Kescripci"n
#ool recode>file > string peticionA resource entradaA resource salida ?
Recodi(icar el archivo re(erenciado por el gestor de archivo entra#a en el archivo re(erenciado por
el gestor de archivo sal6#a de acuerdo a la pet6c6on de recodi(icaci-n; Devuelve FALSE si no es
posi#le cumplir la petici-nA o TRUE de lo contrario;
+n la actualidadA esta (unci-n no procesa gestores de archivo /ue hagan re(erencia a archivos
remotos >@RLs?; Am#os gestores de archivo de#en hacer re(erencia a archivos locales;
E'emplo !. E'emplo bsico de recode>file./
<?php
$entrada > #open3Mentrada.txtM, MrM9;
$salida > #open3Msalida.txtM, M8M9;
recode%#ile3"us..#lat", $entrada, $salida9;
?>
recode>string
>P&P 7_^ 7;3;17A P&P 8 A P&P 4?
recodeZstring 22 Recodi(ica una cadena literal segun una peticion de recodi(icacion;
Kescription
string recode>string > string re/uestA string string ?
Recodi(ica la cadena str6nE segun una peticion de recodi(icacion re@uest; Devuelve FALSE si no
puede realizar la recodi(icacionA TRUE si todo va #ien;
@na simple peticion =recode= podria ser =lat1;;isoK8K2de=; $er tam#ien la documentacion de GN@
Recode de tu instalacion para o#tener instrucciones detalladas so#re peticiones de recodi(icacion;
recode
recode 22 Alias o( recode>string./
Kescription
,his (unction is an alias o( recode>string./;
CCIII. ;unciones de E+presiones Megulares
.PJ,II E+tendido/
Introducci"n
,ugerencia- P&P o(rece tam#i<n soporte de eFpresiones regulares usando una sintaFis
compati#le con Perl usando las Funciones P5R+; ,ales (unciones soportan
coincidencias no2am#iciosasA asercionesA su#patrones condicionalesA y un nBmero de
caracter)sticas adicionales /ue no son soportadas por las sintaFis de eFpresiones
regulares PO.J2eFtendido;
A5iso
+stas eFpresiones regulares no son seguras con material #inario; Las Funciones P5R+ lo son;
Las eFpresiones regulares son usadas para la manipulaci-n comple'a de cadenas; P&P usa
eFpresiones regulares PO.J eFtendidasA tal y como se de(inen por PO.J 1337;0; Para una
descripci-n completa de las eFpresiones regulares PO.JA vea las p*ginas de manual de regeF
incluidas en el directorio regeF en la distri#uci-n de P&P; e encuentran en (ormato manpageA as)
/ue /uerr* hacer algo del estilo de man AusrAlocalAsrcArege+Arege+.= para leerlas;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
A5iso
No modi(i/ue el ,.PO a menos /ue sepa lo /ue est* haciendo;
Para ha#ilitar el soporte para eFpresiones regularesA con(igure P&P con la opci-n ==76th=reEe8
):T0+O.; ,.PO puede ser un valor entre systemA apacheA php; La acci-n predeterminada es usar
php;
La versi-n para LindoEs de +!+ tiene soporte nativo para esta eFtensi-n; No se necesita cargar
ninguna eFtensi-n adicional para usar estas (unciones;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
E'emplos
E'emplo !. E'emplos de E+presiones Megulares
<?php
// Le=uel=e true si "abc" se encuentra en cualQuier luEar de $cadena.
ereE3"abc", $cadena9;
// Le=uel=e true si "abc" es encontrado al comien0o de $cadena
ereE3"cabc", $cadena9;
// Le=uel=e true si "abc" es encontrado al #inal de $cadena.
ereE3"abc$", $cadena9;
// Le=uel=e true si el na=eEador del cliente es .etscape C, < or "&4E <.
ereEi3"3o0illa.)C</T"&4E.<9", $H**%+&E'%,-E.*9;
// Roloca tres palabras separadas por espacios en $reEs)6/, $reEs)C/ y $reEs)</.
ereE3"3))@alnum@//[9 3))@alnum@//[9 3))@alnum@//[9", $cadena, $reEs9;
// Roloca una etiQueta <br /> al comien0o de $cadena.
$cadena > ereE%replace3"c", "<br />", $cadena9;

// Roloca una etiQueta <br /> al #inal de $cadena.
$cadena > ereE%replace3"$", "<br />", $cadena9;
// &e deshace de cualQuier caracter de salto de linea en $cadena.
$cadena > ereE%replace3"Vn", "", $cadena9;
?>
Cer tambi%n
Para consultar so#re eFpresiones regulares en una sintaFis compati#le con PerlA eche un vistazo a las
Funciones P5R+; Las coincidencias m*s simples de comodines tipo int<rprete de comandos son
o(recidas por fnmatch./;
Tabla de contenidos
eregZreplace 22 reemplaza eFpresiones regulares
ereg 22 5oincidencia de eFpresiones regulares
eregiZreplace 22 reemplaza eFpresiones regularse sin di(erenciar mayBsculas y minBsculas
eregi 22 coincidencia de eFpresiones regulares sin di(erenciar mayBsculas y minBsculas
split 22 divide la cadena en elementos de un array segBn una eFpresi-n regular
spliti 22 eparar una cadena en una matriz mediante una eFpresi-n regularA no sensi#le a
mayBsculas ni minBsculas
s/lZregcase 22 construye una eFpresi-n regular para #uscar coincidencias sin di(erenciar mayBsculas
y minBsculas
ereg>replace
>P&P 7A P&P 8 A P&P 4?
eregZreplace 22 reemplaza eFpresiones regulares
Kescripci"n
string ereg>replace > string patternA string replacementA string string ?
+sta (unci-n eFamina str6nE #uscando coincidencias de patternA y reemplaza el teFto encontrado
con replacement;
Devuelve la cadena modi(icada; i no hay coincidencias /ue reemplazarA devuelve la cadena
original;
i pattern contiene su#cadenas entre par<ntesisA replacement puede contener su#cadenas de la
(orma QQc69raA /ue ser*n reemplazadas por el teFto /ue coincide con la su#cadena entre par<ntesis
/ue ocupa el lugar indicado por la ci(raX QQ0 produce el contenido total de la cadena; e pueden usar
hasta nueve su#cadenas; Los par<ntesis pueden anidarseX en este caso se cuentan los par<ntesis de
apertura;
i no se encuentran coincidencias en str6nEA se devuelve str6nE sin cam#ios;
Por e'emploA el siguiente (ragmento de c-digo imprime =,his Eas a test= tres vecesC
E'emplo !. ereg>replace./ e+ample
$strinE > "*his is a test";
echo ereE%replace3 " is", " 8as", $strinE 9;
echo ereE%replace3 "3 9is", "VV68as", $strinE 9;
echo ereE%replace3 "33 9is9", "VVC8as", $strinE 9;
$er tam#i<n ereg./A eregi./A y eregi>replace./;
ereg
>P&P 7A P&P 8 A P&P 4?
ereg 22 5oincidencia de eFpresiones regulares
Kescripci"n
int ereg > string patternA string string PA array regsQ ?
Busca en str6nE las coincidencias con la eFpresi-n regular pattern;
i se encuentran coincidencias con su#cadenas entre par<ntesis de pattern y la (unci-n se ha
llamado con el tercer argumento reEsA las coincidencias se almacenar*n en los elementos de reEs;
YregsP1Q contendr* la su#cadena /ue empieza en el primer par<ntesis iz/uierdoX YregsP0Q la /ue
comienza en el segundoA etc; YregsP3Q contendr* una copia de str6nE;
La #Bs/ueda di(erencia mayBsculas y minBsculas;
Devuelve un valor verdadero si se encontr- alguna coincidenciaA o (also in no se encontraron
coincidencias u ocurri- algBn error;
+l siguiente (ragmento de c-digo toma una (echa en (ormato .O >AAAA2MM2DD? y la imprime
en (ormato DD;MM;AAAAC
E'emplo !. ereg./ e+ample
i# 3 ereE3 "3)2FK/:1;9F3)2FK/:6,C;9F3)2FK/:6,C;9", $date, $reEs 9 9 :
echo "$reEs)</.$reEs)C/.$reEs)6/";
; else :
echo "4n=alid date #ormat@ $date";
;
$er tam#i<n eregi./A ereg>replace./A y eregi>replace./;
eregi>replace
>P&P 7A P&P 8 A P&P 4?
eregiZreplace 22 reemplaza eFpresiones regularse sin di(erenciar mayBsculas y minBsculas
Kescripci"n
string eregi>replace > string patternA string replacementA string string ?
+sta (unci-n es id<ntica a ereg>replace./A eFcepto en /ue ignora la distinci-n entre mayBsculas y
minBsculas;
$er tam#i<n ereg./A eregi./A y ereg>replace./;
eregi
>P&P 7A P&P 8 A P&P 4?
eregi 22 coincidencia de eFpresiones regulares sin di(erenciar mayBsculas y minBsculas
Kescripci"n
int eregi > string patternA string string PA array regsQ ?
+sta (unci-n es id<ntica a ereg./A eFcepto en /ue ignora la distinci-n entre mayBsculas y
minBsculas;
$er tam#i<n ereg./A ereg>replace./A y eregi>replace./;
split
>P&P 7A P&P 8 A P&P 4?
split 22 divide la cadena en elementos de un array segBn una eFpresi-n regular
Kescripci"n
array split > string patternA string string PA int limitQ ?
Devuelve un array de cadenasA cada una de las cuales es una su#cadena de str6nE (ormada al dividir
esta en los l)mites (ormados por la eFpresi-n regular pattern; i ocurre un errorA devuelve un valor
(also;
Para o#tener los cinco primeros campos de una l)nea de /etc/pass8dC
E'emplo !. split./ e+ample
$pass8d%list > split3 "@", $pass8d%line, 5 9;
Para eFaminar una (echa /ue puede estar delimitada por #arrasA puntos o guionesC
E'emplo *. split./ e+ample
$date > "21/<2/6KH<"; // Oos delimitadores pueden ser barras, puntos o Euiones
list3 $month, $day, $year 9 > split3 M)/.F/M, $date 9;
echo ""onth@ $month; Lay@ $day; Pear@ $year<br>Vn";
O#servar /ue pattern distingue entre mayBsculas y minBsculas;
O#servar /ue si no se necesita la potencia de las eFpresiones regularesA es m*s r*pido utilizar
e+plode./A /ue no carga el motor de eFpresiones regulares;
Por (avorA o#servar /ue pattern es una eFpresi-n regular; i se /uiere dividir con alguno de los
caracteres especiales de las eFpresiones regularesA se necesita protegerlo antes; i pareciera /ue split
./ >o cual/uier otra (unci-n de regeF? est* haciendo algo irregularA l<ase el archivo reEex.HA
incluido en el su#directorio reEex de la distri#uci-n de P&P; +st* en (ormato de p*gina de
manualA por lo /ue para leerlo es necesaria una orden como man AusrAlocalAsrcArege+Arege+.=;
$er tam#i<nC e+plode./ e implode./;
spliti
>P&P 8 _^ 8;3;1A P&P 4?
spliti 22 eparar una cadena en una matriz mediante una eFpresi-n regularA no sensi#le a
mayBsculas ni minBsculas
Kescripci"n
array spliti > string patronA string cadena PA int limiteQ ?
+sta (unci-n es id<ntica a split./A eFcepto /ue ignora la distinci-n entre mayBsculas y minBsculas
cuando realiza coincidencias so#re caracteres al(a#<ticos;
$ea tam#i<n preg>split./A split./A e+plode./A e implode./;
s?l>regcase
>P&P 7A P&P 8 A P&P 4?
s/lZregcase 22 construye una eFpresi-n regular para #uscar coincidencias sin di(erenciar mayBsculas
y minBsculas
Kescripci"n
string s?l>regcase > string string ?
Devuelve una eFpresi-n regular v*lida /ue coincide con str6nE sin distinguir mayBsculas y
minBsculas; +sta eFpresi-n es str6nE con cada car*cter convertido a una eFpresi-n entre corchetes
/ue contiene el car*cter en mayBscula y minBsculaA si es posi#leX en caso contrarioA contiene el
car*cter original dos veces;
E'emplo !. s?l>regcase./ e+ample
echo sQl%reEcase3 "Soo bar" 9;
imprime
)S#/)?o/)?o/) /)Zb/),a/)'r/
;
e puede utilizar para lograr coincidencias /ue no di(erencien mayBsculas de minBsculas en
productos /ue s-lo soportan eFpresiones regulares /ue s) distinguen;
CII. ;unciones ,emforo y de memoria
compartida
+ste m-dulo provee (unciones sem*(oro utilizando los sema(oros de ystem $; Los sem*(oros
pueden usarse para o#tener acceso eFclusivo a algun recurso del ordenador en cuesti-nA o para
limitar el nBmero de procesos /ue pueden usar un recurso simultaneamente;
+ste m-dulo provee tam#ien (unciones de memoria compartidaA usando el compartimiento de
memoria de ystem $; La memoria compartida puede usarse para proveer acceso a varia#les
glo#ales; Los di(erentes demonios http e incluso otros programasA >como PerlA 5A ;;;? son capaces de
utilizar estos datosA para intercam#iarlos de modo glo#al; Recuerde /ueA la memoria compartida NO
es segura para los accesos simult*neos; @se los sem*(oros para o#tener sincronismo;
Tabla !. :imites de la memoria compartida del ,J )ni+
&MMAJ m*Fimo tamaWo de memoria compartidaA normalmente 1713:0 #ytes
&MM.N minimo tamaWo de memoria compartidaA por lo general 1 #yte
&MMN.
m*Fima cantidad de segmentos de memoria compartidaA normalmente
133
&M+G m*Fimo de memoria compartida por procesoA normalmente K
Tabla de contenidos
(to" 22 5onvert a pathname and a pro'ect identi(ier to a ystem $ .P5 "ey
msgZgetZ/ueue 22 5reate or attach to a message /ueue
msgZreceive 22 Receive a message (rom a message /ueue
msgZremoveZ/ueue 22 Destroy a message /ueue
msgZsend 22 end a message to a message /ueue
msgZsetZ/ueue 22 et in(ormation in the message /ueue data structure
msgZstatZ/ueue 22 Returns in(ormation (rom the message /ueue data structure
semZac/uire 22 ad/uiere un sem*(oroA lo toma para s)
semZget 22 o#tiene la identi(icacion de un sem*(oro >semaphore id?
semZrelease 22 release a semaphore
semZremove 22 Remove a semaphore
shmZattach 22 5rea o a#re un segmento de memoria compartida
shmZdetach 22 Finaliza coneFi-n con un segmento de memoria compartida
shmZgetZvar 22 Devuelve una varia#le de la memoria compartida
shmZputZvar 22 .nserta o actualiza una varia#le en la memoria compartida
shmZremoveZvar 22 +limina una varia#le de la memoria compartida
shmZremove 22 +limina memoria compartida del sistma @niF
ftoB
>P&P 8 _^ 8;0;3A P&P 4?
(to" 22 5onvert a pathname and a pro'ect identi(ier to a ystem $ .P5 "ey
Kescription
int ftoB > string pathnameA string pro' ?
,he (unction converts the pathname o( an eFisting accessi#le (ile and a pro'ect identi(ier >proU? into
a 6nteEer (or use Eith (or eFample shmop>open./ and other ystem $ .P5 "eys; ,he proU parameter
should #e a one character string;
On success the return value Eill #e the created "ey valueA otherEise =1 is returned;
ee also shmop>open./ and sem>get./;
msg>get>?ueue
>P&P 8 _^ 8;7;3A P&P 4?
msgZgetZ/ueue 22 5reate or attach to a message /ueue
Kescription
resource msg>get>?ueue > int "ey PA int permsQ ?
msg>get>?ueue./ returns an id that can #e used to access the ystem $ message /ueue Eith the
given >e?; ,he (irst call creates the message /ueue Eith the optional perms >de(aultC 3KKK?; A
second call to msg>get>?ueue./ (or the same >e? Eill return a di((erent message /ueue identi(ierA
#ut #oth identi(iers access the same underlying message /ueue; .( the message /ueue already eFistsA
the perms Eill #e ignored;
ee also msg>remo5e>?ueue./A msg>recei5e./A msg>send./A msg>stat>?ueue./ and
msg>set>?ueue./;
msg>recei5e
>P&P 8 _^ 8;7;3A P&P 4?
msgZreceive 22 Receive a message (rom a message /ueue
Kescription
#ool msg>recei5e > resource /ueueA int desiredmsgtypeA int imsgtypeA int maFsizeA miFed
imessage PA #ool unserialize PA int (lags PA int ierrorcodeQQQ ?
msg>recei5e./ Eill receive the (irst message (rom the speci(ied @ueue o( the type speci(ied #y
#es6re#msEt?pe; ,he type o( the message that Eas received Eill #e stored in msEt?pe; ,he maFimum
size o( message to #e accepted is speci(ied #y the ma8s6DeX i( the message in the /ueue is larger than
this size the (unction Eill (ail >unless you set 9laEs as descri#ed #eloE?; ,he received message Eill
#e stored in messaEeA unless there Eere errors receiving the messageA in Ehich case the optional
errorco#e Eill #e set to the value o( the system errno varia#le to help you identi(y the cause;
.( #es6re#msEt?pe is 3A the message (rom the (ront o( the /ueue is returned; .( #es6re#msEt?pe is
greater than 3A then the (irst message o( that type is returned; .( #es6re#msEt?pe is less than 3A the
(irst message on the /ueue Eith the loEest type less than or e/ual to the a#solute value o(
#es6re#msEt?pe Eill #e read; .( no messages match the criteriaA your script Eill Eait until a suita#le
message arrives on the /ueue; %ou can prevent the script (rom #loc"ing #y speci(ying
MS#_IPC_NO"AIT in the 9laEs parameter;
unser6al6De de(aults to TRUEX i( it is set to TRUEA the message is treated as though it Eas serialized
using the same mechanism as the session module; ,he message Eill #e unserialized and then
returned to your script; ,his alloEs you to easily receive arrays or compleF o#'ect structures (rom
other P&P scriptsA or i( you are using the LDDJ serializerA (rom any LDDJ compati#le source; .(
unser6al6De is FALSEA the message Eill #e returned as a #inary2sa(e string;
,he optional 9laEs alloEs you to pass (lags to the loE2level msgrcv system call; .t de(aults to 3A #ut
you may speci(y one or more o( the (olloEing values >#y adding or ORing them together?;
Tabla !. ;lag 5alues for msg>recei5e
MS#_IPC_NO"
AIT
.( there are no messages o( the #es6re#msEt?peA return immediately and do not
Eait; ,he (unction Eill (ail and return an integer value corresponding to
+NOMG;
MS#_E%CEPT
@sing this (lag in com#ination Eith a #es6re#msEt?pe greater than 3 Eill cause
the (unction to receive the (irst message that is not e/ual to #es6re#msEt?pe;
MS#_NOERROR
.( the message is longer than ma8s6DeA setting this (lag Eill truncate the message
to ma8s6De and Eill not signal an error;
@pon success(ul completion the message /ueue data structure is updated as (olloEsC msE_lrp6# is
set to the process2.D o( the calling processA msE_@num is decremented #y 1 and msE_rt6me is set to
the current time;
msg>recei5e./ returns TRUE on success or FALSE on (ailure; .( the (unction (ailsA the optional
errorco#e Eill #e set to the value o( the system errno varia#le;
ee also msg>remo5e>?ueue./A msg>send./A msg>stat>?ueue./ and msg>set>?ueue./;
msg>remo5e>?ueue
>P&P 8 _^ 8;7;3A P&P 4?
msgZremoveZ/ueue 22 Destroy a message /ueue
Kescription
#ool msg>remo5e>?ueue > resource /ueue ?
msg>remo5e>?ueue./ destroys the message /ueue speci(ied #y the @ueue; Only use this (unction
Ehen all processes have (inished Eor"ing Eith the message /ueue and you need to release the
system resources held #y it;
ee also msg>remo5e>?ueue./A msg>recei5e./A msg>stat>?ueue./ and msg>set>?ueue./;
msg>send
>P&P 8 _^ 8;7;3A P&P 4?
msgZsend 22 end a message to a message /ueue
Kescription
#ool msg>send > resource /ueueA int msgtypeA miFed message PA #ool serialize PA #ool #loc"ing PA int
ierrorcodeQQQ ?
msg>send./ sends a messaEe o( type msEt?pe >Ehich M@, #e greater than 3? to a the message
/ueue speci(ied #y @ueue;
.( the message is too large to (it in the /ueueA your script Eill Eait until another process reads
messages (rom the /ueue and (rees enough space (or your message to #e sent; ,his is called
#loc"ingX you can prevent #loc"ing #y setting the optional 1loc>6nE parameter to FALSEA in Ehich
case msg>send./ Eill immediately return FALSE i( the message is too #ig (or the /ueueA and set the
optional errorco#e to +AGA.NA indicating that you should try to send your message again a little
later on;
,he optional ser6al6De controls hoE the messaEe is sent; ser6al6De de(aults to TRUE Ehich means
that the messaEe is serialized using the same mechanism as the session module #e(ore #eing sent to
the /ueue; ,his alloEs compleF arrays and o#'ects to #e sent to other P&P scriptsA or i( you are
using the LDDJ serializerA to any LDDJ compati#le client;
@pon success(ul completion the message /ueue data structure is updated as (olloEsC msE_lsp6# is
set to the process2.D o( the calling processA msE_@num is incremented #y 1 and msE_st6me is set to
the current time;
ee also msg>remo5e>?ueue./A msg>recei5e./A msg>stat>?ueue./ and msg>set>?ueue./;
msg>set>?ueue
>P&P 8 _^ 8;7;3A P&P 4?
msgZsetZ/ueue 22 et in(ormation in the message /ueue data structure
Kescription
#ool msg>set>?ueue > resource /ueueA array data ?
msg>set>?ueue./ alloEs you to change the values o( the msgZperm;uidA msgZperm;gidA
msgZperm;mode and msgZ/#ytes (ields o( the underlying message /ueue data structure; %ou speci(y
the values you re/uire #y setting the value o( the "eys that you re/uire in the #ata array;
5hanging the data structure Eill re/uire that P&P #e running as the same user that created the
/ueueA oEns the /ueue >as determined #y the eFisting msgZperm;FFF (ields?A or #e running Eith root
privileges; root privileges are re/uired to raise the msgZ/#ytes values a#ove the system de(ined
limit;
ee also msg>remo5e>?ueue./A msg>recei5e./A msg>stat>?ueue./ and msg>set>?ueue./;
msg>stat>?ueue
>P&P 8 _^ 8;7;3A P&P 4?
msgZstatZ/ueue 22 Returns in(ormation (rom the message /ueue data structure
Kescription
array msg>stat>?ueue > resource /ueue ?
msg>stat>?ueue./ returns the message /ueue meta data (or the message /ueue speci(ied #y the
@ueue; ,his is use(ulA (or eFampleA to determine Ehich process sent the message that Eas 'ust
received;
,he return value is an array Ehose "eys and values have the (olloEing meaningsC
Tabla !. Array structure for msg>stat>?ueue
msE_perm.u6# ,he uid o( the oEner o( the /ueue;
msE_perm.E6# ,he gid o( the oEner o( the /ueue;
msE_perm.mo#
e
,he (ile access mode o( the /ueue;
msE_st6me ,he time that the last message Eas sent to the /ueue;
msE_rt6me ,he time that the last message Eas received (rom the /ueue;
msE_ct6me ,he time that the /ueue Eas last changed;
msE_@num ,he num#er o( messages Eaiting to #e read (rom the /ueue;
msE_@1?tes
,he num#er o( #ytes o( space currently availa#le in the /ueue to hold sent
messages until they are received;
msE_lsp6# ,he pid o( the process that sent the last message to the /ueue;
msE_lrp6# ,he pid o( the process that received the last message (rom the /ueue;
ee also msg>remo5e>?ueue./A msg>recei5e./A msg>stat>?ueue./ and msg>set>?ueue./;
sem>ac?uire
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
semZac/uire 22 ad/uiere un sem*(oroA lo toma para s)
Kescripci"n
int sem>ac?uire > int semZidenti(ier ?
DevuelveC $erdadero si hay <FitoA (also si hay errores
sem>ac?uire./ Produce un #lo/ueo >de ser necesario? hasta /ue el sem*(oro puede ad/uirirse; @n
proceso intentando ad/uirir un sem*(oro ya ad/uiridoA se #lo/uear* permanentemente si
ad/uiriendo el sem*(oroA eFcede su valor de maFZac/uire;
Despues de procesar una petici-nA cual/uier sem*(oro ad/uirido por un procesoA /ue no sea
eFpl)citamente li#eradoA ser* li#erado automWaticamenteA generando un mensa'e de alerta;
$<ase tam#ienC sem>get./ and sem>release./;
sem>get
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
semZget 22 o#tiene la identi(icacion de un sem*(oro >semaphore id?
Kescripci"n
int sem>get > int "ey PA int maFZac/uire PA int permQQ ?
DevuelveC @n identi(icador positivo de sem*(oro en caso de <FitoA o (also en caso de error;
sem>get./ Devuelve un id /ue puede usarse para acceder al sem*(oro de ystem $ con la llave
dada; +l sem*(oro se usa si es necesario usando los #its de permisos especi(icados en perm >por
de(ecto 3KKK?; +l nBmero de procesos /ue pueden ad/uirir el sem*(oro simult*neamenteA se de(ine
en maFZac/uire >por de(ecto es 1?; Actualmente este valor se (i'a s-lo si el proceso determina /ue es
el Bnico relacionado actualmente al sem*(oro;
@na segunda llamada a sem>get./ para la misma llaveA devolver* un id de sem*(oro di(erenteA pero
con am#os identi(icadoesA se acceder* al mismo sem*(oro;
$<ase tam#i<nC sem>ac?uire./ y sem>release./;
sem>release
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
semZrelease 22 release a semaphore
Kescripci"n
int sem>release > int semZidenti(ier ?
ReturnsC TRUE on successA FALSE on error
sem>release./ releases the semaphore i( it is currently ac/uired #y the calling processA otherEise a
Earning is generated;
A(ter releasing the semaphoreA sem>ac?uire./ may #e called to re2ac/uire it;
$<ase tam#ienC sem>get./ y sem>ac?uire./;
sem>remo5e
>P&P 8 _^ 8;1;3A P&P 4?
semZremove 22 Remove a semaphore
Kescription
#ool sem>remo5e > resource semZidenti(ier ?
sem>remo5e./ removes the semaphore sem_6#ent696er i( it has #een created #y sem>get./A otherEise
generates a Earning;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
A(ter removing the semaphoreA it is no more accessi#le;
ee also sem>get./A sem>release./ and sem>ac?uire./;
shm>attach
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
shmZattach 22 5rea o a#re un segmento de memoria compartida
Kescripci"n
int shm>attach > int "ey PA int memsize PA int permQQ ?
shm>attach./ devuelve un identi(icador /ue puede usarse para acceder a la memoria compartida de
ystem$A con la llave dadaA la primera llamada crear* el segmento de memoria compartida con
memZsize de tamaWo >por de(ectoC sysvshm;initZmem en el archivo de con(iguraci-nA o #ien de
13333 #ytes? y los #its de permiso mas apropiados >por de(ectoC 3KKK?;
@na segunda llamada a shm>attach./ con la misma llae devolvera un id di(erente de memoria
compartidaA pero am#os identi(icadores acceden a la misma porci-n de memoria compartida;
mems6De y perm ser*n ignorados;
shm>detach
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
shmZdetach 22 Finaliza coneFi-n con un segmento de memoria compartida
Kescripci"n
int shm>detach > int shmZidenti(ier ?
shm>detach./ (inaliza la coneFi-n con la memoria compartidaA especi(icada por el identi(icador
shm_6#ent696er creado con shm>attach./; &ay /ue recordar /ue la memoria compartida aBn eFiste
en el sistema @niFA y los datos aBn est*n presentes;
shm>get>5ar
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
shmZgetZvar 22 Devuelve una varia#le de la memoria compartida
Kescripci"n
miFed shm>get>5ar > int idA int varia#leZ"ey ?
shm>get>5ar./ devuelve la varia#le con la llave ar6a1le_>e? dada; La varia#leA /ueda presente en
la memoria compartida;
shm>put>5ar
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
shmZputZvar 22 .nserta o actualiza una varia#le en la memoria compartida
Kescripci"n
#ool shm>put>5ar > int identi(icadorZshmA int claveZvaria#leA miFed varia#le ?
shm>put>5ar./ inserta o actualiza la ar6a1le con la clae_ar6a1le entregada; ,odos los tipos de
varia#les son soportados;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
e emitir*n advertencias >del nivel E_I,RN0N-? si 6#ent696ca#or_shm no es un )ndice de memoria
compartida ys$A o si no eFiste su(iciente memoria compartida disponi#le para completar su
solicitud;
shm>remo5e>5ar
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
shmZremoveZvar 22 +limina una varia#le de la memoria compartida
Kescripci"n
int shm>remo5e>5ar > int idA int varia#leZ"ey ?
+limina la vari#le /ue se corresponde con la llave ar6a1le_>e? dadaA li#erando la memoria /ue
ocupa#a a/uella;
shm>remo5e
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
shmZremove 22 +limina memoria compartida del sistma @niF
Kescripci"n
int shm>remo5e > int shmZidenti(ier ?
+limina la memoria compartida de un sistema @niFA ,odos los datos ser*n destru)dos;
CI. ,E,AM database functions
+AMDOL2erver is a main(rame data#ase systemA developed #y Fu'itsu iemens 5omputersA
Germany; .t runs on high2end main(rame servers using the operating system B0333DOD;
.n numerous productive B0333 installationsA +AMDOL2erver has proven ;;;
the ease o( use o( !ava2A Le#2 and clientDserver connectivityA
the capa#ility to Eor" Eith an availa#ility o( more than 99;99bA
the a#ility to manage tens and even hundreds o( thousands o( users;
NoE there is a P&P7 +AM inter(ace availa#le Ehich alloEs data#ase operations via P&P2scripts;
Configuration notes- ,here is no standalone support (or the P&P +AM inter(aceA it
Eor"s only as an integrated Apache module; .n the Apache P&P moduleA this +AM
inter(ace is con(igured using Apache directives;
Tabla !. ,E,AM Configuration directi5es
Kirecti5e Meaning
phpR_sesam_oml
Name o( B0333 PLAM li#rary containing the loada#le +AM
driver modules; Re/uired (or using +AM (unctions;
+FampleC
php<%sesam%oml $.&P&O.].&E&,"F&NO.2<2
phpR_sesam_con
96E96le
Name o( +AM application con(iguration (ile; Re/uired (or using
+AM (unctions;
+FampleC
php<%sesam%con#iE#ile $&E&,".&E&,".R?.S.,7
.t Eill usually contain a con(iguration li"e >see +AM re(erence
manual?C
R.S>Z
.,">]
.?*PE
phpR_sesam_mes
saEecataloE
Name o( +AM message catalog (ile; .n most casesA this directive
is not neccessary; Only i( the +AM message (ile is not installed
in the systemHs B0333 message (ile ta#leA it can #e set Eith this
directive;
+FampleC
php<%sesam%messaEecataloE $.&P&"E&.&E&,"F&NO.2<2
.n addition to the con(iguration o( the P&PD+AM inter(aceA you have to con(igure the
+AM2Data#ase server itsel( on your main(rame as usual; ,hat meansC
starting the +AM data#ase handler >DB&?A and
connecting the data#ases Eith the +AM data#ase handler
,o get a connection #etEeen a P&P script and the data#ase handlerA the CN3 and N,M
parameters o( the selected +AM con(iguration (ile must match the id o( the started
data#ase handler;
.n case o( distri#uted data#ases you have to start a +AMDOL2D5N agent Eith the
distri#ution ta#le including the host and data#ase names;
,he communication #etEeen P&P >running in the PO.J su#system? and the data#ase
handler >running outside the PO.J su#system? is realized #y a special driver module
called OL5. and +AM connection modules using common memory; Because o(
the common memory accessA and #ecause P&P is a static part o( the Ee# serverA
data#ase accesses are very (astA as they do not re/uire remote accesses via ODB5A !DB5
or @,M;
Only a small stu# loader >+MOD? is lin"ed Eith P&PA and the +AM connection
modules are pulled in (rom +AMHs OML PLAM li#rary; .n the con(igurationA you
must tell P&P the name o( this PLAM li#raryA and the (ile lin" to use (or the +AM
con(iguration (ile >As o( +AM $7;3A OL5. is availa#le in the +AM ,ool
Li#raryA Ehich is part o( the standard distri#ution?;
Because the OL command /uoting (or single /uotes uses duplicated single /uotes >as
opposed to a single /uote preceded #y a #ac"slashA used in some other data#ases?A it is
advisa#le to set the P&P con(iguration directives phpR_maE6c_@uotes_Epc and
phpR_maE6c_@uotes_s?1ase to On (or all P&P scripts using the +AM inter(ace;
Muntime considerations- Because o( limitations o( the B0333 process modelA the
driver can #e loaded only a(ter the Apache server has (or"ed o(( its server child
processes; ,his Eill slightly sloE doEn the initial +AM re/uest o( each childA #ut
su#se/uent accesses Eill respond at (ull speed;
Lhen eFplicitly de(ining a Message 5atalog (or +AMA that catalog Eill #e loaded
each time the driver is loaded >i;e;A at the initial +AM re/uest?; ,he B0333
operating system prints a message a(ter success(ul load o( the message catalogA Ehich
Eill #e sent to ApacheHs errorZlog (ile; B0333 currently does not alloE suppression o(
this messageA it Eill sloEly (ill up the log;
Ma"e sure that the +AM OML PLAM li#rary and +AM con(iguration (ile are
reada#le #y the user id running the Ee# server; OtherEiseA the server Eill #e una#le to
load the driverA and Eill not alloE to call any +AM (unctions; AlsoA access to the
data#ase must #e granted to the user id under Ehich the Apache server is running;
OtherEiseA connections to the +AM data#ase handler Eill (ail;
Cursor Types- ,he result cursors Ehich are allocated (or OL =select type= /ueries can
#e either =se/uential= or =scrolla#le=; Because o( the larger memory overhead needed #y
=scrolla#le= cursorsA the de(ault is =se/uential=;
Lhen using =scrolla#le= cursorsA the cursor can #e (reely positioned on the result set;
For each =scrolla#le= /ueryA there are glo#al de(ault values (or the scrolling type
>initialized toC SES,M_SEE2_NEFT? and the scrolling o((set Ehich can either #e set
once #y sesam>seeB>ro3./ or each time Ehen (etching a roE using sesam>fetch>ro3
./; Lhen (etching a roE using a =scrolla#le= cursorA the (olloEing post2processing is
done (or the glo#al de(ault values (or the scrolling type and scrolling o((setC
Tabla *. ,crolled Cursor Post(Processing
,croll Type Action
SES,M_SEE2_NEFT none
SES,M_SEE2_+R0O
R
none
SES,M_SEE2_30RS
T
set scroll type to SES,M_SEE2_NEFT
SES,M_SEE2_4,ST set scroll type to SES,M_SEE2_+R0OR
SES,M_SEE2_,ASO
4UTE
Auto2.ncrement internal o((set value
SES,M_SEE2_RE4,
T0(E
none; >maintain glo#al de(ault o99set valueA Ehich alloEs (orA
e;g;A (etching each 13th roE #ac"Eards?
Porting note- Because in the P&P Eorld it is natural to start indeFes at zero >rather than
1?A some adaptions have #een made to the +AM inter(aceC Ehenever an indeFed array
is starting Eith indeF 1 in the native +AM inter(aceA the P&P inter(ace uses indeF 3
as a starting point; +;g;A Ehen retrieving columns Eith sesam>fetch>ro3./A the (irst
column has the indeF 3A and the su#se/uent columns have indeFes up to >#ut not
including? the column count >YarrayP=count=Q?; Lhen porting +AM applications (rom
other high level languages to P&PA #e aEare o( this changed inter(ace; Lhere
appropriateA the description o( the respective php sesam (unctions include a note that the
indeF is zero #ased;
,ecurity concerns- Lhen alloEing access to the +AM data#asesA the Ee# server
user should only have as little privileges as possi#le; For most data#asesA only read
access privilege should #e granted; Depending on your usage scenarioA add more access
rights as you see (it; Never alloE (ull control to any data#ase (or any user (rom the Hneta
Restrict access to php scripts Ehich must administer the data#ase #y using passEord
control andDor L security;
Migration from other ,$: databases- No tEo OL dialects are ever 133b
compati#le; Lhen porting OL applications (rom other data#ase inter(aces to +AMA
some adaption may #e re/uired; ,he (olloEing typical di((erences should #e notedC
$endor speci(ic data types
ome vendor speci(ic data types may have to #e replaced #y standard OL data
types >e;g;A TEFT could #e replaced #y (,RC!,RLma8. s6DeM?;
SeyEords as OL identi(iers
.n +AM >as in standard OL?A such identi(iers must #e enclosed in dou#le
/uotes >or renamed?;
Display length in data types
+AM data types have a precisionA not a display length; .nstead o( 6ntL;M
>intended useC integers up to H9999H?A +AM re/uires simply 6nt (or an implied
size o( 71 #its; AlsoA the only datetime data types availa#le in +AM areC
D,TEA T0MELRM and T0MEST,M+LRM;
OL types Eith vendor2speci(ic uns6Ene#A Dero96llA or auto_6ncrement attri#utes
Uns6Ene# and Dero96ll are not supported; ,uto_6ncrement is automatic >use
*0NSERT ... (,4UESL/C ...M* instead o( *... (,4UESL0C ...M* to ta"e advantage o(
+AM2implied auto2increment;
int ... KE;A):T UDDDDU
Numeric varia#les must not #e initialized Eith string constants; @se KE;A):T
D instead; ,o initialize varia#les o( the datetime OL data typesA the initialization
string must #e pre(iFed Eith the respective type "eyEordA as inC CRE,TE
T,A4E e8mpl L 8t6me t6mestampLRM DE3,U4T T0MEST,M+ <1O70=01=01
00:00:00.000< NOT NULL MJ
Vcount H ++++>num>ro3s./Z
ome data#ases promise to guessDestimate the num#er o( the roEs in a /uery
resultA even though the returned value is grossly incorrect; +AM does not
"noE the num#er o( roEs in a /uery result #e(ore actually (etching them; .( you
R+ALL% need the countA try ,E:ECT CJ)NT..../ 2HEME ...A it Eill tell you
the num#er o( hits; A second /uery Eill >hope(ully? return the results;
KMJP TA1:E thenameZ
.n +AMA in the KMJP TA1:E commandA the ta#le name must #e either
(olloEed #y the "eyEord RESTR0CT or C,SC,DE; Lhen speci(ying
RESTR0CTA an error is returned i( there are dependent o#'ects >e;g;A $.+Ls?A
Ehile Eith C,SC,DEA dependent o#'ects Eill #e deleted along Eith the
speci(ied ta#le;
Notes on the use of 5arious ,$: types- +AM does not currently support the BLOB
type; A (uture version o( +AM Eill have support (or BLOB;
At the P&P inter(aceA the (olloEing type conversions are automatically applied Ehen
retrieving OL (ieldsC
Tabla 7. ,$: to PHP Type Con5ersions
,$: Type PHP Type
MALL.N,A .N,+G+R =integer=
N@M+R.5A D+5.MALA FLOA,A R+ALA
DO@BL+
=dou#le=
DA,+A ,.M+A ,.M+,AMP =string=
$AR5&ARA 5&ARA5,+R =string=
Lhen retrieving a complete roEA the result is returned as an array; +mpty (ields are not
(illed inA so you Eill have to chec" (or the eFistence o( the individual (ields yoursel( >use
isset./ or empty./ to test (or empty (ields?; ,hat alloEs more user control over the
appearance o( empty (ields >than in the case o( an empty string as the representation o(
an empty (ield?;
,upport of ,E,AMUs 0multiple fields0 feature- ,he special =multiple (ields= (eature
o( +AM alloEs a column to consist o( an array o( (ields; uch a =multiple (ield=
column can #e created li"e thisC
E'emplo !. Creating a 0multiple field0 column
R'E,*E *,ZOE multi%#ield%test 3
pIey RH,'3C29 '4",'P ]EP,
multi3<9 RH,'36C9
9
and can #e (illed in usingC
E'emplo *. ;illing a 0multiple field0 column
4.&E'* 4.*? multi%#ield%test 3pIey, multi3C..<9 9
(,O+E& 3M&econdM, <M#irst%=alM, Msecond%=alM>9
Note that >li"e in this case? leading empty su#2(ields are ignoredA and the (illed2in values
are collapsedA so that in the a#ove eFample the result Eill appear as multi>1;;0? instead
o( multi>0;;7?;
Lhen retrieving a result roEA =multiple columns= are accessed li"e =inlined= additional
columns; .n the eFample a#oveA =p"ey= Eill have the indeF 3A and the three =multi>1;;7?=
columns Eill #e accessi#le as indices 1 through 7;
For speci(ic +AM detailsA please re(er to the +AMDOL2erver documentation >english? or the
+AMDOL2erver documentation >german?A #oth availa#le onlineA or use the respective manuals;
Tabla de contenidos
sesamZa((ectedZroEs 22 Get num#er o( roEs a((ected #y an immediate /uery
sesamZcommit 22 5ommit pending updates to the +AM data#ase
sesamZconnect 22 Open +AM data#ase connection
sesamZdiagnostic 22 Return status in(ormation (or last +AM call
sesamZdisconnect 22 Detach (rom +AM connection
sesamZerrormsg 22 Returns error message o( last +AM call
sesamZeFecimm 22 +Fecute an =immediate= OL2statement
sesamZ(etchZarray 22 Fetch one roE as an associative array
sesamZ(etchZresult 22 Return all or part o( a /uery result
sesamZ(etchZroE 22 Fetch one roE as an array
sesamZ(ieldZarray 22 Return meta in(ormation a#out individual columns in a result
sesamZ(ieldZname 22 Return one column name o( the result set
sesamZ(reeZresult 22 Releases resources (or the /uery
sesamZnumZ(ields 22 Return the num#er o( (ieldsDcolumns in a result set
sesamZ/uery 22 Per(orm a +AM OL /uery and prepare the result
sesamZroll#ac" 22 Discard any pending updates to the +AM data#ase
sesamZsee"ZroE 22 et scrolla#le cursor mode (or su#se/uent (etches
sesamZsettransaction 22 et +AM transaction parameters
sesam>affected>ro3s
>P&P 7 5$ only?
sesamZa((ectedZroEs 22 Get num#er o( roEs a((ected #y an immediate /uery
Kescription
int sesam>affected>ro3s > string resultZid ?
result_6# is a valid result id returned #y sesam>?uery./;
Returns the num#er o( roEs a((ected #y a /uery associated Eith result_6#;
,he sesam>affected>ro3s./ (unction can only return use(ul values Ehen used in com#ination Eith
=immediate= OL statements >updating operations li"e 0NSERTA U+D,TE and DE4ETE? #ecause
+AM does not deliver any =a((ected roEs= in(ormation (or =select type= /ueries; ,he num#er
returned is the num#er o( a((ected roEs;
ee alsoC sesam>?uery./ and sesam>e+ecimm./
$result > sesam%execimm 3"LEOE*E S'?" H?.E 7HE'E O,&*.,"E > M".strtoupper 3$name9."M"9;
i# 3!$result9 :
... error ...
;
print sesam%a##ected%ro8s 3$result9.
" entries 8ith last name ".$name." deleted.Vn"
sesam>commit
>P&P 7 5$ only?
sesamZcommit 22 5ommit pending updates to the +AM data#ase
Kescription
#ool sesam>commit > void ?
ReturnsC TRUE on successA FALSE on errors
sesam>commit./ commits any pending updates to the data#ase;
Note that there is no =auto2commit= (eature as in other data#asesA as it could lead to accidental data
loss; @ncommitted data at the end o( the current script >or Ehen calling sesam>disconnect./? Eill
#e discarded #y an implied sesam>rollbacB./ call;
ee alsoC sesam>rollbacB./;
E'emplo !. Committing an update to the ,E,AM database
<?php
i# 3sesam%connect 3"mycataloE", "myschema", "otto"99 :
i# 3!sesam%execimm 3"4.&E'* 4.*? mytable (,O+E& 3W, M&mall *estM, <2, J, 65>9"99
die3"insert #ailed"9;
i# 3!sesam%commit399
die3"commit #ailed"9;
;
?>
sesam>connect
>P&P 7 5$ only?
sesamZconnect 22 Open +AM data#ase connection
Kescription
#ool sesam>connect > string catalogA string schemaA string user ?
Returns TRUE i( a connection to the +AM data#ase Eas madeA or FALSE on error;
sesam>connect./ esta#lishes a connection to an +AM data#ase handler tas"; ,he connection is
alEays =persistant= in the sense that only the very (irst invocation Eill actually load the driver (rom
the con(igured +AM OML PLAM li#rary; u#se/uent calls Eill reuse the driver and Eill
immediately use the given catalogA schemaA and user;
Lhen creating a data#aseA the *cataloE* name is speci(ied in the +AM con(iguration directive AA
AKK(,$:(KATA1A,E(CATA:JF(:I,T ENTM@(! H LCATA:JF.CATA:JF(NAME H
catalognameE.../
,he *schema* re(erences the desired data#ase schema >see +AM hand#oo"?;
,he *user* argument re(erences one o( the users Ehich are alloEed to access this *cataloE* D
*schema* com#ination; Note that *user* is completely independent (rom #oth the systemHs user idHs
and (rom &,,P userDpassEord protection; .t appears in the +AM con(iguration only;
ee also sesam>disconnect./;
E'emplo !. Connect to a ,E,AM database
<?php
i# 3!sesam%connect 3"mycataloE", "myschema", "otto"9
die3"+nable to connect to &E&,"";
?>
sesam>diagnostic
>P&P 7 5$ only?
sesamZdiagnostic 22 Return status in(ormation (or last +AM call
Kescription
array sesam>diagnostic > void ?
Returns an associative array o( status and return codes (or the last OL /ueryDstatementDcommand;
+lements o( the array areC
Tabla !. ,tatus information returned by sesam>diagnostic./
Element Contents
Yarray
P=s/lstate=Q
4 digit OL return code >see the +AM manual (or the description o( the
possi#le values o( OL,A,+?
Yarray
P=roEcount=Q
num#er o( a((ected roEs in last updateDinsertDdelete >set a(ter =immediate=
statements only?
YarrayP=errmsg=Q =human reada#le= error message string >set a(ter errors only?
YarrayP=errcol=Q
error column num#er o( previous error >32#asedX or 21 i( unde(ined; et a(ter
errors only?
YarrayP=errlin=Q
error line num#er o( previous error >32#asedX or 21 i( unde(ined; et a(ter errors
only?
.n the (olloEing eFampleA a syntaF error >+ +L80A+ .LL+GAL 5&ARA5,+R? is displayed #y
including the o((ending OL statement and pointing to the error locationC
E'emplo !. Kisplaying ,E,AM error messages 3ith error position
<?php
// Sunction 8hich prints a #ormatted error messaEe,
// displayinE a pointer to the syntax error in the
// &NO statement
#unction rint'eturncode 3$exec%str9 :
$err > &esam%LiaEnostic39;
$colspan>1; // 1 cols #or@ sQlstate, errlin, errcol, ro8count
i# 3$err)"errlin"/ >> F69
FF$colspan;
i# 3$err)"errcol"/ >> F69
FF$colspan;
i# 3$err)"ro8count"/ >> 29
FF$colspan;
echo "<*,ZOE Z?'LE'>Vn";
echo "<*'><*H R?O&,.>".$colspan."><S?.* R?O?'>red>E''?'@</S?.*> ".
htmlspecialchars3$err)"errmsE"/9."</*H></*'>Vn";
i# 3$err)"errcol"/ >> 29 :
echo "<*'><*L R?O&,.>".$colspan."><'E>Vn";
$errstmt > $exec%str."Vn";
#or 3$lin>2; $errstmt !> ""; [[$lin9 :
i# 3$lin !> $err)"errlin"/9 : // $lin is less or Ereater than errlin
i# 3!3$i > strchr 3$errstmt, "Vn"999
$i > "";
$line > substr 3$errstmt, 2, strlen3$errstmt9Fstrlen3$i9[69;
$errstmt > substr3$i, 69;
i# 3$line !> "Vn"9
print htmlspecialchars 3$line9;
; else :
i# 3! 3$i > strchr 3$errstmt, "Vn"999
$i > "";
$line > substr 3$errstmt, 2, strlen 3$errstmt9Fstrlen3$i9[69;
$errstmt > substr3$i, 69;
#or 3$col>2; $col < $err)"errcol"/; [[$col9
echo 3substr3$line, $col, 69 >> "Vt"9 ? "Vt" @ ".";
echo "<S?.* R?O?'>'EL><ZO4.]>VV</ZO4.]></S?.*>Vn";
print "<S?.* R?O?'>V"UJJ2222V">".htmlspecialchars3$line9."</S?.*>";
#or 3$col>2; $col < $err)"errcol"/; [[$col9
echo 3substr 3$line, $col, 69 >> "Vt"9 ? "Vt" @ ".";
echo "<S?.* R?O?'>'EL><ZO4.]>/</ZO4.]></S?.*>Vn";
;
;
echo "</'E></*L></*'>Vn";
;
echo "<*'>Vn";
echo " <*L>sQlstate>" . $err)"sQlstate"/ . "</*L>Vn";
i# 3$err)"errlin"/ !> F69
echo " <*L>errlin>" . $err)"errlin"/ . "</*L>Vn";
i# 3$err)"errcol"/ !> F69
echo " <*L>errcol>" . $err)"errcol"/ . "</*L>Vn";
i# 3$err)"ro8count"/ !> 29
echo " <*L>ro8count>" . $err)"ro8count"/ . "</*L>Vn";
echo "</*'>Vn";
echo "</*,ZOE>Vn";
;
i# 3!sesam%connect 3"mycataloE", "phoneno", "otto"99
die 3"cannot connect"9;
$stmt > "&EOER* W S'?" phoneVn".
" 7HE'E^ O,&*.,"E>M]',E"E'MVn".
" ?'LE' ZP S4'&*.,"E";
i# 3!3$result > sesam%Query 3$stmt999
rint'eturncode 3$stmt9;
?>
ee alsoC sesam>errormsg./ (or simple access to the error string only
sesam>disconnect
>P&P 7 5$ only?
sesamZdisconnect 22 Detach (rom +AM connection
Kescription
#ool sesam>disconnect > void ?
ReturnsC alEays TRUE;
sesam>disconnect./ closes the logical lin" to a +AM data#ase >Eithout actually disconnecting
and unloading the driver?;
Note that this isnHt usually necessaryA as the open connection is automatically closed at the end o( the
scriptHs eFecution; @ncommitted data Eill #e discardedA #ecause an implicit sesam>rollbacB./ is
eFecuted;
sesam>disconnect./ Eill not close the persistent lin"A it Eill only invalidate the currently de(ined
*cataloE*A *schema* and *user* tripleA so that any sesam (unction called a(ter sesam>disconnect./
Eill (ail;
ee alsoC sesam>connect./;
E'emplo !. Closing a ,E,AM connection
i# 3sesam%connect 3"mycataloE", "myschema", "otto"99 :
... some Queries and stu## ...
sesam%disconnect39;
;
sesam>errormsg
>P&P 7 5$ only?
sesamZerrormsg 22 Returns error message o( last +AM call
Kescription
string sesam>errormsg > void ?
Returns the +AM error message associated Eith the most recent +AM error;
i# 3!sesam%execimm 3$stmt99
print# 3"\s<br>Vn", sesam%errormsE399;
ee alsoC sesam>diagnostic./ (or the (ull set o( +AM OL status in(ormation
sesam>e+ecimm
>P&P 7 5$ only?
sesamZeFecimm 22 +Fecute an =immediate= OL2statement
Kescription
string sesam>e+ecimm > string /uery ?
ReturnsC A +AM =result identi(ier= on successA or FALSE on error;
sesam>e+ecimm./ eFecutes an =immediate= statement >i;e;A a statement li"e @PDA,+A .N+R, or
D+L+,+ Ehich returns no resultA and has no .NP@, or O@,P@, varia#les?; =select type= /ueries
can not #e used Eith sesam>e+ecimm./; ets the a99ecte#_ro7s value (or retrieval #y the
sesam>affected>ro3s./ (unction;
Note that sesam>?uery./ can handle #oth =immediate= and =select2type= /ueries; @se
sesam>e+ecimm./ only i( you "noE #e(orehand Ehat type o( statement Eill #e eFecuted; An
attempt to use +L+5, type /ueries Eith sesam>e+ecimm./ Eill return 'err)*s@lstate*. ::
*;2SAI*;
,he returned =result identi(ier= can not #e used (or retrieving anything #ut the
sesam>affected>ro3s./X it is only returned (or symmetry Eith the sesam>?uery./ (unction;
$stmt > "4.&E'* 4.*? mytable (,O+E& 3MoneM, Mt8oM9";
$result > sesam%execimm 3$stmt9;
$err > sesam%diaEnostic39;
print 3"sQlstate > ".$err)"sQlstate"/."Vn".
",##ected ro8s > ".$err)"ro8count"/." >> ".
sesam%a##ected%ro8s3$result9."Vn"9;
ee alsoC sesam>?uery./ and sesam>affected>ro3s./;
sesam>fetch>array
>P&P 7 5$ only?
sesamZ(etchZarray 22 Fetch one roE as an associative array
Kescription
array sesam>fetch>array > string resultZid PA int Ehence PA int o((setQQ ?
Returns an array that corresponds to the (etched roEA or FALSE i( there are no more roEs;
sesam>fetch>array./ is an alternative version o( sesam>fetch>ro3./; .nstead o( storing the data in
the numeric indices o( the result arrayA it stores the data in associative indicesA using the (ield names
as "eys;
result_6# is a valid result id returned #y sesam>?uery./ >select type /ueries onlya?;
For the valid values o( the optional 7henceand o99set parametersA see the sesam>fetch>ro3./
(unction (or details;
sesam>fetch>array./ (etches one roE o( data (rom the result associated Eith the speci(ied result
identi(ier; ,he roE is returned as an associative array; +ach result column is stored Eith an
associative indeF e/ual to its column >a"a; (ield? name; ,he column names are converted to loEer
case;
5olumns Eithout a (ield name >e;g;A results o( arithmetic operations? and empty (ields are not stored
in the array; AlsoA i( tEo or more columns o( the result have the same column namesA the later
column Eill ta"e precedence; .n this situationA either call sesam>fetch>ro3./ or ma"e an alias (or
the column;
&EOER* *ZO6.R?O ,& S??, *ZOC.R?O ,& Z,' S'?" *ZO6, *ZOC
A special handling alloEs (etching =multiple (ield= columns >Ehich Eould otherEise all have the
same column names?; For each column o( a =multiple (ield=A the indeF name is constructed #y
appending the string =>n?= Ehere n is the su#2indeF o( the multiple (ield columnA ranging (rom 1 to
its declared repetition (actor; ,he indices are NO, zero #asedA in order to match the nomenclature
used in the respective /uery syntaF; For a column declared asC
R'E,*E *,ZOE ... 3 ... "+O*43<9 4.* 9
the associative indices used (or the individual =multiple (ield= columns Eould #e *mult6L1M*A *mult6
L2M*A and *mult6LRM* respectively;
u#se/uent calls to sesam>fetch>array./ Eould return the neFt >or priorA or nHth neFtDpriorA
depending on the scroll attri#utes? roE in the result setA or FALSE i( there are no more roEs;
E'emplo !. ,E,AM fetch array
<?php
$result > sesam%Query 3"&EOER* W S'?" phoneVn".
" 7HE'E O,&*.,"E>M".strtoupper3$name9."MVn".
" ?'LE' ZP S4'&*.,"E", 69;
i# 3!$result9 :
... error ...
;
// print the table@
print "<*,ZOE Z?'LE'>Vn";
8hile 33$ro8 > sesam%#etch%array 3$result99 && count 3$ro89 > 29 :
print " <*'>Vn";
print " <*L>".htmlspecialchars 3$ro8)"#irstname"/9."</*L>Vn";
print " <*L>".htmlspecialchars 3$ro8)"lastname"/9."</*L>Vn";
print " <*L>".htmlspecialchars 3$ro8)"phoneno"/9."</*L>Vn";
print " </*'>Vn";
;
print "</*,ZOE>Vn";
sesam%#ree%result 3$result9;
?>
ee alsoC sesam>fetch>ro3./ Ehich returns an indeFed array;
sesam>fetch>result
>P&P 7 5$ only?
sesamZ(etchZresult 22 Return all or part o( a /uery result
Kescription
miFed sesam>fetch>result > string resultZid PA int maFZroEsQ ?
Returns a miFed array Eith the /uery result entriesA optionally limited to a maFimum o( ma8_ro7s
roEs; Note that #oth roE and column indeFes are zero2#ased;
Tabla !. Mi+ed result set returned by sesam>fetch>result./
Array
Element
Contents
int Yarr
P=count=Q
num#er o( columns in result set >or zero i( this Eas an =immediate= /uery?
int Yarr
P=roEs=Q
num#er o( roEs in result set >#etEeen zero and ma8_ro7s?
#ool Yarr
P=truncated=
Q
TRUE i( the num#er o( roEs Eas at least ma8_ro7sA FALSE otherEise; Note that
even Ehen this is TRUEA the neFt sesam>fetch>result./ call may return zero roEs
#ecause there are no more result entries;
miFed Yarr
PcolQProEQ
result data (or all the (ields at roE>ro7? and column>col?A >Ehere the integer indeF
ro7 is #etEeen 3 and 'arr)*ro7s*.=1A and col is #etEeen 3 and 'arr)*count*.=1?;
Fields may #e emptyA so you must chec" (or the eFistence o( a (ield #y using the php
isset./ (unction; ,he type o( the returned (ields depend on the respective OL type
declared (or its column >see +AM overvieE (or the conversions applied?; +AM
=multiple (ields= are =inlined= and treated li"e a se/uence o( columns;
Note that the amount o( memory used up #y a large /uery may #e gigantic; @se the ma8_ro7s
parameter to limit the maFimum num#er o( roEs returnedA unless you are a#solutely sure that your
result Eill not use up all availa#le memory;
ee alsoC sesam>fetch>ro3./A and sesam>field>array./ to chec" (or =multiple (ields=; ee the
description o( the sesam>?uery./ (unction (or a complete eFample using sesam>fetch>result./;
sesam>fetch>ro3
>P&P 7 5$ only?
sesamZ(etchZroE 22 Fetch one roE as an array
Kescription
array sesam>fetch>ro3 > string resultZid PA int Ehence PA int o((setQQ ?
Returns an array that corresponds to the (etched roEA or FALSE i( there are no more roEs;
,he num#er o( columns in the result set is returned in an associative array element YarrayP=count=Q;
Because some o( the result columns may #e emptyA the count./ (unction can not #e used on the
result roE returned #y sesam>fetch>ro3./;
result_6# is a valid result id returned #y sesam>?uery./ >select type /ueries onlya?;
7hence is an optional parameter (or a (etch operation on =scrolla#le= cursorsA Ehich can #e set to the
(olloEing prede(ined constantsC
Tabla !. Calid 5alues for .whence. parameter
Calue Constant Meaning
3
SES,M_SEE2_N
EFT
read se/uentially >a(ter (etchA the internal de(ault is set to
SES,M_SEE2_NEFT?
1
SES,M_SEE2_+
R0OR
read se/uentially #ac"Eards >a(ter (etchA the internal de(ault is set to
SES,M_SEE2_+R0OR?
0
SES,M_SEE2_30
RST
reEind to (irst roE >a(ter (etchA the de(ault is set to
SES,M_SEE2_NEFT?
7
SES,M_SEE2_4
,ST
see" to last roE >a(ter (etchA the de(ault is set to
SES,M_SEE2_+R0OR?
8
SES,M_SEE2_,
ASO4UTE
see" to a#solute roE num#er given as o99set >Iero2#ased; A(ter (etchA
the internal de(ault is set to SES,M_SEE2_,ASO4UTEA and the
internal o((set value is auto2incremented?
4
SES,M_SEE2_R
E4,T0(E
see" relative to current scroll positionA Ehere o99set can #e a positive
or negative o((set value;
,his parameter is only valid (or =scrolla#le= cursors;
Lhen using =scrolla#le= cursorsA the cursor can #e (reely positioned on the result set; .( the 7hence
parameter is omittedA the glo#al de(ault values (or the scrolling type >initialized toC
SES,M_SEE2_NEFTA and setta#le #y sesam>seeB>ro3./? are used; .( 7hence is suppliedA its value
replaces the glo#al de(ault;
o99set is an optional parameter Ehich is only evaluated >and re/uired? i( 7hence is either
SES,M_SEE2_RE4,T0(E or SES,M_SEE2_,ASO4UTE; ,his parameter is only valid (or
=scrolla#le= cursors;
sesam>fetch>ro3./ (etches one roE o( data (rom the result associated Eith the speci(ied result
identi(ier; ,he roE is returned as an array >indeFed #y values #etEeen 0 and 'arra?)*count*.=1?;
Fields may #e emptyA so you must chec" (or the eFistence o( a (ield #y using the php isset./
(unction; ,he type o( the returned (ields depend on the respective OL type declared (or its column
>see +AM overvieE (or the conversions applied?; +AM =multiple (ields= are =inlined= and
treated li"e a se/uence o( columns;
u#se/uent calls to sesam>fetch>ro3./ Eould return the neFt >or priorA or nHth neFtDpriorA
depending on the scroll attri#utes? roE in the result setA or FALSE i( there are no more roEs;
E'emplo !. ,E,AM fetch ro3s
<?php
$result > sesam%Query 3"&EOER* W S'?" phoneVn".
" 7HE'E O,&*.,"E>M".strtoupper3$name9."MVn".
" ?'LE' ZP S4'&*.,"E", 69;
i# 3!$result9 :
... error ...
;
// print the table in bacI8ard order
print "<*,ZOE Z?'LE'>Vn";
$ro8 > sesam%#etch%ro8 3$result, &E&,"%&EE]%O,&*9;
8hile 3is%array 3$ro899 :
print " <*'>Vn";
#or 3$col > 2; $col < $ro8)"count"/; [[$col9 :
print " <*L>".htmlspecialchars 3$ro8)$col/9."</*L>Vn";
;
print " </*'>Vn";
// use implied &E&,"%&EE]%'4?'
$ro8 > sesam%#etch%ro8 3$result9;
;
print "</*,ZOE>Vn";
sesam%#ree%result 3$result9;
?>
ee alsoC sesam>fetch>array./ Ehich returns an associative arrayA and sesam>fetch>result./ Ehich
returns many roEs per invocation;
sesam>field>array
>P&P 7 5$ only?
sesamZ(ieldZarray 22 Return meta in(ormation a#out individual columns in a result
Kescription
array sesam>field>array > string resultZid ?
result_6# is a valid result id returned #y sesam>?uery./;
Returns a miFed associativeDindeFed array Eith meta in(ormation >column nameA typeA precisionA ;;;?
a#out individual columns o( the result a(ter the /uery associated Eith result_6#;
Tabla !. Mi+ed result set returned by sesam>field>array./
Array
Element
Contents
int Yarr
P=count=Q
,otal num#er o( columns in result set >or zero i( this Eas an =immediate= /uery?;
+AM =multiple (ields= are =inlined= and treated li"e the respective num#er o(
columns;
string Yarr
PcolQ
P=name=Q
column name (or column>col?A Ehere col is #etEeen 3 and 'arr)*count*.=1; ,he
returned value can #e the empty string >(or dynamically computed columns?;
+AM =multiple (ields= are =inlined= and treated li"e the respective num#er o(
columnsA each Eith the same column name;
Array
Element
Contents
string Yarr
PcolQ
P=count=Q
,he =count= attri#ute descri#es the repetition (actor Ehen the column has #een
declared as a =multiple (ield=; @suallyA the =count= attri#ute is 1; ,he (irst column
o( a =multiple (ield= column hoEever contains the num#er o( repetitions >the
second and (olloEing column o( the =multiple (ield= contain a =count= attri#ute o(
1?; ,his can #e used to detect =multiple (ields= in the result set; ee the eFample
shoEn in the sesam>?uery./ description (or a sample use o( the =count= attri#ute;
string Yarr
PcolQP=type=Q
php varia#le type o( the data (or column>col?A Ehere col is #etEeen 3 and 'arr
)*count*.=1; ,he returned value can #e one o(
=integer=
=dou#le=
=string=
depending on the OL type o( the result; +AM =multiple (ields= are =inlined=
and treated li"e the respective num#er o( columnsA each Eith the same php type;
string Yarr
PcolQ
P=s/ltype=Q
OL varia#le type o( the column data (or column>col?A Ehere col is #etEeen 3 and
'arr)*count*.=1; ,he returned value can #e one o(
=5&ARA5,+R=
=$AR5&AR=
=N@M+R.5=
=D+5.MAL=
=.N,+G+R=
=MALL.N,=
=FLOA,=
=R+AL=
=DO@BL+=
=DA,+=
=,.M+=
=,.M+,AMP=
descri#ing the OL type o( the result; +AM =multiple (ields= are =inlined= and
treated li"e the respective num#er o( columnsA each Eith the same OL type;
Array
Element
Contents
string Yarr
PcolQ
P=length=Q
,he OL =length= attri#ute o( the OL varia#le in column>col?A Ehere col is
#etEeen 3 and 'arr)*count*.=1; ,he =length= attri#ute is used Eith
=5&ARA5,+R= and =$AR5&AR= OL types to speci(y the >maFimum? length o(
the string varia#le; +AM =multiple (ields= are =inlined= and treated li"e the
respective num#er o( columnsA each Eith the same length attri#ute;
string Yarr
PcolQ
P=precision=Q
,he =precision= attri#ute o( the OL varia#le in column>col?A Ehere col is #etEeen
3 and 'arr)*count*.=1; ,he =precision= attri#ute is used Eith numeric and time data
types; +AM =multiple (ields= are =inlined= and treated li"e the respective
num#er o( columnsA each Eith the same precision attri#ute;
string Yarr
PcolQP=scale=Q
,he =scale= attri#ute o( the OL varia#le in column>col?A Ehere col is #etEeen 3
and 'arr)*count*.=1; ,he =scale= attri#ute is used Eith numeric data types; +AM
=multiple (ields= are =inlined= and treated li"e the respective num#er o( columnsA
each Eith the same scale attri#ute;
ee the sesam>?uery./ (unction (or an eFample o( the sesam>field>array./ use;
sesam>field>name
>P&P 7 5$ only?
sesamZ(ieldZname 22 Return one column name o( the result set
Kescription
int sesam>field>name > string resultZidA int indeF ?
Returns the name o( a (ield >i;e;A the column name? in the result setA or FALSE on error;
For =immediate= /ueriesA or (or dynamic columnsA an empty string is returned;
Nota- ,he column indeF is zero2#asedA not one2#ased as in +AM;
ee alsoC sesam>field>array./; .t provides an easier inter(ace to access the column names and
typesA and alloEs (or detection o( =multiple (ields=;
sesam>free>result
>P&P 7 5$ only?
sesamZ(reeZresult 22 Releases resources (or the /uery
Kescription
int sesam>free>result > string resultZid ?
Releases resources (or the /uery associated Eith result_6#; Returns FALSE on error;
sesam>num>fields
>P&P 7 5$ only?
sesamZnumZ(ields 22 Return the num#er o( (ieldsDcolumns in a result set
Kescription
int sesam>num>fields > string resultZid ?
A(ter calling sesam>?uery./ Eith a =select type= /ueryA this (unction gives you the num#er o(
columns in the result; Returns an integer descri#ing the total num#er o( columns >a"a; (ields? in the
current result_6# result set or FALSE on error;
For =immediate= statementsA the value zero is returned; ,he +AM =multiple (ield= columns count
as their respective dimensionA i;e;A a three2column =multiple (ield= counts as three columns;
ee alsoC sesam>?uery./ and sesam>field>array./ (or a Eay to distinguish #etEeen =multiple (ield=
columns and regular columns;
sesam>?uery
>P&P 7 5$ only?
sesamZ/uery 22 Per(orm a +AM OL /uery and prepare the result
Kescription
string sesam>?uery > string /uery PA #ool scrolla#leQ ?
ReturnsC A +AM =result identi(ier= on successA or FALSE on error;
A =resultZid= resource is used #y other (unctions to retrieve the /uery results;
sesam>?uery./ sends a /uery to the currently active data#ase on the server; .t can eFecute #oth
=immediate= OL statements and =select type= /ueries; .( an =immediate= statement is eFecutedA
then no cursor is allocatedA and any su#se/uent sesam>fetch>ro3./ or sesam>fetch>result./ call
Eill return an empty result >zero columnsA indicating end2o(2result?; For =select type= statementsA a
result descriptor and a >scrolla#le or se/uentialA depending on the optional #oolean scrolla1le
parameter? cursor Eill #e allocated; .( scrolla1le is omittedA the cursor Eill #e se/uential;
Lhen using =scrolla#le= cursorsA the cursor can #e (reely positioned on the result set; For each
=scrolla#le= /ueryA there are glo#al de(ault values (or the scrolling type >initialized toC
SES,M_SEE2_NEFT? and the scrolling o((set Ehich can either #e set once #y sesam>seeB>ro3./
or each time Ehen (etching a roE using sesam>fetch>ro3./;
For =immediate= statementsA the num#er o( a((ected roEs is saved (or retrieval #y the
sesam>affected>ro3s./ (unction;
ee alsoC sesam>fetch>ro3./ and sesam>fetch>result./;
E'emplo !. ,ho3 all ro3s of the 0phone0 table as a html table
<?php
i# 3!sesam%connect 3"phonedb", "demo", "otto"99
die 3"cannot connect"9;
$result > sesam%Query 3"select W #rom phone"9;
i# 3!$result9 :
$err > sesam%diaEnostic39;
die 3$err)"errmsE"/9;
;
echo "<*,ZOE Z?'LE'>Vn";
// ,dd title header 8ith column names abo=e the result@
i# 3$cols > sesam%#ield%array 3$result99 :
echo " <*'><*H R?O&,.>".$cols)"count"/.">'esult@</*H></*'>Vn";
echo " <*'>Vn";
#or 3$col > 2; $col < $cols)"count"/; [[$col9 :
$colattr > $cols)$col/;
/W &pan the table head o=er &E&,"Ms ""ultiple Sields"@ W/
i# 3$colattr)"count"/ > 69 :
echo " <*H R?O&,.>".$colattr)"count"/.">".$colattr)"name"/.
"36..".$colattr)"count"/."9</*H>Vn";
$col [> $colattr)"count"/ F 6;
; else
echo " <*H>" . $colattr)"name"/ . "</*H>Vn";
;
echo " </*'>Vn";
;
do :
// Setch the result in chunIs o# 622 ro8s max.
$oI > sesam%#etch%result 3$result, 6229;
#or 3$ro8>2; $ro8 < $oI)"ro8s"/; [[$ro89 :
echo " <*'>Vn";
#or 3$col > 2; $col < $oI)"cols"/; [[$col9 :
i# 3isset3$oI)$col/)$ro8/99
echo " <*L>" . $oI)$col/)$ro8/ . "</*L>Vn";
; else :
echo " <*L>FemptyF</*L>Vn";
;
;
echo " </*'>Vn";
;
;
8hile 3$oI)"truncated"/9 : // 8hile there may be more data
echo "</*,ZOE>Vn";
;
// #ree result id
sesam%#ree%result3$result9;
?>
sesam>rollbacB
>P&P 7 5$ only?
sesamZroll#ac" 22 Discard any pending updates to the +AM data#ase
Kescription
#ool sesam>rollbacB > void ?
ReturnsC TRUE on successA FALSE on errors
sesam>rollbacB./ discards any pending updates to the data#ase; Also a((ected are result cursors and
result descriptors;
At the end o( each scriptA and as part o( the sesam>disconnect./ (unctionA an implied
sesam>rollbacB./ is eFecutedA discarding any pending changes to the data#ase;
ee alsoC sesam>commit./;
E'emplo !. Kiscarding an update to the ,E,AM database
<?php
i# 3sesam%connect 3"mycataloE", "myschema", "otto"99 :
i# 3sesam%execimm 3"4.&E'* 4.*? mytable (,O+E& 3W, M&mall *estM, <2, J, 65>9"9
&& sesam%execimm 3"4.&E'* 4.*? othertable (,O+E& 3W, M,nother *estM, 69"99
sesam%commit39;
else
sesam%rollbacI39;
;
?>
sesam>seeB>ro3
>P&P 7 5$ only?
sesamZsee"ZroE 22 et scrolla#le cursor mode (or su#se/uent (etches
Kescription
#ool sesam>seeB>ro3 > string resultZidA int Ehence PA int o((setQ ?
result_6# is a valid result id >select type /ueries onlyA and only i( a =scrolla#le= cursor Eas re/uested
Ehen calling sesam>?uery./?;
7hence sets the glo#al de(ault value (or the scrolling typeA it speci(ies the scroll type to use in
su#se/uent (etch operations on =scrolla#le= cursorsA Ehich can #e set to the (olloEing prede(ined
constantsC
Tabla !. Calid 5alues for .whence. parameter
Calue Constant Meaning
3
SES,M_SEE2_NE
FT
read se/uentially
1
SES,M_SEE2_+R
0OR
read se/uentially #ac"Eards
0
SES,M_SEE2_30
RST
(etch (irst roE >a(ter (etchA the de(ault is set to SES,M_SEE2_NEFT?
7
SES,M_SEE2_4,
ST
(etch last roE >a(ter (etchA the de(ault is set to SES,M_SEE2_+R0OR?
8
SES,M_SEE2_,A
SO4UTE
(etch a#solute roE num#er given as o99set >Iero2#ased; A(ter (etchA
the de(ault is set to SES,M_SEE2_,ASO4UTEA and the o((set value
is auto2incremented?
4
SES,M_SEE2_RE
4,T0(E
(etch relative to current scroll positionA Ehere o99set can #e a positive
or negative o((set value >this also sets the de(ault =o((set= value (or
su#se/uent (etches?;
o99set is an optional parameter Ehich is only evaluated >and re/uired? i( 7hence is either
SES,M_SEE2_RE4,T0(E or SES,M_SEE2_,ASO4UTE;
sesam>settransaction
>P&P 7 5$ only?
sesamZsettransaction 22 et +AM transaction parameters
Kescription
#ool sesam>settransaction > int isolationZlevelA int readZonly ?
ReturnsC TRUE i( the values are validA and the settransaction./ operation Eas success(ulA FALSE
otherEise;
sesam>settransaction./ overrides the de(ault values (or the =isolation level= and =read2only=
transaction parameters >Ehich are set in the +AM con(iguration (ile?A in order to optimize
su#se/uent /ueries and guarantee data#ase consistency; ,he overridden values are used (or the neFt
transaction only;
sesam>settransaction./ can only #e called #e(ore starting a transactionA not a(ter the transaction has
#een started already;
,o simpli(y the use in php scriptsA the (olloEing constants have #een prede(ined in php >see
+AM hand#oo" (or detailed eFplanation o( the semantics?C
Tabla !. Calid 5alues for ."solation_!e%el. parameter
Calue Constant Meaning
1
SES,M_TF0SO4_RE,D_UNCOMM0TTE
D
Read
@ncommitted
0 SES,M_TF0SO4_RE,D_COMM0TTED Read 5ommitted
7 SES,M_TF0SO4_RE+E,T,A4E_RE,D Repeata#le Read
8 SES,M_TF0SO4_SER0,40^,A4E erializa#le
Tabla *. Calid 5alues for ./ead_Onl). parameter
Calue Constant Meaning
3
SES,M_TFRE,D_RE,DIR0T
E
ReadDLrit
e
1 SES,M_TFRE,D_RE,DON4B Read2Only
,he values set #y sesam>settransaction./ Eill override the de(ault setting speci(ied in the +AM
con(iguration (ile;
E'emplo !. ,etting ,E,AM transaction parameters
<?php
sesam%settransaction 3&E&,"%*X4&?O%'EE,*,ZOE%'E,L,
&E&,"%*X'E,L%'E,L?.OP9;
?>
CII. ;unciones para el mane'o de sesiones
+l apoyo /ue P&P proporciona para las sesiones consiste en una (orma de conservar ciertos datos a
lo largo de los su#siguientes accesosA lo cual le permite construir aplicaciones m*s personalizadas e
incrementar el atractivo de su sitio Ee#;
i ya est* (amiliarizado con el tratamiento de sesiones de P&PL.BA notar* /ue algunos conceptos
son similares al soporte de las sesiones de P&P;
A cada visitante /ue accede a su Ee# se le asigna un identi(icador BnicoA llamado =session id=
>identi(icador de sesi-n?; [ste se almacena en una coo"ie por parte del usuario o se propaga en la
@RL;
+l soporte de las sesiones le permite registrar un nBmero ar#itrario de varia#les /ue se conservar*n
en las siguientes peticiones; 5uando un visitante acceda a su Ee#A P&P compro#ar*
autom*ticamente >si session;autoZstart est* puesto a 1? o cuando usted lo especi(i/ue >de (orma
eFpl)cita mendiante session>start./ o impl)cita a trav<s de session>register./? si se le ha enviado un
=session id= espec)(ico con su petici-nA en cuyo caso se recrean las varia#les /ue se ha#)an guardado
anteriormente;
,odas las varia#les registradas son almacenadas tras (inalizar la petici-n; Las varia#les /ue est*n
inde(inidas se marcan como no de(inidas; +n los su#siguientes accesosA no estar*n de(inidas por el
m-dulo de sesiones a menos /ue el usuario las de(ina m*s tarde;
Las opciones de con(iguraci-n trac>_ars y reE6ster_Elo1als in(luyen nota#lemente en la (orma en
/ue las varia#les de la sesi-n se almacenan y restauran;
Nota- A partir de P&P 8;3;7A trac>_ars siempre est* activado;
Nota- A partir de P&P 8;1;3A '_SESS0ON est* disponi#le como varia#le glo#alA al igual
/ue '_+OSTA '_-ETA '_RE5UEST y dem*s; Al contrario /ue
'!TT+_SESS0ON_(,RSA '_SESS0ON siempre es glo#al; Por tantoA no se de#e usar
glo#al para '_SESS0ON;
i trac>_ars est* activado y reE6ster_Elo1als est* desactivadoA s-lo los miem#ros del vector
asociativo glo#al '!TT+_SESS0ON_(,RS pueden ser registrados como varia#les de la sesi-n; Las
varia#les restauradas de la sesi-n s-lo estar*n disponi#les en el vector '!TT+_SESS0ON_(,RS;
E'emplo !. Megistrar una 5ariable con track_%ars acti5ado
<?php
session%start39;
i# 3isset3$H**%&E&&4?.%(,'&)McountM/99 :
$H**%&E&&4?.%(,'&)McountM/[[;
;
else :
$H**%&E&&4?.%(,'&)McountM/ > 2;
;
?>
e recomienda usar '_SESS0ON >o '!TT+_SESS0ON_(,RS con P&P 8;3;K o in(erior? por
seguridad y para hacer el c-digo m*s legi#le; 5on '_SESS0ON o '!TT+_SESS0ON_(,RSA no es
necesario usar las (unciones sessionZregister>? D sessionZunregister>? D sessionZisZregistered>?; Los
usuarios pueden acceder a una varia#le de la sesi-n como si se tratase de una varia#le normal;
E'emplo *. Megistrar una 5ariable con V>,E,,IJN.
<?php
session%start39;
// +se $H**%&E&&4?.%(,'& con H 1.2.G o in#erior
i# 3!isset3$%&E&&4?.)McountM/99 :
$%&E&&4?.)McountM/ > 2;
; else :
$%&E&&4?.)McountM/[[;
;
?>
E'emplo 7. 1orrar una 5ariable con V>,E,,IJN.
<?php
session%start39;
// +se $H**%&E&&4?.%(,'& con H 1.2.G o in#erior
unset3$%&E&&4?.)McountM/9;
?>
i reE6ster_Elo1als est* activadoA todas las varia#les glo#ales pueden ser registradas como varia#les
de la sesi-nA y las varia#les de la sesi-n ser*n restauradas a sus correspondientes varia#les glo#ales;
5omo P&P de#e sa#er /u< varia#les glo#les est*n registradas como varia#les de la sesi-nA los
usuarios de#en registrar las varia#les con la (unci-n sessionZregister>?A mientras /ue con
'!TT+_SESS0ON_(,RSD'_SESS0ON no es necesario usar sessionZregister>?;
Atenci"n
i est* usando '!TT+_SESS0ON_(,RSD'_SESS0ON y desactiva reE6ster_Elo1alsA no use
session>register./A session>is>registered./ ni session>unregister./;
i activa reE6ster_Elo1alsA session>unregister./ de#er)a ser usado a partir de /ue las varia#les de
la sesi-n sean registradas como varia#les glo#ales cuando los datos de la sesi-n se guardan; e
recomienda desactivar reE6ster_Elo1als por motivos de seguridad y rendimiendo;
E'emplo 8. Megistrar una 5ariable con register_globals acti5ado
<?php
i# 3!session%is%reEistered3McountM99 :
session%reEister3"count"9;
$count > 2;
;
else :
$count[[;
;
?>
i trac>_ars y reE6ster_Elo1als est*n activadosA las varia#les glo#ales y las entradas de
'!TT+_SESS0ON_(,RSD'_SESS0ON har*n re(erencia al mismo valor para varia#les ya registradas;
i el usuario utiliza sessionZregister>? para registrar una varia#leA el vector
'!TT+_SESS0ON_(,RSD'_SESS0ON no contendr* esa varia#le hasta /ue se cargue de los datos de
la sesi-n; >p;e'; hasta la pr-Fima petici-n?;
&ay dos (ormas de propagar un =session id=C
5oo"ies
Par*metro en la @RL
+l m-dulo de sesiones admite am#as (ormas; Las 5oo"ies son la me'or opci-nA pero como no son
(ia#les >los clientes no est*n o#ligados a aceptarlas?A no podemos con(iar en ellas; +l segundo
m<todo incrusta el =session id= directamente en las @RLs;
P&P es capaz de hacerlo de (orma transparente al usuario cuando se compila con ==ena1le=trans=s6#;
i activa esta opci-nA las @R.s relativas ser*n modi(icadas de (orma /ue contengan el session id
autom*ticamente; AlternativamenteA puede usar la constante S0D /ue est* de(inidaA si el cliente no
env)a la coo"ie adecuada; +l S0D puede tener la (orma de nom1re_#e_ses6on:sess6on_6# o ser una
cadena vac)a;
+l e'emplo siguiente demuestra c-mo registrar una varia#leA y c-mo colocar correctamente un
enlace a otra p*gina usando la constante .D;
E'emplo 9. Contar el n4mero de impresiones de un usuario
<?php
i# 3!session%is%reEistered3McountM99 :
session%reEister3McountM9;
$count > 6;
;
else :
$count[[;
;
?>
Hola, =isitante. Has =isto esta p&aacute;Eina <?php echo $count; ?> =eces.
<?php
U el <?php echo &4L?> 3&e puede usar <?>&4L?> si short taE est&aacute; acti=ado9
U es necesario para conser=ar el session id
U en caso de Que el usuario haya desacti=ado las cooIies
?>
ara continuar, haEa clicI <, H'ES>"nextpaEe.php?<?php echo &4L?>">aQu&iacute;</,>.
+l $%:S0D%& no es necesario si se ha usado ==ena1le=trans=s6# al compilar P&P;
Nota- e asume /ue las @RLs no relativas apuntan a sitios Ee# eFternosA y por tanto no
se aWade el .DA ya /ue pasar el .D a un servidor di(erente podr)a ocasionar un agu'ero
de seguridad;
Para implementar el almacenamiento en #ases de datos o en otro tipo de almacenamientoA necesitar*
usar session>set>sa5e>handler././ para crear una colecci-n de (unciones de almacenamiento a
nivel de usuario;
+l sistema de control de sesiones soporta varias opciones de con(iguraci-n /ue puede colocar en su
archivo php.ini; Les daremos un pe/ueWo repaso;
sess6on.sae_han#ler de(ine el nom#re del controlador /ue se usa para almacenar y
recuperar los datos asociados a la sesi-n; u valor por de(ecto es 96les;
sess6on.sae_path de(ine el argumento /ue se pasa al controlador de almacenamiento; i
elige el controlador de archivos por de(ectoA esta es la ruta donde los archivos se crean; Por
de(ecto es /tmp; i la pro(undidad de la ruta de sess6on.sae_path es mayor /ue 0A no se
llevar* a ca#o la recolecci-n de #asura;
A5iso
i lo de'a apuntando a un directorio con permiso de lectura por el resto de usuariosA como /tmp
>la opci-n por de(ecto?A los dem*s usuarios del servidor pueden conseguir ro#ar las sesiones
o#teni<ndolas de la lista de archivos de ese directorio;
sess6on.name especi(ica el nom#re de la sesi-n /ue se usa como nom#re de la coo"ie; -lo
de#er)a contener caracteres al(anum<ricos; Por de(ecto vale +!+SESS0D;
sess6on.auto_start especi(ica si el m-dulo de las sesi-n inicia una sesi-n autom*ticamente al
comenzar la petici-n; Por de(ecto est* 0 >desactivado?;
sess6on.coo>6e_l69et6me especi(ica la duraci-n de la coo"ie en segundos /ue se manda al
navegador; +l valor 0 signi(ica =hasta /ue se cierra el navegador=A y es el /ue se encuentra
por de(ecto;
sess6on.ser6al6De_han#ler de(ine el nom#re del controlador /ue se utiliza para guardar y
restaurar los datos; Actualmente se soportan un (ormato interno de P&P >cuyo nom#re es
php? y LDDJ >cuyo nom#re es 7##8?; LDDJ s-lo est* disponi#le si P&P est* compilado
con oporte para LDDJ; Por de(ecto es php;
sess6on.Ec_pro1a16l6t? especi(ica la pro#a#ilidad de /ue se inicie la rutina gc >gar#age
collection 2 recoleci-n de #asura? en cada petici-n en porcenta'e; Por de(ecto es 1;
sess6on.Ec_ma8l69et6me especi(ica el nBmero de segundos tras los cuales los datos se
considerar*n como H#asuraH y ser*n eliminados;
sess6on.re9erer_chec> contiene la su#cadena /ue usted /uiera /ue se comprue#e en cada
=&,,P Re(erer= >N;,;C P*gina desde donde proviene el enlace a la p*gina actual?; i el
=Re(erer= (ue enviado por el cliente y la su#cadena no se ha encontradoA el session id
incrustado ser* marcado como inv*lido; Por de(ecto es una cadena vac)a;
sess6on.entrop?_96le indica la ruta a un recurso eFterno >un archivo? /ue se usar* como
(uente adicional de entrop)a en el proceso de creaci-n de session idHs; Por e'emplo /
#e/ran#om o /#e/uran#omA /ue est*n disponi#les en muchos sistemas @niF;
sess6on.entrop?_lenEth especi(ica el nBmero de #ytes /ue ser*n leidos del archivo indicado
m*s arri#a; Por de(ecto es 0 >desactivado?;
sess6on.use_coo>6es indica si el m-dulo puede usar coo"ies para guardar el session id en el
lado del cliente; Por de(ecto est* a 1 >activado?;
sess6on.coo>6e_path especi(ica la ruta a colocar en sessionZcoo"ie; Por de(ecto es /;
sess6on.coo>6e_#oma6n especi(ica el dominio a esta#lecer en sessionZcoo"ie; Por de(ecto no
se especi(ica ninguno en ningBn caso;
sess6on.cache_l6m6ter especi(ica el m<todo de control del cach< a usar en las p*ginas de la
sesi-n >noneDnocacheDprivateDprivateZnoZeFpireDpu#lic?; Por de(ecto es nocache >no guardar
las p*ginas en el cach<?;
sess6on.cache_e8p6re especi(ica el tiempo2de2vida de las p*ginas de la sesi-n /ue se
encuentran en el cach< en minutos; No tiene e(ecto para el limitador nocache; Por de(ecto
vale 1P0;
sess6on.use_trans_s6# indica si la inclusi-n del sid transparente est* activada o noA si (ue
activada compilando con ==ena1le=trans=s6#; Por de(ecto est* a 1 >activado?;
url_re7r6ter.taEs especi(ica /u< eti/uetas html ser*n reescritas para incluir el session id si la
inclusi-n del sid transparente est* activada; Las eti/uetas por de(ecto son
a:hre9Carea:hre9C9rame:srcC6nput:srcC9orm:9a>eentr?
Nota- +l mane'o de sesiones (ue aWadido en P&P 8;3;
Tabla de contenidos
sessionZcacheZeFpire 22 Devuelve la caducidad actual del cach<
sessionZcacheZlimiter 22 Lee yDo cam#ia el limitador del cach< actual
sessionZcommit 22 Alias o( session>3rite>close./
sessionZdecode 22 Decodi(ica los datos de una sesi-n a partir de una cadena
sessionZdestroy 22 Destruye todos los datos guardados en una sesi-n
sessionZencode 22 5odi(ica los datos de la sesi-n actual en una cadena
sessionZgetZcoo"ieZparams 22 O#tiene los par*metros de la coo"ie de la sesi-n
sessionZid 22 Lee yDo cam#ia el session id actual
sessionZisZregistered 22 5omprue#a si una varia#le est* registrada en la sesi-n
sessionZmoduleZname 22 Lee yDo cam#ia el m-dulo de la sesi-n actual
sessionZname 22 Lee yDo cam#ia el nom#re de la sesi-n actual
sessionZregenerateZid 22 Actualizar la id de sesi-n actual con una reci<n generada
sessionZregister 22 Registrar una o m*s varia#les glo#ales con la sesi-n actual
sessionZsaveZpath 22 Lee yDo cam#ia la ruta donde se guardan los datos de la sesi-n actual
sessionZsetZcoo"ieZparams 22 5am#ia los par*metros de la coo"ie de la sesi-n
sessionZsetZsaveZhandler 22 +sta#lece unas (unciones para el almacenamiento de los datos de la
sesi-n a nivel de usuario
sessionZstart 22 .nicializar los datos de una sesi-n
sessionZunregister 22 Desregistrar una varia#le de la sesi-n actual
sessionZunset 22 +limina todas las varia#les de la sesi-n
sessionZEriteZclose 22 +scri#e los datos de la sesi-n y la (inaliza
session>cache>e+pire
>P&P 8 _^ 8;0;3A P&P 4?
sessionZcacheZeFpire 22 Devuelve la caducidad actual del cach<
Kescripci"n
int session>cache>e+pire > Pint nuevaZcaducidadZcacheQ ?
session>cache>e+pire./ devuelve la caducidad actual del cach<; i se proporciona
nuea_ca#uc6#a#_cacheA se reemplazar* la caducidad actual con nuea_ca#uc6#a#_cache;
session>cache>limiter
>P&P 8 _^ 8;3;7A P&P 4?
sessionZcacheZlimiter 22 Lee yDo cam#ia el limitador del cach< actual
Kescripci"n
string session>cache>limiter > Pstring limitadorZdelZcacheQ ?
session>cache>limiter./ devuelve el nom#re del limitador de cach< actual; i se especi(ica
l6m6ta#or_#el_cacheA el nom#re del limitador de cach< actual se cam#ia al nuevo valor;
+l limitador de cach< controla las ca#eceras &,,P de control del cach< enviadas al cliente; +stas
ca#eceras determinan las reglas por las /ue el contenido de la p*gina puede ser guardado en el cach<
local del cliente; 5am#iando el limitador de cach< a nocacheA por e'emploA impedir* cual/uier tipo
de almacenamiento en el cach< por parte del cliente; @n valor de pu1l6cA en cam#ioA permitir)a el
almacenamiento en el cach<; ,am#i< se puede cam#iar a pr6ateA /ue es un poco m*s restrictivo /ue
el pu1l6c;
+n el modo pr6ateA la ca#ecera +Fpire >caducidad? enviada al cliente puede con(undir a algunos
navegadores incluyendo Mozilla; Puede evitar este pro#lema con el modo pr6ate_no_e8p6re; La
ca#ecera +Fpire nunca se env)a al cliente en este modo;
Nota- pr6ate_no_e8p6re (ue aWadida en P&P 8;0;3dev;
Al comenzar la e'ecuci-n del scriptA el limitador de cach< se reesta#lece al valor por de(ecto
guardado en sess6on.cache_l6m6ter; De este modoA es necesario llamar a session>cache>limiter./ en
cada petici-n >y antes de llamar a session>start./?;
E'emplo !. E'emplos con session>cache>limiter./
<?php
U cambia el limitador del cach&eacute; a Mpri=ateM
session%cache%limiter3Mpri=ateM9;
$cache%limiter > session%cache%limiter39;
echo "El limitador de cach&eacute; est&aacute; puesto ahora en $cache%limiter<p>";
?>
session>commit
sessionZcommit 22 Alias o( session>3rite>close./
Kescription
,his (unction is an alias o( session>3rite>close./;
session>decode
>P&P 8 A P&P 4?
sessionZdecode 22 Decodi(ica los datos de una sesi-n a partir de una cadena
Kescripci"n
#ool session>decode > string datos ?
session>decode./ decodi(ica los datos de una sesi-n /ue se encuentran en #atosA creando las
varia#les guardadas en la sesi-n;
session>destroy
>P&P 8 A P&P 4?
sessionZdestroy 22 Destruye todos los datos guardados en una sesi-n
Kescripci"n
#ool session>destroy > void ?
session>destroy./ destruye todos los datos asociados con la sesi-n actual; No destruye ninguna de
las varia#les glo#ales asociadas a la sesi-n ni la coo"ie;
+sta (unci-n devuelve TRUE si se ha destruido la sesi-n correctamente y FALSE si ha ha#ido algBn
pro#lema al intentarlo;
E'emplo !. Kestrucci"n de una sesi"n
<?php
// 4niciali0a de la sesi&oacute;n.
// &i est&aacute; usando session%name3"alEo"9, &iexcl;no lo ol=ide ahora!
session%start39;
// Lestruye todas las =ariables de la sesi&oacute;n
session%unset39;
// Sinalmente, destruye la sesi&oacute;n
session%destroy39;
?>
E'emplo *. Kestrucci"n de una sesi"n con V>,E,,IJN
<?php
// 4niciali0a la sesi&oacute;n.
// &i est&aacute; usando session%name3"alEo"9, &iexcl;no lo ol=ide ahora!
session%start39;
// Lestruye todas las =ariables de la sesi&oacute;n
$%&E&&4?. > array39;
// Sinalmente, destruye la sesi&oacute;n
session%destroy39;
?>
session>encode
>P&P 8 A P&P 4?
sessionZencode 22 5odi(ica los datos de la sesi-n actual en una cadena
Kescripci"n
string session>encode > void ?
session>encode./ devuelve una cadena con el contenido de la sesi-n actual en su interior;
session>get>cooBie>params
>P&P 8 A P&P 4?
sessionZgetZcoo"ieZparams 22 O#tiene los par*metros de la coo"ie de la sesi-n
Kescripci"n
array session>get>cooBie>params > void ?
La (unci-n session>get>cooBie>params./ devuelve un vector con in(ormaci-n so#re la coo"ie de la
sesi-n actualA conteniendo los siguientes elementosC
=li(etime= 2 La duraci-n de la coo"ie;
=path= 2 La ruta donde se guarda la in(ormaci-n;
=domain= 2 +l dominio de la coo"ie;
=secure= 2 La coo"ie de#e ser enviada s-lo #a'o coneFiones seguras; >+ste elemento (ue
aWadido en P&P 8;3;8;?
session>id
>P&P 8 A P&P 4?
sessionZid 22 Lee yDo cam#ia el session id actual
Kescripci"n
string session>id > Pstring idQ ?
session>id./ devuelve el session id de la sesi-n actual; i se especi(ica un 6#A reemplazar* el session
id actual;
,am#i<n se puede utilizar la constante .D para recuperar el nom#re y el session id de la sesi-n
actual como una cadena adecuada para aWadir a las @RLs;
session>is>registered
>P&P 8 A P&P 4?
sessionZisZregistered 22 5omprue#a si una varia#le est* registrada en la sesi-n
Kescripci"n
#ool session>is>registered > string nom#re ?
session>is>registered./ devuelve TRUE si hay una varia#le registrada en la sesi-n actual cuyo
nom#re es nom1re;
Nota- i utiliza '_SESS0ON >o '!TT+_SESS0ON_(,RS con P&P 8;3;K o in(erior?A use
isset./ para compro#ar si una varia#le est* registrada en '_SESS0ON;
Atenci"n
i utiliza '!TT+_SESS0ON_(,RSD'_SESS0ONA no use session>register./A session>is>registered
./ ni session>unregister./;
session>module>name
>P&P 8 A P&P 4?
sessionZmoduleZname 22 Lee yDo cam#ia el m-dulo de la sesi-n actual
Kescripci"n
string session>module>name > Pstring m-duloQ ?
session>module>name./ devuelve el nom#re del m-dulo de la sesi-n actual; i se especi(ica
m`#uloA se usar* ese m-dulo en su lugar;
session>name
>P&P 8 A P&P 4?
sessionZname 22 Lee yDo cam#ia el nom#re de la sesi-n actual
Kescripci"n
string session>name > Pstring nom#reQ ?
session>name./ devuelve el nom#re de la sesi-n actual; i se especi(ica un nom1reA el nom#re de
de la sesi-n actual se cam#ia a este valor;
+l nom#re de la sesi-n hace re(erencia al session id utilizado en las coo"ies y en las @RLs; De#er)a
contener Bnicamente caracteres al(anum<ricosX tam#i<n de#er)a ser corto y descriptivo >p;e'; para
usuarios con los avisos de las coo"ies activados?; +l nom#re de la sesi-n se restaura al valor
guardado por de(ecto en sess6on.name al comenzar la petici-n; As)A puesA es necesario llamar a
session>name./ en cada petici-n >y antes de llamar a session>start./ o a session>register./?;
E'emplo !. E'emplos de session>name./
<?php
// Rambiar el nombre de la sesi&oacute;n a 7ebsite4L
$nombre%anterior > session%name3"7ebsite4L"9;
echo "El anterior nombre de la sesi&oacute;n era $nombre%anterior<p>";
?>
session>regenerate>id
>P&P 8 _^ 8;7;0A P&P 4?
sessionZregenerateZid 22 Actualizar la id de sesi-n actual con una reci<n generada
Kescripci"n
#ool session>regenerate>id > void ?
session>regenerate>id./ reemplazar* la id de sesi-n actual con una nuevaA y conservar* la
in(ormaci-n de sesi-n actual;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. )n e'emplo de session>regenerate>id./
<?php
session%start39;
$id%sesion%antiEua > session%id39;
session%reEenerate%id39;
$id%sesion%nue=a > session%id39;
echo "&esi&oacute;n (ieja@ $id%sesion%antiEua<br />";
echo "&esi&oacute;n .ue=a@ $id%sesion%nue=a<br />";
print%r3$%&E&&4?.9;
?>
Nota- A partir de P&P 8;7;7A si est*n ha#ilitadas las coo"ies de sesi-nA el uso de
session>regenerate>id./ tam#i<n enviar* una nueva coo"ie de sesi-n con la nueva id de
sesi-n;
$ea tam#i<n session>id./A session>start./A y session>name./;
session>register
>P&P 8 A P&P 4?
sessionZregister 22 Registrar una o m*s varia#les glo#ales con la sesi-n actual
Kescripci"n
#ool session>register > miFed nom#re PA miFed ;;;Q ?
session>register./ acepta un nBmero varia#le de argumentosA cual/uiera de los cuales puede ser o
una cadena /ue contiene el nom#re de una varia#leA o una matriz /ue consista de nom#res de
varia#les u otras matrices; Para cada nom#reA session>register./ registra la varia#le glo#al con ese
nom#re en la sesi-n actual;
Atenci"n
i desea /ue su script (uncione independientemente de registerZglo#alsA necesita usar en su lugar
la matriz YZ+.ONA dado /ue las entradas de '_SESS0ON son registradas autom*ticamente; i
su script usa session>register./A no (uncionar* en entornos en donde la directiva P&P
registerZglo#als est< desha#ilitada;
register>globals- Nota importante- Desde P&P 8;0;3 el valor por de(ecto de la
directiva registerZglo#als es o99; La comunidad P&P anima a todos a no con(iar en esta
directiva y usar en su lugar superglo#als;
Atenci"n
+sto registra una varia#le Elo1al; i desea registrar una varia#le de sesi-n desde el interior de una
(unci-nA necesita asegurarse de hacerla glo#al usando la pala#ra clave global o la matriz
'-4OA,4S).A o usar las matrices de sesi-n especialesA como se anota a continuaci-n;
Atenci"n
i est* usando '_SESS0ON >o '!TT+_SESS0ON_(,RS?A no use session>register./A
session>is>registered./A ni session>unregister./;
+sta (unci-n devuelve TRUE cuando todas las varia#les son registradas satis(actoriamente en la
sesi-n;
i session>start./ no (ue llamada antes de /ue <sta (unci-n sea llamadaA se realizar* un llamado
impl)cito a session>start./ sin par*metro alguno; '_SESS0ON no imita este comportamiento y
re/uiere session>start./ antes de su uso;
Puede crear tam#i<n una varia#le de sesi-nA simplemente de(iniendo el miem#ro apropiado de
'_SESS0ON o la matriz '!TT+_SESS0ON_(,RS >P&P ` 8;1;3?;
<?php
// El uso de session%reEister39 es considerado obsoleto
$barney > "+n dinosaurio Erande y =ioleta.";
session%reEister3"barney"9;
// &e pre#iere el uso de $%&E&&4?., a partir de H 1.6.2
$%&E&&4?.)"0im"/ > "+n in=asor de otro planeta.";
// El modo antiEuo era usar $H**%&E&&4?.%(,'&
$H**%&E&&4?.%(,'&)"bob%esponja"/ > "&Eacute;l tiene pantalones cuadrados.";
?>
Nota- Actualmente es imposi#le registrar varia#les de recurso en una sesi-n; Por
e'emploA no puede crear una coneFi-n a una #ase de datos y almacenar la id de coneFi-n
como una varia#le de sesi-n y esperar /ue la coneFi-n aun sea v*lida la pr-Fima vez
/ue la sesi-n sea restaurada; Las (unciones P&P /ue devuelven un recurso se identi(ican
por tener un tipo de retorno de resource en su de(inic-n de (unci-n; @na lista de
(unciones /ue devuelven recursos est* disponi#le en el ap<ndice tipos de recurso;
i '_SESS0ON >o '!TT+_SESS0ON_(,RS para P&P 8;3;K o versiones anteriores? es
usadoA asigne valores a '_SESS0ON; Por e'emploC YZ+.ONPHvarHQ ^ HAB5HX
$ea tam#i<n session>is>registered./A session>unregister./A y YZ+.ON;
session>sa5e>path
>P&P 8 A P&P 4?
sessionZsaveZpath 22 Lee yDo cam#ia la ruta donde se guardan los datos de la sesi-n actual
Kescripci"n
string session>sa5e>path > Pstring pathQ ?
session>sa5e>path./ devuelve la ruta del directorio usado actualmente para guardar los datos de la
sesi-n; i se especi(ica pathA se cam#iar* la ruta donde se guardan los datos;
Nota- +n algunos sistemas operativosA puede /ue /uiera especi(icar una ruta en un
sistema de archivos /ue mane'a muchos archivos pe/ueWos de (orma e(iciente; Por
e'emploA en LinuFA reiser(s puede dar un rendimiento me'or /ue eFt0(s;
session>set>cooBie>params
>P&P 8 A P&P 4?
sessionZsetZcoo"ieZparams 22 5am#ia los par*metros de la coo"ie de la sesi-n
Kescripci"n
void session>set>cooBie>params > int duraci-n PA string path PA string dominio PA #ool seguraQQQ ?
5am#ia los par*metros de la coo"ie de(inidos en el archivo php.ini; +l e(ecto de esta (unci-n
s-lo dura hasta /ue termina el script;
Nota- +l par*metro seEura (ue aWadido en P&P 8;3;8;
session>set>sa5e>handler
>P&P 8 A P&P 4?
sessionZsetZsaveZhandler 22 +sta#lece unas (unciones para el almacenamiento de los datos de la
sesi-n a nivel de usuario
Kescripci"n
#ool session>set>sa5e>handler > string a#rirA string cerrarA string leerA string escri#irA string
destruirA string gc ?
session>set>sa5e>handler./ esta#lece las (unciones /ue se utilizan a nivel de usuario para el
almacenamiento y recuperaci-n de los datos asociados a una sesi-n; +s lo m*s Btil cuando se
pre(iere utilizar otro m<todo de almacenamiento distinto del proporcionaddo por las sesiones de
P&P; p;e'; Almacenar los datos de la sesi-n en una #ase de datos local; Devuelve TRUE si todo se
llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- De#e cam#iar la opci-n sess6on.sae_han#ler en la con(iguraci-n a user en su
archivo php.ini para /ue session>set>sa5e>handler./ tenga e(ecto;
Nota- +l mane'ador =escri#ir= no se e'ecuta hasta /ue se cierra la salida; Por elloA la
salida de las sentencias /ue colo/uemos en el mane'ador =escri#ir= para el depurado
nunca ser* enviadas al navegador; i se necesita producir una salida para el depuradoA se
sugiere /ue la salida se produzca en un archivo;
+l siguiente e'emplo proporciona almacenamiento de las sesiones #asado en archivos de (orma
similar al mane'ador de sesiones por de(ecto de P&P 96les; +ste e'emplo puede ser eFtendido
(*cilmente para cu#rir el almacenamiento en #ases de datos usando su motor de soporte de #ases de
datos de P&P (avorito;
La (unci-n de lectura de#e devolver siempre una cadena para /ue el mane'ador de escritura (uncione
como se espera; Devuelva una cadena vac)a si no hay ningBn dato a leer; Los valores devueltos de
otros mane'adores son convertidos a una eFpresi-n #ooleana; ,R@+ si todo ha ido correctamenteA
FAL+ si ha ha#ido algBn pro#lema;
E'emplo !. E'emplo de session>set>sa5e>handler./
<?php
#unction abrir 3$sa=e%path, $session%name9 :
Elobal $sess%sa=e%path, $sess%session%name;

$sess%sa=e%path > $sa=e%path;
$sess%session%name > $session%name;
return3true9;
;
#unction cerrar39 :
return3true9;
;
#unction leer 3$id9 :
Elobal $sess%sa=e%path, $sess%session%name;
$sess%#ile > "$sess%sa=e%path/sess%$id";
i# 3$#p > ^#open3$sess%#ile, "r"99 :
$sess%data > #read3$#p, #ilesi0e3$sess%#ile99;
return3$sess%data9;
; else :
return3""9; // Lebe de=ol=er "" aQu&iacute;.
;
;
#unction escribir 3$id, $sess%data9 :
Elobal $sess%sa=e%path, $sess%session%name;
$sess%#ile > "$sess%sa=e%path/sess%$id";
i# 3$#p > ^#open3$sess%#ile, "8"99 :
return3#8rite3$#p, $sess%data99;
; else :
return3#alse9;
;
;
#unction destruir 3$id9 :
Elobal $sess%sa=e%path, $sess%session%name;

$sess%#ile > "$sess%sa=e%path/sess%$id";
return3^unlinI3$sess%#ile99;
;
/WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
W ,*E.R4&?acute;. F .ecesitar&aacute; implementar alE&uacute;n W
W tipo de rutinas recolectoras de basura aQu&iacute; W
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW/
#unction rb 3$maxli#etime9 :
return true;
;
session%set%sa=e%handler 3"abrir", "cerrar", "leer", "escribir", "destruir", "rb"9;
session%start39;
// proceed to use sessions normally
?>
session>start
>P&P 8 A P&P 4?
sessionZstart 22 .nicializar los datos de una sesi-n
Kescripci"n
#ool session>start > void ?
session>start./ crea una sesi- >o la continBa #asandose en el session id pasado por G+, o mediante
una coo"ie?;
i desea usar una sesi-n con un nom#re en concretoA de#e llamar a session>name./ antes de llamar
a session>start./;
+sta (unci-n siempre devuelve TRUE;
Nota- i est* usando sesiones #asadas en las coo"iesA de#e llamar a session>start./
antes de /ue haya ninguna salida al navegador;
session>start./ registrar* un mane'ador de salida interno para la reescritura de las @RLHs si trans=
s6# est* activado; i un usuario utiliza o1_EDhan#ler o algo como ob>start./A el orden del
mane'ador de salida es importante para /ue la salida sea la adecuada; Por e'emploA el usuario de#e
registrar o1_EDhan#ler antes de iniciar la sesi-n;
Nota- e recomienda utilizar Dl61.output_compress6on en lugar de o1_EDhan#ler
session>unregister
>P&P 8 A P&P 4?
sessionZunregister 22 Desregistrar una varia#le de la sesi-n actual
Kescripci"n
#ool session>unregister > string nom#re ?
session>unregister./ desregistra >olvida? la varia#le glo#al llamada nom1re de la sesi-n actual;
+sta (unci-n devuelve TRUE cuando la varia#le es eliminada de la sesi-n correctamente;
Nota- i utiliza '_SESS0ON >o '!TT+_SESS0ON_(,RS con P&P 8;3;K o in(erior?A use
unset./ para eliminar una varia#le de la sesi-n actual;
Atenci"n
+sta (unci-n no #orra la varia#le glo#al correspondiente a nom1reA s-lo evita /ue la varia#le sea
guardada como parte de la sesi-n; De#e llamar a unset./ para eliminar la varia#le glo#al
correspondiente;
Atenci"n
i est* tra#a'ando con '!TT+_SESS0ON_(,RSD'_SESS0ONA no utilice session>register./A
session>is>registered./ ni session>unregister./;
session>unset
>P&P 8 A P&P 4?
sessionZunset 22 +limina todas las varia#les de la sesi-n
Kescripci"n
void session>unset > void ?
La (unci-n session>unset./ elimina y li#era el espacio ocupado por todas las varia#les de la sesi-n
actual registradas;
Nota- i utiliza '_SESS0ON >o '!TT+_SESS0ON_(,RS con P&P 8;3;K o in(erior?A use
unset./ en su lugar para desregistrar una varia#le de la sesi-n; p;e'; YZ+.ON ^ array
>?X
session>3rite>close
>P&P 8 _^ 8;3;8A P&P 4?
sessionZEriteZclose 22 +scri#e los datos de la sesi-n y la (inaliza
Kescripci"n
void session>3rite>close > void ?
Finaliza la sesi-n actual y guarda sus datos
Los datos de la sesi- se suelen guardar tras (inalizar la e'ecuci-n de su script sin necesidad de llamar
a session>3rite>close./A pero como los datos de la sesi- est*n #lo/ueados para evitar escrituras
concurrentesA s-lo un script puede tra#a'ar con una sesi-n a la vez; 5uando se usan (ramesets 'unto
con sesionesA podr* compro#ar /ue los (rames se cargan uno a uno de#ido a este #lo/ueo; Puede
reducir el tiempo necesario para cargar los (rames (inalizando la sesi-n tan pronto como haya
terminado los cam#ios a las varia#les de la sesi-n;
CIII. ;unciones de Memoria Compartida
Introducci"n
hmop es un con'unto de (unciones /ue permiten a P&P leerA escri#irA crear y #orrar de (orma
sencilla segmentos de memoria compartida de tipo @N.J; e de#e tener en cuenta /ue las versiones
de LindoEs anteriores a LindoEs 0333 no soportan el uso de memoria compartida;
Nota- +n P&P 8;3;7A el nom#re de todas estas (unciones esta#a precedido por el pre(i'o
shm y actualmente lo est*n por el pre(i'o shmop;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
Para usar las (unciones de memoria compartidaA se de#e aWadir el par*metro ==ena1le=shmop a las
opciones de con(iguraci-n de P&P;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
E'emplos
E'emplo !. Mesumen de las operaciones con Memoria Compartida
<?php

// Rreacion de un seEmento de memoria compartida de 622 bytes y con un
// identi#icador iEual a 2x##<
$shm%id > shmop%open32x##<, "c", 2G11, 6229;
i#3!$shm%id9 :
echo ".o se pudo crear el seEmento de memoria compartidaVn";
;
// ?btencion del tama&ntilde;o del seEmento de memoria compartida
$shm%si0e > shmop%si0e3$shm%id9;
echo "&eEmento de memoria@ se han reser=ado ".$shm%si0e. " bytes.Vn";
// Escritura de una cadena de texto de prueba en la memoria compartida
$shm%bytes%8ritten > shmop%8rite3$shm%id, "mi seEmento de memoria compartida",
29;
i#3$shm%bytes%8ritten !> strlen3"mi seEmento de memoria compartida"99 :
echo ".o se pudo escribir todos los datos indicadosVn";
;
// Oectura de la cadena de texto de prueba
$my%strinE > shmop%read3$shm%id, 2, $shm%si0e9;
i#3!$my%strinE9 :
echo ".o se pudo leer el seEmento de memoria compartidaVn";
;
echo "Oos datos Que contenia el seEmento de memoria compartida son los
siEuientes@".$my%strinE."Vn";
// Zorrado y eliminacion del seEmento de memoria compartida
i#3!shmop%delete3$shm%id99 :
echo ".o se pudo borrar el seEmento de memoria compartida.";
;
shmop%close3$shm%id9;

?>
Tabla de contenidos
shmopZclose 22 5ierra un segmento de memoria compartida
shmopZdelete 22 Borra un segmento de memoria compartida
shmopZopen 22 5rea o a#re un segmento de memoria compartida
shmopZread 22 Lee un segmento de memoria compartida
shmopZsize 22 O#tiene el tamaWo de un segmento de memoria compartida
shmopZErite 22 +scri#e datos en un segmento de memoria compartida
shmop>close
>P&P 8 _^ 8;3;8A P&P 4?
shmopZclose 22 5ierra un segmento de memoria compartida
Kescripci"n
int shmop>close > int shmid ?
shmop>close./ se utiliza para cerrar un segmento de memoria compartida;
shmop>close./ utiliza como par*metro el identi(icador del segmento de memoria compartida
devuelto por la (unci-n shmop>open./;
E'emplo !. Cierre de un segmento de memoria compartida
<?php
shmop%close3$shm%id9;
?>
+n el e'emplo anterior se cierra un segmento de memoria compartida cuyo identi(icador es'shm_6#;
shmop>delete
>P&P 8 _^ 8;3;8A P&P 4?
shmopZdelete 22 Borra un segmento de memoria compartida
Kescripci"n
int shmop>delete > int shmid ?
shmop>delete./ se utiliza para #orrar un segmento de memoria compartida;
shmop>delete./ utiliza como par*metro el identi(icador del segmento de memoria compartida
devuelto por la (unci-n shmop>open./; i la (unci-n tiene <FitoA devolver* un 1 >uno? y si no lo
tiene devolver* un 3 >cero?;
E'emplo !. 1orrado de un segmento de memoria compartida
<?php
shmop%delete3$shm%id9;
?>
+n el e'emplo anterior se #orra un segmento de memoria compartida cuyo identi(icador es 'shm_6#;
shmop>open
>P&P 8 _^ 8;3;8A P&P 4?
shmopZopen 22 5rea o a#re un segmento de memoria compartida
Kescripci"n
int shmop>open > int claveA string opcionesA int modoA int tamanio ?
shmop>open./ se utiliza para crear o a#rir un segmento de memoria compartida;
shmop>open./ utiliza 8 parametrosC claveA /ue es el identi(icador /ue el sistema utilizar* para ese
segmento de memoria compartida y /ue puede ser indicado tanto en (ormato decimal como
heFadecimal; +l segundo par*metro son las opciones /ue se pueden utilizarC
=a= para acceder >se activa &MZRDONL% en el shmat? se utiliza esta opci-n para a#rir un
segmento de memoria compartida /ue ya eFiste en modo de solo lectura;
=c= para crear >se activa .P5Z5R+A,+? se utiliza esta opci-n para crear un nuevo segmento
de memoria compartida o para intentar a#rir en modo de lectura y escritura un segmento /ue
ya eFiste;
=E= para acceder en modo de lectura y escritura; e utiliza esta opci-n para poder leer un
segmento de memoria compartida y adem*s poder escri#ir en el; e trata de la opci-n m*s
ha#itual en la mayor)a de los casos;
=n= para crear un nuevo segmento de memoria compartida >se activan .P5Z5R+A,+l
.P5Z+J5L? se utiliza esta opci-n para crear un nuevo segmento de memoria compartida a
no ser /ue ya eFista otro segmento de memoria compartida con la misma clave; +sta opci-n
es Btil por motivos de seguridad para evitar por e'emplo =condiciones de carrera= >en ingl<s
=race conditions=?;
+l tercer par*metro es el modoA /ue son los permisos /ue se van a asignar al segmento de memoria
compartida; +stos permisos son similares a los /ue se asignan a los archivos; La (orma de indicar
los permisos es identica a la /ue se utiliza en sistemas @N.J para indicar los permisos de los
archivosA como por e'emplo =3K88=; +l Bltimo par*metro es el tamaWo en #ytes del segmento de
memoria compartida /ue se va a crear;
Nota- NotaC el tercer y cuarto par*metro de#en ser igual a 3 >cero? si se est* a#riendo un
segmento de memoria compartida eFistente; i la (unci-n shmop>open./ tiene <FitoA
devolver* un identi(icador /ue se puede utilizar posteriormente para acceder al
segmento de memoria compartida /ue se ha creado;
E'emplo !. Creaci"n de un nue5o segmento de memoria compartida
<?php
$shm%Iey > #toI3%%S4OE%%,MtM9;
$shm%id > shmop%open3$shm%Iey, "c", 2G11, 6229;
?>
+n el e'emplo anterior se crea un nuevo segmento de memoria compartida cuya clave se ha
generado con ayuda de la (unci-n ftoB./;
shmop>read
>P&P 8 _^ 8;3;8A P&P 4?
shmopZread 22 Lee un segmento de memoria compartida
Kescripci"n
string shmop>read > int shmidA int comienzoA int posiciones ?
shmop>read./ se utiliza para leer datos almacenados en un segmento de memoria compartida;
shmop>read./ utiliza 7 par*metrosC shmidA /ue es el identi(icador del segmento de memoria
compartida devuelto por la (unci-n shmop>open./X comienzoA /ue es la posici-n desde la /ue se
empezar*n a leer los datos del segmento de memoria y posicionesA /ue indica el nBmero de #ytes
/ue se leer*n a partir del comienzo indicado anteriormente;
E'emplo !. :ectura de un segmento de memoria compartida
<?php
$shm%data > shmop%read3$shm%id, 2, 529;
?>
+n el e'emplo anterior se leen los 43 primeros #ytes del segmento de memoria y se almacenan los
datos en la varia#le 'shm_#ata;
shmop>si6e
>P&P 8 _^ 8;3;8A P&P 4?
shmopZsize 22 O#tiene el tamaWo de un segmento de memoria compartida
Kescripci"n
int shmop>si6e > int shmid ?
shmop>si6e./ se utiliza para o#tener el tamaWo en #ytes de un segmento de memoria compartida;
shmop>si6e./ utiliza como par*metro el identi(icador del segmento de memoria compartida
devuelto por la (unci-n shmop>open./; La (unci-n devuelve un dato de tipo int /ue contiene el
tamaWo en #ytes del segmento de memoria compartida;
E'emplo !. Jbtenci"n del tamaWo de un segmento de memoria compartida
<?php
$shm%si0e > shmop%si0e3$shm%id9;
?>
+n el e'emplo anterior se almacena en la varia#le 'shm_s6De el tamaWo en #ytes del segmento de
memoria compartida cuyo identi(icador es 'shm_6#;
shmop>3rite
>P&P 8 _^ 8;3;8A P&P 4?
shmopZErite 22 +scri#e datos en un segmento de memoria compartida
Kescripti"n
int shmop>3rite > int shmidA string datosA int comienzo ?
shmop>3rite./ se utiliza para escri#ir datos en un segmento de memoria compartida;
shmop>3rite./ utiliza 7 par*metrosC shmidA /ue es el identi(icador del segmento de memoria
compartida devuelto por la (unci-n shmop>open./X datosA /ue es una cadena /ue contiene los datos
/ue se /uieren escri#ir en el segmento de memoria compartida y comienzoA /ue indica la posici-n
desde la /ue se empezar*n a escri#ir los datos;
E'emplo !. Escritura en un segmento de memoria compartida
<?php
$shm%bytes%8ritten > shmop%8rite3$shm%id, $my%strinE, 29;
?>
+n el anterior e'emplo se escri#en en el segmento de memoria compartida los datos contenidos en la
varia#le 'm?_str6nE; La varia#le 'shm_1?tes_7r6tten contendr* el nBmero de #ytes escritos;
CIIII. ,impleIM: functions
Introducci"n
,he impleJML eFtension provides a very simple and easily usa#le toolset to convert JML to an
o#'ect that can #e processed Eith normal property selectors and array iterators;
Me?uirimientos
,he impleJML eFtension re/uires P&P 4;
Instalaci"n
,he impleJML eFtension is ena#led #y de(ault; ,o disa#le itA use the ==#6sa1le=s6mple8ml
con(igure option;
E'emplos
Many eFamples in this re(erence re/uire an JML string; .nstead o( repeating this string in every
eFampleA Ee put it into a (ile Ehich Ee include in each eFample; ,his included (ile is shoEn in the
(olloEing eFample section; AlternativelyA you could create an JML document and read it Eith
simple+ml>load>file./;
E'emplo !. Include file e+ample.php 3ith IM: string
<?php
$xmlstr > <<<X"O
<?xml =ersion>M6.2M standalone>MyesM?>
<mo=ies>
<mo=ie>
<title>H@ Zehind the arser</title>
<characters>
<character>
<name>"s. Roder</name>
<actor>?nli=ia ,ctora</actor>
</character>
<character>
<name>"r. Roder</name>
<actor>El ,ct&UC66;r</actor>
</character>
</characters>
<plot>
&o, this lanEuaEe. 4tMs liIe, a proEramminE lanEuaEe. ?r is it a
scriptinE lanEuaEe? ,ll is re=ealed in this thrillinE horror spoo#
o# a documentary.
</plot>
<ratinE type>"thumbs">H</ratinE>
<ratinE type>"stars">5</ratinE>
</mo=ie>
</mo=ies>
X"O;
?>
,he simplicity o( impleJML appears most clearly Ehen one eFtracts a string or num#er (rom a
#asic JML document;
E'emplo *. Fetting 0plot1
<?php
include Mexample.phpM;
$xml > simplexml%load%strinE3$xmlstr9;
echo $xmlF>mo=ie)2/F>plot; // "&o this lanEuaEe. 4tMs liIe..."
?>
E'emplo 7. Accessing non(uni?ue elements in ,impleIM:
Lhen multiple instances o( an element eFist as children o( a single parent elementA normal iteration
techni/ues apply;
<?php
include Mexample.phpM;
$xml > simplexml%load%strinE3$xmlstr9;
/W Sor each <mo=ie> node, 8e echo a separate <plot>. W/
#oreach 3$xmlF>mo=ie as $mo=ie9 :
echo $mo=ieF>plot, M<br />M;
;
?>
E'emplo 8. )sing attributes
o (arA Ee have only covered the Eor" o( reading element names and their values; impleJML can
also access element attri#utes; Access attri#utes o( an element 'ust as you Eould elements o( an
array;
<?php
include Mexample.phpM;
$xml > simplexml%load%strinE3$xmlstr9;
/W ,ccess the <ratinE> nodes o# the #irst mo=ie.
W ?utput the ratinE scale, too. W/
#oreach 3$xmlF>mo=ie)2/F>ratinE as $ratinE9 :
s8itch33strinE9 $ratinE)MtypeM/9 : // -et attributes as element indices
case MthumbsM@
echo $ratinE, M thumbs upM;
breaI;
case MstarsM@
echo $ratinE, M starsM;
breaI;
;
;
?>
E'emplo 9. Comparing Elements and Attributes 3ith Te+t
,o compare an element or attri#ute Eith a string or pass it into a (unction that re/uires a stringA you
must cast it to a string using Lstr6nEM; OtherEiseA P&P treats the element as an o#'ect;
<?php
include Mexample.phpM;
$xml > simplexml%load%strinE3$xmlstr9;
i# 33strinE9 $xmlF>mo=ieF>title >> MH@ Zehind the arserM9 :
print M"y #a=orite mo=ie.M;
;
htmlentities33strinE9 $xmlF>mo=ieF>title9;
?>
E'emplo <. )sing Ipath
impleJML includes #uiltin Jpath support; ,o (ind all $character& elementsC
<?php
include Mexample.phpM;
$xml > simplexml%load%strinE3$xmlstr9;
#oreach 3$xmlF>xpath3M//characterM9 as $character9 :
echo $characterF>name, Mplayed by M, $characterF>actor, M<br />M;
;
?>
H//H serves as a Eildcard; ,o speci(y a#solute pathsA omit one o( the slashes;
E'emplo =. ,etting 5alues
Data in impleJML doesnHt have to #e constant; ,he o#'ect alloEs (or manipulation o( all o( its
elements;
<?php
include Mexample.phpM;
$xml > simplexml%load%strinE3$xmlstr9;
$xmlF>mo=ie)2/F>charactersF>character)2/F>name > M"iss RoderM;
echo $xmlF>asX"O39;
?>
,he a#ove code Eill output a neE JML documentA 'ust li"e the originalA eFcept that the neE JML
Eill change Ms; 5oder to Miss 5oder;
E'emplo N. KJM Interoperability
P&P has a mechanism to convert JML nodes #etEeen impleJML and DOM (ormats; ,his
eFample shoEs hoE one might change a DOM element to impleJML;
<?php
$dom > ne8 domLocument;
$domF>loadX"O3M<booIs><booI><title>blah</title></booI></booIs>M9;
i# 3!$dom9 :
echo MError 8hile parsinE the documentM;
exit;
;
$s > simplexml%import%dom3$dom9;
echo $sF>booI)2/F>title;
?>
Tabla de contenidos
impleJML+lement2_asJML 22 Return a Eell2(ormed JML string #ased on impleJML element
impleJML+lement2_attri#utes 22 .denti(ies an elementHs attri#utes
impleJML+lement2_children 22 Finds children o( given node
impleJML+lement2_Fpath 22 Runs Jpath /uery on JML data
simpleFmlZimportZdom 22 Get a S6mpleFM4Element o#'ect (rom a DOM node;
simpleFmlZloadZ(ile 22 .nterprets an JML (ile into an o#'ect
simpleFmlZloadZstring 22 .nterprets a string o( JML into an o#'ect
,impleIM:Element(GasIM:
>no version in(ormationA might #e only in 5$?
impleJML+lement2_asJML 22 Return a Eell2(ormed JML string #ased on impleJML element
Kescription
string ,impleIM:Element(GasIM: > void ?
,he asFM4 method (ormats the parent o#'ectHs data in JML version 1;3;
E'emplo !. Fet IM:
<?php
$strinE > <<<X"O
<a>
<b>
<c>text</c>
<c>stu##</c>
</b>
<d>
<c>code</c>
</d>
</a>
X"O;
$xml > simplexml%load%strinE3$strinE9;
echo $xmlF>asX"O39; // <?xml ... <a><b><c>text</c><c>stu##</c> ...
?>
asFM4 also Eor"s on Jpath resultsC
E'emplo *. )sing asIM:./ on Ipath results
<?php
// Rontinued #rom example X"O abo=e.
/W &earch #or <a><b><c> W/
$result > $xmlF>xpath3M/a/b/cM9;
8hile3list3 , $node9 > each3$result99 :
echo $nodeF>asX"O39; // <c>text</c> and <c>stu##</c>
;
?>
,impleIM:Element(Gattributes
>no version in(ormationA might #e only in 5$?
impleJML+lement2_attri#utes 22 .denti(ies an elementHs attri#utes
Kescription
impleJML+lement simple+ml>element(Gattributes > string data ?
,his (unction provides the attri#utes and values de(ined Eithin an Fml tag;
Nota- impleJML ha creado una regla de aWadir propiedades iterativas a la mayoria de
metodos; No se pueden ver usando 5ar>dump./ o cual/uier cosa /ue eFamine o#'etos;
E'emplo !. Interpret an IM: string
<?php
$strinE > <<<X"O
<a>
<#oo name>"one" Eame>"lonely">6</#oo>
</a>
X"O;
$xml > simplexml%load%strinE3$strinE9;
#oreach3$xmlF>#oo)2/F>attributes39 as $a >> $b9 :
echo $a,M>"M,$b,"V"Vn";
;
?>
,his script Eill displayC
name>"one"
Eame>"lonely"
,impleIM:Element(Gchildren
>no version in(ormationA might #e only in 5$?
impleJML+lement2_children 22 Finds children o( given node
Kescription
impleJML+lement simple+ml>element(Gchildren > void ?
,his method (inds the children o( the element o( Ehich it is a mem#er; ,he result (olloEs normal
iteration rules;
Nota- impleJML ha creado una regla de aWadir propiedades iterativas a la mayoria de
metodos; No se pueden ver usando 5ar>dump./ o cual/uier cosa /ue eFamine o#'etos;
E'emplo !. Tra5ersing a children'( pseudo(array
<?php
$xml > simplexml%load%strinE3
M<person>
<child role>"son">
<child role>"dauEhter"/>
</child>
<child role>"dauEhter">
<child role>"son">
<child role>"son"/>
</child>
</child>
</person>M9;
#oreach 3$xmlF>children39 as $second%Een9 :
echo M *he person beEot a M . $second%Een)MroleM/;
#oreach 3$second%EenF>children39 as $third%Een9 :
echo M 8ho beEot a M . $third%Een)MroleM/ . M;M;

#oreach 3$third%EenF>children39 as $#ourth%Een9 :
echo M and that M . $third%Een)MroleM/ .
M beEot a M . $#ourth%Een)MroleM/;
;
;
;
?>
,his script Eill outputC
*he person beEot a son 8ho beEot a dauEhter; *he person
beEot a dauEhter 8ho beEot a son; and that son beEot a son
,impleIM:Element(G+path
>no version in(ormationA might #e only in 5$?
impleJML+lement2_Fpath 22 Runs Jpath /uery on JML data
Kescription
array ,impleIM:Element(G+path > string path ?
,he 8path method searches the impleJML node (or children matching the Jpath path; .t alEays
returns an array o( impleJML+lement o#'ects;
E'emplo !. Ipath
<?php
$strinE > <<<X"O
<a>
<b>
<c>text</c>
<c>stu##</c>
</b>
<d>
<c>code</c>
</d>
</a>
X"O;
$xml > simplexml%load%strinE3$strinE9;
/W &earch #or <a><b><c> W/
$result > $xmlF>xpath3M/a/b/cM9;
8hile3list3 , $node9 > each3$result99 :
echo M/a/b/c@ M,$node,"Vn";
;
/W 'elati=e paths also 8orI... W/
$result > $xmlF>xpath3Mb/cM9;
8hile3list3 , $node9 > each3$result99 :
echo Mb/c@ M,$node,"Vn";
;
?>
,his script Eill displayC
/a/b/c@ text
/a/b/c@ stu##
b/c@ text
b/c@ stu##
Notice that the tEo results are e/ual;
simple+ml>import>dom
>P&P 4?
simpleFmlZimportZdom 22 Get a S6mpleFM4Element o#'ect (rom a DOM node;
Kescription
impleJML+lement simple+ml>import>dom > DOMNode node PA string classZnameQ ?
,his (unction ta"es a node o( a DOM document and ma"es it into a impleJML node; ,his neE
o#'ect can then #e used as a native impleJML element; .( any errors occurA it returns FALSE;
E'emplo !. Import KJM
<?php
$dom > ne8 domLocument;
$domF>loadX"O3M<booIs><booI><title>blah</title></booI></booIs>M9;
i# 3!$dom9 :
echo MError 8hile parsinE the documentM;
exit;
;
$s > simplexml%import%dom3$dom9;
echo $sF>booI)2/F>title; // blah
?>
ee also dom>import>simple+ml./;
simple+ml>load>file
>P&P 4?
simpleFmlZloadZ(ile 22 .nterprets an JML (ile into an o#'ect
Kescription
o#'ect simple+ml>load>file > string (ilename PA string classZname PA int optionsQQ ?
,his (unction Eill convert the Eell2(ormed JML document in the (ile speci(ied #y 96lename to an
ob'ect o( class impleJML+lement; .( any errors occur during (ile access or interpretationA the
(unction returns FALSE;
%ou may use the optional class_name parameter so that simple+ml>load>file./ Eill return an o#'ect
o( the speci(ied class; ,hat class should eFtend the impleJML+lement class;
ince P&P 4;1;3 and Li#Fml 0;K;3A you may also use the opt6ons parameter to speci(y additional
Li#Fml parameters;
E'emplo !. Interpret an IM: document
<?php
// *he #ile test.xml contains an X"O document 8ith a root element
// and at least an element /)root//title.
i# 3#ile%exists3Mtest.xmlM99 :
$xml > simplexml%load%#ile3Mtest.xmlM9;

=ar%dump3$xml9;
; else :
exit3MSailed to open test.xml.M9;
;
?>
,his script Eill displayA on successC
&impleX"OElement ?bject
3
)title/ >> Example *itle
...
9
At this pointA you can go a#out using '8ml=&t6tle and any other elements;
ee alsoC simple+ml>load>string./
simple+ml>load>string
>P&P 4?
simpleFmlZloadZstring 22 .nterprets a string o( JML into an o#'ect
Kescription
o#'ect simple+ml>load>string > string data PA string classZname PA int optionsQQ ?
,his (unction Eill ta"e the Eell2(ormed Fml string #ata and return an ob'ect o( class
impleJML+lement Eith properties containing the data held Eithin the Fml document; .( any errors
occurA it returns FALSE;
%ou may use the optional class_name parameter so that simple+ml>load>string./ Eill return an
o#'ect o( the speci(ied class; ,hat class should eFtend the impleJML+lement class;
ince P&P 4;1;3 and Li#Fml 0;K;3A you may also use the opt6ons parameter to speci(y additional
Li#Fml parameters;
E'emplo !. Interpret an IM: string
<?php
$strinE > <<<X"O
<?xml =ersion>M6.2M?>
<document>
<title>Sorty 7hat?</title>
<#rom>Aoe</#rom>
<to>Aane</to>
<body>
4 Ino8 thatMs the ans8er FF but 8hatMs the Question?
</body>
</document>
X"O;
$xml > simplexml%load%strinE3$strinE9;
=ar%dump3$xml9;
?>
,his script Eill displayC
&impleX"OElement ?bject
3
)title/ >> Sorty 7hat?
)#rom/ >> Aoe
)to/ >> Aane
)body/ >>
4 Ino8 thatMs the ans8er FF but 8hatMs the Question?
9
At this pointA you can go a#out using '8ml=&1o#? and such;
ee alsoC simple+ml>load>file./;
CIIC. ;unciones ,NMP
Para usar las (unciones NMP en @niF necesita instalar el pa/uete @5D NMP; +n LindoEs estas
(unciones est*n solamente disponi#les en N, y no en Lin94D9M;
.mportanteC Para usar el pa/uete @5D NMPA necesita de(inir
NOZI+ROL+NG,&Z5OMM@N.,% a 1 antes de compilarlo; Despues de con(igurar @5D NMPA
edite con(ig;h y #us/ue NOZI+ROL+NG,&Z5OMM@N.,%; Descomente la l)nea nde(ine;
De#er)a de verse como sigueC
Ude#ine .?%YE'?OE.-*H%R?""+.4*P 6
i ve (altas de segmentaci-n desconocidas en com#inaci-n con los comandos NMPA no siga las
siguientes instrucciones; i no desea recompilar @5D NMPA puede compilar P&P con la opci-n 22
ena#le2ucd2snmp2hac" la cual tra#a'ar* entorno a las mismas caracter)sticas;
Tabla de contenidos
snmpZgetZ/uic"Zprint 22 $a a #uscar el valor actual de la #i#lioteca @5D esta#leciendo /uic"Zprint
snmpZgetZvalueretrieval 22 Return the method hoE the NMP values Eill #e returned
snmpZreadZmi# 22 Reads and parses a M.B (ile into the active M.B tree
snmpZsetZenumZprint 22 Return all values that are enums Eith their enum value instead o( the raE
integer
snmpZsetZoidZnumericZprint 22 Return all o#'ects including their respective o#'ect id Eithin the
speci(ied one
snmpZsetZ/uic"Zprint 22 +sta#lece el valor de /uic"Zprint con el de la #i#lioteca @5D NMP;
snmpZsetZvalueretrieval 22 peci(y the method hoE the NMP values Eill #e returned
snmpget 22 $a a #uscar un o#'eto NMP
snmpgetneFt 22 Fetch a NMP o#'ect
snmprealEal" 22 Return all o#'ects including their respective o#'ect .D Eithin the speci(ied one
snmpset 22 $a a #uscar un o#'eto NMP
snmpEal" 22 Bus/ueda por un ar#ol de in(ormaci-n acerca de un entidad de red
snmpEal"oid 22 Bus/ueda por un ar#ol de in(ormaci-n acerca de un entidad de red
snmp>get>?uicB>print
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
snmpZgetZ/uic"Zprint 22 $a a #uscar el valor actual de la #i#lioteca @5D esta#leciendo /uic"Zprint
Kescripci"n
#oolean snmp>get>?uicB>print > void ?
Delvuele el valor actual almacenado en la #i#lioteca @5D para /uic"Zprint; /uic"Zprint est*
desactivado por de(ecto;
$QuicIprint > snmp%Eet%QuicI%print39;
La llamada a la (unci-n superior podr)a devolver FALSE si /uic"Zprint est* activoA y TRUE si
/uic"Zprint est* activo;
snmp>get>?uicB>print./ est* solamente disponi#le cuando estemos usando la #i#lioteca @5D
NMP; +sta (unci-n no est* disponi#le cuando estemos usando la #i#lioteca LindoEs NMP;
$erC snmp>get>?uicB>print./ para una descripci-n completa de lo /ue hace /uic"Zprint;
snmp>get>5alueretrie5al
>P&P 8 _^ 8;7;7A P&P 4?
snmpZgetZvalueretrieval 22 Return the method hoE the NMP values Eill #e returned
Kescription
int snmp>get>5alueretrie5al > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
snmp>read>mib
>P&P 4?
snmpZreadZmi# 22 Reads and parses a M.B (ile into the active M.B tree
Kescription
int snmp>read>mib > string (ilename ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
snmp>set>enum>print
>P&P 8 _^ 8;7;3A P&P 4?
snmpZsetZenumZprint 22 Return all values that are enums Eith their enum value instead o( the raE
integer
Kescription
void snmp>set>enum>print > int enumZprint ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
snmp>set>oid>numeric>print
>P&P 8 _^ 8;7;3A P&P 4?
snmpZsetZoidZnumericZprint 22 Return all o#'ects including their respective o#'ect id Eithin the
speci(ied one
Kescription
void snmp>set>oid>numeric>print > int oidZnumericZprint ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
snmp>set>?uicB>print
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
snmpZsetZ/uic"Zprint 22 +sta#lece el valor de /uic"Zprint con el de la #i#lioteca @5D NMP;
Kescripci"n
void snmp>set>?uicB>print > #oolean /uic"Zprint ?
+sta#lece el valor de /uic"Zprint con la #i#lioteca @5D NMP; 5uando esto est* esta#lecido >1?A la
#i#lioteca NMP devolver* valores H/uic" printedH; De esta manera s-lo el valor ser* impreso;
5uando /uic"Zprint no est* activada >por de(ecto? la #i#lioteca @5D NMP imprime in(ormaci-n
eFtra incluyendo el tipo del valor >p; +'; .PAddress o O.D?; AdicionalmenteA si /uic"Zprint no est*
activadoA la #i#lioteca imprime valores heFadecimales adicionales para todas las cadenas de 7 o
menos caracteres;
+l a'uste de /uic"Zprint es generalmente usado cuando usando la in(ormaci-n devuelta con
anterioridad se muestra;
snmp%set%QuicI%print329;
$a > snmpEet3"6CH.2.2.6", "public", ".6.<.G.6.C.6.C.C.6.K.6"9;
echo "$a<Z'>Vn";
snmp%set%QuicI%print369;
$a > snmpEet3"6CH.2.2.6", "public", ".6.<.G.6.C.6.C.C.6.K.6"9;
echo "$a<Z'>Vn";
+l primer valor impreso de#e de serC H,imetic"sC >3? 3C33C33;33HA donde /ic"Zprint se activaA solo se
imprimira H3C33C33;33H;
Por de(ecto la #i#lioteca @5D NMP devuelve valores detalladosA /uic"Zprint es usado para
devolver solamente el valor;
Las cadenas son mantenidas normalmente con comillas eFtraA esto ser* corregido en versiones
posteriores;
snmp>get>?uicB>print./ est* s-lo disponi#le cuando estemos usando la #i#lioteca @5D NMP;
+sta (unci-n no est* disponi#le cuando estemos usando la #i#lioteca LindoEs NMP;
snmp>set>5alueretrie5al
>P&P 8 _^ 8;7;7A P&P 4?
snmpZsetZvalueretrieval 22 peci(y the method hoE the NMP values Eill #e returned
Kescription
int snmp>set>5alueretrie5al > int method ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
snmpget
>P&P 7A P&P 8 A P&P 4?
snmpget 22 $a a #uscar un o#'eto NMP
Kescripci"n
string snmpget > string hostnameA string communityA string o#'ectZid PA int timeout PA int retriesQQ ?
Devuelve el valor de un o#'eto NMP en caso de eFito y FALSE en caso de error;
La (unci-n snmpget./ es usada para leer el valor de un o#'eto NMP especi(icado por el o1Uect_6#;
+l agente NMP es especi(icado por el hostname y la comunidad lectora es especi(icada por el
parametro commun6t?;
Ysyscontact ^ snmpget>=10:;3;3;1=A =pu#lic=A =system;ys5ontact;3=?

snmpgetne+t
>P&P 4?
snmpgetneFt 22 Fetch a NMP o#'ect
Kescription
string snmpgetne+t > string hostA string communityA string o#'ectZid PA int timeout PA int retriesQQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
snmpreal3alB
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
snmprealEal" 22 Return all o#'ects including their respective o#'ect .D Eithin the speci(ied one
Kescription
array snmpreal3alB > string hostA string communityA string o#'ectZid PA int timeout PA int retriesQQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
snmpset
>P&P 7_^ 7;3;10A P&P 8 A P&P 4?
snmpset 22 $a a #uscar un o#'eto NMP
Kescripci"n
string snmpset > string hostnameA string communityA string o#'ectZidA string typeA miFed value PA int
timeout PA int retriesQQ ?
+sta#lece el valor especi(icado para el o#'eto NMPA devolviendo TRUE en caso de eFito o FALSE
en caso de error;
La (unci-n snmpset./ es usada para esta#lecer el valor de un o#'eto NMP especi(icado por el
o1Uect_6#; +l agente NMP es espci(icado por el hostname y la comunidad lectora por el parametro
commun6t?;
snmp3alB
>P&P 7A P&P 8 A P&P 4?
snmpEal" 22 Bus/ueda por un ar#ol de in(ormaci-n acerca de un entidad de red
Kescripci"n
array snmp3alB > string hostnameA string communityA string o#'ectZid PA int timeout PA int retriesQQ ?
Devuelve una matriz de valores de o#'etos MNP comenzando por el ob'ect>id./ como ra)z y
FALSE en caso de error;
La (unci-n snmp3alB./ es usada para leer todos los valores de un agente NMP especi(icado por el
hostname; Commun6t? especi(ica la comunidad lectora para el agente; @n o1Uect_6# nulo se toma
como la ra)z del ar#ol de los o#'etos NMP y todos los o#'etos por de#a'o de ese ar#ol son
devueltos como una matriz; i o1Uect_6# es especi(icadoA todos los o#'etos NMP por de#a'o de
o1Uect_6# son devueltos;
$a > snmp8alI3"6CH.2.2.6", "public", ""9;
+ncima de una (unci-n de llamada podr)an devolverse todos los o#'etos NMP del agente NMP en
e'ecuci-n en el servidor local; @no puede pasar por todos los valores con un #ucle;
#or 3$i>2; $i<count3$a9; $i[[9 :
echo $a)$i/;
;
snmp3alBoid
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
snmpEal"oid 22 Bus/ueda por un ar#ol de in(ormaci-n acerca de un entidad de red
Kescripci"n
array snmp3alBoid > string hostnameA string communityA string o#'ectZid PA int timeout PA int
retriesQQ ?
Devuelve una matriz asociativa con los identi(icadores de los o#'etos y sus respectivos valores
comenzando por el o1Uect_6# como ra)z y FALSE en caso de error;
La (unci-n snmp3alBoid./ es usada para leer todos los identi(icadores de o#'etos y sus respectivos
valores de un agente NMP especi(icado por el nom#re del servidor; La lectura de commun6t?
especi(ica la comunidad para el agente; @n o1Uect_6# nulo es tomado como la ra)z del ar#ol de
o#'etos NMP y todos los o#'etos por de#a'o de este ar#ol son devueltos como una matriz; i
o1Uect_6# es especi(icadoA todos los o#'etos NMP in(eriores al o1Uect_6# son devueltos;
La eFistencia de snmp3alBoid./ y snmp3alB./ tiene razones historicas; Am#as (unciones son
proporcionadas para compati#ilidad hacia atr*s;
$a > snmp8alIoid3"6CH.2.2.6", "public", ""9;
La llamada a las (unciones superiores devuelve todos los o#'etos NMP del agente NMP en
e'ecuci-n en el servidor local; @no puede pasar por todos los valores con un #ucle;
#or 3reset3$a9; $i > Iey3$a9; next3$a99 :
echo "$i@ $a)$i/<br>Vn";
;
CIC. ,JAP ;unctions
Introducci"n
,he OAP eFtension can #e used to Erite OAP ervers and 5lients; .t supports su#sets o( OAP
1;1A OAP 1;0 and LDL 1;1 speci(ications;
Me?uirimientos
,his eFtension ma"es use o( the GNOM+ Fml li#rary; DoEnload and install this li#rary; %ou Eill
need at least li#Fml20;4;8;
Instalaci"n
,his eFtension is only availa#le i( P&P Eas con(igured Eith ==ena1le=soap;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. ,JAP Configuration Jptions
Name Kefault Changeable
soap;EsdlZcacheZena#le
d
=1= P&PZ.N.ZALL
soap;EsdlZcacheZdir =Dtmp= P&PZ.N.ZALL
soap;EsdlZcacheZttl MK833 P&PZ.N.ZALL
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
soap.7s#l_cache_ena1le# boolean
+na#les or disa#les the LDL caching (eature;
soap.7s#l_cache_#6r string
ets the directory name Ehere the OAP eFtension Eill put cache (iles;
soap.7s#l_cache_ttl int
ets the num#er o( seconds >time to live? that cached (iles Eill #e used instead the originals;
Clases predefinidas
,oapClient
Constructor
oap5lient2_ZZconstruct>? 2 constructs a neE oap5lient o#'ect
M%todos
oap5lient2_ZZcall>? 2 5alls a OAP (unction >deprecated?
oap5lient2_ZZdoRe/uest>? 2 Per(orms a OAP re/uest
oap5lient2_ZZgetFunctions>? 2 Returns list o( OAP (unctions
oap5lient2_ZZgetLastRe/uest>? 2 Returns last OAP re/uest
oap5lient2_ZZgetLastRe/uest&eaders>? 2 Returns last OAP re/uest headers
oap5lient2_ZZgetLastResponse>? 2 Returns last OAP response
oap5lient2_ZZgetLastResponse&eaders>? 2 Returns last OAP response headers
oap5lient2_ZZget,ypes>? 2 Returns list o( OAP types
oap5lient2_ZZset5oo"ie>? 2 ets the coo"ie that Eill #e sent Eith the OAP re/uest
oap5lient2_ZZsoap5all>? 2 5alls a OAP (unction
,oap;ault
Constructor
oapFault2_ZZconstruct>? 2 construct a neE oapFault o#'ect
,oapHeader
,oapHeader is a special loE2level class (or passing or returning OAP headers; .tHs 'ust a data
holder and it does not have any special methods eFcept its constructor; .t can #e used in the
oap5lient2_ZZsoap5all>? method to pass a OAP header or in a OAP header handler to return the
header in a OAP response;
Constructor
oap&eader2_ZZconstruct>? 2 construct a neE oap&eader o#'ect
,oapParam
,oapParam is a special loE2level class (or naming parameters and returning values in non=ISD4
mode; .tHs 'ust a data holder and it does not have any special methods eFcept its constructor;
Constructor
oapParam2_ZZconstruct>? 2 construct a neE oapParam o#'ect
,oap,er5er
Constructor
oaperver2_ZZconstruct>? 2 construct a neE oaperver o#'ect
M%todos
oaperver2_addFunction>? 2 Adds one or several (unctions those Eill handle OAP
re/uests
oaperver2_(ault>? 2
oaperver2_getFunctions>? 2 Returns list o( de(ined (unctions
oaperver2_handle>? 2 &andles a OAP re/uest
oaperver2_set5lass>? 2 ets class Ehich Eill handle OAP re/uests
oaperver2_setPersistence>? 2 ets persistence mode o( oaperver
,oapCar
,oapCar is a special loE2level class (or encoding parameters and returning values in non=ISD4
mode; .tHs 'ust a data holder and does not have any special methods eFcept the constructor; .tHs use(ul
Ehen you Eant to set the type property in OAP re/uest or response;
Constructor
oap$ar2_ZZconstruct>? 2 construct a neE oap$ar o#'ect
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
SOAP_)_) >integer?
SOAP_)_* >integer?
SOAP_PERSISTENCE_SESSION >integer?
SOAP_PERSISTENCE_RE.UEST >integer?
SOAP_FUNCTIONS_ALL >integer?
SOAP_ENCODED >integer?
SOAP_LITERAL >integer?
SOAP_RPC >integer?
SOAP_DOCUMENT >integer?
SOAP_ACTOR_NE%T >integer?
SOAP_ACTOR_NONE >integer?
SOAP_ACTOR_UNLIMATERECEI$ER >integer?
SOAP_COMPRESSION_ACCEPT >integer?
SOAP_COMPRESSION_#/IP >integer?
SOAP_COMPRESSION_DEFLATE >integer?
UN&NO"N_TYPE >integer?
%SD_STRIN# >integer?
%SD_(OOLEAN >integer?
%SD_DECIMAL >integer?
%SD_FLOAT >integer?
%SD_DOU(LE >integer?
%SD_DURATION >integer?
%SD_DATETIME >integer?
%SD_TIME >integer?
%SD_DATE >integer?
%SD_#YEARMONTH >integer?
%SD_#YEAR >integer?
%SD_#MONTHDAY >integer?
%SD_#DAY >integer?
%SD_#MONTH >integer?
%SD_HE%(INARY >integer?
%SD_(ASE1+(INARY >integer?
%SD_ANYURI >integer?
%SD_.NAME >integer?
%SD_NOTATION >integer?
%SD_NORMALI/EDSTRIN# >integer?
%SD_TO&EN >integer?
%SD_LAN#UA#E >integer?
%SD_NMTO&EN >integer?
%SD_NAME >integer?
%SD_NCNAME >integer?
%SD_ID >integer?
%SD_IDREF >integer?
%SD_IDREFS >integer?
%SD_ENTITY >integer?
%SD_ENTITIES >integer?
%SD_INTE#ER >integer?
%SD_NONPOSITI$EINTE#ER >integer?
%SD_NE#ATI$EINTE#ER >integer?
%SD_LON# >integer?
%SD_INT >integer?
%SD_SHORT >integer?
%SD_(YTE >integer?
%SD_NONNE#ATI$EINTE#ER >integer?
%SD_UNSI#NEDLON# >integer?
%SD_UNSI#NEDINT >integer?
%SD_UNSI#NEDSHORT >integer?
%SD_UNSI#NED(YTE >integer?
%SD_POSITI$EINTE#ER >integer?
%SD_NMTO&ENS >integer?
%SD_ANYTYPE >integer?
SOAP_ENC_O('ECT >integer?
SOAP_ENC_ARRAY >integer?
%SD_)===_TIMEINSTANT >integer?
%SD_NAMESPACE >string?
%SD_)===_NAMESPACE >string?
Tabla de contenidos
isZsoapZ(ault 22 5hec"s i( OAP call Eas (ailed
oap5lient2_ZZcall>? 22 5alls a OAP (unction >deprecated?
oap5lient2_ZZconstruct>? 22 oap5lient constructor
oap5lient2_ZZdoRe/uest>? 22 Per(orms a OAP re/uest
oap5lient2_ZZgetFunctions>? 22 Returns list o( OAP (unctions
oap5lient2_ZZgetLastRe/uest>? 22 Returns last OAP re/uest
oap5lient2_ZZgetLastRe/uest&eaders>? 22 Returns last OAP re/uest headers
oap5lient2_ZZgetLastResponse>? 22 Returns last OAP response;
oap5lient2_ZZgetLastResponse&eaders>? 22 Returns last OAP response headers;
oap5lient2_ZZget,ypes>? 22 Returns list o( OAP types
oap5lient2_ZZset5oo"ie>? 22 ets the coo"ie that Eill #e sent Eith the OAP re/uest
oap5lient2_ZZsoap5all>? 22 5alls a OAP (unction
oapFault2_ZZconstruct>? 22 oapFault constructor
oap&eader2_ZZconstruct>? 22 oap&eader constructor
oapParam2_ZZconstruct>? 22 oapParam constructor
oaperver2_addFunction>? 22 Adds one or several (unctions those Eill handle OAP re/uests
oaperver2_ZZconstruct>? 22 oaperver constructor
oaperver2_(ault>? 22
oaperver2_getFunctions>? 22 Returns list o( de(ined (unctions
oaperver2_handle>? 22 &andles a OAP re/uest
oaperver2_set5lass>? 22 ets class Ehich Eill handle OAP re/uests
oaperver2_setPersistence>? 22 ets persistence mode o( oaperver
oap$ar2_ZZconstruct>? 22 oap$ar constructor
useZsoapZerrorZhandler>? 22
is>soap>fault
>P&P 4?
isZsoapZ(ault 22 5hec"s i( OAP call Eas (ailed
Kescripci"n
#ool is>soap>fault > miFed o#' ?
,his (unction is use(ul Ehen you li"e to chec" i( the OAP call (ailedA #ut donHt li"e to use
eFceptions; ,o use it you must create a ,oapClient o#'ect Eith the e8cept6ons option set to zero or
FALSE; .n this caseA the OAP method Eill return a special ,oap;ault o#'ect Ehich encapsulates
the (ault details >(aultcodeA (aultstringA (aultactor and (aultdetails?;
.( e8cept6ons is not set then OAP call Eill throE an eFception on error; is>soap>fault./ chec"s i(
the given parameter is a ,oap;ault o#'ect;
:ista de parmetros
o1U
,he tested o#'ect;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. is>soap>fault./ e+ample
<?php
$client > ne8 &oapRlient3"some.8sdl", array3MexceptionsM >> 299;
$result > $clientF>&omeSunction39;
i# 3is%soap%#ault3$result99 :
triEEer%error3"&?, Sault@ 3#aultcode@ :$resultF>#aultcode;, #aultstrinE@ :$resultF>#aultstrinE;9", E%E''?'9;
;
?>
E'emplo *. ,JAPUs standard method for error reporting is e+ceptions
<?php
try :
$client > ne8 &oapRlient3"some.8sdl"9;
$result > $clientF>&omeSunction3/W ... W/9;
; catch 3&oapSault $#ault9 :
triEEer%error3"&?, Sault@ 3#aultcode@ :$#aultF>#aultcode;, #aultstrinE@ :$#aultF>#aultstrinE;9", E%E''?'9;
;
?>
Cer tambi%n
oap5lient2_ZZconstruct>?
oapFault2_ZZconstruct>?
,oapClient(G>>call./
oap5lient2_ZZcall>? 22 5alls a OAP (unction >deprecated?
Kescripci"n
class ,oapClient \
miFed >>call > string (unctionZname PA array arguments PA array options PA array inputZheaders PA
array outputZheadersQQQQ ?
]
,his method is deprecated; @se oap5lient2_ZZsoap5all>? instead o( it;
,oapClient(G>>construct./
oap5lient2_ZZconstruct>? 22 oap5lient constructor
Kescripci"n
class ,oapClient \
>>construct > miFed Esdl PA array optionsQ ?
]
,his constructor creates ,oapClient o#'ects in ISD4 or non=ISD4 mode;
:ista de parmetros
7s#l
@R. o( the ISD4 (ile or NULL i( Eor"ing in non=ISD4 mode;
opt6ons
An array o( options; .( Eor"ing in LDL modeA this parameter is optional; .( Eor"ing in non2
LDL modeA you must set the locat6on and ur6 optionsA Ehere locat6on is the @RL to re/uest
and ur6 is the target namespace o( the OAP service;
,he st?le and use options only Eor" in non2LDL mode; .n LDL modeA they come (rom
the LDL (ile;
,he soap_ers6on option speci(ies Ehether to use OAP 1;1A or OAP 1;0 client;
For &,,P authenticationA you may use the loE6n and pass7or# options; For ma"ing an &,,P
connection through a proFy serverA use the options pro8?_hostA pro8?_portA pro8?_loE6n and
pro8?_pass7or#; For &,,P client certi(icate authentication use local_cert and passphrase
options;
,he compress6on option alloEs to use compression o( &,,P OAP re/uests and responses;
,he enco#6nE option de(ines internal character encoding; ,his option does not change the
enco(ing o( OAP re/uests >it is alEays ut(2M?A #ut converts strings into it;
,he classmap option can #e used to map some LDL types to P&P classes; ,his option must
#e an array Eith LDL types as "eys and names o( P&P classes as values;
,he trace and e8cept6ons options are use(ul (or de#uging purpose;
E'emplos
E'emplo !. ,oapClient e+amples
<?php
$client > ne8 &oapRlient3"some.8sdl"9;
$client > ne8 &oapRlient3"some.8sdl", array3Msoap%=ersionM >> &?,%6%C99;
$client > ne8 &oapRlient3"some.8sdl", array3MloEinM >> "some%name",
Mpass8ordM >> "some%pass8ord"99;
$client > ne8 &oapRlient3"some.8sdl", array3Mproxy%hostM >> "localhost",
Mproxy%portM >> J2J299;
$client > ne8 &oapRlient3"some.8sdl", array3Mproxy%hostM >> "localhost",
Mproxy%portM >> J2J2,
Mproxy%loEinM >> "some%name",
Mproxy%pass8ordM >> "some%pass8ord"99;
$client > ne8 &oapRlient3"some.8sdl", array3Mlocal%certM >> "cert%Iey.pem"99;
$client > ne8 &oapRlient3null, array3MlocationM >> "http@//localhost/soap.php",
MuriM >> "http@//testFuri/"99;
$client > ne8 &oapRlient3null, array3MlocationM >> "http@//localhost/soap.php",
MuriM >> "http@//testFuri/",
MstyleM >> &?,%L?R+"E.*,
MuseM >> &?,%O4*E',O99;
$client > ne8 &oapRlient3"some.8sdl",
array3McompressionM >> &?,%R?"'E&&4?.%,RRE* T &?,%R?"'E&&4?.%-Y499;
$ser=er > ne8 &oapRlient3"some.8sdl", array3MencodinEM>>M4&?FJJ5KF6M99;
class "yZooI :
public $title;
public $author;
;
$ser=er > ne8 &oapRlient3"booIs.8sdl", array3MclassmapM >> array3MbooIM >> ""yZooI"999;
?>
,oapClient(G>>doMe?uest./
oap5lient2_ZZdoRe/uest>? 22 Per(orms a OAP re/uest
Kescripci"n
class ,oapClient \
string >>doMe?uest > string re/uestA string locationA string actionA int version ?
]
Per(orms OAP re/uest over &,,P;
,his method can #e overridden in su#classes to implement di((erent transport layersA per(orm
additional JML processing or other purpose;
:ista de parmetros
re@uest
,he JML OAP re/uest;
locat6on
,he @RL to re/uest;
act6on
,he OAP action;
act6on
,he OAP version;
Calores retornados
,he JML OAP response;
E'emplos
E'emplo !. ,ome e+amples
<?php
#unction ,dd3$x,$y9 :
return $x[$y;
;
class Oocal&oapRlient extends &oapRlient :
#unction %%construct3$8sdl, $options9 :
parent@@%%construct3$8sdl, $options9;
$thisF>ser=er > ne8 &oap&er=er3$8sdl, $options9;
$thisF>ser=erF>addSunction3M,ddM9;
;
#unction %%do'eQuest3$reQuest, $location, $action, $=ersion9 :
ob%start39;
$thisF>ser=erF>handle3$reQuest9;
$response > ob%Eet%contents39;
ob%end%clean39;
return $response;
;
;
$x > ne8 Oocal&oapRlient3.+OO,array3MlocationM>>Mtest@//M,
MuriM>>Mhttp@//testuri.orEM99;
=ar%dump3$xF>,dd3<,199;
?>
,oapClient(G>>get;unctions./
oap5lient2_ZZgetFunctions>? 22 Returns list o( OAP (unctions
Kescripci"n
class ,oapClient \
array >>get;unctions > void ?
]
Returns the list o( OAP (unctions;
Nota- ,his (unction Eor"s only in LDL mode;
Calores retornados
,he list o( OAP (unctions;
E'emplos
E'emplo !. ,oapClient(G>>get;unctions./ e+ample
<?php
$client > &oapRlient3"some.8sdl"9;
=ar%dump3$clientF>%%EetSunctions399;
?>
Cer tambi%n
oap5lient2_ZZconstruct>?
,oapClient(G>>get:astMe?uest./
oap5lient2_ZZgetLastRe/uest>? 22 Returns last OAP re/uest
Kescripci"n
class ,oapClient \
string >>get:astMe?uest > void ?
]
Nota- ,his method Eor"s only i( the ,oapClient o#'ect Eas created Eith the trace
option;
Calores retornados
,he last OAP re/uest;
E'emplos
E'emplo !. ,oapClient(G>>get:astMe?uest./ e+ample
<?php
$client > &oapRlient3"some.8sdl", array3MtraceM >> 699;
$result > $clientF>&omeSunction39;
echo "'EN+E&*@Vn" . $clientF>%%EetOast'eQuest39 . "Vn";
?>
Cer tambi%n
oap5lient2_ZZconstruct>?
oap5lient2_ZZgetLastRe/uest&eaders>?
oap5lient2_ZZgetLastResponse>?
oap5lient2_ZZgetLastResponse&eaders>?
,oapClient(G>>get:astMe?uestHeaders./
oap5lient2_ZZgetLastRe/uest&eaders>? 22 Returns last OAP re/uest headers
Kescripci"n
class ,oapClient \
string >>get:astMe?uestHeaders > void ?
]
Nota- ,his method Eor"s only i( the ,oapClient o#'ect Eas created Eith the trace
option;
Calores retornados
,he last OAP re/uest headers;
Cer tambi%n
oap5lient2_ZZconstruct>?
oap5lient2_ZZgetLastRe/uest>?
oap5lient2_ZZgetLastResponse>?
oap5lient2_ZZgetLastResponse&eaders>?
,oapClient(G>>get:astMesponse./
oap5lient2_ZZgetLastResponse>? 22 Returns last OAP response;
Kescripci"n
class ,oapClient \
string >>get:astMesponse > void ?
]
Nota- ,his method Eor"s only i( the ,oapClient o#'ect Eas created Eith the trace
option;
Calores retornados
,he last OAP response;
E'emplos
E'emplo !. ,oapClient(G>>get:astMesponse./ e+ample
<?php
$client > &oapRlient3"some.8sdl", array3MtraceM >> 699;
$result > $clientF>&omeSunction39;
echo "'E&?.&E@Vn" . $clientF>%%EetOast'esponse39 . "Vn";
?>
Cer tambi%n
oap5lient2_ZZconstruct>?
oap5lient2_ZZgetLastResponse&eaders>?
oap5lient2_ZZgetLastRe/uest>?
oap5lient2_ZZgetLastRe/uest&eaders>?
,oapClient(G>>get:astMesponseHeaders./
oap5lient2_ZZgetLastResponse&eaders>? 22 Returns last OAP response headers;
Kescripci"n
class ,oapClient \
string >>get:astMesponseHeaders > void ?
]
Nota- ,his method Eor"s only i( the ,oapClient o#'ect Eas created Eith the trace
option;
Calores retornados
,he last OAP response headers;
Cer tambi%n
oap5lient2_ZZconstruct>?
oap5lient2_ZZgetLastResponse>?
oap5lient2_ZZgetLastRe/uest>?
oap5lient2_ZZgetLastRe/uest&eaders>?
,oapClient(G>>getTypes./
oap5lient2_ZZget,ypes>? 22 Returns list o( OAP types
Kescripci"n
class ,oapClient \
array >>getTypes > void ?
]
,his (unction Eor"s only in LDL mode;
Calores retornados
,he list o( OAP types;
E'emplos
E'emplo !. ,oapClient(G>>getTypes./ e+ample
<?php
$client > ne8 &oapRlient3"some.8sdl"9;
=ar%dump3$clientF>%%Eet*ypes399;
?>
Cer tambi%n
oap5lient2_ZZconstruct>?
,oapClient(G>>setCooBie./
oap5lient2_ZZset5oo"ie>? 22 ets the coo"ie that Eill #e sent Eith the OAP re/uest
Kescripci"n
class ,oapClient \
void >>setCooBie > string name PA string valueQ ?
]
De(ines a coo"ie to #e sent along Eith the OAP re/uests;
Nota- 5alling this method Eill a((ect all (olloEing calls to ,oapClient methods;
:ista de parmetros
name
,he name o( the coo"ie;
alue
,he value o( the coo"ie; .( not speci(iedA the coo"ie Eill #e deleted;
Calores retornados
No value is returned;
,oapClient(G>>soapCall./
oap5lient2_ZZsoap5all>? 22 5alls a OAP (unction
Kescripci"n
class ,oapClient \
miFed >>soapCall > string (unctionZname PA array arguments PA array options PA array inputZheaders
PA array outputZheadersQQQQ ?
]
,his is a loE level AP. (unction that is used to ma"e a OAP call; @suallyA in LDL modeA you can
simply call OAP (unctions as ,oapClient methods; ,his method use(ul in non2LDL mode Ehen
soapact6on is un"noEnA ur6 di((ers (rom the de(ault or Ehen sending andDor receiving OAP
&eaders;
On errorA a call to a OAP (unction can cause P&P to throE eFceptions or return a ,oap;ault
o#'ect i( eFceptions are disa#led; ,o chec" i( the (unction call (ailed to catch the oapFault
eFceptionsA chec" the result Eith is>soap>fault./;
Calores retornados
OAP (unctions may return oneA or multiple values; .( only one value is returned #y the OAP
(unctionA the return value o( __soapCall Eill #e a simple value >e;g; an integerA a stringA etc?; .(
multiple values are returnedA __soapCall Eill return an associative array o( named output
parameters;
E'emplos
E'emplo !. ,oapClient(G>>soapCall./ E+amples
<?php
$client > ne8 &oapRlient3"some.8sdl"9;
$clientF>&omeSunction3$a, $b, $c9;
$clientF>%%soapRall3"&omeSunction", array3$a, $b, $c99;
$clientF>%%soapRall3"&omeSunction", array3$a, $b, $c9, .+OO,
ne8 &oapHeader39, $output%headers9;
$client > ne8 &oapRlient3null, array3MlocationM >> "http@//localhost/soap.php",
MuriM >> "http@//testFuri/"99;
$clientF>&omeSunction3$a, $b, $c9;
$clientF>%%soapRall3"&omeSunction", array3$a, $b, $c99;
$clientF>%%soapRall3"&omeSunction", array3$a, $b, $c9,
array3MsoapactionM >> Msome%actionM,
MuriM >> Msome%uriM99;
?>
Cer tambi%n
oap5lient2_ZZconstruct>?
oapParam2_ZZconstruct>?
oap$ar2_ZZconstruct>?
oap&eader2_ZZconstruct>?
oapFault2_ZZconstruct>?
is>soap>fault./
,oap;ault(G>>construct./
oapFault2_ZZconstruct>? 22 oapFault constructor
Kescripci"n
class ,oap;ault \
>>construct > string (aultcodeA string (aultstring PA string (aultactor PA miFed detail PA string
(aultname PA oap&eader header(aultQQQQ ?
]
,his class is use(ul Ehen you Eould li"e to send OAP (ault responses (rom the P&P handler;
9aultco#eA 9aultstr6nEA 9aultactor and #eta6ls are standard elements o( OAP FaultX
:ista de parmetros
9aultco#e
,he error code o( the ,oap;ault;
9aultstr6nE
,he error message o( the ,oap;ault;
9aultactor
A string identi(ying the actor that caused the error;
#eta6l
9aultname
5an #e used to select the proper (ault encoding (rom LDL;
hea#er9ault
5an #e used during OAP header handling to report an error in the response header;
E'emplos
E'emplo !. ,ome e+amples
<?php
#unction test3$x9
:
return ne8 &oapSault3"&er=er", "&ome error messaEe"9;
;
$ser=er > ne8 &oap&er=er3null, array3MuriM >> "http@//testFuri/"99;
$ser=erF>addSunction3"test"9;
$ser=erF>handle39;
?>
.t is possi#le to use P&P eFception mechanism to throE OAP Fault;
E'emplo *. ,ome e+amples
<?php
#unction test3$x9
:
thro8 ne8 &oapSault3"&er=er", "&ome error messaEe"9;
;
$ser=er > ne8 &oap&er=er3null, array3MuriM >> "http@//testFuri/"99;
$ser=erF>addSunction3"test"9;
$ser=erF>handle39;
?>
Cer tambi%n
oap5lient2_ZZconstruct>?
oap5lient2_ZZsoap5all>?
oap$ar2_ZZconstruct>?
oapParam2_ZZconstruct>?
oapFault2_ZZconstruct>?
is>soap>fault./
,oapHeader(G>>construct./
oap&eader2_ZZconstruct>? 22 oap&eader constructor
Kescripci"n
class ,oapHeader \
>>construct > string namespaceA string name PA miFed data PA #ool must@nderstand PA miFed actorQQQ
?
]
5onstructs a neE ,oapHeader o#'ect;
:ista de parmetros
namespace
,he namespace o( the OAP header element;
name
,he name o( the OAP header element;
#ata
A OAP headerHs content; .t can #e a P&P value or a ,oapCar o#'ect;
mustUn#erstan#
$alue o( the mustUn#erstan# attri#ute o( the OAP header element;
actor
$alue o( the actor attri#ute o( the OAP header element;
E'emplos
E'emplo !. ,ome e+amples
<?php
$client > ne8 &oapRlient3null, array3MlocationM >> "http@//localhost/soap.php",
MuriM >> "http@//testFuri/"99;
$clientF>%%call3"echo(oid", null, null,
ne8 &oapHeader3Mhttp@//soapinterop.orE/echoheader/M,
Mecho"e&trinE'eQuestM,
Mhello 8orldM99;
?>
Cer tambi%n
oap5lient2_ZZsoap5all>?
oap$ar2_ZZconstruct>?
oapParam2_ZZconstruct>?
,oapParam(G>>construct./
oapParam2_ZZconstruct>? 22 oapParam constructor
Kescripci"n
class ,oapParam \
>>construct > miFed dataA string name ?
]
5onstructs a neE ,oapParam o#'ect;
:ista de parmetros
#ata
,he data to pass or return; %ou can pass this parameter directly as P&P valueA #ut in this case
it Eill #e named as paramN and the OAP ervice may not understand it;
name
,he parameter name;
E'emplos
E'emplo !. ,ome e+amples
<?php
$client > ne8 &oapRlient3null,array3MlocationM >> "http@//localhost/soap.php",
MuriM >> "http@//testFuri/"99;
$clientF>&omeSunction3ne8 &oaparam3$a, "a"9,
ne8 &oaparam3$b, "b"9,
ne8 &oaparam3$c, "c"99;
?>
Cer tambi%n
oap5lient2_ZZsoap5all>?
oap$ar2_ZZconstruct>?
,oap,er5er(Gadd;unction./
oaperver2_addFunction>? 22 Adds one or several (unctions those Eill handle OAP re/uests
Kescripci"n
class ,oap,er5er \
void add;unction > miFed (unctions ?
]
+Fports one or more (unctions (or remote clients;
:ista de parmetros
9unct6ons
,o eFport one (unctionA pass the (unction name into this parameter as a string;
,o eFport several (unctionsA pass an array o( (unction names;
,o eFport all the (unctionsA pass a special constant SOAP_FUNCTIONS_ALL;
Nota- 9unct6ons must receive all input arguments in the same order as de(ined in
the LDL (ile >,hey should not receive any output parameters as arguments? and
return one or more values; ,o return several values they must return an array Eith
named output parameters;
Calores retornados
No value is returned;
E'emplos
E'emplo !. ,ome e+amples
<?php
#unction echo&trinE3$input&trinE9
:
return $input&trinE;
;
$ser=erF>addSunction3"echo&trinE"9;
#unction echo*8o&trinEs3$input&trinE6, $input&trinEC9
:
return array3"output&trinE6" >> $input&trinE6,
"output&trinEC" >> $input&trinEC9;
;
$ser=erF>addSunction3array3"echo&trinE", "echo*8o&trinEs"99;
$ser=erF>addSunction3&?,%S+.R*4?.&%,OO9;
?>
Cer tambi%n
oaperver2_ZZconstruct>?
oaperver2_set5lass>?
,oap,er5er(G>>construct./
oaperver2_ZZconstruct>? 22 oaperver constructor
Kescripci"n
class ,oap,er5er \
>>construct > miFed Esdl PA array optionsQ ?
]
,his constructor alloEs the creation o( ,oap,er5er o#'ects in LDL or non2LDL mode;
:ista de parmetros
7s#l
.( you Eant the LDL modeA you must set this to the @R. o( a LDL (ile; .n the other caseA
you must set this to NULL and set the ur6 option;
opt6ons
AlloE setting a de(ault OAP version >soap_ers6on?A internal character encoding >enco#6nE?A
and actor @R. >actor?; ,he classmap option can #e used to map some LDL types to P&P
classes; ,his option must #e an array Eith LDL types as "eys and names o( P&P classes as
values;
E'emplos
E'emplo !. ,ome e+amples
<?php
$ser=er > ne8 &oap&er=er3"some.8sdl"9;
$ser=er > ne8 &oap&er=er3"some.8sdl", array3Msoap%=ersionM >> &?,%6%C99;
$ser=er > ne8 &oap&er=er3"some.8sdl", array3MactorM >> "http@//example.orE/tsFtests/R"99;
$ser=er > ne8 &oap&er=er3"some.8sdl", array3MencodinEM>>M4&?FJJ5KF6M99;
$ser=er > ne8 &oap&er=er3null, array3MuriM >> "http@//testFuri/"99;
class "yZooI :
public $title;
public $author;
;
$ser=er > ne8 &oap&er=er3"booIs.8sdl", array3MclassmapM >> array3MbooIM >> ""yZooI"999;
?>
,oap,er5er(Gfault./
oaperver2_(ault>? 22
Kescripci"n
class ,oap,er5er \
void fault > string codeA string string PA string actor PA miFed details PA string nameQQQ ?
]
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Cer tambi%n
oapFault2_ZZconstruct>?
,oap,er5er(Gget;unctions./
oaperver2_getFunctions>? 22 Returns list o( de(ined (unctions
Kescripci"n
class ,oap,er5er \
array get;unctions > void ?
]
,his method returns the list o( all (unctions added #y oaperver2_addFunction>? or oaperver2
_set5lass>?;
Calores retornados
,he list o( all (unctions;
E'emplos
E'emplo !. ,ome e+amples
<?php
$ser=er > ne8 &oap&er=er3.+OO, array3"uri" >> "http@//testFuri"99;
$ser=erF>addSunction3&?,%S+.R*4?.&%,OO9;
i# 3$%&E'(E')"'EN+E&*%"E*H?L"/ >> "?&*"9 :
$ser=erF>handle39;
; else :
echo "*his &?, ser=er can handle #ollo8inE #unctions@ ";
$#unctions > $ser=erF>EetSunctions39;
#oreach3$#unctions as $#unc9 :
echo $#unc . "Vn";
;
;
?>
Cer tambi%n
oaperver2_ZZconstruct>?
oaperver2_addFunction>?
oaperver2_set5lass>?
,oap,er5er(Ghandle./
oaperver2_handle>? 22 &andles a OAP re/uest
Kescripci"n
class ,oap,er5er \
void handle > Pstring soapZre/uestQ ?
]
Processes a OAP re/uestA calls necessary (unctionsA and sends a response #ac";
:ista de parmetros
soap_re@uest
,he OAP re/uest; .( this argument is omittedA the re/uest is supposed to #e in the
'!TT+_R,I_+OST_D,T, P&P varia#le;
Calores retornados
No value is returned;
E'emplos
E'emplo !. ,ome e+amples
<?php
#unction test3$x9
:
return $x;
;
$ser=er > ne8 &oap&er=er3null, array3MuriM >> "http@//testFuri/"99;
$ser=erF>addSunction3"test"9;
$ser=erF>handle39;
?>
Cer tambi%n
oaperver2_ZZconstruct>?
,oap,er5er(GsetClass./
oaperver2_set5lass>? 22 ets class Ehich Eill handle OAP re/uests
Kescripci"n
class ,oap,er5er \
void setClass > string classZname PA miFed argsQ ?
]
+Fports all methods (rom speci(ied class;
,he o#'ect can #e made persistent across re/uest (or a given P&P session Eith the oaperver2
_setPersistence>? method;
:ista de parmetros
class_name
,he name o( the eFported class;
arEs
,his optional parameter Eill #e passed to the de(ault class constructor during o#'ect creation;
Calores retornados
No value is returned;
E'emplos
E'emplo !. ,ome e+amples
<?php
class #oo :
#unction #oo39
:
;
;
$ser=erF>setRlass3"#oo"9;
class bar :
#unction bar3$x, $y9
:
;
;
$ser=erF>setRlass3"bar", $arE6, $arEC9;
?>
Cer tambi%n
oaperver2_ZZconstruct>?
oaperver2_addFunction>?
oaperver2_setPersistence>?
,oap,er5er(GsetPersistence./
oaperver2_setPersistence>? 22 ets persistence mode o( oaperver
Kescripci"n
class ,oap,er5er \
void setPersistence > int mode ?
]
,his (unction alloEs saving data #etEeen re/uests in a P&P session; .t Eor"s only Eith a server that
eFports (unctions (rom a class Eith oaperver2_set5lass>?;
:ista de parmetros
mo#e
One o( the SO,+_+ERS0STENCE_FFF constants;
Calores retornados
No value is returned;
E'emplos
E'emplo !. ,ome e+amples
<?php
$ser=erF>setersistence3&?,%E'&4&*E.RE%&E&&4?.9;
$ser=erF>setersistence3&?,%E'&4&*E.RE%'EN+E&*9;
?>
Cer tambi%n
oaperver2_ZZconstruct>?
oaperver2_set5lass>?
,oapCar(G>>construct./
oap$ar2_ZZconstruct>? 22 oap$ar constructor
Kescripci"n
class ,oapCar \
>>construct > miFed dataA int encoding PA string typeZname PA string typeZnamespace PA string
nodeZname PA string nodeZnamespaceQQQQ ?
]
5onstructs a neE ,oapCar o#'ect;
:ista de parmetros
#ata
,he data to pass or return;
enco#6nE
,he encoding .DA one o( the FSD_... constants;
t?pe_name
,he type name;
t?pe_namespace
,he type namespace;
no#e_name
,he JML node name;
no#e_namespace
,he JML node namespace;
E'emplos
E'emplo !. ,ome e+amples
<?php
class &?,&truct :
#unction &?,&truct3$s, $i, $#9
:
$thisF>=ar&trinE > $s;
$thisF>=ar4nt > $i;
$thisF>=arSloat > $#;
;
;
$client > ne8 &oapRlient3null, array3MlocationM >> "http@//localhost/soap.php",
MuriM >> "http@//testFuri/"99;
$struct > ne8 &?,&truct3MarEM, <1, <C5.<C59;
$soapstruct > ne8 &oap(ar3$struct, &?,%E.R%?ZAER*, "&?,&truct", "http@//soapinterop.orE/xsd"9;
$clientF>echo&truct3ne8 &oaparam3$soapstruct, "input&truct"99;
?>
Cer tambi%n
oap5lient2_ZZsoap5all>?
oapParam2_ZZconstruct>?
use>soap>error>handler./
>no version in(ormationA might #e only in 5$?
useZsoapZerrorZhandler>? 22
Kescripci"n
void use>soap>error>handler > P#ool handlerQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
CICI. ;unciones de ,ocBet
Introducci"n
La eFtensi-n de soc"ets implementa una inter(az de #a'o nivel con las (unciones de comunicaci-n
de soc"etsA #asadas en los populares soc"ets BDA o(reciendo la posi#ilidad de actuar como un
servidor de soc"etsA as) como cliente;
Para una inter(az m*s gen<rica de soc"ets del lado del clieneA vea stream>socBet>client./A
stream>socBet>ser5er./A fsocBopen./A y pfsocBopen./;
5uando use estas (uncionesA es importante recordar /ueA aun/ue muchas de ellas tienen nom#res
id<nticos a sus contrapartes en 5A usualmente cuentan con declaraciones distintas; Por (avorA
asegBrese de leer las descripcionesA con el prop-sito de evitar con(usiones;
A/uellos /ue no se encuentran (amiliarizados con programaci-n de soc"etsA pueden encontrar una
gran cantidad de material Btil en las p*ginas man de @niF apropiadasA y eFiste una enorme cantidad
de in(ormaci-n estilo tutorial so#re programaci-n de soc"ets en 5 en la Ee#A mucha de la cual
puede aplicarseA con ligeras modi(icacionesA a la programaci-n de soc"ets en P&P; +l FAO de
oc"ets @niF puede ser un #uen comienzo;
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
,he soc"et (unctions descri#ed here are part o( an eFtension to P&P Ehich must #e ena#led at
compile time #y giving the ==ena1le=soc>ets option to configure;
Nota- +l soporte para .PvK (ue agregado en +!+ S.0.0 ;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
AF_UNI% >integer?
AF_INET >integer?
AF_INET1 >integer?
SOC&_STREAM >integer?
SOC&_D#RAM >integer?
SOC&_RA" >integer?
SOC&_SE.PAC&ET >integer?
SOC&_RDM >integer?
MS#_OO( >integer?
MS#_"AITALL >integer?
MS#_PEE& >integer?
MS#_DONTROUTE >integer?
SO_DE(U# >integer?
SO_REUSEADDR >integer?
SO_&EEPALI$E >integer?
SO_DONTROUTE >integer?
SO_LIN#ER >integer?
SO_(ROADCAST >integer?
SO_OO(INLINE >integer?
SO_SND(UF >integer?
SO_RC$(UF >integer?
SO_SNDLO"AT >integer?
SO_RC$LO"AT >integer?
SO_SNDTIMEO >integer?
SO_RC$TIMEO >integer?
SO_TYPE >integer?
SO_ERROR >integer?
SOL_SOC&ET >integer?
PHP_NORMAL_READ >integer?
PHP_(INARY_READ >integer?
SOL_TCP >integer?
SOL_UDP >integer?
Errores de ,ocBet
La eFtensi-n de soc"ets (ue escrita para o(recer una inter(az usa#le a los poderosos soc"ets BD; e
ha tenido cuidado para /ue las (unciones tra#a'en igualmente #ien en implementaciones Lin70 y
@niF; 5asi todas las (unciones de soc"ets pueden (allar #a'o ciertas condiciones y por lo tanto
emiten un mensa'e E_"ARNIN# /ue descri#e el error; Algunas veces esto no ocurre con(orme al
deseo del desarrollador; Por e'emploA la (unci-n socBet>read./ puede emitir repentinamente un
mensa'e E_"ARNIN# de#ido a /ue la coneFi-n ha sido cerrada inesperadamente; +s comBn
suprimir la advertencia con el operador W y atrapar el c-digo de error dentro de la aplicaci-n con la
(unci-n socBet>last>error./; Puede llamar la (unci-n socBet>strerror./ con <ste c-digo de error
para recuperar una cadena /ue descri#e el error; $ea su descripci-n para m*s in(ormaci-n;
Nota- Los mensa'es E_"ARNIN# generados por la eFtensi-n de soc"ets se encuentran
en .ngl<sA aun/ue el mensa'e de error recuperado aparecer* dependiendo de la localidad
actual >LC_MESSA#ES?C
7arninE F socIet%bind39 unable to bind address )KJ/@ Lie ,dresse 8ird bereits =er8endet
E'emplos
E'emplo !. E'emplo de ,ocBet- ,er5idor TCPAIP simple
+ste e'emplo le muestra un servidor simple /ue repite de vuelta su entrada; Modi(i/ue las varia#les #6recc6on y
puerto para /ue se acomoden a su con(iguraci-n y e'ecBtelo; Puede entonces conectarse con el servidor mediante
un comando similar aC telnet !O*.!<N.!.97 !DDDD >en donde la direcci-n y el puerto se a'ustan a su con(iguraci-n?;
5ual/uier cosa /ue escri#a ser* entonces impresa en el lado del servidorA y devuelta a su lado; Para desconectarseA
ingrese HsalirH;
U!/usr/local/bin/php FQ
<?php
error%reportinE3E%,OO9;
/W ermitir Que el script permane0ca en espera de conexiones. W/
set%time%limit329;
/W Habilitar =aciado de salida implicito, de modo Que =eamos lo Que
W obtenemos a medida Que =a lleEando. W/
ob%implicit%#lush39;
$direccion > M6KC.6GJ.6.5<M;
$puerto > 62222;
i# 33$socI > socIet%create3,S%4.E*, &?R]%&*'E,", &?O%*R99 < 29 :
echo "socIet%create39 #all&oacute;@ moti=o@ " . socIet%strerror3$socI9 . "Vn";
;
i# 33$ret > socIet%bind3$socI, $direccion, $puerto99 < 29 :
echo "socIet%bind39 #all&oacute;@ moti=o@ " . socIet%strerror3$ret9 . "Vn";
;
i# 33$ret > socIet%listen3$socI, 599 < 29 :
echo "socIet%listen39 #all&oacute;@ moti=o@ " . socIet%strerror3$ret9 . "Vn";
;
do :
i# 33$mens%socI > socIet%accept3$socI99 < 29 :
echo "socIet%accept39 #all&oacute;@ moti=o " . socIet%strerror3$mens%socI9 . "Vn";
breaI;
;
/W En=iar instrucciones. W/
$mensaje > "VnZien=enido al &er=idor de rueba H. Vn" .
"ara salir, escriba MsalirM. " .
"ara detener el ser=idor, escriba MdetenerM.Vn";
socIet%8rite3$mens%socI, $mensaje, strlen3$mensaje99;
do :
i# 3#alse >>> 3$bu# > socIet%read3$mens%socI, C21J, H%.?'",O%'E,L999 :
echo "socIet%read39 #all&oacute;@ moti=o@ " . socIet%strerror3$ret9 . "Vn";
breaI C;
;
i# 3!$bu# > trim3$bu#99 :
continue;
;
i# 3$bu# >> MsalirM9 :
breaI;
;
i# 3$bu# >> MdetenerM9 :
socIet%close3$mens%socI9;
breaI C;
;
$respuesta > "H@ +sted dijo M$bu#M.Vn";
socIet%8rite3$mens%socI, $respuesta, strlen3$respuesta99;
echo "$bu#Vn";
; 8hile 3true9;
socIet%close3$mens%socI9;
; 8hile 3true9;
socIet%close3$socI9;
?>
E'emplo *. E'emplo de ,ocBet- Cliente TCPAIP simple
+ste e'emplo muestra un cliente &,,P simpleA de un paso; implemente se conecta con una p*ginaA envia una
petici-n &+ADA imprime la respuestaA y sale;
<?php
error%reportinE3E%,OO9;
echo "<hC>Ronexi&oacute;n *R/4</hC>Vn";
/W ?btener el puerto para el ser=icio 777. W/
$puerto%ser=icio > Eetser=byname3M888M, MtcpM9;
/W ?btener la direccion 4 del host de destino. W/
$direccion > Eethostbyname3M888.example.comM9;
/W Rrear un socIet *R/4. W/
$socIet > socIet%create3,S%4.E*, &?R]%&*'E,", &?O%*R9;
i# 3$socIet < 29 :
echo "socIet%create39 #all&oacute;@ moti=o@ " . socIet%strerror3$socIet9 . "Vn";
; else :
echo "?].Vn";
;
echo "4ntentando una conexi&oacute;n con M$direccionM en el puerto M$puerto%ser=icioM...";
$resultado > socIet%connect3$socIet, $direccion, $puerto%ser=icio9;
i# 3$resultado < 29 :
echo "socIet%connect39 #all&oacute;.Vn"oti=o@ 3$resultado9 " .
socIet%strerror3$resultado9 . "Vn";
; else :
echo "?].Vn";
;
$entrada > "HE,L / H**/6.6VrVn";
$entrada .> "Host@ 888.example.comVrVn";
$entrada .> "Ronnection@ RloseVrVnVrVn";
$salida > MM;
echo "En=iando petici&oacute;n H** HE,L...";
socIet%8rite3$socIet, $entrada, strlen3$entrada99;
echo "?].Vn";
echo "Oeyendo respuesta@VnVn";
8hile 3$salida > socIet%read3$socIet, C21J99 :
echo $salida;
;
echo "Rerrando socIet...";
socIet%close3$socIet9;
echo "?].VnVn";
?>
Tabla de contenidos
soc"etZaccept 22 Accepts a connection on a soc"et
soc"etZ#ind 22 Binds a name to a soc"et
soc"etZclearZerror 22 5lears the error on the soc"et or the last error code
soc"etZclose 22 5loses a soc"et resource
soc"etZconnect 22 .nitiates a connection on a soc"et
soc"etZcreateZlisten 22 Opens a soc"et on port to accept connections
soc"etZcreateZpair 22 5reates a pair o( indistinguisha#le soc"ets and stores them in an array
soc"etZcreate 22 5reate a soc"et >endpoint (or communication?
soc"etZgetZoption 22 Gets soc"et options (or the soc"et
soc"etZgetpeername 22 Oueries the remote side o( the given soc"et Ehich may either result in
hostDport or in a @niF (ilesystem pathA dependent on its type
soc"etZgetsoc"name 22 Oueries the local side o( the given soc"et Ehich may either result in
hostDport or in a @niF (ilesystem pathA dependent on its type
soc"etZlastZerror 22 Returns the last error on the soc"et
soc"etZlisten 22 Listens (or a connection on a soc"et
soc"etZread 22 Reads a maFimum o( length #ytes (rom a soc"et
soc"etZrecv 22 Receives data (rom a connected soc"et
soc"etZrecv(rom 22 Receives data (rom a soc"etA connected or not
soc"etZselect 22 Runs the select>? system call on the given arrays o( soc"ets Eith a speci(ied timeout
soc"etZsend 22 ends data to a connected soc"et
soc"etZsendto 22 ends a message to a soc"etA Ehether it is connected or not
soc"etZsetZ#loc" 22 ets #loc"ing mode on a soc"et resource
soc"etZsetZnon#loc" 22 ets non#loc"ing mode (or (ile descriptor (d
soc"etZsetZoption 22 ets soc"et options (or the soc"et
soc"etZshutdoEn 22 huts doEn a soc"et (or receivingA sendingA or #oth
soc"etZstrerror 22 Return a string descri#ing a soc"et error
soc"etZErite 22 Lrite to a soc"et
socBet>accept
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZaccept 22 Accepts a connection on a soc"et
Kescription
resource socBet>accept > resource soc"et ?
A(ter the soc"et soc>et has #een created using socBet>create./A #ound to a name Eith socBet>bind
./A and told to listen (or connections Eith socBet>listen./A this (unction Eill accept incoming
connections on that soc"et; Once a success(ul connection is madeA a neE soc"et resource is
returnedA Ehich may #e used (or communication; .( there are multiple connections /ueued on the
soc"etA the (irst Eill #e used; .( there are no pending connectionsA socBet>accept./ Eill #loc" until a
connection #ecomes present; .( soc>et has #een made non2#loc"ing using socBet>set>blocBing./ or
socBet>set>nonblocB./A FALSE Eill #e returned;
,he soc"et resource returned #y socBet>accept./ may not #e used to accept neE connections; ,he
original listening soc"et soc>etA hoEeverA remains open and may #e reused;
Returns a neE soc"et resource on successA or FALSE on error; ,he actual error code can #e
retrieved #y calling socBet>last>error./; ,his error code may #e passed to socBet>strerror./ to get
a teFtual eFplanation o( the error;
ee also socBet>bind./A socBet>connect./A socBet>listen./A socBet>create./A and socBet>strerror./;
socBet>bind
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZ#ind 22 Binds a name to a soc"et
Kescription
#ool socBet>bind > resource soc"etA string address PA int portQ ?
socBet>bind./ #inds the name given in a##ress to the soc"et descri#ed #y soc>etA Ehich must #e a
valid soc"et resource created Eith socBet>create./;
,he a##ress parameter is either an .P address in dotted2/uad notation >e;g; 127.0.0.1?A i( the soc"et
is o( the AF_INET (amilyX or the pathname o( a @niF2domain soc"etA i( the soc"et (amily is
AF_UNI%;
,he port parameter is only used Ehen connecting to an AF_INET soc"etA and designates the port on
the remote host to Ehich a connection should #e made;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo; ,he error code can
#e retrieved Eith socBet>last>error./; ,his code may #e passed to socBet>strerror./ to get a
teFtual eFplanation o( the error; Note that socBet>last>error./ is reported to return an invalid error
code in case you are trying to #ind the soc"et to a Erong address that does not #elong to your
LindoEs 9FDM+ machine;
ee also socBet>connect./A socBet>listen./A socBet>create./A socBet>last>error./ and
socBet>strerror./;
socBet>clear>error
>P&P 8 _^ 8;0;3A P&P 4?
soc"etZclearZerror 22 5lears the error on the soc"et or the last error code
Kescription
void socBet>clear>error > Presource soc"etQ ?
,his (unction clears the error code on the given soc"et or the glo#al last soc"et error;
,his (unction alloEs eFplicitly resetting the error code value either o( a soc"et or o( the eFtension
glo#al last error code; ,his may #e use(ul to detect Eithin a part o( the application i( an error
occurred or not;
ee also socBet>last>error./ and socBet>strerror./;
socBet>close
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZclose 22 5loses a soc"et resource
Kescription
void socBet>close > resource soc"et ?
socBet>close./ closes the soc"et resource given #y soc>et;
Nota- socBet>close./ canHt #e used on P&P (ile resources created Eith fopen./A popen./A
fsocBopen./A or pfsocBopen./X it is meant (or soc"ets created Eith socBet>create./ or
socBet>accept./;
ee also socBet>bind./A socBet>listen./A socBet>create./ and socBet>strerror./;
socBet>connect
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZconnect 22 .nitiates a connection on a soc"et
Kescription
#ool socBet>connect > resource soc"etA string address PA int portQ ?
.nitiates a connection using the soc"et resource soc>etA Ehich must #e a valid soc"et resource
created Eith socBet>create./;
,he a##ress parameter is either an .P address in dotted2/uad notation >e;g; 127.0.0.1?A i( the soc"et
is o( the AF_INET (amilyX or the pathname o( a @niF domain soc"etA i( the soc"et (amily is
AF_UNI%;
,he port parameter is only used Ehen connecting to an AF_INET soc"etA and designates the port on
the remote host to Ehich a connection should #e made;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo; ,he error code can
#e retrieved Eith socBet>last>error./; ,his code may #e passed to socBet>strerror./ to get a
teFtual eFplanation o( the error;
ee also socBet>bind./A socBet>listen./A socBet>create./A socBet>last>error./ and socBet>strerror
./;
socBet>create>listen
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZcreateZlisten 22 Opens a soc"et on port to accept connections
Kescription
resource socBet>create>listen > int port PA int #ac"logQ ?
,his (unction is meant to ease the tas" o( creating a neE soc"et Ehich only listens to accept neE
connections;
socBet>create>listen./ creates a neE soc"et resource o( type AF_INET listening on all local
inter(aces on the given port Eaiting (or neE connections;
,he 1ac>loE parameter de(ines the maFimum length the /ueue o( pending connections may groE to;
SOMA%CONN may #e passed as 1ac>loE parameterA see socBet>listen./ (or more in(ormation;
socBet>create>listen./ returns a neE soc"et resource on success or FALSE on error; ,he error code
can #e retrieved Eith socBet>last>error./; ,his code may #e passed to socBet>strerror./ to get a
teFtual eFplanation o( the error;
Nota- .( you Eant to create a soc"et Ehich only listens on a certain inter(ace you need to
use socBet>create./A socBet>bind./ and socBet>listen./;
ee also socBet>create./A socBet>bind./A socBet>listen./A socBet>last>error./ and socBet>strerror
./;
socBet>create>pair
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZcreateZpair 22 5reates a pair o( indistinguisha#le soc"ets and stores them in an array
Kescription
#ool socBet>create>pair > int domainA int typeA int protocolA array i(d ?
socBet>create>pair./ creates tEo connected and indistinguisha#le soc"etsA and stores them in 9#;
,his (unction is commonly used in .P5 >.nterProcess 5ommunication?;
,he #oma6n parameter speci(ies the protocol (amily to #e used #y the soc"et;
Tabla !. A5ailable addressAprotocol families
Komain Kescription
AFZ.N+
,
.Pv8 .nternet #ased protocols; ,5P and @DP are common protocols o( this protocol
(amily; upported only in EindoEs;
AFZ.N+
,K
.PvK .nternet #ased protocols; ,5P and @DP are common protocols o( this protocol
(amily; upport added in P&P 4;3;3; upported only in EindoEs;
AFZ@N.
J
Local communication protocol (amily; &igh e((iciency and loE overhead ma"e it a
great (orm o( .P5 >.nterprocess 5ommunication?;
,he t?pe parameter selects the type o( communication to #e used #y the soc"et;
Tabla *. A5ailable socBet types
Type Kescription
O5SZ,R+AM
Provides se/uencedA relia#leA (ull2dupleFA connection2#ased #yte streams; An
out2o(2#and data transmission mechanism may #e supported; ,he ,5P protocol
is #ased on this soc"et type;
O5SZDGRAM
upports datagrams >connectionlessA unrelia#le messages o( a (iFed maFimum
length?; ,he @DP protocol is #ased on this soc"et type;
O5SZ+OPA5
S+,
Provides a se/uencedA relia#leA tEo2Eay connection2#ased data transmission
path (or datagrams o( (iFed maFimum lengthX a consumer is re/uired to read an
entire pac"et Eith each read call;
O5SZRAL
Provides raE netEor" protocol access; ,his special type o( soc"et can #e used
to manually construct any type o( protocol; A common use (or this soc"et type
is to per(orm .5MP re/uests >li"e pingA tracerouteA etc?;
O5SZRDM
Provides a relia#le datagram layer that does not guarantee ordering; ,his is
most li"ely not implemented on your operating system;
,he protocol parameter sets the speci(ic protocol Eithin the speci(ied #oma6n to #e used Ehen
communicating on the returned soc"et; ,he proper value can #e retrieved #y name #y using
getprotobyname./; .( the desired protocol is ,5PA or @DP the corresponding constants SOL_TCPA
and SOL_UDP can also #e used;
Tabla 7. Common protocols
Name Kescription
icmp
,he .nternet 5ontrol Message Protocol is used primarily #y gateEays and hosts to report
errors in datagram communication; ,he =ping= command >present in most modern
operating systems? is an eFample application o( .5MP;
udp
,he @ser Datagram Protocol is a connectionlessA unrelia#leA protocol Eith (iFed record
lengths; Due to these aspectsA @DP re/uires a minimum amount o( protocol overhead;
tcp
,he ,ransmission 5ontrol Protocol is a relia#leA connection #asedA stream orientedA (ull
dupleF protocol; ,5P guarantees that all data pac"ets Eill #e received in the order in
Ehich they Eere sent; .( any pac"et is somehoE lost during communicationA ,5P Eill
automatically retransmit the pac"et until the destination host ac"noEledges that pac"et;
For relia#ility and per(ormance reasonsA the ,5P implementation itsel( decides the
appropriate octet #oundaries o( the underlying datagram communication layer; ,here(oreA
,5P applications must alloE (or the possi#ility o( partial record transmission;
E'emplo !. socBet>create>pair./ e+ample
<?php
$socIets > array39;
$uniQid > uniQid3MM9;
i# 3#ile%exists3"/tmp/$uniQid.socI"99 :
die3M*emporary socIet already exists.M9;
;
/W &etup socIet pair W/
i# 3!socIet%create%pair3,S%+.4X, &?R]%&*'E,", 2, $socIets99 :
echo socIet%strerror3socIet%last%error399;
;
/W &end and 'ecie=e Lata W/
i# 3!socIet%8rite3$socIets)2/, ",ZRde#6C<Vn", strlen3",ZRde#6C<Vn"999 :
echo socIet%strerror3socIet%last%error399;
;
i# 3!$data > socIet%read3$socIets)6/, strlen3",ZRde#6C<Vn"9, H%Z4.,'P%'E,L99 :
echo socIet%strerror3socIet%last%error399;
;
=ar%dump3$data9;
/W Rlose socIets W/
socIet%close3$socIets)2/9;
socIet%close3$socIets)6/9;
?>
E'emplo *. socBet>create>pair./ IPC e+ample
<?php
$ary > array39;
$strone > M"essaEe Srom arent.M;
$strt8o > M"essaEe Srom Rhild.M;
i# 3!socIet%create%pair3,S%+.4X, &?R]%&*'E,", 2, $ary99 :
echo socIet%strerror3socIet%last%error399;
;
$pid > pcntl%#orI39;
i# 3$pid >> F69 :
echo MRould not #orI rocess.M;
; elsei# 3$pid9 :
/WparentW/
socIet%close3$ary)2/9;
i# 3!socIet%8rite3$ary)6/, $strone, strlen3$strone999 :
echo socIet%strerror3socIet%last%error399;
;
i# 3socIet%read3$ary)6/, strlen3$strt8o9, H%Z4.,'P%'E,L9 >> $strt8o9 :
echo "'ecie=ed $strt8oVn";
;
socIet%close3$ary)6/9;
; else :
/WchildW/
socIet%close3$ary)6/9;
i# 3!socIet%8rite3$ary)2/, $strt8o, strlen3$strt8o999 :
echo socIet%strerror3socIet%last%error399;
;
i# 3socIet%read3$ary)2/, strlen3$strone9, H%Z4.,'P%'E,L9 >> $strone9 :
echo "'ecie=ed $stroneVn";
;
socIet%close3$ary)2/9;
;
?>
socBet>create
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZcreate 22 5reate a soc"et >endpoint (or communication?
Kescription
resource socBet>create > int domainA int typeA int protocol ?
5reates and returns a soc"et resourceA also re(erred to as an endpoint o( communication; A typical
netEor" connection is made up o( 0 soc"etsA one per(orming the role o( the clientA and another
per(orming the role o( the server;
,he #oma6n parameter speci(ies the protocol (amily to #e used #y the soc"et;
Tabla !. A5ailable addressAprotocol families
Komain Kescription
AFZ.N+,
.Pv8 .nternet #ased protocols; ,5P and @DP are common protocols o( this protocol
(amily;
AFZ.N+,
K
.PvK .nternet #ased protocols; ,5P and @DP are common protocols o( this protocol
(amily; upport added in P&P 4;3;3;
AFZ@N.
J
Local communication protocol (amily; &igh e((iciency and loE overhead ma"e it a
great (orm o( .P5 >.nterprocess 5ommunication?;
,he t?pe parameter selects the type o( communication to #e used #y the soc"et;
Tabla *. A5ailable socBet types
Type Kescription
O5SZ,R+AM
Provides se/uencedA relia#leA (ull2dupleFA connection2#ased #yte streams; An
out2o(2#and data transmission mechanism may #e supported; ,he ,5P protocol
is #ased on this soc"et type;
O5SZDGRAM
upports datagrams >connectionlessA unrelia#le messages o( a (iFed maFimum
length?; ,he @DP protocol is #ased on this soc"et type;
O5SZ+OPA5
S+,
Provides a se/uencedA relia#leA tEo2Eay connection2#ased data transmission
path (or datagrams o( (iFed maFimum lengthX a consumer is re/uired to read an
entire pac"et Eith each read call;
O5SZRAL
Provides raE netEor" protocol access; ,his special type o( soc"et can #e used
to manually construct any type o( protocol; A common use (or this soc"et type
is to per(orm .5MP re/uests >li"e pingA tracerouteA etc?;
O5SZRDM
Provides a relia#le datagram layer that does not guarantee ordering; ,his is
most li"ely not implemented on your operating system;
,he protocol parameter sets the speci(ic protocol Eithin the speci(ied #oma6n to #e used Ehen
communicating on the returned soc"et; ,he proper value can #e retrieved #y name #y using
getprotobyname./; .( the desired protocol is ,5PA or @DP the corresponding constants SOL_TCPA
and SOL_UDP can also #e used;
Tabla 7. Common protocols
Name Kescription
icmp
,he .nternet 5ontrol Message Protocol is used primarily #y gateEays and hosts to report
errors in datagram communication; ,he =ping= command >present in most modern
operating systems? is an eFample application o( .5MP;
udp
,he @ser Datagram Protocol is a connectionlessA unrelia#leA protocol Eith (iFed record
lengths; Due to these aspectsA @DP re/uires a minimum amount o( protocol overhead;
tcp
,he ,ransmission 5ontrol Protocol is a relia#leA connection #asedA stream orientedA (ull
dupleF protocol; ,5P guarantees that all data pac"ets Eill #e received in the order in
Ehich they Eere sent; .( any pac"et is somehoE lost during communicationA ,5P Eill
automatically retransmit the pac"et until the destination host ac"noEledges that pac"et;
For relia#ility and per(ormance reasonsA the ,5P implementation itsel( decides the
appropriate octet #oundaries o( the underlying datagram communication layer; ,here(oreA
,5P applications must alloE (or the possi#ility o( partial record transmission;
socBet>create./ Returns a soc"et resource on successA or FALSE on error; ,he actual error code can
#e retrieved #y calling socBet>last>error./; ,his error code may #e passed to socBet>strerror./ to
get a teFtual eFplanation o( the error;
Nota- .( an invalid #oma6n or t?pe is givenA socBet>create./ de(aults to AF_INET and
SOC&_STREAM respectively and additionally emits an E_"ARNIN# message;
ee also socBet>accept./A socBet>bind./A socBet>connect./A socBet>listen./A socBet>last>error./A
and socBet>strerror./;
socBet>get>option
>P&P 8 _^ 8;7;3A P&P 4?
soc"etZgetZoption 22 Gets soc"et options (or the soc"et
Kescription
miFed socBet>get>option > resource soc"etA int levelA int optname ?
,he socBet>get>option./ (unction retrieves the value (or the option speci(ied #y the optname
parameter (or the soc"et speci(ied #y the soc>et parameter; socBet>get>option./ Eill return FALSE
on (ailure;
,he leel parameter speci(ies the protocol level at Ehich the option resides; For eFampleA to retrieve
options at the soc"et levelA a leel parameter o( OLZO5S+, Eould #e used; Other levelsA such as
,5PA can #e used #y speci(ying the protocol num#er o( that level; Protocol num#ers can #e (ound #y
using the getprotobyname./ (unction;
Tabla !. A5ailable ,ocBet Jptions
Jption Kescription
OZD+B@G Reports Ehether de#ugging in(ormation is #eing recorded;
OZA55+P,5O
NN
Reports Ehether soc"et listening is ena#led;
OZBROAD5A
,
Reports Ehether transmission o( #roadcast messages is supported;
OZR+@+ADD
R
Reports Ehether local addresses can #e reused;
OZS++PAL.$+
Reports Ehether connections are "ept active Eith periodic transmission o(
messages; .( the connected soc"et (ails to respond to these messagesA the
connection is #ro"en and processes Eriting to that soc"et are noti(ied Eith a
.GP.P+ signal;
OZL.NG+R Reports Ehether the soc>et lingers on socBet>close./ i( data is present;
OZOOB.NL.N+ Reports Ehether the soc>et leaves out2o(2#and data inline;
OZNDB@F Reports send #u((er size in(ormation;
OZR5$B@F Reports recieve #u((er size in(ormation;
OZ+RROR Reports in(ormation a#out error status and clears it;
OZ,%P+ Reports the soc>et type;
OZDON,RO@,
+
Reports Ehether outgoing messages #ypass the standard routing (acilities;
OZR5$LOLA,
Reports the minimum num#er o( #ytes to process (or soc>et input operations;
> De(aults to 1 ?
OZR5$,.M+O Reports the timeout value (or input operations;
OZNDLOLA, Reports the minimum num#er o( #ytes to process (or soc>et output operations;
Jption Kescription
OZND,.M+O
Reports the timeout value speci(ying the amount o( time that an output
(unction #loc"s #ecause (loE control prevents data (rom #eing sent;
Nota- ,his (unction used to #e called soc>et_EetoptLM prior to P&P 8;7;3
socBet>getpeername
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZgetpeername 22 Oueries the remote side o( the given soc"et Ehich may either result in
hostDport or in a @niF (ilesystem pathA dependent on its type
Kescription
#ool socBet>getpeername > resource soc"etA string iaddr PA int iportQ ?
.( the given soc"et is o( type AF_INET or AF_INET1A socBet>getpeername./ Eill return the peers
>remote? 0+ a##ress in appropriate notation >e;g; 127.0.0.1 or 9eP0::1? in the a##ress parameter andA
i( the optional port parameter is presentA also the associated port;
.( the given soc"et is o( type AF_UNI%A socBet>getpeername./ Eill return the @niF (ilesystem path
>e;g; /ar/run/#aemon.soc>? in the a##ress parameter;
Nota- socBet>getpeername./ should not #e used Eith AF_UNI% soc"ets created Eith
socBet>accept./; Only soc"ets created Eith socBet>connect./ or a primary server soc"et
(olloEing a call to socBet>bind./ Eill return meaning(ul values;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
socBet>getpeername./ may also return FALSE i( the soc"et type is not any o( AF_INETA
AF_INET1A or AF_UNI%A in Ehich case the last soc"et error code is not updated;
ee also socBet>getsocBname./A socBet>last>error./ and socBet>strerror./;
socBet>getsocBname
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZgetsoc"name 22 Oueries the local side o( the given soc"et Ehich may either result in
hostDport or in a @niF (ilesystem pathA dependent on its type
Kescription
#ool socBet>getsocBname > resource soc"etA string iaddr PA int iportQ ?
.( the given soc"et is o( type AF_INET or AF_INET1A socBet>getsocBname./ Eill return the local
0+ a##ress in appropriate notation >e;g; 127.0.0.1 or 9eP0::1? in the a##ress parameter andA i( the
optional port parameter is presentA also the associated port;
.( the given soc"et is o( type AF_UNI%A socBet>getsocBname./ Eill return the @niF (ilesystem path
>e;g; /ar/run/#aemon.soc>? in the a##ress parameter;
Nota- socBet>getsocBname./ should not #e used Eith AF_UNI% soc"ets created Eith
socBet>connect./; Only soc"ets created Eith socBet>accept./ or a primary server soc"et
(olloEing a call to socBet>bind./ Eill return meaning(ul values;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
socBet>getsocBname./ may also return FALSE i( the soc"et type is not any o( AF_INETA
AF_INET1A or AF_UNI%A in Ehich case the last soc"et error code is not updated;
ee also socBet>getpeername./A socBet>last>error./ and socBet>strerror./;
socBet>last>error
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZlastZerror 22 Returns the last error on the soc"et
Kescription
int socBet>last>error > Presource soc"etQ ?
,his (unction returns a soc"et error code;
.( a soc"et resource is passed to this (unctionA the last error Ehich occurred on this particular soc"et
is returned; .( the soc"et resource is omittedA the error code o( the last (ailed soc"et (unction is
returned; ,he latter is in particular help(ul (or (unctions li"e socBet>create./ Ehich donHt return a
soc"et on (ailure and socBet>select./ Ehich can (ail (or reasons not directly tied to a particular
soc"et; ,he error code is suita#le to #e (ed to socBet>strerror./ Ehich returns a string descri#ing
the given error code;
<?php
i# 3#alse >> 3$socIet > ^socIet%create3,S%4.E*, &?R]%&*'E,", &?O%*R999 :
die3"RouldnMt create socIet, error code is@ " . socIet%last%error39 .
",error messaEe is@ " . socIet%strerror3socIet%last%error3999;
;
?>
Nota- socBet>last>error./ does not clear the error codeA use socBet>clear>error./ (or
this purpose;
socBet>listen
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZlisten 22 Listens (or a connection on a soc"et
Kescription
#ool socBet>listen > resource soc"et PA int #ac"logQ ?
A(ter the soc"et soc>et has #een created using socBet>create./ and #ound to a name Eith
socBet>bind./A it may #e told to listen (or incoming connections on soc>et;
A maFimum o( 1ac>loE incoming connections Eill #e /ueued (or processing; .( a connection
re/uest arrives Eith the /ueue (ull the client may receive an error Eith an indication o(
ECONNRE3USEDA orA i( the underlying protocol supports retransmissionA the re/uest may #e
ignored so that retries may succeed;
Nota- ,he maFimum num#er passed to the 1ac>loE parameter highly depends on the
underlying plat(orm; On LinuFA it is silently truncated to SOMA%CONN; On Ein70A i(
passed SOMA%CONNA the underlying service provider responsi#le (or the soc"et Eill set
the #ac"log to a maFimum reasona1le value; ,here is no standard provision to (ind out
the actual #ac"log value on this plat(orm;
socBet>listen./ is applica#le only to soc"ets o( type SOC&_STREAM or SOC&_SE.PAC&ET;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo; ,he error code can
#e retrieved Eith socBet>last>error./; ,his code may #e passed to socBet>strerror./ to get a
teFtual eFplanation o( the error;
ee also socBet>accept./A socBet>bind./A socBet>connect./A socBet>create./ and socBet>strerror
./;
socBet>read
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZread 22 Reads a maFimum o( length #ytes (rom a soc"et
Kescription
string socBet>read > resource soc"etA int length PA int typeQ ?
,he (unction socBet>read./ reads (rom the soc"et resource soc>et created #y the socBet>create./ or
socBet>accept./ (unctions; ,he maFimum num#er o( #ytes read is speci(ied #y the lenEth
parameter; OtherEise you can use hrA hnA or h3 to end reading >depending on the t?pe parameterA see
#eloE?;
socBet>read./ returns the data as a string on successA or FALSE on error >including i( the remote
host has closed the connection?; ,he error code can #e retrieved Eith socBet>last>error./; ,his
code may #e passed to socBet>strerror./ to get a teFtual representation o( the error;
Nota- socBet>read./ returns a zero length string >==? Ehen there is no more data to read;
Optional t?pe parameter is a named constantC
P&PZB.NAR%ZR+AD 2 use the system recLM (unction; a(e (or reading #inary data;
>De(ault in P&P _^ 8;1;3?
P&PZNORMALZR+AD 2 reading stops at hn or hr; >De(ault in P&P `^ 8;3;K?
ee also socBet>accept./A socBet>bind./A socBet>connect./A socBet>listen./A socBet>last>error./A
socBet>strerror./ and socBet>3rite./;
socBet>rec5
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZrecv 22 Receives data (rom a connected soc"et
Kescription
int socBet>rec5 > resource soc"etA string i#u(A int lenA int (lags ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
socBet>rec5from
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZrecv(rom 22 Receives data (rom a soc"etA connected or not
Kescription
int socBet>rec5from > resource soc"etA string i#u(A int lenA int (lagsA string iname PA int iportQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
socBet>rec5from./ has #een #inary sa(e since P&P 8;7;3
socBet>select
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZselect 22 Runs the select>? system call on the given arrays o( soc"ets Eith a speci(ied timeout
Kescription
int socBet>select > array ireadA array iEriteA array ieFceptA int tvZsec PA int tvZusecQ ?
socBet>select./ accepts arrays o( soc"ets and Eaits (or them to change status; ,hose coming Eith
BD soc"ets #ac"ground Eill recognize that those soc"et resource arrays are in (act the so2called
(ile descriptor sets; ,hree independent arrays o( soc"et resources are Eatched;
,he soc"ets listed in the rea# array Eill #e Eatched to see i( characters #ecome availa#le (or reading
>more preciselyA to see i( a read Eill not #loc" 2 in particularA a soc"et resource is also ready on end2
o(2(ileA in Ehich case a socBet>read./ Eill return a zero length string?;
,he soc"ets listed in the 7r6te array Eill #e Eatched to see i( a Erite Eill not #loc";
,he soc"ets listed in the e8cept array Eill #e Eatched (or eFceptions;
A5iso
On eFitA the arrays are modi(ied to indicate Ehich soc"et resource actually changed status;
%ou do not need to pass every array to socBet>select./; %ou can leave it out and use an empty array
or NULL instead; Also do not (orget that those arrays are passed 1? re9erence and Eill #e modi(ied
a(ter socBet>select./ returns;
E'emplo !. socBet>select./ e+ample
<?php
/W repare the read array W/
$read > array3$socIet6, $socIetC9;
$num%chanEed%socIets > socIet%select3$read, $8rite > .+OO, $except > .+OO, 29;
i# 3$num%chanEed%socIets >>> #alse9 :
/W Error handlinE W/
; else i# 3$num%chanEed%socIets > 29 :
/W ,t least at one o# the socIets somethinE interestinE happened W/
;
?>
Nota- Due a limitation in the current Iend +ngine it is not possi#le to pass a constant
modi(ier li"e NULL directly as a parameter to a (unction Ehich eFpects this parameter to
#e passed #y re(erence; .nstead use a temporary varia#le or an eFpression Eith the
le(tmost mem#er #eing a temporary varia#leC
E'emplo *. )sing NULL 3ith socBet>select./
<?php
socIet%select3$r, $8, $e > .+OO, 29;
?>
,he t_sec and t_usec together (orm the t6meout parameter; ,he t6meout is an upper #ound on the
amount o( time elapsed #e(ore socBet>select./ return; t_sec may #e zero A causing socBet>select./
to return immediately; ,his is use(ul (or polling; .( t_sec is NULL >no timeout?A socBet>select./ can
#loc" inde(initely;
On success socBet>select./ returns the num#er o( soc"et resources contained in the modi(ied arraysA
Ehich may #e zero i( the timeout eFpires #e(ore anything interesting happens; On error FALSE is
returned; ,he error code can #e retrieved Eith socBet>last>error./;
Nota- Be sure to use the ::: operator Ehen chec"ing (or an error; ince the
socBet>select./ may return 3 the comparison Eith :: Eould evaluate to TRUEC
E'emplo 7. )nderstanding socBet>select./Us result
<?php
i# 3#alse >>> socIet%select3$r, $8, $e > .+OO, 299 :
echo "socIet%select39 #ailed, reason@ " .
socIet%strerror3socIet%last%error399 . "Vn";
;
?>
Nota- Be aEare that some soc"et implementations need to #e handled very care(ully; A
(eE #asic rulesC
%ou should alEays try to use socBet>select./ Eithout timeout; %our program
should have nothing to do i( there is no data availa#le; 5ode that depends on
timeouts is not usually porta#le and di((icult to de#ug;
No soc"et resource must #e added to any set i( you do not intend to chec" its
result a(ter the socBet>select./ callA and respond appropriately; A(ter
socBet>select./ returnsA all soc"et resources in all arrays must #e chec"ed; Any
soc"et resource that is availa#le (or Eriting must #e Eritten toA and any soc"et
resource availa#le (or reading must #e read (rom;
.( you readDErite to a soc"et returns in the arrays #e aEare that they do not
necessarily readDErite the (ull amount o( data you have re/uested; Be prepared to
even only #e a#le to readDErite a single #yte;
.tHs common to most soc"et implementations that the only eFception caught Eith
the e8cept array is out2o(2#ound data received on a soc"et;
ee also socBet>read./A socBet>3rite./A socBet>last>error./ and socBet>strerror./;
socBet>send
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZsend 22 ends data to a connected soc"et
Kescription
int socBet>send > resource soc"etA string #u(A int lenA int (lags ?
,he (unction socBet>send./ sends len #ytes to the soc"et soc>et (rom 1u9
,he value o( 9laEs can #e any ORe# com#ination o( the (olloEingC
Tabla !. possible 5alues for flags
081 Process OOB >out2o(2#and? data
082 Pee" at incoming message
08;
Bypass routingA use direct
inter(ace
08P Data completes record
08100 Data completes transaction
ee also socBet>sendmsg./ and socBet>sendto./;
socBet>sendto
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZsendto 22 ends a message to a soc"etA Ehether it is connected or not
Kescription
int socBet>sendto > resource soc"etA string #u(A int lenA int (lagsA string addr PA int portQ ?
,he (unction socBet>sendto./ sends len #ytes (rom 1u9 through the soc"et soc>et to the port at the
address a##r
,he value o( 9laEs can #e one o( the (olloEingC
Tabla !. possible 5alues for flags
081 Process OOB >out2o(2#and? data;
082 Pee" at incoming message;
08;
Bypass routingA use direct
inter(ace;
08P Data completes record;
08100 Data completes transaction;
E'emplo !. socBet>sendto./ E+ample
<?php
$sh > socIet%create3,S%4.E*, &?R]%&*'E,", &?O%*R9;
i# 3socIet%bind3$sh, M6CH.2.2.6M, 1C1C99 :
echo "&ocIet bound correctly";
;
$bu# > M*est "essaEeM;
$len > strlen3$bu#9;
i# 3socIet%sendto3$sh, $bu#, $len, 2x622, M6KC.6GJ.2.CM, 1C1C9 !>> #alse9 :
echo ""essaEe sent correctly";
;
socIet%close3$sh9;
?>
ee also socBet>send./ and socBet>sendmsg./;
socBet>set>blocB
>P&P 8 _^ 8;0;3A P&P 4?
soc"etZsetZ#loc" 22 ets #loc"ing mode on a soc"et resource
Kescription
#ool socBet>set>blocB > resource soc"et ?
,he socBet>set>blocB./ (unction removes the OZNONBLO5S (lag on the soc"et speci(ied #y the
soc>et parameter;
E'emplo !. socBet>set>blocB./ e+ample
<?php
$port > K2K2;
i# 3!$socIet > socIet%create%listen3$port99 :
echo socIet%strerror3socIet%last%error399;
;
i# 3!socIet%set%option3$socIet, &?O%&?R]E*, &?%'E+&E,LL', 699 :
echo socIet%strerror3socIet%last%error399;
;
i# 3!socIet%set%nonblocI3$socIet99 : // $socIet is no8 nonblocIinE
echo socIet%strerror3socIet%last%error399;
;
i# 3!socIet%set%blocI3$socIet99 : // $socIet is no8 blocIinE
echo socIet%strerror3socIet%last%error399;
;
?>
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also socBet>set>nonblocB./ and socBet>set>option./
socBet>set>nonblocB
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZsetZnon#loc" 22 ets non#loc"ing mode (or (ile descriptor (d
Kescription
#ool socBet>set>nonblocB > resource soc"et ?
,he socBet>set>nonblocB./ (unction sets the OZNONBLO5S (lag on the soc"et speci(ied #y the
soc>et parameter;
E'emplo !. socBet>set>nonblocB./ e+ample
<?php
$port > K2K2;
i# 3!$socIet > socIet%create%listen3$port99 :
echo socIet%strerror3socIet%last%error399;
;
i# 3!socIet%set%option3$socIet, &?O%&?R]E*, &?%'E+&E,LL', 699 :
echo socIet%strerror3socIet%last%error399;
;
i# 3!socIet%set%nonblocI3$socIet99 :
echo socIet%strerror3socIet%last%error399;
;
?>
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ee also socBet>set>blocB./ and socBet>set>option./
socBet>set>option
>P&P 8 _^ 8;7;3A P&P 4?
soc"etZsetZoption 22 ets soc"et options (or the soc"et
Kescription
#ool socBet>set>option > resource soc"etA int levelA int optnameA miFed optval ?
,he socBet>set>option./ (unction sets the option speci(ied #y the optname parameterA at the
protocol level speci(ied #y the leel parameterA to the value pointed to #y the optal parameter (or
the soc"et speci(ied #y the soc>et parameter; socBet>set>option./ Eill return FALSE on (ailure;
,he leel parameter speci(ies the protocol level at Ehich the option resides; For eFampleA to retrieve
options at the soc"et levelA a leel parameter o( OLZO5S+, Eould #e used; Other levelsA such as
,5PA can #e used #y speci(ying the protocol num#er o( that level; Protocol num#ers can #e (ound #y
using the getprotobyname./ (unction;
,he availa#le soc"et options are the same as those (or the socBet>get>option./ (unction;
Nota- ,his (unction used to #e called soc>et_setoptLM prior to P&P 8;7;3
socBet>shutdo3n
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZshutdoEn 22 huts doEn a soc"et (or receivingA sendingA or #oth
Kescription
#ool socBet>shutdo3n > resource soc"et PA int hoEQ ?
,he socBet>shutdo3n./ (unction alloEs you to stop incomingA outgoing or all data >the de(ault?
(rom #eing sent through the soc>et
,he value o( ho7 can #e one o( the (olloEingC
Tabla !. possible 5alues for how
0 hutdoEn soc"et reading
1 hutdoEn soc"et Eriting
2
hutdoEn soc"et reading and
Eriting
socBet>strerror
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZstrerror 22 Return a string descri#ing a soc"et error
Kescription
string socBet>strerror > int errno ?
socBet>strerror./ ta"es as its errno parameter a soc"et error code as returned #y socBet>last>error
./ and returns the corresponding eFplanatory teFt; ,his ma"es it a #it more pleasant to (igure out
Ehy something didnHt Eor"X (or instanceA instead o( having to trac" doEn a system include (ile to
(ind out Ehat H2111H meansA you 'ust pass it to socBet>strerror./A and it tells you Ehat happened;
E'emplo !. socBet>strerror./ e+ample
<?php
i# 3#alse >> 3$socIet > ^socIet%create3,S%4.E*, &?R]%&*'E,", &?O%*R999 :
echo "socIet%create39 #ailed@ reason@ " . socIet%strerror3socIet%last%error399 . "Vn";
;
i# 3#alse >> 3^socIet%bind3$socIet, M6CH.2.2.6M, J2999 :
echo "socIet%bind39 #ailed@ reason@ " . socIet%strerror3socIet%last%error3$socIet99 . "Vn";
;
?>
,he eFpected output (rom the a#ove eFample >assuming the script is not run Eith root privileges?C
socIet%bind39 #ailed@ reason@ ermission denied
ee also socBet>accept./A socBet>bind./A socBet>connect./A socBet>listen./A and socBet>create./;
socBet>3rite
>P&P 8 _^ 8;1;3A P&P 4?
soc"etZErite 22 Lrite to a soc"et
Kescription
int socBet>3rite > resource soc"etA string #u((er PA int lengthQ ?
,he (unction socBet>3rite./ Erites to the soc"et soc>et (rom 1u99er;
,he optional parameter lenEth can speci(y an alternate length o( #ytes Eritten to the soc"et; .( this
length is greater then the #u((er lengthA it is silently truncated to the length o( the #u((er;
Returns the num#er o( #ytes success(ully Eritten to the soc"et or FALSE one error; ,he error code
can #e retrieved Eith socBet>last>error./; ,his code may #e passed to socBet>strerror./ to get a
teFtual eFplanation o( the error;
Nota- socBet>3rite./ does not necessarily Erite all #ytes (rom the given #u((er; .tHs
valid thatA depending on the netEor" #u((ers etc;A only a certain amount o( dataA even
one #yteA is Eritten though your #u((er is greater; %ou have to Eatch out so you donHt
unintentionally (orget to transmit the rest o( your data;
Nota- .t is per(ectly valid (or socBet>3rite./ to return zero Ehich means no #ytes have
#een Eritten; Be sure to use the ::: operator to chec" (or FALSE in case o( an error;
ee also socBet>accept./A socBet>bind./A socBet>connect./A socBet>listen./A socBet>read./ and
socBet>strerror./;
CICII. ,tandard PHP :ibrary .,P:/
;unctions
Introducci"n
PL is a collection o( inter(aces and classes that are meant to solve standard pro#lems;
,ugerencia- A more detailed documentation o( PL can #e (ound here;
Instalaci"n
,his eFtension is availa#le and compiled #y de(ault in P&P 4;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
RIT_LEA$ES_ONLY >integer?
RIT_SELF_FIRST >integer?
RIT_CHILD_FIRST >integer?
CIT_CALL_TOSTRIN# >integer?
CIT_CATCH_#ET_CHILD >integer?
Tabla de contenidos
Array.teratorCCcurrent 22 Return current array entry
Array.teratorCC"ey 22 Return current array "ey
Array.teratorCCneFt 22 Move to neFt entry
Array.teratorCCreEind 22 ReEind array #ac" to the start
Array.teratorCCsee" 22 ee" to position
Array.teratorCCvalid 22 5hec" Ehether array contains more entries
ArrayO#'ectCCappend 22 Appends the value
ArrayO#'ectCCZZconstruct 22 5onstruct a neE array o#'ect
ArrayO#'ectCCcount 22 Return the num#er o( elements in the .terator
ArrayO#'ectCCget.terator 22 5reate a neE iterator (rom an ArrayO#'ect instance
ArrayO#'ectCCo((set+Fists 22 Returns Ehether the re/uested YindeF eFists
ArrayO#'ectCCo((setGet 22 Returns the value at the speci(ied YindeF
ArrayO#'ectCCo((setet 22 ets the value at the speci(ied YindeF to YneEval
ArrayO#'ectCCo((set@nset 22 @nsets the value at the speci(ied YindeF
5aching.teratorCChasNeFt 22 5hec" Ehether the inner iterator has a valid neFt element
5aching.teratorCCneFt 22 Move the iterator (orEard
5aching.teratorCCreEind 22 ReEind the iterator
5aching.teratorCCZZtotring 22 Return the string representation o( the current element
5aching.teratorCCvalid 22 5hec" Ehether the current element is valid
5achingRecursive.teratorCCget5hildren 22 Return the inner iteratorHs children as a
5achingRecursive.terator
5achingRecursive.teratorCChas5hildren 22 5hec" Ehether the current element o( the inner iterator
has children
Directory.teratorCCZZconstruct 22 5onstructs a neE dir iterator (rom a path
Directory.teratorCCcurrent 22 Return this >needed (or .terator inter(ace?
Directory.teratorCCgetA,ime 22 Get last access time o( (ile
Directory.teratorCCget5,ime 22 Get inode modi(ication time o( (ile
Directory.teratorCCget5hildren 22 Returns an iterator (or the current entry i( it is a directory
Directory.teratorCCgetFilename 22 Return (ilename o( current dir entry
Directory.teratorCCgetGroup 22 Get (ile group
Directory.teratorCCget.node 22 Get (ile inode
Directory.teratorCCgetM,ime 22 Get last modi(ication time o( (ile
Directory.teratorCCgetOEner 22 Get (ile oEner
Directory.teratorCCgetPath 22 Return directory path
Directory.teratorCCgetPathname 22 Return path and (ilename o( current dir entry
Directory.teratorCCgetPerms 22 Get (ile permissions
Directory.teratorCCgetize 22 Get (ile size
Directory.teratorCCget,ype 22 Get (ile type
Directory.teratorCCisDir 22 Returns true i( (ile is directory
Directory.teratorCCisDot 22 Returns true i( current entry is H;H or H;;H
Directory.teratorCCis+Fecuta#le 22 Returns true i( (ile is eFecuta#le
Directory.teratorCCisFile 22 Returns true i( (ile is a regular (ile
Directory.teratorCCisLin" 22 Returns true i( (ile is sym#olic lin"
Directory.teratorCCisReada#le 22 Returns true i( (ile can #e read
Directory.teratorCCisLrita#le 22 Returns true i( (ile can #e Eritten
Directory.teratorCC"ey 22 Return current dir entry
Directory.teratorCCneFt 22 Move to neFt entry
Directory.teratorCCreEind 22 ReEind dir #ac" to the start
Directory.teratorCCvalid 22 5hec" Ehether dir contains more entries
Filter.teratorCCcurrent 22 Get the current element value
Filter.teratorCCget.nner.terator 22 Get the inner iterator
Filter.teratorCC"ey 22 Get the current "ey
Filter.teratorCCneFt 22 Move the iterator (orEard
Filter.teratorCCreEind 22 ReEind the iterator
Filter.teratorCCvalid 22 5hec" Ehether the current element is valid
Limit.teratorCCgetPosition 22 Return the current position
Limit.teratorCCneFt 22 Move the iterator (orEard
Limit.teratorCCreEind 22 ReEind the iterator to the speci(ied starting o((set
Limit.teratorCCsee" 22 ee" to the given position
Limit.teratorCCvalid 22 5hec" Ehether the current element is valid
Parent.teratorCCget5hildren 22 Return the inner iteratorHs children contained in a Parent.terator
Parent.teratorCChas5hildren 22 5hec" Ehether the inner iteratorHs current element has children
Parent.teratorCCneFt 22 Move the iterator (orEard
Parent.teratorCCreEind 22 ReEind the iterator
RecursiveDirectory.teratorCCget5hildren 22 Returns an iterator (or the current entry i( it is a directory
RecursiveDirectory.teratorCChas5hildren 22 Returns Ehether current entry is a directory and not H;H or
H;;H
RecursiveDirectory.teratorCC"ey 22 Return path and (ilename o( current dir entry
RecursiveDirectory.teratorCCneFt 22 Move to neFt entry
RecursiveDirectory.teratorCCreEind 22 ReEind dir #ac" to the start
Recursive.terator.teratorCCcurrent 22 Access the current element value
Recursive.terator.teratorCCgetDepth 22 Get the current depth o( the recursive iteration
Recursive.terator.teratorCCgetu#.terator 22 ,he current active su# iterator
Recursive.terator.teratorCC"ey 22 Access the current "ey
Recursive.terator.teratorCCneFt 22 Move (orEard to the neFt element
Recursive.terator.teratorCCreEind 22 ReEind the iterator to the (irst element o( the top level inner
iterator
Recursive.terator.teratorCCvalid 22 5hec" Ehether the current position is valid
impleJML.teratorCCcurrent 22 Return current impleJML entry
impleJML.teratorCCget5hildren 22 Returns an iterator (or the current entry i( it is a impleJML
o#'ect
impleJML.teratorCChas5hildren 22 Returns Ehether current entry is a impleJML o#'ect
impleJML.teratorCC"ey 22 Return current impleJML "ey
impleJML.teratorCCneFt 22 Move to neFt entry
impleJML.teratorCCreEind 22 ReEind impleJML #ac" to the start
impleJML.teratorCCvalid 22 5hec" Ehether impleJML contains more entries
classZimplements 22 Return the inter(aces Ehich are implemented #y the given class
classZparents 22 Return the parent classes o( the given class
iteratorZcount 22 5ount the elements in an iterator
iteratorZtoZarray 22 5opy the iterator into an array
splZclasses 22 Return availa#le PL classes
ArrayIterator--current
>no version in(ormationA might #e only in 5$?
Array.teratorCCcurrent 22 Return current array entry
Kescription
miFed ArrayIterator--current > void ?
,his (unction returns the current array entry
E'emplo !. ArrayIterator--current./ e+ample
<?php
$array > array3M6M >> MoneM,
MCM >> Mt8oM,
M<M >> MthreeM9;
$arrayobject > ne8 ,rray?bject3$array9;
$iterator > $arrayobjectF>Eet4terator39;
#or3$iterator > $arrayobjectF>Eet4terator39;
$iteratorF>=alid39;
$iteratorF>next399 :
echo $iteratorF>Iey39 . M >> M . $iteratorF>current39 . "Vn";
;
?>
,he a#ove eFample Eill outputC
6 >> one
C >> t8o
< >> three
ArrayIterator--Bey
>no version in(ormationA might #e only in 5$?
Array.teratorCC"ey 22 Return current array "ey
Kescription
miFed ArrayIterator--Bey > void ?
,his (unction returns the current array "ey
E'emplo !. ArrayIterator--Bey./ e+ample
<?php
$array > array3MIeyM >> M=alueM9;
$arrayobject > ne8 ,rray?bject3$array9;
$iterator > $arrayobjectF>Eet4terator39;
echo $iteratorF>Iey39; //Iey
?>
ArrayIterator--ne+t
>no version in(ormationA might #e only in 5$?
Array.teratorCCneFt 22 Move to neFt entry
Kescription
void ArrayIterator--ne+t > void ?
,his (unction moves the iterator to the neFt entry;
E'emplo !. ArrayIterator--ne+t./ e+ample
<?php
$arrayobject > ne8 ,rray?bject39;
$arrayobject)/ > M0eroM;
$arrayobject)/ > MoneM;
$iterator > $arrayobjectF>Eet4terator39;
8hile3$iteratorF>=alid399 :
echo $iteratorF>Iey39 . M >> M . $iteratorF>current39 . "Vn";
$iteratorF>next39;
;
?>
,he a#ove eFample Eill outputC
2 >> 0ero
6 >> one
ArrayIterator--re3ind
>no version in(ormationA might #e only in 5$?
Array.teratorCCreEind 22 ReEind array #ac" to the start
Kescription
void ArrayIterator--re3ind > void ?
,his (unction reEinds the iterator to the #eginning;
E'emplo !. ArrayIterator--re3ind./ e+ample
<?php
$arrayobject > ne8 ,rray?bject39;
$arrayobject)/ > M0eroM;
$arrayobject)/ > MoneM;
$arrayobject)/ > Mt8oM;
$iterator > $arrayobjectF>Eet4terator39;
$iteratorF>next39;
echo $iteratorF>Iey39; //6
$iteratorF>re8ind39; //re8indinE to the beEininE
echo $iteratorF>Iey39; //2
?>
ArrayIterator--seeB
>no version in(ormationA might #e only in 5$?
Array.teratorCCsee" 22 ee" to position
Kescription
void ArrayIterator--seeB > int position ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ArrayIterator--5alid
>no version in(ormationA might #e only in 5$?
Array.teratorCCvalid 22 5hec" Ehether array contains more entries
Kescription
#ool ArrayIterator--5alid > void ?
,his (unction chec"s i( the array contains any more entries;
E'emplo !. ArrayIterator--5alid./ e+ample
<?php
$array > array3M6M >> MoneM9;
$arrayobject > ne8 ,rray?bject3$array9;
$iterator > $arrayobjectF>Eet4terator39;
=ar%dump3$iteratorF>=alid399; //bool3true9
$iteratorF>next39; // ad=ance to the next item
//bool3#alse9 because there is only one array element
=ar%dump3$iteratorF>=alid399;
?>
ArrayJb'ect--append
>no version in(ormationA might #e only in 5$?
ArrayO#'ectCCappend 22 Appends the value
Kescription
void ArrayJb'ect--append > miFed neEval ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ArrayJb'ect-->>construct
>no version in(ormationA might #e only in 5$?
ArrayO#'ectCCZZconstruct 22 5onstruct a neE array o#'ect
Kescription
ArrayO#'ect ArrayJb'ect-->>construct > miFed input ?
,his constructs a neE array o#'ect; ,he 6nput parameter accepts an array or another ArrayO#'ect;
E'emplo !. ArrayJb'ect-->>construct./ e+ample
<?php
$array > array3M6M >> MoneM,
MCM >> Mt8oM,
M<M >> MthreeM9;
$arrayobject > ne8 ,rray?bject3$array9;
=ar%dump3$arrayobject9;
?>
,he a#ove eFample Eill outputC
object3,rray?bject9U6 3<9 :
)6/>>
strinE3<9 "one"
)C/>>
strinE3<9 "t8o"
)</>>
strinE359 "three"
;
ArrayJb'ect--count
>no version in(ormationA might #e only in 5$?
ArrayO#'ectCCcount 22 Return the num#er o( elements in the .terator
Kescription
int ArrayJb'ect--count > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ArrayJb'ect--getIterator
>no version in(ormationA might #e only in 5$?
ArrayO#'ectCCget.terator 22 5reate a neE iterator (rom an ArrayO#'ect instance
Kescription
Array.terator ArrayJb'ect--getIterator > void ?
,his (unction Eill return an iterator (rom an ArrayO#'ect;
E'emplo !. ArrayJb'ect--getIterator./ e+ample
<?php
$array > array3M6M >> MoneM,
MCM >> Mt8oM,
M<M >> MthreeM9;
$arrayobject > ne8 ,rray?bject3$array9;
$iterator > $arrayobjectF>Eet4terator39;
8hile3$iteratorF>=alid399 :
echo $iteratorF>Iey39 . M >> M . $iteratorF>current39 . "Vn";
$iteratorF>next39;
;
?>
,he a#ove eFample Eill outputC
6 >> one
C >> t8o
< >> three
ArrayJb'ect--offsetE+ists
>no version in(ormationA might #e only in 5$?
ArrayO#'ectCCo((set+Fists 22 Returns Ehether the re/uested YindeF eFists
Kescription
#ool ArrayJb'ect--offsetE+ists > miFed indeF ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ArrayJb'ect--offsetFet
>no version in(ormationA might #e only in 5$?
ArrayO#'ectCCo((setGet 22 Returns the value at the speci(ied YindeF
Kescription
#ool ArrayJb'ect--offsetFet > miFed indeF ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ArrayJb'ect--offset,et
>no version in(ormationA might #e only in 5$?
ArrayO#'ectCCo((setet 22 ets the value at the speci(ied YindeF to YneEval
Kescription
void ArrayJb'ect--offset,et > miFed indeFA miFed neEval ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ArrayJb'ect--offset)nset
>no version in(ormationA might #e only in 5$?
ArrayO#'ectCCo((set@nset 22 @nsets the value at the speci(ied YindeF
Kescription
void ArrayJb'ect--offset)nset > miFed indeF ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
CachingIterator--hasNe+t
>no version in(ormationA might #e only in 5$?
5aching.teratorCChasNeFt 22 5hec" Ehether the inner iterator has a valid neFt element
Kescription
#oolean CachingIterator--hasNe+t > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
CachingIterator--ne+t
>no version in(ormationA might #e only in 5$?
5aching.teratorCCneFt 22 Move the iterator (orEard
Kescription
void CachingIterator--ne+t > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
CachingIterator--re3ind
>no version in(ormationA might #e only in 5$?
5aching.teratorCCreEind 22 ReEind the iterator
Kescription
void CachingIterator--re3ind > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
CachingIterator-->>to,tring
>no version in(ormationA might #e only in 5$?
5aching.teratorCCZZtotring 22 Return the string representation o( the current element
Kescription
string CachingIterator-->>to,tring > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
CachingIterator--5alid
>no version in(ormationA might #e only in 5$?
5aching.teratorCCvalid 22 5hec" Ehether the current element is valid
Kescription
#oolean CachingIterator--5alid > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
CachingMecursi5eIterator--getChildren
>no version in(ormationA might #e only in 5$?
5achingRecursive.teratorCCget5hildren 22 Return the inner iteratorHs children as a
5achingRecursive.terator
Kescription
5achingRecursive.terator CachingMecursi5eIterator--getChildren > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
CachingMecursi5eIterator--hasChildren
>no version in(ormationA might #e only in 5$?
5achingRecursive.teratorCChas5hildren 22 5hec" Ehether the current element o( the inner iterator
has children
Kescription
#olean CachingMecursi5eIterator--hasChildren > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator-->>construct
>no version in(ormationA might #e only in 5$?
Directory.teratorCCZZconstruct 22 5onstructs a neE dir iterator (rom a path
Kescription
Directory.terator KirectoryIterator-->>construct > string path ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--current
>no version in(ormationA might #e only in 5$?
Directory.teratorCCcurrent 22 Return this >needed (or .terator inter(ace?
Kescription
Directory.terator KirectoryIterator--current > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--getATime
>no version in(ormationA might #e only in 5$?
Directory.teratorCCgetA,ime 22 Get last access time o( (ile
Kescription
int KirectoryIterator--getATime > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--getCTime
>no version in(ormationA might #e only in 5$?
Directory.teratorCCget5,ime 22 Get inode modi(ication time o( (ile
Kescription
int KirectoryIterator--getCTime > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--getChildren
>no version in(ormationA might #e only in 5$?
Directory.teratorCCget5hildren 22 Returns an iterator (or the current entry i( it is a directory
Kescription
RecursiveDirectory.terator KirectoryIterator--getChildren > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--get;ilename
>no version in(ormationA might #e only in 5$?
Directory.teratorCCgetFilename 22 Return (ilename o( current dir entry
Kescription
string KirectoryIterator--get;ilename > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--getFroup
>no version in(ormationA might #e only in 5$?
Directory.teratorCCgetGroup 22 Get (ile group
Kescription
int KirectoryIterator--getFroup > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--getInode
>no version in(ormationA might #e only in 5$?
Directory.teratorCCget.node 22 Get (ile inode
Kescription
int KirectoryIterator--getInode > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--getMTime
>no version in(ormationA might #e only in 5$?
Directory.teratorCCgetM,ime 22 Get last modi(ication time o( (ile
Kescription
int KirectoryIterator--getMTime > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--getJ3ner
>no version in(ormationA might #e only in 5$?
Directory.teratorCCgetOEner 22 Get (ile oEner
Kescription
int KirectoryIterator--getJ3ner > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--getPath
>no version in(ormationA might #e only in 5$?
Directory.teratorCCgetPath 22 Return directory path
Kescription
string KirectoryIterator--getPath > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--getPathname
>no version in(ormationA might #e only in 5$?
Directory.teratorCCgetPathname 22 Return path and (ilename o( current dir entry
Kescription
string KirectoryIterator--getPathname > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--getPerms
>no version in(ormationA might #e only in 5$?
Directory.teratorCCgetPerms 22 Get (ile permissions
Kescription
int KirectoryIterator--getPerms > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--get,i6e
>no version in(ormationA might #e only in 5$?
Directory.teratorCCgetize 22 Get (ile size
Kescription
int KirectoryIterator--get,i6e > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--getType
>no version in(ormationA might #e only in 5$?
Directory.teratorCCget,ype 22 Get (ile type
Kescription
string KirectoryIterator--getType > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--isKir
>no version in(ormationA might #e only in 5$?
Directory.teratorCCisDir 22 Returns true i( (ile is directory
Kescription
#ool KirectoryIterator--isKir > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--isKot
>no version in(ormationA might #e only in 5$?
Directory.teratorCCisDot 22 Returns true i( current entry is H;H or H;;H
Kescription
#ool KirectoryIterator--isKot > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--isE+ecutable
>no version in(ormationA might #e only in 5$?
Directory.teratorCCis+Fecuta#le 22 Returns true i( (ile is eFecuta#le
Kescription
#ool KirectoryIterator--isE+ecutable > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--is;ile
>no version in(ormationA might #e only in 5$?
Directory.teratorCCisFile 22 Returns true i( (ile is a regular (ile
Kescription
#ool KirectoryIterator--is;ile > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--is:inB
>no version in(ormationA might #e only in 5$?
Directory.teratorCCisLin" 22 Returns true i( (ile is sym#olic lin"
Kescription
#ool KirectoryIterator--is:inB > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--isMeadable
>no version in(ormationA might #e only in 5$?
Directory.teratorCCisReada#le 22 Returns true i( (ile can #e read
Kescription
#ool KirectoryIterator--isMeadable > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--is2ritable
>no version in(ormationA might #e only in 5$?
Directory.teratorCCisLrita#le 22 Returns true i( (ile can #e Eritten
Kescription
#ool KirectoryIterator--is2ritable > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--Bey
>no version in(ormationA might #e only in 5$?
Directory.teratorCC"ey 22 Return current dir entry
Kescription
string KirectoryIterator--Bey > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--ne+t
>no version in(ormationA might #e only in 5$?
Directory.teratorCCneFt 22 Move to neFt entry
Kescription
void KirectoryIterator--ne+t > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--re3ind
>no version in(ormationA might #e only in 5$?
Directory.teratorCCreEind 22 ReEind dir #ac" to the start
Kescription
void KirectoryIterator--re3ind > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
KirectoryIterator--5alid
>no version in(ormationA might #e only in 5$?
Directory.teratorCCvalid 22 5hec" Ehether dir contains more entries
Kescription
string KirectoryIterator--5alid > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
;ilterIterator--current
>no version in(ormationA might #e only in 5$?
Filter.teratorCCcurrent 22 Get the current element value
Kescription
miFed ;ilterIterator--current > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
;ilterIterator--getInnerIterator
>no version in(ormationA might #e only in 5$?
Filter.teratorCCget.nner.terator 22 Get the inner iterator
Kescription
.terator ;ilterIterator--getInnerIterator > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
;ilterIterator--Bey
>no version in(ormationA might #e only in 5$?
Filter.teratorCC"ey 22 Get the current "ey
Kescription
miFed ;ilterIterator--Bey > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
;ilterIterator--ne+t
>no version in(ormationA might #e only in 5$?
Filter.teratorCCneFt 22 Move the iterator (orEard
Kescription
void ;ilterIterator--ne+t > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
;ilterIterator--re3ind
>no version in(ormationA might #e only in 5$?
Filter.teratorCCreEind 22 ReEind the iterator
Kescription
void ;ilterIterator--re3ind > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
;ilterIterator--5alid
>no version in(ormationA might #e only in 5$?
Filter.teratorCCvalid 22 5hec" Ehether the current element is valid
Kescription
#oolean ;ilterIterator--5alid > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
:imitIterator--getPosition
>no version in(ormationA might #e only in 5$?
Limit.teratorCCgetPosition 22 Return the current position
Kescription
int :imitIterator--getPosition > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
:imitIterator--ne+t
>no version in(ormationA might #e only in 5$?
Limit.teratorCCneFt 22 Move the iterator (orEard
Kescription
void :imitIterator--ne+t > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
:imitIterator--re3ind
>no version in(ormationA might #e only in 5$?
Limit.teratorCCreEind 22 ReEind the iterator to the speci(ied starting o((set
Kescription
void :imitIterator--re3ind > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
:imitIterator--seeB
>no version in(ormationA might #e only in 5$?
Limit.teratorCCsee" 22 ee" to the given position
Kescription
void :imitIterator--seeB > int position ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
:imitIterator--5alid
>no version in(ormationA might #e only in 5$?
Limit.teratorCCvalid 22 5hec" Ehether the current element is valid
Kescription
#oolean :imitIterator--5alid > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ParentIterator--getChildren
>no version in(ormationA might #e only in 5$?
Parent.teratorCCget5hildren 22 Return the inner iteratorHs children contained in a Parent.terator
Kescription
Parent.terator ParentIterator--getChildren > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ParentIterator--hasChildren
>no version in(ormationA might #e only in 5$?
Parent.teratorCChas5hildren 22 5hec" Ehether the inner iteratorHs current element has children
Kescription
#oolean ParentIterator--hasChildren > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ParentIterator--ne+t
>no version in(ormationA might #e only in 5$?
Parent.teratorCCneFt 22 Move the iterator (orEard
Kescription
void ParentIterator--ne+t > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ParentIterator--re3ind
>no version in(ormationA might #e only in 5$?
Parent.teratorCCreEind 22 ReEind the iterator
Kescription
void ParentIterator--re3ind > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Mecursi5eKirectoryIterator--getChildren
>no version in(ormationA might #e only in 5$?
RecursiveDirectory.teratorCCget5hildren 22 Returns an iterator (or the current entry i( it is a directory
Kescription
o#'ect Mecursi5eKirectoryIterator--getChildren > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Mecursi5eKirectoryIterator--hasChildren
>no version in(ormationA might #e only in 5$?
RecursiveDirectory.teratorCChas5hildren 22 Returns Ehether current entry is a directory and not H;H or
H;;H
Kescription
#ool Mecursi5eKirectoryIterator--hasChildren > P#ool alloEZlin"sQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Mecursi5eKirectoryIterator--Bey
>no version in(ormationA might #e only in 5$?
RecursiveDirectory.teratorCC"ey 22 Return path and (ilename o( current dir entry
Kescription
string Mecursi5eKirectoryIterator--Bey > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Mecursi5eKirectoryIterator--ne+t
>no version in(ormationA might #e only in 5$?
RecursiveDirectory.teratorCCneFt 22 Move to neFt entry
Kescription
void Mecursi5eKirectoryIterator--ne+t > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Mecursi5eKirectoryIterator--re3ind
>no version in(ormationA might #e only in 5$?
RecursiveDirectory.teratorCCreEind 22 ReEind dir #ac" to the start
Kescription
void Mecursi5eKirectoryIterator--re3ind > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Mecursi5eIteratorIterator--current
>no version in(ormationA might #e only in 5$?
Recursive.terator.teratorCCcurrent 22 Access the current element value
Kescription
miFed Mecursi5eIteratorIterator--current > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Mecursi5eIteratorIterator--getKepth
>no version in(ormationA might #e only in 5$?
Recursive.terator.teratorCCgetDepth 22 Get the current depth o( the recursive iteration
Kescription
int Mecursi5eIteratorIterator--getKepth > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Mecursi5eIteratorIterator--get,ubIterator
>no version in(ormationA might #e only in 5$?
Recursive.terator.teratorCCgetu#.terator 22 ,he current active su# iterator
Kescription
Recursive.terator Mecursi5eIteratorIterator--get,ubIterator > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Mecursi5eIteratorIterator--Bey
>no version in(ormationA might #e only in 5$?
Recursive.terator.teratorCC"ey 22 Access the current "ey
Kescription
miFed Mecursi5eIteratorIterator--Bey > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Mecursi5eIteratorIterator--ne+t
>no version in(ormationA might #e only in 5$?
Recursive.terator.teratorCCneFt 22 Move (orEard to the neFt element
Kescription
void Mecursi5eIteratorIterator--ne+t > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Mecursi5eIteratorIterator--re3ind
>no version in(ormationA might #e only in 5$?
Recursive.terator.teratorCCreEind 22 ReEind the iterator to the (irst element o( the top level inner
iterator
Kescription
void Mecursi5eIteratorIterator--re3ind > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Mecursi5eIteratorIterator--5alid
>no version in(ormationA might #e only in 5$?
Recursive.terator.teratorCCvalid 22 5hec" Ehether the current position is valid
Kescription
#olean Mecursi5eIteratorIterator--5alid > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
,impleIM:Iterator--current
>no version in(ormationA might #e only in 5$?
impleJML.teratorCCcurrent 22 Return current impleJML entry
Kescription
miFed ,impleIM:Iterator--current > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
,impleIM:Iterator--getChildren
>no version in(ormationA might #e only in 5$?
impleJML.teratorCCget5hildren 22 Returns an iterator (or the current entry i( it is a impleJML
o#'ect
Kescription
o#'ect ,impleIM:Iterator--getChildren > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
,impleIM:Iterator--hasChildren
>no version in(ormationA might #e only in 5$?
impleJML.teratorCChas5hildren 22 Returns Ehether current entry is a impleJML o#'ect
Kescription
#ool ,impleIM:Iterator--hasChildren > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
,impleIM:Iterator--Bey
>no version in(ormationA might #e only in 5$?
impleJML.teratorCC"ey 22 Return current impleJML "ey
Kescription
miFed ,impleIM:Iterator--Bey > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
,impleIM:Iterator--ne+t
>no version in(ormationA might #e only in 5$?
impleJML.teratorCCneFt 22 Move to neFt entry
Kescription
void ,impleIM:Iterator--ne+t > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
,impleIM:Iterator--re3ind
>no version in(ormationA might #e only in 5$?
impleJML.teratorCCreEind 22 ReEind impleJML #ac" to the start
Kescription
void ,impleIM:Iterator--re3ind > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
,impleIM:Iterator--5alid
>no version in(ormationA might #e only in 5$?
impleJML.teratorCCvalid 22 5hec" Ehether impleJML contains more entries
Kescription
#ool ,impleIM:Iterator--5alid > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
class>implements
>P&P 4?
classZimplements 22 Return the inter(aces Ehich are implemented #y the given class
Kescription
array class>implements > o#'ect class ?
,his (unction returns an array Eith the name o( the inter(aces that the given class implements;
E'emplo !. class>implements./ e+ample
<?php
inter#ace #oo : ;
class bar implements #oo :;
print%r3class%implements3ne8 bar99;
?>
+l resultado del e'emplo seriaC
,rray
3
)#oo/ >> #oo
9
class>parents
>P&P 4?
classZparents 22 Return the parent classes o( the given class
Kescription
array class>parents > o#'ect class ?
,his (unction returns an array Eith the name o( the parent classes o( the given class;
E'emplo !. class>parents./ e+ample
<?php
class #oo : ;
class bar extends #oo :;
print%r3class%parents3ne8 bar99;
?>
+l resultado del e'emplo seriaC
,rray
3
)#oo/ >> #oo
9
iterator>count
>no version in(ormationA might #e only in 5$?
iteratorZcount 22 5ount the elements in an iterator
Kescription
int iterator>count > .teratorAggregate iterator ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
iterator>to>array
>no version in(ormationA might #e only in 5$?
iteratorZtoZarray 22 5opy the iterator into an array
Kescription
array iterator>to>array > .teratorAggregate iterator ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
spl>classes
>P&P 4?
splZclasses 22 Return availa#le PL classes
Kescription
array spl>classes > void ?
,his (unction returns an array Eith the current availa#le PL classes;
E'emplo !. spl>classes./ e+ample
<?php
print%r3spl%classes399;
?>
+l resultado del e'emplo seria algo similar aC
,rray
3
),rray?bject/ >> ,rray?bject
),rray4terator/ >> ,rray4terator
)RachinE4terator/ >> RachinE4terator
)RachinE'ecursi=e4terator/ >> RachinE'ecursi=e4terator
)Lirectory4terator/ >> Lirectory4terator
)Silter4terator/ >> Silter4terator
)Oimit4terator/ >> Oimit4terator
)arent4terator/ >> arent4terator
)'ecursi=eLirectory4terator/ >> 'ecursi=eLirectory4terator
)'ecursi=e4terator/ >> 'ecursi=e4terator
)'ecursi=e4terator4terator/ >> 'ecursi=e4terator4terator
)&eeIable4terator/ >> &eeIable4terator
)&impleX"O4terator/ >> &impleX"O4terator
9
CICIII. ,$:ite ;unctions
Introducci"n
,his is an eFtension (or the OLite +m#edda#le OL Data#ase +ngine; OLite is a 5 li#rary that
implements an em#edda#le OL data#ase engine; Programs that lin" Eith the OLite li#rary can
have OL data#ase access Eithout running a separate RDBM process;
OLite is not a client li#rary used to connect to a #ig data#ase server; OLite is the server; ,he
OLite li#rary reads and Erites directly to and (rom the data#ase (iles on dis";
Nota- For (urther in(ormation see the OLite Le#site >httpCDDs/lite;orgD?;
Installation
Read the .N,ALL (ileA Ehich comes Eith the pac"age; Or 'ust use the P+AR installer Eith =pear
install s/lite=; OLite itsel( is already includedA %ou do not need to install any additional so(tEare;
LindoEs users may doEnload the DLL version o( the OLite eFtension hereC >phpZs/lite;dll?;
.n P&P 4A the OLite eFtension and the engine itsel( are #undled and compiled #y de(ault;
2indo3s installation for unpri5ileged accounts- On LindoEs operating systemsA
unprivileged accounts donHt have the TM+ environment varia#le set #y de(ault; ,his Eill
ma"e s/lite create temporary (iles in the EindoEs directoryA Ehich is not desira#le; oA
you should set the TM+ environment varia#le (or the Ee# server or the user account the
Ee# server is running under; .( Apache is your Ee# serverA you can accomplish this via a
,etEn5 directive in your httpd.con# (ile; For eFampleC
&etEn= *" c@/temp
.( you are una#le to esta#lish this setting at the server levelA you can implement the
setting in your scriptC
puten=3M*">R@/tempM9;
,he setting must re(er to a directory that the Ee# server has permission to create (iles in
and su#se/uently Erite to and delete the (iles it created; OtherEiseA you may receive the
(olloEing error messageC mal#ormed database schema F unable to open
a temporary database #ile #or storinE temporary tables
Me?uirimientos
.n order to have these (unctions availa#leA you must compile P&P Eith OLite supportA or load the
OLite eFtension dynamically (rom your php.ini;
Tipos de recursos
,here are tEo resources used in the OLite .nter(ace; ,he (irst one is the data#ase connectionA the
second one the result set;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
,he (unctions s?lite>fetch>array./ and s?lite>current./ use a constant (or the di((erent types o(
result arrays; ,he (olloEing constants are de(inedC
,$:ite result type constants
S.LITE_ASSOC >int?
5olumns are returned into the array having the (ield name as the array indeF;
S.LITE_(OTH >int?
5olumns are returned into the array having #oth a numerical indeF and the (ield name as the
array indeF;
S.LITE_NUM >int?
5olumns are returned into the array having a numerical indeF to the (ields; ,his indeF starts
Eith 3A the (irst (ield in the result;
A num#er o( (unctions may return status codes; ,he (olloEing constants are de(inedC
,$:ite status code constants
S.LITE_O& >int?
uccess(ul result;
S.LITE_ERROR >int?
OL error or missing data#ase;
S.LITE_INTERNAL >int?
An internal logic error in OLite;
S.LITE_PERM >int?
Access permission denied;
S.LITE_A(ORT >int?
5all#ac" routine re/uested an a#ort;
S.LITE_(USY >int?
,he data#ase (ile is loc"ed;
S.LITE_LOC&ED >int?
A ta#le in the data#ase is loc"ed;
S.LITE_NOMEM >int?
Memory allocation (ailed;
S.LITE_READONLY >int?
Attempt to Erite a readonly data#ase;
S.LITE_INTERRUPT >int?
Operation terminated internally;
S.LITE_IOERR >int?
Dis" .DO error occurred;
S.LITE_CORRUPT >int?
,he data#ase dis" image is mal(ormed;
S.LITE_NOTFOUND >int?
>.nternal? ,a#le or record not (ound;
S.LITE_FULL >int?
.nsertion (ailed #ecause data#ase is (ull;
S.LITE_CANTOPEN >int?
@na#le to open the data#ase (ile;
S.LITE_PROTOCOL >int?
Data#ase loc" protocol error;
S.LITE_EMPTY >int?
>.nternal? Data#ase ta#le is empty;
S.LITE_SCHEMA >int?
,he data#ase schema changed;
S.LITE_TOO(I# >int?
,oo much data (or one roE o( a ta#le;
S.LITE_CONSTRAINT >int?
A#ort due to constraint violation;
S.LITE_MISMATCH >int?
Data type mismatch;
S.LITE_MISUSE >int?
Li#rary used incorrectly;
S.LITE_NOLFS >int?
@ses o( O (eatures not supported on host;
S.LITE_AUTH >int?
Authorized (ailed;
S.LITE_RO" >int?
.nternal process has another roE ready;
S.LITE_DONE >int?
.nternal process has (inished eFecuting;
Clases predefinidas
,$:iteKatabase
Represents an opened OLite data#ase;
Constructor
ZZconstruct 2 construct a neE OLiteData#ase o#'ect
M%todos
/uery 2 +Fecute a /uery
/uery+Fec 2 +Fecute a result2less /uery
arrayOuery 2 +Fecute a /uery and return the result as an array
singleOuery 2 +Fecute a /uery and return either an array (or one single column or the value
o( the (irst roE
un#u((eredOuery 2 +Fecute an un#u((ered /uery
last.nsertRoEid 2 Returns the roEid o( the most recently inserted roE
changes 2 Returns the num#er o( roEs changed #y the most recent statement
createAggregate 2 Register an aggregating @DF (or use in OL statements
createFunction 2 Register a @DF (or use in OL statements
#usy,imeout 2 ets or disa#les #usy timeout duration
last+rorr 2 Returns the last error code o( the most recently encountered error
(etch5olumn,ypes 2 Return an array o( column types (rom a particular ta#le
,$:iteMesult
Represents a #u((ered OLite result set;
M%todos
(etch 2 Fetches the neFt roE (rom the result set as an array
(etchO#'ect 2 Fetches the neFt roE (rom the result set as an o#'ect
(etchingle 2 Fetches the (irst column (rom the result set as a string
(etchAll 2 Fetches all roEs (rom the result set as an array o( arrays
column 2 Fetches a column (rom the current roE o( the result set
numFields 2 Returns the num#er o( (ields in the result set
(ieldName 2 Returns the name o( a particular (ield in the result set
current 2 Fetches the current roE (rom the result set as an array
"ey 2 Return the current roE indeF
neFt 2 ee" to the neFt roE num#er
valid 2 Returns Ehether more roEs are availa#le
reEind 2 ee" to the (irst roE num#er o( the result set
prev 2 ee" to the previous roE num#er o( the result set
hasPrev 2 Returns Ehether or not a previous roE is availa#le
numRoEs 2 Returns the num#er o( roEs in the result set
see" 2 ee" to a particular roE num#er
,$:ite)nbuffered
Represents an un#u((ered OLite result set; @n#u((ered results sets are se/uentialA (orEard2see"ing
only;
M%todos
(etch 2 Fetches the neFt roE (rom the result set as an array
(etchO#'ect 2 Fetches the neFt roE (rom the result set as an o#'ect
(etchingle 2 Fetches the (irst column (rom the result set as a string
(etchAll 2 Fetches all roEs (rom the result set as an array o( arrays
column 2 Fetches a column (rom the current roE o( the result set
numFields 2 Returns the num#er o( (ields in the result set
(ieldName 2 Returns the name o( a particular (ield in the result set
current 2 Fetches the current roE (rom the result set as an array
neFt 2 ee" to the neFt roE num#er
valid 2 Returns Ehether more roEs are availa#le
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. ,$:ite Configure Jptions
Name Kefault Changeable
s/lite;assocZcas
e
3 P&PZ.N.ZALL
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
s@l6te.assoc_case int
Lhether to use miFed case >0?A upper case >1? or loEer case >2? hash indeFes;
,his option is primarily use(ul Ehen you need compati#ility Eith other data#ase systemsA
Ehere the names o( the columns are alEays returned as uppercase or loEercaseA regardless o(
the case o( the actual (ield names in the data#ase schema;
,he OLite li#rary returns the column names in their natural case >that matches the case you
used in your schema?; Lhen s@l6te.assoc_case is set to 0 the natural case Eill #e preserved;
Lhen it is set to 1 or 2A P&P Eill apply case (olding on the hash "eys to upper2 or loEer2case
the "eysA respectively;
@se o( this option incurs a slight per(ormance penaltyA #ut is M@5& (aster than per(orming
the case (olding yoursel( using P&P script;
Tabla de contenidos
s/liteZarrayZ/uery 22 +Fecute a /uery against a given data#ase and returns an array
s/liteZ#usyZtimeout 22 et #usy timeout durationA or disa#le #usy handlers
s/liteZchanges 22 Returns the num#er o( roEs that Eere changed #y the most recent OL statement
s/liteZclose 22 5loses an open OLite data#ase
s/liteZcolumn 22 Fetches a column (rom the current roE o( a result set
s/liteZcreateZaggregate 22 Register an aggregating @DF (or use in OL statements
s/liteZcreateZ(unction 22 Registers a =regular= @ser De(ined Function (or use in OL statements
s/liteZcurrent 22 Fetches the current roE (rom a result set as an array
s/liteZerrorZstring 22 Returns the teFtual description o( an error code
s/liteZescapeZstring 22 +scapes a string (or use as a /uery parameter
s/liteZeFec 22 +Fecutes a result2less /uery against a given data#ase
s/liteZ(actory 22 Opens a OLite data#ase and returns a OLiteData#ase o#'ect
s/liteZ(etchZall 22 Fetches all roEs (rom a result set as an array o( arrays
s/liteZ(etchZarray 22 Fetches the neFt roE (rom a result set as an array
s/liteZ(etchZcolumnZtypes 22 Return an array o( column types (rom a particular ta#le
s/liteZ(etchZo#'ect 22 Fetches the neFt roE (rom a result set as an o#'ect
s/liteZ(etchZsingle 22 Fetches the (irst column o( a result set as a string
s/liteZ(etchZstring 22 Alias o( s?lite>fetch>single./
s/liteZ(ieldZname 22 Returns the name o( a particular (ield
s/liteZhasZmore 22 Finds Ehether or not more roEs are availa#le
s/liteZhasZprev 22 Returns Ehether or not a previous roE is availa#le
s/liteZ"ey 22 Returns the current roE indeF
s/liteZlastZerror 22 Returns the error code o( the last error (or a data#ase
s/liteZlastZinsertZroEid 22 Returns the roEid o( the most recently inserted roE
s/liteZli#encoding 22 Returns the encoding o( the lin"ed OLite li#rary
s/liteZli#version 22 Returns the version o( the lin"ed OLite li#rary
s/liteZneFt 22 ee" to the neFt roE num#er
s/liteZnumZ(ields 22 Returns the num#er o( (ields in a result set
s/liteZnumZroEs 22 Returns the num#er o( roEs in a #u((ered result set
s/liteZopen 22 Opens a OLite data#ase and create the data#ase i( it does not eFist
s/liteZpopen 22 Opens a persistent handle to an OLite data#ase and create the data#ase i( it does
not eFist
s/liteZprev 22 ee" to the previous roE num#er o( a result set
s/liteZ/uery 22 +Fecutes a /uery against a given data#ase and returns a result handle
s/liteZreEind 22 ee" to the (irst roE num#er
s/liteZsee" 22 ee" to a particular roE num#er o( a #u((ered result set
s/liteZsingleZ/uery 22 +Fecutes a /uery and returns either an array (or one single column or the
value o( the (irst roE
s/liteZud(ZdecodeZ#inary 22 Decode #inary data passed as parameters to an @DF
s/liteZud(ZencodeZ#inary 22 +ncode #inary data #e(ore returning it (rom an @DF
s/liteZun#u((eredZ/uery 22 +Fecute a /uery that does not pre(etch and #u((er all data
s/liteZvalid 22 Returns Ehether more roEs are availa#le
s?lite>array>?uery
>P&P 4?
s/liteZarrayZ/uery
>no version in(ormationA might #e only in 5$?
OLiteData#ase2_arrayOuery 22 +Fecute a /uery against a given data#ase and returns an array
Kescripci"n
array s?lite>array>?uery > resource d#handleA string /uery PA int resultZtype PA #ool
decodeZ#inaryQQ ?
array s?lite>array>?uery > string /ueryA resource d#handle PA int resultZtype PA #ool
decodeZ#inaryQQ ?
O#'ect oriented style >method?C
class ,$:iteKatabase \
array array$uery > string /uery PA int resultZtype PA #ool decodeZ#inaryQQ ?
]
s?lite>array>?uery./ eFecutes the given /uery and returns an array o( the entire result set; .t is
similar to calling s?lite>?uery./ and then s?lite>fetch>array./ (or each roE in the result set;
s?lite>array>?uery./ is signi(icantly (aster than the a(orementioned;
,ugerencia- s?lite>array>?uery./ is #est suited to /ueries returning 84 roEs or less; .(
you have more data than thatA it is recommended that you Erite your scripts to use
s?lite>unbuffered>?uery./ instead (or more optimal per(ormance;
:ista de parmetros
@uer?
,he /uery to #e eFecuted;
#1han#le
,he OLite Data#ase resourceX returned (rom s?lite>open ./ Ehen used procedurally; ,his
parameter is not re/uired Ehen using the o#'ect2oriented method;
result_t?pe
,he optional result_t?pe parameter accepts a constant and determines hoE the returned array
Eill #e indeFed; @sing S.LITE_ASSOC Eill return only associative indices >named (ields?
Ehile S.LITE_NUM Eill return only numerical indices >ordinal (ield num#ers?;
S.LITE_(OTH Eill return #oth associative and numerical indices; S.LITE_(OTH is the
de(ault (or this (unction;
#eco#e_16nar?
Lhen the #eco#e_16nar? parameter is set to TRUE >the de(ault?A P&P Eill decode the #inary
encoding it applied to the data i( it Eas encoded using the s?lite>escape>string./; %ou should
normally leave this value at its de(aultA unless you are interoperating Eith data#ases created #y
other s/lite capa#le applications;
Nota- ,Eo alternative syntaFes are supported (or compati#ility Eith other data#ase
eFtensions >such as MyOL?; ,he pre(erred (orm is the (irstA Ehere the #1han#le
parameter is the (irst parameter to the (unction;
Calores retornados
Returns an array o( the entire result setX FALSE otherEise;
,he column names returned #y S.LITE_ASSOC and S.LITE_(OTH Eill #e case2(olded
according to the value o( the s/lite;assocZcase con(iguration option;
E'emplos
E'emplo !. Procedural style
<?php
$dbhandle > sQlite%open3MsQlitedbM9;
$result > sQlite%array%Query3$dbhandle, M&EOER* name, email S'?" users O4"4* C5M, &NO4*E%,&&?R9;
#oreach 3$result as $entry9 :
echo M.ame@ M . $entry)MnameM/ . M EFmail@ M . $entry)MemailM/;
;
?>
E'emplo *. Jb'ect(oriented style
<?php
$dbhandle > ne8 &NOiteLatabase3MsQlitedbM9;
$result > $dbhandleF>arrayNuery3M&EOER* name, email S'?" users O4"4* C5M, &NO4*E%,&&?R9;
#oreach 3$result as $entry9 :
echo M.ame@ M . $entry)MnameM/ . M EFmail@ M . $entry)MemailM/;
;
?>
Cer tambi%n
s?lite>?uery./
s?lite>fetch>array./
s?lite>fetch>string./
s?lite>busy>timeout
>P&P 4?
s/liteZ#usyZtimeout
>no version in(ormationA might #e only in 5$?
OLiteData#ase2_#usy,imeout 22 et #usy timeout durationA or disa#le #usy handlers
Kescripci"n
void s?lite>busy>timeout > resource d#handleA int milliseconds ?
O#'ect oriented style >method?C
class ,$:iteKatabase \
void busyTimeout > int milliseconds ?
]
et the maFimum timeA in millisecondsA that OLite Eill Eait (or a #1han#le to #ecome ready (or
use;
:ista de parmetros
#1han#le
,he OLite Data#ase resourceX returned (rom s?lite>open ./ Ehen used procedurally; ,his
parameter is not re/uired Ehen using the o#'ect2oriented method;
m6ll6secon#s
,he num#er o( milliseconds; Lhen set to 0A #usy handlers Eill #e disa#led and OLite Eill
return immediately Eith a S540TE_AUSB status code i( another processDthread has the
data#ase loc"ed (or an update;
P&P sets the de(ault #usy timeout to #e K3 seconds Ehen the data#ase is opened;
Nota- ,here are one thousand >1333? milliseconds in one second;
E'emplos
E'emplo !. Procedural style
<?php
$dbhandle > sQlite%open3MsQlitedbM9;
sQlite%busy%timeout3$dbhandle, 622229; // set timeout to 62 seconds
sQlite%busy%timeout3$dbhandle, 29; // disable busy handler
?>
E'emplo *. Jb'ect oriented style
<?php
$dbhandle > ne8 &NOiteLatabase3MsQlitedbM9;
$dbhandleF>busy*imeout3622229; // 62 seconds
$dbhandleF>busy*imeout329; // disable
?>
Cer tambi%n
s?lite>open./
s?lite>changes
>P&P 4?
s/liteZchanges
>no version in(ormationA might #e only in 5$?
OLiteData#ase2_changes 22 Returns the num#er o( roEs that Eere changed #y the most recent
OL statement
Kescripci"n
int s?lite>changes > resource d#handle ?
O#'ect oriented style >method?C
class ,$:iteKatabase \
int changes > void ?
]
Returns the num#ers o( roEs that Eere changed #y the most recent OL statement eFecuted against
the #1han#le data#ase handle;
:ista de parmetros
#1han#le
,he OLite Data#ase resourceX returned (rom s?lite>open ./ Ehen used procedurally; ,his
parameter is not re/uired Ehen using the o#'ect2oriented method;
E'emplos
E'emplo !. Procedural style
<?php
$dbhandle > sQlite%open3MmysQlitedbM9;
$Query > sQlite%Query3$dbhandle, "+L,*E users &E* email>MjLoe^example.comM 7HE'E username>MjLoeM"9;
i# 3!$Query9 :
exit3MError in Query.M9;
; else :
echo M.umber o# ro8s modi#ied@ M, sQlite%chanEes3$dbhandle9;
;
?>
E'emplo *. Jb'ect oriented style
<?php
$dbhandle > ne8 &NOiteLatabase3MmysQlitedbM9;
$Query > $dbhandleF>Query3"+L,*E users &E* email>MjLoe^example.comM 7HE'E username>MjLoeM"9;
i# 3!$Query9 :
exit3MError in Query.M9;
; else :
echo M.umber o# ro8s modi#ied@ M, $dbhandleF>chanEes39;
;
?>
Cer tambi%n
s?lite>open./
s?lite>close
>P&P 4?
s/liteZclose 22 5loses an open OLite data#ase
Kescripci"n
void s?lite>close > resource d#handle ?
5loses the given #ata1ase handle; .( the data#ase Eas persistentA it Eill #e closed and removed (rom
the persistent list;
:ista de parmetros
#1han#le
,he OLite Data#ase resourceX returned (rom s?lite>open ./ Ehen used procedurally;
E'emplos
E'emplo !. s?lite>close./ e+ample
<?php
$dbhandle > sQlite%open3MsQlitedbM9;
sQlite%close3$dbhandle9;
?>
Cer tambi%n
s?lite>open./
s?lite>popen./
s?lite>column
>P&P 4?
s/liteZcolumn
>no version in(ormationA might #e only in 5$?
OLiteResult2_column
>no version in(ormationA might #e only in 5$?
OLite@n#u((ered2_column 22 Fetches a column (rom the current roE o( a result set
Kescripci"n
miFed s?lite>column > resource resultA miFed indeFZorZname PA #ool decodeZ#inaryQ ?
class ,$:iteMesult \
miFed column > miFed indeFZorZname PA #ool decodeZ#inaryQ ?
]class ,$:ite)nbuffered \
miFed column > miFed indeFZorZname PA #ool decodeZ#inaryQ ?
]
Fetches the value o( a column named 6n#e8_or_name >i( it is a string?A or o( the ordinal column
num#ered 6n#e8_or_name >i( it is an integer? (rom the current roE o( the /uery result handle result;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
6n#e8_or_name
,he column indeF or name to (etch;
#eco#e_16nar?
Lhen the #eco#e_16nar? parameter is set to TRUE >the de(ault?A P&P Eill decode the #inary
encoding it applied to the data i( it Eas encoded using the s?lite>escape>string./; %ou should
normally leave this value at its de(aultA unless you are interoperating Eith data#ases created #y
other s/lite capa#le applications;
Notes
Nota- @se this (unction Ehen you are iterating a large result set Eith many columnsA or
Eith columns that contain large amounts o( data;
Cer tambi%n
s?lite>fetch>string./
s?lite>create>aggregate
>P&P 4?
s/liteZcreateZaggregate
>no version in(ormationA might #e only in 5$?
OLiteData#ase2_createAggregate 22 Register an aggregating @DF (or use in OL statements
Kescripci"n
#ool s?lite>create>aggregate > resource d#handleA string (unctionZnameA call#ac" stepZ(uncA
call#ac" (inalizeZ(unc PA int numZargsQ ?
O#'ect oriented style >method?C
class ,$:iteKatabase \
#ool createAggregate > string (unctionZnameA call#ac" stepZ(uncA call#ac" (inalizeZ(unc PA int
numZargsQ ?
]
s?lite>create>aggregate./ is similar to s?lite>create>function./ eFcept that it registers (unctions
that can #e used to calculate a result aggregated across all the roEs o( a /uery;
,he "ey di((erence #etEeen this (unction and s?lite>create>function./ is that tEo (unctions are
re/uired to manage the aggregateX step_9unc is called (or each roE o( the result set; %our P&P
(unction should accumulate the result and store it into the aggregation conteFt; Once all the roEs
have #een processedA 96nal6De_9unc Eill #e called and it should then ta"e the data (rom the
aggregation conteFt and return the result; 5all#ac" (unctions should return a type understood #y
OLite >i;e; scalar type?;
:ista de parmetros
#1han#le
,he OLite Data#ase resourceX returned (rom s?lite>open ./ Ehen used procedurally; ,his
parameter is not re/uired Ehen using the o#'ect2oriented method;
9unct6on_name
,he name o( the (unction used in OL statements;
step_9unc
5all#ac" (unction called (or each roE o( the result set;
96nal6De_9unc
5all#ac" (unction to aggregate the =stepped= data (rom each roE;
num_arEs
&int to the OLite parser i( the call#ac" (unction accepts a predetermined num#er o(
arguments;
E'emplos
E'emplo !. ma+>length aggregation function e+ample
<?php
$data > array3
MoneM,
Mt8oM,
MthreeM,
M#ourM,
M#i=eM,
MsixM,
Mse=enM,
MeiEhtM,
MnineM,
MtenM,
9;
$dbhandle > sQlite%open3M@memory@M9;
sQlite%Query3$dbhandle, "R'E,*E *,ZOE strinEs3a9"9;
#oreach 3$data as $str9 :
$str > sQlite%escape%strinE3$str9;
sQlite%Query3$dbhandle, "4.&E'* 4.*? strinEs (,O+E& 3M$strM9"9;
;
#unction max%len%step3&$context, $strinE9
:
i# 3strlen3$strinE9 > $context9 :
$context > strlen3$strinE9;
;
;
#unction max%len%#inali0e3&$context9
:
return $context;
;
sQlite%create%aEEreEate3$dbhandle, Mmax%lenM, Mmax%len%stepM, Mmax%len%#inali0eM9;
=ar%dump3sQlite%array%Query3$dbhandle, M&EOER* max%len3a9 #rom strinEsM99;
?>
.n this eFampleA Ee are creating an aggregating (unction that Eill calculate the length o( the longest
string in one o( the columns o( the ta#le; For each roEA the ma8_len_step (unction is called and
passed a conte8t parameter; ,he conteFt parameter is 'ust li"e any other P&P varia#le and #e set to
hold an array or even an o#'ect value; .n this eFampleA Ee are simply using it to hold the maFimum
length Ee have seen so (arX i( the str6nE has a length longer than the current maFimumA Ee update
the conteFt to hold this neE maFimum length;
A(ter all o( the roEs have #een processedA OLite calls the ma8_len_96nal6De (unction to determine
the aggregate result; &ereA Ee could per(orm some "ind o( calculation #ased on the data (ound in the
conte8t; .n our simple eFample thoughA Ee have #een calculating the result as the /uery progressedA
so Ee simply need to return the conteFt value;
Nota- ,he eFample a#ove Eill not Eor" correctly i( the column contains #inary data;
,a"e a loo" at the manual page (or s?lite>udf>decode>binary./ (or an eFplanation o(
Ehy this is soA and an eFample o( hoE to ma"e it respect the #inary encoding;
,ugerencia- .t is NO, recommended (or you to store a copy o( the values in the conteFt
and then process them at the endA as you Eould cause OLite to use a lot o( memory to
process the /uery 2 'ust thin" o( hoE much memory you Eould need i( a million roEs
Eere stored in memoryA each containing a string 70 #ytes in length;
,ugerencia- %ou can use s?lite>create>function./ and s?lite>create>aggregate./ to
override OLite native OL (unctions;
Cer tambi%n
s?lite>create>function./
s?lite>udf>encode>binary./
s?lite>udf>decode>binary./
s?lite>create>function
>P&P 4?
s/liteZcreateZ(unction
>no version in(ormationA might #e only in 5$?
OLiteData#ase2_createFunction 22 Registers a =regular= @ser De(ined Function (or use in OL
statements
Kescripci"n
#ool s?lite>create>function > resource d#handleA string (unctionZnameA call#ac" call#ac" PA int
numZargsQ ?
O#'ect oriented style >method?C
class ,$:iteKatabase \
#ool create;unction > string (unctionZnameA call#ac" call#ac" PA int numZargsQ ?
]
s?lite>create>function./ alloEs you to register a P&P (unction Eith OLite as an @DF >@ser
De(ined Function?A so that it can #e called (rom Eithin your OL statements;
,he @DF can #e used in any OL statement that can call (unctionsA such as +L+5, and @PDA,+
statements and also in triggers;
:ista de parmetros
#1han#le
,he OLite Data#ase resourceX returned (rom s?lite>open ./ Ehen used procedurally; ,his
parameter is not re/uired Ehen using the o#'ect2oriented method;
9unct6on_name
,he name o( the (unction used in OL statements;
call1ac>
5all#ac" (unction to handle the de(ined OL (unction;
Nota- 5all#ac" (unctions should return a type understood #y OLite >i;e; scalar
type?;
num_arEs
&int to the OLite parser i( the call#ac" (unction accepts a predetermined num#er o(
arguments;
Nota- ,Eo alternative syntaFes are supported (or compati#ility Eith other data#ase
eFtensions >such as MyOL?; ,he pre(erred (orm is the (irstA Ehere the #1han#le
parameter is the (irst parameter to the (unction;
E'emplos
E'emplo !. s?lite>create>function./ e+ample
<?php
#unction md5%and%re=erse3$strinE9
:
return strre=3md53$strinE99;
;
i# 3$dbhandle > sQlite%open3MmysQlitedbM, 2GGG, $sQliteerror99 :

sQlite%create%#unction3$dbhandle, Mmd5re=M, Mmd5%and%re=erseM, 69;

$sQl > M&EOER* md5re=3#ilename9 S'?" #ilesM;
$ro8s > sQlite%array%Query3$dbhandle, $sQl9;
; else :
echo MError openinE sQlite db@ M . $sQliteerror;
exit;
;
?>
.n this eFampleA Ee have a (unction that calculates the md4 sum o( a stringA and then reverses it;
Lhen the OL statement eFecutesA it returns the value o( the (ilename trans(ormed #y our (unction;
,he data returned in 'ro7s contains the processed result;
,he #eauty o( this techni/ue is that you do not need to process the result using a (oreach>? loop a(ter
you have /ueried (or the data;
P&P registers a special (unction named php Ehen the data#ase is (irst opened; ,he php (unction can
#e used to call any P&P (unction Eithout having to register it (irst;
E'emplo *. E+ample of using the PHP function
<?php
$ro8s > sQlite%array%Query3$dbhandle, "&EOER* php3Mmd5M, #ilename9 #rom #iles"9;
?>
,his eFample Eill call the md9./ on each 96lename column in the data#ase and return the result into
'ro7s
Nota- For per(ormance reasonsA P&P Eill not automatically encodeDdecode #inary data
passed to and (rom your @DFHs; %ou need to manually encodeDdecode the parameters
and return values i( you need to process #inary data in this Eay; ,a"e a loo" at
s?lite>udf>encode>binary./ and s?lite>udf>decode>binary./ (or more details;
,ugerencia- .t is not recommended to use @DFHs to handle processing o( #inary dataA
unless high per(ormance is not a "ey re/uirement o( your application;
,ugerencia- %ou can use s?lite>create>function./ and s?lite>create>aggregate./ to
override OLite native OL (unctions;
Cer tambi%n
s?lite>create>aggregate./
s?lite>current
>P&P 4?
s/liteZcurrent
>no version in(ormationA might #e only in 5$?
OLiteResult2_current
>no version in(ormationA might #e only in 5$?
OLite@n#u((ered2_current 22 Fetches the current roE (rom a result set as an array
Kescripci"n
array s?lite>current > resource result PA int resultZtype PA #ool decodeZ#inaryQQ ?
O#'ect oriented style >method?C
class ,$:iteMesult \
array current > Pint resultZtype PA #ool decodeZ#inaryQQ ?
]class ,$:ite)nbuffered \
array current > Pint resultZtype PA #ool decodeZ#inaryQQ ?
]
s?lite>current./ is identical to s?lite>fetch>array./ eFcept that it does not advance to the neFt roE
prior to returning the dataX it returns the data (rom the current position only;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
result_t?pe
,he optional result_t?pe parameter accepts a constant and determines hoE the returned array
Eill #e indeFed; @sing S.LITE_ASSOC Eill return only associative indices >named (ields?
Ehile S.LITE_NUM Eill return only numerical indices >ordinal (ield num#ers?;
S.LITE_(OTH Eill return #oth associative and numerical indices; S.LITE_(OTH is the
de(ault (or this (unction;
#eco#e_16nar?
Lhen the #eco#e_16nar? parameter is set to TRUE >the de(ault?A P&P Eill decode the #inary
encoding it applied to the data i( it Eas encoded using the s?lite>escape>string./; %ou should
normally leave this value at its de(aultA unless you are interoperating Eith data#ases created #y
other s/lite capa#le applications;
Calores retornados
Returns an array o( the current roE (rom a result setX FALSE i( the current position is #eyond the
(inal roE;
,he column names returned #y S.LITE_ASSOC and S.LITE_(OTH Eill #e case2(olded
according to the value o( the s/lite;assocZcase con(iguration option;
Cer tambi%n
s?lite>seeB./
s?lite>ne+t./
s?lite>fetch>array./
s?lite>error>string
>P&P 4?
s/liteZerrorZstring 22 Returns the teFtual description o( an error code
Kescripci"n
string s?lite>error>string > int errorZcode ?
Returns a human reada#le description o( the error_co#e returned (rom s?lite>last>error./;
Cer tambi%n
s?lite>last>error./
s?lite>escape>string
>P&P 4?
s/liteZescapeZstring 22 +scapes a string (or use as a /uery parameter
Kescripci"n
string s?lite>escape>string > string item ?
s?lite>escape>string./ Eill correctly /uote the string speci(ied #y 6tem (or use in an OLite OL
statement; ,his includes dou#ling up single2/uote characters ><? and chec"ing (or #inary2unsa(e
characters in the /uery string;
.( the 6tem contains a NU4 characterA or i( it #egins Eith a character Ehose ordinal value is 0801A
P&P Eill apply a #inary encoding scheme so that you can sa(ely store and retrieve #inary data;
Although the encoding ma"es it sa(e to insert the dataA it Eill render simple teFt comparisons and
402E clauses in your /ueries unusa#le (or the columns that contain the #inary data; .n practiceA this
shouldnHt #e a pro#lemA as your schema should #e such that you donHt use such things on #inary
columns >in (actA it might #e #etter to store #inary data using other meansA such as in (iles?;
A5iso
addslashes./ should NOT #e used to /uote your strings (or OLite /ueriesX it Eill lead to strange
results Ehen retrieving your data;
Nota- Do not use this (unction to encode the return values (rom @DFHs created using
s?lite>create>function./ or s?lite>create>aggregate./ 2 use
s?lite>udf>encode>binary./ instead;
Cer tambi%n
s?lite>udf>encode>binary./
s?lite>e+ec
>no version in(ormationA might #e only in 5$?
s/liteZeFec
>no version in(ormationA might #e only in 5$?
OLiteData#ase2_eFec 22 +Fecutes a result2less /uery against a given data#ase
Kescripci"n
#ool s?lite>e+ec > resource d#handleA string /uery ?
#ool s?lite>e+ec > string /ueryA resource d#handle ?
O#'ect oriented style >method?C
class ,$:iteKatabase \
#ool e+ec > string /uery ?
]
+Fecutes an OL statement given #y the @uer? against a given data#ase handle >speci(ied #y the
#1han#le parameter?;
A5iso
OLite 76ll eFecute multiple /ueries separated #y semicolonsA so you can use it to eFecute a #atch
o( OL that you have loaded (rom a (ile or have em#edded in a script;
:ista de parmetros
@uer?
,he /uery to #e eFecuted;
#1han#le
,he OLite Data#ase resourceX returned (rom s?lite>open ./ Ehen used procedurally; ,his
parameter is not re/uired Ehen using the o#'ect2oriented method;
Nota- ,Eo alternative syntaFes are supported (or compati#ility Eith other data#ase
eFtensions >such as MyOL?; ,he pre(erred (orm is the (irstA Ehere the #1han#le
parameter is the (irst parameter to the (unction;
Calores retornados
,his (unction Eill return a #oolean resultX TRUE (or success or FALSE (or (ailure; .( you need to run
a /uery that returns roEsA see s?lite>?uery./;
,he column names returned #y S.LITE_ASSOC and S.LITE_(OTH Eill #e case2(olded
according to the value o( the s/lite;assocZcase con(iguration option;
E'emplos
E'emplo !. Procedural e+ample
<?php
$dbhandle > sQlite%open3MmysQlitedbM9;
$Query > sQlite%exec3$dbhandle, "+L,*E users &E* email>MjLoe^example.comM 7HE'E username>MjLoeM"9;
i# 3!$Query9 :
exit3MError in Query.M9;
; else :
echo M.umber o# ro8s modi#ied@ M, sQlite%chanEes3$dbhandle9;
;
?>
E'emplo *. Jb'ect(oriented e+ample
<?php
$dbhandle > ne8 &NOiteLatabase3MmysQlitedbM9;
$Query > $dbhandleF>exec3"+L,*E users &E* email>MjLoe^example.comM 7HE'E username>MjLoeM"9;
i# 3!$Query9 :
exit3MError in Query.M9;
; else :
echo M.umber o# ro8s modi#ied@ M, $dbhandleF>chanEes39;
;
?>
Cer tambi%n
s?lite>?uery./
s?lite>unbuffered>?uery./
s?lite>array>?uery./
s?lite>factory
>P&P 4?
s/liteZ(actory 22 Opens a OLite data#ase and returns a OLiteData#ase o#'ect
Kescripci"n
OLiteData#ase s?lite>factory > string (ilename PA int mode PA string ierrorZmessageQQ ?
s?lite>factory./ #ehaves similarly to s?lite>open./ in that it opens an OLite data#ase or attempts
to create it i( it does not eFist; &oEeverA a OLiteData#ase o#'ect is returned rather than a resource;
Please see the s?lite>open./ re(erence page (or (urther usage and caveats;
:ista de parmetros
96lename
,he (ilename o( the OLite data#ase;
mo#e
,he mode o( the (ile; .ntended to #e used to open the data#ase in read2only mode; PresentlyA
this parameter is ignored #y the s/lite li#rary; ,he de(ault value (or mode is the octal value
0XXX and this is the recommended value;
error_messaEe
Passed #y re(erence and is set to hold a descriptive error message eFplaining Ehy the data#ase
could not #e opened i( there Eas an error;
Calores retornados
Returns a OLiteData#ase o#'ect on successA NULL on error;
E'emplos
E'emplo !. s?lite>factory./ e+ample
<?php
$dbhandle > sQlite%#actory3MsQlitedbM9;
$dbhandleF>Query3M&EOER* user%id, username S'?" usersM9;
/W #unctionally Dalent to@ W/
$dbhandle > ne8 &NOiteLatabase3MsQlitedbM9;
$dbhandleF>Query3M&EOER* user%id, username S'?" usersM9;
?>
Cer tambi%n
s?lite>open./
s?lite>popen./
s?lite>fetch>all
>P&P 4?
s/liteZ(etchZall
>no version in(ormationA might #e only in 5$?
OLiteResult2_(etchAll
>no version in(ormationA might #e only in 5$?
OLite@n#u((ered2_(etchAll 22 Fetches all roEs (rom a result set as an array o( arrays
Kescripci"n
array s?lite>fetch>all > resource result PA int resultZtype PA #ool decodeZ#inaryQQ ?
O#'ect oriented style >method?C
class ,$:iteMesult \
array fetchAll > Pint resultZtype PA #ool decodeZ#inaryQQ ?
]class ,$:ite)nbuffered \
array fetchAll > Pint resultZtype PA #ool decodeZ#inaryQQ ?
]
s?lite>fetch>all./ returns an array o( the entire result set (rom the result resource; .t is similar to
calling s?lite>?uery./ >or s?lite>unbuffered>?uery./? and then s?lite>fetch>array./ (or each roE
in the result set;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
result_t?pe
,he optional result_t?pe parameter accepts a constant and determines hoE the returned array
Eill #e indeFed; @sing S.LITE_ASSOC Eill return only associative indices >named (ields?
Ehile S.LITE_NUM Eill return only numerical indices >ordinal (ield num#ers?;
S.LITE_(OTH Eill return #oth associative and numerical indices; S.LITE_(OTH is the
de(ault (or this (unction;
#eco#e_16nar?
Lhen the #eco#e_16nar? parameter is set to TRUE >the de(ault?A P&P Eill decode the #inary
encoding it applied to the data i( it Eas encoded using the s?lite>escape>string./; %ou should
normally leave this value at its de(aultA unless you are interoperating Eith data#ases created #y
other s/lite capa#le applications;
Calores retornados
Returns an array o( the current roE (rom a result setX FALSE i( the current position is #eyond the
(inal roE;
,he column names returned #y S.LITE_ASSOC and S.LITE_(OTH Eill #e case2(olded
according to the value o( the s/lite;assocZcase con(iguration option;
E'emplos
E'emplo !. Procedural e+ample
<?php
$dbhandle > sQlite%open3MsQlitedbM9;
$Query > sQlite%Query3$dbhandle, M&EOER* name, email S'?" users O4"4* C5M9;
$result > sQlite%#etch%all3$Query, &NO4*E%,&&?R9;
#oreach 3$result as $entry9 :
echo M.ame@ M . $entry)MnameM/ . M EFmail@ M . $entry)MemailM/;
;
?>
E'emplo *. Jb'ect(oriented e+ample
<?php
$dbhandle > ne8 &NOiteLatabase3MsQlitedbM9;
$Query > $dbhandleF>Query3M&EOER* name, email S'?" users O4"4* C5M9; // bu##ered result set
$Query > $dbhandleF>unbu##eredNuery3M&EOER* name, email S'?" users O4"4* C5M9; // unbu##ered result set
$result > $QueryF>#etch,ll3&NO4*E%,&&?R9;
#oreach 3$result as $entry9 :
echo M.ame@ M . $entry)MnameM/ . M EFmail@ M . $entry)MemailM/;
;
?>
Cer tambi%n
s?lite>fetch>array./
s?lite>fetch>array
>P&P 4?
s/liteZ(etchZarray
>no version in(ormationA might #e only in 5$?
OLiteResult2_(etch
>no version in(ormationA might #e only in 5$?
OLite@n#u((ered2_(etch 22 Fetches the neFt roE (rom a result set as an array
Kescripci"n
array s?lite>fetch>array > resource result PA int resultZtype PA #ool decodeZ#inaryQQ ?
O#'ect oriented style >method?C
class ,$:iteMesult \
array fetch > Pint resultZtype PA #ool decodeZ#inaryQQ ?
]class ,$:ite)nbuffered \
array fetch > Pint resultZtype PA #ool decodeZ#inaryQQ ?
]
Fetches the neFt roE (rom the given result handle; .( there are no more roEsA returns FALSEA
otherEise returns an associative array representing the roE data;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
result_t?pe
,he optional result_t?pe parameter accepts a constant and determines hoE the returned array
Eill #e indeFed; @sing S.LITE_ASSOC Eill return only associative indices >named (ields?
Ehile S.LITE_NUM Eill return only numerical indices >ordinal (ield num#ers?;
S.LITE_(OTH Eill return #oth associative and numerical indices; S.LITE_(OTH is the
de(ault (or this (unction;
#eco#e_16nar?
Lhen the #eco#e_16nar? parameter is set to TRUE >the de(ault?A P&P Eill decode the #inary
encoding it applied to the data i( it Eas encoded using the s?lite>escape>string./; %ou should
normally leave this value at its de(aultA unless you are interoperating Eith data#ases created #y
other s/lite capa#le applications;
Calores retornados
Returns an array o( the neFt roE (rom a result setX FALSE i( the neFt position is #eyond the (inal
roE;
,he column names returned #y S.LITE_ASSOC and S.LITE_(OTH Eill #e case2(olded
according to the value o( the s/lite;assocZcase con(iguration option;
E'emplos
E'emplo !. Procedural e+ample
<?php
$dbhandle > sQlite%open3MsQlitedbM9;
$Query > sQlite%Query3$dbhandle, M&EOER* name, email S'?" users O4"4* C5M9;
$result > sQlite%#etch%all3$Query, &NO4*E%,&&?R9;
#oreach 3$result as $entry9 :
echo M.ame@ M . $entry)MnameM/ . M EFmail@ M . $entry)MemailM/;
;
?>
E'emplo *. Jb'ect(oriented e+ample
<?php
$dbhandle > ne8 &NOiteLatabase3MsQlitedbM9;
$Query > $dbhandleF>Query3M&EOER* name, email S'?" users O4"4* C5M9; // bu##ered result set
$Query > $dbhandleF>unbu##eredNuery3M&EOER* name, email S'?" users O4"4* C5M9; // unbu##ered result set
$result > $QueryF>#etch,ll3&NO4*E%,&&?R9;
#oreach 3$result as $entry9 :
echo M.ame@ M . $entry)MnameM/ . M EFmail@ M . $entry)MemailM/;
;
?>
Cer tambi%n
s?lite>array>?uery./
s?lite>fetch>string./
s?lite>fetch>column>types
>P&P 4?
s/liteZ(etchZcolumnZtypes
>no version in(ormationA might #e only in 5$?
OLiteData#ase2_(etch5olumn,ypes 22 Return an array o( column types (rom a particular ta#le
Kescripci"n
array s?lite>fetch>column>types > string ta#leZnameA resource d#handle PA int resultZtypeQ ?
O#'ect oriented style >method?C
class ,$:iteKatabase \
array fetchColumnTypes > string ta#leZname PA int resultZtypeQ ?
]
s?lite>fetch>column>types./ returns an array o( column data types (rom the speci(ied ta1le_name
ta#le;
:ista de parmetros
ta1le_name
,he ta#le name to /uery;
#1han#le
,he OLite Data#ase resourceX returned (rom s?lite>open ./ Ehen used procedurally; ,his
parameter is not re/uired Ehen using the o#'ect2oriented method;
result_t?pe
,he optional result_t?pe parameter accepts a constant and determines hoE the returned array
Eill #e indeFed; @sing S.LITE_ASSOC Eill return only associative indices >named (ields?
Ehile S.LITE_NUM Eill return only numerical indices >ordinal (ield num#ers?;
S.LITE_(OTH Eill return #oth associative and numerical indices; S.LITE_(OTH is the
de(ault (or this (unction;
Calores retornados
Returns an array o( column data typesX FALSE on error;
,he column names returned #y S.LITE_ASSOC and S.LITE_(OTH Eill #e case2(olded
according to the value o( the s/lite;assocZcase con(iguration option;
E'emplos
E'emplo !. Procedural e+ample
<?php
$db > sQlite%open3MmysQlitedbM9;
sQlite%Query3$db, MR'E,*E *,ZOE #oo 3bar =archar3629, ar# text9M9;
$cols > sQlite%#etch%column%types3M#ooM, $db, &NO4*E%,&&?R9;
#oreach 3$cols as $column >> $type9 :
echo "Rolumn@ $column *ype@ $type";
;
?>
E'emplo *. Jb'ect(oriented e+ample
<?php
$db > ne8 &NOiteLatabase3MmysQlitedbM9;
$dbF>Query3MR'E,*E *,ZOE #oo 3bar =archar3629, ar# text9M9;
$cols > $dbF>#etchRolumn*ypes3M#ooM, &NO4*E%,&&?R9;
#oreach 3$cols as $column >> $type9 :
echo "Rolumn@ $column *ype@ $type";
;
?>
+l resultado del e'emplo seriaC
Rolumn@ bar *ype@ (,'RH,'
Rolumn@ ar# *ype@ *EX*
s?lite>fetch>ob'ect
>P&P 4?
s/liteZ(etchZo#'ect
>no version in(ormationA might #e only in 5$?
OLiteResult2_(etchO#'ect
>no version in(ormationA might #e only in 5$?
OLite@n#u((ered2_(etchO#'ect 22 Fetches the neFt roE (rom a result set as an o#'ect
Kescripci"n
o#'ect s?lite>fetch>ob'ect > resource result PA string classZname PA array ctorZparams PA #ool
decodeZ#inaryQQQ ?
O#'ect oriented style >method?C
class ,$:iteMesult \
o#'ect fetchJb'ect > Pstring classZname PA array ctorZparams PA #ool decodeZ#inaryQQQ ?
]class ,$:ite)nbuffered \
o#'ect fetchJb'ect > Pstring classZname PA array ctorZparams PA #ool decodeZ#inaryQQQ ?
]
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
s?lite>fetch>single
>P&P 4?
s/liteZ(etchZsingle
>no version in(ormationA might #e only in 5$?
OLiteResult2_(etchingle
>no version in(ormationA might #e only in 5$?
OLite@n#u((ered2_(etchingle 22 Fetches the (irst column o( a result set as a string
Kescripci"n
string s?lite>fetch>single > resource result PA #ool decodeZ#inaryQ ?
O#'ect oriented style >method?C
class ,$:iteMesult \
string fetch,ingle > P#ool decodeZ#inaryQ ?
]class ,$:ite)nbuffered \
string fetch,ingle > P#ool decodeZ#inaryQ ?
]
s?lite>fetch>single./ is identical to s?lite>fetch>array./ eFcept that it returns the value o( the (irst
column o( the roEset;
,his is the most optimal Eay to retrieve data Ehen you are only interested in the values (rom a
single column o( data;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
#eco#e_16nar?
Lhen the #eco#e_16nar? parameter is set to TRUE >the de(ault?A P&P Eill decode the #inary
encoding it applied to the data i( it Eas encoded using the s?lite>escape>string./; %ou should
normally leave this value at its de(aultA unless you are interoperating Eith data#ases created #y
other s/lite capa#le applications;
E'emplos
E'emplo !. A s?lite>fetch>single./ e+ample
<?php
i# 3$dbhandle > sQlite%open3MmysQlitedbM, 2GGG, $sQliteerror99 :
$sQl > "&EOER* id S'?" sometable 7HE'E id > 1C";
$res > sQlite%Query3$dbhandle, $sQl9;
i# 3sQlite%num%ro8s3$res9 > 29 :
echo sQlite%#etch%sinEle3$res9; // 1C
;

sQlite%close3$dbhandle9;
;
?>
Cer tambi%n
s?lite>fetch>array./
s?lite>fetch>string
s/liteZ(etchZstring 22 Alias o( s?lite>fetch>single./
Kescripci"n
,his (unction is an alias o( s?lite>fetch>single./;
s?lite>field>name
>P&P 4?
s/liteZ(ieldZname
>no version in(ormationA might #e only in 5$?
OLiteResult2_(ieldName
>no version in(ormationA might #e only in 5$?
OLite@n#u((ered2_(ieldName 22 Returns the name o( a particular (ield
Kescripci"n
string s?lite>field>name > resource resultA int (ieldZindeF ?
O#'ect oriented style >method?C
class ,$:iteMesult \
string fieldName > int (ieldZindeF ?
]class ,$:ite)nbuffered \
string fieldName > int (ieldZindeF ?
]
Given the ordinal column num#erA 96el#_6n#e8A s?lite>field>name./ returns the name o( that (ield in
the result set result;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
96el#_6n#e8
,he ordinal column num#er in the result set;
Calores retornados
Returns the name o( a (ield in an OLite result setA given the ordinal column num#erX FALSE on
error;
,he column names returned #y S.LITE_ASSOC and S.LITE_(OTH Eill #e case2(olded
according to the value o( the s/lite;assocZcase con(iguration option;
s?lite>has>more
>P&P 4?
s/liteZhasZmore 22 Finds Ehether or not more roEs are availa#le
Kescripci"n
#ool s?lite>has>more > resource result ?
Finds Ehether more roEs are availa#le (rom the given result set;
:ista de parmetros
result
,he OLite result resource;
Calores retornados
Returns TRUE i( there are more roEs availa#le (rom the result handleA or FALSE otherEise;
Cer tambi%n
s?lite>num>ro3s./
s?lite>changes./
s?lite>has>pre5
>P&P 4?
s/liteZhasZprev
>no version in(ormationA might #e only in 5$?
OLiteResult2_hasPrev 22 Returns Ehether or not a previous roE is availa#le
Kescripci"n
#ool s?lite>has>pre5 > resource result ?
O#'ect oriented style >method?C
class ,$:iteMesult \
#ool hasPre5 > void ?
]
Find Ehether there are more previous roEs (rom the given result handle;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
Nota- +sta (uncion no puede usarse con resultados /ue no se encuentren
almacenados en un almacenador intermedio >#u((er?;
Calores retornados
Returns TRUE i( there are more previous roEs availa#le (rom the result handleA or FALSE
otherEise;
Cer tambi%n
s?lite>pre5./
s?lite>has>more./
s?lite>num>ro3s./
s?lite>Bey
>no version in(ormationA might #e only in 5$?
s/liteZ"ey
>no version in(ormationA might #e only in 5$?
OLiteResult2_"ey 22 Returns the current roE indeF
Kescripci"n
int s?lite>Bey > resource result ?
O#'ect oriented style >method?C
class ,$:iteMesult \
int Bey > void ?
]
s?lite>Bey./ returns the current roE indeF o( the #u((ered result set result;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
Nota- +sta (uncion no puede usarse con resultados /ue no se encuentren
almacenados en un almacenador intermedio >#u((er?;
Calores retornados
Returns the current roE indeF o( the #u((ered result set result;
Megistro de cambios
Cersi"n Kescripci"n
4;3;8
Prior to P&P 4;3;8A s?lite>Bey./ Eas only a#le to #e called as a method on a
OLiteResult o#'ectA not procedurally;
Cer tambi%n
s?lite>ne+t./
s?lite>current./
s?lite>re3ind./
s?lite>last>error
>P&P 4?
s/liteZlastZerror
>no version in(ormationA might #e only in 5$?
OLiteData#ase2_last+rror 22 Returns the error code o( the last error (or a data#ase
Kescripci"n
int s?lite>last>error > resource d#handle ?
O#'ect oriented style >method?C
class ,$:iteKatabase \
int lastError > void ?
]
Returns the error code (rom the last operation per(ormed on #1han#leA the data#ase handle; A
human reada#le description o( the error code can #e retrieved using s?lite>error>string./;
:ista de parmetros
#1han#le
,he OLite Data#ase resourceX returned (rom s?lite>open ./ Ehen used procedurally; ,his
parameter is not re/uired Ehen using the o#'ect2oriented method;
Cer tambi%n
s?lite>error>string./
s?lite>last>insert>ro3id
>P&P 4?
s/liteZlastZinsertZroEid
>no version in(ormationA might #e only in 5$?
OLiteData#ase2_last.nsertRoEid 22 Returns the roEid o( the most recently inserted roE
Kescripci"n
int s?lite>last>insert>ro3id > resource d#handle ?
O#'ect oriented style >method?C
class ,$:iteKatabase \
int lastInsertMo3id > void ?
]
Returns the roEid o( the roE that Eas most recently inserted into the data#ase #1han#leA i( it Eas
created as an auto2increment (ield;
,ugerencia- %ou can create auto2increment (ields in OLite #y declaring them as
0NTE-ER +R0M,RB 2EB in your ta#le schema;
:ista de parmetros
#1han#le
,he OLite Data#ase resourceX returned (rom s?lite>open ./ Ehen used procedurally; ,his
parameter is not re/uired Ehen using the o#'ect2oriented method;
s?lite>libencoding
>P&P 4?
s/liteZli#encoding 22 Returns the encoding o( the lin"ed OLite li#rary
Kescripci"n
string s?lite>libencoding > void ?
,he OLite li#rary may #e compiled in either .O2MM4921 or @,F2M compati#le modes; ,his
(unction alloEs you to determine Ehich encoding scheme is used #y your version o( the li#rary;
A5iso
,he de(ault P&P distri#ution #uilds li#s/lite in .O2MM4921 encoding mode; &oEeverA this is a
misnomerX rather than handling .O2MM4921A it operates according to your current locale settings
(or string comparisons and sort ordering; oA rather than .O2MM4921A you should thin" o( it as
#eing HM2#itH instead;
Lhen compiled Eith @,F2M supportA s/lite handles encoding and decoding o( @,F2M multi2#yte
character se/uencesA #ut does not yet do a complete 'o# Ehen Eor"ing Eith the data >no
normalization is per(ormed (or eFample?A and some comparison operations may still not #e carried
out correctly;
A5iso
.t is not recommended that you use P&P in a Ee#2server con(iguration Eith a version o( the
OLite li#rary compiled Eith @,F2M supportA since li#s/lite Eill a#ort the process i( it detects a
pro#lem Eith the @,F2M encoding;
Cer tambi%n
s?lite>lib>5ersion./
s?lite>lib5ersion
>P&P 4?
s/liteZli#version 22 Returns the version o( the lin"ed OLite li#rary
Kescription
string s?lite>lib5ersion > void ?
Returns the version o( the lin"ed OLite li#rary;
Cer tambi%n
s?lite>libencoding./
s?lite>ne+t
>P&P 4?
s/liteZneFt
>no version in(ormationA might #e only in 5$?
OLiteResult2_neFt
>no version in(ormationA might #e only in 5$?
OLite@n#u((ered2_neFt 22 ee" to the neFt roE num#er
Kescripci"n
#ool s?lite>ne+t > resource result ?
O#'ect oriented style >method?C
class ,$:iteMesult \
#ool ne+t > void ?
]class ,$:ite)nbuffered \
#ool ne+t > void ?
]
s?lite>ne+t./ advances the result handle result to the neFt roE;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
Calores retornados
Returns TRUE on successA or FALSE i( there are no more roEs;
Cer tambi%n
s?lite>seeB./
s?lite>current./
s?lite>re3ind./
s?lite>num>fields
>P&P 4?
s/liteZnumZ(ields
>no version in(ormationA might #e only in 5$?
OLiteResult2_numFields
>no version in(ormationA might #e only in 5$?
OLite@n#u((ered2_numFields 22 Returns the num#er o( (ields in a result set
Kescripci"n
int s?lite>num>fields > resource result ?
O#'ect oriented style >method?C
class ,$:iteMesult \
int num;ields > void ?
]class ,$:ite)nbuffered \
int num;ields > void ?
]
Returns the num#er o( (ields in the result set;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
Cer tambi%n
s?lite>changes./
s?lite>num>ro3s./
s?lite>num>ro3s
>P&P 4?
s/liteZnumZroEs
>no version in(ormationA might #e only in 5$?
OLiteResult2_numRoEs 22 Returns the num#er o( roEs in a #u((ered result set
Kescription
int s?lite>num>ro3s > resource result ?
O#'ect oriented style >method?C
class ,$:iteMesult \
int numMo3s > void ?
]
Returns the num#er o( roEs in the #u((ered result set;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
Nota- +sta (uncion no puede usarse con resultados /ue no se encuentren
almacenados en un almacenador intermedio >#u((er?;
E'emplos
E'emplo !. Procedural e+ample
<?php
$db > sQlite%open3MmysQlitedbM9;
$result > sQlite%Query3$db, "&EOER* W S'?" mytable 7HE'E name>MAohn LoeM"9;
$ro8s > sQlite%num%ro8s3$result9;
echo ".umber o# ro8s@ $ro8s";
?>
E'emplo *. Jb'ect(oriented e+ample
<?php
$db > ne8 &NOiteLatabase3MmysQlitedbM9;
$result > $dbF>Query3"&EOER* W S'?" mytable 7HE'E name>MAohn LoeM"9;
$ro8s > $resultF>num'o8s39;
echo ".umber o# ro8s@ $ro8s";
?>
Cer tambi%n
s?lite>changes./
s?lite>?uery./
s?lite>num>fields./
s?lite>open
>P&P 4?
s/liteZopen 22 Opens a OLite data#ase and create the data#ase i( it does not eFist
Kescripci"n
resource s?lite>open > string (ilename PA int mode PA string ierrorZmessageQQ ?
O#'ect oriented style >constructor?C
class ,$:iteKatabase \
>>construct > string (ilename PA int mode PA string ierrorZmessageQQ ?
]
Opens a OLite data#ase or creates the data#ase i( it does not eFist;
:ista de parmetros
96lename
,he (ilename o( the OLite data#ase; .( the (ile does not eFistA OLite Eill attempt to create it;
P&P must have Erite permissions to the (ile i( data is insertedA the data#ase schema is
modi(ied or to create the data#ase i( it does not eFist;
mo#e
,he mode o( the (ile; .ntended to #e used to open the data#ase in read2only mode; PresentlyA
this parameter is ignored #y the s/lite li#rary; ,he de(ault value (or mode is the octal value
0XXX and this is the recommended value;
error_messaEe
Passed #y re(erence and is set to hold a descriptive error message eFplaining Ehy the data#ase
could not #e opened i( there Eas an error;
Calores retornados
Returns a resource >data#ase handle? on successA FALSE on error;
E'emplos
E'emplo !. s?lite>open./ e+ample
<?php
i# 3$db > sQlite%open3MmysQlitedbM, 2GGG, $sQliteerror99 :
sQlite%Query3$db, MR'E,*E *,ZOE #oo 3bar =archar36299M9;
sQlite%Query3$db, "4.&E'* 4.*? #oo (,O+E& 3M#nordM9"9;
$result > sQlite%Query3$db, Mselect bar #rom #ooM9;
=ar%dump3sQlite%#etch%array3$result99;
; else :
die3$sQliteerror9;
;
?>
Notes
,ugerencia- On @niF plat(ormsA OLite is sensitive to scripts that use the (or">? system
call; .( you do have such a scriptA it is recommended that you close the handle prior to
(or"ing and then re2open it in the child andDor parent; For more in(ormation on this
issueA see ,he 5 language inter(ace to the OLite li#rary in the section entitled Mult6=
Threa#6nE ,n# S546te;
,ugerencia- .t is not recommended to Eor" Eith OLite data#ases mounted on NF
partitions; ince NF is notoriously #ad Ehen it comes to loc"ing you may (ind that you
cannot even open the data#ase at allA and i( it succeedsA the loc"ing #ehaviour may #e
unde(ined;
Nota- tarting Eith OLite li#rary version 0;M;0A you can speci(y :memor?: as the
96lename to create a data#ase that lives only in the memory o( the computer; ,his is
use(ul mostly (or temporary processingA as the in2memory data#ase Eill #e destroyed
Ehen the process ends; .t can also #e use(ul Ehen coupled Eith the ,TT,C!
D,T,A,SE OL statement to load other data#ases and move and /uery data #etEeen
them;
Nota- OLite is sa(e mode and openZ#asedir aEare;
Cer tambi%n
s?lite>popen./
s?lite>close./
s?lite>factory./
s?lite>popen
>P&P 4?
s/liteZpopen 22 Opens a persistent handle to an OLite data#ase and create the data#ase i( it does
not eFist
Kescripci"n
resource s?lite>popen > string (ilename PA int mode PA string ierrorZmessageQQ ?
,his (unction #ehaves identically to s?lite>open./ eFcept that is uses the persistent resource
mechanism o( P&P; For in(ormation a#out the meaning o( the parametersA read the s?lite>open./
manual page;
s?lite>popen./ Eill (irst chec" to see i( a persistent handle has already #een opened (or the given
96lename; .( it (inds oneA it returns that handle to your scriptA otherEise it opens a (resh handle to the
data#ase;
,he #ene(it o( this approach is that you donHt incur the per(ormance cost o( re2reading the data#ase
and indeF schema on each page hit served #y persistent Ee# server AP.Hs >any AP. eFcept (or
regular 5G. or 5L.?;
Nota- .( you use persistent handles and have the data#ase updated #y a #ac"ground
process >perhaps via a cronta#?A and that process re2creates the data#ase #y overEriting
it >either #y unlin"ing and re#uildingA or moving the updated version to replace the
current version?A you may eFperience unde(ined #ehaviour Ehen a persistent handle on
the old version o( the data#ase is recycled;
,o avoid this situationA have your #ac"ground processes open the same data#ase (ile and
per(orm their updates in a transaction;
:ista de parmetros
96lename
,he (ilename o( the OLite data#ase; .( the (ile does not eFistA OLite Eill attempt to create it;
P&P must have Erite permissions to the (ile i( data is insertedA the data#ase schema is
modi(ied or to create the data#ase i( it does not eFist;
mo#e
,he mode o( the (ile; .ntended to #e used to open the data#ase in read2only mode; PresentlyA
this parameter is ignored #y the s/lite li#rary; ,he de(ault value (or mode is the octal value
0XXX and this is the recommended value;
error_messaEe
Passed #y re(erence and is set to hold a descriptive error message eFplaining Ehy the data#ase
could not #e opened i( there Eas an error;
Calores retornados
Returns a resource >data#ase handle? on successA FALSE on error;
Cer tambi%n
s?lite>open./
s?lite>close./
s?lite>factory./
s?lite>pre5
>P&P 4?
s/liteZprev
>no version in(ormationA might #e only in 5$?
OLiteResult2_prev 22 ee" to the previous roE num#er o( a result set
Kescripci"n
#ool s?lite>pre5 > resource result ?
O#'ect oriented style >method?C
class ,$:iteMesult \
#ool pre5 > void ?
]
s?lite>pre5./ see"s #ac" the result handle to the previous roE;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
Nota- +sta (uncion no puede usarse con resultados /ue no se encuentren
almacenados en un almacenador intermedio >#u((er?;
Calores retornados
Returns TRUE on successA or FALSE i( there are no more previous roEs;
Cer tambi%n
s?lite>has>pre5./
s?lite>re3ind./
s?lite>ne+t./
s?lite>?uery
>P&P 4?
s/liteZ/uery
>no version in(ormationA might #e only in 5$?
OLiteData#ase2_/uery 22 +Fecutes a /uery against a given data#ase and returns a result handle
Kescripci"n
resource s?lite>?uery > resource d#handleA string /uery ?
resource s?lite>?uery > string /ueryA resource d#handle ?
O#'ect oriented style >method?C
class ,$:iteKatabase \
OLiteResult ?uery > string /uery ?
]
+Fecutes an OL statement given #y the @uer? against a given data#ase handle;
:ista de parmetros
@uer?
,he /uery to #e eFecuted;
#1han#le
,he OLite Data#ase resourceX returned (rom s?lite>open ./ Ehen used procedurally; ,his
parameter is not re/uired Ehen using the o#'ect2oriented method;
Nota- ,Eo alternative syntaFes are supported (or compati#ility Eith other data#ase
eFtensions >such as MyOL?; ,he pre(erred (orm is the (irstA Ehere the #1han#le
parameter is the (irst parameter to the (unction;
Calores retornados
,his (unction Eill return a result handle or FALSE on (ailure; For /ueries that return roEsA the result
handle can then #e used Eith (unctions such as s?lite>fetch>array./ and s?lite>seeB./;
Regardless o( the /uery typeA this (unction Eill return FALSE i( the /uery (ailed;
s?lite>?uery./ returns a #u((eredA see"a#le result handle; ,his is use(ul (or reasona#ly small /ueries
Ehere you need to #e a#le to randomly access the roEs; Bu((ered result handles Eill allocate
memory to hold the entire result and Eill not return until it has #een (etched; .( you only need
se/uential access to the dataA it is recommended that you use the much higher per(ormance
s?lite>unbuffered>?uery./ instead;
Notes
A5iso
OLite 76ll eFecute multiple /ueries separated #y semicolonsA so you can use it to eFecute a #atch
o( OL that you have loaded (rom a (ile or have em#edded in a script; &oEeverA this Eor"s only
Ehen the result o( the (unction is not used 2 i( it is usedA only the (irst OL statement Eould #e
eFecuted; Function s?lite>e+ec./ Eill alEays eFecute multiple OL statements;
Lhen eFecuting multiple /ueriesA the return value o( this (unction Eill #e FALSE i( there Eas an
errorA #ut unde(ined otherEise >it might #e TRUE (or success or it might return a result handle?;
Cer tambi%n
s?lite>unbuffered>?uery./
s?lite>array>?uery./
s?lite>re3ind
>P&P 4?
s/liteZreEind
>no version in(ormationA might #e only in 5$?
OLiteResult2_reEind 22 ee" to the (irst roE num#er
Kescripci"n
#ool s?lite>re3ind > resource result ?
O#'ect oriented style >method?C
class ,$:iteMesult \
#ool re3ind > void ?
]
s?lite>re3ind./ see"s #ac" to the (irst roE in the given result set;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
Nota- +sta (uncion no puede usarse con resultados /ue no se encuentren
almacenados en un almacenador intermedio >#u((er?;
Calores retornados
Returns FALSE i( there are no roEs in the result setA TRUE otherEise;
Cer tambi%n
s?lite>ne+t./
s?lite>current./
s?lite>seeB./
s?lite>seeB
>P&P 4?
s/liteZsee"
>no version in(ormationA might #e only in 5$?
OLiteResult2_see" 22 ee" to a particular roE num#er o( a #u((ered result set
Kescripci"n
#ool s?lite>seeB > resource resultA int roEnum ?
O#'ect oriented style >method?C
class ,$:iteMesult \
#ool seeB > int roEnum ?
]
s?lite>seeB./ see"s to the roE given #y the parameter ro7num;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
Nota- +sta (uncion no puede usarse con resultados /ue no se encuentren
almacenados en un almacenador intermedio >#u((er?;
ro7num
,he ordinal roE num#er to see" to; ,he roE num#er is zero2#ased >3 is the (irst roE?;
Nota- +sta (uncion no puede usarse con resultados /ue no se encuentren
almacenados en un almacenador intermedio >#u((er?;
Calores retornados
Returns FALSE i( the roE does not eFistA TRUE otherEise;
Cer tambi%n
s?lite>ne+t./
s?lite>current./
s?lite>re3ind./
s?lite>single>?uery
>P&P 4?
s/liteZsingleZ/uery
>no version in(ormationA might #e only in 5$?
OLiteData#ase2_singleOuery 22 +Fecutes a /uery and returns either an array (or one single column
or the value o( the (irst roE
Kescripci"n
miFed s?lite>single>?uery > resource d#A string /uery PA #ool (irstZroEZonly PA #ool
decodeZ#inaryQQ ?
O#'ect oriented style >method?C
class ,$:iteKatabase \
miFed single$uery > string /uery PA #ool (irstZroEZonly PA #ool decodeZ#inaryQQ ?
]
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
s?lite>udf>decode>binary
>P&P 4?
s/liteZud(ZdecodeZ#inary 22 Decode #inary data passed as parameters to an @DF
Kescripci"n
string s?lite>udf>decode>binary > string data ?
s?lite>udf>decode>binary./ decodes the #inary encoding that Eas applied to the parameter #y
either s?lite>udf>encode>binary./ or s?lite>escape>string./;
%ou must call this (unction on parameters passed to your @DF i( you need them to handle #inary
dataA as the #inary encoding employed #y P&P Eill o#scure the content and o( the parameter in its
naturalA non2coded (orm;
P&P does not per(orm this encodeDdecode operation automatically as it Eould severely impact
per(ormance i( it did;
E'emplos
E'emplo !. binary(safe ma+>length aggregation function e+ample
<?php
$data > array3
MoneM,
Mt8oM,
MthreeM,
M#ourM,
M#i=eM,
MsixM,
Mse=enM,
MeiEhtM,
MnineM,
MtenM,
9;
$db > sQlite%open3M@memory@M9;
sQlite%Query3$db, "R'E,*E *,ZOE strinEs3a9"9;
#oreach 3$data as $str9 :
$str > sQlite%escape%strinE3$str9;
sQlite%Query3$db, "4.&E'* 4.*? strinEs (,O+E& 3M$strM9"9;
;
#unction max%len%step3&$context, $strinE9
:
$strinE > sQlite%ud#%decode%binary3$strinE9;
i# 3strlen3$strinE9 > $context9 :
$context > strlen3$strinE9;
;
;
#unction max%len%#inali0e3&$context9
:
return $context;
;
sQlite%create%aEEreEate3$db, Mmax%lenM, Mmax%len%stepM, Mmax%len%#inali0eM9;
=ar%dump3sQlite%array%Query3$db, M&EOER* max%len3a9 #rom strinEsM99;
?>
Cer tambi%n
s?lite>udf>encode>binary./
s?lite>create>function./
s?lite>create>aggregate./
s?lite>udf>encode>binary
>P&P 4?
s/liteZud(ZencodeZ#inary 22 +ncode #inary data #e(ore returning it (rom an @DF
Kescripci"n
string s?lite>udf>encode>binary > string data ?
s?lite>udf>encode>binary./ applies a #inary encoding to the #ata so that it can #e sa(ely returned
(rom /ueries >since the underlying li#s/lite AP. is not #inary sa(e?;
.( there is a chance that your data might #e #inary unsa(e >e;g;C it contains a N@L #yte in the middle
rather than at the endA or i( it has and 0801 #yte as the (irst character? then you must call this
(unction to encode the return value (rom your @DF;
P&P does not per(orm this encodeDdecode operation automatically as it Eould severely impact
per(ormance i( it did;
Nota- Do not use s?lite>escape>string./ to /uote strings returned (rom @DFHs as it Eill
lead to dou#le2/uoting o( the data; @se s?lite>udf>encode>binary./ insteada
Cer tambi%n
s?lite>udf>decode>binary./
s?lite>escape>string./
s?lite>create>function./
s?lite>create>aggregate./
s?lite>unbuffered>?uery
>P&P 4?
s/liteZun#u((eredZ/uery
>no version in(ormationA might #e only in 5$?
OLiteData#ase2_un#u((eredOuery 22 +Fecute a /uery that does not pre(etch and #u((er all data
Kescripci"n
resource s?lite>unbuffered>?uery > resource d#handleA string /uery ?
resource s?lite>unbuffered>?uery > string /ueryA resource d#handle ?
O#'ect oriented style >method?C
class ,$:iteKatabase \
OLite@n#u((ered unbuffered$uery > string /uery ?
]
s?lite>unbuffered>?uery./ is identical to s?lite>?uery./ eFcept that the result that is returned is a
se/uential (orEard2only result set that can only #e used to read each roEA one a(ter the other;
,his (unction is ideal (or generating things such as &,ML ta#les Ehere you only need to process
one roE at a time and donHt need to randomly access the roE data;
Nota- Functions such as s?lite>seeB./A s?lite>re3ind./A s?lite>ne+t./A s?lite>current./A
and s?lite>num>ro3s./ do not Eor" on result handles returned (rom
s?lite>unbuffered>?uery./;
:ista de parmetros
@uer?
,he /uery to #e eFecuted;
#1han#le
,he OLite Data#ase resourceX returned (rom s?lite>open ./ Ehen used procedurally; ,his
parameter is not re/uired Ehen using the o#'ect2oriented method;
Nota- ,Eo alternative syntaFes are supported (or compati#ility Eith other data#ase
eFtensions >such as MyOL?; ,he pre(erred (orm is the (irstA Ehere the #1han#le
parameter is the (irst parameter to the (unction;
Calores retornados
Returns a result handle or FALSE on (ailure;
s?lite>unbuffered>?uery./ returns a se/uential (orEard2only result set that can only #e used to
read each roEA one a(ter the other;
Cer tambi%n
s?lite>?uery./
s?lite>5alid
>P&P 4?
s/liteZvalid
>no version in(ormationA might #e only in 5$?
OLiteResult2_valid
>no version in(ormationA might #e only in 5$?
OLite@n#u((ered2_valid 22 Returns Ehether more roEs are availa#le
Kescripci"n
#ool s?lite>5alid > resource result ?
O#'ect oriented style >method?C
class ,$:iteMesult \
#ool 5alid > void ?
]class ,$:ite)nbuffered \
#ool 5alid > void ?
]
Finds Ehether more roEs are availa#le (rom the given result handle;
:ista de parmetros
result
,he OLite result resource; ,his parameter is not re/uired Ehen using the o#'ect2oriented
method;
Nota- +sta (uncion no puede usarse con resultados /ue no se encuentren
almacenados en un almacenador intermedio >#u((er?;
Calores retornados
Returns TRUE i( there are more roEs availa#le (rom the result handleA or FALSE otherEise;
Cer tambi%n
s?lite>num>ro3s./
s?lite>changes./
CIII. ,ecure ,hell* ;unctions
Introducci"n
Bindings to the li#ssh0 li#rary Ehich provide access to resources >shellA remote eFecA tunnelingA (ile
trans(er? on a remote machine using a secure cryptographic transport;
Instalaci"n
Mas in(ormacion so#re nuevos lanzamientosA descargas (icheros de (uentesA in(ormacion so#re los
responsa#les asi como un H5&ANG+LOGHA se puede encontrar a/uiC
httpCDDpecl;php;netDpac"ageDssh0;
%ou Eill also need version 3;8 or greater o( the li#ssh0 li#rary >possi#ly higherA see release notes?;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
SSH*_FIN#ERPRINT_MD2 >integer?
Flag to ssh*>fingerprint./ re/uesting host"ey (ingerprint as an MD4 hash;
SSH*_FIN#ERPRINT_SHA) >integer?
Flag to ssh*>fingerprint./ re/uesting host"ey (ingerprint as an &A1 hash;
SSH*_FIN#ERPRINT_HE% >integer?
Flag to ssh*>fingerprint./ re/uesting host"ey (ingerprint as a string o( heFits;
SSH*_FIN#ERPRINT_RA" >integer?
Flag to ssh*>fingerprint./ re/uesting host"ey (ingerprint as a raE string o( M2#it characters;
SSH*_TERM_UNIT_CHARS >integer?
Flag to ssh*>shell./ speci(ying that 76#th and he6Eht are provided as character sizes;
SSH*_TERM_UNIT_PI%ELS >integer?
Flag to ssh*>shell./ speci(ying that 76#th and he6Eht are provided in piFel units;
SSH*_DEFAULT_TERM_"IDTH >integer?
De(ault terminal Eidth re/uested #y ssh*>shell./;
SSH*_DEFAULT_TERM_HEI#HT >integer?
De(ault terminal height re/uested #y ssh*>shell./;
SSH*_DEFAULT_TERM_UNIT >integer?
De(ault terminal units re/uested #y ssh*>shell./;
SSH*_STREAM_STDIO >integer?
Flag to ssh*>fetch>stream./ re/uesting ,D.O su#channel;
SSH*_STREAM_STDERR >integer?
Flag to ssh*>fetch>stream./ re/uesting ,D+RR su#channel;
SSH*_DEFAULT_TERMINAL >string?
De(ault terminal type >e;g; vt130A ansiA FtermA vanilla? re/uested #y ssh*>shell./;
Tabla de contenidos
ssh0ZauthZhost#asedZ(ile 22 Authenticate using a pu#lic host"ey
ssh0ZauthZnone 22 Authenticate as =none=
ssh0ZauthZpassEord 22 Authenticate over & using a plain passEord
ssh0ZauthZpu#"eyZ(ile 22 Authenticate using a pu#lic "ey
ssh0Zconnect 22 5onnect to an & server
ssh0ZeFec 22 +Fecute a command on a remote server
ssh0Z(etchZstream 22 Fetch an eFtended data stream
ssh0Z(ingerprint 22 Retreive (ingerprint o( remote server
ssh0ZmethodsZnegotiated 22 Return list o( negotiated methods
ssh0ZscpZrecv 22 Re/uest a (ile via 5P
ssh0ZscpZsend 22 end a (ile via 5P
ssh0Zs(tpZlstat 22 tat a sym#olic lin"
ssh0Zs(tpZm"dir 22 5reate a directory
ssh0Zs(tpZreadlin" 22 Return the target o( a sym#olic lin"
ssh0Zs(tpZrealpath 22 Resolve the realpath o( a provided path string
ssh0Zs(tpZrename 22 Rename a remote (ile
ssh0Zs(tpZrmdir 22 Remove a directory
ssh0Zs(tpZstat 22 tat a (ile on a remote (ilesystem
ssh0Zs(tpZsymlin" 22 5reate a symlin"
ssh0Zs(tpZunlin" 22 Delete a (ile
ssh0Zs(tp 22 .nitialize F,P su#system
ssh0Zshell 22 Re/uest an interactive shell
ssh0Ztunnel 22 Open a tunnel through a remote server
ssh*>auth>hostbased>file
>no version in(ormationA might #e only in 5$?
ssh0ZauthZhost#asedZ(ile 22 Authenticate using a pu#lic host"ey
Kescription
#ool ssh*>auth>hostbased>file > resource sessionA string usernameA string hostnameA string
pu#"ey(ileA string priv"ey(ile PA string passphrase PA string localZusernameQQ ?
Authenticate using a pu#lic host"ey read (rom a (ile; .( pr6>e?96le is encrypted >Ehich it should #e?A
the passphrase must #e provided; .( local_username is omittedA then the value (or username Eill #e
used (or it;
E'emplo !. Authentication using a public hostBey
<?php
$connection > sshC%connect3Mshell.example.comM, CC, array3MhostIeyM>>MsshFrsaM99;
i# 3sshC%auth%hostbased%#ile3$connection, MremoteusernameM, Mmyhost.example.comM,
M/usr/local/etc/hostIey%rsa.pubM,
M/usr/local/etc/hostIey%rsaM, MsecretM,
MlocalusernameM99 :
echo "ublic ]ey Hostbased ,uthentication &uccess#ulVn";
; else :
die3Mublic ]ey Hostbased ,uthentication SailedM9;
;
?>
Nota- ssh*>auth>hostbased>file./ re/uires li#ssh0 _^ 3;: and P&PD&0 _^ 3;:
ssh*>auth>none
>no version in(ormationA might #e only in 5$?
ssh0ZauthZnone 22 Authenticate as =none=
Kescription
array ssh*>auth>none > resource sessionA string username ?
Attempt =none= authentication Ehich usually Eill >and should? (ail; As part o( this (ailureA servers
Eill return a list o( accepted authentication methods; .( the server does accept =none= as an
authentication method (or usernameA this (unction Eill simply return TRUE;
E'emplo !. )sing ssh*>auth>none./ to retrei5e a list of authentication methods.
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
$auth%methods > sshC%auth%none3$connection, MuserM9;
i# 3in%array3Mpass8ordM, $auth%methods99 :
echo "&er=er supports pass8ord based authenticationVn";
;
?>
ssh*>auth>pass3ord
>no version in(ormationA might #e only in 5$?
ssh0ZauthZpassEord 22 Authenticate over & using a plain passEord
Kescription
#ool ssh*>auth>pass3ord > resource sessionA string usernameA string passEord ?
Authenticate over & using a plain passEord
E'emplo !. Authenticating 3ith a pass3ord
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
i# 3sshC%auth%pass8ord3$connection, MusernameM, MsecretM99 :
echo ",uthentication &uccess#ul!Vn";
; else :
die3M,uthentication Sailed...M9;
;
?>
ssh*>auth>pubBey>file
>no version in(ormationA might #e only in 5$?
ssh0ZauthZpu#"eyZ(ile 22 Authenticate using a pu#lic "ey
Kescription
#ool ssh*>auth>pubBey>file > resource sessionA string usernameA string pu#"ey(ileA string
priv"ey(ile PA string passphraseQ ?
Authenticate using a pu#lic "ey read (rom a (ile; .( pr6>e?96le is encrypted >Ehich it should #e?A the
passphrase must #e provided;
E'emplo !. Authentication using a public Bey
<?php
$connection > sshC%connect3Mshell.example.comM, CC, array3MhostIeyM>>MsshFrsaM99;
i# 3sshC%auth%pubIey%#ile3$connection, MusernameM,
M/home/username/.ssh/id%rsa.pubM,
M/home/username/.ssh/id%rsaM, MsecretM99 :
echo "ublic ]ey ,uthentication &uccess#ulVn";
; else :
die3Mublic ]ey ,uthentication SailedM9;
;
?>
ssh*>connect
>no version in(ormationA might #e only in 5$?
ssh0Zconnect 22 5onnect to an & server
Kescription
resource ssh*>connect > string host PA int port PA array methods PA array call#ac"sQQQ ?
+sta#lish a connection to a remote & server and return a resource on successA FALSE on error;
metho#s may #e an associative array Eith up to (our parameters as descri#ed #eloE;
Tabla !. &ethods may be an associati5e array 3ith any or all of the follo3ing parameters.
Inde+ Meaning ,upported CaluesL
"eF
List o( "ey eFchange methods to advertiseA coma
separated in order o( pre(erence;
#6996e=hellman=Eroup1=sha1A #6996e=
hellman=Eroup1;=sha1A and #6996e=
hellman=Eroup=e8chanEe=sha1
host"ey
List o( host"ey methods to advertiseA come
separated in order o( pre(erence;
ssh=rsa and ssh=#ss
clientZto
Zserver
Associative array containing cryptA compressionA
and message authentication code >MA5? method
pre(erences (or messages sent (rom client to
server;

Inde+ Meaning ,upported CaluesL
serverZto
Zclient
Associative array containing cryptA compressionA
and message authentication code >MA5? method
pre(erences (or messages sent (rom client to
server;

V 2 upported $alues are dependent on methods supported #y underlying li#rary; ee li#ssh0
documentation (or additional in(ormation;
Tabla *. client_to_ser%er and ser%er_to_client may be an associati5e array 3ith any or all of
the follo3ing parameters.
Inde+ Meaning ,upported CaluesL
crypt
List o( crypto methods to
advertiseA coma separated in
order o( pre(erence;
r6Un#ael=c1cWl?sator.l6u.seA aes2SX=c1cA aes1O2=c1cA
aes12P=c1cA R#es=c1cA 1lo796sh=c1cA cast12P=c1cA arc9ourA
and none//
comp
List o( compression methods to
advertiseA coma separated in
order o( pre(erence;
Dl61 and none
mac
List o( MA5 methods to
advertiseA come separated in
order o( pre(erence;
hmac=sha1A hmac=sha1=OXA hmac=r6pem#1X0A hmac=
r6pem#1X0Wopenssh.comA and none//
Crypt and MAC method 0none0- For security reasonsA none is disa#led #y the
underlying li#ssh0 li#rary unless eFplicitly ena#led during #uild time #y using the
appropriate ;Dcon(igure options; ee documentation (or the underlying li#rary (or more
in(ormation;
Tabla 7. callbackss may be an associati5e array 3ith any or all of the follo3ing parameters.
Inde+ Meaning Prototype
ignore
Name o( (unction to call Ehen an SSH*_MS#_I#NORE
pac"et is received
void ignoreZc#
>Ymessage?
de#ug
Name o( (unction to call Ehen an SSH*_MS#_DE(U# pac"et
is received
void de#ugZc#
>YmessageA YlanguageA
YalEaysZdisplay?
macerror
Name o( (unction to call Ehen a pac"et is received #ut the
message authentication code (ailed; .( the call#ac" returns
TRUEA the mismatch Eill #e ignoredA otherEise the connection
Eill #e terminated;
#ool macerrorZc#
>Ypac"et?
disconnect
Name o( (unction to call Ehen an SSH*_MS#_DISCONNECT
pac"et is received
void disconnectZc#
>YreasonA YmessageA
Ylanguage?
E'emplo !. Jpen a connection forcing 7des(cbc 3hen sending pacBetsE any strength aes cipher
3hen recei5ing pacBetsE no compression in either directionE and Froup! Bey e+change.
<?php
/W .oti#y the user i# the ser=er terminates the connection W/
#unction my%ssh%disconnect3$reason, $messaEe, $lanEuaEe9 :
print#3"&er=er disconnected 8ith reason code )\d/ and messaEe@ \sVn",
$reason, $messaEe9;
;
$methods > array3
MIexM >> Mdi##ieFhellmanFEroup6Fsha6M,
Mclient%to%ser=erM >> array3
McryptM >> M<desFcbcM,
McompM >> MnoneM9,
Mser=er%to%clientM >> array3
McryptM >> MaesC5GFcbc,aes6KCFcbc,aes6CJFcbcM,
McompM >> MnoneM99;
$callbacIs > array3MdisconnectM >> Mmy%ssh%disconnectM9;
$connection > sshC%connect3Mshell.example.comM, CC, $methods, $callbacIs9;
i# 3!$connection9 die3MRonnection #ailedM9;
?>
Once connectedA the client should veri(y the serverHs host"ey using ssh*>fingerprint./A then
authenticate using either passEord or pu#lic "ey;
ee AlsoC ssh*>fingerprint./A ssh*>auth>none./A ssh*>auth>pass3ord./A and
ssh*>auth>pubBey>file./
ssh*>e+ec
>no version in(ormationA might #e only in 5$?
ssh0ZeFec 22 +Fecute a command on a remote server
Kescription
stream ssh*>e+ec > resource sessionA string command PA array envQ ?
+Fecute a command at the remote end and allocate a channel (or it; Returns a stream on success or
FALSE on (ailure;
E'emplo !. E+ecuting a command
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
$stream > sshC%exec3$connection, M/usr/local/bin/php FiM9;
?>
ee AlsoC ssh*>connect./A ssh*>shell./A and ssh*>tunnel./
ssh*>fetch>stream
>no version in(ormationA might #e only in 5$?
ssh0Z(etchZstream 22 Fetch an eFtended data stream
Kescription
stream ssh*>fetch>stream > stream channelA int streamid ?
Fetches an alternate su#stream associated Eith an &0 channel stream identi(ied #y stream6#; ,he
&0 protocol currently de(ines only one su#streamA ,D+RRA Ehich has a su#stream .D o(
SSH*_STREAM_STDERR >de(ined as 1?;
E'emplo !. Jpening a shell and retrie5ing the stderr stream associated 3ith it.
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
$stdio%stream > sshC%shell3$connection9;
$stderr%stream > sshC%#etch%stream3$stdio%stream, &&HC%&*'E,"%&*LE''9;
?>
ee AlsoC ssh*>shell./A ssh*>e+ec./A and ssh*>connect./
ssh*>fingerprint
>no version in(ormationA might #e only in 5$?
ssh0Z(ingerprint 22 Retreive (ingerprint o( remote server
Kescription
string ssh*>fingerprint > resource session PA int (lagsQ ?
Returns a server host"ey hash (rom an active session; De(aults to MD4 (ingerprint encoded as
A5.. heF values;
9laEs may #e either o( SSH*_FIN#ERPRINT_MD2 or SSH*_FIN#ERPRINT_SHA) logically
ORed Eith SSH*_FIN#ERPRINT_HE% or SSH*_FIN#ERPRINT_RA"; De(aults to
SSH*_FIN#ERPRINT_MD2 l SSH*_FIN#ERPRINT_HE%;
E'emplo !. ChecBing the fingerprint against a Bno3n 5alue
<?php
$Ino8n%host > MGSJKRCS2,H6KZ<2RR<J,ZLSK2H55SCE1M;
$connection > sshC%connect3Mshell.example.comM, CC9;
$#inEerprint > sshC%#inEerprint3$connection,
&&HC%S4.-E''4.*%"L5 T &&HC%S4.-E''4.*%HEX9;
i# 3$#inEerprint !> $Ino8n%host9 :
die3"H?&*]EP "4&",*RH!Vn" .
"ossible "anF4nF*heF"iddle ,ttacI?"9;
;
?>
ssh*>methods>negotiated
>no version in(ormationA might #e only in 5$?
ssh0ZmethodsZnegotiated 22 Return list o( negotiated methods
Kescription
array ssh*>methods>negotiated > resource session ?
Returns list o( negotiated methods;
E'emplo !. Ketermining 3hat methods 3ere negotiated
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
$methods > sshC%methods%neEotiated3$connection9;
echo "Encryption Ieys 8ere neEotiated usinE@ :$methods)MIexM/;Vn";
echo "&er=er identi#ied usinE an :$methods)MhostIeyM/; 8ith ";
echo "#inEerprint@ " . sshC%#inEerprint3$connection9 . "Vn";
echo "Rlient to &er=er pacIets 8ill use methods@Vn";
echo "VtRrypt@ :$methods)Mclient%to%ser=erM/)McryptM/;Vn";
echo "VtRomp@ :$methods)Mclient%to%ser=erM/)McompM/;Vn";
echo "Vt",R@ :$methods)Mclient%to%ser=erM/)MmacM/;Vn";
echo "&er=er to Rlient pacIets 8ill use methods@Vn";
echo "VtRrypt@ :$methods)Mser=er%to%clientM/)McryptM/;Vn";
echo "VtRomp@ :$methods)Mser=er%to%clientM/)McompM/;Vn";
echo "Vt",R@ :$methods)Mser=er%to%clientM/)MmacM/;Vn";
?>
ee AlsoC ssh*>connect./
ssh*>scp>rec5
>no version in(ormationA might #e only in 5$?
ssh0ZscpZrecv 22 Re/uest a (ile via 5P
Kescription
#ool ssh*>scp>rec5 > resource sessionA string remoteZ(ileA string localZ(ile ?
5opy a (ile (rom the remote server to the local (ilesystem using the 5P protocol;
E'emplo !. Ko3nloading a file 5ia ,CP
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
sshC%scp%rec=3$connection, M/remote/#ilenameM, M/local/#ilenameM9;
?>
ee AlsoC ssh*>scp>send./A and copy./
ssh*>scp>send
>no version in(ormationA might #e only in 5$?
ssh0ZscpZsend 22 end a (ile via 5P
Kescription
stream ssh*>scp>send > resource sessionA string localZ(ileA string remoteZ(ile PA int createZmodeQ ?
5opy a (ile (rom the local (ilesystem to the remote server using the 5P protocol; ,he (ile Eill #e
created Eith the mode speci(ied #y create_mo#e;
E'emplo !. )ploading a file 5ia ,CP
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
sshC%scp%send3$connection, M/local/#ilenameM, M/remote/#ilenameM, 2G119;
?>
ee AlsoC ssh*>scp>rec5./A and copy./
ssh*>sftp>lstat
>no version in(ormationA might #e only in 5$?
ssh0Zs(tpZlstat 22 tat a sym#olic lin"
Kescription
array ssh*>sftp>lstat > resource s(tpA string path ?
tats a sym#olic lin" on the remote (ilesystem 76thout (olloEing the lin"; ,his (unction is similar to
using the lstat./ (unction Eith the ssh0;s(tpCDD Erapper in P&P4 and returns the same values; ee the
documentation (or stat./ (or details on the values Ehich may #e returned;
E'emplo !. ,tating a symbolic linB 5ia ,;TP
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
$s#tp > sshC%s#tp3$connection9;
$statin#o > sshC%lstat3$s#tp, M/path/to/symlinIM9;
$#ilesi0e > $statin#o)Msi0eM/;
$Eroup > $statin#o)MEidM/;
$o8ner > $statin#o)MuidM/;
$atime > $statin#o)MatimeM/;
$mtime > $statin#o)MmtimeM/;
$mode > $statin#o)MmodeM/;
?>
ee AlsoC ssh*>sftp>stat./A lstat./A and stat./
ssh*>sftp>mBdir
>no version in(ormationA might #e only in 5$?
ssh0Zs(tpZm"dir 22 5reate a directory
Kescription
#ool ssh*>sftp>mBdir > resource s(tpA string dirname PA int mode PA #ool recursiveQQ ?
5reates a directory on the remote (ile server Eith permissions set to mo#e; .( recurs6e is TRUE any
parent directories re/uired (or #6rname Eill #e automatically created as Eell; ,his (unction is similar
to using mBdir./ Eith the ssh0;s(tpCDD Erapper;
E'emplo !. Creating a directory on a remote ser5er
<?php
$connection > sshC%connet3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
$s#tp > sshC%s#tp3$connection9;
sshC%s#tp%mIdir3$s#tp, M/home/username/ne8dirM9;
/W ?r@ mIdir3"sshC.s#tp@//$s#tp/home/username/ne8dir"9; W/
?>
ee AlsoC mBdir./A and ssh*>sftp>rmdir./
ssh*>sftp>readlinB
>no version in(ormationA might #e only in 5$?
ssh0Zs(tpZreadlin" 22 Return the target o( a sym#olic lin"
Kescription
string ssh*>sftp>readlinB > resource s(tpA string lin" ?
Returns the target o( a sym#olic lin";
E'emplo !. Meading a symbolic linB
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
$s#tp > sshC%s#tp3$connection9;
$tarEet > sshC%s#tp%readlinI3$s#tp, M/tmp/mysQl.socIM9;
/W $tarEet is no8 3e.E.9@ M/=ar/run/mysQl.socIM W/
?>
ee AlsoC readlinB./A and ssh*>sftp>symlinB./
ssh*>sftp>realpath
>no version in(ormationA might #e only in 5$?
ssh0Zs(tpZrealpath 22 Resolve the realpath o( a provided path string
Kescription
string ssh*>sftp>realpath > resource s(tpA string (ilename ?
,ranslates 96lename into the e((ective real path on the remote (ilesystem;
E'emplo !. Mesol5ing a pathname
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
$s#tp > sshC%s#tp3$connection9;
$realpath > sshC%s#tp%realpath3$s#tp, M/home/username/../../../..//./usr/../etc/pass8dM9;
/W $realpath is no8@ M/etc/pass8dM W/
?>
ee AlsoC realpath./A and ssh*>sftp>symlinB./ ssh*>sftp>readlinB./
ssh*>sftp>rename
>no version in(ormationA might #e only in 5$?
ssh0Zs(tpZrename 22 Rename a remote (ile
Kescription
#ool ssh*>sftp>rename > resource s(tpA string (romA string to ?
Renames a (ile on the remote (ilesystem;
E'emplo !. Menaming a file 5ia sftp
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
$s#tp > sshC%s#tp3$connection9;
sshC%s#tp%rename3$s#tp, M/home/username/oldnameM, M/home/username/ne8nameM9;
?>
ee AlsoC rename./
ssh*>sftp>rmdir
>no version in(ormationA might #e only in 5$?
ssh0Zs(tpZrmdir 22 Remove a directory
Kescription
#ool ssh*>sftp>rmdir > resource s(tpA string dirname ?
Removes a directory (rom the remote (ile server; ,his (unction is similar to using rmdir./ Eith the
ssh0;s(tpCDD Erapper;
E'emplo !. Memo5ing a directory on a remote ser5er
<?php
$connection > sshC%connet3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
$s#tp > sshC%s#tp3$connection9;
sshC%s#tp%rmdir3$s#tp, M/home/username/deltodelM9;
/W ?r@ rmdir3"sshC.s#tp@//$s#tp/home/username/dirtodel"9; W/
?>
ee AlsoC rmdir./A and ssh*>sftp>mBdir./
ssh*>sftp>stat
>no version in(ormationA might #e only in 5$?
ssh0Zs(tpZstat 22 tat a (ile on a remote (ilesystem
Kescription
array ssh*>sftp>stat > resource s(tpA string path ?
tats a (ile on the remote (ilesystem (olloEing any sym#olic lin"s; ,his (unction is similar to using
the stat./ (unction Eith the ssh0;s(tpCDD Erapper in P&P4 and returns the same values; ee the
documentation (or stat./ (or details on the values Ehich may #e returned;
E'emplo !. ,tating a file 5ia ,;TP
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
$s#tp > sshC%s#tp3$connection9;
$statin#o > sshC%stat3$s#tp, M/path/to/symlinIM9;
$#ilesi0e > $statin#o)Msi0eM/;
$Eroup > $statin#o)MEidM/;
$o8ner > $statin#o)MuidM/;
$atime > $statin#o)MatimeM/;
$mtime > $statin#o)MmtimeM/;
$mode > $statin#o)MmodeM/;
?>
ee AlsoC ssh*>sftp>lstat./A lstat./A and stat./
ssh*>sftp>symlinB
>no version in(ormationA might #e only in 5$?
ssh0Zs(tpZsymlin" 22 5reate a symlin"
Kescription
#ool ssh*>sftp>symlinB > resource s(tpA string targetA string lin" ?
5reates a sym#olic lin" named l6n> on the remote (ilesystem pointing to tarEet;
E'emplo !. Creating a symbolic linB
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
$s#tp > sshC%s#tp3$connection9;
sshC%s#tp%symlinI3$s#tp, M/=ar/run/mysQl.socIM, M/tmp/mysQl.socIM9;
?>
ee AlsoC symlinB./A and ssh*>sftp>readlinB./
ssh*>sftp>unlinB
>no version in(ormationA might #e only in 5$?
ssh0Zs(tpZunlin" 22 Delete a (ile
Kescription
#ool ssh*>sftp>unlinB > resource s(tpA string (ilename ?
Deletes a (ile on the remote (ilesystem
E'emplo !. Keleting a file
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
$s#tp > sshC%s#tp3$connection9;
sshC%s#tp%unlinI3$s#tp, M/home/username/stale%#ileM9;
?>
ee AlsoC unlinB./
ssh*>sftp
>no version in(ormationA might #e only in 5$?
ssh0Zs(tp 22 .nitialize F,P su#system
Kescription
resource ssh*>sftp > resource session ?
Re/uest the F,P su#system (rom an already connected &0 server;
,his method returns an SS!2 S3T+ resource (or use Eith all other ssh0Zs(tpZV>? methods and the
ssh0;s(tpCDD (open Erapper;
E'emplo !. Jpening a file 5ia ,;TP
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
$s#tp > sshC%s#tp3$connection9;
$stream > #open3"sshC.s#tp@//$s#tp/path/to/#ile", MrM9;
?>
ee AlsoC ssh*>scp>send./A and ssh*>scp>rec5./
ssh*>shell
>no version in(ormationA might #e only in 5$?
ssh0Zshell 22 Re/uest an interactive shell
Kescription
stream ssh*>shell > resource session PA string termZtype PA array env PA int Eidth PA int height PA int
EidthZheightZtypeQQQQQ ?
Open a shell at the remote end and allocate a stream (or it; term_t?pe should correspond to one o(
the entries in the target systemHs /etc/termcap (ile and de(aults to an6lla; en may #e passed as an
associative array o( nameDvalue pairs to set in the target environment;
76#thA and he6Eht de(ine the Eidth and height o( the virtual terminal allocated (or the shell process;
76#th_he6Eht_t?pe should #e one o( SSH*_TERM_UNIT_CHARS or
SSH*_TERM_UNIT_PI%ELS;
E'emplo !. E+ecuting a command
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
sshC%auth%pass8ord3$connection, MusernameM, Mpass8ordM9;
$stream > sshC%shell3$connection, M=t62CM, null, J2, C1, &&HC%*E'"%+.4*%RH,'&9;
?>
ee AlsoC ssh*>e+ec./A ssh*>tunnel./A and ssh*>fetch>stream./
ssh*>tunnel
>no version in(ormationA might #e only in 5$?
ssh0Ztunnel 22 Open a tunnel through a remote server
Kescription
stream ssh*>tunnel > resource sessionA string hostA int port ?
Open a soc"et stream to an ar#itrary hostDport #y Eay o( the currently connected & server;
E'emplo !. Jpening a tunnel to an arbitrary host
<?php
$connection > sshC%connect3Mshell.example.comM, CC9;
sshC%auth%pubIey%#ile3$connection, MusernameM, Mid%dsa.pubM, Mid%dsaM9;
$tunnel > sshC%tunnel3$connection, M62.2.2.626M, 6C<159;
?>
ee AlsoC ssh*>connect./A and fsocBopen./
CII. ;unciones de ,ecuencias
Introducci"n
Las secuencias >streams? (ueron introducidas con P&P 8;7;3 como un medio de generalizar el acceso
a archivosA recursos de redA compresi-n de datosA y otras operaciones /ue comparten un 'uego
comBn de (unciones y usos; +n su (orma m*s simpleA una secuenc6a es un o#'eto recurso /ue eFhi#e
un comportamiento secuencia#le; +sto /uiere decirA pueden leerse datos desde la secuencia o
escri#ir datos hacia ella en una (orma linealA y puede /ue sea posi#le e(ectuar #Bs/uedas con fseeB./
de u#icaciones ar#itrarias dentro de la secuencia;
@na envoltura >7rapper? es un c-digo adicional /ue le dice a la secuencia c-mo gestionar los
protocolos y codi(icaciones espec)(icas; Por e'emploA la envoltura http sa#e c-mo traducir una @RL
a una petici-n !TT+/1.0 por un archivo en un servidor remoto; +Fisten varias envolturas incluidas
con P&P por de(ecto >$ea Ap<ndice L?A y envolturas adicionalesA personalizadasA pueden agregarse
ya sea dentro de un script P&P usando stream>3rapper>register./A o directamente desde una
eFtensi-n usando la Re(erencia de AP. en 5ap)tulo K7; Dado /ue cual/uier tipo de envoltura puede
ser agregada a P&PA no eFiste un l)mite impuesto en lo /ue se puede hacer con ellas; Para consultar
la lista de envolturas soportadas actualmenteA use stream>get>3rappers./;
@na secuencia es re(erenciada comoC es@uemaCDD#est6no
es@uema>cadena? 2 +l nom#re de la envoltura a ser usada; Algunos e'emplosC (ileA httpA httpsA
(tpA (tpsA compress;zli#A compress;#z0A y php; $ea Ap<ndice L para consultar una lista de
envolturas integradas con P&P; i no se especi(ica una envolturaA es usada la envoltura
predeterminada de la (unci-n >usualmente 96leCDD?;
#est6no 2 Depende en la envoltura usada; Para secuencias relacionadas con el sistema de
archivosA <ste par*metro es por lo general una ruta y un nom#re de archivo /ue apunta al
archivo deseado; Para secuencias de redA usualmente consiste de un nom#re de hostA por lo
general con una ruta adicionada al (inal; NuevamenteA vea Ap<ndice L para encontrar una
descripci-n de destinos para las secuencias integradas;
;iltros de ,ecuencia
@n 96ltro es una pieza (inal de c-digo /ue puede e(ectuar operaciones so#re los datos a medida /ue
<stos son le)dos desde una secuencia o escritos hacia una; Puede apilarse cual/uier cantidad de
(iltros so#re una secuencia; Pueden de(inirse (iltros personalizados en un script P&P usando
stream>filter>register./ o en una eFtensi-n usando la Re(erencia AP. de 5ap)tulo K7; Para
consultar la lista de (iltros registrados actualmenteA use stream>get>filters./;
Conte+tos de ,ecuencia
@n conte8to es un con'unto de par[metros y opc6ones espec)(icas de cada envoltura /ue modi(ican o
me'oran el comportamiento de una secuencia; Los conte8tos son creados usando
stream>conte+t>create./ y pueden ser pasados a la mayor)a de (unciones de creaci-n de secuencias
relacionadas con el sistema de archivos >esto esA fopen./A file./A file>get>contents./A etc;;;?;
Pueden especi(icarse opc6ones cuando se hacen llamados a stream>conte+t>create./A o m*s
adelante usando stream>conte+t>set>option./; @na lista de opc6ones espec)(icas de envoltura
puede encontrarse con la lista de envolturas integradas >$ea Ap<ndice L?;
AdicionalmenteA pueden de(inirse par[metros en un conte8to usando stream>conte+t>set>params
./; ActualmenteA el Bnico par[metro #e conte8to soportado por P&P es not696cac6`n; +l valor de <ste
par*metro de#e ser el nom#re de una (unci-n a ser llamada cuando un evento ocurre so#re una
secuencia; La (unci-n de noti(icaci-n llamada durante un evento de#e aceptar los siguientes seis
par*metrosC
void mi>notificador > int codigoZnoti(icacionA int severidadA string mensa'eA int codigoZmensa'eA
int #ytesZtrans(eridosA int #ytesZmaF ?
co#6Eo_mensaUe y seer6#a# son valores num<ricos /ue corresponden a las constantes
STREAM_NOTIFY_? listadas m*s adelante; i un mensa'e descriptivo se encuentra disponi#le
desde la secuenciaA mensaUe y co#6Eo_mensaUe se popular*n con los valores apropiados; +l
signi(icado de <stos valores depende de la envoltura espec)(ica en uso; 1?tes_trans9er6#os y
1?tes_ma8 se popular*n cuando sea aplica#le;
Instalaci"n
Las secuencias son parte integral de P&P a partir de la versi-n 8;7;3; No se re/uiere de ningBn paso
adicional para ha#ilitarlas;
Clases de ,ecuencia
+s posi#le registrar envolturas diseWadas por el usuario mediante stream>3rapper>register./A use
la de(inici-n de clase eFpuesta en su respectiva p*gina del manual;
La clase phpZuserZ(ilter se encuentra prede(inida y es una clase #ase a#stracta para su uso con
(iltros de(inidos por el usuario; $ea la p*gina del manual so#re stream>filter>register./ para m*s
detalles so#re la implementaci-n de (iltros de(inidos por el usuario;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
Constante Kescripci"n
STREAM_FILTER_
READ V
@sada con stream>filter>append./ y stream>filter>prepend./ para
indicar /ue el (iltro especi(icado de#er)a ser aplicado Bnicamente cuando se
est< e(ectuando lectura;
STREAM_FILTER_
"RITE V
@sada con stream>filter>append./ y stream>filter>prepend./ para
indicar /ue el (iltro especi(icado de#er)a ser aplicado Bnicamente cuando se
est< e(ectuando escr6tura;
STREAM_FILTER_
ALL V
+sta constante es Walente a STREAM_FILTER_READ V
STREAM_FILTER_WRITE;
PSFS_PASS_ON V
C`#6Eo #e Retorno /ue indica /ue el (iltro de espacio de usuario devolvi-
pa/uetes en 'sal6#a;
PSFS_FEED_ME V
C`#6Eo #e Retorno /ue indica /ue el (iltro de espacio de usuario no
devolvi- pa/uetes en 'sal6#a >lo /ue /uiere decir /ue no hay datos
disponi#les?;
PSFS_ERR_FATAL
V
C`#6Eo #e Retorno /ue indica /ue el (iltro de espacio de usuario encontr-
un error irrecupera#le >esto /uiere decirA se reci#ieron datos inv*lidos?;
Constante Kescripci"n
STREAM_USE_PAT
H
Aan#era /ue indica si la secuenc6a us- la ruta de inclusi-n;
STREAM_REPORT_
ERRORS
Aan#era /ue indica si la enoltura es responsa#le de generar errores usando
trigger>error./ durante la apertura de la secuencia; i esta #andera no est*
de(inidaA usted no de#er)a generar errores;
STREAM_CLIENT_
ASYNC_CONNECT V
A#rir el soc"et de cliente asincr-nicamente; 5onstante usada con
stream>socBet>client./;
STREAM_CLIENT_
PERSISTENT V
+l soc"et de cliente a#ierto con stream>socBet>client./ de#e permanecer
persistente entre cargas de la p*gina;
STREAM_SER$ER_
(IND V
Le dice a una secuencia creada con stream>socBet>ser5er./ /ue se enlace
con el destino especi(icado; Los soc"ets de servidor siempre de#er)an
incluir <sta #andera;
STREAM_SER$ER_
LISTEN V
Le dice a una secuencia creada con stream>socBet>ser5er./ y enlazada
usando la #andera STREAM_SER$ER_(IND /ue comience a escuchar en
el soc"et; Los transportes orientados a coneFiones >como ,5P? de#en usar
esta #anderaA de lo contrario el soc"et de servidor no ser* ha#ilitado; @sar
esta #andera con transportes sin coneFi-n >como @DP? es un error;
STREAM_NOTIFY_
RESOL$E V
@na direcci-n remota re/uerida para <sta secuencia ha sido resueltaA o la
resoluci-n (all-; $ea seer6#a# para contar con una indicaci-n de lo /ue ha
sucedido;
STREAM_NOTIFY_
CONNECT
e ha esta#lecido una coneFi-n con un recurso eFterno;
STREAM_NOTIFY_
AUTH_RE.UIRED
e re/uiere de autorizaci-n adicional para acceder al recurso especi(icado;
,)picamente se emite con un nivel de seer6#a# de
STREAM_NOTIFY_SE$ERITY_ERR;
STREAM_NOTIFY_
MIME_TYPE_IS
+l t6po=m6me del recurso ha sido identi(icadoA re(i<rase a mensaUe para una
descripci-n del tipo descu#ierto;
STREAM_NOTIFY_
FILE_SI/E_IS
+l tamaao del recurso ha sido descu#ierto;
STREAM_NOTIFY_
REDIRECTED
+l recurso eFterno ha redireccionado la secuencia a una u#icaci-n
alternativa; Re(i<rase a mensaUe;
STREAM_NOTIFY_
PRO#RESS
.ndica el progreso actual de una trans(erencia de secuencia en
1?tes_trans9er6#osA y posi#lemente 1?tes_ma8 tam#i<n;
STREAM_NOTIFY_
COMPLETED V
No hay m*s datos disponi#les en la secuencia;
STREAM_NOTIFY_
FAILURE
@n error gen<rico ocurri- en la secuenciaA consulte mensaUe y
co#6Eo_mensaUe para m*s detalles;
STREAM_NOTIFY_
AUTH_RESULT
La autorizaci-n se ha completado >con o sin <Fito?;
STREAM_NOTIFY_
SE$ERITY_INFO
Noti(icaci-n normalA no relacionada con errores;
STREAM_NOTIFY_
SE$ERITY_"ARN
5ondici-n de error no2cr)tico; +l procesamiento puede continuar;
STREAM_NOTIFY_
SE$ERITY_ERR
@n error cr)tico ha ocurrido; +l procesamiento no puede continuar;
Nota- Las constantes marcadas con / se encuentran disponi#les Bnicamente en P&P 4;
Errores de ,ecuencia
Al igual /ue con cual/uier otra (unci-n relacionada con archivos o soc"etsA una operaci-n so#re una
secuencia puede (allar por una variedad de razones normales >esto esC .ncapaz de conectarse con el
servidor remotoA archivo no encontradoA etc;;;?; @na llamada relacionada con una secuencia puede
(allar tam#i<n de#ido a /ue la secuencia deseada no est* registrada en el sistema actual; 5onsulte la
matriz devuelta por stream>get>3rappers./ para ver una lista de secuencias soportadas en su
instalaci-n de P&P; Al igual /ue con la mayor)a de (unciones internas de P&PA si ocurre un (alloA se
generar* un mensa'e E_"ARNIN# /ue descri#e la naturaleza del error;
E'emplos
E'emplo !. )so de file>get>contents./ para recuperar datos de m4ltiples fuentes
<?php
/W Oeer archi=o local desde /home/bar W/
$archi=o%local > #ile%Eet%contents3"/home/bar/#oo.txt"9;
/W 4dentico al ejemplo anterior, indicando explicitamente el esQuema S4OE W/
$archi=o%local > #ile%Eet%contents3"#ile@///home/bar/#oo.txt"9;
/W Oeer un archi=o remoto desde 888.example.com usando H** W/
$archi=o%http > #ile%Eet%contents3"http@//888.example.com/#oo.txt"9;
/W Oeer un archi=o remoto desde 888.example.com usando H**& W/
$archi=o%https > #ile%Eet%contents3"https@//888.example.com/#oo.txt"9;
/W Oeer un archi=o remoto desde #tp.example.com usando S* W/
$archi=o%#tp > #ile%Eet%contents3"#tp@//usuario@contrasenya^#tp.example.com/#oo.txt"9;
/W Oeer un archi=o remoto desde #tp.example.com usando S*& W/
$archi=o%#tps > #ile%Eet%contents3"#tps@//usuario@contrasenya^#tp.example.com/#oo.txt"9;
?>
E'emplo *. Meali6ar una petici"n PJ,T a un ser5idor https
<?php
/W En=iar una peticion ?&* a https@//seEuro.example.com/#ormulario.php
W 4ncluir elementos de #ormulario llamados "#oo" y "bar" con =alores
W de prueba
W/
$socI > #socIopen3"ssl@//seEuro.example.com", 11<, $errno, $errstr, <29;
i# 3!$socI9 die3"$errstr 3$errno9Vn"9;
$datos > "#oo>" . urlencode3"(alor para Soo"9 . "&bar>" . urlencode3"(alor para Zar"9;
#8rite3$socI, "?&* /#ormulario.php H**/6.2VrVn"9;
#8rite3$socI, "Host@ seEuro.example.comVrVn"9;
#8rite3$socI, "RontentFtype@ application/xF888F#ormFurlencodedVrVn"9;
#8rite3$socI, "RontentFlenEth@ " . strlen3$datos9 . "VrVn"9;
#8rite3$socI, ",ccept@ W/WVrVn"9;
#8rite3$socI, "VrVn"9;
#8rite3$socI, "$dataVrVn"9;
#8rite3$socI, "VrVn"9;
$cabeceras > "";
8hile 3$cadena > trim3#Eets3$socI, 12KG999
$cabeceras .> "$cadenaVn";
echo "Vn";
$cuerpo > "";
8hile 3!#eo#3$socI99
$cuerpo .> #Eets3$socI, 12KG9;
#close3$socI9;
?>
E'emplo 7. Escritura de datos a un archi5o comprimido
<?php
/W Rrear un archi=o comprimido Que contenEa una cadena arbitraria
W El archi=o puede ser leido de =uelta usando una secuencia
W compress.0lib o simplemente descomprimido desde la linea de comandos
W usando ME0ip Fd #ooFbar.txt.E0M
W/
$da > #open3"compress.0lib@//#ooFbar.txt.E0", "8b"9;
i# 3!$da9 die3".o #ue posible crear el archi=o."9;
#8rite3$da, "Esto es una prueba.Vn"9;
#close3$da9;
?>
Tabla de contenidos
streamZconteFtZcreate 22 5rear un conteFto de secuencia
streamZconteFtZgetZde(ault 22 Retreive the de(ault streams conteFt
streamZconteFtZgetZoptions 22 Recuperar las opciones para una secuenciaDenvolturaDconteFto
streamZconteFtZsetZoption 22 +sta#lece una opci-n para una secuenciaDenvolturaDconteFto
streamZconteFtZsetZparams 22 +sta#lecer par*metros para una secuenciaDenvolturaDconteFto
streamZcopyZtoZstream 22 5opia datos desde una secuencia a otra
streamZ(ilterZappend 22 Ad'untar un (iltro a una secuencia
streamZ(ilterZprepend 22 Ad'untar un (iltro a una secuencia
streamZ(ilterZregister 22 Registrar un (iltro de secuencia implementado como una clase P&P
derivada de php_user_96lter
streamZ(ilterZremove 22 Remove a (ilter (rom a stream
streamZgetZcontents 22 Lee el resto de una secuencia en una cadena
streamZgetZ(ilters 22 Recuperar la lista de (iltros registrados
streamZgetZline 22 O#tiene una l)nea desde un recurso de secuenciaA hasta un delimitador dado
streamZgetZmetaZdata 22 Recupera meta datosDca#eceras desde apuntadores a secuenciasDarchivos
streamZgetZtransports 22 Recuperar la lista de transportes de soc"et registrados
streamZgetZErappers 22 Recuperar la lista de secuencias registradas
streamZregisterZErapper 22 Alias de stream>3rapper>register./
streamZselect 22 +'ecuta el Walente al llamado de sistema select>? en la matriz de secuencias dadaA
con un tiempo de espera especi(icado por tvZsec y tvZusec
streamZsetZ#loc"ing 22 +sta#lecer modo de #lo/ueoDno2#lo/ueo so#re una secuencia
streamZsetZtimeout 22 +sta#lecer el periodo de espera de una secuencia
streamZsetZEriteZ#u((er 22 +sta#lece el uso de #B(eres de archivo en la secuencia dada
streamZsoc"etZaccept 22 Aceptar una coneFi-n en un soc"et creado por stream>socBet>ser5er./
streamZsoc"etZclient 22 A#rir una coneFi-n de soc"et de dominio de .nternet o @niF
streamZsoc"etZena#leZcrypto 22 ,urns encryption onDo(( on an already connected soc"et
streamZsoc"etZgetZname 22 Recuperar el nom#re de los soc"ets locales o remotos
streamZsoc"etZpair 22 5reates a pair o( connectedA indistinguisha#le soc"et streams
streamZsoc"etZrecv(rom 22 Reci#e datos desde un soc"etA conectado o no
streamZsoc"etZsendto 22 +nv)a un mensa'e a un soc"etA sin importar si est* conectado o no
streamZsoc"etZserver 22 5rear un soc"et de servidor de dominio de .nternet o @niF
streamZErapperZregister 22 Registrar una envoltura @RL implementada como una clase P&P
streamZErapperZrestore 22 Restores a previously unregistered #uilt2in Erapper
streamZErapperZunregister 22 @nregister a @RL Erapper
stream>conte+t>create
>P&P 8 _^ 8;7;3A P&P 4?
streamZconteFtZcreate 22 5rear un conteFto de secuencia
Kescripci"n
resource stream>conte+t>create > Parray opcionesQ ?
5rea y devuelve un conteFto de secuencia con cual/uier nBmero de opciones dadas en el con'unto
opc6ones;
Las opc6ones de#en venir en una matriz asociativa de matrices asociativas en el (ormato 'matr6D
)<enoltura<.)<opc6on<. : 'alor; u valor predeterminado es una matriz vac)a;
E'emplo !. )so de stream>conte+t>create./
<?php
$opciones > array3
MhttpM>>array3
MmethodM>>"-E*",
MheaderM>>",cceptFlanEuaEe@ enVrVn" .
"RooIie@ #oo>barVrVn"
9
9;
$contexto > stream%context%create3$opciones9;
/W En=ia una peticion http a 888.example.com con las cabeceras
W adicionales mostradas anteriormente W/
$da > #open3Mhttp@//888.example.comM, MrM, #alse, $contexto9;
#passthru3$da9;
#close3$da9;
?>
$ea tam#i<n stream>conte+t>set>option./A y el listado de envolturas soportadas con opciones de
conteFto >Ap<ndice L?;
stream>conte+t>get>default
>no version in(ormationA might #e only in 5$?
streamZconteFtZgetZde(ault 22 Retreive the de(ault streams conteFt
Kescription
resource stream>conte+t>get>default > Parray optionsQ ?
Returns the de(ault stream conteFt Ehich is used Ehenever (ile operations >fopen./A
file>get>contents./A etc;;;? are called Eithout a conteFt parameter; Options (or the de(ault conteFt
can optionally #e speci(ied Eith this (unction using the same syntaF as stream>conte+t>create./;
opt6ons must #e an associative array o( associative arrays in the (ormat 'arr)<7rapper<.)<opt6on<. :
'alue;
E'emplo !. )sing stream>conte+t>get>default./
<?php
$de#ault%opts > array3
MhttpM>>array3
MmethodM>>"-E*",
MheaderM>>",cceptFlanEuaEe@ enVrVn" .
"RooIie@ #oo>bar",
MproxyM>>"tcp@//62.51.6.<K@J222"
9
9;
$alternate%opts > array3
MhttpM>>array3
MmethodM>>"?&*",
MheaderM>>"RontentFtype@ application/xF888F#ormFurlencodedVrVn" .
"RontentFlenEth@ " . strlen3"ba0>bomb"9,
McontentM>>"ba0>bomb"
9
9;
$de#ault > stream%context%Eet%de#ault3$de#ault%opts9;
$alternate > stream%context%create3$alternate%opts9;
/W &ends a reEular -E* reQuest to proxy ser=er at 62.51.6.<K
W Sor 888.example.com usinE context options speci#ied in $de#ault%opts
W/
read#ile3Mhttp@//888.example.comM9;
/W &ends a ?&* reQuest directly to 888.example.com
W +sinE context options speci#ied in $alternate%opts
W/
read#ile3Mhttp@//888.example.comM, #alse, $alternate9;
?>
ee also stream>conte+t>create./A and Listing o( supported Erappers Eith conteFt options
>Ap<ndice L?;
stream>conte+t>get>options
>P&P 8 _^ 8;7;3A P&P 4?
streamZconteFtZgetZoptions 22 Recuperar las opciones para una secuenciaDenvolturaDconteFto
Kescripci"n
array stream>conte+t>get>options > resource secuencialconteFto ?
Devuelve una matriz de opciones de la secuencia o conteFto especi(icado;
stream>conte+t>set>option
>P&P 8 _^ 8;7;3A P&P 4?
streamZconteFtZsetZoption 22 +sta#lece una opci-n para una secuenciaDenvolturaDconteFto
Kescripci"n
#ool stream>conte+t>set>option > resource conteFtolsecuenciaA string envolturaA string opcionA
miFed valor ?
+sta#lece una opci-n en el conteFto especi(icado; alor reci#e el valor de opc6on para la enoltura;
stream>conte+t>set>params
>P&P 8 _^ 8;7;3A P&P 4?
streamZconteFtZsetZparams 22 +sta#lecer par*metros para una secuenciaDenvolturaDconteFto
Kescripci"n
#ool stream>conte+t>set>params > resource secuencialconteFtoA array parametros ?
parametros de#e ser una matriz asociativa de la estructuraC 'parametros)<nom1re_parametro<. :
*alor_parametro*J;
Tabla !. Parmetros
Parmetros Prop"sito
not696cat6on
Nom#re de la llamada de retorno de(inida por el usuario a ser llamada cuando una
secuencia genere una noti(icaci-n;
stream>copy>to>stream
>P&P 4?
streamZcopyZtoZstream 22 5opia datos desde una secuencia a otra
Kescripci"n
int stream>copy>to>stream > resource (uenteA resource destino PA int longitudZmaFimaQ ?
5rea una copia de hasta lonE6tu#_ma86ma #ytes de datos a partir de la posici-n actual en 9uente y la
direcciona a #est6no; i lonE6tu#_ma86ma no se especi(icaA ser* copiado todo el contenido restante
en 9uente; Devuelve el conteo total de #ytes copiados;
E'emplo !. E'emplo de stream>copy>to>stream./
<?php
$#uente > #open3Mhttp@//888.example.comM, MrM9;
$dest6 > #open3Mprimer6I.txtM, M8M9;
$destC > #open3Mresto.txtM, M8M9;
echo stream%copy%to%stream3$#uente, $dest6, 62C19 . " bytes copiados a primer6I.txtVn";
echo stream%copy%to%stream3$#uente, $destC9 . " bytes copiados a resto.txtVn";
?>
$ea tam#i<n copy./;
stream>filter>append
>P&P 8 _^ 8;7;3A P&P 4?
streamZ(ilterZappend 22 Ad'untar un (iltro a una secuencia
Kescripci"n
#ool stream>filter>append > resource secuenciaA string nom#reZ(iltro PA int lecturaZescritura PA
miFed parametrosQQ ?
Agrega el nom1re_96ltro a la lista de (iltros ad'untos a la secuenc6a; +ste (iltro ser* aWadido con los
parametros especi(icados al 96nal de la lista y por lo tanto ser* llamado al Bltimo durante las
operaciones de la secuencia; Para agregar un (iltro al comienzo de la listaA use
stream>filter>prepend./;
Por de(ectoA stream>filter>append./ ad'untar* el (iltro a la ca#ena #e 96ltros #e lectura si el archivo
(ue a#ierto para lectura >esto /uiere decirA Modo del ArchivoC rA o Y?; +l (iltro tam#i<n se ad'untar*
a la ca#ena #e 96ltros #e escr6tura si el archivo (ue a#ierto para escritura >esto /uiere decirA Modo
del ArchivoC 7A aA O Y?; Las constantes STREAM_FILTER_READA STREAM_FILTER_"RITEA o
STREAM_FILTER_ALL pueden ser pasadas tam#i<n al par*metro lectura_escr6tura para
so#rescri#ir este comportamiento;
E'emplo !. Control del lugar en el ?ue se aplican los filtros
<?php
/W ,brir un archi=o de prueba para lectura y escritura W/
$da > #open3"prueba.txt", "r8"9;
/W ,plicar el #iltro '?*6< a la cadena de #iltros de escritura, pero
W no a la cadena de #iltros de lectura W/
stream%#ilter%append3$da, "strinE.rot6<", &*'E,"%S4O*E'%7'4*E9;
/W Escribir una cadena simple al archi=o, la cual sera trans#ormada
mediante '?*6< en su camino de salida W/
#8rite3$da, "Esta es una pruebaVn"9;
/W (ol=er al inicio del archi=o W/
re8ind3$da9;
/W Oeer los contenidos del archi=o de =uelta. &i hubiesemos aplicado
W el #iltro a la cadena de #iltros de lectura tambien, =eriamos el
W texto de =uelta a su estado oriEinal debido a la retrans#ormacion
W con '?*6<< W/
#passthru3$da9;
#close3$da9;
/W &alida Esperada
FFFFFFFFFFFFFFF
'#En r# han cehron
W/
?>
Cuando se usan filtros personali6ados .de usuario/- La (unci-n
stream>filter>register./ de#e ser llamada primero para registrar el (iltro de usuario
deseado para nom1re_96ltro;
Nota- Los datos de la secuencia son le)dos desde los recursos >tanto locales como
remotos? en pa/uetesA usando #B(eres internos para conservar todos los datos sin
consumir; 5uando un nuevo (iltro es agregado a la secuenciaA los datos en los #B(eres
internos son procesados a trav<s del nuevo (iltro en ese momento; +ste comportamiento
di(iere de a/u<l de stream>filter>prepend./;
$ea tam#i<n stream>filter>register./A y stream>filter>prepend./;
stream>filter>prepend
>P&P 8 _^ 8;7;3A P&P 4?
streamZ(ilterZprepend 22 Ad'untar un (iltro a una secuencia
Kescripci"n
#ool stream>filter>prepend > resource secuenciaA string nom#reZ(iltro PA int lecturaZescritura PA
miFed parametrosQQ ?
Agrega el nom1re_96ltro a la lista de (iltros ad'untos a la secuenc6a; +ste (iltro ser* aWadido con los
parametros especi(icados al com6enDo de la lista y por lo tanto ser* llamado al inicio de las
operaciones de secuencia; Para aWadir un (iltro al (inal de la listaA use stream>filter>append./;
Por de(ectoA stream>filter>prepend./ ad'untar* el (iltro a la ca#ena #e 96ltros #e lectura si el
archivo (ue a#ierto para lectura >esto /uiere decirA Modo del ArchivoC rA o Y?; +l (iltro ser* ad'unto
tam#i<n a la ca#ena #e 96ltros #e escr6tura si el archivo (ue a#ierto para escritura >esto /uiere decirA
Modo del ArchivoC 7A aA o Y?; Las constantes STREAM_FILTER_READA
STREAM_FILTER_"RITEA o STREAM_FILTER_ALL tam#i<n pueden ser pasadas al par*metro
lectura_escr6tura para so#rescri#ir este comportamiente; $ea stream>filter>append./ para
consultar un e'emplo de <ste par*metro;
Cuando se usan filtros personali6ados .de usuario/- La (unci-n
stream>filter>register./ de#e ser llamada primero para registrar el (iltro de usuario
deseado para nom1re_96ltro;
Nota- Los datos de las secuencias son le)dos desde los recursos >tanto locales como
remotos? en pa/uetesA usando #B(eres internos para almacenar datos sin consumir;
5uando un nuevo (iltro es agregado al inicio de la lista de (iltros en una secuenciaA los
datos de los #B(eres internosA /ue ya han sido procesados con otros (iltrosA no ser*n
reprocesados a trav<s del nuevo (iltro en ese momento; +ste comportamiento di(iere de
a/u<l de stream>filter>append./;
$ea tam#i<n stream>filter>register./A y stream>filter>append./;
stream>filter>register
>P&P 4?
streamZ(ilterZregister 22 Registrar un (iltro de secuencia implementado como una clase P&P
derivada de php_user_96lter
Kescripci"n
#ool stream>filter>register > string nom#reZ(iltroA string nom#reZclase ?
stream>filter>register./ le permite implementar su propio (iltro en cual/uier secuencia registrada
utilizada con todas los otras (unciones de sistema de archivos >tales como fopen./A fread./ etc;?;
Para implementar un (iltroA necesita de(inir una clase como una eFtensi-n de php_user_96lter con un
nBmero de (unciones miem#roA tal y como se de(ine m*s adelante; 5uando realice operaciones de
lecturaDescritura en la secuencia a la /ue se ha ad'untado su (iltroA P&P pasar* los datos a trav<s de
su (iltro >y cual/uier otro (iltre ad'unto a esa secuencia? de modo /ue los datos puedan ser
modi(icados como lo desee; De#e implementar los m<todos eFactamente como se descri#e m*s
adelante 2 hacerlo de otra (orma llevar* a comportamientos inde(enidos;
stream>filter>register./ devolver* FALSE si nom1re_96ltro ya se encuentra de(inido;
int filter > resource entradaA resource salidaA int iconsumidoA #ool cerrando ?
+ste m<todo es llamado siempre /ue se lean o escri#an datos desde y hacia la secuencia ad'unta >tal
y como sucede con fread./ o f3rite./?; entra#a es un recurso /ue apunta a una 1r6Ea#a #e pa@uetes
/ue contiene uno o m*s o#'etos de tipo pa@uete /ue contienen datos a ser (iltrados; sal6#a es un
recurso /ue apunta a una segunda 1r6Ea#a #e pa@uetes en la /ue de#en ser colocados sus pa/uetes
modi(icados; consum6#oA /ue de#e declararse s6empre por re(erenciaA de#e ser incrementado de
acuerdo a la longitud de los datos /ue su (iltro lee y altera; +n la mayor)a de casos esto /uiere decir
/ue usted incrementa consum6#o en Ypa/uete2_datalen para cada Ypa/uete; i la secuencia est* en el
proceso de ser cerrada >y por lo tanto este es el Bltimo paso por la cadena de (iltros?A el par*metro
cerran#o ser* de(inido como TRUE; +l m<todo #ilter de#e devolver uno de tres valores cuando
complete su e'ecuci-n;
Calor de Metorno ,ignificado
PSFS_PASS_ON
+l (iltro (ue procesado satis(actoriamente con los datos disponi#les en la
1r6Ea#a #e pa@uetes sal6#a;
PSFS_FEED_ME
+l (iltro (ue procesado satis(actoriamenteA sin em#argoA no ha#)an datos
disponi#les para devolver; e re/uieren m*s datos desde la secuencia o
desde el (iltro anterior;
PSFS_ERR_FATAL
>predeterminado?
+l (iltro eFperiment- un error irrecupera#le y no puede continuar;
void onCreate > void ?
+ste m<todo es llamado durante la instanciaci-n del o#'eto clase del (iltro; i su (iltro u#ica o
inicializa cual/uier otro tipo de recursos >como un #B(er?A <ste es el lugar para hacerlo; u
implementaci-n de este m<todo de#er)a devolver FALSE en caso de (alloA o TRUE si tiene <Fito;
5uando su (iltro es instanciado por primera vezA y su_96ltro=&onCreateLM es llamadoA se colocar*n a
su disposici-n un nBmero de propiedadesA como lo muestra la siguiente ta#la;
Propiedad Contenidos
Clase36ltro=
&96ltername
@na cadena /ue contiene el nom#re con el /ue (ue instanciado el (iltro; Los
(iltros pueden ser registrados #a'o mBltiples nom#res o #a'o comodines; @se
<sta propiedad para determinar el nom#re /ue (ue usado;
Clase36ltro=
&params
Los contenidos del par*metro parametros pasado a stream>filter>append./ o
stream>filter>prepend./;
void onClose > void ?
+ste m<todo es llamado cuando se realiza la destrucci-n del (iltro >por lo generalA esto ocurre
tam#i<n durante la destrucci-n de la secuencia?A y es e'ecutado #espucs de /ue el m<todo 9lush es
llamado; i se u#icaron o inicializaron recursos durante onCreateA <ste ser)a el momento para
destruirlos o desecharlos;
+l siguiente e'emplo implementa un (iltro llamado strtoupper en la secuencia 9oo=1ar.t8tA el cual
convierte a mayBsculas todos los caracteres al(a#<ticos escritos haciaDleidos desde esa secuencia;
E'emplo !. ;iltro para con5ertir los caracteres a may4sculas en la secuencia foo(bar.t+t
<?php
/W Le#inicion de nuestra clase de #iltro W/
class strtoupper%#ilter extends php%user%#ilter :
#unction #ilter3$entrada, $salida, &$consumido, $cerrando9
:
8hile 3$paQuete > stream%bucIet%maIe%8riteable3$entrada99 :
$paQueteF>data > strtoupper3$paQueteF>data9;
$consumido [> $paQueteF>datalen;
stream%bucIet%append3$salida, $paQuete9;
;
return &S&%,&&%?.;
;
;
/W 'eEistrar nuestro #iltro con H W/
stream%#ilter%reEister3"strtoupper", "strtoupper%#ilter"9
or die3"Sall&oacute; el reEistro del #iltro"9;
$da > #open3"#ooFbar.txt", "8"9;
/W ,djuntar el #iltro reEistrado a la secuencia Que acabamos de abrir W/
stream%#ilter%append3$da, "strtoupper"9;
#8rite3$da, "Oinea6Vn"9;
#8rite3$da, "alabra F CVn"9;
#8rite3$da, "*an sencillo como 6C<Vn"9;
#close3$da9;
/W Oeer los contenidos de =uelta
W/
read#ile3"#ooFbar.txt"9;
?>
alida
O4.E,6
,O,Z', F C
*,. &E.R4OO? R?"? 6C<
E'emplo *. Megistro de una clase gen%rica de filtro para ?ue coincida con m4ltiples nombres
de filtro.
<?php
/W Le#inicion de nuestra clase de #iltro W/
class #iltro%cadena extends php%user%#ilter :
=ar $modo;
#unction #ilter3$entrada, $salida, &$consumido, $cerrando9
:
8hile 3$paQuete > stream%bucIet%maIe%8riteable3$entrada99 :
i# 3$thisF>modo >> 69 :
$paQueteF>data > strtoupper3$paQueteF>data9;
; elsei# 3$thisF>modo >> 29 :
$paQueteF>data > strtolo8er3$paQueteF>data9;
;
$consumido [> $paQueteF>datalen;
stream%bucIet%append3$salida, $paQuete9;
;
return &S&%,&&%?.;
;
#unction onRreate39
:
i# 3$thisF>#iltername >> Mstr.toupperM9 :
$thisF>modo > 6;
; elsei# 3$thisF>#iltername >> Mstr.tolo8erM9 :
$thisF>modo > 2;
; else :
/W &e ha pedido otro #iltro str.W , reportar un #allo de modo
W Que H continue buscando W/
return #alse;
;
return true;
;
;
/W 'eEistrar nuestro #iltro con H W/
stream%#ilter%reEister3"str.W", "#iltro%cadena"9
or die3"Sall&oacute; el reEistro del #iltro"9;
$da > #open3"#ooFbar.txt", "8"9;
/W ,djuntar el #iltro reEistrado a la secuencia recien
W abierta. ,lternati=amente, aQui podemos enla0ar str.tolo8er W/
stream%#ilter%append3$da, "str.toupper"9;
#8rite3$da, "Oinea6Vn"9;
#8rite3$da, "alabra F CVn"9;
#8rite3$da, "*an sencillo como 6C<Vn"9;
#close3$da9;
/W Oeer los contenidos de =uelta
W/
read#ile3"#ooFbar.txt"9;
/W &alida
W FFFFFF
O4.E,6
,O,Z', F C
*,. &E.R4OO? R?"? 6C<
W/
?>
$ea tam#i<n stream>3rapper>register./A stream>filter>prepend./A y stream>filter>append./;
stream>filter>remo5e
>no version in(ormationA might #e only in 5$?
streamZ(ilterZremove 22 Remove a (ilter (rom a stream
Kescription
#ool stream>filter>remo5e > resource streamZ(ilter ?
Removes a stream (ilter previously added to a stream Eith stream>filter>prepend./ or
stream>filter>append./; Any data remaining in the (ilterHs internal #u((er Eill #e (lushed through to
the neFt (ilter #e(ore removing it;
E'emplo !. Kynamicly refiltering a stream
<?php
/W ?pen a test #ile #or readinE and 8ritinE W/
$#p > #open3"test.txt", "r8"9;
$rot6<%#ilter > stream%#ilter%append3$#p, "strinE.rot6<", &*'E,"%S4O*E'%7'4*E9;
#8rite3$#p, "*his is "9;
stream%#ilter%remo=e3$rot6<%#ilter9;
#8rite3$#p, "a testVn"9;
re8ind3$#p9;
#passthru3$#p9;
#close3$#p9;
/W Expected ?utput
FFFFFFFFFFFFFFF
-u=# =# a test
W/
?>
ee also stream>filter>register./A stream>filter>append./A and stream>filter>prepend./;
stream>get>contents
>P&P 4?
streamZgetZcontents 22 Lee el resto de una secuencia en una cadena
Kescripci"n
string stream>get>contents > resource gestor PA int longitudZmaFimaQ ?
Funci-n id<ntica a file>get>contents./A eFcepto /ue stream>get>contents./ opera en un recurso de
archivo ya a#ierto y devuelve el contenido restanteA hasta un m*Fimo de lonE6tu#_ma86ma #ytesA en
una cadena;
Nota- +sta (unci-n es segura #inariamente;
$ea tam#i<n fgets./A fread./A y fpassthru./;
stream>get>filters
>P&P 4?
streamZgetZ(ilters 22 Recuperar la lista de (iltros registrados
Kescripci"n
array stream>get>filters > void ?
Devuelve una matriz indeFada /ue contiene el nom#re de todos los (iltros de secuencia disponi#les
en el sistema actual;
E'emplo !. )so de stream>get>filters./
<?php
$lista%de%secuencias > stream%Eet%#ilters39;
print%r3$lista%de%secuencias9;
?>
La salida ser* similar a la siguiente; NotaC pueden ha#er m*s o menos (iltros en su versi-n de P&P;
,rray 3
)2/ >> strinE.rot6<
)6/ >> strinE.toupper
)C/ >> strinE.tolo8er
)</ >> strinE.baseG1
)1/ >> strinE.QuotedFprintable
9
$ea tam#i<n stream>filter>register./A y stream>get>3rappers./;
stream>get>line
>P&P 4?
streamZgetZline 22 O#tiene una l)nea desde un recurso de secuenciaA hasta un delimitador dado
Kescripci"n
string stream>get>line > resource gestorA int longitudA string (inal ?
Devuelve una cadena de hasta lonE6tu# #ytes leidos desde el archivo apuntado por Eestor; La lectura
(inaliza cuando lonE6tu# #ytes han sido leidosA cuando la cadena especi(icado por 96nal es
encontrada >la cual no es incluida en el valor de retorno?A o al llegar al (inal del archivoA +OFA >lo
/ue ocurra primero?;
i ocurre un errorA devuelve FALSE;
+sta (unci-n es casi id<ntica a fgets./A eFcepto /ue permite el uso de delimitadores de l)nea
di(erentes a los est*ndar hnA hrA y hrhnA y no devuelve el delimitador mismo;
$ea tam#i<n fread./A fgets./A y fgetc./;
stream>get>meta>data
>P&P 8 _^ 8;7;3A P&P 4?
streamZgetZmetaZdata 22 Recupera meta datosDca#eceras desde apuntadores a secuenciasDarchivos
Kescripci"n
array stream>get>meta>data > resource secuencia ?
Devuelve in(ormaci-n so#re una secuenc6a eFistente; La secuencia puede ser cual/uiera creada por
fopen./A fsocBopen./ y pfsocBopen./; La matriz resultante contiene los siguientes itemsC
t6me#_out >#ool? 2 TRUE si la secuencia ha superado el tiempo de espera m*Fimo mientras
espera#a datos en el Bltimo llamado a fread./ o fgets./;
1loc>e# >#ool? 2 TRUE si la secuencia se encuentra en modo de #lo/ueo de +D; $ea
stream>set>blocBing./;
eo9 >#ool? 2 TRUE si la secuencia ha alcanzado el (inal del archivo; Note /ue para secuencias
de soc"etA este miem#ro puede ser TRUE incluso cuando unrea#_1?tes es di(erente de cero;
Para determinar si hay m*s datos para ser leidosA use feof./ en lugar de leer este item;
unrea#_1?tes >int? 2 el nBmero de #ytes contenidos actualmente en el #B(er de lectura;
Los siguientes items (ueron agregados en P&P 8;7C
stream_t?pe >string? 2 una eti/ueta /ue decri#e la implementaci-n de #a'o nivel de la
secuencia;
7rapper_t?pe >string? 2 una eti/ueta /ue descri#e la implementaci-n de envoltura de
protocolo /ue cu#re a la secuencia; $ea Ap<ndice L para m*s in(ormaci-n so#re las
envolturas;
7rapper_#ata >miFed? 2 datos espec)(icos de envoltura ad'untos a esta secuencia; $ea
Ap<ndice L para m*s in(ormaci-n so#re las envolturas y sus datos de envoltura;
96lters >array? 2 una matriz /ue contiene los nom#res de cual/uier (iltro /ue est< apilado para
esta secuencia; La documentaci-n so#re los (iltros puede encontrarse en el ap<ndice de
Filtros;
Nota- +sta (unci-n (ue introducida en P&P 8;7A pero anteriormenteA socBet>get>status./
pod)a ser usado para recuperar los primeros cuatro itemsA para secuenc6as 1asa#as en
soc>ets dn6camente;
+n P&P 8;7 y versiones posterioresA socBet>get>status./ es un alias de esta (unci-n;
Nota- +sta (unci-n NO tra#a'a so#re soc"ets creados por la +Ftensi-n de soc"ets;
Los siguientes )tems (ueron agregados en P&P 4;3C
mo#e >string? 2 el modo >o permisos? de la @R. asociada con <sta secuencia;
sea>a1le >#ool? 2 si la secuencia actual puede ser reu#icada;
ur6 >string? 2 el nom#re de archivoD@R. asociado con <sta secuencia;
stream>get>transports
>P&P 4?
streamZgetZtransports 22 Recuperar la lista de transportes de soc"et registrados
Kescripci"n
array stream>get>transports > void ?
Devuelve una matriz indeFada /ue contiene los nom#res de todos los transportes de soc"et
disponi#les en el sistema actual;
E'emplo !. )so de stream>get>transports./
<?php
$lista > stream%Eet%transports39;
print%r3$lista9;
?>
La salida ser* similar a la siguiente; NotaC pueden ha#er m*s o menos transportes en su versi-n de
P&P;
,rray 3
)2/ >> tcp
)6/ >> udp
)C/ >> unix
)</ >> udE
9
$ea tam#i<n stream>get>filters./A y stream>get>3rappers./;
stream>get>3rappers
>P&P 4?
streamZgetZErappers 22 Recuperar la lista de secuencias registradas
Kescripci"n
array stream>get>3rappers > void ?
Devuelve una matriz indeFada /ue contiene los nom#res de todas las envolturas de secuencia
disponi#les en el sistema actual;
$ea tam#i<n stream>3rapper>register./;
stream>register>3rapper
streamZregisterZErapper 22 Alias de stream>3rapper>register./
Kescripci"n
+sta (unci-n es un alias de stream>3rapper>register./; +sta (unci-n es incluida por razones de
compati#ilidad con P&P 8;7;3 y P&P 8;7;1 Bnicamente; stream>3rapper>register./ de#er)a ser
usada en su lugar;
stream>select
>P&P 8 _^ 8;7;3A P&P 4?
streamZselect 22 +'ecuta el Walente al llamado de sistema select>? en la matriz de secuencias dadaA
con un tiempo de espera especi(icado por tvZsec y tvZusec
Kescripci"n
int stream>select > array ilecturaA array iescrituraA array ieFcepcionalA int tvZsec PA int tvZusecQ ?
La (unci-n stream>select./ acepta una matriz de secuencias y espera a /ue <stas cam#ien su status;
u operaci-n es Walente a la de la (unci-n socBet>select./A eFcepto /ue actBa so#re secuencias;
Las secuencias listadas en la matriz lectura ser*n vigiladas para ver si aparecen caracteres
disponi#les para lectura >o m*s precisamenteA para ver si una operaci-n de lectura no producir* un
#lo/ueo 2 en particularA un recurso de secuencia se encuentra listo tam#i<n al llegar al (inal del
archivoA en cuyo caso un llamado a fread./ devolver* una cadena de longitud cero?;
Las secuencias listadas en la matriz escr6tura ser*n vigiladas para ver si una escritura no crea
#lo/ueos;
Las secuencias listadas en la matriz e8cepc6onal ser*n vigiladas por la llegada de datos
eFcepcionales >=out2o(2#and=? de alta prioridad;
Nota- 5uando stream>select./ devuelve un valorA las matrices lecturaA escr6tura y
e8cepc6onal son modi(icadas para indicar cu*les recursos de secuencia modi(icaron su
status en realidad;
Los par*metros t_sec y t_usecA 'untos (orman el par*metro t6empo #e esperaA t_sec especi(ica el
nBmero de segundosA mientras /ue t_usec el nBmero de microsegundos; +l t6empo #e espera es un
l)mite superior so#re la cantidad de tiempo /ue stream>select./ esperar* antes de devolver un valor;
i tanto t_sec como t_usec son de(inidos como 0A stream>select./ no esperar* por datos 2 en su
lugar devolver* un valor inmediatamenteA indicando el status actual de las secuencias; i t_sec es
NULL stream>select./ puede crear un #lo/ueo inde(inidamenteA y s-lo devolver* un valor cuando
ocurra un evento en alguna de las secuencias vigiladas >o si una seWal interrumpe el llamado de
sistema?;
+n caso de <FitoA stream>select./ devuelve el nBmero de recursos de secuencia modi(icados
contenidos en las matricesA /ue puede ser cero si el tiempo de espera eFpira antes de /ue algo
interesante suceda; +n caso de (alloA el valor FALSE es devuelto y se genera una advertencia >esto
puede pasar si el llamado de sistema es interrumpido por una seWal entrante?;
A5iso
+l uso de un valor de tiempo de espera de 0 le permite consultar el status de las secuencias de
(orma instant*neaA sin em#argoA NO es #uena idea usar un valor de tiempo de espera de 0 en un
cicloA dado /ue causar* /ue su script consuma mucho tiempo de 5P@;
+s mucho me'or especi(icar un valor de tiempo de espera de algunos pocos segundosA aun/ue si
necesita hacer che/ueos y e'ecutar otro segmento de c-digo concurrentementeA usar un valor de
tiempo de espera de por lo menos 200000 microsegundos le ayudar* a reducir el uso de 5P@ de su
script;
Recuerde /ue el valor de tiempo de espera es el tiempo m*Fimo /ue transcurrir*X stream>select./
devolver* un valor tan pronto como las secuencias solicitadas se encuentren listas para su uso;
No necesita pasar cada matriz a stream>select./; Puede de'ar de especi(icarlas y usar una matriz
vac)a o NULL en su lugar; ,ampoco olvide /ue <stas matrices son pasadas por re9erenc6a y ser*n
modi(icadas despu<s de /ue stream>select./ devuelva un valor;
+ste e'emplo revisa si han llegado datos para lectura ya sea en 'secuenc6a1 o en 'secuenc6a2; Dado
/ue el valor de tiempo de espera es 0A la (unci-n retornar* inmediatamenteC
<?php
/W reparar la matri0 de lectura W/
$lectura > array3$secuencia6, $secuenciaC9;
i# 3#alse >>> 3$num%secuencias%modi#icadas > stream%select3$lectura, $escritura > .+OO, $excepcional > .+OO, 2999 :
/W -estion de errores W/
; elsei# 3$num%secuencias%modi#icadas > 29 :
/W En por lo menos una de las secuencias ha ocurrido alEo interesante W/
;
?>
Nota- De#ido a una limitaci-n en el Motor Iend actualA no es posi#le pasar un
modi(icador constante como NULL directamente como par*metro a una (unci-n /ue
espera /ue tal par*metro sea pasado por re(erencia; +n su lugarA use una varia#le
temporal o una eFpresi-n en donde el miem#ro del lado iz/uierdo sea una varia#le
temporalC
<?php
stream%select3$l, $e, $ex > .+OO, 29;
?>
Nota- AsegBrese de usar el operador ::: cuando e(ectBe che/ueos de error; Dado /ue
stream>select./ puede devolver 3A la comparaci-n con :: evaluar)a a TRUEC
<?php
i# 3#alse >>> stream%select3$l, $e, $ex > .+OO, 299 :
echo "stream%select39 #all&oacute;Vn";
;
?>
Nota- i leeDescri#e so#re una secuencia devuelta con las matricesA tenga en cuenta /ue
<stas no necesariemente leenDescri#en la cantidad completa de datos /ue usted ha
solicitado; Prep*rese para gestionar incluso la lecturaDescritura de un solo #yte;
Compatibilidad con 2indo3s- +l uso de stream>select./ so#re un pipe devuelto
desde proc>open./ puede causar p<rdida de datos #a'o LindoEs 9M;
+l uso de stream>select./ con descriptores de archivo devueltos por proc>open./ (allar*
y devolver* FALSE #a'o LindoEs;
$ea tam#i<n stream>set>blocBing./;
stream>set>blocBing
>P&P 8 _^ 8;7;3A P&P 4?
streamZsetZ#loc"ing 22 +sta#lecer modo de #lo/ueoDno2#lo/ueo so#re una secuencia
Kescripci"n
#ool stream>set>blocBing > resource secuenciaA int modo ?
i mo#o es FALSEA la secuencia dada ser* colocada en modo de no2#lo/ueoA y si es TRUEA ser*
colocada en modo de #lo/ueo; +sto a(ecta llamadas como fgets./ y fread./ /ue leen datos desde la
secuencia; +n modo de no2#lo/ueoA una llamada a fgets./ siempre retornar* inmediatamanteA
mientras /ue en modo de #lo/ueo esperar* a /ue hayan datos disponi#les en la secuencia;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
+sta (unci-n era llamada anteriormente set>socBet>blocBing./A y m*s adelante
socBet>set>blocBing./ pero su uso #a'o estos nom#res se considera o#soleto;
Nota- Antes de P&P 8;7A <sta (unci-n solo tra#a'a#a so#re secuencias #asadas en
soc"ets; A partir de P&P 8;7A esta (unci-n tra#a'a so#re cual/uier secuencia /ue soporte
el modo de no2#lo/ueo >en la actualidadA archivos regulares y secuencias de soc"et?;
$ea tam#i<n stream>select./;
stream>set>timeout
>P&P 8 _^ 8;7;3A P&P 4?
streamZsetZtimeout 22 +sta#lecer el periodo de espera de una secuencia
Kescripci"n
#ool stream>set>timeout > resource secuenciaA int segundos PA int microsegundosQ ?
+sta#lece el valor de tiempo de espera so#re la secuenc6aA eFpresada como la suma de seEun#os y
m6croseEun#os; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. E'emplo de stream>set>timeout./
<?php
$da > #socIopen3"888.example.com", J29;
i# 3!$da9 :
echo ".o #ue posible abrirVn";
; else :
#8rite3$da, "-E* / H**/6.2VnVn"9;
stream%set%timeout3$da, C9;
$res > #read3$da, C2229;
=ar%dump3stream%Eet%meta%data3$da99;
#close3$da9;
echo $res;
;
?>
Nota- A partir de P&P 8;7A esta (unci-n puede >potencialmente? tra#a'ar so#re cual/uier
clase de secuencia; +n P&P 8;7A las secuencias #asadas en soc"ets son aun el Bnico tipo
soportado por el nBcleo de P&PA aun/ue las secuencias de otras eFtensiones pueden
soportar esta (unci-n;
+sta (unci-n era llamada anteriormente set>socBet>timeout./ y m*s adelante socBet>set>timeout./A
pero su uso #a'o estos nom#res se considera o#soleto;
$ea tam#i<n fsocBopen./ y fopen./;
stream>set>3rite>buffer
>P&P 8 _^ 8;7;3A P&P 4?
streamZsetZEriteZ#u((er 22 +sta#lece el uso de #B(eres de archivo en la secuencia dada
Kescripci"n
int stream>set>3rite>buffer > resource secuenciaA int #u(er ?
La salida al usar f3rite./ se acumula normalmente en un #B(er a los MS; +sto /uiere decir /ue si
eFisten dos procesos /ue desean escri#ir so#re la misma secuencia de salida >un archivo?A cada uno
es pausado despu<s de los MS de datos para permitir /ue el otro escri#a; stream>set>3rite>buffer./
esta#lece el uso del #B(er para operaciones de escritura so#re el apuntador de archivo dado
secuenc6a a 1u9er #ytes; i 1u9er es 3A entonces las operaciones de escritura no usan el #B(er; +sto se
asegura de /ue todas las escrituras con f3rite./ sean completadas antes de /ue a otros procesos les
sea permitido escri#ir so#re esa secuencia de salida;
La (unci-n devuelve 3 en caso de <FitoA o +OF si la petici-n no puede ser cumplida;
+l siguiente e'emplo demuestra el modo de usar stream>set>3rite>buffer./ para crear una
secuencia sin uso de #B(eres;
E'emplo !. E'emplo de stream>set>3rite>buffer./
<?php
$da > #open3$archi=o, "8"9;
i# 3$da9 :
stream%set%8rite%bu##er3$da, 29;
#8rite3$da, $salida9;
#close3$da9;
;
?>
$ea tam#i<n fopen./ y f3rite./;
stream>socBet>accept
>P&P 4?
streamZsoc"etZaccept 22 Aceptar una coneFi-n en un soc"et creado por stream>socBet>ser5er./
Kescripci"n
resource stream>socBet>accept > resource soc"etZservidor PA (loat tiempoZespera PA string
inom#reZdeZparQQ ?
Aceptar una coneFi-n en un soc"et creado previamente por stream>socBet>ser5er./; i se
especi(ica t6empo_esperaA el tiempo de espera predeterminado para el proceso accept del soc"et ser*
so#rescrito con el tiempo especi(icado en segundos; +l nom#re >direcci-n? del cliente /ue se ha
conectado ser* pasado de vuelta en nom1re_#e_parA si se incluye y se encuentra disponi#le en el
transporte seleccionado;
Puede determinarse el valor de nom1re_#e_par tam#i<n m*s adelanteA usando
stream>socBet>get>name./;
i el llamado (allaA devolver* FALSE;
A5iso
+l uso de esta (unci-n con soc"ets de servidor tipo @DP es un error; De#en usarse
stream>socBet>rec5from./ y stream>socBet>sendto./ en su lugar;
$ea tam#i<n stream>socBet>ser5er./A stream>socBet>get>name./A stream>set>blocBing./A
stream>set>timeout./A fgets./A fgetss./A f3rite./A fclose./A feof./A y la eFtensi-n 5url;
stream>socBet>client
>P&P 4?
streamZsoc"etZclient 22 A#rir una coneFi-n de soc"et de dominio de .nternet o @niF
Kescripci"n
resource stream>socBet>client > string soc"etZremoto PA int ierrno PA string ierrstr PA (loat
tiempoZespera PA int #anderas PA resource conteFtoQQQQQ ?
.nicia una coneFi-n secuenciada o tipo datagrama al destino especi(icado por soc>et_remoto; +l tipo
de soc"et creado es determinado por el transporte especi(icado usando el (ormato de @RL est*ndarC
transporte://#est6no; Para soc"ets de dominio de .nternet >AFZ.N+,? tales como ,5P y @DPA la
porci-n #est6no del par*metro soc>et_remoto de#e consistir de un nom#re de host o direcci-n .P
seguido de un signo de dos puntos y un nBmero de puerto; Para soc"ets de dominio @niFA la porci-n
#est6no de#e apuntar al archivo de soc"et en el sistema de archivos; +l t6empo_espera opcional
puede ser usado para esta#lecer un tiempo de espera m*Fimo en segundos para el llamado de
coneFi-n del sistema; 1an#eras es un campo de m*scara de #its /ue puede ser de(inido como una
com#inaci-n de #anderas de coneFi-n; ActualmenteA las #anderas de coneFi-n disponi#les est*n
limitadas a STREAM_CLIENT_ASYNC_CONNECT y STREAM_CLIENT_PERSISTENT;
Nota- i necesita esta#lecer un tiempo de espera para la lecturaDescritura de datos so#re
el soc"etA use stream>set>timeout./A ya /ue el par*metro t6empo_espera de
stream>socBet>client./ s-lo se aplica cuando se esta#lece la coneFi-n con el soc"et;
stream>socBet>client./ devuelve un recurso de secuencia /ue puede ser usado 'unto con las otras
(unciones de archivos >tales como fgets./A fgetss./A f3rite./A fclose./A y feof./?;
i la llamada (allaA devolver* FALSE y si los argumentos opcionales errno y errstr est*n presentesA
<stos ser*n de(inidos de modo tal /ue indi/uen el error de nivel de sistema actual /ue ocurri- en el
llamado de nivel de sistema connectLM; i el valor devuelto en errno es 0 y la (unci-n devolvi-
FALSEA es un indicio de /ue el error ocurri- antes del llamado a connectLM; +sto es por lo general
de#ido a un pro#lema con la inicializaci-n del soc"et; Note /ue los argumentos errno y errstr ser*n
siempre pasados por re(erencia;
Dependiendo del entornoA el dominio @niF o el tiempo de espera de coneFi-n opcional pueden no
estar disponi#les; @na lista de transportes disponi#les puede ser recuperada usando
stream>get>transports./; $ea Ap<ndice N para consultar una lista de transportes incorporados;
La secuencia ser* a#ierta por de(ecto en modo de #lo/ueo; Puede modi(icarla a modo de no2#lo/ueo
usando stream>set>blocBing./;
E'emplo !. E'emplo de stream>socBet>client./
<?php
$da > stream%socIet%client3"tcp@//888.example.com@J2", $errno, $errstr, <29;
i# 3!$da9 :
echo "$errstr 3$errno9<br />Vn";
; else :
#8rite3$da, "-E* / H**/6.2VrVnHost@ 888.example.comVrVn,ccept@ W/WVrVnVrVn"9;
8hile 3!#eo#3$da99 :
echo #Eets3$da, 62C19;
;
#close3$da9;
;
?>
+l siguiente e'emplo muestra c-mo recuperar la (echa y hora desde el servicio @DP =daytime=
>puerto 17? en su m*/uina local;
E'emplo *. )so de una cone+i"n )KP
<?php
$da > stream%socIet%client3"udp@//6CH.2.2.6@6<", $errno, $errstr9;
i# 3!$da9 :
echo "E''?'@ $errno F $errstr<br />Vn";
; else :
#8rite3$da, "Vn"9;
echo #read3$da, CG9;
#close3$da9;
;
?>
A5iso
Los soc"ets @DP parecer*n ha#er sido a#iertos sin error en ocasionesA incluso si el host remoto no
ha podido ser contactado; +l error solo se har* aparente cuando lea o escri#a datos desdeDhacia el
soc"et; La raz-n de esto es /ue @DP es un protocolo =sin coneFi-n=A lo /ue /uiere decir /ue el
sistema operativo no intenta esta#lecer un enlace para el soc"et hasta /ue realmente necesita
enviar o reci#ir datos;
Nota- 5uando se especi(i/ue una direcci-n num<rica .PvK >p;e'; (eM3CC1? se de#e incluir
la .P entre corchetes; Por e'emplo tcp://)9eP0::1.:P0;
$ea tam#i<n stream>socBet>ser5er./A stream>set>blocBing./A stream>set>timeout./A
stream>select./A fgets./A fgetss./A f3rite./A fclose./A feof./A y la eFtensi-n 5url;
stream>socBet>enable>crypto
>no version in(ormationA might #e only in 5$?
streamZsoc"etZena#leZcrypto 22 ,urns encryption onDo(( on an already connected soc"et
Kescription
miFed stream>socBet>enable>crypto > resource streamA #ool ena#le PA int cryptoZtype PA resource
sessionZstreamQQ ?
Lhen called Eith the cr?pto_t?pe parameterA stream>socBet>enable>crypto./ Eill setup encryption
on the stream using the speci(ied method;
$alid values (or cr?pto_t?pe
STREAM_CRYPTO_METHOD_SSL6*_CLIENT
STREAM_CRYPTO_METHOD_SSL6>_CLIENT
STREAM_CRYPTO_METHOD_SSL6*>_CLIENT
STREAM_CRYPTO_METHOD_TLS_CLIENT
STREAM_CRYPTO_METHOD_SSL6*_SER$ER
STREAM_CRYPTO_METHOD_SSL6>_SER$ER
STREAM_CRYPTO_METHOD_SSL6*>_SER$ER
STREAM_CRYPTO_METHOD_TLS_SER$ER
Once the crypto settings are esta#lishedA cryptography can #e turned on and o(( dynamically #y
passing TRUE or FALSE in the ena1le parameter;
.( this stream should #e seeded Eith settings (rom an already esta#lished crypto ena#led streamA pass
that streamHs resource varia#le in the (ourth parameter;
Returns TRUE on successA FALSE i( negotiation has (ailed or 0 i( there isnHt enough data and you
should try again >only (or non2#loc"ing soc"ets?;
E'emplo !. stream>socBet>enable>crypto./ E+ample
<?php
$#p > stream%socIet%client3"tcp@//myproto.example.com@<6<<H", $errno, $errstr, <29;
i# 3!$#p9 :
die3"+nable to connect@ $errstr 3$errno9"9;
;
/W *urn on encryption #or loEin phase W/
stream%socIet%enable%crypto3$#p, true, &*'E,"%R'P*?%"E*H?L%&&O=C<%RO4E.*9;
#8rite3$#p, "+&E' EodVrVn"9;
#8rite3$#p, ",&& secretVrVn"9;
/W *urn o## encryption #or the rest W/
stream%socIet%enable%crypto3$#p, #alse9;
8hile 3$motd > #Eets3$#p99 :
echo $motd;
;
#close3$#p9;
?>
Re(erencia LJJJ.JA OpenSS4 3unct6ons A and Ap<ndice N
stream>socBet>get>name
>P&P 4?
streamZsoc"etZgetZname 22 Recuperar el nom#re de los soc"ets locales o remotos
Kescripci"n
string stream>socBet>get>name > resource gestorA #ool deseaZnom#reZdelZpar ?
Devuelve el nom#re local o remoto de una coneFi-n de soc"et dada; i #esea_nom1re_#el_par es
de(inido como TRUEA el nom#re de soc"et remoto ser* devueltoA si es de(inido como FALSEA se
devolver* el nom#re de soc"et local;
$ea tam#i<n stream>socBet>accept./;
stream>socBet>pair
>no version in(ormationA might #e only in 5$?
streamZsoc"etZpair 22 5reates a pair o( connectedA indistinguisha#le soc"et streams
Kescription
array stream>socBet>pair > int domainA int typeA int protocol ?
stream>socBet>pair./ creates a pair o( connectedA indistinguisha#le soc"et streams; ,his (unction is
commonly used in .P5 >.nterProcess 5ommunication?;
stream>socBet>rec5from
>P&P 4?
streamZsoc"etZrecv(rom 22 Reci#e datos desde un soc"etA conectado o no
Kescripci"n
string stream>socBet>rec5from > resource soc"etA int longitud PA int #anderas PA string
idireccionQQ ?
La (unci-n stream>socBet>rec5from./ acepta datos desde un soc"et remotoA hasta una cantidad de
lonE6tu# #ytes; i se provee una #6recc6onA <sta ser* de(inida con la direcci-n del soc"et remoto;
+l valor de 1an#eras puede ser cual/uier com#inaci-n de los siguientesC
Tabla !. 5alores posibles para banderas
STREAM_O
O(
Procesa datos OOB >out2o(2#and?;
STREAM_P
EE&
Recuperar datos desde el soc"etA pero no consumir el #B(er; Llamadas su#siguientes
a fread./ o stream>socBet>rec5from./ ver*n los mismos datos;
E'emplo !. E'emplo de stream>socBet>rec5from./
<?php
/W ,brir un socIet de ser=idor en el puerto 6C<1 en localhost W/
$ser=idor > stream%socIet%ser=er3Mtcp@//6CH.2.2.6@6C<1M9;
/W ,ceptar una conexion W/
$socIet > stream%socIet%accept3$ser=idor9;
/W *omar un paQuete 36522 es un tamanyo tipico9 de datos ??Z W/
echo "'ecibidos ?utF?#FZand@ M" . stream%socIet%rec=#rom3$socIet, 6522, &*'E,"%??Z9 . "MVn";
/W Echar un =ista0o a los datos en banda normales, pero no consumirlos. W/
echo "Latos@ M" . stream%socIet%rec=#rom3$socIet, 6522, &*'E,"%EE]9 . "MVn";
/W 'ecibir exactamente el mismo paQuete de nue=o, pero eliminarlo del
W bu#er esta =e0. W/
echo "Latos@ M" . stream%socIet%rec=#rom3$socIet, 65229 . "MVn";
/W Rerrarlo W/
#close3$socIet9;
#close3$ser=idor9;
?>
Nota- i un mensa'e reci#ido tiene una longitud mayor /ue el par*metro lonE6tu#A los
#ytes so#rantes pueden ser descartados dependiendo del tipo de soc"et del mensa'e
reci#ido >como @DP?;
$ea tam#i<n stream>socBet>sendto./A stream>socBet>client./A y stream>socBet>ser5er./;
stream>socBet>sendto
>P&P 4?
streamZsoc"etZsendto 22 +nv)a un mensa'e a un soc"etA sin importar si est* conectado o no
Kescripci"n
int stream>socBet>sendto > resource soc"etA string datos PA int #anderas PA string direccionQQ ?
La (unci-n stream>socBet>sendto./ env)a los datos especi(icados por #atos a trav<s del soc"et
especi(icado por soc>et; er* usada la direcci-n especi(icada cuando la secuencia de soc"et (ue
creadaA a menos /ue una direcci-n alternativa sea especi(icada en #6recc6on;
+l valor de 1an#eras puede ser cual/uier com#inaci-n de los siguientesC
Tabla !. 5alores posibles para banderas
STREAM_OO( Procesar datos OOB >out2o(2#and?;
E'emplo !. E'emplo de stream>socBet>sendto./
<?php
/W ,brir un socIet en el puerto 6C<1 en localhost W/
$socIet > stream%socIet%client3Mtcp@//6CH.2.2.6@6C<1M9;
/W En=iar datos ordinarios mediante los canales ordinarios. W/
#8rite3$socIet, "*ransmision normal de datos."9;
/W En=iar mas datos #uera de banda. W/
stream%socIet%sendto3$socIet, "Latos ?ut o# Zand.", &*'E,"%??Z9;
/W Rerrarlo W/
#close3$socIet9;
?>
$ea tam#i<n stream>socBet>rec5from./A stream>socBet>client./A y stream>socBet>ser5er./;
stream>socBet>ser5er
>P&P 4?
streamZsoc"etZserver 22 5rear un soc"et de servidor de dominio de .nternet o @niF
Kescripci"n
resource stream>socBet>ser5er > string soc"etZlocal PA int ierrno PA string ierrstr PA int #anderas PA
resource conteFtoQQQQ ?
5rea un soc"et secuenciado o tipo datagrama en el soc>et_local especi(icado; +l tipo de soc"et
creado es determinado por el transporte especi(icado usando el (ormato de @RL est*ndarC
transporte://#est6no; Para soc"ets de Dominio de .nternet >AFZ.N+,? tales como ,5P y @DPA la
porci-n #est6no del par*metro soc>et_remoto de#e consistir de un nom#re de host o direcci-n .PA
seguido de un signo de dos puntos y un nBmero de puerto; Para soc"ets de dominio @niFA la porci-n
#est6no de#e apuntar al archivo de soc"et en el sistema de archivos; 1an#eras es un campo de
m*scara de #its /ue puede de(inirse como una com#inaci-n de #anderas de creaci-n de soc"ets; +l
valor predeterminado de #anderas es STREAM_SER$ER_(IND l STREAM_SER$ER_LISTEN;
Nota- Para soc"ets @DPA de#e usar STREAM_SER$ER_(IND como el par*metro
1an#eras;
+sta (unci-n solo crea un soc"etA para empezar a aceptar coneFiones use stream>socBet>accept./;
i la llamada (allaA devolver* FALSE y si los argumentos opcionales errno y errstr est*n presentesA
<stos ser*n de(inidos de (orma tal /ue indi/uen el error de nivel de sistema actual /ue ha ocurrido
en los llamados de sistema soc>etLMA 16n#LMA y l6stenLM; i el valor devuelto en errno es 0 y la (unci-n
ha devuelto FALSEA es un indicio de /ue el error ocurri- antes del llamado a 16n#LM; +stoA por lo
generalA es de#ido a un pro#lema en la inicializaci-n del soc"et; Note /ue los argumentos errno y
errstr siempre ser*n pasados por re(erencia;
Dependiendo del entornoA los soc"ets de dominio @niF pueden no estar disponi#les; @na lista de
transportes disponi#les puede ser recuperada usando stream>get>transports./; $ea Ap<ndice N
para consultar una lista de transportes integrados;
E'emplo !. )so de socBets de ser5idor TCP
<?php
$socIet > stream%socIet%ser=er3"tcp@//2.2.2.2@J222", $errno, $errstr9;
i# 3!$socIet9 :
echo "$errstr 3$errno9<br />Vn";
; else :
8hile 3$con > stream%socIet%accept3$socIet99 :
#8rite3$con, MOa hora local es M . date3Mn/j/P E@i aM9 . "Vn"9;
#close3$con9;
;
#close3$socIet9;
;
?>
+l siguiente e'emplo muestra como actuar como servidor de horaA el cual puede responder a
consultas so#re la hora actualA tal y como se muestra en un e'emplo u#icado en la p*gina so#re
stream>socBet>client./;
Nota- La mayor)a de sistemas re/uieren acceso de root para crear un soc"et de servidor
en un puerto menor a 1308;
E'emplo *. )so de socBets de ser5idor )KP
<?php
$socIet > stream%socIet%ser=er3"udp@//6CH.2.2.6@666<", $errno, $errstr, &*'E,"%&E'(E'%Z4.L9;
i# 3!$socIet9 :
die3"$errstr 3$errno9"9;
;
do :
$pQt > stream%socIet%rec=#rom3$socIet, 6, 2, $peer9;
echo "$peerVn";
stream%socIet%sendto3$socIet, date3"L " j H@i@s PVrVn"9, 2,
$peer9;
; 8hile 3$pQt !>> #alse9;
?>
Nota- 5uando se especi(i/ue una direcci-n num<rica .PvK >p;e'; (eM3CC1? se de#e incluir
la .P entre corchetes; Por e'emplo tcp://)9eP0::1.:P0;
$ea tam#i<n stream>socBet>client./A stream>set>blocBing./A stream>set>timeout./A fgets./A
fgetss./A f3rite./A fclose./A feof./A y la eFtensi-n 5url;
stream>3rapper>register
>P&P 8 _^ 8;7;0A P&P 4?
streamZErapperZregister 22 Registrar una envoltura @RL implementada como una clase P&P
Kescripci"n
#ool stream>3rapper>register > string protocoloA string nom#reZclase ?
stream>3rapper>register./ le permite implementar sus propios gestores y secuencias de protocolo
para su uso con todas las (unciones de sistema de archivos >tales como fopen./A fread./ etc;?;
Para implementar una envolturaA necesita de(inir una clase con un nBmero de (unciones miem#roA
tal y como se de(ine m*s adelante; 5uando alguien a#re su secuencia mediante (openA P&P crear*
una instancia de nom1re_clase y luego llamar* algunos m<todos en esa instancia; De#e implementar
los m<todos eFactamente como se descri#e a continuaci-n 2 de no ser as)A producir*
comportamientos inde(inidos;
Nota- A partir de P&P 4;3;3A la instancia de nom1re_clase ser* po#lada con una
propiedad conte8to /ue hace re(erencia a un Recurso #e Conte8toA el cual puede
o#tenerse con stream>conte+t>get>options./; i no se ha pasado ningBn conteFto a la
(unci-n de creaci-n de secuenciaA conte8to ser* de(inido como NULL;
stream>3rapper>register./ devolver* FALSE si el protocolo ya tiene un gestor;
#ool stream>open > string rutaA string modoA int opcionesA string rutaZa#ierta ?
+ste m<todo es llamado inmediatamente despu<s de /ue su o#'eto de secuencia es creado; ruta
especi(ica la @RL pasada a fopen./ y /ue <ste o#'eto supuestamente de#e recuperar; Puede usar
parse>url./ para separar la ruta;
mo#o es el modo usado para a#rir el archivoA tal y como se proporciona en fopen./; @sted es
responsa#le por el che/ueo de la validez del mo#o para la ruta solicitada;
opc6ones contiene #anderas adicionales de(inidas por la inter(az de programaci-n de las secuencias;
Puede contener uno o m*s de los siguientes valoresA unidos mediante la operaci-n l-gica OR;
1andera Kescripci"n
,R+AMZ@+Z
PA,&
i ruta es relativaA #uscar por el recurso usando includeZpath;
,R+AMZR+PO
R,Z+RROR
i esta #andera est* activaA usted se hace responsa#le por la generaci-n de
errores usando trigger>error./ durante la apertura de la secuencia; i esta
#andera no est* de(inidaA no de#e generar ningBn error;
i la ruta es a#ierta satis(actoriamenteA y ,R+AMZ@+ZPA,& es de(inida en opc6onesA usted
de#e de(inir ruta_a16erta como la ruta completa hacia el archivoDrecurso /ue (ue a#ierto en realidad;
i el recurso solicitado (ue a#ierto satis(actoriamenteA de#e devolver TRUEA o FALSE de lo
contrario;
void stream>close > void ?
+ste m<todo es llamado cuando la secuencia es cerradaA usando fclose./; De#e li#erar cual/uier
recurso /ue haya sido #lo/ueado o reservado por la secuencia;
string stream>read > int conteo ?
+ste m<todo es llamado en respuesta a llamadas de fread./ y fgets./ en la secuencia; @sted de#e
devolver hasta conteo #ytes de datos desde su posici-n actual de lecturaDescritura como una cadena;
i hay menos de conteo #ytes disponi#lesA devuelva tantos como pueda; i no hay m*s datos
disponi#lesA devuelva FALSE o una cadena vac)a; ,am#i<n de#e actualizar la posici-n de
lecturaDescritura de la secuencia en el nBmero de #ytes /ue (ueron le)dos con <Fito;
int stream>3rite > string datos ?
+ste m<todo es llamado en respuesta a llamadas de f3rite./ en el sistema; De#e guardar #atos en el
modelo de almacenamiento #ase usado por su secuencia; i no hay su(iciente espacio disponi#leA
intente almacenar tantos #ytes como le sea posi#le; De#e devolver el nBmero de #ytes /ue (ueron
almacenados satis(actoriamente en la secuenciaA o 3 si no (ue posi#le almacenar ninguno; ,am#i<n
de#e actualizar la posici-n de lecturaDescritura de la secuencia en el nBmero de #ytes /ue (ueron
escritos con <Fito;
#ool stream>eof > void ?
+ste m<todo es llamado en respuesta a llamados de feof./ en la secuencia; De#e devolver TRUE si la
posici-n de lecturaDescritura se encuentra al (inal de la secuencia y no hay m*s datos disponi#les
para su lecturaA o FALSE de lo contrario;
int stream>tell > void ?
+ste m<todo es llamado en respuesta a llamados de ftell./ en la secuencia; De#e devolver la
posici-n actual de lecturaDescritura en la secuencia;
#ool stream>seeB > int desplazamientoA int puntoZpartida ?
+ste m<todo es llamado en respuesta a llamadas de fseeB./ en la secuencia; De#e actualizar la
posici-n de lecturaDescritua en la secuencia de acuerdo a #esplaDam6ento y punto_part6#a; $ea
fseeB./ para m*s in(ormaci-n so#re <stos par*metros; Devuelva TRUE si la posici-n (ue actualizadaA
FALSE de lo contrario;
#ool stream>flush > void ?
+ste m<todo es llamado en respuesta a llamadas de fflush./ en la secuencia; i ha usado un cach<
con los datos de su secuenciaA pero no los ha guardado aun en el modelo de almacenamiento #aseA
de#e hacerlo ahora; Devuelva TRUE si los datos en cach< (ueron almacenados satis(actoriamente >o
si no ha#)an datos a almacenar?A o FALSE si los datos no pudieron ser almacenados;
array stream>stat > void ?
+ste m<todo es llamado en respuesta a llamadas de fstat./ en la secuencia y de#e devolver una
matriz /ue contenga los mismos valores /ue sean apropiados para la secuencia;
#ool unlinB > string ruta ?
+ste m<todo es llamado en respuesta a llamadas de unlinB./ so#re rutas @RL asociadas con la
envoltura y de#e intentar la eliminaci-n del item especi(icado por ruta; De#e devolver TRUE de
tener <Fito o FALSE en caso de (allo; Para asegurarse de /ue el mensa'e de error correcto sea
devueltoA no de(ina <ste m<todo si su envoltura no soporta eliminaciones;
Nota- +l m<todo de envoltura en espacio de usuario unlin" no es soportado antes de
P&P 4;3;3;
#ool rename > string rutaZ(uenteA string rutaZdestino ?
+ste m<todo es llamado en respuesta a llamadas de rename./ en rutas @RL asociadas con la
envoltura y de#e intentar renom#rar el item especi(icado por ruta_9uente a la cadena dada por
ruta_#est6no; De#e devolver TRUE en caso de <Fito o FALSE en caso de (allo; Para asegurarse de
/ue el mensa'e de error correcto sea devueltoA no de(ina <ste m<todo si su envoltura no soporta el
renom#ramiento de rutas;
Nota- +l m<todo de envoltura en espacio de usuario rename no es soportado antes de
P&P 4;3;3;
#ool mBdir > string rutaA int modoA int opciones ?
+ste m<todo es llamado en respuesta a llamadas de mBdir./ en rutas @RL asociadas con la
envoltura y de#e intentar crear el directorio especi(icado por ruta; De#e devolver TRUE de tener
<Fito o FALSE en caso de (allo; Para asegurarse de /ue el mensa'e de error correcto sea devueltoA no
de(ina <ste m<todo si su envoltura no soporta la creaci-n de directorios; $alores posi#les para
opc6ones incluyen STREAM_REPORT_ERRORS y STREAM_M&DIR_RECURSI$E;
Nota- +l m<todo de envoltura en espacio de usuario m"dir no es soportado antes de
P&P 4;3;3;
#ool rmdir > string rutaA int opciones ?
+ste m<todo es llamado en respuesta a llamadas de rmdir./ so#re rutas @RL asociadas con la
envoltura y de#er)a intentar eliminar el directorio especi(icado por ruta; De#e devolver TRUE de
tener <Fito o FALSE en caso de (allo; Para asegurarse de /ue el mensa'e de error correcto sea
devueltoA no de(ina <ste m<todo si su envoltura no soporta la eliminaci-n de directorios; Posi#les
valores para opc6ones incluyen STREAM_REPORT_ERRORS;
Nota- +l m<todo de envoltura en espacio de usuario rmdir no es soportado antes de P&P
4;3;3;
#ool dir>opendir > string rutaA int opciones ?
+ste m<todo es llamado inmediatamente cuando su o#'eto de secuencia es creado para eFaminar
contenidos de directorio con opendir./; ruta especi(ica la @RL /ue (ue pasada a opendir./ y /ue
<ste o#'eto supuestamente va a eFplorar; Puede usar parse>url./ para separar <sta ruta;
array url>stat > string rutaA int #anderas ?
+ste m<todo es llamado en respuesta a llamadas de stat./ en rutas @RL asociadas con la envoltura y
de#e devolver tantos elementos en comBn con la (unci-n del sistema como sea posi#le; Los valores
desconocidos o no disponi#les de#en de(inirse con valores razona#les >usualmente 0?;
1an#eras contiene #anderas adicionales de(inidas por la inter(az de programaci-n de secuencias;
Puede contener uno o m*s de los siguientes valoresA unidos mediante la operaci-n l-gica OR;
1andera Kescripci"n
,R+AMZ@
RLZ,A,ZL.
NS
Para recursos con la ha#ilidad de mantener un enlace con otro recurso >tales como
una redirecci-n &,,P LocationCA o un enlace sim#-lico en el sistema de archivos?;
+sta #andera indica /ue solo se devolver* in(ormaci-n so#re el enlace mismoA no
so#re el recurso apuntado por el enlace; +sta #andera es de(inida en respuesta a
llamadas de lstat./A is>linB./A o filetype./;
,R+AMZ@
RLZ,A,ZO
@.+,
i <sta #andera es de(inidaA su envoltura no de#e generar error alguno; i esta
#andera no est* de(inidaA usted es responsa#le por el reporte de errores usando la
(unci-n trigger>error./ durante la e'ecuci-n del proceso stat en la ruta;
string dir>readdir > void ?
+ste m<todo es llamado en respuesta a readdir./ y de#e devolver una cadena /ue represente el
siguiente nom#re de archivo en la u#icaci-n a#ierta por dir>opendir./;
#ool dir>re3inddir > void ?
+ste m<todo es llamado en respuesta a re3inddir./ y de#e resta#lecer la salida generada por
dir>readdir./; +sto /uiere decirA la siguiente llamada a dir>readdir./ de#e devolver la primera
entrada en la u#icaci-n devuelta por dir>opendir./;
#ool dir>closedir > void ?
+ste m<todo es llamado en respuesta a closedir./; De#e li#erar cual/uier recurso /ue haya sido
#lo/ueado o reservado durante la apertura y uso de la secuencia de directorio;
+l siguiente e'emplo implementa un gestor del protocolo varCDD /ue permite el acceso para
lecturaDescritura a una varia#le glo#al con nom#reA usando las (unciones de secuencia de sistema de
archivosA como fread./; +l protocolo varCDD implementado a continuaci-n leer*Descri#ir* datos
desdeDhacia YGLOBALP=(oo=Q dada la @RL =varCDD(oo=;
E'emplo !. )na ,ecuencia para la lecturaAescritura de 5ariables globales
<?php
class &ecuencia(ariable :
=ar $posicion;
=ar $nombre%=ar;

#unction stream%open3$ruta, $modo, $opciones, &$ruta%abierta9
:
$url > parse%url3$ruta9;
$thisF>nombre%=ar > $url)"host"/;
$thisF>posicion > 2;

return true;
;
#unction stream%read3$conteo9
:
$ret > substr3$-O?Z,O&)$thisF>nombre%=ar/, $thisF>posicion, $conteo9;
$thisF>posicion [> strlen3$ret9;
return $ret;
;
#unction stream%8rite3$datos9
:
$i0Q > substr3$-O?Z,O&)$thisF>nombre%=ar/, 2, $thisF>posicion9;
$der > substr3$-O?Z,O&)$thisF>nombre%=ar/, $thisF>posicion [ strlen3$datos99;
$-O?Z,O&)$thisF>nombre%=ar/ > $i0Q . $datos . $der;
$thisF>posicion [> strlen3$datos9;
return strlen3$datos9;
;
#unction stream%tell39
:
return $thisF>posicion;
;
#unction stream%eo#39
:
return $thisF>posicion >> strlen3$-O?Z,O&)$thisF>nombre%=ar/9;
;
#unction stream%seeI3$despla0amiento, $partida9
:
s8itch 3$partida9 :
case &EE]%&E*@
i# 3$despla0amiento < strlen3$-O?Z,O&)$thisF>nombre%=ar/9 && $despla0amiento >> 29 :
$thisF>posicion > $despla0amiento;
return true;
; else :
return #alse;
;
breaI;

case &EE]%R+'@
i# 3$despla0amiento >> 29 :
$thisF>posicion [> $despla0amiento;
return true;
; else :
return #alse;
;
breaI;

case &EE]%E.L@
i# 3strlen3$-O?Z,O&)$thisF>nombre%=ar/9 [ $despla0amiento >> 29 :
$thisF>posicion > strlen3$-O?Z,O&)$thisF>nombre%=ar/9 [ $despla0amiento;
return true;
; else :
return #alse;
;
breaI;

de#ault@
stream>3rapper>restore
>no version in(ormationA might #e only in 5$?
streamZErapperZrestore 22 Restores a previously unregistered #uilt2in Erapper
Kescription
#ool stream>3rapper>restore > string protocol ?
Restores a #uilt2in Erapper previously unregistered Eith stream>3rapper>unregister./;
stream>3rapper>unregister
>no version in(ormationA might #e only in 5$?
streamZErapperZunregister 22 @nregister a @RL Erapper
Kescription
#ool stream>3rapper>unregister > string protocol ?
stream>3rapper>unregister./ alloEs you to disa#le an already de(ined stream Erapper; Once the
Erapper has #een disa#led you may override it Eith a user2de(ined Erapper using
stream>3rapper>register./ or reena#le it later on Eith stream>3rapper>restore./;
CIII. ;unciones de Cadenas
Introducci"n
,odas estas (unciones manipulan cadenas en varias (ormas; Algunas secciones m*s especializadas
pueden encontrarse en los cap)tulos so#re eFpresiones regulares y gesti-n de @RLs;
Para m*s in(ormaci-n so#re el modo en /ue se comportan las cadenasA especialmente en lo /ue
respecta al uso de comillas sencillasA comillas do#lesA y secuencias de escapeA vea la entrada
5adenas en la secci-n ,ipos del manual;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
CRYPT_SALT_LEN#TH integer
CRYPT_STD_DES integer
CRYPT_E%T_DES integer
CRYPT_MD2 integer
CRYPT_(LO"FISH integer
HTML_SPECIALCHARS >integer?
HTML_ENTITIES >integer?
ENT_COMPAT >integer?
ENT_.UOTES >integer?
ENT_NO.UOTES >integer?
CHAR_MA% >integer?
LC_CTYPE >integer?
LC_NUMERIC >integer?
LC_TIME >integer?
LC_COLLATE >integer?
LC_MONETARY >integer?
LC_ALL >integer?
LC_MESSA#ES >integer?
STR_PAD_LEFT >integer?
STR_PAD_RI#HT >integer?
STR_PAD_(OTH >integer?
Cer tambi%n
Para consultar so#re (unciones de gesti-n y manipulaci-n de cadenas incluso m*s poderosasA eche
un vistazo a las (unciones de eFpresiones regulares PO.J y las (unciones de eFpresiones regulares
compati#les con Perl;
Tabla de contenidos
Add5lashes 22 Marca una cadena con #arras al estilo del 5
Addlashes 22 Marca una cadena con #arras
#in0heF 22 5onvierte datos #inarios en su representaci-n heFadecimal
chop 22 +limina espacios so#rantes al (inal
chr 22 Devuelve un caracter espec)(ico
chun"Zsplit 22 Divide una cadena en trozos m*s pe/ueWos
convertZcyrZstring 22 5onvierte de un 'uego de caracteres 5ir)lico a otro
convertZuudecode 22 Desci(ra una cadena codi(icada mediante uuencode
convertZuuencode 22 5odi(icaA mediante uuencodeA una cadena
countZchars 22 Devuelve in(ormaci-n so#re los caracteres usados en una cadena
crc70 22 5alcula el polinomio crc70 de una cadena
crypt 22 +ncripta una cadena mediante D+
echo 22 Da salida a una o m*s cadenas
eFplode 22 Divide una cadena por otra
(print( 22 +scri#ir una cadena con (ormato a una secuencia
getZhtmlZtranslationZta#le 22 Devuelve la ta#la de traducci-n utilizada por htmlspecialchars./ y
htmlentities./
he#rev 22 5onvierte &e#reo l-gico a teFto visual
he#revc 22 5onvierte &e#reo l-gico a teFto visual con conversi-n de saltos de l)nea
htmlZentityZdecode 22 5onvertir todas las entidades &,ML a sus caracteres correspondientes
htmlentities 22 5onvierte todos los caracteres aplica#les a entidades &,ML
htmlspecialchars 22 5onvierte caracteres especiales a entidades &,ML
implode 22 @nir elementos de una matriz mediante una cadena
'oin 22 @ne elementos de una ta#la mediante una cadena
levenshtein 22 5alcula la distancia Levenshtein entre dos cadenas
localeconv 22 O#tener in(ormaci-n so#re el (ormato num<rico
ltrim 22 +limina el espacio en #lanco del principio de una cadena
md4Z(ile 22 5alcula el resumen criptogr*(ico md4 de un nom#re de archivo dado
md4 22 5alcula el hash md4 de una cadena
metaphone 22 5alcula la clave =met*(ona= de una cadena
moneyZ(ormat 22 Da (ormato a un nBmero como una cadena de moneda
nlZlangin(o 22 5onsultar in(ormaci-n so#re el lengua'e y la localidad
nl0#r 22 .nserta saltos de linea &,ML antes de cada salto de l)nea
num#erZ(ormat 22 Dar (ormato a un nBmero con los miles agrupados
ord 22 Devuelve el valor A5.. de un caracter
parseZstr 22 Divide la cadena en varia#les
print 22 +mite una cadena
print( 22 .mprimir una cadena con (ormato
/uotedZprinta#leZdecode 22 5onvierte una cadena con marcaci-n imprimi#le a una cadena de M #its
/uotemeta 22 Ouote meta characters
rtrim 22 +limina espacios en #lanco al (inal de la cadena;
setlocale 22 Fi'a la in(ormaci-n de localidad
sha1Z(ile 22 5alcular el resumen criptogr*(ico sha1 de un archivo
sha1 22 5alcular el resumen criptogr*(ico sha1 de una cadena
similarZteFt 22 5alcula la similitud entre dos cadenas
soundeF 22 5alcula la clave soundeF de una cadena
sprint( 22 Devuelve una cadena con (ormato
sscan( 22 ,rocea la entrada desde una cadena segBn un (ormato dado
strZireplace 22 $ersi-n insensi#le a mayBsculas y minBsculas de str>replace./;
strZpad 22 Rellena una cadena con otra hasta una longitud dada
strZrepeat 22 Repite una cadena
strZreplace 22 ustitiye todas las apariciones de la agu'a en el pa'ar por la cadena
strZrot17 22 Realizar la trans(ormaci-n rot17 so#re una cadena
strZshu((le 22 Reordena aleatoriamente una cadena
strZsplit 22 5onvertir una cadena en una matriz
strZEordZcount 22 Devolver in(ormaci-n so#re las pala#ras usadas en una cadena
strcasecmp 22 5omparaci-n de cadenas insensi#le a mayBsculas y minBsculas y segura en modo
#inario
strchr 22 +ncuentra la primera aparici-n de un caracter
strcmp 22 5omparaci-n de cadenas con seguridad #inaria
strcoll 22 5omparaci-n de cadenas #asada en la localidad
strcspn 22 +ncuentra la longitud del elemento inicial /ue no coincide con la m*scara
stripZtags 22 +limina marcas &,ML y P&P de una cadena
stripcslashes 22 Desmarca la cadena marcada con addcslashes./
stripos 22 +ncontrar la posici-n de la primera ocurrencia de una cadenaA insensi#le a mayBsculas y
minBsculas
stripslashes 22 Desmarca la cadena marcada con addslashes./
stristr 22 strstr./ sin tener en cuenta mayBsculas o minBsculas
strlen 22 O#tiene la longitud de la cadena
strnatcasecmp 22 5omparaci-n de cadenas insensi#le a mayBsculas y minBsculas usando un
algoritmo de =orden natural=
strnatcmp 22 5ompara cadenas usando un algoritmo de =orden natural=
strncasecmp 22 5omparaci-n de los primeros n caracteres de cadenasA segura con material #inario e
insensi#le a mayBsculas y minBsculas
strncmp 22 5omparaci-n de los n primeros caracteres de cadenasA con seguridad #inaria
strp#r" 22 Busca una cadena por cual/uiera de los elementos de un con'unto de caracteres
strpos 22 +ncuentra la posici-n de la primera aparici-n de una cadena
strrchr 22 +ncuentra la Bltima aparici-n de un caracter en una cadena
strrev 22 .nvierte una cadena
strripos 22 +ncontrar la posici-n de la Bltima ocurrencia de una cadena en otraA insensi#le a
mayBsculas y minBsculas
strrpos 22 +ncuentra la posici-n de la Bltima aparici-n de un caracter en una cadena
strspn 22 +ncuentra la longitud del segmento inicial /ue coincide con la m*scara
strstr 22 +ncuentra la primera aparici-n de una cadena
strto" 22 Divide una cadena en elementos
strtoloEer 22 Pasa a minBsculas una cadena
strtoupper 22 Pasa a mayBsculas una cadena
strtr 22 ,raduce ciertos caracteres
su#strZcompare 22 5omparaci-n de 0 cadenasA segura con material #inarioA opcionalmente
insensi#le a mayBsculas y minBsculasA a partir de un desplazamientoA y hasta un nBmero l)mite de
caracteres
su#strZcount 22 5uenta el nBmero de apariciones de la su#cadena
su#strZreplace 22 ustituye teFto en una parte de una cadena
su#str 22 Devuelve parte de una cadena
trim 22 +limina espacios del principio y (inal de una cadena
uc(irst 22 Pasar a mayBsculas el primer caracter de una cadena
ucEords 22 Pone en mayBsculas el primer caracter de cada pala#ra de una cadena
v(print( 22 Lrite a (ormatted string to a stream
vprint( 22 .mprimir una cadena con (ormato
vsprint( 22 Devuelve una cadena con (ormato
EordErap 22 5orta una cadena en un nBmero dado de caracteres usando un caracter de ruptura de
cadenas;
AddC,lashes
>P&P 8 A P&P 4?
Add5lashes 22 Marca una cadena con #arras al estilo del 5
Kescripci"n
string addcslashes > string cadA string listcar ?
Devuelve una cadena con #arras invertidas antes de los caracteres listados en el par*metro l6stcar;
,am#i<n marca QnA Qr etc; Al estilo del 5A los caracteres con c-dico A5.. in(erior a 70 y superior a
10K son convertidos a representaci-n octal; ,enga cuidado cuando mar/ue caracteres al(anum<ricos;
Puede especi(icar un rango en l6stcar como el =h3;;h7:=A /ue marcar)a todos los caracteres con c-digo
A5.. entre 3 y 71;
E'emplo !. E'emplo de addcslashes./
$trad#ormado > addcslashes 3$no%trans#, "V2..V<H!^V6HH..V<HH"9;
Nota- AWadida en P&P8#72dev;
$ea tam#i<n stripcslashes./A stripslashes./A htmlspecialchars./A htmlspecialchars./A y ?uotemeta
./;
Add,lashes
>P&P 7A P&P 8 A P&P 4?
Addlashes 22 Marca una cadena con #arras
Kescripci"n
string addslashes > string cad ?
Devuelve una cadena con #arras invertidas (rente a los caracteres /ue necesitan marcarse en
consultas de #ases de datosA etc; +stos son la comilla simple ><?A comilla do#le >*?A #arra invertida >Q?
y N@L >el #yte nulo?;
$ea tam#i<n stripslashes./A htmlspecialchars./A y ?uotemeta./;
bin*he+
>P&P 7_^ 7;3;9A P&P 8 A P&P 4?
#in0heF 22 5onvierte datos #inarios en su representaci-n heFadecimal
Kescripci"n
string bin*he+ > string cad ?
Devuelve una cadena A5.. /ue contiene la representaci-n heFadecimal de ca#; La conversi-n se
realiza #yte a #yteA con los 8 #its superiores primero;
chop
>P&P 7A P&P 8 A P&P 4?
chop 22 +limina espacios so#rantes al (inal
Kescripci"n
string chop > string cad ?
Devuelve la cadena argumento sin los espacios so#rantesA incluyendo los saltos de l)nea;
E'emplo !. E'emplo de chop./
$recortada > chop 3$linea9;
$ea tam#i<n trim./;
chr
>P&P 7A P&P 8 A P&P 4?
chr 22 Devuelve un caracter espec)(ico
Kescripci"n
string chr > int ascii ?
Devuelve una cadena de un caracter /ue congiene el caracter especi(icado por asc66;
E'emplo !. E'emplo de chr./
$cad .> chr 3CH9; /W aDade un caracter de escape al #inal de $cad W/
/W , =eces esto es mes htil W/
$cad > sprint# 3"Oa cadena termina en escape@ \c", CH9;
+sta (unci-n complementa a ord./; $ea tam#i<n sprintf./ con una cadena de (ormato Tc;
chunB>split
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
chun"Zsplit 22 Divide una cadena en trozos m*s pe/ueWos
Kescripci"n
string chunB>split > string cadena PA int tamatrozo PA string (inalQQ ?
e puede utilizar para trocear una cadena en pedazos m*s pe/ueWosA lo /ue es BtilA p;e';A para
convertir la salida de la (unci-n #aseK8Zencode a la sem*ntica del RF5 0384; .nserta la cadena 96nal
cada tamatroDo >por de(ecto vale :K? caracteres; Devuelve la nueva cadena y de'a intacta la original;
E'emplo !. E'emplo de chunB>split./
U #ormatear $datos usando la sementica del 'SR C215
$nue=a%cad > chunI%split 3baseG1%encode3$datos99;
+sta (unci-n es nota#lemente m*s r*pida /ue ereg>replace./;
Nota- +sta (unci-n se aWadi- en la 7;3;K;
con5ert>cyr>string
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
convertZcyrZstring 22 5onvierte de un 'uego de caracteres 5ir)lico a otro
Kescripci"n
string con5ert>cyr>string > string cadA string desdeA string hasta ?
+sta (unci-n convierte la cadena dada de un 'uego de caracteres 5ir)lico a otro; Los argumentos
#es#e y hasta son caracteres sencillos /ue representan los 'uegos de caracteres 5ir)licos (uente y
destino; Los tipos soportados sonC
" 2 "oiM2r
E 2 EindoEs21041
i 2 isoMM4924
a 2 F2cpMKK
d 2 F2cpMKK
m 2 F2mac2cyrillic
con5ert>uudecode
>P&P 4?
convertZuudecode 22 Desci(ra una cadena codi(icada mediante uuencode
Kescripci"n
string con5ert>uudecode > string datos ?
con5ert>uudecode./ desci(ra una cadena codi(icada mediante uuencode;
E'emplo !. E'emplo de con5ert>uudecode./
<?php
/W uede imaEinarse lo Que esto imprime? @9 W/
echo con=ert%uudecode3"[CC!O;7KE3\!31V"$dVnd"9;
?>
$ea tam#i<n con5ert>uuencode./;
con5ert>uuencode
>P&P 4?
convertZuuencode 22 5odi(icaA mediante uuencodeA una cadena
Kescripci"n
string con5ert>uuencode > string datos ?
con5ert>uuencode./ codi(ica una cadena usando el algoritmo uuencode;
@uencode traduce todas las cadenas >incluyendo las #inarias? a secuencias de caracteres
imprimi#lesA haci<ndolas seguras para transmisiones de red; Los datos codi(icados de esta (orma son
aproFimadamente 74b m*s largos /ue el original;
E'emplo !. E'emplo de con5ert>uuencode./
<?php
$una%cadena > "pruebaVntexto textoVrVn";
echo con=ert%uuencode3$una%cadena9;
?>
$ea tam#i<n con5ert>uudecode./ y base<8>encode./;
count>chars
>P&P 8 A P&P 4?
countZchars 22 Devuelve in(ormaci-n so#re los caracteres usados en una cadena
Kescripci"n
miFed count>chars > string cadena PA modoQ ?
5uenta el nBmero de apariciones de cada valor de #yte >3;;044? en ca#ena y lo devuelve de varias
maneras; +l par*metro opcional mo#o vale por de(ecto 3; Dependiendo de mo#oA count>chars./
puede devolverC
3 2 una matriz con el valor del #yte como clave y la (recuencia de cada uno como valor;
1 2 como el 3A pero listando Bnicamente los valores de #yte con (recuencia superior a cero;
0 2 como el 3A pero listando Bnicamente los valores de #yte con (recuencia igual a 3;
7 2 se devuelve una cadena /ue contiene todos los valores de #yte utilizados;
8 2 se devuelve una cadena /ue contiene todos los valores de #yte no utilizados;
Nota- +sta (unci-n se aWadi- en el P&P 8;3;
crc7*
>P&P 8 _^ 8;3;1A P&P 4?
crc70 22 5alcula el polinomio crc70 de una cadena
Kescripci"n
int crc7* > string cad ?
Genera el polinomio de compro#aci-n de reduncancia c)clica de 70 #its de ca#; e suele utilizar
para validad la integridad de los datos transmitidos;
$ea tam#i<nC md9./
crypt
>P&P 7A P&P 8 A P&P 4?
crypt 22 +ncripta una cadena mediante D+
Kescripci"n
string crypt > string cad PA string semillaQ ?
crypt./ encriptar* una cadena utilizando el m<todo est*ndar de encriptaci-n del @niF D+; Los
argumentos son una cadena a encriptar y una cadena semilla de 0 caracteres en la /ue #asar la
encriptaci-n; $ea la p*gina de manual de @niF so#re crypt para m*s in(ormaci-n;
i el argumento de semilla no se proporcionaA ser* generado aleatoriamente por el P&P;
Algunos sistemas operativos soportan m*s de un tipo de encriptaci-n; De hechoA algunas veces la
encriptaci-n est*ndar D+ es sustitu)da por un algoritmo de encriptaci-n #asado en MD4; +l tipo de
encriptaci-n es disparado por el argumento semilla; +n tiempo de instalaci-nA el P&P determina la
capacidad de la (unci-n de encriptaci-n y aceptar* semillas para otros tipos de encriptaci-n; i no se
proporciona la semillaA el P&P intentar* generar una semilla est*ndar D+ de 0 caraceres por
de(ectoA eFcepto si el tipo de encriptaci-n est*ndar del sistema es el MD4A en cuyo caso se generar*
una semilla aleatoria compati#le con MD4; +l P&P (i'a una constante llamada
5R%P,ZAL,ZL+NG,& /ue le especi(ica si su sistema soporta una semilla de 0 caracteres o si se
de#e usar la semilla de 10 caracteres del ND;
La (unci-n est*ndar de encriptaci-n crypt./ contiene la semilla como los dos primeros caracteres de
la salida;
+n los sistemas en los /ue la (unci-n crypt>? soporta mBltiples tipos de encriptaci-nA las siguienes
constantes son (i'adas a 3 - 1 dependiendo de si est* disponi#le el tipo dadoC
5R%P,Z,DZD+ 2 +ncriptaci-n D+ est*ndar con semilla de 0 caracteres
5R%P,Z+J,ZD+ 2 +ncriptaci-n D+ eFtendida con semilla de 9 caracteres
5R%P,ZMD4 2 +ncriptaci-n MD4 con semilla de 10 caracteres y comenzando por Y1Y
5R%P,ZBLOLF.& 2 +ncriptaci-n D+ eFtendida con semilla de 1K caracteres y
comenzando por Y0Y
No hay (unci-n de desencriptado por/ue crypt./ utiliza un algoritmo de una sola v)a;
$ea tam#i<nC md9./;
echo
>P&P 7A P&P 8A P&P 4 ?
echo 22 Da salida a una o m*s cadenas
Kescripci"n
echo > string arg1 PA string argn;;;Q ?
Da salida a todos sus par*metros;
echo./ no es realmente una (unci-n >es una sentencia del lengua'e? de modo /ue no se re/uiere el
uso de los par<ntesis;
E'emplo !. E'emplo de echo./
echo "Hola "undo";
echo "Esto se extiende
por =arias lgneas. Oos saltos de lgnea
tambiBn se en=gan";
echo "Esto se extiendeVnpor =arias lgneas. Oos saltos de lgneaVntambiBn se en=gan";
Nota- De hechoA si desea pasar m*s de un par*metro a echo no de#e encerrarlos entre
par<ntesis;
$ea tam#i<nC print./A printf./A y flush./;
e+plode
>P&P 7A P&P 8 A P&P 4?
eFplode 22 Divide una cadena por otra
Kescripci"n
array e+plode > string separadorA string cadena PA int limiteQ ?
Devuelve una matriz de cadenasA cada una de las cuales es una su#cadena de ca#ena (ormada
mediante su divisi-n en las (ronteras marcadas por la cadena separa#or; i se especi(ica l6m6teA la
matriz devuelta contendr* un m*Fimo de l6m6te elementos con el Bltimo conteniendo el resto de la
ca#ena;
E'emplo !. E'emplo de e+plode./
$pi00a > "tro0o6 tro0oC tro0o< tro0o1 tro0o5 tro0oG";
$tro0os > explode 3" ", $pi00a9;
$ea tam#i<n split./ e implode./;
fprintf
>P&P 4?
(print( 22 +scri#ir una cadena con (ormato a una secuencia
Kescripci"n
int fprintf > resource gestorA string (ormato PA miFed args PA miFed ;;;QQ ?
+scri#e una cadena producida de acuerdo a 9ormato al recurso de secuencia especi(icado por Eestor;
9ormato se descri#e en la documentaci-n para sprintf./;
Devuelve la longitud de la cadena impresa;
$ea tam#i<nC printf./A sprintf./A sscanf./A fscanf./A 5sprintf./A y number>format./;
E'emplos
E'emplo !. fprintf./- enteros con relleno de ceros
<?php
i# 3!3$da > #open3M#echa.txtM, M8M999
return;
#print#3$da, "\21dF\2CdF\2Cd", $anyo, $mes, $dia9;
// escribe la #echa en #ormato 4&? a #echa.txt
?>
E'emplo *. fprintf./- dando formato a 5alores monetarios
<?php
i# 3!3$da > #open3Mmonetario.txtM, M8M999
return;
$dinero6 > GJ.H5;
$dineroC > 51.<5;
$dinero > $dinero6 [ $dineroC;
// echo $dinero producira la salida "6C<.6";
$lonE > #print#3$da, M\26.C#M, $dinero9;
// escribe "6C<.62" en monetario.txt
echo "se escribieron $lonE bytes a monetario.txt";
// usar el =alor de retorno para determinar cuantos bytes se escribieron
?>
get>html>translation>table
>P&P 8 A P&P 4?
getZhtmlZtranslationZta#le 22 Devuelve la ta#la de traducci-n utilizada por htmlspecialchars./ y
htmlentities./
Kescripci"n
string get>html>translation>table > int ta#la ?
get>html>translation>table./ devolver* la ta#la de traducci-n /ue se usa internamente para
htmlspecialchars./ y htmlentities./; &ay dos nuevas de(iniciones >!TM4_ENT0T0ESA
!TM4_S+EC0,4C!,RS? /ue le permiten especi(icar la ta#la deseada;
E'emplo !. E'emplo de Tabla de Traducci"n
$trad > Eet%html%translation%table 3H*"O%E.*4*4E&9;
$cad > "Hallo & <Srau> & ]r_`abmer";
$codi# > strtr 3$cad, $trad9;
La varia#le 'co#69 contendr* ahoraC =&allo iQampGX iQltGXFrauiQgtGX iQampGX
SriQaumlGXmer=;
Lo interesante es usar la (unci-n array>flip./ para cam#iar la direcci-n de la traducci-n;
$trad > array%#lip 3$trad9;
$oriEinal > strtr 3$cad, $trad9;
+l contenido de 'or6E6nal ser)aC =&allo i `Frau_ i Srcpeumer=;
Nota- +sta (unci-n (ue aWadida en P&P 8;3;
$ea tam#i<nC htmlspecialchars./A htmlentities./A strtr./A y array>flip./;
hebre5
>P&P 7A P&P 8 A P&P 4?
he#rev 22 5onvierte &e#reo l-gico a teFto visual
Kescripci"n
string hebre5 > string teFtoZhe#reo PA int maFZcarsZporZlineaQ ?
+l par*metro opcional ma8_cars_por_l6nea indica el m*Fimo nBmero de caracteres /ue se emitir*n
por l)nea; La (unci-n intenta evitar cortar pala#ras;
$ea tam#i<n hebre5c./
hebre5c
>P&P 7A P&P 8 A P&P 4?
he#revc 22 5onvierte &e#reo l-gico a teFto visual con conversi-n de saltos de l)nea
Kescripci"n
string hebre5c > string teFtoZhe#reo PA int maFZcarsZporZlineaQ ?
+sta (uncion es similar a hebre5./ con la di(erencia /ue convierte las nuevas l)neas >hn? a =`#r_hn=;
+l par*metro opcional ma8_cars_por_l6nea indica el m*Fimo nBmero de caracteres /ue se emitir*n
por l)nea; La (unci-n intenta evitar cortar pala#ras;
$ea tam#i<n hebre5./
html>entity>decode
>P&P 8 _^ 8;7;3A P&P 4?
htmlZentityZdecode 22 5onvertir todas las entidades &,ML a sus caracteres correspondientes
Kescripci"n
string html>entity>decode > string cadena PA int estiloZcomillas PA string 'uegoZcaracteresQQ ?
html>entity>decode./ es el opuesto de htmlentities./ en el sentido en /ue convierte todas las
entidades &,ML a sus caracteres correspondientes en la ca#ena dada;
+l segundo par*metro opcional est6lo_com6llas le permite de(inir lo /ue de#e hacerse con las
comillas HsencillasH y =do#les=; Reci#e una de tres constantes posi#lesA siendo el valor por de(ecto
ENT_COMPATC
Tabla !. Constantes disponibles para estilo_co&illas
Nombre de constante Kescripci"n
ENT_COMPAT
5onvierte las comillas do#les y de'a intactas las comillas
sencillas;
ENT_.UOTES 5onvierte tanto comillas do#les como sencillas;
ENT_NO.UOTES No convierte ni las comillas do#les ni las sencillas;
+l 'uego de caracteres .O2MM4921 es usado como valor predeterminado para el tercer argumento
opcional UueEo_caracteres; [ste de(ine el 'uego de caracteres usado en la conversi-n;
Los siguientes 'uegos de caracteres son soportados a partir de P&P 8;7;3;
Tabla *. [uegos de caracteres soportados
[uego de
caracteres
Aliases Kescripci"n
.O2MM4921 .OMM4921 +uropeo OccidentalA Latin21
.O2MM49214 .OMM49214
+uropeo OccidentalA Latin29; AWade el signo de +uroA y letras
del Franc<s y Finland<s /ue hac)an (alta en Latin21>.O2MM492
1?;
@,F2M Multi2#yte @nicode de M2#its compati#le con A5..;
cpMKK i#mMKKA MKK
!uego de caracteres cir)licos espec)(ico de DO; +ste 'uego de
caracteres est* soportado en 8;7;0;
cp1041
LindoEs21041A
Ein21041A 1041
!uego de caracteres cir)licos espec)(ico de LindoEs; +ste
'uego de caracteres est* soportado en 8;7;0;
[uego de
caracteres
Aliases Kescripci"n
cp1040
LindoEs21040A
1040
!uego de caracteres espec)(ico de LindoEs para +uropa
Occidental;
SO.M2R "oiM2ruA "oiMr Ruso; +ste 'uego de caracteres est* soportado en 8;7;0;
B.G4 943 5hino ,radicionalA usado principalmente en ,aiE*n;
GB0710 97K 5hino impli(icadoA 'uego de caracteres est*ndar nacional;
B.G42&S5 Big4 con eFtensiones de &ong SongA 5hino ,radicional;
hi(tZ!. !.A 970 !apon<s
+@52!P +@5!P !apon<s
Nota- 5ual/uier otro 'uego de caracteres no es reconocido y en su lugar se utilizar* .O2
MM4921;
E'emplo !. Kecodificaci"n de entidades HTM:
<?php
$oriE > "4Mll V"8alIV" the <b>doE</b> no8";
$a > htmlentities3$oriE9;
$b > html%entity%decode3$a9;
echo $a; // 4Mll &Quot;8alI&Quot; the &lt;b&Et;doE&lt;/b&Et; no8
echo $b; // 4Mll "8alI" the <b>doE</b> no8
// +suarios de una =ersion anterior a 1.<.2 de H, pueden hacer esto@
#unction unhtmlentities3$cadena9
:
$trans%tbl > Eet%html%translation%table3H*"O%E.*4*4E&9;
$trans%tbl > array%#lip3$trans%tbl9;
return strtr3$cadena, $trans%tbl9;
;
$c > unhtmlentities3$a9;
echo $c; // 4Mll "8alI" the <b>doE</b> no8
?>
Nota- Puede /ue se pregunte por /u< trim>htmlZentityZdecode>Hin#spXH??X no reduce la
cadena a una cadena vac)aA esto es por/ue la entidad Hin#spXH no es el c-digo A5.. 70
>el cual es eliminado por trim./? sino el c-digo A5.. 1K3 >3Fa3? en el 'uego de
caracteres por de(ectoA .O MM4921;
$ea tam#i<n htmlentities./A htmlspecialchars./A get>html>translation>table./A y urldecode./;
htmlentities
>P&P 7A P&P 8 A P&P 4?
htmlentities 22 5onvierte todos los caracteres aplica#les a entidades &,ML
Kescripci"n
string htmlentities > string cadena ?
+sta (unci-n es del todo id<ntica a htmlspecialchars./A eFcepto /ue traduce todos los caracteres /ue
tienen Walente como entidad &,ML;
Actualmente se utiliza el 'uego de caracteres .O2MM4921;
$ea tam#i<n htmlspecialchars./ y nl*br./;
htmlspecialchars
>P&P 7A P&P 8 A P&P 4?
htmlspecialchars 22 5onvierte caracteres especiales a entidades &,ML
Kescripci"n
string htmlspecialchars > string cadena ?
5iertos caracteres tienen signi(icados especiales en &,MLA y de#en ser representados por entidades
&,ML si se desea preservar su signi(icado; +sta (unci-n devuelve una cadena con dichas
conversiones realizadas;
+sta (unci-n es Btil para evitar /ue el teFo entrado por el usuario contenga marcas &,MLA como
ocurre en aplicaciones de (oros o li#ros de visita;
ActualmenteA las traducciones hechas sonC
HiH >ampersand? se convierte en HiampXH
H=H >do#le comilla? se convierte en Hi/uotXH
H`H >menor /ue? se convierte en HiltXH
H_H >mayor /ue? se convierte en HigtXH
N-tese /ue esta (unci-n no traduce nada m*s /ue lo mostrado m*s arri#a; Para una traducci-n de
entidades completaA vea htmlentities./;
$ea tam#i<n htmlentities./ y nl*br./;
implode
>P&P 7A P&P 8 A P&P 4?
implode 22 @nir elementos de una matriz mediante una cadena
Kescripci"n
string implode > string colaA array piezas ?
Devuelve una cadena /ue contiene una representaci-n de todos los elementos de la matriz en el
mismo ordenA pero con la cadena cola en medio de los mismos;
E'emplo !. E'emplo de implode./
$separada%dospuntos > implode 3"@", $matri0ay9;
$ea tam#i<n e+plode./A 'oin./A y split./;
'oin
>P&P 7A P&P 8 A P&P 4?
'oin 22 @ne elementos de una ta#la mediante una cadena
Kescripci"n
string 'oin > string colaA array piezas ?
'oin./ es un alias para implode./A y es id<ntica en todo;
$ea tam#i<n e+plode./A implode./A y split./;
le5enshtein
>P&P 7_^ 7;3;1:A P&P 8 _^ 8;3;1A P&P 4?
levenshtein 22 5alcula la distancia Levenshtein entre dos cadenas
Kescripci"n
int le5enshtein > string cad1A string cad0 ?
+sta (unci-n devuelve la distancia Levenshtein entre las dos cadenas argumentoA - 21 si alguna de
las cadenas tiene m*s de 044 caracteres;
La distancia Levenshtein se de(ine como el m)nimo nBmero de caracteres /ue se tienen /ue sustituirA
insertar o #orrar para trans(ormar ca#1 en ca#2; La comple'idad del algoritmo es OLm/nMA donde n y
m son las longitudes de ca#1 y ca#2 >#astante #ueno si se la compara con similar>te+t./A /ue es O
>maF>nAm?VV7?A pero aBn es cara?;
$ea tam#i<n sounde+./A similar>te+t./ y metaphone./;
localecon5
>P&P 8 _^ 8;3;4A P&P 4?
localeconv 22 O#tener in(ormaci-n so#re el (ormato num<rico
Kescripci"n
array localecon5 > void ?
Devuelve una matriz asociativa /ue contiene in(ormaci-n de los (ormatos num<rico y monetarioA
localizados;
localecon5./ devuelve in(ormaci-n #asada en la localidad actualA tal y como haya sido de(inida
mediante setlocale./; La matriz asociativa /ue devuelve contiene los siguientes camposC
Elemento de la
matri6
Kescripci"n
decimalZpoint 5aracter de punto decimal
thousandsZsep eparador de miles
grouping Matriz /ue contiene agrupaciones num<ricas
intZcurrZsym#ol )m#olo internacional de moneda >i;e; @D?
currencyZsym#ol )m#olo local de moneda >i;e; Y?
monZdecimalZpoint 5aracter de punto decimal monetario
monZthousandsZsep eparador de miles monetario
monZgrouping Matriz /ue contiene agrupaciones de moneda
positiveZsign igno para valores positivos
negativeZsign igno para valores negativos
intZ(racZdigits D)gitos (raccionarios internacionales
(racZdigits D)gitos (raccionarios locales
pZcsZprecedes TRUE si currencyZsym#ol precede un valor positivoA FALSE si lo sucede
pZsepZ#yZspace
TRUE si un espacio separa currencyZsym#ol de un valor positivoA FALSE
de lo contrario
nZcsZprecedes TRUE si currencyZsym#ol precede un valor negativoA FALSE si lo sucede
nZsepZ#yZspace
TRUE si un espacio separa currencyZsym#ol de un valor negativoA FALSE
de lo contrario
pZsignZposn
3 Par<ntesis rodean la cantidad y currencyZsym#ol
1 La cadena de signo precede la cantidad y currencyZsym#ol
0 La cadena de signo sucede la cantidad y currencyZsym#ol
7 La cadena de signo precede inmediatamente currencyZsym#ol
8 La cadena de signo sucede inmediatamente currencyZsym#ol
nZsignZposn
3 Par<ntesis rodean la cantidad y currencyZsym#ol
1 La cadena de signo precede la cantidad y currencyZsym#ol
0 La cadena de signo sucede la cantidad y currencyZsym#ol
7 La cadena de signo precede inmediatamente currencyZsym#ol
8 La cadena de signo sucede inmediatamente currencyZsym#ol
Los campos de agrupamiento contienen matrices /ue de(inen el modo en /ue los nBmeros de#en ser
agrupados; Por e'emploA el campo de agrupamiento para la localidad enZ@ de#er)a contener una
matriz de 0 elementos con los valores 7 y 7; +ntre m*s alto sea el )ndice dentro de la matrizA lo m*s
le'os hacia la iz/uierda se encuentra el agrupamiento; i un elemento de la matriz es igual a
5&ARZMAJA no se realiza ningBn agrupamiento posterior; i un elemento de la matriz es igual a 3A
el elemento anterior de#er* ser usado;
E'emplo !. E'emplo de localecon5./
<?php
setlocale3OR%,OO, "en%+&"9;
$in#o%locale > localecon=39;
echo "<pre>Vn";
echo "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFVn";
echo " 4n#ormaci&oacute;n monetaria para la localidad actual@ Vn";
echo "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFVnVn";
echo "int%curr%symbol@ :$in#o%locale)"int%curr%symbol"/;Vn";
echo "currency%symbol@ :$in#o%locale)"currency%symbol"/;Vn";
echo "mon%decimal%point@ :$in#o%locale)"mon%decimal%point"/;Vn";
echo "mon%thousands%sep@ :$in#o%locale)"mon%thousands%sep"/;Vn";
echo "positi=e%siEn@ :$in#o%locale)"positi=e%siEn"/;Vn";
echo "neEati=e%siEn@ :$in#o%locale)"neEati=e%siEn"/;Vn";
echo "int%#rac%diEits@ :$in#o%locale)"int%#rac%diEits"/;Vn";
echo "#rac%diEits@ :$in#o%locale)"#rac%diEits"/;Vn";
echo "p%cs%precedes@ :$in#o%locale)"p%cs%precedes"/;Vn";
echo "p%sep%by%space@ :$in#o%locale)"p%sep%by%space"/;Vn";
echo "n%cs%precedes@ :$in#o%locale)"n%cs%precedes"/;Vn";
echo "n%sep%by%space@ :$in#o%locale)"n%sep%by%space"/;Vn";
echo "p%siEn%posn@ :$in#o%locale)"p%siEn%posn"/;Vn";
echo "n%siEn%posn@ :$in#o%locale)"n%siEn%posn"/;Vn";
echo "</pre>Vn";
?>
La constante 5&ARZMAJ tam#i<n se de(ine para el uso mencionado anteriormente;
$ea tam#i<n setlocale./;
ltrim
>P&P 7A P&P 8 A P&P 4?
ltrim 22 +limina el espacio en #lanco del principio de una cadena
Kescripci"n
string ltrim > string cad ?
+sta (unci-n elimina el espacio en #lanco del principio de una cadena y devuelve la cadena
resultante; Los caracteres de espacio /ue elimina realmente sonC =hn=A =hr=A =ht=A =hv=A =h3=A y el
espacio en s);
$ea tam#i<n chop./ y trim./;
md9>file
>P&P 8 _^ 8;0;3A P&P 4?
md4Z(ile 22 5alcula el resumen criptogr*(ico md4 de un nom#re de archivo dado
Kescripci"n
string md9>file > string nom#reZarchivo PA #ool salidaZprimitivaQ ?
5alcula el resumen criptogr*(ico MD4 del nom1re_arch6o especi(icadoA usando el Algoritmo de
Resumen de Mensa'es MD4 de RA Data ecurityA .nc;A y devuelve ese resumen; +l resumen
criptogr*(ico es un nBmero heFadecimal de 70 caracteres; i el valor opcional sal6#a_pr6m6t6a es
TRUEA entonces el resumen md4 es retornado en cam#io en (ormato #inario primitivo con una
longitud de 1K;
Nota- +l par*metro opcional sal6#a_pr6m6t6a (ue aWadido en P&P 4;3;3 y tiene un valor
predeterminado de FALSE
+sta (unci-n tiene el mismo prop-sito /ue la utilidad de l)nea de comandos md4sum;
$ea tam#i<n md9./A crc7*./A y sha!>file./;
md9
>P&P 7A P&P 8 A P&P 4?
md4 22 5alcula el hash md4 de una cadena
Kescripci"n
string md9 > string cad ?
5alcula el hash >eFtracto? MD4 de ca# usaneo el Algoritmo de Resumen de Mensa'es MD4 de RA
Data ecurityA .nc; ;
$ea tam#i<nC crc7*./
metaphone
>P&P 8 A P&P 4?
metaphone 22 5alcula la clave =met*(ona= de una cadena
Kescripci"n
string metaphone > string cad ?
5alcula la clave =met*(ona= de ca#;
imilarmente a sounde+./A metaphone crea la misma clave para pala#ras /ue suenan parecidas; +s
m*s precisa /ue la (unci-n sounde+./A pues conoce las reglas #*sicas de la pronunciaci-n del .ngl<s;
Las claves meta(-nicas generadas son de longitud varia#le;
Metaphone (ue desarrollado por LaErence Philips `lphilipsGverity;com_; e descri#e en
P=Practical Algorithms (or Programmers=A Binstoc" i ReFA Addison LesleyA 1994Q;
Nota- +sta (unci-n se aWadi- en P&P 8;3;
money>format
>P&P 8 _^ 8;7;3A P&P 4?
moneyZ(ormat 22 Da (ormato a un nBmero como una cadena de moneda
Kescripci"n
string money>format > string (ormatoA (loat numero ?
money>format./ devuelve una versi-n con (ormato de numero; +sta (unci-n envuelve la (unci-n de
la #i#lioteca de 5 strfmon./A con la di(erencia de /ue <sta implementaci-n convierte solo un
nBmero a la vez;
Nota- La (unci-n money>format./ est* de(inida solo si el sistema tiene la capacidad de
llamar a str(mon; Por e'emploA LindoEs no tiene soporte para esta (unci-nA as) /ue
money>format./ no se encuentra de(inida en LindoEs;
La especi(icaci-n de (ormato consiste de la siguiente secuenciaC
un caracter T
#anderas opcionales
un ancho de campo opcional
precisi-n de iz/uierda opcional
precisi-n de derecha opcional
un caracter de conversi-nA re/uerido
1anderas. @na o m*s de las siguientes #anderas opcionales pueden ser usadasC
:9
+l caracter : seguido de un caracter >#yte sencillo? 9 /ue ser* usado como el caracter de
relleno num<rico; +s caracter de relleno predeterminado es el espacio;
Z
Desha#ilitar el uso de caracteres de agrupamiento >tal y como est<n de(inidos segBn la
localidad actual?;
Y o L
+speci(ica el estilo de (ormato para nBmeros positivos y negativos; i se usa YA los Walentes de
Y y = en la localidad actual ser*n usados; i se usa LA las cantidades negativas estar*n u#icadas
entre par<ntesis; i no se da especi(icaci-n algunaA el valor por de(ecto es Y;
_
+limina el s)m#olo de moneda de la cadena de salida;
=
i se encuentra presenteA har* /ue todos los campos est<n 'usti(icados a iz/uierda >con relleno
a la derecha?A en contraste al comportamiento predeterminado /ue hace /ue los campos est<n
'usti(icados a derecha >con relleno a la iz/uierda?;
Ancho de campo.
7
@na cadena de d)gito decimal /ue especi(ica un ancho de campo m)nimo; +l campo ser*
'usti(icado a derecha a menos /ue la #andera = sea usada; +l valor predeterminado es 3 >cero?;
Precisi"n de i6?uierda.
Kn
+l nBmero m*Fimo de d)gitos >n? a esperar a la iz/uerda del caracter decimal >p; e'; el punto
decimal?; @sualmente se usa para mantener la salida con (ormato alineada en las mismas
columnasA usando el caracter de relleno si el nBmero de d)gitos es menor /ue n; i el nBmero
de d)gitos real es mayor /ue nA entonces <sta especi(icaci-n es ignorada;
i no se ha suprimido el agrupamiento usando la #andera ZA los separadores de agrupamiento
ser*n insertados antes de /ue los caracteres de relleno >si los hay? sean agregados; Los
separadores de agrupamiento no ser*n aplicados so#re los caracteres de rellenoA aun si el
caracter de relleno es un d)gito;
Para asegurar el alineamientoA cual/uier caracter /ue aparezca antes o despu<s del nBmero en
la salida con (ormatoA tales como los s)m#olos de moneda o de signoA son rellenados en tanto
sea necesario con caracteres de espacio para hacer /ue sus (ormatos positivo y negativo tengan
una misma longitud;
Precisi"n de derecha .
.p
@n punto seguido del nBmero de d)gitos >p? despu<s del caracter decimal; i el valor de p es 3
>cero?A el caracter decimal y los d)gitos a su derecha ser*n omitidos; i no se incluye ninguna
precisi-n de derechaA el valor predeterminado ser* determinado por la localidad en uso; La
cantidad a la cual se est* dando (ormato es redondeada al nBmero de d)gitos especi(icado
antes del (ormato;
Caracteres de con5ersi"n .
6
+l nBmero reci#e (ormato de acuerdo al (ormato de moneda internacional de la localidad >p;e';
para la localidad de @AC @D 1A078;4K?;
n
+l nBmero reci#e (ormato de acuerdo al (ormato de moneda nacional de la localidad >p;e';
para la localidad deZD+C DM1;078A4K?;
T
Devuelve el caracter T;
Nota- La categor)a LC_MONETARY de los par*metros de la localidadA a(ecta el
comportamiento de esta (unci-n; @se setlocale./ para esta#lecer la localidad por de(ecto
apropiada antes de usar esta (unci-n;
Los caracteres antes y despu<s de la cadena de (ormato ser*n devueltos sin
modi(icaciones;
E'emplo !. E'emplo de money>format./
@saremos di(erentes localidades y especi(icaciones de (ormato para ilustrar el uso de esta (unci-n;
<?php
$numero > 6C<1.5G;
// imprimamos el #ormato internacional para la localidad en%+&
setlocale3OR%"?.E*,'P, Men%+&M9;
echo money%#ormat3M\iM, $numero9 . "Vn";
// +&L 6,C<1.5G
// Sormato nacional italiano con C decimales
setlocale3OR%"?.E*,'P, Mit%4*M9;
echo money%#ormat3M\.CnM, $numero9 . "Vn";
// O. 6.C<1,5G
// +so de un numero neEati=o
$numero > F6C<1.5GHC;
// Sormato nacional de +&, usando 39 para numeros neEati=os
// y 62 diEitos para la precision de derecha
setlocale3OR%"?.E*,'P, Men%+&M9;
echo money%#ormat3M\3U62nM, $numero9 . "Vn";
// 3$ 6,C<1.5H9
// +n #ormato similar al anterior, aEreEando el uso de C diEitos de
// precision de derecha y MWM como caracter de relleno
echo money%#ormat3M\>W3U62.CnM, $numero9 . "Vn";
// 3$WWWWWWWW6,C<1.5H9

// Austi#iQuemos a i0Quierda, con 61 posiciones de ancho, J diEitos de
// precision de i0Quierda, C de precision de derecha, sin caracter de
// aErupamiento y usando el #ormato internacional de la localidad
// de%LE.
setlocale3OR%"?.E*,'P, Mde%LEM9;
echo money%#ormat3M\>WcF61UJ.CiM, 6C<1.5G9 . "Vn";
// LE" 6C<1,5GWWWW
// ,EreEuemos un poco de in#ormacion antes y despues de la especi#icacion
// de con=ersion
setlocale3OR%"?.E*,'P, Men%-ZM9;
$#mt > MEl =alor #inal es \i 3despues de un descuento de 62\\9M;
echo money%#ormat3$#mt, 6C<1.5G9 . "Vn";
// El =alor #inal es -Z 6,C<1.5G 3despues de un descuento de 62\9
?>
$ea tam#i<nC setlocale./A number>format./Asprintf./A printf./ y sscanf./;
nl>langinfo
>P&P 8 _^ 8;1;3A P&P 4?
nlZlangin(o 22 5onsultar in(ormaci-n so#re el lengua'e y la localidad
Kescripci"n
string nl>langinfo > int item ?
La (unci-n nl>langinfo./ es usada para acceder a elementos individuales de las categor)as de
localidad; A di(erencia de localecon5./A /ue devuelve todos los elementosA nl>langinfo./ le permite
seleccionar cual/uier elemento espec)(ico;
i 6tem no es v*lidoA se devolver* FALSE;
6tem puede ser un valor entero del elemento o el nom#re de constante del elemento; La siguiente es
una lista de nom#res de constante para 6tem /ue pueden ser usados y su descripci-n; Puede /ue
algunas de <stas constantes no est<n de(inidas o no contengan valor alguno para ciertas localidades;
Tabla !. Constantes de nl>langinfo
Constante Kescripci"n
Constantes #e la CateEor\a
4C_T0ME
ABDA%Z>12:?
Nom#re
a#reviado del n2
<simo d)a de la
semana;
DA%Z>12:?
Nom#re
a#reviado del n2
<simo d)a de la
semana >DA%Z1
^ Domingo?;
ABMONZ>12
10?
Nom#re
a#reviado del
mes n2<simo del
aWo;
MONZ>1210?
Nom#re del mes
n2<simo del aWo;
AMZ,R
5adena del ante2
meridiano;
PMZ,R
5adena del post2
meridiano;
Constante Kescripci"n
DZ,ZFM,
5adena /ue
puede ser usada
como cadena de
(ormato para
strftime./A para
representar la
hora y (echa;
DZFM,
5adena /ue
puede ser usada
como cadena de
(ormato para
strftime./A para
representar la
(echa;
,ZFM,
5adena /ue
puede ser usada
como la cadena
de (ormato para
strftime./A para
representar la
hora;
,ZFM,ZAMP
M
5adena /ue
puede ser usada
como cadena de
(ormato para
strftime./ para
representar la
hora en (ormato
102horas con
anteDpost
meridiano;
+RA +ra alterna;
+RAZ%+AR
AWo en (ormato
de era alterna;
+RAZDZ,ZFM
,
Fecha y hora en
(ormato de era
alterna >la
cadena puede
ser usada en
strftime./?;
+RAZDZFM,
Fecha en
(ormato de era
alterna >la
cadena puede
ser usada en
strftime./?;
Constante Kescripci"n
+RAZ,ZFM,
&ora en (ormato
de era alterna >la
cadena puede
ser usada en
strftime./?;
Constantes #e la CateEor\a
4C_MONET,RB
.N,Z5@RRZ
%MBOL
)m#olo de
moneda
internacional;
5@RR+N5%Z
%MBOL
)m#olo de
moneda local;
5RN5%,R
+l mismo valor
de
5@RR+N5%Z
%MBOL;
MONZD+5.M
ALZPO.N,
5aracter de
punto decimal;
MONZ,&O@
ANDZ+P
eparador de
miles >grupos de
tres d)gitos?;
MONZGRO@P.
NG
5omo el
elemento
HgroupingH;
PO.,.$+Z.G
N
igno para
valores
positivos;
N+GA,.$+Z.
GN
igno para
valores
negativos;
.N,ZFRA5ZD.
G.,
D)gitos
(raccionarios
internacionales;
FRA5ZD.G.,
D)gitos
(raccionarios
locales;
PZ5ZPR+5+
D+
Devuelve 1 si
5@RR+N5%Z
%MBOL
precede un valor
positivo;
PZ+PZB%ZP
A5+
Devuelve 1 si
un espacio
separa a
5@RR+N5%Z
%MBOL de un
valor positivo;
Constante Kescripci"n
NZ5ZPR+5+
D+
Devuelve 1 si
5@RR+N5%Z
%MBOL
precede un valor
negativo;
NZ+PZB%ZP
A5+
Devuelve 1 si
un espacio
separa a
5@RR+N5%Z
%MBOL de un
valor negativo;
Constante Kescripci"n
PZ.GNZPON
NZ.GNZPON
Devuelv
e 3 si
unos
par<ntesi
s rodean
la
cantidad
y
currency
Zsym#ol;
Devuelv
e 1 si la
cadena
de signo
precede a
la
cantidad
y
currency
Zsym#ol;
Devuelv
e 0 si la
cadena
de signo
sigue a
continua
ci-n de
la
cantidad
y
currency
Zsym#ol;
Devuelv
e 7 si la
cadena
de signo
precede
inmediat
amente a
currency
Zsym#ol;
Devuelv
e 8 si la
cadena
de signo
sigue
inmediat
amente
despu<s
de
Constante Kescripci"n
Constantes #e la CateEor\a
4C_NUMER0C
D+5.MALZPO.
N,
5aracter de
punto decimal;
RAD.J5&AR
+l mismo valor
de
D+5.MALZPO.
N,;
,&O@ANDZ
+P
5aracter
separador para
los miles
>grupos de tres
d)gitos?;
,&O@+P
+l mismo valor
de
,&O@ANDZ
+P;
GRO@P.NG
Constantes #e la CateEor\a
4C_MESS,-ES
%++JPR
5adena de
eFpresi-n
regular para
coincidir con la
entrada Hs)H;
NO+JPR
5adena de
eFpresi-n
regular para
coincidir con la
entrada HnoH;
%+,R
5adena de
salida para Hs)H;
NO,R
5adena de
salida para HnoH;
Constantes #e la CateEor\a
4C_CTB+E
5OD++,
Devuelve una
cadena con el
nom#re de la
codi(icaci-n de
caracteres;
Nota- +sta (unci-n no est* implementada en plata(ormas LindoEs;
$ea tam#i<n setlocale./ y localecon5./;
nl*br
>P&P 7A P&P 8 A P&P 4?
nl0#r 22 .nserta saltos de linea &,ML antes de cada salto de l)nea
Kescripci"n
string nl*br > string cadena ?
Devuelve la ca#ena con H`#r D_H insertados antes de cada nueva l)nea;
Nota- A partir de P&P 8;3;4A nl*br./ respeta los est*ndares de J&,ML; ,odas las
versiones anteriores de P&P a la 8;3;4 devolver*n str6nE con H`#r_H antes de cada nueva
l)neaA en vez de H`#r D_H;
E'emplo !. Aplicando nl*br./
<?php
echo nlCbr3"esto es unaVnprueba"9;
?>
alidaC
esto es una<br />
prueba
$ea tam#i<n htmlspecialchars./A htmlentities./ y 3ord3rap./;
number>format
>P&P 7A P&P 8 A P&P 4?
num#erZ(ormat 22 Dar (ormato a un nBmero con los miles agrupados
Kescripci"n
string number>format > (loat numero PA int decimales PA string puntoZdecA string sepZmilesQQ ?
number>format./ devuelve una versi-n con (ormato de numero; +sta (unci-n acepta unoA dosA o
cuatro par*metros >no tres?C
i solo se entrega un par*metroA numero reci#ir* un (ormato sin decimalesA pero con una coma >=A=?
entre cada grupo de miles;
i se entregan dos par*metrosA numero reci#ir* un (ormato con la cantidad de #ec6males dadaA con
un punto >=;=? al (renteA y una coma >=A=? entre cada grupo de miles;
i todos los cuatro par*metros son dadosA numero reci#ir* un (ormato con la cantidad de #ec6males
dadaA punto_#ec en lugar de un punto >=;=? antes de los decimalesA y sep_m6les en lugar de una coma
>=A=? entre cada grupo de miles;
-lo el primer caracter de sep_m6les es usado; Por e'emploA si usa 9oo como sep_m6les so#re el
nBmero 1000A number>format./ devolver* 19000;
E'emplo !. E'emplo de number>format./
Por e'emploA la notaci-n (rancesa usa usualmente dos decimalesA coma >HAH? como separador decimalA
y espacio >H H? como separador de miles; +sto se puede lograr con esta l)neaC
<?php
$numero > 6C<1.5G;
// notacion inElesa 3predeterminada9
$numero%#ormato%inEles > number%#ormat3$numero9;
// 6,C<1
// notacion #rancesa
$numero%#ormato%#rances > number%#ormat3$numero, C, M,M, M M9;
// 6 C<1,5G
$numero > 6C<1.5GHJ;
// notacion inElesa sin separador de miles
$numero%#ormato%inEles > number%#ormat3$numero, C, M.M, MM9;
// 6C<1.5H
?>
$ea tam#i<nC sprintf./A printf./ y sscanf./;
ord
>P&P 7A P&P 8 A P&P 4?
ord 22 Devuelve el valor A5.. de un caracter
Kescripci"n
int ord > string cadena ?
Devuelve el valor A5.. del primer caracter de ca#ena; +sta (unci-n complementa a chr./;
E'emplo !. E'emplo de ord./
i# 3ord 3$cad9 >> 629 :
echo "El primer caracter de V$cad es un salto de lgnea.Vn";
;
$ea tam#i<n chr./;
parse>str
>P&P 7A P&P 8 A P&P 4?
parseZstr 22 Divide la cadena en varia#les
Kescripci"n
void parse>str > string cad ?
Divide ca# como si (uera la cadena de consulta enviada por un @RL y crea las varia#les en el
*m#ito actual;
E'emplo !. )sando parse>str./
$cad > "primero>=alor&seEundo)/>esto[#unciona&seEundo)/>otro";
parse%str3$cad9;
echo $primero; /W escribe "=alor" W/
echo $seEundo)2/; /W escribe "esto #unciona" W/
echo $seEundo)6/; /W escribe "otro" W/
print
>P&P 7A P&P 8A P&P 4 ?
print 22 +mite una cadena
Kescripci"n
print > string arg ?
+mite arE;
$ea tam#i<nC echo./A printf./A y flush./;
printf
>P&P 7A P&P 8 A P&P 4?
print( 22 .mprimir una cadena con (ormato
Kescripci"n
int printf > string (ormato PA miFed args PA miFed ;;;QQ ?
Produce una salida de acuerdo con el 9ormatoA el cual se descri#e en la documentaci-n de sprintf./;
Devuelve la longitud de la cadena impresa;
$ea tam#i<n print./A sprintf./A 5printf./A sscanf./A fscanf./A y flush./;
?uoted>printable>decode
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
/uotedZprinta#leZdecode 22 5onvierte una cadena con marcaci-n imprimi#le a una cadena de M #its
Kescripci"n
string ?uoted>printable>decode > string cad ?
+sta (unci-n devuelve una cadena #inaria de M #it /ue se corresponde con la cadena con marcaci-n
imprimi#le decodi(icada; +sta (unci-n es similar a imap>?print./A pero sin re/uerir /ue el m-dulo
.MAP (uncione;
?uotemeta
>P&P 7A P&P 8 A P&P 4?
/uotemeta 22 Ouote meta characters
Kescripci"n
string ?uotemeta > string cad ?
Devuelve una versi-n de la cadena con una #arra invertida >Q? antes de cada caracter de este
con'untoC
. VV [ W ? ) c / 3 $ 9
$ea tam#i<n addslashes./A htmlentities./A htmlspecialchars./A nl*br./A y stripslashes./;
rtrim
>P&P 7A P&P 8 A P&P 4?
rtrim 22 +limina espacios en #lanco al (inal de la cadena;
Kescripci"n
string rtrim > string cad ?
Devuelve la cadena argumento sin espacios en #lanco ni saltos de l)nea al (inal; +s un alias para
chop./;
E'emplo !. E'emplo de rtrim./
$recortada > rtrim 3$linea9;
$ea tam#i<n trim./A ltrim./;
setlocale
>P&P 7A P&P 8 A P&P 4?
setlocale 22 Fi'a la in(ormaci-n de localidad
Kescripci"n
string setlocale > string categoriaA string localidad ?
cateEor6a es una cadena /ue especi(ica la categor)a de las (unciones a(ectadas por el a'uste de
localidadC
L5ZALL para todas las (unciones
L5Z5OLLA,+ para la comparaci-n de cadenas 2 aBn no inclu)da en el P&P
L5Z5,%P+ para la conversi-n y clasi(icaci-n de caracteresA como por e'emplo strtoupper./
L5ZMON+,AR% para localeconv>? 2 aBn no inclu)da en el P&P
L5ZN@M+R.5 para el separador decimal
L5Z,.M+ para el (ormato de (echa y hora con strftime./
i local6#a# es la cadena vac)a **A los nom#res de localidad se (i'ar*n a partir de las varia#les de
entorno con los mismos nom#res de las categor)as anterioresA o desde =LANG=;
i la localidad es cero o *0*A el a'uste de localidad no se ve a(ectado y s-lo se devuelve el a'uste
actual;
setlocale devuelve la nueva localidadA o FALSE si la (uncionalidad de localizaci-n no est*
disponi#le en la plata(ormaA la localidad especi(icada no eFiste o el nom#re de categor)a no es
v*lido; @n nom#re de categor)a no v*lido tam#i<n produce un mensa'e de aviso;
sha!>file
>P&P 8 _^ 8;7;3A P&P 4?
sha1Z(ile 22 5alcular el resumen criptogr*(ico sha1 de un archivo
Kescripci"n
string sha!>file > string nom#reZarchivo PA #ool salidaZpuraQ ?
5alcula el resumen criptogr*(ico sha1 de nom1re_arch6o usando el Algoritmo de &ash eguro @
1A y devuelve ese resumen; +l resumen criptogr*(ico es un nBmero heFadecimal de 83 caracteres; +n
caso de (alloA se devuelve FALSE; i el par*metro opcional sal6#a_pura es de(inido a TRUEA
entonces el resumen sha1 es devuelto en su lugar en un (ormato #inario puroA con una longitud de
03;
Nota- +l par*metro opcional sal6#a_pura (ue aWadido en P&P 4;3;3 y tiene un valor
predeterminado de FALSE;
$ea tam#i<n sha!./A crc7*./A y md9>file./
sha!
>P&P 8 _^ 8;7;3A P&P 4?
sha1 22 5alcular el resumen criptogr*(ico sha1 de una cadena
Kescripci"n
string sha! > string cadena PA #ool salidaZpuraQ ?
5alcula el resumen criptogr*(ico sha1 de ca#ena usando el Algoritmo de &ash eguro @ 1A y
devuelve ese resumen; +l resumen criptogr*(ico es un nBmero heFadecimal de 83 caracteres; i el
par*metro opcional sal6#a_pura es de(inido a TRUEA entonces el resumen sha1 es devuelto en su
lugar en un (ormato #inario puroA con una longitud de 03;
Nota- +l par*metro opcional sal6#a_pura (ue aWadido en P&P 4;3;3 y tiene un valor
predeterminado de FALSE
E'emplo !. )n e'emplo de sha!./
<?php
$cadena > Mman0anaM;
i# 3sha63$cadena9 >>> MGccHGbdd#CKeK<1C5Je<2#b#<26adJecJKcbHccGM9 :
echo "&iQuest;Nuisiera una man0ana =erde o roja?";
exit;
;
?>
$ea tam#i<n sha!>file./A crc7*./A y md9./
similar>te+t
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
similarZteFt 22 5alcula la similitud entre dos cadenas
Kescripci"n
int similar>te+t > string primeraA string segunda PA dou#le porcenta'eQ ?
+sta (unci-n calcula la similitud entre dos cadenas segBn se descri#e en Oliver P1997Q; N-tese /ue
esta implementaci-n no utiliza una pila como en el pseudo2c-digo de OliverA sino llamadas
recursivas /ue pueden o no acelerar el proceso completo; N-tese tam#i<n /ue la comple'idad de este
algoritmo es O>NVV7?A donde N es la longitud de la cadena m*s larga;
Pasando una re(erencia como tercer argumentoA similar>te+t./ calcular* para usted la similitud
como porcenta'e; Devuelve el nBmero de caracteres coincidentes en am#as cadenas;
sounde+
>P&P 7A P&P 8 A P&P 4?
soundeF 22 5alcula la clave soundeF de una cadena
Kescripci"n
string sounde+ > string cad ?
5alcula la clave soundeF de ca#;
Las claves soundeF tienen la propiedad de /ue las pala#ras /ue se pronuncian de (orma parecida
tienen la misma claveA de modo /ue se pueden usar para simpli(icar la #Bs/ueda en las #ases de
datos cuando se conoce la pronunciaci-n pero no la transcripci-n; +sta (unci-n soundeF devuelve
una cadena de 8 caracteres /ue comienza por una letra;
+sta (unci-n soundeF en particular es la descrita por Donald Snuth en =,he Art O( 5omputer
ProgrammingA vol; 7C orting And earching=A Addison2Lesley >19:7?A pp; 7912790;
E'emplo !. E'emplos de ,ounde+
soundex 3"Euler"9 >> soundex 3"Ellery"9 >> ME1G2M;
soundex 3"-auss"9 >> soundex 3"-hosh"9 >> M-C22M;
soundex 3"]nuth"9 >> soundex 3"]ant"9 >> MH16GM;
soundex 3"Oloyd"9 >> soundex 3"Oadd"9 >> MO<22M;
soundex 3"OuIasie8ic0"9 >> soundex 3"Oissajous"9 >> MOCCCM;
sprintf
>P&P 7A P&P 8 A P&P 4?
sprint( 22 Devuelve una cadena con (ormato
Kescripci"n
string sprintf > string (ormato PA miFed args PA miFed ;;;QQ ?
Devuelve una cadena producida de acuerdo con la cadena de (ormato 9ormato;
La cadena de (ormato se compone de cero o m*s directivasC caracteres ordinarios >eFcluyendo T?
/ue son copiados directamente en el resultadoA y unas espec696cac6ones #e coners6`nA cada una de
las cuales produce una #Bs/ueda por su propio par*metro; +sto se aplica tanto en sprintf./ como en
printf./;
5ada especi(icaci-n de conversi-n consiste de un signo de porcenta'e >T?A seguido por uno o m*s
de los siguientes elementosA en ordenC
1; @n 6n#6ca#or #e s6Eno opcional /ue o#liga a /ue se use un determinado signo >2 o R? en un
nBmero; De (orma predeterminadaA s-lo el signo 2 es usado en un nBmero si <ste es negativo;
+ste indicador o#liga a los nBmeros positivos a /ue tengan tam#i<n el signo R ad'untoA
comportamiento /ue se agreg- en P&P 8;7;3;
0; @n 6n#6ca#or #e relleno opcionalA /ue dice /u< caracter ser* usado para adaptar el resultado al
tamaWo de cadena apropiado; +ste puede ser un caracter de espacioA o un 0 >caracter cero?; +l
comportamiento predeterminado es rellenar con espacios; @n caracter de relleno alternativo
puede especi(icarse al colocar una comilla sencilla ><? al comienzo; $ea los e'emplos m*s
adelante;
7; @n 6n#6ca#or #e al6neam6ento opcional /ue dice si el resultado de#e alinearse a la iz/uierda o a
la derecha; +l comportamiento predeterminado es alinear a la derechaX un caracter = en este lugar
hace /ue la alineaci-n sea a la iz/uierda;
8; @n nBmero opcionalA un 6n#6ca#or #e ancho /ue dice cu*ntos caracteres >como m)nimo? de#e
producir la conversi-n;
4; @n 6n#6ca#or #e prec6s6`n opcional /ue dice cu*ntos d)gitos decimales de#en mostrarse para los
nBmeros de punto (lotante; 5uando se usa este indicador con una cadenaA actBa como un punto de
corteA indicando un l)mite m*Fimo de caracteres para la cadena;
K; @n 6n#6ca#or #e t6po /ue especi(ica el tipo #a'o el /ue de#en tratarse los datos del argumento;
Los posi#les tipos sonC
T 2 un caracter de porcenta'e literal; No re/uiere argumento;
1 2 el argumento es tratado como un enteroA presentado como un nBmero #inario;
c 2 el argumento es tratado como un enteroA y presentado como el caracter con ese valor A5..;
# 2 el argumento es tratado como un enteroA y presentado como un nBmero decimal >con signo?;
e 2 el argumento es tratado como notaci-n cient)(ica >p;e'; 1;0eR0?;
u 2 el argumento es tratado como un enteroA y presentado como un nBmero decimal sin signo;
9 2 el argumento es tratado como un (lotanteA y presentado como un nBmero de punto (lotante;
o 2 el argumento es tratado como un enteroA y presentado como un nBmero octal;
s 2 el argumento es tratado y presentado como una cadena;
8 2 el argumento es tratado como un entero y presentado como un nBmero heFadecimal >con
letras minBsculas?;
F 2 el argumento es tratado como un entero y presentado como un nBmero heFadecimal >con
letras mayBsculas?;
A partir de P&P 8;3;KA la cadena de (ormato soporta la numeraci-nDintercam#io de argumentos; &e
a/u) un e'emploC
E'emplo !. Intercambio de argumentos
<?php
$#ormato > "Hay \d monos en el \s";
print#3$#ormato, $num, $ubicacion9;
?>
+sto podr)a imprimirA =&ay 4 monos en el *r#ol=; Pero imagine /ue creamos una cadena de (ormato
en un archivo separadoA generalmente por /ue /ueremos implementar un mecanismo de
internacionalizaci-nA y re2escri#imos el c-digoC
E'emplo *. Intercambio de argumentos
<?php
$#ormato > "El \s contiene \d monos";
print#3$#ormato, $num, $ubicacion9;
?>
Ahora tenemos un pro#lema; +l orden de los recipientes en la cadena de (ormato no coincide con el
orden de los argumentos en el c-digo; Ouisi<ramos de'ar el c-digo tal como est*A y simplemente
indicar en la cadena de (ormato cu*les argumentos est*n siendo re(eridos por los recipientes;
+ntonces re2escri#ir)amos la cadena de (ormato de esta (ormaC
E'emplo 7. Intercambio de argumentos
<?php
$#ormato > "El \CV$s contiene \6V$d monos";
print#3$#ormato, $num, $ubicacion9;
?>
@n #ene(icio adicional de esto es /ue puede repetir los recipientes sin agregar m*s argumentos en el
c-digo; Por e'emploC
E'emplo 8. Intercambio de argumentos
<?php
$#ormato > "El \CV$s contiene \6V$d monos.
&e trata de un bonito \CV$s lleno con \6V$d monos.";
print#3$#ormato, $num, $ubicacion9;
?>
$ea tam#i<n printf./A sscanf./A fscanf./A 5sprintf./A y number>format./;
E'emplos
E'emplo 9. printf./- e'emplos 5arios
<?php
$n > 1<K56HJK;
$u > F1<K56HJK;
$c > G5; // el =alor ,&R44 G5 es M,M
// note el doble \\, esto imprime un caracter M\M literal
print#3"\\b > M\bMVn", $n9; // representacion binaria
print#3"\\c > M\cMVn", $c9; // imprime el caracter ascii, iEual Que la #uncion chr39
print#3"\\d > M\dMVn", $n9; // representacion de entero estandar
print#3"\\e > M\eMVn", $n9; // notacion cienti#ica
print#3"\\u > M\uMVn", $n9; // representacion entera sin siEno de un entero positi=o
print#3"\\u > M\uMVn", $u9; // representacion entera sin siEno de un entero neEati=o
print#3"\\# > M\#MVn", $n9; // representacion en punto #lotante
print#3"\\o > M\oMVn", $n9; // representacion octal
print#3"\\s > M\sMVn", $n9; // representacion de cadena
print#3"\\x > M\xMVn", $n9; // representacion hexadecimal 3minusculas9
print#3"\\X > M\XMVn", $n9; // representacion hexadecimal 3mayusculas9
print#3"\\[d > M\[dMVn", $n9; // indicador de siEno en un entero positi=o
print#3"\\[d > M\[dMVn", $u9; // indicador de siEno en un entero neEati=o
?>
La salida de este programa ser)aC
\b > M62622666626262266262626626M
\c > M,M
\d > M1<K56HJKM
\e > M1.<K56Je[HM
\u > M1<K56HJKM
\u > M1C5626552HM
\# > M1<K56HJK.222222M
\o > MC1H5C<C55M
\s > M1<K56HJKM
\x > MCKeaGadM
\X > MCKE,G,LM
\[d > M[1<K56HJKM
\[d > MF1<K56HJKM
E'emplo <. printf./- indicadores de cadena
<?php
$s > MmonoM;
$t > M=arios monosM;
print#3")\s/Vn", $s9; // salida de cadena estandar
print#3")\62s/Vn", $s9; // alineacion a derecha con espacios
print#3")\F62s/Vn", $s9; // alineacion a i0Quierda con espacios
print#3")\262s/Vn", $s9; // el relleno con ceros #unciona con cadenas tambien
print#3")\MU62s/Vn", $s9; // usar el caracter de relleno MUM
print#3")\62.62s/Vn", $t9; // alineacion a i0Quierda pero con un corte de 62 caracteres
?>
La salida de este programa ser)aC
)mono/
) mono/
)mono /
)222222mono/
)UUUUUUmono/
)=arios mon/
E'emplo =. sprintf./- enteros con relleno de ceros
<?php
$#echa%iso > sprint#3"\21dF\2CdF\2Cd", $anyo, $mes, $dia9;
?>
E'emplo N. sprintf./- formato de 5alores monetarios
<?php
$dinero6 > GJ.H5;
$dineroC > 51.<5;
$dinero > $dinero6 [ $dineroC;
// echo $dinero imprimiria "6C<.6";
$con%#ormato > sprint#3"\26.C#", $dinero9;
// echo $con%#ormato imprime "6C<.62"
?>
E'emplo O. sprintf./- notaci"n cientfica
<?php
$numero > <GC5C5C22;
echo sprint#3"\.<e", $numero9; // imprime <.G<e[J
?>
sscanf
>P&P 8 _^ 8;3;1A P&P 4?
sscan( 22 ,rocea la entrada desde una cadena segBn un (ormato dado
Kescripci"n
miFed sscanf > string cadA string (ormato PA string var1Q ?
La (unci-nsscanf./ es la (unci-n de entrada an*loga de printf./; sscanf./ lee del par*metro de
cadena ca# y lo interpreta segBn el 9ormato especi(icado; i s-lo se pasan dos par*metros a esta
(unci-nA los valores devueltos se har*n en una matriz;
E'emplo !. E'emplo de sscanf./
// obteniendo el nhmero de serie
$numserie > sscan#3"&./C<52226","&./\d"9;
// y la #echa de #abricaciin
$#echa > "26 Enero C222";
list3$dia, $mes, $anno9 > sscan#3$#echa,"\d \s \d"9;
echo "El objeto $numserie #ue #abricado el@ $annoF".substr3$mes,2,<9."F$diaVn";
i se pasan los par*metros opcionalesA la (unci-n devolver* el nBmero de valores asignados; Los
par*metros opcionales de#en ser pasados por re(erencia;
E'emplo *. E'emplo de sscanf./ ( usando parmetros opcionales
// obtener autor y Eenerar la #icha LocZooI
$autor > "C1VtOe8is Rarroll";
$n > sscan#3$autor,"\dVt\s \s", &$id, &$nombre, &$apell9;
echo "<autor id>M$idM>
<#irstname>$nombre</#irstname>
<surname>$apell</surname>
</author>Vn";
$ea tam#i<nC fscanf./A printf./A y sprintf./;
str>ireplace
>P&P 4?
strZireplace 22 $ersi-n insensi#le a mayBsculas y minBsculas de str>replace./;
Kescripci"n
miFed str>ireplace > miFed #us/uedaA miFed reemplazoA miFed asunto PA int iconteoQ ?
+sta (unci-n devuelve una cadena o una matriz con todas las ocurrencias de 1us@ue#a en asunto
>ignorando mayBsculas y minBsculas? sustituidas por el reemplaDo dado; i no necesita reglas de
reemplazo so(isticadasA usted de#er)aA por lo generalA usar esta (unci-n en lugar de eregi>replace./
o preg>replace./ con el modi(icador 6;
i asunto es una matrizA entonces las #Bs/uedas y reemplazos son realizados con cada entrada de
asuntoA y el valor devuelto es asimismo una matriz;
i 1us@ue#a y reemplaDo son matricesA entonces str>ireplace./ toma un valor de cada matriz y los
usa para realizar las #Bs/uedas y reemplazos so#re asunto; i reemplaDo tiene menos valores /ue
1us@ue#aA entonces se usa una cadena vac)a para el resto de valores de reemplazo; i 1us@ue#a es
una matriz y reemplaDo es una cadenaA entonces <sta cadena de reemplazo es usada para cada valor
de 1us@ue#a;
E'emplo !. E'emplo de str>ireplace./
<?php
$etiQueta%body > str%ireplace3"\body\", "blacI", "<body text>\Z?LP\>"9;
?>
+sta (unci-n es segura con material #inario;
Nota- A partir de P&P 4;3;3A el nBmero de aEuUas encontradas y reemplazadas ser*
devuelto en conteoA el cual es pasado por re(erencia; Antes de P&P 4;3;3A este par*metro
no se encuentra disponi#le;
$ea tam#i<nC str>replace./A ereg>replace./A preg>replace./A y strtr./;
str>pad
>P&P 8 _^ 8;3;1A P&P 4?
strZpad 22 Rellena una cadena con otra hasta una longitud dada
Kescripci"n
string str>pad > string entradaA int tamaZrelleno PA string cadZrelleno PA int tipoZrellenoQQ ?
+sta (unci-n rellena la cadena entra#a por la derechaA la iz/uierda o por am#os lados hasta el largo
indicado; i no se especi(ica el argumento opcional ca#_rellenoA entra#a es rellenada con espacios;
+n caso contrarioA ser* rellenada con los caracteres de ca#_relleno hasta el l)mite;
+l argumento opcional t6po_relleno puede valer ,RZPADZR.G&,A ,RZPADZL+F,A o
,RZPADZBO,&; i no se especi(icaA se asume /ue vale ,RZPADZR.G&,;
i el valor de tama_relleno es negativo o menor /ue la longitud de la cadena de entradaA no se
produce rellenado alguno;
E'emplo !. E'emplo de str>pad./
$entrada > ",lien";
print str%pad3$entrada, 629; // produce ",lien "
print str%pad3$entrada, 62, "F>", &*'%,L%OES*9; // produce "F>F>F,lien"
print str%pad3$entrada, 62, "%", &*'%,L%Z?*H9; // produce "%%,lien%%%"
str>repeat
>P&P 8 A P&P 4?
strZrepeat 22 Repite una cadena
Kescripci"n
string str>repeat > string cadZentradaA int veces ?
Devuelve la ca#_entra#a repetida eces; eces de#e ser mayor /ue 3;
E'emplo !. E'emplo de str>repeat./
echo str%repeat 3"F>", 629;
+sto mostrar* =2^2^2^2^2^2^2^2^2^2^=;
Nota- +sta (unci-n (ue aWadida en el P&P 8;3;
str>replace
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
strZreplace 22 ustitiye todas las apariciones de la agu'a en el pa'ar por la cadena
Kescripci"n
string str>replace > string agu'aA string cadA string pa'ar ?
+sta (unci-n sustituye todas las apariciones de la aEuUa en el paUar por la ca# dada; i no precisa
reglas especiales de sustituci-nA de#er* usar siempre esta (unci-n en lugar de ereg>replace./;
E'emplo !. E'emplo de str>replace./
$bodytaE > str%replace 3"\cuerpo\", "neEro", "<body text>\cuerpo\>"9;
+sta (unci-n tiene seguridad #inaria;
Nota- str>replace./ (ue aWadida en P&P 7;3;KA pero tuvo errores hasta el P&P 7;3;M;
$ea tam#i<n ereg>replace./ y strtr./;
str>rot!7
>P&P 8 _^ 8;0;3A P&P 4?
strZrot17 22 Realizar la trans(ormaci-n rot17 so#re una cadena
Kescripci"n
string str>rot!7 > string cadena ?
+sta (unci-n aplica la codi(icaci-n RO,17 so#re el argumento ca#ena y devuelve la cadena
resultante; La codi(icaci-n RO,17 simplemente desplaza cada letra en 17 posiciones en el al(a#etoA
mientras /ue de'a todos los caracteres no2al(a#<ticos intactos; La codi(icaci-n y la decodi(icaci-n se
realizan con la misma (unci-nA pasar una cadena codi(icada como argumento devolver* la versi-n
original;
E'emplo !. E'emplo de str>rot!7./
<?php
echo str%rot6<3MH 1.<.2M9; // R+R 1.<.2
?>
Nota- +l comportamiento de esta (unci-n era Wocado hasta P&P 8;7;3; AnteriormenteA la
ca#ena era tam#i<n modi(icadaA como si (uera pasada por re(erencia;
str>shuffle
>P&P 8 _^ 8;7;3A P&P 4?
strZshu((le 22 Reordena aleatoriamente una cadena
Kescripci"n
string str>shuffle > string cadena ?
str>shuffle./ #ara'a una cadena; +s creada una permutaci-n de todas las posi#les;
E'emplo !. E'emplo de str>shuffle./
<?php
$cadena > Mabcde#M;
$desordenada > str%shu##le3$cadena9;
// Esto imprime alEo como@ b#daec
echo $desordenada;
?>
$ea tam#i<n shuffle./ y rand./;
str>split
>P&P 4?
strZsplit 22 5onvertir una cadena en una matriz
Kescripci"n
array str>split > string cadena PA int longitudZseparacionQ ?
5onvierte una cadena en una matriz; i el par*metro opcional lonE6tu#_separac6on es especi(icadoA
la matriz devuelta estar* separada en pedazosA cada uno de longitud lonE6tu#_separac6onA de otro
modo cada trozo tendr* un caracter de longitud;
e devuelve FALSE si lonE6tu#_separac6on es menor /ue 1; i la longitud lonE6tu#_separac6on
eFcede la longitud de ca#enaA entonces la cadena completa es devuelta como el primer >y Bnico?
elemento de la matriz;
E'emplo !. E'emplos de uso de str>split./
<?php
$cadena > "Hello Sriend";
$matri06 > str%split3$cadena9;
$matri0C > str%split3$cadena, <9;
print%r3$matri069;
print%r3$matri0C9;
?>
La salida puede verse algo comoC
,rray
3
)2/ >> H
)6/ >> e
)C/ >> l
)</ >> l
)1/ >> o
)5/ >>
)G/ >> S
)H/ >> r
)J/ >> i
)K/ >> e
)62/ >> n
)66/ >> d
9
,rray
3
)2/ >> Hel
)6/ >> lo
)C/ >> Sri
)</ >> end
9
E'emplo *. E'emplos relacionados con str>split./
<?php
$cadena > "Hello Sriend";
echo $cadena:2;; // H
echo $cadena:J;; // i
// Rrea@ array3MHM,MeM,MlM,MlM,MoM,M M,MSM,MrM,MiM,MeM,MnM,MdM9
$matri06 > preE%split3M//M, $cadena, F6, 'E-%&O4*%.?%E"*P9;
?>
$ea tam#i<n chunB>split./A preg>split./A split./A count>chars./A str>3ord>count./A y (or;
str>3ord>count
>P&P 8 _^ 8;7;3A P&P 4?
strZEordZcount 22 Devolver in(ormaci-n so#re las pala#ras usadas en una cadena
Kescripci"n
miFed str>3ord>count > string cadena PA int (ormatoQ ?
5uenta el nBmero de pala#ras en ca#ena; i el 9ormato opcional no es especi(icadoA entonces el
valor devuelto ser* un nBmero /ue representa el nBmero de pala#ras encontradas; +n caso de /ue el
9ormato sea especi(icadoA el valor devuelto ser* una matrizA cuyo contenido depende del 9ormato;
Los valores posi#les para el 9ormato y las salidas resultantes son listadas a continuaci-n;
1 2 devuelve una matriz /ue contiene todas las pala#ras encontradas en la ca#ena;
0 2 devuelve una matriz asociativaA en donde la clave es la posici-n num<rica de la pala#ra
dentro de la ca#enaA y el valor es la pala#ra misma;
Para el prop-sito de esta (unci-nA Hpala#raH se de(ine como una cadena dependiente de la localidadA
/ue contiene caracteres al(a#<ticosA la cual puede tam#i<n contenerA pero no comenzar por los
caracteres =H= y =2=;
E'emplo !. E'emplo de uso de str>3ord>count./
<?php
$cadena > "Hola amiEo, se =e bien
el dia de hoy.";
$a > str%8ord%count3$cadena, 69;
$b > str%8ord%count3$cadena, C9;
$c > str%8ord%count3$cadena9;
print%r3$a9;
print%r3$b9;
echo $c;
?>
La salida puede verse algo asiC
,rray
3
)2/ >> Hola
)6/ >> amiEo
)C/ >> se
)</ >> =e
)1/ >> bien
)5/ >> el
)G/ >> dia
)H/ >> de
)J/ >> hoy
9
,rray
3
)2/ >> Hola
)5/ >> amiEo
)6C/ >> se
)65/ >> =e
)6J/ >> bien
)<1/ >> el
)<H/ >> dia
)16/ >> de
)11/ >> hoy
9
K
$ea tam#i<n e+plode./A preg>split./A split./A count>chars./A y substr>count./;
strcasecmp
>P&P 7_^ 7;3;0A P&P 8 A P&P 4?
strcasecmp 22 5omparaci-n de cadenas insensi#le a mayBsculas y minBsculas y segura en modo
#inario
Kescripci"n
int strcasecmp > string cad1A string cad0 ?
Devuelve ` 3 si ca#1 es menor /ue ca#2X _ 3 si ca#1 es mayor /ue ca#2A y 3 si son iguales;
E'emplo !. E'emplo de strcasecmp./
$=ar6 > "Hello";
$=arC > "hello";
i# 3!strcasecmp 3$=ar6, $=arC99 :
echo M$=ar6 es iEual a $=arC en una comparaciin sin tener en cuenta M
.Mmayhsculas o minhsculasM;
;
$ea tam#i<n ereg./A strcmp./A substr./A stristr./A y strstr./;
strchr
>P&P 7A P&P 8 A P&P 4?
strchr 22 +ncuentra la primera aparici-n de un caracter
Kescripci"n
string strchr > string pa'arA string agu'a ?
+sta (unci-n es un alias para strstr./A y es id<ntica en todo;
strcmp
>P&P 7A P&P 8 A P&P 4?
strcmp 22 5omparaci-n de cadenas con seguridad #inaria
Kescripci"n
int strcmp > string cad1A string cad0 ?
Devuelve ` 3 si ca#1 es menor /ue ca#2X _ 3 si ca#1 es mayor /ue ca#2A y 3 si son iguales;
N-tese /ue esta comparaci-n es sensi#le a mayBsculas y minBsculas;
$ea tam#i<n ereg./A strcasecmp./A substr./A stristr./A strncmp./A y strstr./;
strcoll
>P&P 8 _^ 8;3;4A P&P 4?
strcoll 22 5omparaci-n de cadenas #asada en la localidad
Kescripci"n
int strcoll > string cad1A string cad0 ?
Devuelve ` 3 si ca#1 es menor /ue ca#2X _ 3 si ca#1 es mayor /ue ca#2A y 3 si son Walentes; strcoll
./ usa la localidad actual para realizar las comparaciones; i la localidad actual es 5 o PO.JA esta
(unci-n es Walente a strcmp./;
Note /ue esta comparaci-n es sensi#le a mayBsculas y minBsculasA y a di(erencia de strcmp./A esta
(unci-n no es segura con material #inario;
Nota- strcoll./ (ue agregada en P&P 8;3;4A pero no estuvo ha#ilitada para Ein70 hasta
8;0;7;
$ea tam#i<n ereg./A strcmp./A strcasecmp./A substr./A stristr./A strncasecmp./A strncmp./A strstr
./A y setlocale./;
strcspn
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
strcspn 22 +ncuentra la longitud del elemento inicial /ue no coincide con la m*scara
Kescripci"n
int strcspn > string cad1A string cad0 ?
Devuelve la longitud del segmento inicial de ca#1 /ue no contiene ninguno de los caracteres de
ca#2;
$ea tam#i<n strspn./;
strip>tags
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
stripZtags 22 +limina marcas &,ML y P&P de una cadena
Kescripci"n
string strip>tags > string cad PA string eti/ZpermitidasQ ?
+sta (unci-n intenta eliminar todas las eti/uetas &,ML y P&P de la cadena dada; 5ausa error por
precauci-n en caso de eti/uetas incompletas o (alsas; @tiliza la misma m*/uina de estados para
eliminar las eti/uetas /ue la (unci-n fgetss./;
Puede usar el par*metro opcional para especi(icar las eti/uetas /ue no de#en eliminarse;
Nota- et6@_perm6t6#as (ue aWadido en P&P 7;3;17A P&P8B7;
stripcslashes
>P&P 8 A P&P 4?
stripcslashes 22 Desmarca la cadena marcada con addcslashes./
Kescripci"n
string stripcslashes > string cad ?
Devuelve una cadena con las #arras invertidas eliminadas; Reconoce las marcas tipo 5 QnA Qr ;;;A y la
representaci-n octal y heFadecimal;
Nota- AWadida en P&P8#72dev;
$ea tam#i<n addcslashes./;
stripos
>P&P 4?
stripos 22 +ncontrar la posici-n de la primera ocurrencia de una cadenaA insensi#le a mayBsculas y
minBsculas
Kescripci"n
int stripos > string pa'arA string agu'a PA int desplazamientoQ ?
Devuelve la posici-n num<rica de la primera ocurrencia de aEuUa en el paUar tipo string; A
di(erencia de strpos./A stripos./ es indi(erente a mayBsculas y minBsculas;
Note /ue la aEuUa puede ser una cadena de uno o m*s caracteres;
i aEuUa no se encuentraA stripos./ devolver* el valor boolean FALSE;
A5iso
+sta (unci-n puede devolver FALSEA pero tam#i<n puede devolver un valor no2#ooleano /ue ser*
evaluado FALSEA como por e'emplo 0 o ==; Por (avorA lea la secci-n Booleans para m*s
in(ormaci-n; @tilice el operador ^^^ para compro#ar el valor devuelto por esta (unci-n;
E'emplo !. E'emplos de stripos./
<?php
$encontradme > MaM;
$micadena6 > Mxy0M;
$micadenaC > M,ZRM;
$pos6 > stripos3$micadena6, $encontradme9;
$posC > stripos3$micadenaC, $encontradme9;
// .o, ciertamente MaM no esta en Mxy0M
i# 3$pos6 >>> #alse9 :
echo "Oa cadena M$encontradmeM no #ue encontrada en la cadena M$micadena6M";
;
// .ote nuestro uso de >>>. &implemente >> no #uncionaria como es de
// esperarse, ya Que la posicion de MaM es el caracter 2 3el primero9.
i# 3$posC !>> #alse9 :
echo "Encontramos M$encontradmeM en M$micadenaCM en la posicion $posC";
;
?>
i aEuUa no es una cadenaA es convertida a un entero y aplicada como el valor ordinal de un caracter;
+l par*metro opcional #esplaDam6ento le permite especi(icar el caracter en paUar a partir del /ue
desea empezar a #uscar; La posici-n devuelta sigue siendo relativa al comienzo de paUar;
Nota- +sta (unci-n es segura #inariamente;
$ea tam#i<n strpos./A strrpos./A strrchr./A substr./A stristr./A strstr./A strripos./ y str>ireplace./;
stripslashes
>P&P 7A P&P 8 A P&P 4?
stripslashes 22 Desmarca la cadena marcada con addslashes./
Kescripci"n
string stripslashes > string cad ?
Devuelve una cadena con las #arras invertidas eliminadas >Q< se convierte en <A etc;?; Las #arras
invertidas do#les se convierten en sencillas;
$ea tam#i<n addslashes./;
stristr
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
stristr 22 strstr./ sin tener en cuenta mayBsculas o minBsculas
Kescripci"n
string stristr > string pa'arA string agu'a ?
Devuelve todo el paUar desde la primera aparici-n de la aEuUaA siendo el paUar eFaminado sin tener
en cuenta mayBsculas o minBsculas;
i la aEuUa no se encuentraA devuelve FALSE;
i la aEuUa no es una cadenaA es convertida a entero y usada como c-digo de un car*cter A5..;
$ea tam#i<n strchr./A strrchr./A substr./A y ereg./;
strlen
>P&P 7A P&P 8 A P&P 4?
strlen 22 O#tiene la longitud de la cadena
Kescripci"n
int strlen > string cad ?
Devuelve la longitud de la ca#ena;
strnatcasecmp
>P&P 8 A P&P 4?
strnatcasecmp 22 5omparaci-n de cadenas insensi#le a mayBsculas y minBsculas usando un
algoritmo de =orden natural=
Kescripci"n
int strnatcasecmp > string cad1A string cad0 ?
+sta (unci-n implementa un algoritmo de comparaci-n /ue ordena las cadenas al(anum<ricas como
lo har)a un ser humano; +l comportamiento de esta (unci-n es similar a strnatcmp./A pero la
comparaci-n no es sensi#le a mayBsculas y minBsculas; Para m*s in(ormaci-nA vea la p*gina de
Martin Pool so#re 5omparaci-n de 5adenas en Orden Natural;
De (orma similar a otras (unciones de comparaci-n de cadenasA esta devuelve ` 3 si ca#1 es menor
/ue ca#2X _ 3 si ca#1 es mayor /ue ca#2A y 3 si son iguales;
$ea tam#i<n ereg./A strcasecmp./A substr./A stristr./A strcmp./A strncmp./A strnatcmp./A y strstr./;
strnatcmp
>P&P 8 A P&P 4?
strnatcmp 22 5ompara cadenas usando un algoritmo de =orden natural=
Kescripci"n
int strnatcmp > string cad1A string cad0 ?
+sta (unci-n implementa un algoritmo de comparaci-n /ue ordena las cadenas al(anum<ricas como
lo har)a un ser humanoA /ue es lo /ue se denomina =orden natural=; A continuaci-n se puede ver un
e'emplo de la di(erencia entre este algoritmo y los algoritmos de ordenaci-n de cadenas ha#ituales
en los ordenadores >utilizados en strcmp./?C
$matri06 > $matri0C > array 3"imE6C.pnE","imE62.pnE","imEC.pnE","imE6.pnE"9;
echo "Romparaciin de cadenas estendarVn";
usort3$matri06,"strcmp"9;
print%r3$matri069;
echo "VnRomparaciin de cadenas en orden naturalVn";
usort3$matri0C,"strnatcmp"9;
print%r3$matri0C9;
+l c-digo anterior generar* la siguiente salidaC
Romparaciin de cadenas estendar
,rray
3
)2/ >> imE6.pnE
)6/ >> imE62.pnE
)C/ >> imE6C.pnE
)</ >> imEC.pnE
9
Romparaciin de cadenas en orden natural
,rray
3
)2/ >> imE6.pnE
)6/ >> imEC.pnE
)C/ >> imE62.pnE
)</ >> imE6C.pnE
9
Para m*s in(ormaci-nA vea la p*gina de Martin Pool so#re 5omparaci-n de 5adenas en Orden
Natural;
De (orma similar a otras (unciones de comparaci-n de cadenasA esta devuelve ` 3 si ca#1 es menor
/ue ca#2X _ 3 si ca#1 es mayor /ue ca#2A y 3 si son iguales;
N-tese /ue esta comparaci-n es sensi#le a mayBsculas y minBsculas;
$ea tam#i<n ereg./A strcasecmp./A substr./A stristr./A strcmp./A strncmp./A strnatcasecmp./A y
strstr./;
strncasecmp
>P&P 8 _^ 8;3;0A P&P 4?
strncasecmp 22 5omparaci-n de los primeros n caracteres de cadenasA segura con material #inario e
insensi#le a mayBsculas y minBsculas
Kescripci"n
int strncasecmp > string cad1A string cad0A int longitud ?
+sta (unci-n es similar a strcasecmp./A con la di(erencia de /ue puede especi(icar el >l)mite superior
de? nBmero de caracteres >lonE6tu#? de cada cadena a ser usado en la comparaci-n;
Devuelve ` 3 si ca#1 es menor /ue ca#2X _ 3 si ca#1 es mayor /ue ca#2A y 3 si son Walentes;
$ea tam#i<n ereg./A strcasecmp./A strcmp./A substr./A stristr./A y strstr./;
strncmp
>P&P 8 A P&P 4?
strncmp 22 5omparaci-n de los n primeros caracteres de cadenasA con seguridad #inaria
Kescripci"n
int strncmp > string cad1A string cad0A int largo ?
+sta (unci-n es similar a strcmp./A con la di(erencia /ue se puede especi(icar el >l)mite superior del?
nBmero de caractares >larEo? de cada cadena /ue se usar*n en la comparaci-n; i alguna de las
cadenas es menor /ue el larEoA se usar* su longitud para la comparaci-n;
Devuelve ` 3 si ca#1 es menor /ue ca#2X _ 3 si ca#1 es mayor /ue ca#2A y 3 si son iguales;
N-tese /ue esta comparaci-n es sensi#le a mayBsculas y minBsculas;
$ea tam#i<n ereg./A strcasecmp./A substr./A stristr./A strcmp./A y strstr./;
strpbrB
>P&P 4?
strp#r" 22 Busca una cadena por cual/uiera de los elementos de un con'unto de caracteres
Kescripci"n
string strpbrB > string pa'arA string listaZcaracteres ?
strpbrB./ #usca la cadena paUar por una l6sta_caracteresA y devuelve una cadena /ue empieza desde
el caracter encontrado >o FALSE si no se encuentra?;
Nota- +l par*metro l6sta_caracteres es sensi#le a mayBsculas y minBsculas;
E'emplo !. E'emplo de strpbrB./
<?php
$texto > MEste es un texto &imple.M;
// esto imprime "e es un texto &imple." ya Que MeM coincide primero
echo strpbrI3$texto, MmeM9;
// esto imprime "&imple." ya Que los caracteres son sensibles a mayusculas/minusculas
echo strpbrI3$texto, M&M9;
?>
strpos
>P&P 7A P&P 8 A P&P 4?
strpos 22 +ncuentra la posici-n de la primera aparici-n de una cadena
Kescripci"n
int strpos > string pa'arA string agu'a PA int desplazamientoQ ?
Devuelve la posici-n num<rica de la primera aparici-n de la aEuUa en la cadena paUar; A di(erencia
de strrpos./A esta (unci-n puede tomar una cadena completa como aEuUa y se utilizar* en su
totalidad;
i la aEuUa no es hayadaA devuelve FALSE;
Nota- +s (*cil con(undir los valores de retorno para =caracter encontrado en la posici-n
3= y =caracter no encontrado=; A/u) se indica c-mo detectar la di(erenciaC
// en H 1.2b< y posteriores@
$pos > strpos 3$micadena, "b"9;
i# 3$pos >>> #alse9 : // nota@ tres siEnos iEual
// no encontrado ...
;
// en =ersiones anteriores a la 1.2b<@
$pos > strpos 3$micadena, "b"9;
i# 3is%strinE 3$pos9 && !$pos9 :
// no encontrado ...
;
i la aEuUa no es una cadenaA se convierte a entero y se aplica como el valor ordinal de un caracter;
+l par*metro opcional #esplaDam6ento le permite especi(icar a partir de /u< caracter del paUar
comenzar a #uscar; La posici-n devuelta es aBn relativa al comienzo de paUar;
$ea tam#i<n strrpos./A strrchr./A substr./A stristr./A y strstr./;
strrchr
>P&P 7A P&P 8 A P&P 4?
strrchr 22 +ncuentra la Bltima aparici-n de un caracter en una cadena
Kescripci"n
string strrchr > string pa'arA string agu'a ?
+sta (unci-n devuelve la porci-n del paUar /ue comienza en la Bltima aparici-n de la aEuUa y
continBa hasta el (inal del paUar;
Devuelve FALSE si la aEuUa no es hallada;
i la aEuUa contiene m*s de un caracterA s-lo se usar* el primero;
i la aEuUa no es una cadenaA se convierte a entero y se aplica como el valor ordinal de un caracter;
E'emplo !. E'emplo de strrchr./
// obtener el hltimo directorio de $,*H
$dir > substr 3strrchr 3$,*H, "@"9, 69;
// obtener todo tras el hltimo salto de lgnea
$texto > "Oine 6VnOine CVnOine <";
$apell > substr 3strrchr 3$texto, 629, 6 9;
$ea tam#i<n substr./A stristr./A y strstr./;
strre5
>P&P 7A P&P 8 A P&P 4?
strrev 22 .nvierte una cadena
Kescripci"n
string strre5 > string cadena ?
Devuele la ca#ena invertida;
strripos
>P&P 4?
strripos 22 +ncontrar la posici-n de la Bltima ocurrencia de una cadena en otraA insensi#le a
mayBsculas y minBsculas
Kescripci"n
int strripos > string pa'arA string agu'a PA int desplazamientoQ ?
Devuelve la posici-n num<rica de la Bltima ocurrencia de aEuUa en la cadena paUar; A di(erencia de
strrpos./A strripos./ es indi(erente a mayBsculas y minBsculas; ,am#i<n note /ue las posiciones de
una cadena comienzan por 3A y no 1;
Note /ue la aEuUa puede ser una cadena de uno o m*s caracteres;
i la aEuUa no es encontradaA se devuelve FALSE;
A5iso
+sta (unci-n puede devolver FALSEA pero tam#i<n puede devolver un valor no2#ooleano /ue ser*
evaluado FALSEA como por e'emplo 0 o ==; Por (avorA lea la secci-n Booleans para m*s
in(ormaci-n; @tilice el operador ^^^ para compro#ar el valor devuelto por esta (unci-n;
E'emplo !. )n e'emplo simple de strripos./
<?php
$pajar > MababcdM;
$aEuja > MaZM;
$pos > strripos3$pajar, $aEuja9;
i# 3$pos >>> #alse9 :
echo "Oo siento, no encontramos 3$aEuja9 en 3$pajar9";
; else :
echo "&iexcl;Selicitaciones!Vn";
echo "Encontramos la &uacute;ltima ocurrencia de 3$aEuja9 en 3$pajar9 en " .
"la posici&oacute;n 3$pos9";
;
?>
Produce la salidaC
&iexcl;Selicitaciones!
Encontramos la &uacute;ltima ocurrencia de 3aZ9 en 3ababcd9 en la posici&oacute;n 3C9
+l #esplaDam6ento puede ser especi(icado para comenzar la #Bs/ueda en un nBmero ar#itrario de
caracteres dentro de la cadena; Los valores negativos detendr*n la #Bs/ueda en un punto ar#itrario
anterior al (inal de la cadena;
$ea tam#i<n strrpos./A strrchr./A substr./A stripos./ y stristr./;
strrpos
>P&P 7A P&P 8 A P&P 4?
strrpos 22 +ncuentra la posici-n de la Bltima aparici-n de un caracter en una cadena
Kescripci"n
int strrpos > string pa'arA char agu'a ?
Devuele la posici-n num<rica de la Bltima aparici-n de la aEuUa en el paUar; N-tese /ue la agu'a en
este caso s-lo puede ser un caracter Bnico; i se pasa una cadena como agu'aA s-lo se utilizar* el
primer caracter de la misma;
i la aEuUa no es hayadaA devuelve FALSE;
i la aEuUa no es una cadenaA se convierte a entero y se aplica como el valor ordinal de un caracter;
$ea tam#i<n strpos./A strrchr./A substr./A stristr./A y strstr./;
strspn
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
strspn 22 +ncuentra la longitud del segmento inicial /ue coincide con la m*scara
Kescripci"n
int strspn > string cad1A string cad0 ?
Devuelve la longitud del segmento inicial de ca#1 /ue consiste por entero en caracteres contenidos
en ca#2;
strspn 3"1C es la respuesta. qRuel es la preEunta ...?", "6C<15GHJK2"9;
devolver* 0 como resultado;
$ea tam#i<n strcspn./;
strstr
>P&P 7A P&P 8 A P&P 4?
strstr 22 +ncuentra la primera aparici-n de una cadena
Kescripci"n
string strstr > string pa'arA string agu'a ?
Devuelve todo el paUar desde la primera aparici-n de la aEuUa hasta el (inal;
i la aEuUa no es hayadaA devuelve FALSE;
i la aEuUa no es una cadenaA se convierte a entero y se aplica como el valor ordinal de un caracter;
Nota- N-tese /ue esta (unci-n es sensi#le a mayBsculas y minBsculas; Para #Bs/uedas
no sensi#lesA utilice stristr./;
E'emplo !. E'emplo de strstr./
$email > MsterlinE^desiEnmultimedia.comM;
$dominio > strstr 3$email, M^M9;
print $dominio; // imprime ^desiEnmultimedia.com
$ea tam#i<n stristr./A strrchr./A substr./A y ereg./;
strtoB
>P&P 7A P&P 8 A P&P 4?
strto" 22 Divide una cadena en elementos
Kescripci"n
string strtoB > string arg1A string arg0 ?
strtoB./ se usa para dividir en elementos una cadena; +s decirA /ue si tiene una cadena como =+sta
es una cadena de e'emplo= podr)a dividirla en pala#ras individuales utilizando el espacio como
divisor;
E'emplo !. E'emplo de strtoB./
$cadena > "Esta es una cadena de ejemplo";
$toI > strtoI 3$cadena," "9;
8hile 3$toI9 :
echo "alabra>$toI<br>";
$toI > strtoI 3" "9;
;
N-tese /ue s-lo la primera llamada a strto" utiliza el argumento cadena; 5ada llamada su#siguiente
necesita s-lo el divisor a utilizarA puesto /ue ella guarda la posici-n actual en la cadena; Para
comenzar de nuevo o para dividir otra cadenaA simplemente llame a strto" con el argumento de
cadena y se inicializar*; N-tese /ue puede poner divisores mBltiples como par*metro; La cadena
ser* dividida cuando alguno de los caracteres del argumento sea hallado;
Adem*s tenga cuidado si sus divisores valen =3=A pues evalBa como FALSE en las eFpresiones
condicionales;
$ea tam#i<n split./ y e+plode./;
strtolo3er
>P&P 7A P&P 8 A P&P 4?
strtoloEer 22 Pasa a minBsculas una cadena
Kescripci"n
string strtolo3er > string cad ?
Devuelve la ca#ena con todas sus letras en minBsculas;
N-tese /ue las letras son de(inidad por el locale actual; +sto /uiere decir /ueA por e'emploA en el
locale por de(ecto >=5=?A los caracteres como la cpvw} no ser*n convertidos;
E'emplo !. E'emplo de strtolo3er./
$cad > ""arga *enga +n Rorderito al Que N+E'r, "ucho";
$cad > strtolo8er3$cad9;
print $cad; U (isuali0a marga tenga un corderito al Que Querra mucho
$ea tam#i<n strtoupper./ y ucfirst./;
strtoupper
>P&P 7A P&P 8 A P&P 4?
strtoupper 22 Pasa a mayBsculas una cadena
Kescripci"n
string strtoupper > string cadena ?
Devuelve la ca#ena con todas sus letras en mayBsculas;
N-tese /ue las letras son de(inidad por el locale actual; +sto /uiere decir /ueA por e'emploA en el
locale por de(ecto >=5=?A los caracteres como la W no ser*n convertidos;
E'emplo !. E'emplo de strtoupper./
$cad > ""arga *enga +n Rorderito al Que N+E'r, "ucho";
$cad > strtoupper 3$cad9;
print $cad; U (isuai0a ",'g, *E.g, +. R?'LE'4*? ,O N+E N+E'r, "+RH?
$ea tam#i<n strtolo3er./ and ucfirst./;
strtr
>P&P 7A P&P 8 A P&P 4?
strtr 22 ,raduce ciertos caracteres
Kescripci"n
string strtr > string cadA string desdeA string hasta ?
+sta (unci-n tra#a'a so#re ca#A traduciendo todas las apariciones de cada caracter en #es#e por el
caracter correspondiente en hasta y devolviendo el resultado;
i #es#e y hasta son de distinta longitudA los caracteres eFtra en la m*s larga son ignorados;
E'emplo !. E'emplo de strtr./
$addr > strtr3$addr, "_`ab_`as_`ap", "aao"9;
strtr./ puede llamarso s-lo con dos argumentos; i se llama de esta maneraA se comporta de otro
modoC #es#e de#e ser entonces una matriz /ue contenga pares cadena 2_ cadena /ue ser*n
sustitu)dos en la cadena (uente; strtr./ siempre #uscar* la coincidencia m*s larga primero y VNOV
intentar* sustituir nada en lo /ue haya tra#a'ado ya;
+'emplosC
$trad > array 3"hola" >> "hey", "hey" >> "hola"9;
echo strtr3"hey a todos, dije hola", $trad9 . "Vn";
Mostrar*C =hola a todosA di'e hey=A
Nota- +sta caracter)stica >0 argumentos? (ue aWadida en el P&P 8;3
$ea tam#i<n ereg>replace./;
substr>compare
>P&P 4?
su#strZcompare 22 5omparaci-n de 0 cadenasA segura con material #inarioA opcionalmente
insensi#le a mayBsculas y minBsculasA a partir de un desplazamientoA y hasta un nBmero l)mite de
caracteres
Kescripci"n
int substr>compare > string cadenaZprincipalA string cadenaA int desplazamiento PA int longitud PA
#ool insensi#ilidadZmayusculasQQ ?
substr>compare./ compara ca#ena_pr6nc6pal desde la posici-n #esplaDam6ento con ca#ena hasta
tantos caracteres como el valor de lonE6tu#;
Devuelve ` 3 si ca#ena_pr6nc6pal desde la posici-n #esplaDam6ento es menor /ue ca#enaA _ 3 si es
mayor /ue ca#enaA y 3 si son iguales; i lonE6tu# es igual o mayor /ue la longitud de
ca#ena_pr6nc6pal y lonE6tu# se de(ineA substr>compare./ imprime una advertencia y devuelve
FALSE;
i 6nsens616l6#a#_ma?usculas es TRUEA la comparaci-n no distingue entre mayBsculas y
minBsculas;
E'emplo !. )n e'emplo de substr>compare./
<?php
echo substr%compare3"abcde", "bc", 6, C9; // 2
echo substr%compare3"abcde", "bcE", 6, C9; // 2
echo substr%compare3"abcde", "ZR", 6, C, true9; // 2
echo substr%compare3"abcde", "bc", 6, <9; // 6
echo substr%compare3"abcde", "cd", 6, C9; // F6
echo substr%compare3"abcde", "abc", 5, 69; // ad=ertencia
?>
substr>count
>P&P 8 A P&P 4?
su#strZcount 22 5uenta el nBmero de apariciones de la su#cadena
Kescripci"n
int substr>count > string pa'arA string agu'a ?
substr>count./ devuelve el nBmero de veces /ue la su#cadena aEuUa se encuentra en la cadena
paUar;
E'emplo !. E'emplo de substr>count./
print substr%count3"*his is a test", "is"9; // prints out C
substr>replace
>P&P 8 A P&P 4?
su#strZreplace 22 ustituye teFto en una parte de una cadena
Kescripci"n
string substr>replace > string cadenaA string sustitutoA int comienzo PA int largoQ ?
substr>replace./ sustituye la parte de ca#ena delimitada por los par*metros com6enDo y
>opcionalmente? larEo por la cadena dada en sust6tuto; e devuelve el resultado;
i com6enDo es positivoA la sustituci-n comenzar* en dicha posici-n dentro de la ca#ena;
i com6enDo es negativoA la sustituci-n comenzar* en dicha posici-n pero contando desde el (inal de
ca#ena;
i se especi(ica el larEo y es positivoA representa el largo de la porci-n de ca#ena a sustituir; i es
negativoA representa el nBmero de caracteres desde el (inal de ca#ena en los /ue de'ar de sustituir; i
no se especi(icaA valdr* por de(ecto strlen>ca#ena?X es decirA /ue aca#ar* la sustituci-n al (inal de
ca#ena;
E'emplo !. E'emplo de substr>replace./
<?php
$=ar > M,ZRLES-H@/".'N'/M;
echo "?riEinal@ $=ar<hr>Vn";
/W Estos dos ejemplos sustituyen toda $=ar por MbobM. W/
echo substr%replace 3$=ar, MbobM, 29 . "<br>Vn";
echo substr%replace 3$=ar, MbobM, 2, strlen 3$=ar99 . "<br>Vn";
/W 4nserta MbobM justo al inicio de $=ar. W/
echo substr%replace 3$=ar, MbobM, 2, 29 . "<br>Vn";
/W Oos dos siEuientes cambian M".'N'M en $=ar por MbobM. W/
echo substr%replace 3$=ar, MbobM, 62, F69 . "<br>Vn";
echo substr%replace 3$=ar, MbobM, FH, F69 . "<br>Vn";
/W Zorrar M".'N'M de $=ar. W/
echo substr%replace 3$=ar, MM, 62, F69 . "<br>Vn";
?>
$ea tam#i<n str>replace./ y substr./;
Nota- substr>replace./ (ue aWadida en el P&P 8;3;
substr
>P&P 7A P&P 8 A P&P 4?
su#str 22 Devuelve parte de una cadena
Kescripci"n
string substr > string cadenaA int comienzo PA int largoQ ?
su#str devuelve la porci-n de ca#ena especi(icada por los par*metros com6enDo y larEo;
i com6enDo es positivoA la cadena devuelta comenzar* en dicho caracter de ca#ena;
+'emplosC
$resto > substr 3"abcde#", 69; // de=uel=e "bcde#"
$resto > substr 3"abcde#", 6, <9; // de=uel=e "bcd"
i com6enDo es negativoA la cadena devuelta comenzar* en dicha posici-n desde el (inal de ca#ena;
+'emplosC
$resto > substr 3"abcde#", F69; // de=uel=e "#"
$resto > substr 3"abcde#", FC9; // de=uel=e "e#"
$resto > substr 3"abcde#", F<, 69; // de=uel=e "d"
i se especi(ica larEo y es positivoA la cadena devuelta terminar* larEo caracteres tras el com6enDo;
i esto resulta en una cadena con longitud negativa >por/ue el comienzo est* pasado el (inal de la
cadena?A la cadena devuelta contendr* Bnicamente el caracter /ue haya en com6enDo;
i se especi(ica larEo y es negativoA la cadena devuelta terminar* a larEo caracteres desde el (inal de
ca#ena; i esto resulta en una cadena con longitud negativaA la cadena devuelta contendr*
Bnicamente el caracter /ue haya en com6enDo;
+FamplesC
$resto > substr 3"abcde#", 6, F69; // de=uel=e "bcde"
$ea tam#i<n strrchr./A substr>replace./A ereg./A y trim./;
trim
>P&P 7A P&P 8 A P&P 4?
trim 22 +limina espacios del principio y (inal de una cadena
Kescripci"n
string trim > string cad ?
+sta (unci-n elimina los espacios en #lanco del comienzo y del (inal de una cadena y devuelve el
resultado; Los caracteres de espacio /ue elimina realmente sonC =hn=A =hr=A =ht=A =hv=A =h3=A y el
espacio en s);
$ea tam#i<n chop./ y ltrim./;
ucfirst
>P&P 7A P&P 8 A P&P 4?
uc(irst 22 Pasar a mayBsculas el primer caracter de una cadena
Kescripci"n
string ucfirst > string cad ?
Pone en mayBsculas el primer car*cter de ca# si es al(a#<tico;
N-tese /ue Hal(a#<ticoH est* determinado por la localidad actual; Por e'emploA en la localidad por
de(ecto =5=A los caracteres como la a con di<resis >cpeu? no ser*n convertidos;
E'emplo !. E'emplo de ucfirst./
$texto > Msusanita tiene un ratin, un ratin chiQuitgn.M;
$texto > uc#irst 3$texto9; // $texto =ale ahora@ &usanita tiene un
// ratin, un ratin chiQuitgn.
$ea tam#i<n strtoupper./ y strtolo3er./
uc3ords
>P&P 7_^ 7;3;7A P&P 8 A P&P 4?
ucEords 22 Pone en mayBsculas el primer caracter de cada pala#ra de una cadena
Kescripci"n
string uc3ords > string cad ?
Pasa a mayBsculas la primera letra de cada pala#ra en ca# si dicho caracter es al(a#<tico;
E'emplo !. E'emplo de uc3ords./
$texto > "susanita tiene un ratin, un ratin chiQuitgn.";
$texto > uc8ords3$texto9; // $texto =ale ahora@ &usanita *iene +n
// 'atin, +n 'atin RhiQuitgn.
$ea tam#i<n strtoupper./A strtolo3er./ y ucfirst./;
5fprintf
>P&P 4?
v(print( 22 Lrite a (ormatted string to a stream
Kescription
int 5fprintf > resource handleA string (ormatA array args ?
Lrite a string produced according to 9ormat to the stream resource speci(ied #y han#le; 9ormat is
descri#ed in the documentation (or sprintf./;
Operates as fprintf./ #ut accepts an array o( argumentsA rather than a varia#le num#er o( arguments;
Returns the length o( the outputted string;
ee alsoC printf./A sprintf./A sscanf./A fscanf./A 5sprintf./A and number>format./;
E+amples
E'emplo !. 5fprintf./- 6ero(padded integers
<?php
i# 3!3$#p > #open3Mdate.txtM, M8M999
return;
=#print#3$#p, "\21dF\2CdF\2Cd", array3$year, $month, $day99;
// 8ill 8rite the #ormatted 4&? date to date.txt
?>
5printf
>P&P 8 _^ 8;1;3A P&P 4?
vprint( 22 .mprimir una cadena con (ormato
Kescripci"n
int 5printf > string (ormatoA array args ?
Despliega los valores de una matriz como una cadena con (ormato de acuerdo al 9ormato >el cual es
descrito en la documentaci-n de sprintf./?;
Opera como printf./ pero acepta una matriz como sus argumentosA en lugar de un nBmero varia#le
de argumentos;
Devuelve la longitud de la cadena impresa;
$ea tam#i<n printf./A sprintf./A 5sprintf./
5sprintf
>P&P 8 _^ 8;1;3A P&P 4?
vsprint( 22 Devuelve una cadena con (ormato
Kescripci"n
string 5sprintf > string (ormatoA array args ?
Devuelve los valores de una matriz como una cadena con (ormato de acuerdo a 9ormato >el cual es
descrito en la documentaci-n de sprintf./?;
Opera como sprintf./ pero acepta una matriz de argumentosA en lugar de un nBmero varia#le de
argumentos;
$ea tam#i<n sprintf./ y 5printf./
3ord3rap
>P&P 8 _^ 8;3;0A P&P 4?
EordErap 22 5orta una cadena en un nBmero dado de caracteres usando un caracter de ruptura de
cadenas;
Kescripci"n
string 3ord3rap > string cad PA int ancho PA string rupturaQQ ?
5orta la cadena ca# en la columna especi(icada por el par*metro >opcional? ancho; La l)nea se
rompe utilizando el par*metro >opcional? ruptura;
3ord3rap./ autom*ticamente cortar* en la columna :4 y usar* HhnH >nueva l)nea? si no se
especi(ican el ancho o la ruptura;
E'emplo !. E'emplo de 3ord3rap./
$texto > "El =elo0 murciBlaEo hindh comga #eli0 cardillo y Ii8i.";
$textonue=o > 8ord8rap3 $texto, C2 9;
echo "$textonue=oVn";
+ste e'emplo mostrar)aC
El =elo0 murciBlaEo
hindh comga #eli0 cardillo y Ii8i.
$ea tam#i<n nl*br./;
CIIII. ,hocB3a5e ;lash functions
P&P o((ers the a#ility to create hoc"Eave Flash (iles via Paul &ae#erliHs li#sE( module; %ou can
doEnload li#sE( at (tpCDD(tp;sgi;comDsgiDgraphicsDgra(icaD(lashD; Once you have li#sE( all you need
to do is to con(igure ==76th=s79):D0R. Ehere D.R is a location containing the directories include
and li#; ,he include directory has to contain the sE(;h (ile and the li# directory has to contain the
li#sE(;a (ile; .( you unpac" the li#sE( distri#ution the tEo (iles Eill #e in one directory;
5onse/uently you Eill have to copy the (iles to the proper location manually;
Once youHve success(ully installed P&P Eith hoc"Eave Flash support you can then go a#out
creating hoc"Eave (iles (rom P&P; %ou Eould #e surprised at Ehat you can doA ta"e the (olloEing
codeC
E'emplo !. ,2; e+ample
<?php
s8#%open#ile 3"test.s8#", C5G, C5G, <2, 6, 6, 69;
s8#%orthoC 3F622, 622, F622, 6229;
s8#%de#ineline 36, FH2, 2, H2, 2, .C9;
s8#%de#inerect 31, G2, F62, H2, 2, 29;
s8#%de#inerect 35, FG2, 2, FH2, 62, 29;
s8#%addcolor 32, 2, 2, 29;
s8#%de#ine#ont 362, ""od"9;
s8#%#ontsi0e 359;
s8#%#ontslant 3629;
s8#%de#inetext 366, "*his be Slash 8it H!", 69;
s8#%pushmatrix 39;
s8#%translate 3F52, J2, 29;
s8#%placeobject 366, G29;
s8#%popmatrix 39;
#or 3$i > 2; $i < <2; $i[[9 :
$p > $i/3<2F69;
s8#%pushmatrix 39;
s8#%scale 36F3$pW.K9, 6, 69;
s8#%rotate 3G2W$p, M0M9;
s8#%translate 3C2[C2W$p, $p/6.5, 29;
s8#%rotate 3CH2W$p, M0M9;
s8#%addcolor 3$p, 2, $p/6.C, F$p9;
s8#%placeobject 36, 529;
s8#%placeobject 31, 529;
s8#%placeobject 35, 529;
s8#%popmatrix 39;
s8#%sho8#rame 39;
;
#or 3$i > 2; $i < <2; $i[[9 :
s8#%remo=eobject 3529;
i# 33$i\19 >> 29 :
s8#%sho8#rame 39;
;
;
s8#%startdoaction 39;
s8#%actionstop 39;
s8#%enddoaction 39;
s8#%close#ile 39;
?>
Nota- LF support Eas added in P&P8 R50;
Tabla de contenidos
sE(Zactiongeturl 22 Get a @RL (rom a hoc"Eave Flash movie
sE(Zactiongoto(rame 22 Play a (rame and then stop
sE(Zactiongotola#el 22 Display a (rame Eith the speci(ied la#el
sE(ZactionneFt(rame 22 Go (oEard one (rame
sE(Zactionplay 22 tart playing the (lash movie (rom the current (rame
sE(Zactionprev(rame 22 Go #ac"Eards one (rame
sE(Zactionsettarget 22 et the conteFt (or actions
sE(Zactionstop 22 top playing the (lash movie at the current (rame
sE(Zactiontoggle/uality 22 ,oggle #etEeen loE and high /uality
sE(ZactionEait(or(rame 22 "ip actions i( a (rame has not #een loaded
sE(Zadd#uttonrecord 22 5ontrols locationA appearance and active area o( the current #utton
sE(Zaddcolor 22 et the glo#al add color to the rg#a value speci(ied
sE(Zclose(ile 22 5lose the current hoc"Eave Flash (ile
sE(Zde(ine#itmap 22 De(ine a #itmap
sE(Zde(ine(ont 22 De(ines a (ont
sE(Zde(ineline 22 De(ine a line
sE(Zde(inepoly 22 De(ine a polygon
sE(Zde(inerect 22 De(ine a rectangle
sE(Zde(ineteFt 22 De(ine a teFt string
sE(Zend#utton 22 +nd the de(inition o( the current #utton
sE(Zenddoaction 22 +nd the current action
sE(Zendshape 22 5ompletes the de(inition o( the current shape
sE(Zendsym#ol 22 +nd the de(inition o( a sym#ol
sE(Z(ontsize 22 5hange the (ont size
sE(Z(ontslant 22 et the (ont slant
sE(Z(onttrac"ing 22 et the current (ont trac"ing
sE(Zget#itmapin(o 22 Get in(ormation a#out a #itmap
sE(Zget(ontin(o 22 ,he height in piFels o( a capital A and a loEercase F
sE(Zget(rame 22 Get the (rame num#er o( the current (rame
sE(Zla#el(rame 22 La#el the current (rame
sE(Zloo"at 22 De(ine a vieEing trans(ormation
sE(Zmodi(yo#'ect 22 Modi(y an o#'ect
sE(Zmulcolor 22 ets the glo#al multiply color to the rg#a value speci(ied
sE(ZneFtid 22 Returns the neFt (ree o#'ect id
sE(Zoncondition 22 Descri#e a transition used to trigger an action list
sE(Zopen(ile 22 Open a neE hoc"Eave Flash (ile
sE(Zortho0 22 De(ines 0D orthographic mapping o( user coordinates onto the current vieEport
sE(Zortho 22 De(ines an orthographic mapping o( user coordinates onto the current vieEport
sE(Zperspective 22 De(ine a perspective pro'ection trans(ormation
sE(Zplaceo#'ect 22 Place an o#'ect onto the screen
sE(ZpolarvieE 22 De(ine the vieEerHs position Eith polar coordinates
sE(ZpopmatriF 22 Restore a previous trans(ormation matriF
sE(Zposround 22 +na#les or Disa#les the rounding o( the translation Ehen o#'ects are placed or
moved
sE(ZpushmatriF 22 Push the current trans(ormation matriF #ac" unto the stac"
sE(Zremoveo#'ect 22 Remove an o#'ect
sE(Zrotate 22 Rotate the current trans(ormation
sE(Zscale 22 cale the current trans(ormation
sE(Zset(ont 22 5hange the current (ont
sE(Zset(rame 22 Eitch to a speci(ied (rame
sE(Zshapearc 22 DraE a circular arc
sE(Zshapecurveto7 22 DraE a cu#ic #ezier curve
sE(Zshapecurveto 22 DraE a /uadratic #ezier curve #etEeen tEo points
sE(Zshape(ill#itmapclip 22 et current (ill mode to clipped #itmap
sE(Zshape(ill#itmaptile 22 et current (ill mode to tiled #itmap
sE(Zshape(illo(( 22 ,urns o(( (illing
sE(Zshape(illsolid 22 et the current (ill style to the speci(ied color
sE(Zshapelinesolid 22 et the current line style
sE(Zshapelineto 22 DraE a line
sE(Zshapemoveto 22 Move the current position
sE(ZshoE(rame 22 Display the current (rame
sE(Zstart#utton 22 tart the de(inition o( a #utton
sE(Zstartdoaction 22 tart a description o( an action list (or the current (rame
sE(Zstartshape 22 tart a compleF shape
sE(Zstartsym#ol 22 De(ine a sym#ol
sE(ZteFtEidth 22 Get the Eidth o( a string
sE(Ztranslate 22 ,ranslate the current trans(ormations
sE(ZvieEport 22 elect an area (or (uture draEing
s3f>actiongeturl
>P&P 8 ?
sE(Zactiongeturl 22 Get a @RL (rom a hoc"Eave Flash movie
Kescription
void s3f>actiongeturl > string urlA string target ?
,he s3f>actionFet)rl./ (unction gets the @RL speci(ied #y the parameter url Eith the target
tarEet;
s3f>actiongotoframe
>P&P 8 ?
sE(Zactiongoto(rame 22 Play a (rame and then stop
Kescription
void s3f>actiongotoframe > int (ramenum#er ?
,he s3f>actionFoto;rame./ (unction Eill go to the (rame speci(ied #y 9ramenum1erA play itA and
then stop;
s3f>actiongotolabel
>P&P 8 ?
sE(Zactiongotola#el 22 Display a (rame Eith the speci(ied la#el
Kescription
void s3f>actiongotolabel > string la#el ?
,he s3f>actionFoto:abel./ (unction displays the (rame Eith the la#el given #y the la1el parameter
and then stops;
s3f>actionne+tframe
>P&P 8 ?
sE(ZactionneFt(rame 22 Go (oEard one (rame
Kescription
void s3f>actionne+tframe > void ?
Go (oEard one (rame;
s3f>actionplay
>P&P 8 ?
sE(Zactionplay 22 tart playing the (lash movie (rom the current (rame
Kescription
void s3f>actionplay > void ?
tart playing the (lash movie (rom the current (rame;
s3f>actionpre5frame
>P&P 8 ?
sE(Zactionprev(rame 22 Go #ac"Eards one (rame
Kescription
void s3f>actionpre5frame > void ?
s3f>actionsettarget
>P&P 8 ?
sE(Zactionsettarget 22 et the conteFt (or actions
Kescription
void s3f>actionsettarget > string target ?
,he s3f>action,etTarget./ (unction sets the conteFt (or all actions; %ou can use this to control
other (lash movies that are currently playing;
s3f>actionstop
>P&P 8 ?
sE(Zactionstop 22 top playing the (lash movie at the current (rame
Kescription
void s3f>actionstop > void ?
top playing the (lash movie at the current (rame;
s3f>actiontoggle?uality
>P&P 8 ?
sE(Zactiontoggle/uality 22 ,oggle #etEeen loE and high /uality
Kescription
void s3f>actiontoggle?uality > void ?
,oggle the (lash movie #etEeen high and loE /uality;
s3f>action3aitforframe
>P&P 8 ?
sE(ZactionEait(or(rame 22 "ip actions i( a (rame has not #een loaded
Kescription
void s3f>action3aitforframe > int (ramenum#erA int s"ipcount ?
,he s3f>action2ait;or;rame./ (unction Eill chec" to see i( the (rameA speci(ied #y the
9ramenum1er parameter has #een loadedA i( not it Eill s"ip the num#er o( actions speci(ied #y the
s>6pcount parameter; ,his can #e use(ul (or =Loading;;;= type animations;
s3f>addbuttonrecord
>P&P 8 ?
sE(Zadd#uttonrecord 22 5ontrols locationA appearance and active area o( the current #utton
Kescription
void s3f>addbuttonrecord > int statesA int shapeidA int depth ?
,he s3f>addbuttonrecord./ (unction alloEs you to de(ine the speci(ics o( using a #utton; ,he (irst
parameterA statesA de(ines Ehat states the #utton can haveA these can #e any or all o( the (olloEing
constantsC B&it,estA BDoEnA BOver or B@p; ,he second parameterA the shape6# is the loo" o(
the #uttonA this is usually the o#'ect id o( the shape o( the #utton; ,he #epth parameter is the
placement o( the #utton in the current (rame;
E'emplo !. s3f>addbuttonrecord./ function e+ample
s8#%startZutton 3$objid, *PE%"E.+Z+**?.9;
s8#%addZutton'ecord 3Z&Lo8nTZ&?=er, $button4maEe4d, <129;
s8#%onRondition 3"enuEnter9;
s8#%action-et+rl 3"http@//888.desiEnmultimedia.com", "%le=el6"9;
s8#%onRondition 3"enuExit9;
s8#%action-et+rl 3"", "%le=el6"9;
s8#%endZutton 39;
s3f>addcolor
>P&P 8 ?
sE(Zaddcolor 22 et the glo#al add color to the rg#a value speci(ied
Kescription
void s3f>addcolor > (loat rA (loat gA (loat #A (loat a ?
,he s3f>addcolor./ (unction sets the glo#al add color to the rE1a color speci(ied; ,his color is then
used >implicitly? #y the s3f>placeob'ect./A s3f>modifyob'ect./ and the s3f>addbuttonrecord./
(unctions; ,he color o( the o#'ect Eill #e add #y the rE1a values Ehen the o#'ect is Eritten to the
screen;
Nota- ,he rE1a values can #e either positive or negative;
s3f>closefile
>P&P 8 ?
sE(Zclose(ile 22 5lose the current hoc"Eave Flash (ile
Kescription
void s3f>closefile > void ?
5lose a (ile that Eas opened #y the s3f>openfile./ (unction;
s3f>definebitmap
>P&P 8 ?
sE(Zde(ine#itmap 22 De(ine a #itmap
Kescription
void s3f>definebitmap > int o#'idA string imageZname ?
,he s3f>definebitmap./ (unction de(ines a #itmap given a G.FA !P+GA RGB or F. image; ,he
image Eill #e converted into a Flash !P+G or Flash color map (ormat;
s3f>definefont
>P&P 8 ?
sE(Zde(ine(ont 22 De(ines a (ont
Kescription
void s3f>definefont > int (ontidA string (ontname ?
,he s3f>definefont./ (unction de(ines a (ont given #y the 9ontname parameter and gives it the id
speci(ied #y the 9ont6# parameter; .t then sets the (ont given #y 9ontname to the current (ont;
s3f>defineline
>P&P 8 ?
sE(Zde(ineline 22 De(ine a line
Kescription
void s3f>defineline > int o#'idA (loat F1A (loat y1A (loat F0A (loat y0A (loat Eidth ?
,he s3f>defineline./ de(ines a line starting (rom the F coordinate given #y 81 and the y coordinate
given #y ?1 parameter; @p to the F coordinate given #y the 82 parameter and the y coordinate given
#y the ?2 parameter; .t Eill have a Eidth de(ined #y the 76#th parameter;
s3f>definepoly
>P&P 8 ?
sE(Zde(inepoly 22 De(ine a polygon
Kescription
void s3f>definepoly > int o#'idA array coordsA int npointsA (loat Eidth ?
,he s3f>definepoly./ (unction de(ines a polygon given an array o( FA y coordinates >the coordinates
are de(ined in the parameter coor#s?; ,he parameter npo6nts is the num#er o( overall points that are
contained in the array given #y coor#s; ,he 76#th is the Eidth o( the polygonHs #orderA i( set to 3;3
the polygon is (illed;
s3f>definerect
>P&P 8 ?
sE(Zde(inerect 22 De(ine a rectangle
Kescription
void s3f>definerect > int o#'idA (loat F1A (loat y1A (loat F0A (loat y0A (loat Eidth ?
,he s3f>definerect./ de(ines a rectangle Eith an upper le(t hand coordinate given #y the FA 81A and
the yA ?1; And a loEer right hand coordinate given #y the F coordinateA 82A and the y coordinateA ?2 ;
Lidth o( the rectangles #order is given #y the 76#th parameterA i( the Eidth is 3;3 then the rectangle
is (illed;
s3f>definete+t
>P&P 8 ?
sE(Zde(ineteFt 22 De(ine a teFt string
Kescription
void s3f>definete+t > int o#'idA string strA int docenter ?
De(ine a teFt string >the str parameter? using the current (ont and (ont size; ,he #ocenter is Ehere
the Eord is centeredA i( #ocenter is 1A then the Eord is centered in F;
s3f>endbutton
>P&P 8 ?
sE(Zend#utton 22 +nd the de(inition o( the current #utton
Kescription
void s3f>endbutton > void ?
,he s3f>end1utton./ (unction ends the de(inition o( the current #utton;
s3f>enddoaction
>P&P 8 ?
sE(Zenddoaction 22 +nd the current action
Kescription
void s3f>enddoaction > void ?
+nds the current action started #y the s3f>startdoaction./ (unction;
s3f>endshape
>P&P 8 ?
sE(Zendshape 22 5ompletes the de(inition o( the current shape
Kescription
void s3f>endshape > void ?
,he s3f>endshape./ completes the de(inition o( the current shape;
s3f>endsymbol
>P&P 8 ?
sE(Zendsym#ol 22 +nd the de(inition o( a sym#ol
Kescription
void s3f>endsymbol > void ?
,he s3f>endsymbol./ (unction ends the de(inition o( a sym#ol that Eas started #y the
s3f>startsymbol./ (unction;
s3f>fontsi6e
>P&P 8 ?
sE(Z(ontsize 22 5hange the (ont size
Kescription
void s3f>fontsi6e > (loat size ?
,he s3f>fontsi6e./ (unction changes the (ont size to the value given #y the s6De parameter;
s3f>fontslant
>P&P 8 ?
sE(Z(ontslant 22 et the (ont slant
Kescription
void s3f>fontslant > (loat slant ?
et the current (ont slant to the angle indicated #y the slant parameter; Positive values create a
(oEard slantA negative values create a negative slant;
s3f>fonttracBing
>P&P 8 ?
sE(Z(onttrac"ing 22 et the current (ont trac"ing
Kescription
void s3f>fonttracBing > (loat trac"ing ?
et the (ont trac"ing to the value speci(ied #y the trac>6nE parameter; ,his (unction is used to
increase the spacing #etEeen letters and teFtA positive values increase the space and negative values
decrease the space #etEeen letters;
s3f>getbitmapinfo
>P&P 8 ?
sE(Zget#itmapin(o 22 Get in(ormation a#out a #itmap
Kescription
array s3f>getbitmapinfo > int #itmapid ?
,he s3f>getbitmapinfo./ (unction returns an array o( in(ormation a#out a #itmap given #y the
16tmap6# parameter; ,he returned array has the (olloEing elementsC
=size= 2 ,he size in #ytes o( the #itmap;
=Eidth= 2 ,he Eidth in piFels o( the #itmap;
=height= 2 ,he height in piFels o( the #itmap;
s3f>getfontinfo
>P&P 8 ?
sE(Zget(ontin(o 22 ,he height in piFels o( a capital A and a loEercase F
Kescription
array s3f>getfontinfo > void ?
,he s3f>getfontinfo./ (unction returns an associative array Eith the (olloEing parametersC
Aheight 2 ,he height in piFels o( a capital A;
Fheight 2 ,he height in piFels o( a loEercase F;
s3f>getframe
>P&P 8 ?
sE(Zget(rame 22 Get the (rame num#er o( the current (rame
Kescription
int s3f>getframe > void ?
,he s3f>getframe./ (unction gets the num#er o( the current (rame;
s3f>labelframe
>P&P 8 ?
sE(Zla#el(rame 22 La#el the current (rame
Kescription
void s3f>labelframe > string name ?
La#el the current (rame Eith the name given #y the name parameter;
s3f>looBat
>P&P 8 ?
sE(Zloo"at 22 De(ine a vieEing trans(ormation
Kescription
void s3f>looBat > dou#le vieEZFA dou#le vieEZyA dou#le vieEZzA dou#le re(erenceZFA dou#le
re(erenceZyA dou#le re(erenceZzA dou#le tEist ?
,he s3f>looBat./ (unction de(ines a vieEing trans(ormation #y giving the vieEing position >the
parameters 6e7_8A 6e7_?A and 6e7_D? and the coordinates o( a re(erence point in the sceneA the
re(erence point is de(ined #y the re9erence_8A re9erence_? A and re9erence_D parameters; ,he t76st
controls the rotation along Eith vieEerHs z aFis;
s3f>modifyob'ect
>P&P 8 ?
sE(Zmodi(yo#'ect 22 Modi(y an o#'ect
Kescription
void s3f>modifyob'ect > int depthA int hoE ?
@pdates the position andDor color o( the o#'ect at the speci(ied depthA #epth; ,he parameter ho7
determines Ehat is updated; ho7 can either #e the constant MODZMA,R.J or MODZ5OLOR or it
can #e a com#ination o( #oth >MODZMA,R.JlMODZ5OLOR?;
MODZ5OLOR uses the current mulcolor >speci(ied #y the (unction s3f>mulcolor./? and addcolor
>speci(ied #y the (unction s3f>addcolor./? to color the o#'ect; MODZMA,R.J uses the current
matriF to position the o#'ect;
s3f>mulcolor
>P&P 8 ?
sE(Zmulcolor 22 ets the glo#al multiply color to the rg#a value speci(ied
Kescription
void s3f>mulcolor > (loat rA (loat gA (loat #A (loat a ?
,he s3f>mulcolor./ (unction sets the glo#al multiply color to the rE1a color speci(ied; ,his color is
then used >implicitly? #y the s3f>placeob'ect./A s3f>modifyob'ect./ and the
s3f>addbuttonrecord./ (unctions; ,he color o( the o#'ect Eill #e multiplied #y the rE1a values
Ehen the o#'ect is Eritten to the screen;
Nota- ,he rE1a values can #e either positive or negative;
s3f>ne+tid
>P&P 8 ?
sE(ZneFtid 22 Returns the neFt (ree o#'ect id
Kescription
int s3f>ne+tid > void ?
,he s3f>ne+tid./ (unction returns the neFt availa#le o#'ect id;
s3f>oncondition
>P&P 8 ?
sE(Zoncondition 22 Descri#e a transition used to trigger an action list
Kescription
void s3f>oncondition > int transition ?
,he s3f>onCondition./ (unction descri#es a transition that Eill trigger an action list; ,here are
several types o( possi#le transitionsA the (olloEing are (or #uttons de(ined as
,%P+ZM+N@B@,,ONC
.dletoOver@p
Over@pto.dle
Over@ptoOverDoEn
OverDoEntoOver@p
.dletoOverDoEn
OutDoEnto.dle
Menu+nter >.dletoOver@pl.dletoOverDoEn?
Menu+Fit >Over@pto.dlelOverDoEnto.dle?
For ,%P+ZP@&B@,,ON there are the (olloEing optionsC
.dletoOver@p
Over@pto.dle
Over@ptoOverDoEn
OverDoEntoOver@p
OverDoEntoOutDoEn
OutDoEntoOverDoEn
OutDoEnto.dle
Button+nter >.dletoOver@plOutDoEntoOverDoEn?
Button+Fit >Over@pto.dlelOverDoEntoOutDoEn?
s3f>openfile
>P&P 8 ?
sE(Zopen(ile 22 Open a neE hoc"Eave Flash (ile
Kescription
void s3f>openfile > string (ilenameA (loat EidthA (loat heightA (loat (ramerateA (loat rA (loat gA (loat
# ?
,he s3f>openfile./ (unction opens a neE (ile named 96lename Eith a Eidth o( 76#th and a height o(
he6Eht a (rame rate o( 9ramerate and #ac"ground Eith a red color o( r a green color o( E and a #lue
color o( 1;
,he s3f>openfile./ must #e the (irst (unction you callA otherEise your script Eill cause a seg(ault; .(
you Eant to send your output to the screen ma"e the (ilenameC =phpCDDstdout= >support (or this is in
8;3;1 and up?;
s3f>ortho*
>P&P 8 ?
sE(Zortho0 22 De(ines 0D orthographic mapping o( user coordinates onto the current vieEport
Kescription
void s3f>ortho* > dou#le FminA dou#le FmaFA dou#le yminA dou#le ymaF ?
,he s3f>ortho*./ (unction de(ines a tEo dimensional orthographic mapping o( user coordinates
onto the current vieEportA this de(aults to one to one mapping o( the area o( the Flash movie; .( a
perspective trans(ormation is desiredA the s3f>perspecti5e ./ (unction can #e used;
s3f>ortho
>P&P 8 _^ 8;3;1?
sE(Zortho 22 De(ines an orthographic mapping o( user coordinates onto the current vieEport
Kescription
void s3f>ortho > dou#le FminA dou#le FmaFA dou#le yminA dou#le ymaFA dou#le zminA dou#le
zmaF ?
,he s3f>ortho./ (uncion de(ines a orthographic mapping o( user coordinates onto the current
vieEport;
s3f>perspecti5e
>P&P 8 ?
sE(Zperspective 22 De(ine a perspective pro'ection trans(ormation
Kescription
void s3f>perspecti5e > dou#le (ovyA dou#le aspectA dou#le nearA dou#le (ar ?
,he s3f>perspecti5e./ (unction de(ines a perspective pro'ection trans(ormation; ,he 9o? parameter
is (ield2o(2vieE angle in the y direction; ,he aspect parameter should #e set to the aspect ratio o( the
vieEport that is #eing draEn onto; ,he near parameter is the near clipping plane and the 9ar
parameter is the (ar clipping plane;
Nota- $arious distortion arti(acts may appear Ehen per(orming a perspective pro'ectionA
this is #ecause Flash players only have a tEo dimensional matriF; ome are not to
pretty;
s3f>placeob'ect
>P&P 8 ?
sE(Zplaceo#'ect 22 Place an o#'ect onto the screen
Kescription
void s3f>placeob'ect > int o#'idA int depth ?
Places the o#'ect speci(ied #y o1U6# in the current (rame at a depth o( #epth; ,he o1U6# parameter
and the #epth must #e #etEeen 1 and K4474;
,his uses the current mulcolor >speci(ied #y s3f>mulcolor./? and the current addcolor >speci(ied #y
s3f>addcolor./? to color the o#'ect and it uses the current matriF to position the o#'ect;
Nota- Full RGBA colors are supported;
s3f>polar5ie3
>P&P 8 ?
sE(ZpolarvieE 22 De(ine the vieEerHs position Eith polar coordinates
Kescription
void s3f>polar5ie3 > dou#le distA dou#le azimuthA dou#le incidenceA dou#le tEist ?
,he s3f>polar5ie3./ (unction de(ines the vieEerHs position in polar coordinates; ,he #6st parameter
gives the distance #etEeen the vieEpoint to the Eorld space origin; ,he aD6muth parameter de(ines
the azimuthal angle in the FAy coordinate planeA measured in distance (rom the y aFis; ,he 6nc6#ence
parameter de(ines the angle o( incidence in the yAz planeA measured in distance (rom the z aFis; ,he
incidence angle is de(ined as the angle o( the vieEport relative to the z aFis; Finally the t76st
speci(ies the amount that the vieEpoint is to #e rotated a#out the line o( sight using the right hand
rule;
s3f>popmatri+
>P&P 8 ?
sE(ZpopmatriF 22 Restore a previous trans(ormation matriF
Kescription
void s3f>popmatri+ > void ?
,he s3f>popmatri+./ (unction pushes the current trans(ormation matriF #ac" onto the stac";
s3f>posround
>P&P 8 ?
sE(Zposround 22 +na#les or Disa#les the rounding o( the translation Ehen o#'ects are placed or
moved
Kescription
void s3f>posround > int round ?
,he s3f>posround./ (unction ena#les or disa#les the rounding o( the translation Ehen o#'ects are
placed or movedA there are times Ehen teFt #ecomes more reada#le #ecause rounding has #een
ena#led; ,he roun# is Ehether to ena#le rounding or notA i( set to the value o( 1A then rounding is
ena#ledA i( set to 3 then rounding is disa#led;
s3f>pushmatri+
>P&P 8 ?
sE(ZpushmatriF 22 Push the current trans(ormation matriF #ac" unto the stac"
Kescription
void s3f>pushmatri+ > void ?
,he s3f>pushmatri+./ (unction pushes the current trans(ormation matriF #ac" onto the stac";
s3f>remo5eob'ect
>P&P 8 ?
sE(Zremoveo#'ect 22 Remove an o#'ect
Kescription
void s3f>remo5eob'ect > int depth ?
Removes the o#'ect at the depth speci(ied #y #epth;
s3f>rotate
>P&P 8 ?
sE(Zrotate 22 Rotate the current trans(ormation
Kescription
void s3f>rotate > dou#le angleA string aFis ?
,he s3f>rotate./ rotates the current trans(ormation #y the angle given #y the anEle parameter
around the aFis given #y the a86s parameter; $alid values (or the aFis are HFH >the F aFis?A HyH >the y
aFis? or HzH >the z aFis?;
s3f>scale
>P&P 8 ?
sE(Zscale 22 cale the current trans(ormation
Kescription
void s3f>scale > dou#le FA dou#le yA dou#le z ?
,he s3f>scale./ scales the F coordinate o( the curve #y the value o( the 8 parameterA the y
coordinate o( the curve #y the value o( the ? parameterA and the z coordinate o( the curve #y the
value o( the D parameter;
s3f>setfont
>P&P 8 ?
sE(Zset(ont 22 5hange the current (ont
Kescription
void s3f>setfont > int (ontid ?
,he s3f>setfont./ sets the current (ont to the value given #y the 9ont6# parameter;
s3f>setframe
>P&P 8 ?
sE(Zset(rame 22 Eitch to a speci(ied (rame
Kescription
void s3f>setframe > int (ramenum#er ?
,he s3f>setframe./ changes the active (rame to the (rame speci(ied #y 9ramenum1er;
s3f>shapearc
>P&P 8 ?
sE(Zshapearc 22 DraE a circular arc
Kescription
void s3f>shapearc > (loat FA (loat yA (loat rA (loat ang1A (loat ang0 ?
,he s3f>shapeArc./ (unction draEs a circular arc (rom angle A given #y the anE1 parameter to
angle B given #y the anE2 parameter; ,he center o( the circle has an F coordinate given #y the 8
parameter and a y coordinate given #y the ?A the radius o( the circle is given #y the r parameter;
s3f>shapecur5eto7
>P&P 8 ?
sE(Zshapecurveto7 22 DraE a cu#ic #ezier curve
Kescription
void s3f>shapecur5eto7 > (loat F1A (loat y1A (loat F0A (loat y0A (loat F7A (loat y7 ?
DraE a cu#ic #ezier curve using the FAy coordinate pairs 81A ?1 and 82A?2 as o(( curve control points
and the FAy coordinate 8RA ?R as an endpoint; ,he current position is then set to the FAy coordinate
pair given #y 8RA?R;
s3f>shapecur5eto
>P&P 8 ?
sE(Zshapecurveto 22 DraE a /uadratic #ezier curve #etEeen tEo points
Kescription
void s3f>shapecur5eto > (loat F1A (loat y1A (loat F0A (loat y0 ?
,he s3f>shapecur5eto./ (unction draEs a /uadratic #ezier curve (rom the F coordinate given #y 81
and the y coordinate given #y ?1 to the F coordinate given #y 82 and the y coordinate given #y ?2;
,he current position is then set to the FAy coordinates given #y the 82 and ?2 parameters
s3f>shapefillbitmapclip
>P&P 8 ?
sE(Zshape(ill#itmapclip 22 et current (ill mode to clipped #itmap
Kescription
void s3f>shapefillbitmapclip > int #itmapid ?
ets the (ill to #itmap clippedA empty spaces Eill #e (illed #y the #itmap given #y the 16tmap6#
parameter;
s3f>shapefillbitmaptile
>P&P 8 ?
sE(Zshape(ill#itmaptile 22 et current (ill mode to tiled #itmap
Kescription
void s3f>shapefillbitmaptile > int #itmapid ?
ets the (ill to #itmap tileA empty spaces Eill #e (illed #y the #itmap given #y the 16tmap6#
parameter >tiled?;
s3f>shapefilloff
>P&P 8 ?
sE(Zshape(illo(( 22 ,urns o(( (illing
Kescription
void s3f>shapefilloff > void ?
,he s3f>shape;illJff./ (unction turns o(( (illing (or the current shape;
s3f>shapefillsolid
>P&P 8 ?
sE(Zshape(illsolid 22 et the current (ill style to the speci(ied color
Kescription
void s3f>shapefillsolid > (loat rA (loat gA (loat #A (loat a ?
,he s3f>shape;ill,olid./ (unction sets the current (ill style to solidA and then sets the (ill color to
the values o( the rE1a parameters;
s3f>shapelinesolid
>P&P 8 ?
sE(Zshapelinesolid 22 et the current line style
Kescription
void s3f>shapelinesolid > (loat rA (loat gA (loat #A (loat aA (loat Eidth ?
,he s3f>shapelinesolid./ (unction sets the current line style to the color o( the rE1a parameters and
Eidth to the 76#th parameter; .( 3;3 is given as a Eidth then no lines are draEn;
s3f>shapelineto
>P&P 8 ?
sE(Zshapelineto 22 DraE a line
Kescription
void s3f>shapelineto > (loat FA (loat y ?
,he s3f>shape:ineTo./ draEs a line to the FAy coordinates given #y the 8 parameter i the ?
parameter; ,he current position is then set to the FAy parameters;
s3f>shapemo5eto
>P&P 8 ?
sE(Zshapemoveto 22 Move the current position
Kescription
void s3f>shapemo5eto > (loat FA (loat y ?
,he s3f>shapeMo5eTo./ (unction moves the current position to the F coordinate given #y the 8
parameter and the y position given #y the ? parameter;
s3f>sho3frame
>P&P 8 ?
sE(ZshoE(rame 22 Display the current (rame
Kescription
void s3f>sho3frame > void ?
,he sE(ZshoE(rame (unction Eill output the current (rame;
s3f>startbutton
>P&P 8 ?
sE(Zstart#utton 22 tart the de(inition o( a #utton
Kescription
void s3f>startbutton > int o#'idA int type ?
,he s3f>startbutton./ (unction starts o(( the de(inition o( a #utton; ,he t?pe parameter can either
#e ,%P+ZM+N@B@,,ON or ,%P+ZP@&B@,,ON; ,he ,%P+ZM+N@B@,,ON constant
alloEs the (ocus to travel (rom the #utton Ehen the mouse is doEnA ,%P+ZP@&B@,,ON does
not alloE the (ocus to travel Ehen the mouse is doEn;
s3f>startdoaction
>P&P 8 ?
sE(Zstartdoaction 22 tart a description o( an action list (or the current (rame
Kescription
void s3f>startdoaction > void ?
,he s3f>startdoaction./ (unction starts the description o( an action list (or the current (rame; ,his
must #e called #e(ore actions are de(ined (or the current (rame;
s3f>startshape
>P&P 8 ?
sE(Zstartshape 22 tart a compleF shape
Kescription
void s3f>startshape > int o#'id ?
,he s3f>startshape./ (unction starts a compleF shapeA Eith an o#'ect id given #y the o1U6#
parameter;
s3f>startsymbol
>P&P 8 ?
sE(Zstartsym#ol 22 De(ine a sym#ol
Kescription
void s3f>startsymbol > int o#'id ?
De(ine an o#'ect id as a sym#ol; ym#ols are tiny (lash movies that can #e played simultaneously;
,he o1U6# parameter is the o#'ect id you Eant to de(ine as a sym#ol;
s3f>te+t3idth
>P&P 8 ?
sE(ZteFtEidth 22 Get the Eidth o( a string
Kescription
(loat s3f>te+t3idth > string str ?
,he s3f>te+t3idth./ (unction gives the Eidth o( the stringA strA in piFelsA using the current (ont and
(ont size;
s3f>translate
>P&P 8 ?
sE(Ztranslate 22 ,ranslate the current trans(ormations
Kescription
void s3f>translate > dou#le FA dou#le yA dou#le z ?
,he s3f>translate./ (unction translates the current trans(ormation #y the 8A ?A and D values given;
s3f>5ie3port
>P&P 8 ?
sE(ZvieEport 22 elect an area (or (uture draEing
Kescription
void s3f>5ie3port > dou#le FminA dou#le FmaFA dou#le yminA dou#le ymaF ?
,he s3f>5ie3port./ (unction selects an area (or (uture draEing (or 8m6n to 8ma8 and ?m6n to ?ma8A
i( this (unction is not called the area de(aults to the size o( the screen;
CIIIII. ;unciones de ,ybase
Tabla de contenidos
sy#aseZa((ectedZroEs 22 O#tiene el nBmero de (ilas a(ectadas en la Bltima consulta
sy#aseZclose 22 5ierra una coneFi-n y#ase
sy#aseZconnect 22 A#re una coneFi-n con un servidor y#ase
sy#aseZdataZsee" 22 Mueve el puntero interno de la (ila
sy#aseZdeadloc"ZretryZcount 22 Fi'a el contador de reintentos del deadloc"
sy#aseZ(etchZarray 22 O#tiene una (ila como una matriz
sy#aseZ(etchZassoc 22 O#tiene el resultado de la sentencia como una matriz asociativa
sy#aseZ(etchZ(ield 22 o#tiene la in(ormaci-n del campo
sy#aseZ(etchZo#'ect 22 carga una (ila como un o#'eto
sy#aseZ(etchZroE 22 o#tiene una (ila como una matriz enumerada
sy#aseZ(ieldZsee" 22 esta#lece el o((set de un campo
sy#aseZ(reeZresult 22 li#era el resultado de la memoria
sy#aseZgetZlastZmessage 22 Regresa el Bltimo mensa'e del servidor y#ase
sy#aseZminZclientZseverity 22 Fi'a el nivel minimo de severidad del pro#lema reportado por el
servidor
sy#aseZminZerrorZseverity 22 Fi'a el error minimo a reportar segBn su severidad
sy#aseZminZmessageZseverity 22 Fi'a el mensa'e ets minimum message severity
sy#aseZminZserverZseverity 22 Fi'a el nivel minimo de severidad del pro#lema reportado por el
servidor
sy#aseZnumZ(ields 22 o#tiene el nBmero de campos de un resultado
sy#aseZnumZroEs 22 o#tiene el nBmero de (ilas de un resultado
sy#aseZpconnect 22 a#re una coneFi-n persistente con y#ase
sy#aseZ/uery 22 env)a una consulta a y#ase
sy#aseZresult 22 o#tiene datos de un resultado
sy#aseZselectZd# 22 seleccciona una #ase de datos y#ase
sy#aseZsetZmessageZhandler 22 Fi'a el mane'ador a ser llamado cuando se emite un mensa'e del
sistema
sy#aseZun#u((eredZ/uery 22 +nv)a una sentencia OL a y#ase sin #lo/uear
sybase>affected>ro3s
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
sy#aseZa((ectedZroEs 22 O#tiene el nBmero de (ilas a(ectadas en la Bltima consulta
Kescripci"n
int sybase>affected>ro3s > Presource idZenlaceQ ?
sybase>affected>ro3s./ devuelve el nBmero de (ilas a(ectadas por la Bltima consulta .N+R,A
@PDA,+ o D+L+,+ en el servidor asociado con el identi(icador de enlace dado; i no se
especi(ica el identi(icador de enlaceA se asume el Bltimo enlace a#ierto;
E'emplo !. Consulta(Kelete
<?php
/W conectarse con la base de datos W/
sybase%connect3M&PZ,&EM, MM, MM9 or
die3".o pudo conectarse"9;
sybase%select%db3"bd"9;
sybase%Query3"LEOE*E S'?" alEuna%tabla 7HE'E id < 62"9;
print#3"'eEistros eliminados@ \dVn", sybase%a##ected%ro8s399;
?>
+l anterior e'emplo producir)a la siguiente salidaC
'eEistros eliminados@ 62
+ste comando no es e(ectivo para sentencias +L+5,A Bnicamente en sentencias /ue modi(ican
registros; Para recuperar el nBmero de (ilas devueltas desde un +L+5,A use sybase>num>ro3s./;
Nota- +sta (unci-n se encuentra disponi#le solamente cuando se usan las #i#liotecas 5,
de y#ase y no las #i#liotecas DB;
$ea tam#i<n sybase>num>ro3s./;
sybase>close
>P&P 7A P&P 8 A P&P 4?
sy#aseZclose 22 5ierra una coneFi-n y#ase
Kescripci"n
#ool sybase>close > Pint identi(icadorZdeZenlaceQ ?
sybase>close./ cierra el enlace a una #ase de datos y#ase /ue est* asociada con el enlace
6#ent696ca#or_#e_enlace; i el identi(icador de enlace no se espec)(icaA se asume el Bltimo enlace
a#ierto;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Note /ue esto no es usualmente necesarioA dado /ue los enlaces a#iertos como no persistentes son
cerradoa autom*ticamente al (inal de la e'ecuci-n del script;
sybase>close./ no cierra enlaces persistentes generados por sybase>pconnect./;
$ea tam#i<n sybase>connect./A sybase>pconnect./;
sybase>connect
>P&P 7A P&P 8 A P&P 4?
sy#aseZconnect 22 A#re una coneFi-n con un servidor y#ase
Kescripci"n
resource sybase>connect > Pstring nom#reZservidor PA string nom#reZusuario PA string contrasenya PA
string 'uegoZcaracteres PA string nom#reZaplicacionQQQQQ ?
Devuelve un identi(icador de enlace y#ase positivo de tener <FitoA o FALSE si (racasa;
sybase>connect./ esta#lece una coneFi-n con un servidor y#ase; +l argumento nom#reZservidor
tiene /ue ser un nom#re de servidor v*lido /ue est< de(inido en el archivo Hinter(acesH;
+n caso de /ue se realice una segunda llamada a sybase>connect./ con los mismos argumentosA no
se esta#lece un nuevo enlaceA en su lugarA se devolver* el identi(icador del enlace ya a#ierto;
+l enlace con el servidor ser* cerrado tan pronto como (inalice la e'ecuci-n del scriptA a menos /ue
sea cerrado antes al llamar eFpl)citamente sybase>close./;
E'emplo !. E'emplo de sybase>connect./
<?php
$enlace > sybase%connect3M&PZ,&EM, MM, MM9
or die3"&iexcl;.o pudo conectarse!"9;
echo "&e conect&oacute; satis#actoriamnete";
sybase%close3$enlace9;
?>
$ea tam#i<n sybase>pconnect./ y sybase>close./;
sybase>data>seeB
>P&P 7A P&P 8 A P&P 4?
sy#aseZdataZsee" 22 Mueve el puntero interno de la (ila
Kescripci"n
int sybase>data>seeB > int resultZidenti(ierA int roEZnum#er ?
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
sybase>data>seeB./ mueve el puntero interno de la (ila del resultado asociado con el identi(icador
de resultado espec)(icado hacia el nBmero de (ila introducido; La siguiente llamada a
sybase>fetch>ro3./ devolver* esa (ila;
$ea tam#i<n sybase>data>seeB./;
sybase>deadlocB>retry>count
>P&P 8 _^ 8;7;3A P&P 4?
sy#aseZdeadloc"ZretryZcount 22 Fi'a el contador de reintentos del deadloc"
Kescripci"n
void sybase>deadlocB>retry>count > int contadorZdeZreintentos ?
@sando sybase>deadlocB>retry>count./A el nBmero de reintentos puede ser de(inido en caso de
encontrarse en deadloc"; Por de(ectoA cada deadloc" sigue intentando un nBmero in(inito de veces o
hasta /ue el proceso es destruido por y#aseA el script es (inalizado >por e'emploA por
set>time>limit./? - la sentencia OL es eFitosa;
Nota- +sta (unci-n se encuentra disponi#le solamente cuando se usan las #i#liotecas 5,
de y#ase y no las #i#liotecas DB;
Tabla !. Calores para contador>de>reintentos
21
Reintenta por siempre >por
de(ecto?
3 No reintenta
n Reintenta n veces
sybase>fetch>array
>P&P 7A P&P 8 A P&P 4?
sy#aseZ(etchZarray 22 O#tiene una (ila como una matriz
Kescripci"n
matriz sybase>fetch>array > resource result ?
Regresa una matriz /ue corresponde a la (ila o#tenidaA o FALSE si no hay m*s (ilas;
sybase>fetch>array./ es una versi-n eFtendida de sybase>fetch>ro3./; Adem*s de almacenar los
datos en )ndices num<ricos en la matriz resultanteA tam#icdeon almacena los datos en )ndices
asociativosA usando los nom#res de los campos como llaves;
@na cosa importate es /ue usando sybase>fetch>array./ no es signi(icativamente m*s lento /ue
usar sybase>fetch>ro3./A mientras /ue si provee un valor agregado signi(icativo;
Nota- 5uando se seleccionan campos con nom#res id<nticos >por e'emploA en una
uni-n?A los )ndices asociativos tendr*n agregado un nBmero secuencialA vea el e'emplo
para m*s detalles;
E'emplo !. Nombres de campo id%nticos
<?php
$dbh > sybase%connect3M&PZ,&EM, MM, MM9;
$Q > sybase%Query3M&EOER* W S'?" p, a 7HE'E p.person%id> a.person%idM9;
=ar%dump3sybase%#etch%array3$Q99;
sybase%close3$dbh9;
?>
+l e'emplo anterior producir* la siguiente salida >asumiendo /ue las dos ta#las solo tienen una
columna llamada =personZid= cada una?C
array319 :
)2/>>
int369
)"person%id"/>>
int369
)6/>>
int369
)"person%id6"/>>
int369
;
$ea tam#i<n sybase>fetch>ro3./A sybase>fetch>assoc./A sybase>fetch>ob'ect./;
sybase>fetch>assoc
>P&P 8 _^ 8;7;3A P&P 4?
sy#aseZ(etchZassoc 22 O#tiene el resultado de la sentencia como una matriz asociativa
Kescripci"n
matriz sybase>fetch>assoc > int resultado ?
Regresa una matriz /ue corresponde a las (ilas o#tenidas o FALSE si no hay mas (ilas;
Nota- +sta (unci-n se encuentra disponi#le solamente cuando se usan las #i#liotecas 5,
de y#ase y no las #i#liotecas DB;
sybase>fetch>assoc./ es una adaptaci-n de sybase>fetch>ro3./ /ue usa los nom#re de las
columnas en lugar de nBmeros enteros como indices en la matriz resultante; +n caso de columnas de
di(erentes ta#lasA con el mismo nom#reA <stas son eFpresadas comoC nom#reA nom#re1A nom#re0A ;;;A
nom#reN;
Algo por tener en cuenta esA /ue usando sybase>fetch>assoc./ signi(icativamente no es m*s lenta
/ue usar sybase>fetch>ro3./A dado /ue provee un valor agregado;
$ea tam#i<n sybase>fetch>array./A sybase>fetch>ob'ect./ y sybase>fetch>ro3./;
sybase>fetch>field
>P&P 7A P&P 8 A P&P 4?
sy#aseZ(etchZ(ield 22 o#tiene la in(ormaci-n del campo
Kescripci"n
o#'ect sybase>fetch>field > int result PA int (ieldZo((setQ ?
Devuelve un o#'eto conteniendo la in(ormaci-n del campo
sybase>fetch>field./ puede usarse para o#tener in(ormaci-n so#re los campos de una consulta
determinada; i no se espec)(ica el o((set del campoA el siguiente campo /ue aBn no halla sido
tomado por sybase>fetch>field./ es el /ue se o#tiene;
Las propiedades del o#'eto sonC
name 2 nom#re de la columna; si la columna es el resultado de una (unci-nA esta propiedad
se esta#lece a computednNA donde nN es un nBmero de serie;
columnZsource 2 la ta#la de la cual se tomo la columna
maFZlength 2 m*Fima longitud de la columna
numeric 2 1 si la columna es num<rica
$ea tam#i<n sybase>field>seeB./;
sybase>fetch>ob'ect
>P&P 7A P&P 8 A P&P 4?
sy#aseZ(etchZo#'ect 22 carga una (ila como un o#'eto
Kescripci"n
int sybase>fetch>ob'ect > int result PA miFed o#'ectQ ?
Devuelve un o#'eto con las propiedades /ue corresponden a la (ila tomadaA o FALSE si no hay m*s
(ilas;
sybase>fetch>ob'ect./ es similar a sybase>fetch>assoc./A con una di(erencia 2 se devuelve un
o#'eto;
@se el segundo o1Uect para espec)(icar el tipo del o#'eto /ue /uiere de regreso; i este par*metro es
omitidoA el o#'eto ser* de tipo std5lass;
Nota- A partir de P&P 8;7;3A esta (unci- no regresar* miem#ros de o#'etos num<ricos;
5omportamiento anteriorC
object3stdclass93<9 :
)2/>>
strinE3<9 "#oo"
)"#oo"/>>
strinE3<9 "#oo"
)6/>>
strinE3<9 "bar"
)"bar"/>>
strinE3<9 "bar"
;
Nuevo comportamientoC
object3stdclass93<9 :
)"#oo"/>>
strinE3<9 "#oo"
)"bar"/>>
strinE3<9 "bar"
;
E'emplo !. sybase>fetch>ob'ect./ regresa ;oo
<?php
class Soo :
=ar $#oo, $bar, $ba0;
;

// :.../
$Qrh> sybase%Query3M&EOER* #oo, bar, ba0 S'?" exampleM9;
$#oo> sybase%#etch%object3$Qrh, MSooM9;
$bar> sybase%#etch%object3$Qrh, ne8 Soo399;
// :.../
?>
+n t<rminos de velocidadA esta (unci-n es identica a sybase>fetch>array./A y casi tan r*pida como
sybase>fetch>ro3./ >la di(erencia es insigni(icante?;
$ea tam#i<n sybase>fetch>array./A sybase>fetch>ro3./;
sybase>fetch>ro3
>P&P 7A P&P 8 A P&P 4?
sy#aseZ(etchZroE 22 o#tiene una (ila como una matriz enumerada
Kescripci"n
array sybase>fetch>ro3 > int result ?
Devuelve una matriz /ue corresponde a la (ila o#tenidaA o FALSE si no hay m*s (ilas;
sybase>fetch>ro3./ o#tiene una (ila de datos del resultado asociado con el identi(icador de
resultado espec)(icado; La (ila se devuelve como una matriz; 5ada columna del resultado es
almacenada en un o((set de la matrizA comenzando en el o((set 3;
Las siguientes llamadas a sybase>fetch>ro3./ devolver*n la siguiente (ila del resultadoA o FALSE
si no hay m*s (ilas;
Tabla !. Tipos de Katos
PHP ,ybase
string $AR5&ARA ,+J,A 5&ARA .MAG+A B.NAR%A $ARB.NAR%A DA,+,.M+
int
N@M+R.5 >EDo precision?A D+5.MAL >EDo precision?A .N,A B.,A ,.N%.N,A
MALL.N,
(loat N@M+R.5 >ED precision?A D+5.MAL >ED precision?A R+ALA FLOA,A MON+%
NULL N@LL
$ea tam#i<n sybase>fetch>array./A sybase>fetch>assoc./A sybase>data>seeB./A
sybase>fetch>ob'ect./A sybase>result./;
sybase>field>seeB
>P&P 7A P&P 8 A P&P 4?
sy#aseZ(ieldZsee" 22 esta#lece el o((set de un campo
Kescripci"n
int sybase>field>seeB > int resultA int (ieldZo((set ?
Localiza el campo espec)(icado por el o((set; i la siguiente llamada sybase>fetch>field./ no
incluye un o((set se devuelve este campo;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
$ea tam#i<n sybase>fetch>field./;
sybase>free>result
>P&P 7A P&P 8 A P&P 4?
sy#aseZ(reeZresult 22 li#era el resultado de la memoria
Kescripci"n
int sybase>free>result > int result ?
sybase>free>result./ s-lo se necesita usar en el caso de /ue este preocupado por el uso de
demasiada memoria mientras se e'ecuta su script; ,odos los resultados en memoria son li#erados
cuando el script (inalizaA puede llamar a sybase>free>result./ con el identi(icador de resultado
como argumento y la memoria asociada a ese resultado ser* li#erada;
sybase>get>last>message
>P&P 7A P&P 8 A P&P 4?
sy#aseZgetZlastZmessage 22 Regresa el Bltimo mensa'e del servidor y#ase
Kescripci"n
cadena sybase>get>last>message > void ?
sybase>get>last>message./ Regresa el Bltimo mensa'e reportado por el servidor y#ase;
$ea tam#i<n sybase>min>message>se5erity./;
sybase>min>client>se5erity
>P&P 7A P&P 8 A P&P 4?
sy#aseZminZclientZseverity 22 Fi'a el nivel minimo de severidad del pro#lema reportado por el
servidor
Kescripci"n
void sybase>min>client>se5erity > int severidadZdelZpro#lema ?
sybase>min>client>se5erity./ Fi'a el minimo nivel de severidad a reportar del tipo de (alla /ue el
servidor haya encontrado;
Nota- +sta (unci-n se encuentra disponi#le solamente cuando se usan las #i#liotecas 5,
de y#ase y no las #i#liotecas DB;
$ea tam#i<n sybase>min>ser5er>se5erity./;
sybase>min>error>se5erity
>P&P 7A P&P 8 A P&P 4?
sy#aseZminZerrorZseverity 22 Fi'a el error minimo a reportar segBn su severidad
Kescripci"n
void sybase>min>error>se5erity > int severidad ?
sybase>min>error>se5erity./ Fi'e el nivel minimo de error a reportar segBn su severidad;
Nota- +sta (unci-n se encuentra disponi#le solamente cuando se usan las #i#liotecas 5,
de y#ase y no las #i#liotecas DB;
$ea tam#i<n sybase>min>message>se5erity./;
sybase>min>message>se5erity
>P&P 7A P&P 8 A P&P 4?
sy#aseZminZmessageZseverity 22 Fi'a el mensa'e ets minimum message severity
Kescripci"n
void sybase>min>message>se5erity > int severidad ?
sybase>min>message>se5erity./ Fi'a el nivel minimo del mensa'e de error segBn su severidad;
Nota- +sta (unci-n se encuentra disponi#le solamente cuando se usan las #i#liotecas 5,
de y#ase y no las #i#liotecas DB;
$ea tam#i<n sybase>min>error>se5erity./;
sybase>min>ser5er>se5erity
>P&P 7A P&P 8 A P&P 4?
sy#aseZminZserverZseverity 22 Fi'a el nivel minimo de severidad del pro#lema reportado por el
servidor
Kescripci"n
void sybase>min>ser5er>se5erity > int severidadZdelZpro#lema ?
sybase>min>ser5er>se5erity./ Fi'a el minimo nivel de severidad a reportar del tipo de (alla /ue el
servidor haya encontrado;
Nota- +sta (unci-n se encuentra disponi#le solamente cuando se usan las #i#liotecas 5,
de y#ase y no las #i#liotecas DB;
$ea tam#i<n sybase>min>client>se5erity./;
sybase>num>fields
>P&P 7A P&P 8 A P&P 4?
sy#aseZnumZ(ields 22 o#tiene el nBmero de campos de un resultado
Kescripci"n
int sybase>num>fields > int result ?
sybase>num>fields./ devuelve el nBmero de campos en un resultado;
$ea tam#i<n sybase>?uery./A sybase>fetch>field./A sybase>num>ro3s./;
sybase>num>ro3s
>P&P 7A P&P 8 A P&P 4?
sy#aseZnumZroEs 22 o#tiene el nBmero de (ilas de un resultado
Kescripci"n
int sybase>num>ro3s > string result ?
sybase>num>ro3s./ devuelve el nBmero de (ilas de un resultado;
$ea tam#i<nC sybase>num>fields./A sybase>?uery./A sybase>fetch>ro3./;
sybase>pconnect
>P&P 7A P&P 8 A P&P 4?
sy#aseZpconnect 22 a#re una coneFi-n persistente con y#ase
Kescripci"n
int sybase>pconnect > Pstring servername PA string username PA string passEord PA string charset PA
string appnameQQQQQ ?
DevuelveC @n identi(icador de enlace persistente de y#ase positivo en caso de /ue pueda a#rirloA
en caso de error devuelve FALSE
sybase>pconnect./ actBa de (orma muy parecida a sybase>connect./ con dos grandes di(erencias;
PrimeraA cuando se conectaA esta (unci-n primero tratar* de encontrar un enlace >persistente? /ue ya
est< a#ierto con el mismo hostA nom#re de usuario y contraseWa; i encuentra unoA devolver* un
identi(icador para <l en vez de a#rir una nueva coneFi-n;
egundaA la coneFi-n al servidor OL no se cerrar* cuando (inalice la e'ecuci-n del script; +n vez
de estoA el enlace permanecer* a#ierto para un (uturo uso >sybase>close./ no podr* cerrar enlaces
esta#lecidos cons?1ase_pconnectLM?;
+ste tipo de enlaces son llamados HpersistentesH;
$ea tam#i<n sybase>connect./;
sybase>?uery
>P&P 7A P&P 8 A P&P 4?
sy#aseZ/uery 22 env)a una consulta a y#ase
Kescripci"n
int sybase>?uery > string /uery PA int identi(icadorZdeZenlaceQ ?
Devuelve un identi(icador de resultado y#ase positivo si es eFitosoA o FALSE en caso de error;
sybase>?uery./ env)a una consulta a la actual #ase de datos activa en el servidor /ue est* asociada
con el identi(icador de enlace espec)(icado; i no se espec)(ica un identi(icador de enlaceA se asume
el Bltimo enlace a#ierto; i no hay un enlace a#iertoA la (unci-n intentar* esta#lecer un enlace como
si sybase>connect./ (uese llamadaA y lo usar*;
$ea tam#i<nC sybase>select>db./A sybase>connect./;
sybase>result
>P&P 7A P&P 8 A P&P 4?
sy#aseZresult 22 o#tiene datos de un resultado
Kescripci"n
int sybase>result > int resultA int iA miFed (ield ?
Devuelve el contenido de la celda en la (ila y el o((set espec)(icado de un con'unto de resultados de
y#ase;
sybase>result./ devuelve el contenido de una celda de un resultado de y#ase; +l par*metro (ield
puede ser el o((set del campoA o el nom#re del campoA o el nom#re de la ta#la un punto y el nom#re
del campo >nom#reZta#la;nom#reZcampo?; i el nom#re de la columna tiene un alias >Hselect (oo as
#ar (rom;;;H?A use el alias en vez del nom#re de la columna;
5uando tra#a'e con con'untos de resultados grandesA de#e considerar el uso de alguna de las
(unciones /ue cargan una (ila entera >especi(icadas a#a'o?; %a /ue estas (unciones devuelven el
contenido de mBltiples celdas en una Bnica llamadaA son M@5&O m*s r*pidas /ue sy#aseZresult>?;
Adem*sA note /ue espec)(icar un o((set nBmerico en el par*metro (ield es mucho m*s r*pido /ue
espec)(icar un nom#re de campo o nom#reZta#la;nom#reZcampo;
Alternativas recomendadas para alto rendimientoC sybase>fetch>ro3./A sybase>fetch>array./A
sybase>fetch>ob'ect./;
sybase>select>db
>P&P 7A P&P 8 A P&P 4?
sy#aseZselectZd# 22 seleccciona una #ase de datos y#ase
Kescripci"n
int sybase>select>db > string data#aseZname PA int lin"Zidenti(ierQ ?
sybase>select>db./ esta#lece como activa la #ase de datos en el servidor asociada con el
identi(icador de enlace espec)(icado; i no se espec)(ica un identi(icador de enlaceA se asume el
Bltimo enlace a#ierto; i no hay un enlace a#iertoA la (unci-n intentar* esta#lecer un enlace como si
sybase>connect./ (uese llamadaA y lo usar*;
5ada llamada su#siguiente a sybase>?uery./ ser* hecha en la #ase de datos activa;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
5ada llamada su#secuente a sybase>?uery./ se har* en la #ase de datos activa;
$ea tam#i<n sybase>connect./A sybase>pconnect./A sybase>?uery./
sybase>set>message>handler
>P&P 8 _^ 8;7;3A P&P 4?
sy#aseZsetZmessageZhandler 22 Fi'a el mane'ador a ser llamado cuando se emite un mensa'e del
sistema
Kescripci"n
#ool sybase>set>message>handler > call#ac" handler PA int coneFi-nQ ?
sybase>set>message>handler./ Fi'a una (unci-n de(inida por el usuario para mane'ar los mensa'es
generados por el servidor %BA+; e de#e especi(icar el nom#re de una (unci-n glo#alA o usar una
matriz para especi(icar una re(erencia a un o#'eto y al nom#re de un m<todo;
Nota- +sta (unci-n se encuentra disponi#le solamente cuando se usan las #i#liotecas 5,
de y#ase y no las #i#liotecas DB;
+l mane'ador de#e reci#ir cinco argumentos en el siguiente ordenC nBmero del mensa'eA severidadA
estadoA nBmero de linea y descripci-n; Los primeros cuatro son de tipo entero; +l Bltimo es una
cadena; i la (unci-n regresa FALSEA P&P genera un mensa'er de error ordinario;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- +l par*metro cone86`n (ue agregado en P&P 8;7;4;
E'emplo !. sybase>set>message>handler./ llamada a una funci"n
<?php
#unction msE%handler3$msEnumber, $se=erity, $state, $line, $text9
:
=ar%dump3$msEnumber, $se=erity, $state, $line, $text9;
;

sybase%set%messaEe%handler3MmsE%handlerM9;
?>
E'emplo *. sybase>set>message>handler./ llamada a una clase
<?php
class &ybase :
#unction handler3$msEnumber, $se=erity, $state, $line, $text9
:
=ar%dump3$msEnumber, $se=erity, $state, $line, $text9;
;
;

$sybase> ne8 &ybase39;
sybase%set%messaEe%handler3array3$sybase, MhandlerM99;
?>
E'emplo 7. sybase>set>message>handler./ Mensa'es no mane'ados
<?php
// 'eEresa S,O&E, desde esta #uncion para indicar Que no se pudo
// manejar el mensaje, El error es impreso como un 7,'.4.-, la #orma
// de usar esto, es si no hay un manejador de mensajes instalado.
#unction msE%handler3$msEnumber, $se=erity, $state, $line, $text9
:
i# 3C5H >> $msEnumber9 :
return #alse;
;
=ar%dump3$msEnumber, $se=erity, $state, $line, $text9;
;

sybase%set%messaEe%handler3MmsE%handlerM9;
?>
sybase>unbuffered>?uery
>P&P 8 _^ 8;7;3A P&P 4?
sy#aseZun#u((eredZ/uery 22 +nv)a una sentencia OL a y#ase sin #lo/uear
Kescripci"n
int sybase>unbuffered>?uery > string setenciaA int identi(icadorZdeZenlace PA int
almacenaZresultadoQ ?
Devuelve un identi(icador de resultado y#ase positivo en caso eFitosoA o FALSE ante un error;
Nota- +sta (unci-n se encuentra disponi#le solamente cuando se usan las #i#liotecas 5,
de y#ase y no las #i#liotecas DB;
sybase>unbuffered>?uery./ env)a una consulta a la actual #ase de datos activa en el servidor /ue
est* asociada con el identi(icador de enlace especi(icado; i no se especi(ica un identi(icador de
enlaceA se asume el Bltimo enlace a#ierto; i no hay un enlace a#iertoA la (unci-n intentar* esta#lecer
un enlace como si sybase>connect./ (uese llamadaA y lo usar*;
A di(erencia de sybase>?uery./A sybase>unbuffered>?uery./ leer* s-lo la primera (ila del
resultado asociado; sybase>fetch>array./ una (unci-n similar leer* mas (ilas segBn necesite;
sybase>data>seeB./ lee hasta la (ila solicitada; +ste comportamiento puede producir un me'or
desempeWo en resultados asociados muy grandes;
sybase>num>ro3s./ -lo regresar* el nBmero de (ilas del resultado asociado /ue ha sido leido;
Para y#aseA el nBmero de (ilas en un resultado es desconocidoA por lo tanto de#e ser calculado por
una implementaci-n del cliente;
Nota- i no ha utilizado todos los resultados asociados antes de e'ecutar una nueva
sentenciaA P&P generar* una advertencia y cancelar* todos los resultados pendientes;
Para evitar estoA use sybase>free>result./ el cual cancelar* los resultados pendientes de
una sentencia sin almacenamiento intermedio;
+l par*metro opcional almacena_resulta#o puede estar en FALSE para indicar /ue el resultado
asociado no de#e ser traido a la memoriaA y as) minimiza el uso de la memoriaA lo cu*l es
particularmente interesante con gran cantidad de (ilas en un resultado asociado;
$ea tam#i<n sybase>?uery./
E'emplo !. E'emplo sybase>unbuffered>?uery./
<?php
$dbh> sybase%connect3M&PZ,&EM, MM, MM9;
$Q> sybase%unbu##ered%Query3Mselect #irstname, lastname #rom huEe%tableM, $dbh, #alse9;
sybase%data%seeI3$Q, 622229;
$i> 2;
8hile 3$ro8> sybase%#etch%ro83$Q99 :
echo $ro8)2/ . M M . $ro8)2/;
i# 3$i[[ > 122229 breaI;
;
sybase%#ree%result3$Q9;
sybase%close3$dbh9;
?>
CIIIC. TCP 2rappers ;unctions
Introducci"n
,he ,5P Erappers provides a classical uniF mechanism Ehich has #een designed to chec" i( the
remote client is a#le to connect (rom the given .P address;
Instalaci"n
,cpErap is currently availa#le through P+5L httpCDDpecl;php;netDpac"ageDtcpErap;
.( P+AR is availa#le on your VniF2li"e system you can use the pear installer to install the tcpErap
eFtensionA #y the (olloEing commandC pear (5 install tcp3rap;
%ou can alEays doEnload the tar;gz pac"age and install tcpErap #y handC
E'emplo !. tcp3rap install by hand
Eun0ip tcp8rapFxxx.tE0
tar Fx=# tcp8rapFxxx.tar
cd tcp8rapFxxx
phpi0e
./con#iEure && maIe && maIe install
Tabla de contenidos
tcpErapZchec" 22 Per(orms a tcpErap chec"
tcp3rap>checB
>no version in(ormationA might #e only in 5$?
tcpErapZchec" 22 Per(orms a tcpErap chec"
Kescripci"n
#ool tcp3rap>checB > string daemonA string address PA string user PA #ool nodnsQQ ?
,his (unction consults the /etc/hosts.allo8 and /etc/hosts.deny (iles to chec" i(
access to service #aemon should #e granted or denied (or a client;
:ista de parmetros
#aemon
,he service name;
a##ress
,he client remote address; 5an #e either an .P address or a domain name;
user
An optional user name;
no#ns
.( a##ress loo"s li"e domain name then DN is used to resolve it to .P addressX set no#ns to
TRUE to avoid this;
Calores retornados
,his (unction returns TRUE i( access should #e grantedA FALSE otherEise;
E'emplos
E'emplo !. Keny all connections from localhost
.( your DetcDhosts;deny (ile containsC
php@ 6CH.2.2.6
And your code loo"s li"eC
<?php
i# 3!tcp8rap%checI3MphpM, $%&E'(E')M'E"?*E%,LL'M/99 :
die3MPou are not 8elcome hereM9;
;
?>
Cer tambi%n
For more details please consult hostsZaccess>7? man page;
CIIC. Tidy ;unctions
Introducci"n
,idy is a #inding (or the ,idy &,ML clean and repair utility Ehich alloEs you to not only clean and
otherEise manipulate &,ML documentsA #ut also traverse the document tree;
Me?uirimientos
,o use ,idyA you Eill need li#tidy installedA availa#le on the tidy homepage
httpCDDtidy;source(orge;netD;
Instalaci"n
,idy is currently availa#le (or P&P 8;7;F and P&P 4 as a P+5L eFtension (rom
httpCDDpecl;php;netDpac"ageDtidy;
Nota- ,idy 1;3 is 'ust (or P&P 8;7;FA Ehile ,idy 0;3 is 'ust (or P&P 4;
.( P+AR is availa#le on your VniF2li"e system you can use the pear installer to install the tidy
eFtensionA #y the (olloEing commandC pear (5 install tidy;
%ou can alEays doEnload the tar;gz pac"age and install tidy #y handC
E'emplo !. tidy install by hand in PHP 8.7.+
Eun0ip tidyFxxx.tE0
tar Fx=# tidyFxxx.tar
cd tidyFxxx
phpi0e
./con#iEure && maIe && maIe install
LindoEs users can doEnload the eFtension dll php%tidy.dll (rom
httpCDDsnaps;php;netDEin70DP+5LZ,ABL+D;
.n P&P 4 you need only to compile using the ==76th=t6#? option;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Tidy Configuration Jptions
Name Kefault Changeable
tidy;de(aultZcon(i
g
== P&PZ.N.Z%,+M
tidy;cleanZoutput 3 P&PZ.N.ZP+RD.R
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
t6#?.#e9ault_con96E string
De(ault path (or tidy con(ig (ile;
t6#?.clean_output boolean
,urns onDo(( the output repairing #y ,idy;
A5iso
Do not turn on t6#?.clean_output i( you are generating non2html content such as dynamic images;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
+ach TIDY_TA#_%%% represents a &,ML tag; For eFampleA TIDY_TA#_A represents a `a
hre(^=JJ=_lin"`Da_ tag; +ach TIDY_ATTR_%%% represents a &,ML atri#ute; For eFample
TIDY_ATTR_HREF Eould represent the hre( atri#ute in the previous eFample;
,he (olloEing constants are de(inedC
Tabla *. tidy tag constants
constant
,.D%Z,AGZ@NSNOLN
,.D%Z,AGZA
constant
,.D%Z,AGZABBR
,.D%Z,AGZA5RON%M
,.D%Z,AGZAL.GN
,.D%Z,AGZAPPL+,
,.D%Z,AGZAR+A
,.D%Z,AGZB
,.D%Z,AGZBA+
,.D%Z,AGZBA+FON,
,.D%Z,AGZBDO
,.D%Z,AGZBGO@ND
,.D%Z,AGZB.G
,.D%Z,AGZBL.NS
,.D%Z,AGZBLO5SO@O,
+
,.D%Z,AGZBOD%
,.D%Z,AGZBR
,.D%Z,AGZB@,,ON
,.D%Z,AGZ5AP,.ON
,.D%Z,AGZ5+N,+R
,.D%Z,AGZ5.,+
,.D%Z,AGZ5OD+
,.D%Z,AGZ5OL
,.D%Z,AGZ5OLGRO@P
,.D%Z,AGZ5OMM+N,
,.D%Z,AGZDD
,.D%Z,AGZD+L
,.D%Z,AGZDFN
,.D%Z,AGZD.R
,.D%Z,AGZD.$
,.D%Z,AGZDL
,.D%Z,AGZD,
,.D%Z,AGZ+M
,.D%Z,AGZ+MB+D
,.D%Z,AGZF.+LD+,
,.D%Z,AGZFON,
,.D%Z,AGZFORM
,.D%Z,AGZFRAM+
,.D%Z,AGZFRAM++,
constant
,.D%Z,AGZ&1
,.D%Z,AGZ&0
,.D%Z,AGZ&7
,.D%Z,AGZ&8
,.D%Z,AGZ&4
,.D%Z,AGZ&K
,.D%Z,AGZ&+AD
,.D%Z,AGZ&R
,.D%Z,AGZ&,ML
,.D%Z,AGZ.
,.D%Z,AGZ.FRAM+
,.D%Z,AGZ.LA%+R
,.D%Z,AGZ.MG
,.D%Z,AGZ.NP@,
,.D%Z,AGZ.N
,.D%Z,AGZ..ND+J
,.D%Z,AGZSBD
,.D%Z,AGZS+%G+N
,.D%Z,AGZLAB+L
,.D%Z,AGZLA%+R
,.D%Z,AGZL+G+ND
,.D%Z,AGZL.
,.D%Z,AGZL.NS
,.D%Z,AGZL.,.NG
,.D%Z,AGZMAP
,.D%Z,AGZMARO@++
,.D%Z,AGZM+N@
,.D%Z,AGZM+,A
,.D%Z,AGZM@L,.5OL
,.D%Z,AGZNOBR
,.D%Z,AGZNO+MB+D
,.D%Z,AGZNOFRAM+
,.D%Z,AGZNOLA%+R
,.D%Z,AGZNOAF+
,.D%Z,AGZNO5R.P,
,.D%Z,AGZOB!+5,
,.D%Z,AGZOL
,.D%Z,AGZOP,GRO@P
constant
,.D%Z,AGZOP,.ON
,.D%Z,AGZP
,.D%Z,AGZPARAM
,.D%Z,AGZPLA.N,+J,
,.D%Z,AGZPR+
,.D%Z,AGZO
,.D%Z,AGZRP
,.D%Z,AGZR,
,.D%Z,AGZR,5
,.D%Z,AGZR@B%
,.D%Z,AGZ
,.D%Z,AGZAMP
,.D%Z,AGZ5R.P,
,.D%Z,AGZ+L+5,
,.D%Z,AGZ+R$+R
,.D%Z,AGZ+R$L+,
,.D%Z,AGZMALL
,.D%Z,AGZPA5+R
,.D%Z,AGZPAN
,.D%Z,AGZ,R.S+
,.D%Z,AGZ,RONG
,.D%Z,AGZ,%L+
,.D%Z,AGZ@B
,.D%Z,AGZ,ABL+
,.D%Z,AGZ,BOD%
,.D%Z,AGZ,D
,.D%Z,AGZ,+J,AR+A
,.D%Z,AGZ,FOO,
,.D%Z,AGZ,&
,.D%Z,AGZ,&+AD
,.D%Z,AGZ,.,L+
,.D%Z,AGZ,R
,.D%Z,AGZ,R
,.D%Z,AGZ,,
,.D%Z,AGZ@
,.D%Z,AGZ@L
,.D%Z,AGZ$AR
,.D%Z,AGZLBR
constant
,.D%Z,AGZJMP
Tabla 7. tidy attribute constants
constant
,.D%ZA,,RZ@NSNOLN
,.D%ZA,,RZABBR
,.D%ZA,,RZA55+P,
,.D%ZA,,RZA55+P,Z5&AR+,
,.D%ZA,,RZA55+S+%
,.D%ZA,,RZA5,.ON
,.D%ZA,,RZADDZDA,+
,.D%ZA,,RZAL.GN
,.D%ZA,,RZAL.NS
,.D%ZA,,RZAL,
,.D%ZA,,RZAR5&.$+
,.D%ZA,,RZAJ.
,.D%ZA,,RZBA5SGRO@ND
,.D%ZA,,RZBG5OLOR
,.D%ZA,,RZBGPROP+R,.+
,.D%ZA,,RZBORD+R
,.D%ZA,,RZBORD+R5OLOR
,.D%ZA,,RZBO,,OMMARG.N
,.D%ZA,,RZ5+LLPADD.NG
,.D%ZA,,RZ5+LLPA5.NG
,.D%ZA,,RZ5&AR
,.D%ZA,,RZ5&AROFF
,.D%ZA,,RZ5&AR+,
,.D%ZA,,RZ5&+5S+D
,.D%ZA,,RZ5.,+
,.D%ZA,,RZ5LA
,.D%ZA,,RZ5LA.D
,.D%ZA,,RZ5L+AR
,.D%ZA,,RZ5OD+
,.D%ZA,,RZ5OD+BA+
,.D%ZA,,RZ5OD+,%P+
,.D%ZA,,RZ5OLOR
,.D%ZA,,RZ5OL
,.D%ZA,,RZ5OLPAN
constant
,.D%ZA,,RZ5OMPA5,
,.D%ZA,,RZ5ON,+N,
,.D%ZA,,RZ5OORD
,.D%ZA,,RZDA,A
,.D%ZA,,RZDA,AFLD
,.D%ZA,,RZDA,APAG+.I+
,.D%ZA,,RZDA,AR5
,.D%ZA,,RZDA,+,.M+
,.D%ZA,,RZD+5LAR+
,.D%ZA,,RZD+F+R
,.D%ZA,,RZD.R
,.D%ZA,,RZD.ABL+D
,.D%ZA,,RZ+N5OD.NG
,.D%ZA,,RZ+N5,%P+
,.D%ZA,,RZFA5+
,.D%ZA,,RZFOR
,.D%ZA,,RZFRAM+
,.D%ZA,,RZFRAM+BORD+R
,.D%ZA,,RZFRAM+PA5.NG
,.D%ZA,,RZGR.DJ
,.D%ZA,,RZGR.D%
,.D%ZA,,RZ&+AD+R
,.D%ZA,,RZ&+.G&,
,.D%ZA,,RZ&R+F
,.D%ZA,,RZ&R+FLANG
,.D%ZA,,RZ&PA5+
,.D%ZA,,RZ&,,PZW
,.D%ZA,,RZ.D
,.D%ZA,,RZ.MAP
,.D%ZA,,RZLAB+L
,.D%ZA,,RZLANG
,.D%ZA,,RZLANG@AG+
,.D%ZA,,RZLA,ZMOD.F.+D
,.D%ZA,,RZLA,Z$..,
,.D%ZA,,RZL+F,MARG.N
,.D%ZA,,RZL.NS
,.D%ZA,,RZLONGD+5
,.D%ZA,,RZLOLR5
constant
,.D%ZA,,RZMARG.N&+.G&,
,.D%ZA,,RZMARG.NL.D,&
,.D%ZA,,RZMAJL+NG,&
,.D%ZA,,RZM+D.A
,.D%ZA,,RZM+,&OD
,.D%ZA,,RZM@L,.PL+
,.D%ZA,,RZNAM+
,.D%ZA,,RZNO&R+F
,.D%ZA,,RZNOR+.I+
,.D%ZA,,RZNO&AD+
,.D%ZA,,RZNOLRAP
,.D%ZA,,RZOB!+5,
,.D%ZA,,RZOnAF,+R@PDA,+
,.D%ZA,,RZOnB+FOR+@NLOAD
,.D%ZA,,RZOnB+FOR+@PDA,+
,.D%ZA,,RZOnBL@R
,.D%ZA,,RZOn5&ANG+
,.D%ZA,,RZOn5L.5S
,.D%ZA,,RZOnDA,AA$A.LABL+
,.D%ZA,,RZOnDA,A+,5&ANG+D
,.D%ZA,,RZOnDA,A+,5OMPL+,
+
,.D%ZA,,RZOnDBL5L.5S
,.D%ZA,,RZOn+RROR@PDA,+
,.D%ZA,,RZOnFO5@
,.D%ZA,,RZOnS+%DOLN
,.D%ZA,,RZOnS+%PR+
,.D%ZA,,RZOnS+%@P
,.D%ZA,,RZOnLOAD
,.D%ZA,,RZOnMO@+DOLN
,.D%ZA,,RZOnMO@+MO$+
,.D%ZA,,RZOnMO@+O@,
,.D%ZA,,RZOnMO@+O$+R
,.D%ZA,,RZOnMO@+@P
,.D%ZA,,RZOnR++,
,.D%ZA,,RZOnROL+N,+R
,.D%ZA,,RZOnROL+J.,
,.D%ZA,,RZOn+L+5,
constant
,.D%ZA,,RZOn@BM.,
,.D%ZA,,RZOn@NLOAD
,.D%ZA,,RZPROF.L+
,.D%ZA,,RZPROMP,
,.D%ZA,,RZRBPAN
,.D%ZA,,RZR+ADONL%
,.D%ZA,,RZR+L
,.D%ZA,,RZR+$
,.D%ZA,,RZR.G&,MARG.N
,.D%ZA,,RZROL
,.D%ZA,,RZROLPAN
,.D%ZA,,RZR@L+
,.D%ZA,,RZ5&+M+
,.D%ZA,,RZ5OP+
,.D%ZA,,RZ5ROLL.NG
,.D%ZA,,RZ+L+5,+D
,.D%ZA,,RZ&AP+
,.D%ZA,,RZ&OLGR.D
,.D%ZA,,RZ&OLGR.DJ
,.D%ZA,,RZ&OLGR.D%
,.D%ZA,,RZ.I+
,.D%ZA,,RZPAN
,.D%ZA,,RZR5
,.D%ZA,,RZ,ANDB%
,.D%ZA,,RZ,AR,
,.D%ZA,,RZ,%L+
,.D%ZA,,RZ@MMAR%
,.D%ZA,,RZ,AB.ND+J
,.D%ZA,,RZ,ARG+,
,.D%ZA,,RZ,+J,
,.D%ZA,,RZ,.,L+
,.D%ZA,,RZ,OPMARG.N
,.D%ZA,,RZ,%P+
,.D%ZA,,RZ@+MAP
,.D%ZA,,RZ$AL.GN
,.D%ZA,,RZ$AL@+
,.D%ZA,,RZ$AL@+,%P+
,.D%ZA,,RZ$+R.ON
constant
,.D%ZA,,RZ$L.NS
,.D%ZA,,RZ$PA5+
,.D%ZA,,RZL.D,&
,.D%ZA,,RZLRAP
,.D%ZA,,RZJMLZLANG
,.D%ZA,,RZJMLZPA5+
,.D%ZA,,RZJMLN
Tabla 8. tidy nodetype constants
constant description
,.D%ZNOD+,%P+ZROO, root node
,.D%ZNOD+,%P+ZDO5,%P+ doctype
,.D%ZNOD+,%P+Z5OMM+N
,
&,ML comment
,.D%ZNOD+,%P+ZPRO5.N
Processing
.nstruction
,.D%ZNOD+,%P+Z,+J, ,eFt
,.D%ZNOD+,%P+Z,AR, start tag
,.D%ZNOD+,%P+Z+ND end tag
,.D%ZNOD+,%P+Z,AR,+N
D
empty tag
,.D%ZNOD+,%P+Z5DA,A 5DA,A
,.D%ZNOD+,%P+Z+5,.ON JML section
,.D%ZNOD+,%P+ZAP AP code
,.D%ZNOD+,%P+Z!,+ !,+ code
,.D%ZNOD+,%P+ZP&P P&P code
,.D%ZNOD+,%P+ZJMLD+5L JML declaration
E'emplos
,his simple eFample shoEs #asic ,idy usage;
E'emplo *. 1asic Tidy usage
<?php
ob%start39;
?>
<html>a html document</html>
<?
$html > ob%Eet%clean39;
// &peci#y con#iEuration
$con#iE > array3
MindentM >> true,
MoutputFxhtmlM >> true,
M8rapM >> C229;
// *idy
$tidy > ne8 tidy;
$tidyF>parse&trinE3$html, $con#iE, Mut#JM9;
$tidyF>clean'epair39;
// ?utput
echo $tidy;
?>
Tabla de contenidos
o#Ztidyhandler 22 o#Zstart call#ac" (unction to repair the #u((er
tidyZaccessZcount 22 Returns the Num#er o( ,idy accessi#ility Earnings encountered (or speci(ied
document
tidyZcleanZrepair 22 +Fecute con(igured cleanup and repair operations on parsed mar"up
tidyZcon(igZcount 22 Returns the Num#er o( ,idy con(iguration errors encountered (or speci(ied
document
tidyCCZZconstruct 22 5onstructs a neE tidy o#'ect
tidyZdiagnose 22 Run con(igured diagnostics on parsed and repaired mar"up
tidyZerrorZcount 22 Returns the Num#er o( ,idy errors encountered (or speci(ied document
tidyZgetZ#ody 22 Returns a tidyNode O#'ect starting (rom the `#ody_ tag o( the tidy parse tree
tidyZgetZcon(ig 22 Get current ,idy con(iguration
tidyZgetZerrorZ#u((er 22 Return Earnings and errors Ehich occurred parsing the speci(ied document
tidyZgetZhead 22 Returns a tidyNode O#'ect starting (rom the `head_ tag o( the tidy parse tree
tidyZgetZhtmlZver 22 Get the Detected &,ML version (or the speci(ied document
tidyZgetZhtml 22 Returns a tidyNode O#'ect starting (rom the `html_ tag o( the tidy parse tree
tidyZgetZoutput 22 Return a string representing the parsed tidy mar"up
tidyZgetZrelease 22 Get release date >version? (or ,idy li#rary
tidyZgetZroot 22 Returns a tidyNode o#'ect representing the root o( the tidy parse tree
tidyZgetZstatus 22 Get status o( speci(ied document
tidyZgetopt 22 Returns the value o( the speci(ied con(iguration option (or the tidy document
tidyZisZFhtml 22 .ndicates i( the document is a J&,ML document
tidyZisZFml 22 .ndicates i( the document is a generic >non &,MLDJ&,ML? JML document
tidyZloadZcon(ig 22 Load an A5.. ,idy con(iguration (ile Eith the speci(ied encoding
tidyZnode2_children 22 Returns an array o( child nodes
tidyZnode2_getZattr 22 Return the attri#ute Eith the provided attri#ute id
tidyZnode2_getZnodes 22 Return an array o( nodes under this node Eith the speci(ied id
tidyZnode2_has5hildren 22 Returns true i( this node has children
tidyZnode2_hasi#lings 22 Returns true i( this node has si#lings
tidyZnode2_is5omment 22 Returns true i( this node represents a comment
tidyZnode2_is&tml 22 Returns true i( this node is part o( a &,ML document
tidyZnode2_is!ste 22 Returns true i( this node is !,+
tidyZnode2_is,eFt 22 Returns true i( this node represents teFt >no mar"up?
tidyZnode2_isJhtml 22 Returns true i( this node is part o( a J&,ML document
tidyZnode2_isJml 22 Returns true i( this node is part o( a JML document
tidyZnode2_neFt 22 Returns the neFt si#ling to this node
tidyZnode2_prev 22 Returns the previous si#ling to this node
tidyZparseZ(ile 22 Parse mar"up in (ile or @R.
tidyZparseZstring 22 Parse a document stored in a string
tidyZrepairZ(ile 22 Repair a (ile and return it as a string
tidyZrepairZstring 22 Repair a string using an optionally provided con(iguration (ile
tidyZresetZcon(ig 22 Restore ,idy con(iguration to de(ault values
tidyZsaveZcon(ig 22 ave current settings to named (ile
tidyZsetZencoding 22 et the inputDoutput character encoding (or parsing mar"up
tidyZsetopt 22 @pdates the con(iguration settings (or the speci(ied tidy document
tidyZEarningZcount 22 Returns the Num#er o( ,idy Earnings encountered (or speci(ied document
tidyNode2_isAsp 22 Returns true i( this node is AP
tidyNode2_isPhp 22 Returns true i( this node is P&P
ob>tidyhandler
>P&P 4?
o#Ztidyhandler 22 o#Zstart call#ac" (unction to repair the #u((er
Kescription
string ob>tidyhandler > string input PA int modeQ ?
ob>tidyhandler./ is intended to #e used as a call#ac" (unction (or ob>start./ to repair the #u((er;
E'emplo !. ob>tidyhandler./ e+ample
<?php
ob%start3Mob%tidyhandlerM9;
echo M<p>test</i>M;
?>
+l resultado del e'emplo seriaC
<!L?R*PE html +ZO4R "F//7<R//L*L H*"O <.C//E.">
<html>
<head>
<title></title>
</head>
<body>
<p>test</p>
</body>
</html>
ee also ob>start./;
tidy>access>count
>P&P 4?
tidyZaccessZcount 22 Returns the Num#er o( ,idy accessi#ility Earnings encountered (or speci(ied
document
Kescription
int tidy>access>count > tidy o#'ect ?
tidy>access>count./ returns the num#er o( accessi#ility Earnings (ound (or the speci(ied document;
Nota- Due to the design o( the ,idyLi#A you must call tidy>diagnose./ #e(ore
tidy>access>count./ or it Eill return alEays 0; %ou must also need to ena#le the
access616l6t?=chec> option;
E'emplo !. tidy>access>count./ e+ample
<?php
$html >M<!L?R*PE html +ZO4R "F//7<R//L*L H*"O <.C//E.">
<html><head><title>*itle</title></head>
<body>
<p><imE src>"imE.pnE"></p>
</body></html>M;
// select the accessibility checI le=el@ 6, C or <
$con#iE > array3MaccessibilityFchecIM >> <9;
$tidy > ne8 tidy39;
$tidyF>parse&trinE3$html, $con#iE9;
$tidyF>Rlean'epair39;
/W .e=er #orEet to call this! W/
$tidyF>diaEnose39;
echo tidy%access%count3$tidy9; //5
?>
ee also tidy>error>count./ and tidy>3arning>count./;
tidy>clean>repair
>P&P 4?
tidyZcleanZrepair 22 +Fecute con(igured cleanup and repair operations on parsed mar"up
Kescription
Procedural styleC
#ool tidy>clean>repair > tidy o#'ect ?
O#'ect oriented styleC
#ool tidy(GcleanMepair > void ?
,his (unction cleans and repairs the given tidy o1Uect;
E'emplo !. tidy>clean>repair./ e+ample
<?php
$html > M<p>test</4>M;
$tidy > tidy%parse%strinE3$html9;
tidy%clean%repair3$tidy9;
echo $tidy;
?>
+l resultado del e'emplo seriaC
<!L?R*PE html +ZO4R "F//7<R//L*L H*"O <.C//E.">
<html>
<head>
<title></title>
</head>
<body>
<p>test</p>
</body>
</html>
ee also tidy>repair>file./ and tidy>repair>string./;
tidy>config>count
>P&P 4?
tidyZcon(igZcount 22 Returns the Num#er o( ,idy con(iguration errors encountered (or speci(ied
document
Kescription
int tidy>config>count > tidy o#'ect ?
tidy>config>count./ returns the num#er o( errors encountered in the con(iguration o( the speci(ied
tidy o1Uect;
E'emplo !. tidy>config>count./ e+ample
<?php
$html > M<p>test</4>M;
$con#iE > array3MdoctypeM >> MboEusM9;
$tidy > tidy%parse%strinE3$html, $con#iE9;
/W *his outputs 6, because MboEusM isnMt a =alid doctype W/
echo tidy%con#iE%count3$tidy9;
?>
tidy-->>construct
>no version in(ormationA might #e only in 5$?
tidyCCZZconstruct 22 5onstructs a neE tidy o#'ect
Kescription
tidy tidy-->>construct > Pstring (ilename PA miFed con(ig PA string encoding PA #ool
useZincludeZpathQQQQ ?
tidy-->>construct./ constructs a neE tidy o#'ect;
.( the 96lename parameter is givenA this (unction Eill also read that (ile and initialize the o#'ect Eith
the (ileA acting li"e tidy>parse>file./;
+l parametro con96E puede ser enviado como una matriz o como una cadena al(anumerica; i se
envia como una cadena al(anumericaA signica /ue sera interpretado como el nom#re del (ichero de
con(iguracionA de lo contrarioA como opciones; 5onsultar
httpCDDtidy;source(orge;netDdocsD/uic"re(;html para una eFplicacion de todas las opciones;
+l parametro enco#6nE de(ine la codi(icacion para las salidasDentradas de los documentos; Los
valores /ue se pueden utilizar son asciiA latin3A latin1A raEA ut(MA iso0300A macA Ein1040A i#mM4MA
ut(1KA ut(1KleA ut(1K#eA #ig4 and shi(t'is;
E'emplo !. tidy-->>construct./ e+ample
<?php
$html > <<< H*"O
<!L?R*PE html +ZO4R "F//7<R//L*L XH*"O 6.2 &trict//E."
"http@//888.8<.orE/*'/xhtml6/L*L/xhtml6Fstrict.dtd">
<html xmlns>"http@//888.8<.orE/6KKK/xhtml" xml@lanE>"en" lanE>"en">
<head><title>title</title></head>
<body>
<p>paraEraph <bt />
text</p>
</body></html>
H*"O;
$tidy > ne8 tidy;
$tidyF>parse&trinE3$html9;
$tidyF>Rlean'epair39;
i# 3$tidyF>errorZu##er9 :
echo "*he #ollo8inE errors 8ere detected@Vn";
echo $tidyF>errorZu##er;
;
?>
+l resultado del e'emplo seriaC
*he #ollo8inE errors 8ere detected@
line J column 61 F Error@ <bt> is not recoEni0ed!
line J column 61 F 7arninE@ discardinE unexpected <bt>
ee also tidy>parse>file./ and tidy>parse>string./;
tidy>diagnose
>P&P 4?
tidyZdiagnose 22 Run con(igured diagnostics on parsed and repaired mar"up
Kescription
Procedural styleC
#ool tidy>diagnose > tidy o#'ect ?
O#'ect oriented styleC
#ool tidy(Gdiagnose > void ?
tidy>diagnose./ runs diagnostic tests on the given tidy o1UectA adding some more in(ormation a#out
the document in the error #u((er;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. tidy>diagnose./ e+ample
<?php
$html > <<< H*"O
<!L?R*PE html +ZO4R "F//7<R//L*L XH*"O 6.2 &trict//E."
"http@//888.8<.orE/*'/xhtml6/L*L/xhtml6Fstrict.dtd">
<p>paraEraph</p>
H*"O;
$tidy > tidy%parse%strinE3$html9;
$tidyF>Rlean'epair39;
// note the di##erence bet8een the t8o outputs
echo tidy%Eet%error%bu##er3$tidy9 . "Vn";
$tidyF>diaEnose39;
echo tidy%Eet%error%bu##er3$tidy9;
?>
+l resultado del e'emplo seriaC
line 5 column 6 F 7arninE@ <p> isnMt allo8ed in <head> elements
line 5 column 6 F 7arninE@ insertinE missinE MtitleM element
line 5 column 6 F 7arninE@ <p> isnMt allo8ed in <head> elements
line 5 column 6 F 7arninE@ insertinE missinE MtitleM element
4n#o@ Loctype Ei=en is "F//7<R//L*L XH*"O 6.2 &trict//E."
4n#o@ Locument content looIs liIe XH*"O 6.2 &trict
C 8arninEs, 2 errors 8ere #ound!
ee also tidy>get>error>buffer./;
tidy>error>count
>P&P 4?
tidyZerrorZcount 22 Returns the Num#er o( ,idy errors encountered (or speci(ied document
Kescription
int tidy>error>count > tidy o#'ect ?
tidy>error>count./ returns the num#er o( ,idy errors encountered (or the speci(ied document;
E'emplo !. tidy>error>count./ e+ample
<?php
$html > M<p>test</i>
<boEustaE>boEus</boEustaE>M;
$tidy > tidy%parse%strinE3$html9;
echo tidy%error%count3$tidy9 . "Vn"; //6
echo $tidyF>ErrorZu##er;
?>
,he a#ove eFample Eill outputC
6
line 6 column 6 F 7arninE@ missinE <!L?R*PE> declaration
line 6 column J F 7arninE@ discardinE unexpected </i>
line C column 6 F Error@ <boEustaE> is not recoEni0ed!
line C column 6 F 7arninE@ discardinE unexpected <boEustaE>
line C column 6G F 7arninE@ discardinE unexpected </boEustaE>
line 6 column 6 F 7arninE@ insertinE missinE MtitleM element
ee also tidy>access>count./ and tidy>3arning>count./;
tidy>get>body
>P&P 4?
tidyZgetZ#ody 22 Returns a tidyNode O#'ect starting (rom the `#ody_ tag o( the tidy parse tree
Kescription
Procedural styleC
tidyNode tidy>get>body > tidy o#'ect ?
O#'ect oriented styleC
tidyNode tidy(Gbody > void ?
,his (unction returns a tidyNode o#'ect starting (rom the `#ody_ tag o( the tidy parse tree;
E'emplo !. tidy>get>body./ e+ample
<?php
$html > M
<html>
<head>
<title>test</title>
</head>
<body>
<p>paraEraph</p>
</body>
</html>M;
$tidy > tidy%parse%strinE3$html9;
$body > tidy%Eet%body3$tidy9;
echo $bodyF>=alue;
?>
+l resultado del e'emplo seriaC
<body>
<p>paraEraph</p>
</body>
Nota- +sta (uncion esta disponi#le solamente con Iend +ngine 0A o lo /ue es lo mismo
P&P _^ 4;3;3;
ee also tidy>get>head./ and tidy>get>html./;
tidy>get>config
>P&P 4?
tidyZgetZcon(ig 22 Get current ,idy con(iguration
Kescription
Procedural styleC
array tidy>get>config > tidy o#'ect ?
O#'ect oriented styleC
array tidy(GgetConfig > void ?
tidy>get>config./ returns an array Eith the con(iguration options in use #y the given tidy o1Uect;
For an eFplanation a#out each optionA visit httpCDDtidy;source(orge;netDdocsD/uic"re(;html;
E'emplo !. tidy>get>config./ e+ample
<?php
$html > M<p>test</p>M;
$con#iE > array3MindentM >> *'+E,
MoutputFxhtmlM >> *'+E,
M8rapM >> C229;
$tidy > tidy%parse%strinE3$html, $con#iE9;
print%r3tidy%Eet%con#iE3$tidy99;
?>
+l resultado del e'emplo seriaC
,rray
3
)indentFspaces/ >> C
)8rap/ >> C22
)tabFsi0e/ >> J
)charFencodinE/ >> 6
)inputFencodinE/ >> <
)outputFencodinE/ >> 6
)ne8line/ >> 6
)doctypeFmode/ >> 6
)doctype/ >>
)repeatedFattributes/ >> 6
)altFtext/ >>
)slideFstyle/ >>
)errorF#ile/ >>
)outputF#ile/ >>
)8riteFbacI/ >>
)marIup/ >> 6
)sho8F8arninEs/ >> 6
)Quiet/ >>
)indent/ >> 6
)hideFendtaEs/ >>
)inputFxml/ >>
)outputFxml/ >> 6
)outputFxhtml/ >> 6
)outputFhtml/ >>
)addFxmlFdecl/ >>
)uppercaseFtaEs/ >>
)uppercaseFattributes/ >>
)bare/ >>
)clean/ >>
)loEicalFemphasis/ >>
)dropFproprietaryFattributes/ >>
)dropF#ontFtaEs/ >>
)dropFemptyFparas/ >> 6
)#ixFbadFcomments/ >> 6
)breaIFbe#oreFbr/ >>
)split/ >>
)numericFentities/ >>
)QuoteFmarIs/ >>
)QuoteFnbsp/ >> 6
)QuoteFampersand/ >> 6
)8rapFattributes/ >>
)8rapFscriptFliterals/ >>
)8rapFsections/ >> 6
)8rapFasp/ >> 6
)8rapFjste/ >> 6
)8rapFphp/ >> 6
)#ixFbacIslash/ >> 6
)indentFattributes/ >>
)assumeFxmlFprocins/ >>
)addFxmlFspace/ >>
)encloseFtext/ >>
)encloseFblocIFtext/ >>
)IeepFtime/ >>
)8ordFC222/ >>
)tidyFmarI/ >>
)EnuFemacs/ >>
)EnuFemacsF#ile/ >>
)literalFattributes/ >>
)sho8FbodyFonly/ >>
)#ixFuri/ >> 6
)lo8erFliterals/ >> 6
)hideFcomments/ >>
)indentFcdata/ >>
)#orceFoutput/ >> 6
)sho8Ferrors/ >> G
)asciiFchars/ >> 6
)joinFclasses/ >>
)joinFstyles/ >> 6
)escapeFcdata/ >>
)lanEuaEe/ >>
ee also tidy>reset>config./ and tidy>sa5e>config./;
tidy>get>error>buffer
>P&P 4?
tidyZgetZerrorZ#u((er 22 Return Earnings and errors Ehich occurred parsing the speci(ied document
Kescription
Procedural styleC
string tidy>get>error>buffer > tidy o#'ect ?
O#'ect oriented style >property?C
class tidy \
string errorBu((er
]
tidy>get>error>buffer./ returns Earnings and errors Ehich occurred parsing the speci(ied
document;
E'emplo !. tidy>get>error>buffer./ e+ample
<?php
$html > M<p>paraEraph</p>M;
$tidy > tidy%parse%strinE3$html9;
echo tidy%Eet%error%bu##er3$tidy9;
/W or in ??@ W/
echo $tidyF>errorZu##er;
?>
+l resultado del e'emplo seriaC
line 6 column 6 F 7arninE@ missinE <!L?R*PE> declaration
line 6 column 6 F 7arninE@ insertinE missinE MtitleM element
ee also tidy>access>count./A tidy>error>count./ and tidy>3arning>count./;
tidy>get>head
>P&P 4?
tidyZgetZhead 22 Returns a tidyNode O#'ect starting (rom the `head_ tag o( the tidy parse tree
Kescription
Procedural styleC
tidyNode tidy>get>head > tidy o#'ect ?
O#'ect oriented styleC
tidyNode tidy(Ghead > void ?
,his (unction returns a tidyNode o#'ect starting (rom the `head_ tag o( the tidy parse tree;
E'emplo !. tidy>get>head./ e+ample
<?php
$html > M
<html>
<head>
<title>test</title>
</head>
<body>
<p>paraEraph</p>
</body>
</html>M;
$tidy > tidy%parse%strinE3$html9;
$head > tidy%Eet%head3$tidy9;
echo $headF>=alue;
?>
+l resultado del e'emplo seriaC
<head>
<title>test</title>
</head>
Nota- +sta (uncion esta disponi#le solamente con Iend +ngine 0A o lo /ue es lo mismo
P&P _^ 4;3;3;
ee also tidy>get>body./ and tidy>get>html./;
tidy>get>html>5er
>P&P 4?
tidyZgetZhtmlZver 22 Get the Detected &,ML version (or the speci(ied document
Kescription
Procedural styleC
int tidy>get>html>5er > tidy o#'ect ?
O#'ect oriented styleC
int tidy(GgetHtmlCer > void ?
tidy>get>html>5er./ returns the detected &,ML version (or the speci(ied tidy o1Uect;
A5iso
,his (unction is not yet implemented in the ,idyli# itsel(A so it alEays return 0;
tidy>get>html
>P&P 4?
tidyZgetZhtml 22 Returns a tidyNode O#'ect starting (rom the `html_ tag o( the tidy parse tree
Kescription
Procedural styleC
tidyNode tidy>get>html > tidy o#'ect ?
O#'ect oriented styleC
tidyNode tidy(Ghtml > void ?
,his (unction returns a tidyNode o#'ect starting (rom the `html_ tag o( the tidy parse tree;
E'emplo !. tidy>get>html./ e+ample
<?php
$html > M
<html>
<head>
<title>test</title>
</head>
<body>
<p>paraEraph</p>
</body>
</html>M;
$tidy > tidy%parse%strinE3$html9;
$html > tidy%Eet%html3$tidy9;
echo $htmlF>=alue;
?>
+l resultado del e'emplo seriaC
<html>
<head>
<title>test</title>
</head>
<body>
<p>paraEraph</p>
</body>
</html>
Nota- +sta (uncion esta disponi#le solamente con Iend +ngine 0A o lo /ue es lo mismo
P&P _^ 4;3;3;
ee also tidy>get>body./ and tidy>get>head./;
tidy>get>output
>P&P 4?
tidyZgetZoutput 22 Return a string representing the parsed tidy mar"up
Kescription
string tidy>get>output > tidy o#'ect ?
tidy>get>output./ returns a string Eith the repaired html;
E'emplo !. tidy>get>output./ e+ample
<?php
$html > M<p>paraEraph</i>M;
$tidy > tidy%parse%strinE3$html9;
$tidyF>Rlean'epair39;
echo tidy%Eet%output3$tidy9;
?>
+l resultado del e'emplo seriaC
<!L?R*PE html +ZO4R "F//7<R//L*L H*"O <.C//E.">
<html>
<head>
<title></title>
</head>
<body>
<p>paraEraph</p>
</body>
</html>
tidy>get>release
>P&P 4?
tidyZgetZrelease 22 Get release date >version? (or ,idy li#rary
Kescription
Procedural styleC
string tidy>get>release > void ?
O#'ect oriented styleC
string tidy(GgetMelease > void ?
,his (unction returns a string Eith the release date o( the ,idy li#rary;
tidy>get>root
>P&P 4?
tidyZgetZroot 22 Returns a tidyNode o#'ect representing the root o( the tidy parse tree
Kescription
Procedural styleC
tidyNode tidy>get>root > tidy o#'ect ?
O#'ect oriented styleC
tidyNode tidy(Groot > void ?
Returns a tidyNode o#'ect representing the root o( the tidy parse tree;
E'emplo !. dump nodes
<?php
$html > <<< H*"O
<html><body>
<p>paraEraph</p>
<br/>
</body></html>
H*"O;
$tidy > tidy%parse%strinE3$html9;
dump%nodes3$tidyF>root39, 69;
#unction dump%nodes3$node, $indent9 :
i#3$nodeF>hasRhildren399 :
#oreach3$nodeF>child as $child9 :
echo str%repeat3M.M, $indentWC9 . 3$childF>name ? $childF>name @ M"M.$childF>=alue.M"M9. "Vn";
dump%nodes3$child, $indent[69;
;
;
;
?>
+l resultado del e'emplo seriaC
..html
....head
......title
....body
......p
........"paraEraph"
......br
Nota- +sta (uncion esta disponi#le solamente con Iend +ngine 0A o lo /ue es lo mismo
P&P _^ 4;3;3;
tidy>get>status
>P&P 4?
tidyZgetZstatus 22 Get status o( speci(ied document
Kescription
Procedural styleC
int tidy>get>status > tidy o#'ect ?
O#'ect oriented styleC
int tidy(Gget,tatus > void ?
tidy>get>status./ returns the status (or the speci(ied tidy o1Uect; .t returns 3 i( no errorDEarning Eas
raisedA 1 (or Earnings or accessi#ility errorsA or 0 (or errors;
E'emplo !. tidy>get>status./ e+ample
<?php
$html > M<p>paraEraph</i>M;
$tidy > tidy%parse%strinE3$html9;
$htmlC > M<boEus>test</boEus>M;
$tidyC > tidy%parse%strinE3$htmlC9;
echo tidy%Eet%status3$tidy9; //6
echo tidy%Eet%status3$tidyC9; //C
?>
tidy>getopt
>P&P 4?
tidyZgetopt 22 Returns the value o( the speci(ied con(iguration option (or the tidy document
Kescription
Procedural styleC
miFed tidy>getopt > tidy o#'ectA string option ?
O#'ect oriented styleC
miFed tidy(GgetJpt > string option ?
tidy>getopt./ returns the value o( the speci(ied opt6on (or the speci(ied tidy o1Uect; ,he return type
depends on the type o( the speci(ied opt6on; %ou Eill (ind a list Eith each con(iguration option and
their types atC httpCDDtidy;source(orge;netDdocsD/uic"re(;html;
E'emplo !. tidy>getopt./ e+ample
<?php
$html >M<!L?R*PE html +ZO4R "F//7<R//L*L H*"O <.C//E.">
<html><head><title>*itle</title></head>
<body>
<p><imE src>"imE.pnE"></p>
</body></html>M;
$con#iE > array3MaccessibilityFchecIM >> <,
MaltFtextM >> Msome textM9;
$tidy > ne8 tidy39;
$tidyF>parse&trinE3$html, $con#iE9;
=ar%dump3$tidyF>Eet?pt3MaccessibilityFchecIM99; //inteEer
=ar%dump3$tidyF>Eet?pt3Mlo8erFliteralsM99; //boolean
=ar%dump3$tidyF>Eet?pt3MaltFtextM99; //strinE
?>
+l resultado del e'emplo seriaC
int3<9
bool3true9
strinE3K9 "some text"
tidy>is>+html
>P&P 4?
tidyZisZFhtml 22 .ndicates i( the document is a J&,ML document
Kescription
Procedural styleC
#ool tidy>is>+html > tidy o#'ect ?
O#'ect oriented styleC
#ool tidy(GisIhtml > void ?
,his (unction returns TRUE i( the speci(ied tidy o1Uect is a J&,ML documentA or FALSE
otherEise;
A5iso
,his (unction is not yet implemented in the ,idyli# itsel(A so it alEays return FALSE;
tidy>is>+ml
>P&P 4?
tidyZisZFml 22 .ndicates i( the document is a generic >non &,MLDJ&,ML? JML document
Kescription
Procedural styleC
#ool tidy>is>+ml > tidy o#'ect ?
O#'ect oriented styleC
#ool tidy(GisIml > void ?
,his (unction returns TRUE i( the speci(ied tidy o1Uect is a generic JML document >non
&,MLDJ&,ML?A or FALSE otherEise;
A5iso
,his (unction is not yet implemented in the ,idyli# itsel(A so it alEays return FALSE;
tidy>load>config
>no version in(ormationA might #e only in 5$?
tidyZloadZcon(ig 22 Load an A5.. ,idy con(iguration (ile Eith the speci(ied encoding
Kescription
void tidy>load>config > string (ilenameA string encoding ?
,his (unction loads a ,idy con(iguration (ileA Eith the speci(ied enco#6nE;
Nota- +sta (uncion esta disponi#le solamente con ,idy 1;3; e de'o de utilizar en ,idy
0;3 y por lo tanto no se encuentra dispo#i#le actualmente;
tidy>node(Gchildren
>no version in(ormationA might #e only in 5$?
tidyZnode2_children 22 Returns an array o( child nodes
Kescription
array tidy>node(Gchildren > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
tidy>node(Gget>attr
>no version in(ormationA might #e only in 5$?
tidyZnode2_getZattr 22 Return the attri#ute Eith the provided attri#ute id
Kescription
tidyZattr tidy>node(Gget>attr > int attri#Zid ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
tidy>node(Gget>nodes
>no version in(ormationA might #e only in 5$?
tidyZnode2_getZnodes 22 Return an array o( nodes under this node Eith the speci(ied id
Kescription
array tidy>node(Gget>nodes > int nodeZid ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
tidy>node(GhasChildren
>no version in(ormationA might #e only in 5$?
tidyZnode2_has5hildren 22 Returns true i( this node has children
Kescription
#ool tidy>node(GhasChildren > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- ,his (unction Eas named tidy>node(Ghas>children./ in P&P 8D,idy 1;
tidy>node(Ghas,iblings
>no version in(ormationA might #e only in 5$?
tidyZnode2_hasi#lings 22 Returns true i( this node has si#lings
Kescription
#ool tidy>node(Ghas,iblings > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- ,his (unction Eas named tidy>node(Ghas>siblings./ in P&P 8D,idy 1;
tidy>node(GisComment
>no version in(ormationA might #e only in 5$?
tidyZnode2_is5omment 22 Returns true i( this node represents a comment
Kescription
#ool tidy>node(GisComment > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- ,his (unction Eas named tidy>node(Gis>comment./ in P&P 8D,idy 1;
tidy>node(GisHtml
>no version in(ormationA might #e only in 5$?
tidyZnode2_is&tml 22 Returns true i( this node is part o( a &,ML document
Kescription
#ool tidy>node(GisHtml > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- ,his (unction Eas named tidy>node(Gis>html./ in P&P 8D,idy 1;
tidy>node(Gis[ste
>no version in(ormationA might #e only in 5$?
tidyZnode2_is!ste 22 Returns true i( this node is !,+
Kescription
#ool tidy>node(Gis[ste > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- ,his (unction Eas named tidy>node(Gis>'ste./ in P&P 8D,idy 1;
tidy>node(GisTe+t
>no version in(ormationA might #e only in 5$?
tidyZnode2_is,eFt 22 Returns true i( this node represents teFt >no mar"up?
Kescription
#ool tidy>node(GisTe+t > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- ,his (unction Eas named tidy>node(Gis>te+t./ in P&P 8D,idy 1;
tidy>node(GisIhtml
>no version in(ormationA might #e only in 5$?
tidyZnode2_isJhtml 22 Returns true i( this node is part o( a J&,ML document
Kescription
#ool tidy>node(GisIhtml > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- ,his (unctions Eas named tidy>node(Gis>+html./ in P&P 8D,idy 1;
tidy>node(GisIml
>no version in(ormationA might #e only in 5$?
tidyZnode2_isJml 22 Returns true i( this node is part o( a JML document
Kescription
#ool tidy>node(GisIml > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- ,his (unction Eas named tidy>node(Gis>+ml./ in P&P 8D,idy 1;
tidy>node(Gne+t
>no version in(ormationA might #e only in 5$?
tidyZnode2_neFt 22 Returns the neFt si#ling to this node
Kescription
tidyZnode tidy>node(Gne+t > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
tidy>node(Gpre5
>no version in(ormationA might #e only in 5$?
tidyZnode2_prev 22 Returns the previous si#ling to this node
Kescription
tidyZnode tidy>node(Gpre5 > void ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
tidy>parse>file
>P&P 4?
tidyZparseZ(ile 22 Parse mar"up in (ile or @R.
Kescription
Procedural styleC
tidy tidy>parse>file > string (ilename PA miFed con(ig PA string encoding PA #ool
useZincludeZpathQQQ ?
O#'ect oriented styleC
#ool tidy(Gparse;ile > string (ilename PA miFed con(ig PA string encoding PA #ool useZincludeZpathQQQ
?
,his (unction parses the given (ile;
+l parametro con96E puede ser enviado como una matriz o como una cadena al(anumerica; i se
envia como una cadena al(anumericaA signica /ue sera interpretado como el nom#re del (ichero de
con(iguracionA de lo contrarioA como opciones; 5onsultar
httpCDDtidy;source(orge;netDdocsD/uic"re(;html para una eFplicacion de todas las opciones;
+l parametro enco#6nE de(ine la codi(icacion para las salidasDentradas de los documentos; Los
valores /ue se pueden utilizar son asciiA latin3A latin1A raEA ut(MA iso0300A macA Ein1040A i#mM4MA
ut(1KA ut(1KleA ut(1K#eA #ig4 and shi(t'is;
E'emplo !. tidy>parse>file./ e+ample
<?php
$tidy > tidy%parse%#ile3M#ile.htmlM9;
$tidyF>clean'epair39;

i#3!empty3$tidyF>errorZu##er99 :
echo "*he #ollo8inE errors or 8arninEs occured@Vn";
echo $tidyF>errorZu##er;
;
?>
Nota- Los parametros adicionales con96E y enco#6nE se encuentran disponi#les a partir
de ,idy 0;3;
ee also tidy>parse>string./A tidy>parse>string./ and tidy>repair>string./;
tidy>parse>string
>P&P 4?
tidyZparseZstring 22 Parse a document stored in a string
Kescription
Procedural styleC
tidy tidy>parse>string > string input PA miFed con(ig PA string encodingQQ ?
O#'ect oriented styleC
#ool tidy(Gparse,tring > string input PA miFed con(ig PA string encodingQQ ?
tidy>parse>string./ parses a document stored in a string;
+l parametro con96E puede ser enviado como una matriz o como una cadena al(anumerica; i se
envia como una cadena al(anumericaA signica /ue sera interpretado como el nom#re del (ichero de
con(iguracionA de lo contrarioA como opciones; 5onsultar
httpCDDtidy;source(orge;netDdocsD/uic"re(;html para una eFplicacion de todas las opciones;
+l parametro enco#6nE de(ine la codi(icacion para las salidasDentradas de los documentos; Los
valores /ue se pueden utilizar son asciiA latin3A latin1A raEA ut(MA iso0300A macA Ein1040A i#mM4MA
ut(1KA ut(1KleA ut(1K#eA #ig4 and shi(t'is;
E'emplo !. tidy>parse>string./ e+ample
<?php
ob%start39;
?>
<html>
<head>
<title>test</title>
</head>
<body>
<p>error<br>another line</i>
</body>
</html>
<?php
$bu##er > ob%Eet%clean39;
$con#iE > array3MindentM >> *'+E,
MoutputFxhtmlM >> *'+E,
M8rapM >> C229;
$tidy > tidy%parse%strinE3$bu##er, $con#iE, M+*SJM9;
$tidyF>clean'epair39;
echo $tidy;
?>
,he a#ove eFample Eill outputC
<!L?R*PE html +ZO4R "F//7<R//L*L XH*"O 6.2 &trict//E."
"http@//888.8<.orE/*'/xhtml6/L*L/xhtml6Fstrict.dtd">
<html xmlns>"http@//888.8<.orE/6KKK/xhtml">
<head>
<title>
test
</title>
</head>
<body>
<p>
error<br />
another line
</p>
</body>
</html>
Nota- Los parametros adicionales con96E y enco#6nE se encuentran disponi#les a partir
de ,idy 0;3;
ee also tidy>parse>file./A tidy>repair>file./ and tidy>repair>string./;
tidy>repair>file
>P&P 4?
tidyZrepairZ(ile 22 Repair a (ile and return it as a string
Kescription
string tidy>repair>file > string (ilename PA miFed con(ig PA string encoding PA #ool
useZincludeZpathQQQ ?
,his (unction repairs the given (ile and returns it as a string;
+l parametro con96E puede ser enviado como una matriz o como una cadena al(anumerica; i se
envia como una cadena al(anumericaA signica /ue sera interpretado como el nom#re del (ichero de
con(iguracionA de lo contrarioA como opciones; 5onsultar
httpCDDtidy;source(orge;netDdocsD/uic"re(;html para una eFplicacion de todas las opciones;
+l parametro enco#6nE de(ine la codi(icacion para las salidasDentradas de los documentos; Los
valores /ue se pueden utilizar son asciiA latin3A latin1A raEA ut(MA iso0300A macA Ein1040A i#mM4MA
ut(1KA ut(1KleA ut(1K#eA #ig4 and shi(t'is;
E'emplo !. tidy>repair>file./ e+ample
<?php
$#ile > M#ile.htmlM;
$repaired > tidy%repair%#ile3$#ile9;
rename3$#ile, $#ile . M.baIM9;
#ile%put%contents3$#ile, $repaired9;
?>
Nota- Los parametros adicionales con96E y enco#6nE se encuentran disponi#les a partir
de ,idy 0;3;
ee also tidy>parse>file./A tidy>parse>string./ and tidy>repair>string./;
tidy>repair>string
>P&P 4?
tidyZrepairZstring 22 Repair a string using an optionally provided con(iguration (ile
Kescription
string tidy>repair>string > string data PA miFed con(ig PA string encodingQQ ?
,his (unction repairs the given string;
+l parametro con96E puede ser enviado como una matriz o como una cadena al(anumerica; i se
envia como una cadena al(anumericaA signica /ue sera interpretado como el nom#re del (ichero de
con(iguracionA de lo contrarioA como opciones; 5onsultar
httpCDDtidy;source(orge;netDdocsD/uic"re(;html para una eFplicacion de todas las opciones;
+l parametro enco#6nE de(ine la codi(icacion para las salidasDentradas de los documentos; Los
valores /ue se pueden utilizar son asciiA latin3A latin1A raEA ut(MA iso0300A macA Ein1040A i#mM4MA
ut(1KA ut(1KleA ut(1K#eA #ig4 and shi(t'is;
E'emplo !. tidy>repair>string./ e+ample
<?php
ob%start39;
?>
<html>
<head>
<title>test</title>
</head>
<body>
<p>error</i>
</body>
</html>
<?php
$bu##er > ob%Eet%clean39;
$tidy > tidy%repair%strinE3$bu##er9;
echo $tidy;
?>
,he a#ove eFample Eill outputC
<!L?R*PE html +ZO4R "F//7<R//L*L H*"O <.C//E.">
<html>
<head>
<title>test</title>
</head>
<body>
<p>error</p>
</body>
</html>
Nota- Los parametros adicionales con96E y enco#6nE se encuentran disponi#les a partir
de ,idy 0;3;
ee also tidy>parse>file./A tidy>parse>string./ and tidy>repair>file./;
tidy>reset>config
>no version in(ormationA might #e only in 5$?
tidyZresetZcon(ig 22 Restore ,idy con(iguration to de(ault values
Kescription
#ool tidy>reset>config > void ?
,his (unction restores the ,idy con(iguration to the de(ault values;
Nota- +sta (uncion esta disponi#le solamente con ,idy 1;3; e de'o de utilizar en ,idy
0;3 y por lo tanto no se encuentra dispo#i#le actualmente;
tidy>sa5e>config
>no version in(ormationA might #e only in 5$?
tidyZsaveZcon(ig 22 ave current settings to named (ile
Kescription
#ool tidy>sa5e>config > string (ilename ?
tidy>sa5e>config./ saves current settings to the speci(ied (ile; Only non2de(ault values are Eritten;
ee also tidy>get>config./A tidy>getopt./A tidy>reset>config./ and tidy>setopt./;
Nota- +sta (uncion esta disponi#le solamente con ,idy 1;3; e de'o de utilizar en ,idy
0;3 y por lo tanto no se encuentra dispo#i#le actualmente;
tidy>set>encoding
>no version in(ormationA might #e only in 5$?
tidyZsetZencoding 22 et the inputDoutput character encoding (or parsing mar"up
Kescription
#ool tidy>set>encoding > string encoding ?
ets the encoding (or inputDoutput documents; Devuelve TRUE si todo se llev- a ca#o
correctamenteA FALSE en caso de (allo; Possi#le values (or enco#6nE are asciiA latin3A latin1A raEA
ut(MA iso0300A macA Ein1040A i#mM4MA ut(1KA ut(1KleA ut(1K#eA #ig4 and shi(t'is
Nota- +sta (uncion esta disponi#le solamente con ,idy 1;3; e de'o de utilizar en ,idy
0;3 y por lo tanto no se encuentra dispo#i#le actualmente;
tidy>setopt
>no version in(ormationA might #e only in 5$?
tidyZsetopt 22 @pdates the con(iguration settings (or the speci(ied tidy document
Kescription
#ool tidy>setopt > string optionA miFed value ?
tidy>setopt./ updates the speci(ied opt6on Eith a neE alue;
E'emplo !. tidy>setopt./ e+ample
<?php
$html > M<p>test</i>M;
$tidy > tidy%parse%strinE3$html9;
tidy%setopt3MindentM, S,O&E9;
?>
ee also tidy>getopt./A tidy>get>config./A tidy>reset>config./ and tidy>sa5e>config./;
Nota- +sta (uncion esta disponi#le solamente con ,idy 1;3; e de'o de utilizar en ,idy
0;3 y por lo tanto no se encuentra dispo#i#le actualmente;
tidy>3arning>count
>P&P 4?
tidyZEarningZcount 22 Returns the Num#er o( ,idy Earnings encountered (or speci(ied document
Kescription
int tidy>3arning>count > tidy o#'ect ?
tidy>3arning>count./ returns the num#er o( ,idy Earnings encountered (or the speci(ied
document;
E'emplo !. tidy>3arning>count./ e+ample
<?php
$html > M<p>test</i>
<boEustaE>boEus</boEustaE>M;
$tidy > tidy%parse%strinE3$html9;
echo tidy%error%count3$tidy9 . "Vn"; //6
echo tidy%8arninE%count3$tidy9 . "Vn"; //5
?>
ee also tidy>access>count./ and tidy>error>count./;
tidyNode(GisAsp
>no version in(ormationA might #e only in 5$?
tidyNode2_isAsp 22 Returns true i( this node is AP
Kescription
#ool tidyNode(GisAsp > void ?
,his (unctions returns TRUE i( the current node is APA or FALSE otherEise;
Nota- ,his (unction Eas named tidy>node(Gis>asp./ in P&P 8D,idy 1;
tidyNode(GisPhp
>no version in(ormationA might #e only in 5$?
tidyNode2_isPhp 22 Returns true i( this node is P&P
Kescription
#ool tidyNode(GisPhp > void ?
Returns TRUE i( the current node is P&P codeA FALSE otherEise;
E'emplo !. get the PHP code from a mi+ed HTM:APHP document
<?php
$html > <<< H*"O
<html><head>
<?php echo M<title>title</title>M; ?>
</head>
<body>
<?php
echo Mhello 8orld!M;
?>
</body></html>
H*"O;
$tidy > tidy%parse%strinE3$html9;
$num > 2;
Eet%php3$tidyF>html399;
#unction Eet%php3$node9 :
// checI i# the current node is H code
i#3$nodeF>ishp399 :
echo "VnVnU H node U" . [[$-O?Z,O&)MnumM/ . "Vn";
echo $nodeF>=alue;
;
// checI i# the current node has childrens
i#3$nodeF>hasRhildren399 :
#oreach3$nodeF>child as $child9 :
Eet%php3$child9;
;
;
;
?>
+l resultado del e'emplo seriaC
U H node U6
<?php echo M<title>title</title>M; ?>
U H node UC
<?php
echo Mhello 8orld!M;
?>
Nota- ,his (unction Eas named tidy>node(Gis>php./ in P&P 8D,idy 1;
CIICI. ToBeni6er ;unctions
Introducci"n
,he to"enizer (unctions provide an inter(ace to the P&P to"enizer em#edded in the Iend +ngine;
@sing these (unctions you may Erite your oEn P&P source analyzing or modi(ication tools Eithout
having to deal Eith the language speci(ication at the leFical level;
ee also the appendiF a#out to"ens;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
Beginning Eith P&P 8;7;3 these (unctions are ena#led #y de(ault; For older versions you have to
con(igure and compile P&P Eith ==ena1le=to>en6Der; %ou can disa#le to"enizer support Eith ==
#6sa1le=to>en6Der;
La versi-n para LindoEs de +!+ tiene soporte nativo para esta eFtensi-n; No se necesita cargar
ninguna eFtensi-n adicional para usar estas (unciones;
Nota- Builtin support (or to"enizer is availa#le Eith P&P 8;7;3;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
T_INCLUDE >integer?
T_INCLUDE_ONCE >integer?
T_E$AL >integer?
T_RE.UIRE >integer?
T_RE.UIRE_ONCE >integer?
T_LO#ICAL_OR >integer?
T_LO#ICAL_%OR >integer?
T_LO#ICAL_AND >integer?
T_PRINT >integer?
T_PLUS_E.UAL >integer?
T_MINUS_E.UAL >integer?
T_MUL_E.UAL >integer?
T_DI$_E.UAL >integer?
T_CONCAT_E.UAL >integer?
T_MOD_E.UAL >integer?
T_AND_E.UAL >integer?
T_OR_E.UAL >integer?
T_%OR_E.UAL >integer?
T_SL_E.UAL >integer?
T_SR_E.UAL >integer?
T_(OOLEAN_OR >integer?
T_(OOLEAN_AND >integer?
T_IS_E.UAL >integer?
T_IS_NOT_E.UAL >integer?
T_IS_IDENTICAL >integer?
T_IS_NOT_IDENTICAL >integer?
T_IS_SMALLER_OR_E.UAL >integer?
T_IS_#REATER_OR_E.UAL >integer?
T_SL >integer?
T_SR >integer?
T_INC >integer?
T_DEC >integer?
T_INT_CAST >integer?
T_DOU(LE_CAST >integer?
T_STRIN#_CAST >integer?
T_ARRAY_CAST >integer?
T_O('ECT_CAST >integer?
T_(OOL_CAST >integer?
T_UNSET_CAST >integer?
T_NE" >integer?
T_E%IT >integer?
T_IF >integer?
T_ELSEIF >integer?
T_ELSE >integer?
T_ENDIF >integer?
T_LNUM(ER >integer?
T_DNUM(ER >integer?
T_STRIN# >integer?
T_STRIN#_$ARNAME >integer?
T_$ARIA(LE >integer?
T_NUM_STRIN# >integer?
T_INLINE_HTML >integer?
T_CHARACTER >integer?
T_(AD_CHARACTER >integer?
T_ENCAPSED_AND_"HITESPACE >integer?
T_CONSTANT_ENCAPSED_STRIN# >integer?
T_ECHO >integer?
T_DO >integer?
T_"HILE >integer?
T_END"HILE >integer?
T_FOR >integer?
T_ENDFOR >integer?
T_FOREACH >integer?
T_ENDFOREACH >integer?
T_DECLARE >integer?
T_ENDDECLARE >integer?
T_AS >integer?
T_S"ITCH >integer?
T_ENDS"ITCH >integer?
T_CASE >integer?
T_DEFAULT >integer?
T_(REA& >integer?
T_CONTINUE >integer?
T_OLD_FUNCTION >integer?
T_OLD_FUNCTION is not de(ined in P&P 4;
T_FUNCTION >integer?
T_CONST >integer?
T_RETURN >integer?
T_USE >integer?
T_#LO(AL >integer?
T_STATIC >integer?
T_$AR >integer?
T_UNSET >integer?
T_ISSET >integer?
T_EMPTY >integer?
T_CLASS >integer?
T_E%TENDS >integer?
T_O('ECT_OPERATOR >integer?
T_DOU(LE_ARRO" >integer?
T_LIST >integer?
T_ARRAY >integer?
T_LINE >integer?
T_FILE >integer?
T_COMMENT >integer?
T_ML_COMMENT >integer?
T_ML_COMMENT is not de(ined in P&P 4; All comments in P&P 4 are o( to"en T_COMMENT;
T_DOC_COMMENT >integer?
T_DOC_COMMENT Eas introduced in P&P 4;
T_OPEN_TA# >integer?
T_OPEN_TA#_"ITH_ECHO >integer?
T_CLOSE_TA# >integer?
T_"HITESPACE >integer?
T_START_HEREDOC >integer?
T_END_HEREDOC >integer?
T_DOLLAR_OPEN_CURLY_(RACES >integer?
T_CURLY_OPEN >integer?
T_PAAMAYIM_NE&UDOTAYIM >integer?
T_DOU(LE_COLON >integer?
T_INTERFACE >integer?
P&P 4 only;
T_IMPLEMENTS >integer?
P&P 4 only;
T_CLASS_C >integer?
P&P 4 only;
T_FUNC_C >integer?
P&P 4 only;
T_METHOD_C >integer?
P&P 4 only;
T_A(STRACT >integer?
P&P 4 only;
T_CATCH >integer?
P&P 4 only;
T_FINAL >integer?
P&P 4 only;
T_INSTANCEOF >integer?
P&P 4 only;
T_PRI$ATE >integer?
P&P 4 only;
T_PROTECTED >integer?
P&P 4 only;
T_PU(LIC >integer?
P&P 4 only;
T_THRO" >integer?
P&P 4 only;
T_TRY >integer?
P&P 4 only;
T_CLONE >integer?
P&P 4 only;
E'emplos
&ere is a simple eFample P&P scripts using the to"enizer that Eill read in a P&P (ileA strip all
comments (rom the source and print the pure code only;
E'emplo !. ,trip comments 3ith the toBeni6er
<?php
/W
W *%"O%R?""E.* does not exist in H 5.
W *he #ollo8inE three lines de#ine it in order to
W preser=e bacI8ards compatibility.
W
W *he next t8o lines de#ine the H 5 only *%L?R%R?""E.*,
W 8hich 8e 8ill masI as *%"O%R?""E.* #or H 1.
W/
i# 3!de#ined3M*%"O%R?""E.*M99 :
de#ine3M*%"O%R?""E.*M, *%R?""E.*9;
; else :
de#ine3M*%L?R%R?""E.*M, *%"O%R?""E.*9;
;
$source > #ile%Eet%contents3Mexample.phpM9;
$toIens > toIen%Eet%all3$source9;
#oreach 3$toIens as $toIen9 :
i# 3is%strinE3$toIen99 :
// simple 6Fcharacter toIen
echo $toIen;
; else :
// toIen array
list3$id, $text9 > $toIen;

s8itch 3$id9 :
case *%R?""E.*@
case *%"O%R?""E.*@ // 8eM=e de#ined this
case *%L?R%R?""E.*@ // and this
// no action on comments
breaI;
de#ault@
// anythinE else F> output "as is"
echo $text;
breaI;
;
;
;
?>
Tabla de contenidos
to"enZgetZall 22 plit given source into P&P to"ens
to"enZname 22 Get the sym#olic name o( a given P&P to"en
toBen>get>all
>P&P 8 _^ 8;0;3A P&P 4?
to"enZgetZall 22 plit given source into P&P to"ens
Kescripci"n
array toBen>get>all > string source ?
toBen>get>all./ parses the given source string into P&P language to"ens using the Iend engineHs
leFical scanner;
For a list o( parser to"ensA see Ap<ndice PA or use toBen>name./ to translate a to"en value into its
string representation;
:ista de parmetros
source
,he P&P source to parse;
Calores retornados
An array o( to"en identi(iers; +ach individual to"en identi(ier is either a single character >i;e;C JA .A &A
_A etc;;;?A or a tEo element array containing the to"en indeF in element 3A and the string content o(
the original to"en in element 1;
E'emplos
E'emplo !. toBen>get>all./ e+amples
<?php
$toIens > toIen%Eet%all3M<?phpM9; // >> array3array3*%?E.%*,-, M<?M99;
$toIens > toIen%Eet%all3M<?php echo; ?>M9; /W >> array3
array3*%?E.%*,-, M<?phpM9,
array3*%ERH?, MechoM9,
M;M,
array3*%RO?&E%*,-, M?>M9 9; W/
/W .ote in the #ollo8inE example that the strinE is parsed as *%4.O4.E%H*"O
rather than the other8ise expected *%R?""E.* 3*%"O%R?""E.* in H <59.
*his is because no open/close taEs 8ere used in the "code" pro=ided.
*his 8ould be Dalent to puttinE a comment outside o# <?php ?> taEs in a normal #ile. W/
$toIens > toIen%Eet%all3M/W comment W/M9; // >> array3array3*%4.O4.E%H*"O, M/W comment W/M99;
?>
toBen>name
>P&P 8 _^ 8;0;3A P&P 4?
to"enZname 22 Get the sym#olic name o( a given P&P to"en
Kescripci"n
string toBen>name > int to"en ?
toBen>name./ gets the sym#olic name (or a P&P to>en value;
:ista de parmetros
to>en
,he to"en value;
Calores retornados
,he sym#olic name o( the given to>en; ,he returned name returned matches the name o( the
matching to"en constant;
E'emplos
E'emplo !. toBen>name./ e+ample
<?php
// CG2 is the toIen =alue #or the *%'EN+4'E toIen
echo toIen%name3CG29; // F> "*%'EN+4'E"
// a toIen constant maps to its o8n name
echo toIen%name3*%S+.R*4?.9; // F> "*%S+.R*4?."
?>
Cer tambi%n
List o( Parser ,o"ens
CIICII. JK1C functions
Tabla de contenidos
od#cZautocommit 22 .nterruptor de comportamiento de auto2entrega
od#cZ#inmode 22 Mane'o de campos de datos #inarios
od#cZcloseZall 22 5ierra todas las coneFiones ODB5
od#cZclose 22 5ierra una coneFion ODB5
od#cZcolumnprivileges 22 Returns a result identi(ier that can #e used to (etch a list o( columns and
associated privileges
od#cZcolumns 22 Lists the column names in speci(ied ta#les
od#cZcommit 22 +ntrega una transaccion ODB5
od#cZconnect 22 5onecta a una (uente de datos
od#cZcursor 22 ,oma un nom#re de cursor
od#cZdataZsource 22 Returns in(ormation a#out a current connection
od#cZdo 22 sinonimo de odbc>e+ec./
od#cZerror 22 Get the last error code
od#cZerrormsg 22 Get the last error message
od#cZeFec 22 Prepara o e'ecuta una declaracion OL
od#cZeFecute 22 e'ecuta una declaracion preparada
od#cZ(etchZarray 22 Fetch a result roE as an associative array
od#cZ(etchZinto 22 Busca un registro de resutados dentro de un vector
od#cZ(etchZo#'ect 22 Fetch a result roE as an o#'ect
od#cZ(etchZroE 22 Busca un registro
od#cZ(ieldZlen 22 Da la longitud de un campo
od#cZ(ieldZname 22 Devuelve el nom#re de campo
od#cZ(ieldZnum 22 Devuelve el numero de campo
od#cZ(ieldZprecision 22 ynonym (or odbc>field>len./
od#cZ(ieldZscale 22 Get the scale o( a (ield
od#cZ(ieldZtype 22 ,ipo de datos de un campo
od#cZ(oreign"eys 22 Returns a list o( (oreign "eys in the speci(ied ta#le or a list o( (oreign "eys in
other ta#les that re(er to the primary "ey in the speci(ied ta#le
od#cZ(reeZresult 22 recursos li#res asociados con un resultado
od#cZgettypein(o 22 Returns a result identi(ier containing in(ormation a#out data types supported #y
the data source
od#cZlongreadlen 22 mane'o de LONG.,@D de columnas
od#cZneFtZresult 22 5hec"s i( multiple results are availa#le
od#cZnumZ(ields 22 numero de campos de un resultado
od#cZnumZroEs 22 Numero de campos en un resultado
od#cZpconnect 22 A#re una coneFion permanente de #ase de datos
od#cZprepare 22 Prepara una declaracion para su e'ecucion
od#cZprimary"eys 22 Returns a result identi(ier that can #e used to (etch the column names that
comprise the primary "ey (or a ta#le
od#cZprocedurecolumns 22 Retrieve in(ormation a#out parameters to procedures
od#cZprocedures 22 Get the list o( procedures stored in a speci(ic data source
od#cZresultZall 22 Print result as &,ML ta#le
od#cZresult 22 coge in(ormacion de un campo
od#cZroll#ac" 22 $olver a pasar una transacion
od#cZsetoption 22 A'usta la con(iguracion de ODB5; Devuelve FALSE en caso de errorA en otro
caso TRUE;
od#cZspecialcolumns 22 Returns either the optimal set o( columns that uni/uely identi(ies a roE in
the ta#le or columns that are automatically updated Ehen any value in the roE is updated #y a
transaction
od#cZstatistics 22 Retrieve statistics a#out a ta#le
od#cZta#leprivileges 22 Lists ta#les and the privileges associated Eith each ta#le
od#cZta#les 22 Get the list o( ta#le names stored in a speci(ic data source
odbc>autocommit
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZautocommit 22 .nterruptor de comportamiento de auto2entrega
Kescripcion
int odbc>autocommit > int connectionZid PA int OnO((Q ?
in el parametro OnO99A esta (uncion devuelve el estado de auto2entrega para connect6on_6#;
Devuelve TRUE si auto2entrega esta ha#ilitadoA y FALSE si no lo esta o ha ocurrido un error;
i OnO99 es TRUEA auto2entrega esta activadoA si es FALSE auto2entrega esta desactivado; Devuelve
TRUE cuando se cumpleA FALSE cuando (alla;
Por de(ectoA auto2entrega es para una coneFion; Desa#ilitar auto2entrega es como comenzar una
transaccion;
$er tam#ien odbc>commit./ y odbc>rollbacB./;
odbc>binmode
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZ#inmode 22 Mane'o de campos de datos #inarios
Kescripcion
int odbc>binmode > int resultZidA int mode ?
>+lementos a(ectados ODB5 OLC B.NAR%A $ARB.NAR%A LONG$ARB.NAR%?
ODB5ZB.NMOD+ZPA,&R@C Paso a traves de datos #inarios
ODB5ZB.NMOD+ZR+,@RNC Devuelve como es
ODB5ZB.NMOD+Z5ON$+R,C Devuelve convertido en caracter
5uando los datos #inarios en OL son convertidos a datos caracter en 5A cada #yte >M #its? de datos
(uente es representada como dos caracteres en A5..; +sos caracteres son la representacion en
A5.. de los numeros en su (orma &eFadecimal; Por e'emploA un 33333331 #inario es convertido a
*01* y un 11111111 #inario es convertido a *33*;
Tabla !. Mane'o de :JNFCAM1INAM@
modo binario longreadlen resultado
ODB5ZB.NMOD+ZPA,&R
@
3 passthru
ODB5ZB.NMOD+ZR+,@RN 3 passthru
ODB5ZB.NMOD+Z5ON$+R, 3 passthru
ODB5ZB.NMOD+ZPA,&R
@
3 passthru
ODB5ZB.NMOD+ZPA,&R
@
_3 passthru
ODB5ZB.NMOD+ZR+,@RN _3 Devuleve como es
ODB5ZB.NMOD+Z5ON$+R, _3
Devuelve como
caracter
i usamos odbc>fetch>into./A passthru signi(icara /ue una cadena vacia es devuelta por esas
campos;
i result_6# es 0A las de(iniciones se aplican por de(ecto para nuevos resultados;
Nota- Por de(ectoA longreadlen es ;0OX y el modo #inario por de(ecto es
ODAC_A0NMODE_RETURN; +l mane'o de campos #inarias largas tam#ien esta
a(ectado por odbc>longreadlen./
odbc>close>all
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZcloseZall 22 5ierra todas las coneFiones ODB5
Kescripcion
void odbc>close>all > void ?
odbc>close>all./ cerrara todas las coneFiones a servidor>es? de #ases de datos;
Nota- +sta (uncion (allara si hay transacciones a#iertas so#re esta coneFion; La
coneFion /uedara a#ierta en ese caso;
odbc>close
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZclose 22 5ierra una coneFion ODB5
Kescripcion
void odbc>close > int connectionZid ?
odbc>close./ cerrara la coneFion al servidor de #ases datos asociado con el identi(icador de
coneFion dado;
Nota- +sta (uncion (allara si hay transacciones a#iertas so#re esta coneFion; La
coneFion /uedara a#ierta en ese caso;
odbc>columnpri5ileges
>P&P 8 A P&P 4?
od#cZcolumnprivileges 22 Returns a result identi(ier that can #e used to (etch a list o( columns and
associated privileges
Kescription
resource odbc>columnpri5ileges > resource connectionZidA string /uali(ierA string oEnerA string
ta#leZnameA string columnZname ?
Lists columns and associated privileges (or the given ta#le; Returns an ODB5 result identi(ier or
FALSE on (ailure;
,he result set has the (olloEing columnsC
,ABL+ZO@AL.F.+R
,ABL+ZOLN+R
,ABL+ZNAM+
GRAN,OR
GRAN,++
PR.$.L+G+
.ZGRAN,ABL+
,he result set is ordered #y ,ABL+ZO@AL.F.+RA ,ABL+ZOLN+R and ,ABL+ZNAM+;
,he column_name argument accepts search patterns >HbH to match zero or more characters and HZH to
match a single character?;
odbc>columns
>P&P 8 A P&P 4?
od#cZcolumns 22 Lists the column names in speci(ied ta#les
Kescription
resource odbc>columns > resource connectionZid PA string /uali(ier PA string schema PA string
ta#leZname PA string columnZnameQQQQ ?
Lists all columns in the re/uested range; Returns an ODB5 result identi(ier containing the
in(ormation or FALSE on (ailure;
,he result set has the (olloEing columnsC
,ABL+ZO@AL.F.+R
,ABL+Z5&+M
,ABL+ZNAM+
5OL@MNZNAM+
DA,AZ,%P+
,%P+ZNAM+
PR+5..ON
L+NG,&
5AL+
RAD.J
N@LLABL+
R+MARS
,he result set is ordered #y ,ABL+ZO@AL.F.+RA ,ABL+Z5&+M and ,ABL+ZNAM+;
,he schemaA ta1le_name and column_name arguments accept search patterns >HbH to match zero or
more characters and HZH to match a single character?;
ee also odbc>columnpri5ileges./ to retrieve associated privileges;
odbc>commit
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZcommit 22 +ntrega una transaccion ODB5
Kescripcion
int odbc>commit > int connectionZid ?
DevuelveC TRUE si la operacion se realiza con eFitoA FALSE si (alla; ,odas las transacciones
pendientes so#re connect6on_6# son entregadas;
odbc>connect
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZconnect 22 5onecta a una (uente de datos
Kescripcion
int odbc>connect > string dsnA string userA string passEord PA int cursorZtypeQ ?
Devuelve una coneFion ODB5 idA o 3 >FALSE? cuando ocurre un error;
La coneFion id devuelta por estas (unciones es necesaria para otras (unciones ODB5; e pueden
tener multiples coneFiones a#iertas a la vez; +l opcional cuarto parametro asigna el tipo de cursor
/ue va a ser usado para esta coneFion; +ste parametro normalmente no es necesarioA pero puede ser
util para tra#a'ar so#re pro#lemas con algunos drivers ODB5;
5on algunos drivers ODB5A si e'ecutamos un procedimiento comple'oA este puede (allar con un
error similar aC =5annot open a cursor on a stored procedure that has anything other than a single
select statement in it=; @sando OLZ5@RZ@+ZODB5 se puede evitar ese error; Algunos drivers
tampoco soportan el parametro roEZnum#er en odbc>fetch>ro3./; OLZ5@RZ@+ZODB5
tam#ien podria ayudar en ese caso;
Las siguientes constantes son de(inidas por tipos de cursorC
OLZ5@RZ@+Z.FZN++D+D
OLZ5@RZ@+ZODB5
OLZ5@RZ@+ZDR.$+R
OLZ5@RZD+FA@L,
Para coneFiones persistentes ver odbc>pconnect./;
odbc>cursor
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZcursor 22 ,oma un nom#re de cursor
Kescripcion
string odbc>cursor > int resultZid ?
od#cZcursor devolvera un nom#re de cursor para el resultZid dado;
odbc>data>source
>P&P 8 _^ 8;7;3A P&P 4?
od#cZdataZsource 22 Returns in(ormation a#out a current connection
Kescription
array odbc>data>source > resource connectionZidA int (etchZtype ?
Returns FALSE on errorA and an array upon success;
,his (unction Eill return the list o( availa#le DN >a(ter calling it several times?; ,he connect6on_6#
is re/uired to #e a valid ODB5 connection; ,he 9etch_t?pe can #e one o( tEo constant typesC
OLZF+,5&ZF.R,A OLZF+,5&ZN+J,; @se OLZF+,5&ZF.R, the (irst time this (unction
is calledA therea(ter use the OLZF+,5&ZN+J,;
odbc>do
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZdo 22 sinonimo de odbc>e+ec./
Kescripcion
string odbc>do > int connZidA string /uery ?
od#cZdo e'ecutara una consulta >/uery? so#re la coneFion dada
odbc>error
>P&P 8 _^ 8;3;4A P&P 4?
od#cZerror 22 Get the last error code
Kescription
string odbc>error > Presource connectionZidQ ?
Returns a siF2digit ODB5 stateA or an empty string i( there has #een no errors; .( connect6on_6# is
speci(iedA the last state o( that connection is returnedA else the last state o( any connection is
returned;
,his (unction returns meaning(ul value only i( last od#c /uery (ailed >i;e; odbc>e+ec./ returned
FALSE?;
ee alsoC odbc>errormsg./ and odbc>e+ec./;
odbc>errormsg
>P&P 8 _^ 8;3;4A P&P 4?
od#cZerrormsg 22 Get the last error message
Kescription
string odbc>errormsg > Presource connectionZidQ ?
Returns a string containing the last ODB5 error messageA or an empty string i( there has #een no
errors; .( connect6on_6# is speci(iedA the last state o( that connection is returnedA else the last state o(
any connection is returned;
,his (unction returns meaning(ul value only i( last od#c /uery (ailed >i;e; odbc>e+ec./ returned
FALSE?;
ee alsoC odbc>error./ and odbc>e+ec./;
odbc>e+ec
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZeFec 22 Prepara o e'ecuta una declaracion OL
Kescripcion
int odbc>e+ec > int connectionZidA string /ueryZstring ?
Devuelve FALSE en caso de error; Devuelve un indeti(icador ODB5 si el comando OL (ue
e'ecutado satis(actoriamente;
odbc>e+ec./ enviara una declaracion OL al servidor de #ases de datos speci(icado por
connect6on_6#; +ste parametro de#e ser un indeti(icador valido devuelto por odbc>connect./ o
odbc>pconnect./;
$er tam#ienC odbc>prepare./ y odbc>e+ecute./ para e'ecucion multiple de declaraciones OL;
odbc>e+ecute
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZeFecute 22 e'ecuta una declaracion preparada
Kescripcion
int odbc>e+ecute > int resultZid PA array parametersZarrayQ ?
+'ecuta uan declaracion preparada con odbc>prepare./; Devuelve TRUE cuando la e'ecucion es
satis(actoriaA FALSE en otro caso; .ntroducir el vector arameters_arra? solo es necesario si
realmente tenemos parametros en la declaracion;
odbc>fetch>array
>P&P 8 _^ 8;3;0A P&P 4?
od#cZ(etchZarray 22 Fetch a result roE as an associative array
Kescription
array odbc>fetch>array > resource result PA int roEnum#erQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
odbc>fetch>into
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZ(etchZinto 22 Busca un registro de resutados dentro de un vector
Kescripcion
int odbc>fetch>into > int resultZid PA int roEnum#erA array resultZarrayQ ?
Devuelve el numero de campos en el resultadoX FALSE on error; result_arra? de#e ser pasado por
re(erenciaA pero puede ser de cual/uier tipoA desde este sera convertido a tipo vector; +l vector
contendra el valor de campo inicial empezando en indice de vector 3;
odbc>fetch>ob'ect
>P&P 8 _^ 8;3;0A P&P 4?
od#cZ(etchZo#'ect 22 Fetch a result roE as an o#'ect
Kescription
o#'ect odbc>fetch>ob'ect > resource result PA int roEnum#erQ ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
odbc>fetch>ro3
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZ(etchZroE 22 Busca un registro
Kescripcion
int odbc>fetch>ro3 > int resultZid PA int roEZnum#erQ ?
i odbc>fetch>ro3./ (ue succes(ul >there Eas a roE?A TRUE is returned; .( there are no more roEsA
FALSE is returned;
odbc>fetch>ro3./ #usca un registro de datos /ue (ue devuelta por odbc>do./ D odbc>e+ec./;
Despues de /ue odbc>fetch>ro3./ sea llamadoA se puede acceder a los campos de este registro con
odbc>result./;
i no se especi(ica ro7_num1erA odbc>fetch>ro3./ intentara #uscar el siguiente registro en los
resultados; Lamar a odbc>fetch>ro3./ con o sin ro7_num1er puede ser mezclado;
Para pasar a traves del resultado mas de una vezA se puede llamar a odbc>fetch>ro3./ con
ro7_num1er 1A y despues continuar haciendo odbc>fetch>ro3./ sin ro7_num1er para revisar el
resultado; i un driver no admitiese #us/uedas de registros por numeroA el parametro ro7_num1er
seria ignorado;
odbc>field>len
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZ(ieldZlen 22 Da la longitud de un campo
Kescripcion
int odbc>field>len > int resultZidA int (ieldZnum#er ?
odbc>field>len./ devolvera la longitud de un campo re(erenciado por numero en un identi(icador
ODB5 La numeracion de campos comienza en 1;
odbc>field>name
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZ(ieldZname 22 Devuelve el nom#re de campo
Kescripcion
string odbc>field>name > int resultZidA int (ieldZnum#er ?
odbc>field>name./ devolvera el nom#re del campo almacenado en el numero de campo elegido
dentro del identi(icador ODB5; La numeracion de campos comienza en 1; +n caso de error
devolveria FALSE;
odbc>field>num
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZ(ieldZnum 22 Devuelve el numero de campo
Kescripcion
int odbc>field>num > int resultZidA string (ieldZname ?
odbc>field>num./ devolvera el numero de campo /ue corresponda con el campo llamado en el
identi(icador ODB5; La numeracion de campos comienza en 1; +n caso de error devolveria FALSE;
odbc>field>precision
>P&P 8 A P&P 4?
od#cZ(ieldZprecision 22 ynonym (or odbc>field>len./
Kescription
int odbc>field>precision > resource resultZidA int (ieldZnum#er ?
odbc>field>precision./ Eill return the precision o( the (ield re(erenced #y num#er in the given
ODB5 result identi(ier;
ee alsoC odbc>field>scale./ to get the scale o( a (loating point num#er;
odbc>field>scale
>P&P 8 A P&P 4?
od#cZ(ieldZscale 22 Get the scale o( a (ield
Kescription
int odbc>field>scale > resource resultZidA int (ieldZnum#er ?
odbc>field>scale./ Eill return the scale o( the (ield re(erenced #y num#er in the given ODB5 result
identi(ier;
odbc>field>type
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZ(ieldZtype 22 ,ipo de datos de un campo
Kescripcion
string odbc>field>type > int resultZidA int (ieldZnum#er ?
odbc>field>type./ Devolvera el tipo OL de un campo re(erenciado por numero en el identi(icador
ODB5; identi(ier; La numeracion de campos comienza en 1;
odbc>foreignBeys
>P&P 8 A P&P 4?
od#cZ(oreign"eys 22 Returns a list o( (oreign "eys in the speci(ied ta#le or a list o( (oreign "eys in
other ta#les that re(er to the primary "ey in the speci(ied ta#le
Kescription
resource odbc>foreignBeys > resource connectionZidA string p"Z/uali(ierA string p"ZoEnerA string
p"Zta#leA string ("Z/uali(ierA string ("ZoEnerA string ("Zta#le ?
odbc>foreignBeys./ retrieves in(ormation a#out (oreign "eys; Returns an ODB5 result identi(ier or
FALSE on (ailure;
,he result set has the (olloEing columnsC
PS,ABL+ZO@AL.F.+R
PS,ABL+ZOLN+R
PS,ABL+ZNAM+
PS5OL@MNZNAM+
FS,ABL+ZO@AL.F.+R
FS,ABL+ZOLN+R
FS,ABL+ZNAM+
FS5OL@MNZNAM+
S+%Z+O
@PDA,+ZR@L+
D+L+,+ZR@L+
FSZNAM+
PSZNAM+
.( p>_ta1le contains a ta#le nameA odbc>foreignBeys./ returns a result set containing the primary
"ey o( the speci(ied ta#le and all o( the (oreign "eys that re(er to it;
.( 9>_ta1le contains a ta#le nameA odbc>foreignBeys./ returns a result set containing all o( the
(oreign "eys in the speci(ied ta#le and the primary "eys >in other ta#les? to Ehich they re(er;
.( #oth p>_ta1le and 9>_ta1le contain ta#le namesA odbc>foreignBeys./ returns the (oreign "eys in
the ta#le speci(ied in 9>_ta1le that re(er to the primary "ey o( the ta#le speci(ied in p>_ta1le; ,his
should #e one "ey at most;
odbc>free>result
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZ(reeZresult 22 recursos li#res asociados con un resultado
Kescripcion
int odbc>free>result > int resultZid ?
AlEays returns TRUE;
odbc>free>result./ solo necesita ser llamado en caso de preocupacion por demasiado uso de
memoria cuando se e'ecuta un script; ,oda la memoria resultante /uedara automaticamente li#erada
cuando el script (inalice; Pero si es seguro /ue no se vaya a necesitar la in(ormacion nada mas /ue
en un scriptA se de#era llamar a la (uncion odbc>free>result./A y la memoria asociada con result_6#
sera li#erada;
Nota- i la auto2entrega no esta activada la >ver odbc>autocommit./? y se e'ecuta
odbc>free>result./ antes de la entregaA todo /ueda pendiente de las transaciones /ue
esten en lista;
odbc>gettypeinfo
>P&P 8 A P&P 4?
od#cZgettypein(o 22 Returns a result identi(ier containing in(ormation a#out data types supported #y
the data source
Kescription
resource odbc>gettypeinfo > resource connectionZid PA int dataZtypeQ ?
Retrieves in(ormation a#out data types supported #y the data source; Returns an ODB5 result
identi(ier or FALSE on (ailure; ,he optional argument #ata_t?pe can #e used to restrict the
in(ormation to a single data type;
,he result set has the (olloEing columnsC
,%P+ZNAM+
DA,AZ,%P+
PR+5..ON
L.,+RALZPR+F.J
L.,+RALZ@FF.J
5R+A,+ZPARAM
N@LLABL+
5A+Z+N.,.$+
+AR5&ABL+
@N.GN+DZA,,R.B@,+
MON+%
A@,OZ.N5R+M+N,
LO5ALZ,%P+ZNAM+
M.N.M@MZ5AL+
MAJ.M@MZ5AL+
,he result set is ordered #y DA,AZ,%P+ and ,%P+ZNAM+;
odbc>longreadlen
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZlongreadlen 22 mane'o de LONG.,@D de columnas
Kescripcion
int odbc>longreadlen > int resultZidA int length ?
>ODB5 OL tipos relaccionadosC LONGA LONG$ARB.NAR%? +l numero de #ytes devueltos para
P&P es controlado por el parametro length; i es asignado a 3A la longitud del campo es pasado al
cliente;
Nota- +l mane'o de campos LONG$ARB.NAR% tam#ien esta a(ectado por
odbc>binmode./
odbc>ne+t>result
>P&P 8 _^ 8;3;4A P&P 4?
od#cZneFtZresult 22 5hec"s i( multiple results are availa#le
Kescription
#ool odbc>ne+t>result > resource resultZid ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
odbc>num>fields
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZnumZ(ields 22 numero de campos de un resultado
Kescripcion
int odbc>num>fields > int resultZid ?
odbc>num>fields./ devolvera el numero de campos dentro de un ODB5; +sta (uncion devolvera 21
en caso de error; +l argumento es un identi(icador valido devuelto por odbc>e+ec./;
odbc>num>ro3s
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZnumZroEs 22 Numero de campos en un resultado
Kescripcion
int odbc>num>ro3s > int resultZid ?
odbc>num>ro3s./ devolvera el numero de registros de un ODB5; +sta (uncion devolvera 21 en
caso de error; Para declaraciones .N+R,A @PDA,+ y D+L+,+ odbc>num>ro3s./ devolvera el
numero de registros a(ectados; Para una clausula +L+5, esta pue#e ser el numero de registros
permitidos;
NotaC +l uso de odbc>num>ro3s./ para determinar el numero de registros permitidos despues de
un +L+5, devolvera 21;
odbc>pconnect
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZpconnect 22 A#re una coneFion permanente de #ase de datos
Kescripcion
int odbc>pconnect > string dsnA string userA string passEord PA int cursorZtypeQ ?
Devuelve un identi(icador de coneFion ODB5 o 3 >FALSE? en caso de error; +sta (uncion es
odbc>connect./A eFcepto /ue la coneFion no sea realmente cerrada cuando el script ha (inalizado;
Las respuestas (uturas para una coneFion con la misma com#inacion #snA userA pass7or# >via
odbc>connect./ y odbc>pconnect./? puede reusar la coneFion permanente;
Nota- Las coneFiones permanentes no tienen e(ecto si P&P es usado como programa
5G.;
Para in(ormacion acerca del paramentor opcional cursorZtype ver la (uncion odbc>connect./; Para
mas in(ormacion so#re coneFiones permanentesA ir al apartado P&P FAO;
odbc>prepare
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZprepare 22 Prepara una declaracion para su e'ecucion
Kescripcion
int odbc>prepare > int connectionZidA string /ueryZstring ?
Devuelve FALSE en caso de error;
Devuelve un identi(icador ODB5 si el comando OL esta preparado; +l identi(icador resultante
puede ser usado mas tarde para e'ecutar la declaracion con odbc>e+ecute./;
odbc>primaryBeys
>P&P 8 A P&P 4?
od#cZprimary"eys 22 Returns a result identi(ier that can #e used to (etch the column names that
comprise the primary "ey (or a ta#le
Kescription
resource odbc>primaryBeys > resource connectionZidA string /uali(ierA string oEnerA string ta#le ?
Returns the column names that comprise the primary "ey (or a ta#le; Returns an ODB5 result
identi(ier or FALSE on (ailure;
,he result set has the (olloEing columnsC
,ABL+ZO@AL.F.+R
,ABL+ZOLN+R
,ABL+ZNAM+
5OL@MNZNAM+
S+%Z+O
PSZNAM+
odbc>procedurecolumns
>P&P 8 A P&P 4?
od#cZprocedurecolumns 22 Retrieve in(ormation a#out parameters to procedures
Kescription
resource odbc>procedurecolumns > resource connectionZid PA string /uali(ierA string oEnerA string
procA string columnQ ?
Returns the list o( input and output parametersA as Eell as the columns that ma"e up the result set
(or the speci(ied procedures; Returns an ODB5 result identi(ier or FALSE on (ailure;
,he result set has the (olloEing columnsC
PRO5+D@R+ZO@AL.F.+R
PRO5+D@R+ZOLN+R
PRO5+D@R+ZNAM+
5OL@MNZNAM+
5OL@MNZ,%P+
DA,AZ,%P+
,%P+ZNAM+
PR+5..ON
L+NG,&
5AL+
RAD.J
N@LLABL+
R+MARS
,he result set is ordered #y PRO5+D@R+ZO@AL.F.+RA PRO5+D@R+ZOLN+RA
PRO5+D@R+ZNAM+ and 5OL@MNZ,%P+;
,he o7nerA proc and column arguments accept search patterns >HbH to match zero or more characters
and HZH to match a single character?;
odbc>procedures
>P&P 8 A P&P 4?
od#cZprocedures 22 Get the list o( procedures stored in a speci(ic data source
Kescription
resource odbc>procedures > resource connectionZid PA string /uali(ierA string oEnerA string nameQ ?
Lists all procedures in the re/uested range; Returns an ODB5 result identi(ier containing the
in(ormation or FALSE on (ailure;
,he result set has the (olloEing columnsC
PRO5+D@R+ZO@AL.F.+R
PRO5+D@R+ZOLN+R
PRO5+D@R+ZNAM+
N@MZ.NP@,ZPARAM
N@MZO@,P@,ZPARAM
N@MZR+@L,Z+,
R+MARS
PRO5+D@R+Z,%P+
,he o7ner and name arguments accept search patterns >HbH to match zero or more characters and HZH
to match a single character?;
odbc>result>all
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZresultZall 22 Print result as &,ML ta#le
Kescripcion
int odbc>result>all > int resultZid PA string (ormatQ ?
+n caso de errorA como resultadoA devuelve FALSE;
odbc>result>all./ .mprimira todos los registros de un identi(icador prducidoo por odbc>e+ec./; +l
resultado es impreso en una ta#la (ormato &,ML; 5on el argumento de cadena opcional 9ormatA
ademasA todas los (ormatos de ta#las pueden ser realizadas;
odbc>result
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZresult 22 coge in(ormacion de un campo
Kescripcion
string odbc>result > int resultZidA miFed (ield ?
Devuelve el contenido de un campo;
96el# puede ser cual/uier contenido del campo /ue /ueramosX o puede ser una cadena /ue contenga
el nom#re del campoX Por e'emploC
$item%< > odbc%result3$Nuery%4L, < 9;
$item%=al > odbc%result3$Nuery%4L, "=al"9;
La primera sentencia odbc>result./ devuelve el valor del tercer campo detro del registro actual de la
cola resultante; La segunda (uncion llama a odbc>result./ y devuelve el valor de un campo cuyo
nom#re es =val= en el registro actual de la cola resultante; Ocurre un error si un numero de columna
para un campo es menor /ue uno o eFcede el numero de campos en el registro actual; imilarmenteA
ocurre un error si un campo con un nom#re /ue no sea uno de los nom#res de campo de una tal#a o
ta#las /ue sea o sean encoladas;
Los indices de campo comienzan en 1; Recordando el metodo #inario de campos con gran
in(ormacionA es devuleto con re(erencia a odbc>binmode ./ y odbc>longreadlen./;
odbc>rollbacB
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZroll#ac" 22 $olver a pasar una transacion
Kescripcion
int odbc>rollbacB > int connectionZid ?
$uelve a pasar todas las declaraciones pendientes connect6on_6#; Devuelve TRUE cuando el
resultado es satis(actorioA FALSE cuando no lo es;
odbc>setoption
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
od#cZsetoption 22 A'usta la con(iguracion de ODB5; Devuelve FALSE en caso de errorA en otro
caso TRUE;
Kescripcion
int odbc>setoption > int idA int (unctionA int optionA int param ?
+sta (uncion permite #uscar las opciones ODB5 para una coneFion particular o consulta resultante;
+sto esta escrito para tra#a'ar so#re pro#lemas en peculiaries drivers ODB5; +sta (uncion olo se
de#eria usar siendo un programador de ODB5 y entendiendo los e(ectos /ue las opciones tendran;
De#emos tener la certeza de /ue necesitamos una #uena re(erencia de re(erence to eFplicar todas las
di(erentes opciones y valores /ue pueden ser usados; Las di(erentes versiones de drivers soportan
di(erentes opciones;
%a /ue los e(ectos pueden variar dependiendo del driver ODB5A de#eriamos usar la (unction en
scripts para ser hecho pu#lico lo /ue permitira /ue sea (uertemente desalentado; Algunas opciones
ODB5 no estan permitidas para esta (uncion por/ue de#e ser con(igurada antes de /ue la coneFion
sea esta#lecida o la consulta este preparada; in em#argoA si un determinado tra#a'o hace la tarea de
P&PA el 'e(e no contaria con nosotros para usar un producto comercialA esto es lo /ue realmente
suele pasar;
0# es una coeFion id o resultado id so#re la /ue cam#iaremos la con(iguracion; Para
OLet5onnectOption>?A esta es una coneFion id; Para OLettmtOption>?A este es un resultado
id;
9unct6on es la (uncion ODB5 a usar; +l valor de#eria ser 1 para OLet5onnectOption>? y 0 para
OLettmtOption>?;
Parmeter opt6on es la opcion a con(igurar;
+l parametro param es el valor para la escogida opcion opt6on;
E'emplo !. E'emplos JK1C ,etoption
// 6. ?ption 62C o# &NO&etRonnect?ption39 is &NO%,+*?R?""4*.
// (alue 6 o# &NO%,+*?R?""4* is &NO%,+*?R?""4*%?..
// Este ejemplo tiene el mismo e#ecto Que
// odbc%autocommit3$conn, true9;
odbc%setoption 3$conn, 6, 62C, 69;
// C. ?ption 2 o# &NO&et&tmt?ption39 is &NO%N+E'P%*4"E?+*.
// Este ejemplo asiEna el tiempo de espera de la consulta a <2 seEundos.
$result > odbc%prepare 3$conn, $sQl9;
odbc%setoption 3$result, C, 2, <29;
odbc%execute 3$result9;
odbc>specialcolumns
>P&P 8 A P&P 4?
od#cZspecialcolumns 22 Returns either the optimal set o( columns that uni/uely identi(ies a roE in
the ta#le or columns that are automatically updated Ehen any value in the roE is updated #y a
transaction
Kescription
resource odbc>specialcolumns > resource connectionZidA int typeA string /uali(ierA string oEnerA
string ta#leA int scopeA int nulla#le ?
Lhen the type argument is OLZB+,ZROL.DA odbc>specialcolumns./ returns the column or
columns that uni/uely identi(y each roE in the ta#le;
Lhen the type argument is OLZROL$+RA odbc>specialcolumns./ returns the column or
columns in the speci(ied ta#leA i( anyA that are automatically updated #y the data source Ehen any
value in the roE is updated #y any transaction;
Returns an ODB5 result identi(ier or FALSE on (ailure;
,he result set has the (olloEing columnsC
5OP+
5OL@MNZNAM+
DA,AZ,%P+
,%P+ZNAM+
PR+5..ON
L+NG,&
5AL+
P+@DOZ5OL@MN
,he result set is ordered #y 5OP+;
odbc>statistics
>P&P 8 A P&P 4?
od#cZstatistics 22 Retrieve statistics a#out a ta#le
Kescription
resource odbc>statistics > resource connectionZidA string /uali(ierA string oEnerA string ta#leZnameA
int uni/ueA int accuracy ?
Get statistics a#out a ta#le and its indeFes; Returns an ODB5 result identi(ier or FALSE on (ailure;
,he result set has the (olloEing columnsC
,ABL+ZO@AL.F.+R
,ABL+ZOLN+R
,ABL+ZNAM+
NONZ@N.O@+
.ND+JZO@AL.F.+R
.ND+JZNAM+
,%P+
+OZ.NZ.ND+J
5OL@MNZNAM+
5OLLA,.ON
5ARD.NAL.,%
PAG+
F.L,+RZ5OND.,.ON
,he result set is ordered #y NONZ@N.O@+A ,%P+A .ND+JZO@AL.F.+RA .ND+JZNAM+ and
+OZ.NZ.ND+J;
odbc>tablepri5ileges
>P&P 8 A P&P 4?
od#cZta#leprivileges 22 Lists ta#les and the privileges associated Eith each ta#le
Kescription
resource odbc>tablepri5ileges > resource connectionZidA string /uali(ierA string oEnerA string
name ?
Lists ta#les in the re/uested range and the privileges associated Eith each ta#le; Returns an ODB5
result identi(ier or FALSE on (ailure;
,he result set has the (olloEing columnsC
,ABL+ZO@AL.F.+R
,ABL+ZOLN+R
,ABL+ZNAM+
GRAN,OR
GRAN,++
PR.$.L+G+
.ZGRAN,ABL+
,he result set is ordered #y ,ABL+ZO@AL.F.+RA ,ABL+ZOLN+R and ,ABL+ZNAM+;
,he o7ner and name arguments accept search patterns >HbH to match zero or more characters and HZH
to match a single character?;
odbc>tables
>P&P 7_^ 7;3;1:A P&P 8 A P&P 4?
od#cZta#les 22 Get the list o( ta#le names stored in a speci(ic data source
Kescription
resource odbc>tables > resource connectionZid PA string /uali(ier PA string oEner PA string name PA
string typesQQQQ ?
Lists all ta#les in the re/uested range; Returns an ODB5 result identi(ier containing the in(ormation
or FALSE on (ailure;
,he result set has the (olloEing columnsC
,ABL+ZO@AL.F.+R
,ABL+ZOLN+R
,ABL+ZNAM+
,ABL+Z,%P+
R+MARS
,he result set is ordered #y ,ABL+Z,%P+A ,ABL+ZO@AL.F.+RA ,ABL+ZOLN+R and
,ABL+ZNAM+;
,he o7ner and name arguments accept search patterns >HbH to match zero or more characters and HZH
to match a single character?;
,o support enumeration o( /uali(iersA oEnersA and ta#le typesA the (olloEing special semantics (or
the @ual696erA o7nerA nameA and ta1le_t?pe are availa#leC
.( @ual696er is a single percent character >b? and o7ner and name are empty stringsA then the
result set contains a list o( valid /uali(iers (or the data source; >All columns eFcept the
,ABL+ZO@AL.F.+R column contain N@LLs;?
.( o7ner is a single percent character >b? and @ual696er and name are empty stringsA then the
result set contains a list o( valid oEners (or the data source; >All columns eFcept the
,ABL+ZOLN+R column contain N@LLs;?
.( ta1le_t?pe is a single percent character >b? and @ual696erA o7ner and name are empty
stringsA then the result set contains a list o( valid ta#le types (or the data source; >All columns
eFcept the ,ABL+Z,%P+ column contain N@LLs;?
.( ta1le_t?pe is not an empty stringA it must contain a list o( comma2separated values (or the types o(
interestX each value may #e enclosed in single /uotes >H? or un/uoted; For eFampleA
=H,ABL+HAH$.+LH= or =,ABL+A $.+L=; .( the data source does not support a speci(ied ta#le typeA
odbc>tables./ does not return any results (or that type;
ee also odbc>tablepri5ileges./ to retrieve associated privileges;
CIICIII. ;unciones de )M:
Introducci"n
,ratamiento de cadenas de @RLC codi(icaci-nA decodi(icaci-n y procesamiento;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
#aseK8Zdecode 22 decodi(ica datos ci(rados con M.M+ #aseK8
#aseK8Zencode 22 5odi(ica datos en M.M+ #aseK8
getZheaders 22 Recupera todas las ca#eceras enviadas por el servidor en respuesta a una petici-n
&,,P
getZmetaZtags 22 +Ftrae todo el contenido de atri#utos de eti/uetas meta de un archivo y devuelve
una matriz
httpZ#uildZ/uery 22 Generar una cadena de consulta codi(icada estilo @RL
parseZurl 22 Analiza una @RL y devuelve sus componentes
raEurldecode 22 Decodi(icar cadenas codi(icadas estilo @RL
raEurlencode 22 5odi(icar estilo @RL de acuerdo al RF5 1:7M
urldecode 22 decodi(ica @RL2ci(radas en una cadena de teFto
urlencode 22 5odi(ica una @RL en una cadena de teFto
base<8>decode
>P&P 7A P&P 8 A P&P 4?
#aseK8Zdecode 22 decodi(ica datos ci(rados con M.M+ #aseK8
Kescripci"n
string base<8>decode > string datosZci(rados ?
base<8>decode./ decodi(ica #atos_c69ra#os y devuelve los datos originales; Los datos devueltos
pueden ser #inarios;
$ea tam#i<nC base<8>encode./A RF520384 secci-n K;M;
base<8>encode
>P&P 7A P&P 8 A P&P 4?
#aseK8Zencode 22 5odi(ica datos en M.M+ #aseK8
Kescripci"n
string base<8>encode > string datos ?
base<8>encode./ devuelve #atos ci(rados en #aseK8; +sta codi(icaci-n est* pensada para /ue los
datos #inarios so#revivan al transporte a trav<s de capas /ue no son de M #itsA como por e'emplo los
cuerpos de los mensa'es de correo;
Los datos codi(icados con BaseK8 ocupan aproFimadamente un 77b m*s de espacio /ue los datos
originales;
$ea tam#i<nC base<8>decode./A chunB>split./A RF520384 secci-n K;M;
get>headers
>P&P 4?
getZheaders 22 Recupera todas las ca#eceras enviadas por el servidor en respuesta a una petici-n
&,,P
Kescripci"n
array get>headers > string url PA #ool (ormatoQ ?
get>headers./ devuelve una matriz con las ca#eceras enviadas por el servidor en respuesta a una
petici-n &,,P;
i el par*metro opcional 9ormato es TRUEA get>headers./ interpreta la respuesta y de(ine las claves
de la matriz;
E'emplo !. E'emplo de get>headers./
<?php
$url > Mhttp@//888.example.comM;
print%r3Eet%headers3$url99;
print%r3Eet%headers3$url, true99;
?>
+l e'emplo anterior producir* una salida comoC
,rray
3
)2/ >> H**/6.6 C22 ?]
)6/ >> Late@ &at, CK "ay C221 6C@CJ@6< -"*
)C/ >> &er=er@ ,pache/6.<.CH 3+nix9 3'edFHat/Oinux9
)</ >> OastF"odi#ied@ 7ed, 2J Aan C22< C<@66@55 -"*
)1/ >> E*aE@ "<#J2#F6bGF<e6cb2<b"
)5/ >> ,cceptF'anEes@ bytes
)G/ >> RontentFOenEth@ 1<J
)H/ >> Ronnection@ close
)J/ >> RontentF*ype@ text/html
9
,rray
3
)2/ >> H**/6.6 C22 ?]
)Late/ >> &at, CK "ay C221 6C@CJ@61 -"*
)&er=er/ >> ,pache/6.<.CH 3+nix9 3'edFHat/Oinux9
)OastF"odi#ied/ >> 7ed, 2J Aan C22< C<@66@55 -"*
)E*aE/ >> "<#J2#F6bGF<e6cb2<b"
),cceptF'anEes/ >> bytes
)RontentFOenEth/ >> 1<J
)Ronnection/ >> close
)RontentF*ype/ >> text/html
9
get>meta>tags
>P&P 7_^ 7;3;8A P&P 8 A P&P 4?
getZmetaZtags 22 +Ftrae todo el contenido de atri#utos de eti/uetas meta de un archivo y devuelve
una matriz
Kescripci"n
array get>meta>tags > string nom#reZarchivo PA #ool usarZrutaZinclusionQ ?
A#re nom1re_arch6o y lo procesa l)nea por l)nea en #usca de eti/uetas `meta_ en el archivo; [ste
puede ser un archivo local o una @RL; +l procesamiento se detiene al encontrar $/hea#&;
De(inir usar_ruta_6nclus6on como TRUE producir* /ue P&P intente a#rir el archivo a lo largo de la
ruta de inclusi-n est*ndarA tal y como se de(ine en la directiva includeZpath; [ste par*metro es
usado para archivos localesA no @RLs;
E'emplo !. :o ?ue procesa get>meta>tags./
<meta name>"author" content>"nombre">
<meta name>"Iey8ords" content>"php documentacion">
<meta name>"LE&R'4*4?." content>"un manual de php">
<meta name>"Eeo.position" content>"1K.<<;FJG.5K">
</head> <!FF el procesamiento se detiene aQui FF>
>preste atenci-n a los (inales de l)neaA 2 P&P usa una (unci-n nativa para procesar la entradaA as) /ue
un archivo Mac no (uncionar* en @niF?;
+l valor de la propiedad name se convierte en la claveA el valor de contenido de la propiedad se
convierte en el valor de la matriz devueltaA de modo /ue puede usar (*cilmente (unciones est*ndar
de matrices para recorrerlo o acceder a valores sencillos; Los caracteres especiales en el valor de la
propiedad name son sustituidos con HZHA el resto es convertido a minBsculas; i dos eti/uetas meta
tienen el mismo nom#reA s-lo se devuelve la Bltima;
E'emplo *. :o ?ue de5uel5e get>meta>tags./
<?php
// ,sumiendo Que las anteriores etiQuetas se encuentran en 888.example.com
$etiQuetas > Eet%meta%taEs3Mhttp@//888.example.com/M9;
// .ote como las cla=es estan ahora en minusculas, y como . #ue
// reempla0ado con % en la cla=e
echo $etiQuetas)MauthorM/; // nombre
echo $etiQuetas)MIey8ordsM/; // php documentacion
echo $etiQuetas)MdescriptionM/; // un manual de php
echo $etiQuetas)MEeo%positionM/; // 1K.<<;FJG.5K
?>
Nota- A partir de P&P 8;3;4A get>meta>tags./ soporta los atri#utos &,ML sin comillas;
$ea tam#i<n htmlentities./ y urlencode./;
http>build>?uery
>P&P 4?
httpZ#uildZ/uery 22 Generar una cadena de consulta codi(icada estilo @RL
Kescripci"n
string http>build>?uery > array datosZ(ormulario PA string pre(i'oZnumericoQ ?
Genera una cadena de consulta codi(icada estilo @RL a partir de la matriz asociativa >o indeFada?
dada; #atos_9ormular6o puede ser una matriz u o#'eto /ue contenga propiedades; @na matriz
#atos_9ormular6o puede ser una estructura uni2dimensional sencillaA o una matriz de matrices >/ue a
su vez puede contener otras matrices?; i se usan )ndices num<ricos en la matriz #aseA y se provee
un pre96Uo_numer6coA <ste ser* aWadido al comienzo de los )ndices num<ricos para a/uellos
elementos encontrados s-lo en la matriz #ase; +sto es para permitir /ue se opere con nom#res de
varia#les legales cuando los datos sean decodi(icados por P&P u otra aplicaci-n 5G. m*s adelante;
E'emplo !. )so simple de http>build>?uery./
<?php
$datos > array3M#ooM>>MbarM,
Mba0M>>MboomM,
M=acaM>>MlecheM,
MphpM>>Mprocesador de hipertextoM9;

echo http%build%Query3$datos9; // #oo>bar&ba0>boom&=aca>leche&php>procesador[de[hipertexto
?>
E'emplo *. http>build>?uery./ con elementos inde+ados num%ricamente.
<?php
$datos > array3M#ooM, MbarM, Mba0M, MboomM, M=acaM >> MlecheM,
MphpM >> Mprocesador de hipertextoM9;

echo http%build%Query3$datos9;
/W -enera la salida@
2>#oo&6>bar&C>ba0&<>boom&=aca>leche&php>procesador[de[hipertexto
W/

echo http%build%Query3$datos, Mmi=ar%M9;
/W -enera la salida@
mi=ar%2>#oo&mi=ar%6>bar&mi=ar%C>ba0&mi=ar%<>boom&=aca>leche&php>procesador[de[hipertexto
W/
?>
E'emplo 7. http>build>?uery./ con matrices comple'as
<?php
$datos > array3MusuarioM>>array3MnombreM>>MZob &mithM,
MedadM>>1H,
MsexoM>>M"M,
M#dmM>>M5/6C/6K5GM9,
MpasatiemposM>>array3MEol#M, MoperaM, MpoIerM, MrapM9,
MhijosM>>array3MbobbyM>>array3MedadM>>6C,
MsexoM>>M"M9,
MsallyM>>array3MedadM>>J,
MsexoM>>MSM99,
MRE?M9;

echo http%build%Query3$datos, Mbanderas%M9;
?>
esto generar* la salidaC >acotada por razones de legi#ilidad?
usuario)nombre/>Zob[&mith&usuario)edad/>1H&usuario)sexo/>"&
usuario)#dm/>5\6S6C\6S6K5G&pasatiempos)2/>Eol#&pasatiempos)6/>opera&
pasatiempos)C/>poIer&pasatiempos)</>rap&hijos)bobby/)edad/>6C&
hijos)bobby/)sexo/>"&hijos)sally/)edad/>J&hijos)sally/)sexo/>S&banderas%2>RE?
Nota- -lo el elemento =5+O= indeFado num<ricamente en la matriz #ase reci#i- un
pre(i'o; Los otros )ndices num<ricosA encontrados #a'o los pasatiemposA no re/uieren un
pre(i'o tipo cadena para ser nom#res legales de varia#les;
E'emplo 8. )so de http>build>?uery./ con un ob'eto
<?php
class miRlase :
=ar $#oo;
=ar $ba0;

#unction miRlase39
:
$thisF>#oo > MbarM;
$thisF>ba0 > MboomM;
;
;
$datos > ne8 miRlase39;
echo http%build%Query3$datos9; // #oo>bar&ba0>boom
?>
$ea tam#i<nC parse>str./A parse>url./A urlencode./A y array>3alB./
parse>url
>P&P 7A P&P 8 A P&P 4?
parseZurl 22 Analiza una @RL y devuelve sus componentes
Kescripci"n
array parse>url > string url ?
+sta (unci-n devuelve una matriz asociativa con los componentes de la @RL /ue est<n presentes; i
alguno de ellos no est* presente no se crear* su correspondiente clave;
scheme 2 por e'emploC http
host
port
user
pass
path
Query 2 lo /ue hay despu<s de %
#raEment 2 lo /ue hay despu<s de K
+sta (unci-n no est* destinada a validar la @RL dadaA solo devuelve las partes correspondientes de
una @RL; ,am#i<n se aceptan @RLs parcialesA parse>url./ intenta interpretarlas correctamente;
Nota- +sta (unci-n no (unciona con @RLs relativas al documento
E'emplo !. parse>url./ e+ample
$ php Fr Mprint%r3parse%url3"http@//usuario@contrasena^ser=idor/ruta?arEumento>=alorUancla"99;M
,rray
3
)scheme/ >> http
)host/ >> ser=idor
)user/ >> usuario
)pass/ >> contrasena
)path/ >> /ruta
)Query/ >> arEumento>=alor
)#raEment/ >> ancla
9
$ php Fr Mprint%r3parse%url3"http@//ser=idor%in=alido..dominio/"99;M
,rray
3
)scheme/ >> http
)host/ >> ser=idor%in=alido..dominio
)path/ >> /
9
$er tam#i<n pathinfo./A parse>str./A dirname./A y basename./;
ra3urldecode
>P&P 7A P&P 8 A P&P 4?
raEurldecode 22 Decodi(icar cadenas codi(icadas estilo @RL
Kescripci"n
string ra3urldecode > string cadena ?
Devuelve una cadena en done las con secuencias con signos de porcenta'e >T? seguidos de dos
d)gitos heFadecimalesA son reemplazados con caracteres literales;
E'emplo !. E'emplo de ra3urldecode./
<?php
echo ra8urldecode3M#oo\C2bar\12ba0M9; // #oo bar^ba0
?>
Nota- ra3urldecode./ no decodi(ica los s)m#olos m*s >HRH? como espacios; urldecode./
lo hace;
$ea tam#i<n ra3urlencode./A urldecode./ y urlencode./;
ra3urlencode
>P&P 7A P&P 8 A P&P 4?
raEurlencode 22 5odi(icar estilo @RL de acuerdo al RF5 1:7M
Kescripci"n
string ra3urlencode > string cadena ?
Devuelve una cadena en donde todos los caracteres no2al(anum<ricosA eFcepto =_.A son
reemplazados con un signo de porcenta'e >T? seguido de dos d)gitos heFadecimales; +ste es el tipo
de codi(icaci-n descrito en el RF5 1:7M para evitar /ue caracteres literales sean interpretados como
delimitadores de @RL especialesA y para evitar /ue las @RLs sean modi(icadas por medios de
transmisi-n con conversiones de caracteres >como algunos sistemas de correo electr-nico?; Por
e'emploA si desea incluir una contraseWa en una @RL de F,PC
E'emplo !. E'emplo ! de ra3urlencode./
<?php
echo M<a hre#>"#tp@//usuario@M, ra8urlencode3M#oo ^[\/M9,
M^#tp.example.com/x.txt">M;
?>
OA si pasa in(ormaci-n en un componente PA,&Z.NFO de la @RLC
E'emplo *. E'emplo * de ra3urlencode./
<?php
echo M<a hre#>"http@//example.com/script%de%lista%de%departamentos/M,
ra8urlencode3M=entas y mercadeo/"iamiM9, M">M;
?>
$ea tam#i<n ra3urldecode./A urldecode./A urlencode./ y el documento RF5 1:7M;
urldecode
>P&P 7A P&P 8 A P&P 4?
urldecode 22 decodi(ica @RL2ci(radas en una cadena de teFto
Kescripci"n
string urldecode > string cadena ?
Decodi(ica cual/uier TKK ci(rado en la cadena dada; e devuelve la cadena decodi(icada;
E'emplo !. E'emplo urldecode./
$a > split 3M&M, $QuerystrinE9;
$i > 2;
8hile 3$i < count 3$a99 :
$b > split 3M>M, $a )$i/9;
echo MEl =alor para el paremetro M, htmlspecialchars 3urldecode 3$b )2/99,
M es M, htmlspecialchars 3urldecode 3$b )6/99, "<Z'>";
$i[[;
;
$ea tam#i<n urlencode./
urlencode
>P&P 7A P&P 8 A P&P 4?
urlencode 22 5odi(ica una @RL en una cadena de teFto
Kescripci"n
string urlencode > string cadena ?
Devuelve una cadena en la /ue todos los car*cteres no al(anum<ricos eFcepto =_. han sido
reemplazados con un signo de porcenta'e >T? seguido por dos d)gitos heFadecimales y los espacios
han sido codi(icados como signos positivos >Y?; +st* codi(icado de la misma manera /ue los datos
/ue se envian desde un (ormulario LLLA es decir de la misma (orma /ue el tipo appl6cat6on/8=
777=9orm=urlenco#e#; +sto di(iere del ci(rado RF51:7M >vea ra3urlencode./ ? en el /ue por
razones hist-ricasA los espacios son codi(icados como signos positivos >R ?; +sta (unci-n es
conveniente para codi(icar una cadena de teFto /ue va a ser usada como parte de una consulta de
una @RLA y es una (orma adecuada de pasar varia#les a la p*gina siguienteC
E'emplo !. E'emplo urlencode./
echo M<, H'ES>"mycEi?#oo>M, urlencode 3$userinput9, M">M;
$ea tam#i<n urldecode./
CIIII. ;unciones de Cariables
Introducci"n
Para m*s in(ormaci-n so#re el modo en /ue se comportan las varia#lesA vea la entrada $aria#les en
la secci-n Re(erencia del Lengua'e del manual;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. Jpciones de Configuraci"n de Cariables
Nombre Por defecto Modificable
unserializeZcall#ac"Z(un
c
== P&PZ.N.ZALL
Para m*s detalles y la de(inici-n de las constantes P&PZ.N.ZV vea ini>set./;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
unser6al6De_call1ac>_9unc string
La llamada de retorno unseriali6e./ ser* llamada >con el nom#re de la clase no de(inida como
par*metro?A si el proceso de revertir la seriaci-n encuentra una clase no de(inida /ue de#er)a
ser instanciada; @na advertencia aparecer* si la (unci-n especi(icada no est* de(inidaA o si la
(unci-n no incluye o implementa la clase (altante; As) /ue Bnicamente de(ina esta entrada si
de veras desea implementar tal (unci-n de retorno;
$ea tam#i<n unseriali6e./;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
de#ugZzvalZdump 22 Dumps a string representation o( an internal zend value to output
dou#leval 22 O#tiene el valor dou#le >decimal? de una varia#le;
empty 22 Determina si una varia#le est* de(inida
(loatval 22 O#tener el valor (lotante de una varia#le
getZde(inedZvars 22 Devuelve una matriz con todas la varia#les de(inidas
getZresourceZtype 22 Devuelve el tipo de recurso
gettype 22 O#tiene el tipo de una varia#le;
importZre/uestZvaria#les 22 .mportar varia#les G+,DPO,D5oo"ie en el conteFto glo#al
intval 22 O#tiene el valor entero de una varia#le;
isZarray 22 Averigua si una varia#le es un array;
isZ#ool 22 +ncuentra si una varia#le es de tipo #ooleana
isZcalla#le 22 $eri(ica /ue los contenidos de una varia#le puedan ser llamados como una (unci-n
isZdou#le 22 Averigua si una varia#le es un valor dou#le >nBmero decimal?;
isZ(loat 22 Averigua si una varia#le es un (lotante;
isZint 22 Averigua si una varia#le es un valor entero;
isZinteger 22 Averigua si una varia#le es un valor entero;
isZlong 22 Averigua si una vari#le es un valor entero;
isZnull 22 +ncuentra si una varia#le es NULL
isZnumeric 22 +ncuentra si una varia#le es un nBmero o una cadena num<rica
isZo#'ect 22 Averigua si una vari#le es un o#'eto;
isZreal 22 Averigua si una vari#le es un nBmero real;
isZresource 22 +ncuentra si una varia#le es un recurso
isZscalar 22 +ncuentra si una varia#le es un escalar
isZstring 22 Averigua si una vari#le es una cadena de caracteres >string?;
isset 22 Determina si una vari#le est* de(inida
printZr 22 .mprime in(ormaci-n legi#le para humanos so#re una varia#le
serialize 22 Genera una representaci-n apta para almacenamiento de un valor
settype 22 +sta#lece el tipo de una varia#le;
strval 22 O#tiene una cadena de caracteres a partir de una varia#le;
unserialize 22 5rea un valor P&P a partir de una representaci-n almacenada
unset 22 Destruye una varia#le dada
varZdump 22 $uelca in(ormaci-n so#re una varia#le
varZeFport 22 .mprime o devuelve una representaci-n de cadenaA apta para su procesamientoA de una
varia#le
debug>65al>dump
>P&P 8 _^ 8;0;3A P&P 4?
de#ugZzvalZdump 22 Dumps a string representation o( an internal zend value to output
Kescripci"n
void debug>65al>dump > miFed varia#le ?
Dumps a string representation o( an internal zend value to output;
:ista de parmetros
ar6a1le
,he varia#le #eing evaluated;
Calores retornados
No value is returned;
E'emplos
E'emplo !. debug>65al>dump./ e+ample
<?php
$=ar6 > MHello 7orldM;
$=arC > MM;
$=arC >& $=ar6;
debuE%0=al%dump3$=ar69;
?>
+l resultado del e'emplo seriaC
strinE3669 "Hello 7orld" re#count369
Cer tambi%n
5ar>dump./
debug>bacBtrace./
Re(erences +Fplained
double5al
>P&P 7A P&P 8 A P&P 4?
dou#leval 22 O#tiene el valor dou#le >decimal? de una varia#le;
Kescripci"n
dou#le double5al > miFed var ?
Devuelve el valor dou#le >decimal en punto (lotante? de ar;
ar puede ser cual/uier tipo escalar; No se puede usar double5al./ so#re arrays u o#'etos;
$er tam#i<n int5al./A str5al./A settype./ y ,ype 'uggling;
empty
>P&P 7A P&P 8A P&P 4 ?
empty 22 Determina si una varia#le est* de(inida
Kescripci"n
int empty > miFed var ?
Devuelve FALSE si ar est* de(inida y tiene un valor no2vac)o o distinto de ceroX en otro caso
devuelve TRUE;
$er tam#i<n isset./ y unset./;
float5al
>P&P 8 _^ 8;0;3A P&P 4?
(loatval 22 O#tener el valor (lotante de una varia#le
Kescripci"n
(loat float5al > miFed var ?
Devuelve el valor float de ar;
ar puede ser cual/uier tipo escalar; No puede usar float5al./ en matrices u o#'etos;
<?php
$=ar > M6CC.<1<1<ElM;
$=alor%#lotante%de%=ar > #loat=al3$=ar9;
echo $=alor%#lotante%de%=ar; // imprime 6CC.<1<1<
?>
$ea tam#i<n int5al./A str5al./A settype./ y 5onversi-n de ,ipos;
get>defined>5ars
>P&P 8 _^ 8;3;8A P&P 4?
getZde(inedZvars 22 Devuelve una matriz con todas la varia#les de(inidas
Kescripci"n
array get>defined>5ars > void ?
+sta (unci-n devuelve una matriz multidimensional /ue contiene una lista de todas las varia#les
de(inidasA ya sean varia#les de entornoA de servidorA o de(inidas por el usuarioA al interior del
conteFto en el /ue get>defined>5ars./ es llamado; A partir de P&P 4A la varia#le YGLOBAL se
incluye en los resultados de la matriz devuelta;
<?php
$b > array36, 6, C, <, 5, J9;
$matri0 > Eet%de#ined%=ars39;
// imprimir $b
print%r3$matri0)"b"/9;
/W imprimir ruta al interpretre H 3si es usado como R-49
W p.ej. /usr/local/bin/php W/
echo $matri0)"%"/;
// imprimir los parametros de la linea de comandos, si existen
print%r3$matri0)"arE="/9;
// imprimir todas las =ariables del ser=idor
print%r3$matri0)"%&E'(E'"/9;
// imprimir todas las cla=es disponibles para las matrices de =ariables
print%r3array%Ieys3Eet%de#ined%=ars3999;
?>
$ea tam#i<n isset./A get>defined>functions./ y get>defined>constants./;
get>resource>type
>P&P 8 _^ 8;3;0A P&P 4?
getZresourceZtype 22 Devuelve el tipo de recurso
Kescripci"n
string get>resource>type > resource gestor ?
+sta (unci-n devuelve una cadena /ue representa el tipo del resource pasado a ella; i el par*metro
no es un resource v*lidoA genera un error;
<?php
// imprime@ mysQl linI
$c > mysQl%connect39;
echo Eet%resource%type3$c9 . "Vn";
// imprime@ #ile
$da > #open3"#oo", "8"9;
echo Eet%resource%type3$da9 . "Vn";
// imprime@ domxml document
$doc > ne8%xmldoc3"6.2"9;
echo Eet%resource%type3$docF>doc9 . "Vn";
?>
gettype
>P&P 7A P&P 8 A P&P 4?
gettype 22 O#tiene el tipo de una varia#le;
Kescripci"n
string gettype > miFed var ?
Devuelve el tipo de la varia#le P&P ar;
Los valores posi#les de la cadena devuelta sonC
=integer=
=dou#le=
=string=
=array=
=o#'ect=
=un"noEn type=
$er tam#i<n settype./;
import>re?uest>5ariables
>P&P 8 _^ 8;1;3A P&P 4?
importZre/uestZvaria#les 22 .mportar varia#les G+,DPO,D5oo"ie en el conteFto glo#al
Kescripci"n
#ool import>re?uest>5ariables > string tipos PA string pre(i'oQ ?
.mporta las varia#les G+,DPO,D5oo"ie en el conteFto glo#al; +s Btil si usted ha desha#ilitado
registerZglo#alsA pero desea ver algunas varia#les en el conteFto glo#al;
@sando el par*metro t6posA es posi#le indicar cu*les varia#les de petici-n de#en importarse; Puede
usar los caracteres HGHA HPH y H5H respectivamente para indicar G+,A PO, y 5oo"ie; +stos caracteres
no son sensi#les a mayBsculas o minBsculasA as) /ue puede usar cual/uier com#inaci-n de HgHA HpH y
HcH; PO, incluye la in(ormaci-n de archivos cargados mediante PO,; Note /ue el orden de las
letras tiene importanciaA ya /ue cuando usa =gp=A las varia#les PO, so#rescri#ir*n las varia#les
G+, con el mismo nom#re; 5ual/uier otra letra di(erente a GP5 es descartada;
+l par*metro pre96Uo es usado como pre(i'o para nom#res de varia#lesA /ue es colocado antes de
todos los nom#res de varia#les importados en el conteFto glo#al; De modo /ue si tiene un valor
G+, llamado =userid=A y usa el pre(i'o =pre(Z=A entonces o#tendr* una varia#le glo#al llamada
Ypre(Zuserid;
i est* interesado en importar otras varia#les en el conteFto glo#alA como +R$+RA considere el
uso de e+tract./;
Nota- Aun/ue el par*metro pre96Uo es opcionalA reci#ir* un error de nivel +ZNO,.5+ si
no especi(ica el pre(i'oA o indica una cadena vac)a como el pre(i'o; +ste es un riesgo
potencial de seguridad; Los errores de nivel de noticia no son mostrados usando el nivel
de reporte de errores predeterminado;
<?php
// Esto importara las =ariables -E* y ?&* con el pre#ijo "r=ar%"
import%reQuest%=ariables3"E", "r=ar%"9;
echo $r=ar%#oo;
?>
$ea tam#i<n YZR+O@+,A registerZglo#alsA $aria#les Prede(inidasA y e+tract./;
int5al
>P&P 7A P&P 8 A P&P 4?
intval 22 O#tiene el valor entero de una varia#le;
Kescripci"n
int int5al > miFed var PA int #aseQ ?
Devuelve el valor entero de arA usando la #ase de conversi-n especi(icada >por de(ecto es #ase 13?;
ar puede ser cual/uier tipo escalar; No se puede usar int5al./ so#re arrays u o#'etos;
$er tam#i<n double5al./A str5al./A settype./ y ,ype 'uggling;
is>array
>P&P 7A P&P 8 A P&P 4?
isZarray 22 Averigua si una varia#le es un array;
Kescripci"n
int is>array > miFed var ?
Devuelve TRUE si ar es un arrayA y FALSE en otro caso;
$er tam#i<n is>double./A is>float./A is>int./A is>integer./A is>real./A is>string./A is>long./A y
is>ob'ect./;
is>bool
>P&P 8 A P&P 4?
isZ#ool 22 +ncuentra si una varia#le es de tipo #ooleana
Kescripci"n
#ool is>bool > miFed var ?
Devuelve TRUE si el par*metro ar es un boolean;
E'emplo !. E'emplos de is>bool./
<?php
$a > #alse;
$b > 2;
// Lado Que $a es un booleano, esto es =erdadero
i# 3is%bool3$a99 :
echo "&i, este es un booleano";
;
// Lado Que $b no es un booleano, esto no es =erdadero
i# 3is%bool3$b99 :
echo "&i, este es un booleano";
;
?>
$ea tam#i<n is>array./A is>float./A is>int./A is>integer./A is>string./A y is>ob'ect./;
is>callable
>P&P 8 _^ 8;3;KA P&P 4?
isZcalla#le 22 $eri(ica /ue los contenidos de una varia#le puedan ser llamados como una (unci-n
Kescripci"n
#ool is>callable > miFed var PA #ool soloZsintaFis PA string inom#reZaZllamarQQ ?
$eri(ica /ue los contenidos de una varia#le puedan ser llamados como una (unci-n; +sto permite
revisar /ue los contenidos de una varia#le contengan el nom#re de una (unci-n v*lidaA o /ue una
matriz contenga un o#'eto adecuadamente codi(icado y un nom#re de (unci-n;
+l par*metro ar puede ser o #ien el nom#re de una (unci-n almacenada en una varia#le tipo
cadenaA o un o#'eto y el nom#re de un m<todo dentro del o#'etoA de este modoC
array3$,lEun?bjeto, M.ombreLel"etodoM9
i el argumento solo_s6nta86s es TRUE la (unci-n solo veri(ica /ue ar pueda ser una (unci-n o un
m<todo; olo rechazar* varia#les simples /ue no sean cadenasA o una matriz /ue no tenga una
estructura v*lida para ser usada como llamada de retorno; e espera /ue las matrices v*lidas tengan
solo 0 entradasA la primera de las cuales es un o#'eto o una cadenaA y la segunda una cadena;
+l argumento nom1re_a_llamar reci#e el =nom#re /ue puede ser llamado=; +n el e'emplo siguiente
este es =alguna5laseCalgunMetodo=; NoteA sin em#argoA /ue a pesar de la implicaci-n de /ue
alguna5laseCCalgunMetodo>? es un m<todo est*tico /ue puede ser llamadoA este no es el caso;
<?php
// Romo cheQuear una =ariable para =er si puede ser llamada
// como una #uncion.
//
// (ariable simple Que contiene una #uncion
//
#unction alEunaSuncion39
:
;
$=ariableSuncion > MalEunaSuncionM;
=ar%dump3is%callable3$=ariableSuncion, #alse, $nombre%a%llamar99; // bool3true9
echo $nombre%a%llamar, "Vn"; // alEunaSuncion
//
// "atri0 Que contiene un metodo
//
class alEunaRlase :
#unction alEun"etodo39
:
;
;
$un?bjeto > ne8 alEunaRlase39;
$=ariable"etodo > array3$un?bjeto, MalEun"etodoM9;
=ar%dump3is%callable3$=ariable"etodo, true, $nombre%a%llamar99; // bool3true9
echo $nombre%a%llamar, "Vn"; // alEunaRlase@alEun"etodo
?>
is>double
>P&P 7A P&P 8 A P&P 4?
isZdou#le 22 Averigua si una varia#le es un valor dou#le >nBmero decimal?;
Kescripci"n
int is>double > miFed var ?
Devuelve TRUE si ar es un dou#le >nBmero decimal?A y FALSE en otro caso;
$er tam#i<n is>array./A is>float./A is>int./A is>integer./A is>real./A is>string./A is>long./A y
is>ob'ect./;
is>float
>P&P 7A P&P 8 A P&P 4?
isZ(loat 22 Averigua si una varia#le es un (lotante;
Kescripci"n
int is>float > miFed var ?
+sta (unci-n es un alias de is>double./;
$er tam#i<n is>double./A is>real./A is>int./A is>integer./A is>string./A is>ob'ect./A is>array./A y
is>long./;
is>int
>P&P 7A P&P 8 A P&P 4?
isZint 22 Averigua si una varia#le es un valor entero;
Kescripci"n
int is>int > miFed var ?
+sta (unci-n es un alias de is>long./;
$er tam#i<n is>double./A is>float./A is>integer./A is>string./A is>real./A is>ob'ect./A is>array./A y
is>long./;
is>integer
>P&P 7A P&P 8 A P&P 4?
isZinteger 22 Averigua si una varia#le es un valor entero;
Kescripci"n
int is>integer > miFed var ?
+sta (unci-n es un alias de is>long./;
$er tam#i<n is>double./A is>float./A is>int./A is>string./A is>real./A is>ob'ect./A is>array./A y
is>long./;
is>long
>P&P 7A P&P 8 A P&P 4?
isZlong 22 Averigua si una vari#le es un valor entero;
Kescripci"n
int is>long > miFed var ?
Devuelve TRUE si ar es un entero >long?A y FALSE en otro caso;
$er tam#i<n is>double./A is>float./A is>int./A is>real./A is>string./A is>ob'ect./A is>array./A y
is>integer./;
is>null
>P&P 8 _^ 8;3;8A P&P 4?
isZnull 22 +ncuentra si una varia#le es NULL
Kescripci"n
#ool is>null > miFed var ?
Devuelve TRUE si ar es nullA o FALSE en cual/uier otro caso;
5onsulte so#re el tipo NULL para una eFplicaci-n de cu*ndo una varia#le es considerada como
NULL y cu*ndo no;
$ea tam#i<n NULLA is>bool./A is>numeric./A is>float./A is>int./A is>string./A is>ob'ect./A is>array
./A is>integer./A y is>real./;
is>numeric
>P&P 8 A P&P 4?
isZnumeric 22 +ncuentra si una varia#le es un nBmero o una cadena num<rica
Kescripci"n
#ool is>numeric > miFed var ?
Devuelve TRUE si ar es un nBmero o una cadena num<ricaA o FALSE en cual/uier otro caso;
$ea tam#i<n is>bool./A is>float./A is>int./A is>string./A is>ob'ect./A is>array./A y is>integer./;
is>ob'ect
>P&P 7A P&P 8 A P&P 4?
isZo#'ect 22 Averigua si una vari#le es un o#'eto;
Kescripci"n
int is>ob'ect > miFed var ?
Devuelve TRUE si ar es un o#'etoA y FALSE en otro caso;
$er tam#i<n is>long./A is>int./A is>integer./A is>float./A is>double./A is>real./A is>string./A y
is>array./;
is>real
>P&P 7A P&P 8 A P&P 4?
isZreal 22 Averigua si una vari#le es un nBmero real;
Kescripci"n
int is>real > miFed var ?
+sta (unci-n es un alias de is>double./;
$er tam#i<n is>long./A is>int./A is>integer./A is>float./A is>double./A is>ob'ect./A is>string./A y
is>array./;
is>resource
>P&P 8 A P&P 4?
isZresource 22 +ncuentra si una varia#le es un recurso
Kescripci"n
#ool is>resource > miFed var ?
is>resource./ devuelve TRUE si la varia#le dada por el par*metro ar es un resourceA o de lo
contrario devuelve FALSE;
E'emplo !. uso de is>resource./
<?php
$enlace%bd > ^mysQl%connect3MlocalhostM, MmysQl%userM, MmysQl%passM9;
i# 3!is%resource3$enlace%bd99 :
die3M.o pudo reali0arse la conexi&oacute;n @ M . mysQl%error399;
;
?>
$ea la documentaci-n so#re el tipo de datos resource para m*s in(ormaci-n;
is>scalar
>P&P 8 _^ 8;3;4A P&P 4?
isZscalar 22 +ncuentra si una varia#le es un escalar
Kescripci"n
#ool is>scalar > miFed var ?
is>scalar./ devuelve TRUE si la varia#le dada por el par*metro ar es un escalarA o de lo contrario
devuelve FALSE;
Las varia#les escalares son a/uellas /ue contienen un integerA floatA string o boolean; Los tipos
arrayA ob'ect y resource no son escalares;
<?php
#unction mostrar%=ar3$=ar9
:
i# 3is%scalar3$=ar99 :
echo $=ar;
; else :
=ar%dump3$=ar9;
;
;
$pi > <.616G;
$proteinas > array3"hemoElobina", "citocromo c oxidasa", "#erredoxin"9;
mostrar%=ar3$pi9;
// imprime@ <.616G
mostrar%=ar3$proteinas9
// imprime@
// array3<9 :
// )2/>>
// strinE3629 "hemoElobina"
// )6/>>
// strinE3C29 "citocromo c oxidasa"
// )C/>>
// strinE3629 "#erredoxin"
// ;
?>
Nota- is>scalar./ no considera los valores de tipo resource como escalares dado /ue los
recursos son tipos de datos a#stractos /ue por el momento est*n #asados en enteros;
+ste detalle de implementaci-n no de#er)a ser considerado con(ia#leA ya /ue puede
cam#iar;
$ea tam#i<n is>bool./A is>numeric./A is>float./A is>int./A is>real./A is>string./A is>ob'ect./A
is>array./A y is>integer./;
is>string
>P&P 7A P&P 8 A P&P 4?
isZstring 22 Averigua si una vari#le es una cadena de caracteres >string?;
Kescripci"n
int is>string > miFed var ?
Devuelve TRUE si ar es una cadenaA y FALSE en otro caso;
$er tam#i<n is>long./A is>int./A is>integer./A is>float./A is>double./A is>real./A is>ob'ect./A y
is>array./;
isset
>P&P 7A P&P 8A P&P 4 ?
isset 22 Determina si una vari#le est* de(inida
Kescripci"n
int isset > miFed var ?
Devuelve TRUE si ar eFisteX y FALSE en otro caso;
i una varia#le ha sido destruida con unset./A ya no estar* de(inida >no ser* isset./?;
$a > "test";
echo isset3$a9; // true
unset3$a9;
echo isset3$a9; // #alse
$er tam#i<n empty./ y unset./;
print>r
>P&P 8 A P&P 4?
printZr 22 .mprime in(ormaci-n legi#le para humanos so#re una varia#le
Kescripci"n
#ool print>r > miFed eFpresion PA #ool devolverQ ?
Nota- +l par*metro #eoler (ue agregado en P&P 8;7;3
print>r./ despliega in(ormaci-n so#re una varia#le en una (orma /ue es apta para su lectura por
humanos; i se le entrega una varia#le tipo stringA integer o floatA el valor mismo ser* impreso; i
se le entrega un arrayA los valores ser*n presentados en un (ormato /ue muestra las claves y los
elementos; @na notaci-n parecida es usada para varia#les tipo ob'ect; print>r./ y 5ar>e+port./
mostrar*n tam#i<n propiedades protegidas y privadas de o#'etos con P&P 4A en contraste con
5ar>dump./;
Recuerde /ue print>r./ desplazar* el apuntador de la matriz al (inal; @se reset./ para llevarlo de
vuelta al comienzo;
<pre>
<?php
$a > array 3MaM >> Mman0anaM, MbM >> MbananoM, McM >> array 3MxM, MyM, M0M99;
print%r 3$a9;
?>
</pre>
Lo cual producir* la salidaC
<pre>
,rray
3
)a/ >> man0ana
)b/ >> banano
)c/ >> ,rray
3
)2/ >> x
)6/ >> y
)C/ >> 0
9
9
</pre>
i /uisiera capturar la salida de print>r./A use el par*metro #eoler; i este par*metro reci#e el
valor TRUEA print>r./ devolver* su salidaA en lugar de imprimirla >cosa /ue hace por de(ecto?;
E'emplo !. E'emplo del parmetro de%ol%er
<?php
$b > array 3MmM >> MmonoM, M#ooM >> MbarM, MxM >> array 3MxM, MyM, M0M99;
$resultados > print%r3$b, true9; // $resultados contiene ahora la
salida de print%r
?>
Nota- i necesita capturar la salida de print>r./ con una versi-n de P&P anterior a
8;7;3A use las (unciones de control de salida;
Nota- Antes de P&P 8;3;8A print>r./ continuar* e'ecut*ndose inde(inidamente si se le
entrega una varia#le tipo array u ob'ect /ue contenga una re(erencia directa o indirecta
a s) misma; @n e'emplo es pr6nt_rL'-4OA,4SM ya /ue la varia#le '-4OA,4S es una
varia#le glo#al /ue contiene una re(erencia a s) misma;
$ea tam#i<n ob>start./A 5ar>dump./ y 5ar>e+port./;
seriali6e
>P&P 7_^ 7;3;4A P&P 8 A P&P 4?
serialize 22 Genera una representaci-n apta para almacenamiento de un valor
Kescripci"n
string seriali6e > miFed valor ?
seriali6e./ devuelve una cadena /ue contiene una representaci-n de (lu'o de #ytes del alor /ue
puede ser almacenada en cual/uier parte;
+sto es Btil para el almacenamiento de valores en P&P sin perder su tipo y estructura;
Para recuperar el valor P&P a partir de la cadena seriadaA use unseriali6e./; seriali6e./ mane'a todos
los tiposA eFcepto resource; @sted puede incluso usar seriali6e./ so#re matrices /ue contienen
re(erencias a ellas mismas; Las re(erencias encontradas en la matrizDo#'eto /ue procede a seriar con
seriali6e./ tam#i<n ser*n almacenadas;
5uando seria o#'etosA P&P intentar* llamar la (unci-n miem#ro >>sleep./ antes de la seriaci-n; +sto
permite /ue el o#'eto e(ectBe limpiezas de Bltimo minutoA etc; antes de ser seriado; De (orma
seme'anteA cuando un o#'eto es recuperado usando unseriali6e./A la (unci-n miem#ro >>3aBeup./
es llamada;
Nota- +n P&P 7A las propiedades de los o#'etos ser*n seriadosA pero los m<todos se
pierden; +sa limitaci-n (ue retirada en P&P 8 ya /ue tanto las propiedades como los
m<todos son almacenados ahora; Por (avor consulte la secci-n eriaci-n de O#'etos de
5lases y O#'etos para m*s in(ormaci-n;
E'emplo !. E'emplo de seriali6e./
<?php
// $datos%sesion contiene una matri0 multiFdimensional con
// in#ormacion del usuario actual. +samos seriali0e39 para
// almacenarla en una base de datos al #inal de la peticion.
$con > odbc%connect3"bd%8eb", "php", "Eallina"9;
$sent > odbc%prepare3$con,
"+L,*E sesiones &E* datos > ? 7HE'E id > ?"9;
$datos%sQl > array 3seriali0e3$datos%sesion9, $H%,+*H%+&E'9;
i# 3!odbc%execute3$sent, &$datos%sQl99 :
$sent > odbc%prepare3$con,
"4.&E'* 4.*? sesiones 3id, datos9 (,O+E&3?, ?9"9;
i# 3!odbc%execute3$sent, &$datos%sQl99 :
/W ,lEo ha #allado.. W/
;
;
?>
$ea ,am#i<nC unseriali6e./;
settype
>P&P 7A P&P 8 A P&P 4?
settype 22 +sta#lece el tipo de una varia#le;
Kescripci"n
int settype > string varA string type ?
+sta#lece el tipo de la vari#le ar como t?pe;
Los valores posi#les para t?pe sonC
=integer=
=dou#le=
=string=
=array=
=o#'ect=
Devuelve TRUE si se lleva a ca#o con <FitoX en otro caso devuelve FALSE;
$er tam#i<n gettype./;
str5al
>P&P 7A P&P 8 A P&P 4?
strval 22 O#tiene una cadena de caracteres a partir de una varia#le;
Kescripci"n
string str5al > miFed var ?
Devuelve una cadena con el valor de ar;
ar puede ser cual/uier tipo escalar; No se puede usar str5al./ so#re arrays u o#'etos;
$er tam#i<n double5al./A int5al./A settype./ y ,ype 'uggling;
unseriali6e
>P&P 7_^ 7;3;4A P&P 8 A P&P 4?
unserialize 22 5rea un valor P&P a partir de una representaci-n almacenada
Kescripci"n
miFed unseriali6e > string cadena ?
unseriali6e./ toma una varia#le sencilla seriada >vea seriali6e./? y la convierte de vuelta a su valor
P&P; +l valor convertido es retornadoA y puede ser un integerA floatA stringA array u ob'ect; +n
caso de /ue la cadena pasada no pueda ser procesada para revertir la seriaci-nA se devuelve FALSE;
Kirecti5a unseriali6e>callbacB>func- +s posi#le esta#lecer una (unci-n2llamada de
retorno la cual ser* llamada si una clase no de(inida de#er)a ser instanciada durante el
proceso de revertir la seriaci-n; >para prevenir /ue se reci#a un ob'ect incompleto
=ZZP&PZ.ncompleteZ5lass=;? @se su php.iniA ini>set./ o .htaccess para de(inir
HunserializeZcall#ac"Z(uncH; 5ada vez /ue una clase no de(inida de#a ser instanciadaA
<sta (unci-n ser* llamada; Para desha#ilitar esta caracter)stica simplemente asigne un
valor vac)o a este par*metro; ,am#i<n note /ue la directiva unserializeZcall#ac"Z(unc se
hizo disponi#le en P&P 8;0;3;
i la varia#le /ue est* siendo convertida de vuelta es un o#'etoA P&P intentar* llamar la (unci-n
miem#ro >>3aBeup./ >si eFiste? autom*ticamente luego de ha#er recontruido satis(actoriamente el
o#'eto;
E'emplo !. E'emplo de unseriali6e>callbacB>func
<?php
$objeto%seriado>M?@6@"a"@6@:s@5@"=alor";s@<@"622";;M;
// la directi=a unseriali0e%callbacI%#unc esta disponible a partir de H 1.C.2
ini%set3Munseriali0e%callbacI%#uncM, Mmi%llamada%de%retornoM9; // de#ina su callbacI%#unction
#unction mi%llamada%de%retorno3$nombre%clase9
:
// tan solo incluya un archi=o Que contenEa su de#inicion de clase
// usted recibe $nombre%clase para determinar Que de#inicion de
// clase reQuiere
;
?>
Nota- +n P&P 7A los m<todos no se preservan cuando se revierte un o#'eto seriado; +sa
limitaci-n (ue retirada en P&P 8 ya /ue tanto las propiedades como los m<todos se
almacenan ahora; Por (avor consulte la secci-n eriaci-n de O#'etos de 5lases y
O#'etos para m*s in(ormaci-n;
E'emplo *. E'emplo de unseriali6e./
<?php
// ,Qui usamos unseriali0e39 para carEar los datos de sesion
// pro=enientes de la cadena seleccionada desde la base de datos en la
// matri0 $datos%sesion. Este ejemplo complementa aQuel descrito con
// seriali0e39.
$con > odbc%connect3"bd%8eb", "php", "Eallina"9;
$sent > odbc%prepare3$con, "&EOER* datos S'?" sesiones 7HE'E id > ?"9;
$datos%sQl > array 3$H%,+*H%+&E'9;
i# 3!odbc%execute3$sent, &$datos%sQl9 TT !odbc%#etch%into3$sent, &$tmp99 :
// si la ejecucion del comando o la recuperacion de datos #alla,
// iniciali0ar una matri0 =acia
$datos%sesion > array39;
; else :
// ahora deberiamos tener los datos seriados en $tmp)2/.
$datos%sesion > unseriali0e3$tmp)2/9;
i# 3!is%array3$datos%sesion99 :
// alEo ha #allado, iniciali0ar una matri0 =acia
$datos%sesion > array39;
;
;
?>
$ea tam#i<n seriali6e./;
unset
>P&P 7A P&P 8A P&P 4 ?
unset 22 Destruye una varia#le dada
Kescripci"n
int unset > miFed var ?
unset./ destruye la varia#le especi(icada y devuelve TRUE;
E'emplo !. E'emplo de unset./
unset3 $#oo 9;
unset3 $bar)MQuuxM/ 9;
$er tam#i<n isset./ y empty./;
5ar>dump
>P&P 7_^ 7;3;4A P&P 8 A P&P 4?
varZdump 22 $uelca in(ormaci-n so#re una varia#le
Kescripci"n
void 5ar>dump > miFed eFpresion PA miFed eFpresion PA ;;;QQ ?
+sta (unci-n despliega in(ormaci-n estructurada so#re una o m*s eFpresiones /ue incluye sus tipos
y valores; Las matrices y los o#'etos son eFploradas recursivamente con valores sangrados para
mostrar su estructura;
+n P&P s-lo las propiedades pB#licas de los o#'etos ser*n devueltas en la salida; 5ar>e+port./ y
print>r./ devolver*n tam#i<n las propiedadse protegidas y privadas;
,ugerencia- 5omo con todo lo /ue presenta un resultado directamente en el navegadorA
se pueden utilizar las (unciones de control de salida para capturar el resultado de esta
(unci-n y gra#arlo 2 por e'emplo 2 en una string;
E'emplo !. E'emplo de 5ar>dump./
<?php
$a > array 36, C, array 3"a", "b", "c"99;
=ar%dump 3$a9;
?>
alidaC
array3<9 :
)2/>>
int369
)6/>>
int3C9
)C/>>
array3<9 :
)2/>>
strinE369 "a"
)6/>>
strinE369 "b"
)C/>>
strinE369 "c"
;
;
<?php
$b > <.6;
$c > true;
=ar%dump3$b, $c9;
?>
salidaC
#loat3<.69
bool3true9
$ea tam#i<n 5ar>e+port./ y print>r./;
5ar>e+port
>P&P 8 _^ 8;0;3A P&P 4?
varZeFport 22 .mprime o devuelve una representaci-n de cadenaA apta para su procesamientoA de una
varia#le
Kescripci"n
miFed 5ar>e+port > miFed eFpresion PA #ool devolverQ ?
+sta (unci-n devuelve in(ormaci-n estructurada so#re la varia#le /ue le es pasada; +s similar a
5ar>dump./ con dos eFcepciones; La primera es /ue la representaci-n devuelta es c-digo P&P
v*lidoA la segundaA /ue tam#i<n devolver* propiedades protegidas y privadas de un o#'eto con P&P
4;
,am#i<n puede devolver la representaci-n de la varia#le usando TRUE como segundo par*metro
para esta (unci-n;
<?php
$a > array 36, C, array 3"a", "b", "c"99;
=ar%export 3$a9;
?>
salidaC
array 3
2 >> 6,
6 >> C,
C >>
array 3
2 >> MaM,
6 >> MbM,
C >> McM,
9,
9
<?php
$b > <.6;
$= > =ar%export3$b, true9;
echo $=;
?>
salidaC
<.6
$ea tam#i<n 5ar>dump./ y print>r./;
CIII. 5popmail ;unctions
Introducci"n
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
,his eFtension has #een moved (rom P&P as o( P&P 8;7;3 and noE vpopmail lives in P+5L;
Instalaci"n
As o( P&P 8A these (unctions are only availa#le i( P&P Eas con(igured Eith ==76th=popma6l
):D0R.;
Tabla de contenidos
vpopmailZaddZaliasZdomainZeF 22 Add alias to an eFisting virtual domain
vpopmailZaddZaliasZdomain 22 Add an alias (or a virtual domain
vpopmailZaddZdomainZeF 22 Add a neE virtual domain
vpopmailZaddZdomain 22 Add a neE virtual domain
vpopmailZaddZuser 22 Add a neE user to the speci(ied virtual domain
vpopmailZaliasZadd 22 .nsert a virtual alias
vpopmailZaliasZdelZdomain 22 Deletes all virtual aliases o( a domain
vpopmailZaliasZdel 22 Deletes all virtual aliases o( a user
vpopmailZaliasZgetZall 22 Get all lines o( an alias (or a domain
vpopmailZaliasZget 22 Get all lines o( an alias (or a domain
vpopmailZauthZuser 22 Attempt to validate a usernameDdomainDpassEord
vpopmailZdelZdomainZeF 22 Delete a virtual domain
vpopmailZdelZdomain 22 Delete a virtual domain
vpopmailZdelZuser 22 Delete a user (rom a virtual domain
vpopmailZerror 22 Get teFt message (or last vpopmail error
vpopmailZpassEd 22 5hange a virtual userHs passEord
vpopmailZsetZuserZ/uota 22 ets a virtual userHs /uota
5popmail>add>alias>domain>e+
>8;3;4 2 8;0;7 only?
vpopmailZaddZaliasZdomainZeF 22 Add alias to an eFisting virtual domain
Kescription
#ool 5popmail>add>alias>domain>e+ > string olddomainA string neEdomain ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>add>alias>domain
>8;3;4 2 8;0;7 only?
vpopmailZaddZaliasZdomain 22 Add an alias (or a virtual domain
Kescription
#ool 5popmail>add>alias>domain > string domainA string aliasdomain ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>add>domain>e+
>8;3;4 2 8;0;7 only?
vpopmailZaddZdomainZeF 22 Add a neE virtual domain
Kescription
#ool 5popmail>add>domain>e+ > string domainA string passEd PA string /uota PA string #ounce PA
#ool apopQQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>add>domain
>8;3;4 2 8;0;7 only?
vpopmailZaddZdomain 22 Add a neE virtual domain
Kescription
#ool 5popmail>add>domain > string domainA string dirA int uidA int gid ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>add>user
>8;3;4 2 8;0;7 only?
vpopmailZaddZuser 22 Add a neE user to the speci(ied virtual domain
Kescription
#ool 5popmail>add>user > string userA string domainA string passEord PA string gecos PA #ool
apopQQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>alias>add
>8;1;3 2 8;0;7 only?
vpopmailZaliasZadd 22 .nsert a virtual alias
Kescription
#ool 5popmail>alias>add > string userA string domainA string alias ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>alias>del>domain
>8;1;3 2 8;0;7 only?
vpopmailZaliasZdelZdomain 22 Deletes all virtual aliases o( a domain
Kescription
#ool 5popmail>alias>del>domain > string domain ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>alias>del
>8;1;3 2 8;0;7 only?
vpopmailZaliasZdel 22 Deletes all virtual aliases o( a user
Kescription
#ool 5popmail>alias>del > string userA string domain ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>alias>get>all
>8;1;3 2 8;0;7 only?
vpopmailZaliasZgetZall 22 Get all lines o( an alias (or a domain
Kescription
array 5popmail>alias>get>all > string domain ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>alias>get
>8;1;3 2 8;0;7 only?
vpopmailZaliasZget 22 Get all lines o( an alias (or a domain
Kescription
array 5popmail>alias>get > string aliasA string domain ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>auth>user
>8;3;4 2 8;0;7 only?
vpopmailZauthZuser 22 Attempt to validate a usernameDdomainDpassEord
Kescription
#ool 5popmail>auth>user > string userA string domainA string passEord PA string apopQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>del>domain>e+
>8;3;4 2 8;0;7 only?
vpopmailZdelZdomainZeF 22 Delete a virtual domain
Kescription
#ool 5popmail>del>domain>e+ > string domain ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>del>domain
>8;3;4 2 8;0;7 only?
vpopmailZdelZdomain 22 Delete a virtual domain
Kescription
#ool 5popmail>del>domain > string domain ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>del>user
>8;3;4 2 8;0;7 only?
vpopmailZdelZuser 22 Delete a user (rom a virtual domain
Kescription
#ool 5popmail>del>user > string userA string domain ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>error
>8;3;4 2 8;0;7 only?
vpopmailZerror 22 Get teFt message (or last vpopmail error
Kescription
string 5popmail>error > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>pass3d
>8;3;4 2 8;0;7 only?
vpopmailZpassEd 22 5hange a virtual userHs passEord
Kescription
#ool 5popmail>pass3d > string userA string domainA string passEord PA #ool apopQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
5popmail>set>user>?uota
>8;3;4 2 8;0;7 only?
vpopmailZsetZuserZ/uota 22 ets a virtual userHs /uota
Kescription
#ool 5popmail>set>user>?uota > string userA string domainA string /uota ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
CIIII. 27*api ;unctions
Introducci"n
,his eFtension is a generic eFtension AP. to DLLs; ,his Eas originally Eritten to alloE access to
the Lin70 AP. (rom P&PA although you can also access other (unctions eFported via other DLLs;
5urrently supported types are generic P&P types >stringsA #ooleansA (loatsA integers and nulls? and
types you de(ine Eith 37*api>deftype./;
Nota- ,his eFtension has #een moved to the P+5L repository and is no longer #undled
Eith P&P as o( P&P 4;1;3;
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
Me?uirimientos
,his eFtension Eill only Eor" on LindoEs systems;
Instalaci"n
No se necesita ninguna instalaci-n para usar estas (uncionesA son parte del nBcleo de P&P;
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
,his eFtension de(ines one resource typeA used (or user de(ined types; ,he name o( this resource is
*#?naparm*;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
DC_MICROSOFT >integer?
DC_(ORLAND >integer?
DC_CALL_CDECL >integer?
DC_CALL_STD >integer?
DC_RET$AL_MATH+ >integer?
DC_RET$AL_MATH, >integer?
DC_CALL_STD_(O >integer?
DC_CALL_STD_MS >integer?
DC_CALL_STD_M, >integer?
DC_FLA#_AR#PTR >integer?
E'emplos
,his eFample gets the amount o( time the system has #een running and displays it in a message #oF;
E'emplo !. Fet the uptime and display it in a message bo+
<?php
// Le#ine constants needed, taIen #rom
// (isual &tudio/*ools/7inapi/74.<C,4.txt
de#ine3""Z%?]", 29;
// Ooad the extension in
dl3"php%8<Capi.dll"9;
// 'eEister the -et*icIRount #unction #rom Iernel<C.dll
8<Capi%reEister%#unction3"Iernel<C.dll",
"-et*icIRount",
"lonE"9;

// 'eEister the "essaEeZox, #unction #rom +ser<C.dll
8<Capi%reEister%#unction3"+ser<C.dll",
""essaEeZox,",
"lonE"9;
// -et uptime in#ormation
$ticIs > -et*icIRount39;
// Ron=ert it to a nicely displayable text
$secs > #loor3$ticIs / 62229;
$mins > #loor3$secs / G29;
$hours > #loor3$mins / G29;
$str > sprint#3"Pou ha=e been usinE your computer #or@" .
"VrVn \d "illiseconds, or VrVn \d &econds" .
"or VrVn \d mins orVrVn \d hours \d mins.",
$ticIs,
$secs,
$mins,
$hours,
$mins F 3$hoursWG299;
// Lisplay a messaEe box 8ith only an ?] button and the uptime text
"essaEeZox,3.+OO,
$str,
"+ptime 4n#ormation",
"Z%?]9;
?>
Tabla de contenidos
E70apiZde(type 22 De(ines a type (or use Eith other E70apiZ(unctions
E70apiZinitZdtype 22 5reates an instance o( the data type typename and (ills it Eith the values
passed
E70apiZinvo"eZ(unction 22 .nvo"es (unction (uncname Eith the arguments passed a(ter the (unction
name
E70apiZregisterZ(unction 22 Registers (unction (unctionZname (rom li#rary Eith P&P
E70apiZsetZcallZmethod 22 ets the calling method used
37*api>deftype
>8;0;3 2 8;0;7 only?
E70apiZde(type 22 De(ines a type (or use Eith other E70apiZ(unctions
Kescription
#ool 37*api>deftype > string typenameA string mem#er1ZtypeA string mem#er1Zname PA string ;;; PA
string ;;;QQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
.( you Eould li"e to de(ine a type (or a E70api callA you need to call 37*api>deftype./; ,his
(unction ta"es 0nR1 argumentsA Ehere n is the num#er o( mem#ers the type has; ,he (irst argument
is the name o( the type; A(ter that is the type o( the mem#er (olloEed #y the mem#ers name >in
pairs?; A mem#er type can #e a user de(ined type; All the type names are case sensitive; Built in
type names should #e provided in loEercase; Devuelve TRUE si todo se llev- a ca#o correctamenteA
FALSE en caso de (allo;
37*api>init>dtype
>8;0;3 2 8;0;7 only?
E70apiZinitZdtype 22 5reates an instance o( the data type typename and (ills it Eith the values
passed
Kescription
resource 37*api>init>dtype > string typenameA miFed value PA miFed ;;;Q ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
,his (unction creates an instance o( the data type named t?penameA (illing in the values o( the data
type; ,he t?pename parameter is case sensitive; %ou should give the values in the same order as you
de(ined the data type Eith 37*api>deftype./; ,he type o( the resource returned is #?naparm;
37*api>in5oBe>function
>8;0;3 2 8;0;7 only?
E70apiZinvo"eZ(unction 22 .nvo"es (unction (uncname Eith the arguments passed a(ter the (unction
name
Kescription
miFed 37*api>in5oBe>function > string (uncnameA miFed argument PA miFed ;;;Q ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
37*api>in5oBe>function./ tries to (ind the previously registered (unctionA named 9uncnameA
passing the parameters you provided; ,he return type is the one you set Ehen you registered the
(unctionA the value is the one returned #y the (unction itsel(; Any o( the arguments can #e o( any
P&P type or 37*api>deftype./ de(ined typeA as needed;
37*api>register>function
>8;0;3 2 8;0;7 only?
E70apiZregisterZ(unction 22 Registers (unction (unctionZname (rom li#rary Eith P&P
Kescription
#ool 37*api>register>function > string li#raryA string (unctionZnameA string returnZtype ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
,his (unction tries to (ind the 9unct6on_name (unction in l61ar?A and tries to import it into P&P; ,he
(unction Eill #e registered Eith the given return_t?pe; ,his type can #e a generic P&P typeA or a
type de(ined Eith 37*api>deftype./; All type names are case sensitive; Built in type names should
#e provided in loEercase; Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de
(allo;
37*api>set>call>method
>8;0;3 2 8;0;7 only?
E70apiZsetZcallZmethod 22 ets the calling method used
Kescription
void 37*api>set>call>method > int method ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
,his (unction sets the method call type; ,he parameter can #e one o( the constants
DC_CALL_CDECL or DC_CALL_STD; ,he eFtension de(ault is DC_CALL_STD;
CIIIII. ;unciones 2KKI
+stas (unciones permiten el uso de LDDJ;
De#e sa#er /ue todas las (unciones /ue serializan varia#les usan el primer elemento de un array para
determinar si este ha de serializarse en (orma de array o como estructura; i el primer elemento esta
indeFado por una cadenaA se serializa como estructuraA y en caso contrarioA como array;
E'emplo !. ,eriali6acion de un 5alor simple
<?php
print 8ddx%seriali0e%=alue3"Ejemplo de H a paQuete 7LLX", "aQuete H"9;
?>
+ste e'emplo produciraC
<8ddxacIet =ersion>M2.KM><header comment>MaQuete HM/><data>
<strinE>Ejemplo de H a paQuete 7LLX</strinE></data></8ddxacIet>
E'emplo *. )so de pa?uetes incrementales
<?php
$pi > <.6165KCG;
$pacIet%id > 8ddx%pacIet%start3"H"9;
8ddx%add%=ars3$pacIet%id, "pi"9;
/W &uponEa Que $ciudades se ha obtenido de una base de datos W/
$ciudades > array3",ustin", ".o=ato", "&eattle"9;
8ddx%add%=ars3$pacIet%id, "ciudades"9;
$pacIet > 8ddx%pacIet%end3$pacIet%id9;
print $pacIet;
?>
+ste e'emplo produciraC
<8ddxacIet =ersion>M2.KM><header comment>MHM/><data><struct>
<=ar name>MpiM><number><.6165KCG</number></=ar><=ar name>MciudadesM>
<array lenEth>M<M><strinE>,ustin</strinE><strinE>.o=ato</strinE>
<strinE>&eattle</strinE></array></=ar></struct></data></8ddxacIet>
Tabla de contenidos
EddFZaddZvars 22 Finaliza un pa/uete LDDJ con el identi(icador dado
EddFZdeserialize 22 Des2serializa un pa/uete LDDJ
EddFZpac"etZend 22 Finaliza un pa/uete LDDJ con el identi(icador dado
EddFZpac"etZstart 22 5omienza un nuevo pa/uete LDDJ con una estructura dentro
EddFZserializeZvalue 22 erializa un valor simple en un pa/uete LDDJ
EddFZserializeZvars 22 erializa varia#les en un pa/uete LDDJ
3dd+>add>5ars
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
EddFZaddZvars 22 Finaliza un pa/uete LDDJ con el identi(icador dado
Kescripcion
3dd+>add>5ars > entero pac"etZidA varios2tipos nameZvar PA varios2tipos ;;;Q ?
3dd+>add>5ars./ se utiliza para serializar las varia#les dadas e incorporar el resultado al pa/uete
especi(icado por pac>et_6#; Las varia#les a serializar se especi(ican eFactamente igual /ue en
3dd+>seriali6e>5ars./;
3dd+>deseriali6e
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
EddFZdeserialize 22 Des2serializa un pa/uete LDDJ
Kescripcion
varios2tipos 3dd+>deseriali6e > cadena pac"et ?
3dd+>deseriali6ed./ toma una cadena pac>et y la desserializa; Devuelve el resultado /ue puede ser
de tipo cadenaA numerico o array; Las estructuras son desserializadas en (orma de arrays asociativos;
3dd+>pacBet>end
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
EddFZpac"etZend 22 Finaliza un pa/uete LDDJ con el identi(icador dado
Kescripcion
cadena 3dd+>pacBet>end > entero pac"etZid ?
3dd+>pacBet>end./ (inaliza el pa/uete LDDJ especi(icado por el pac>et_6# y devuelve la cadena
con el pa/uete;
3dd+>pacBet>start
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
EddFZpac"etZstart 22 5omienza un nuevo pa/uete LDDJ con una estructura dentro
Kescripcion
entero 3dd+>pacBet>start > Pcadena comentarioQ ?
@tilice 3dd+>pacBet>start./ para comenzar un nuevo pa/uete LDDJ /ue permita la adicion
sucesiva de varia#les; Reci#e el parametro opcional comentar6o y devuelve un identi(icador de
pa/uete para su uso en posteriores llamadas; Automaticamente de(ine una estructura dentro del
pa/uete para contener las varia#les;
3dd+>seriali6e>5alue
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
EddFZserializeZvalue 22 erializa un valor simple en un pa/uete LDDJ
Kescripcion
cadena 3dd+>seriali6e>5alue > varios2tipos var PA cadena comentarioQ ?
3dd+>seriali6e>5alue./ se utiliza para crear un pa/uete LDDJ desde un valor simple dado; ,oma
el valor contenido en arA y una cadena comentar6o opcional /ue aparecera en la ca#ecera del
pa/ueteA y devuelve el pa/uete LDDJ;
3dd+>seriali6e>5ars
>P&P 7_^ 7;3;:A P&P 8 A P&P 4?
EddFZserializeZvars 22 erializa varia#les en un pa/uete LDDJ
Kescripcion
cadena 3dd+>seriali6e>5ars > varios2tipos nom#reZvar PA varios2tipos ;;;Q ?
3dd+>seriali6e>5ars./ se utiliza para crear un pa/uete LDDJ con una estructura /ue contiene la
representacion serializada de las varia#les pasadas como parametros;
3dd+>seriali6e>5ars./ toma un numero varia#le de argumentosA cada uno de los cuales puede ser
una cadena con el nom#re de una varia#le o un array con nom#res de varia#lesA o de otro arrayA etc;
E'emplo !. 3dd+>seriali6e>5ars e+ample
<?php
$a > 6;
$b > 5.5;
$c > array3"a0ul", "naranja", "=ioleta"9;
$d > "colores";
$cl=ars > array3"c", "d"9;
print 8ddx%seriali0e%=ars3"a", "b", $cl=ars9;
?>
+l e'emplo anterior produciraC
<8ddxacIet =ersion>M2.KM><header/><data><struct><=ar name>MaM><number>6</number></=ar>
<=ar name>MbM><number>5.5</number></=ar><=ar name>McM><array lenEth>M<M>
<strinE>a0ul</strinE><strinE>naranja</strinE><strinE>=ioleta</strinE></array></=ar>
<=ar name>MdM><strinE>colores</strinE></=ar></struct></data></8ddxacIet>
CIIIIII. +attr ;unctions
Introducci"n
,he Fattr eFtension alloEs (or the manipulation o( eFtended attri#utes on a (ilesystem;
Me?uirimientos
,o use FattrA you Eill need li#attr installed; .t is availa#le at httpCDDoss;sgi;comDpro'ectsDF(sD;
Nota- ,hese (unctions only Eor" on (ilesystems that support eFtended attri#utesA and
have them ena#led at mount time; ome common (ilesystems that support eFtended
attri#utes are eFt0A eFt7A reiser(sA '(sA and F(s;
Instalaci"n
Fattr is currently availa#le through P+5L httpCDDpecl;php;netDpac"ageDFattr;
.( P+AR is availa#le on your VniF2li"e system you can use the pear installer to install the Fattr
eFtensionA #y the (olloEing commandC pear (5 install +attr;
%ou can alEays doEnload the tar;gz pac"age and install Fattr #y handC
E'emplo !. +attr install by hand
Eun0ip xattrFxxx.tE0
tar Fx=# xattrFxxx.tar
cd xattrFxxx
phpi0e
./con#iEure && maIe && maIe install
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
%ATTR_ROOT >integer?
et attri#ute in root >trusted? namespace; Re/uires root privileges;
%ATTR_DONTFOLLO" >integer?
Do not (olloE the sym#olic lin" #ut operate on sym#olic lin" itsel(;
%ATTR_CREATE >integer?
Function Eill (ail i( eFtended attri#ute already eFists;
%ATTR_REPLACE >integer?
Function Eill (ail i( eFtended attri#ute doesnHt eFist;
Tabla de contenidos
FattrZget 22 Get an eFtended attri#ute
FattrZlist 22 Get a list o( eFtended attri#utes
FattrZremove 22 Remove an eFtended attri#ute
FattrZset 22 et an eFtended attri#ute
FattrZsupported 22 5hec" i( (ilesystem supports eFtended attri#utes
+attr>get
>no version in(ormationA might #e only in 5$?
FattrZget 22 Get an eFtended attri#ute
Kescripci"n
string +attr>get > string (ilenameA string name PA int (lagsQ ?
,his (unction gets the value o( an eFtended attri#ute o( a (ile;
+Ftended attri#utes have tEo di((erent namespacesC user and root namespace; @ser namespace is
availa#le (or all users Ehile root namespace is availa#le only (or user Eith root privileges; Fattr
operates on user namespace #y de(aultA #ut you can change that using 9laEs argument;
:ista de parmetros
96lename
,he (ile (rom Ehich Ee get the attri#ute;
name
,he name o( the attri#ute;
9laEs
Tabla !. ,upported +attr flags
%ATTR_DONTFOLLO"
Do not (olloE the sym#olic lin" #ut operate on sym#olic lin"
itsel(;
%ATTR_ROOT
et attri#ute in root >trusted? namespace; Re/uires root
privileges;
Calores retornados
Returns a string containing the value or FALSE i( the attri#ute doesnHt eFist;
E'emplos
E'emplo !. ChecBs if system administrator has signed the file
<?php
$#ile > M/usr/local/sbin/some%binaryM;
$siEnature > xattr%Eet3$#ile, M'oot siEnatureM, X,**'%'??*9;
/W ... checI i# $siEnature is =alid ... W/
?>
Cer tambi%n
+attr>list./
+attr>set./
+attr>remo5e./
+attr>list
>no version in(ormationA might #e only in 5$?
FattrZlist 22 Get a list o( eFtended attri#utes
Kescripci"n
array +attr>list > string (ilename PA int (lagsQ ?
,his (unctions gets a list o( names o( eFtended attri#utes o( a (ile;
+Ftended attri#utes have tEo di((erent namespacesC user and root namespace; @ser namespace is
availa#le (or all users Ehile root namespace is availa#le only (or user Eith root privileges; Fattr
operates on user namespace #y de(aultA #ut you can change that using 9laEs argument;
:ista de parmetros
96lename
,he path o( the (ile;
9laEs
Tabla !. ,upported +attr flags
%ATTR_DONTFOLLO"
Do not (olloE the sym#olic lin" #ut operate on sym#olic lin"
itsel(;
%ATTR_ROOT
et attri#ute in root >trusted? namespace; Re/uires root
privileges;
Calores retornados
,his (unction returns an array Eith names o( eFtended attri#utes;
E'emplos
E'emplo !. Prints names of all e+tended attributes of file
<?php
$#ile > Msome%#ileM;
$root%attributes > xattr%list3$#ile, X,**'%'??*9;
$user%attributes > xattr%list3$#ile9;
echo "'oot attributes@ Vn";
#oreach 3$root%attributes as $attr%name9 :
print#3"\sVn", $attr%name9;
;
echo "Vn +ser attributes@ Vn";
#oreach 3$attributes as $attr%name9 :
print#3"\sVn", $attr%name9;
;
?>
Cer tambi%n
+attr>get./
+attr>remo5e
>no version in(ormationA might #e only in 5$?
FattrZremove 22 Remove an eFtended attri#ute
Kescripci"n
#ool +attr>remo5e > string (ilenameA string name PA int (lagsQ ?
,his (unction removes an eFtended attri#ute o( a (ile;
+Ftended attri#utes have tEo di((erent namespacesC user and root namespace; @ser namespace is
availa#le (or all users Ehile root namespace is availa#le only (or user Eith root privileges; Fattr
operates on user namespace #y de(aultA #ut you can change that using 9laEs argument;
:ista de parmetros
96lename
,he (ile (rom Ehich Ee remove the attri#ute;
name
,he name o( the attri#ute to remove;
9laEs
Tabla !. ,upported +attr flags
%ATTR_DONTFOLLO"
Do not (olloE the sym#olic lin" #ut operate on sym#olic lin"
itsel(;
%ATTR_ROOT
et attri#ute in root >trusted? namespace; Re/uires root
privileges;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. Memo5es all e+tended attributes of a file
<?php
$#ile > Msome%#ileM;
$attributes > xattr%list3$#ile9;
#oreach 3$attributes as $attr%name9 :
xattr%remo=e3$#ile, $attr%name9;
;
?>
Cer tambi%n
+attr>list./
+attr>set./
+attr>get./
+attr>set
>no version in(ormationA might #e only in 5$?
FattrZset 22 et an eFtended attri#ute
Kescripci"n
#ool +attr>set > string (ilenameA string nameA string value PA int (lagsQ ?
,his (unction sets the value o( an eFtended attri#ute o( a (ile;
+Ftended attri#utes have tEo di((erent namespacesC user and root namespace; @ser namespace is
availa#le (or all users Ehile root namespace is availa#le only (or user Eith root privileges; Fattr
operates on user namespace #y de(aultA #ut you can change that using 9laEs argument;
:ista de parmetros
96lename
,he (ile in Ehich Ee set the attri#ute;
name
,he name o( the eFtended attri#ute; ,his attri#ute Eill #e created i( it doesnHt eFist or replaced
otherEise; %ou can change this #ehaviour #y using the 9laEs parameter;
alue
,he value o( the attri#ute;
9laEs
Tabla !. ,upported +attr flags
%ATTR_CREATE Function Eill (ail i( eFtended attri#ute already eFists;
%ATTR_REPLACE Function Eill (ail i( eFtended attri#ute doesnHt eFist;
%ATTR_DONTFOLLO"
Do not (olloE the sym#olic lin" #ut operate on sym#olic lin"
itsel(;
%ATTR_ROOT
et attri#ute in root >trusted? namespace; Re/uires root
privileges;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. ,ets e+tended attributes on .3a5 file
<?php
$#ile > Mmy%#a=ourite%sonE.8a=M;
xattr%set3$#ile, M,rtistM, M&omeoneM9;
xattr%set3$#ile, M"y ranIinEM, M-oodM9;
xattr%set3$#ile, MOisten countM, M<1M9;
/W ... other code ... W/
print#3"PouM=e played this sonE \d times", xattr%Eet3$#ile, MOisten countM99;
?>
Cer tambi%n
+attr>get./
+attr>remo5e./
+attr>supported
>no version in(ormationA might #e only in 5$?
FattrZsupported 22 5hec" i( (ilesystem supports eFtended attri#utes
Kescripci"n
#ool +attr>supported > string (ilename PA int (lagsQ ?
,his (unctions chec"s i( the (ilesystem holding the given (ile supports eFtended attri#utes; Read
access to the (ile is re/uired;
:ista de parmetros
96lename
,he path o( the tested (ile;
9laEs
Tabla !. ,upported +attr flags
%ATTR_DONTFOLLO"
Do not (olloE the sym#olic lin" #ut operate on sym#olic lin"
itsel(;
Calores retornados
,his (unction returns TRUE i( (ilesystem supports eFtended attri#utesA FALSE i( it doesnHt and
NULL i( it canHt #e determined >(or eFample Erong path or lac" o( permissions to (ile?;
E'emplos
E'emplo !. +attr>supported./ e+ample
,he (olloEing code chec"s i( Ee can use eFtended attri#utes;
<?php
$#ile > Msome%#ileM;
i# 3xattr%supported3$#ile99 :
/W ... maIe use o# some xattr%W #unctions ... W/
;
?>
Cer tambi%n
+attr>get./
+attr>list./
CIIIIC. +diff ;unctions
Introducci"n
Fdi(( eFtension creates and applies patches to #oth teFt and #inary (iles;
Me?uirimientos
,o use Fdi((A you Eill need li#Fdi(( installedA availa#le on the li#Fdi(( homepage
httpCDDEEE;Fmailserver;orgDFdi((2li#;html;
Nota- %ouHll need at least li#Fdi(( 3;: (or these (unctions to #e aEare o( memoryZlimit;
Instalaci"n
Fdi(( is currently availa#le through P+5L httpCDDpecl;php;netDpac"ageDFdi((;
.( P+AR is availa#le on your VniF2li"e system you can use the pear installer to install the Fdi((
eFtensionA #y the (olloEing commandC pear (5 install +diff;
%ou can alEays doEnload the tar;gz pac"age and install Fdi(( #y handC
E'emplo !. +diff install by hand
Eun0ip xdi##Fxxx.tE0
tar Fx=# xdi##Fxxx.tar
cd xdi##Fxxx
phpi0e
./con#iEure && maIe && maIe install
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
%DIFF_PATCH_NORMAL >integer?
%DIFF_PATCH_RE$ERSE >integer?
Tabla de contenidos
Fdi((Z(ileZdi((Z#inary 22 Ma"e #inary di(( o( tEo (iles
Fdi((Z(ileZdi(( 22 Ma"e uni(ied di(( o( tEo (iles
Fdi((Z(ileZmerge7 22 Merge 7 (iles into one
Fdi((Z(ileZpatchZ#inary 22 Patch a (ile Eith a #inary di((
Fdi((Z(ileZpatch 22 Patch a (ile Eith an uni(ied di((
Fdi((ZstringZdi((Z#inary 22 Ma"e #inary di(( o( tEo strings
Fdi((ZstringZdi(( 22 Ma"e uni(ied di(( o( tEo strings
Fdi((ZstringZmerge7 22 Merge 7 strings into one
Fdi((ZstringZpatchZ#inary 22 Patch a string Eith a #inary di((
Fdi((ZstringZpatch 22 Patch a string Eith an uni(ied di((
+diff>file>diff>binary
>no version in(ormationA might #e only in 5$?
Fdi((Z(ileZdi((Z#inary 22 Ma"e #inary di(( o( tEo (iles
Kescription
#ool +diff>file>diff>binary > string (ile1A string (ile0A string dest ?
+diff>file>diff>binary./ ma"es #inary di(( o( (iles 96le1 and 96le2 and stores result in (ile #est; ,his
(unction Eor"s Eith #oth teFt and #inary (iles; Resulting (ile is in #inary (ormat;
Nota- Both (iles Eill #e loaded into memory so ensure that your memoryZlimit is set
high enough;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. +diff>file>diff>binary./ e+ample
,he (olloEing code ma"es #inary di(( o( tEo archives;
<?php
$old%=ersion > Mmy%script%6.2.tE0M;
$ne8%=ersion > Mmy%script%6.6.tE0M;
xdi##%#ile%di##%binary3$old%=ersion, $ne8%=ersion, Mmy%script.bdi##M9;
?>
ee also +diff>string>diff>binary./;
+diff>file>diff
>no version in(ormationA might #e only in 5$?
Fdi((Z(ileZdi(( 22 Ma"e uni(ied di(( o( tEo (iles
Kescription
#ool +diff>file>diff > string (ile1A string (ile0A string dest PA int conteFt PA #ool minimalQQ ?
+diff>file>diff./ ma"es uni(ied di(( o( (iles 96le1 and 96le2 and stores result in (ile #est; conte8t
indicated hoE many lines o( conteFt you Eant to include in di(( result; et m6n6mal to TRUE i( you
Eant to minimalize size o( di(( >can ta"e a long time?; Resulting (ile is human2reada#le;
Nota- ,his (unction doesnHt Eor" Eell Eith #inary (iles; ,o ma"e di(( o( #inary (iles use
+diff>file>diff>binary./;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. +diff>file>diff./ e+ample
,he (olloEing code ma"es uni(ied di(( o( tEo php (iles;
<?php
$old%=ersion > Mmy%script.phpM;
$ne8%=ersion > Mmy%ne8%script.phpM;
xdi##%#ile%di##3$old%=ersion, $ne8%=ersion, Mmy%script.di##M, C9;
?>
ee also +diff>string>diff./;
+diff>file>merge7
>no version in(ormationA might #e only in 5$?
Fdi((Z(ileZmerge7 22 Merge 7 (iles into one
Kescription
miFed +diff>file>merge7 > string (ile1A string (ile0A string (ile7A string dest ?
+diff>file>merge7./ merges (iles 96le1A 96le2 and 96leR into one and stores result in (ile #est;
Returns TRUE i( merge Eas success(ulA string Eith re'ected chun"s i( it Eas not or FALSE i( an
internal error happened;
E'emplo !. +diff>file>merge7./ e+ample
,he (olloEing code merges three (iles into one;
<?php
$old%=ersion > MoriEinal%script.phpM;
$#ix6 > Mscript%8ith%#ix6.phpM;
$#ixC > Mscript%8ith%#ixC.phpM;
$errors > xdi##%#ile%merEe<3$old%=ersion, $#ix6, $#ixC, M#ixed%script.phpM9;
i# 3is%strinE3$errors99 :
echo "'ejects@Vn";
echo $errors;
;
?>
ee also +diff>string>merge7./;
+diff>file>patch>binary
>no version in(ormationA might #e only in 5$?
Fdi((Z(ileZpatchZ#inary 22 Patch a (ile Eith a #inary di((
Kescription
#ool +diff>file>patch>binary > string (ileA string patchA string dest ?
+diff>file>patch>binary./ patches (ile 96le Eith #inary patch in (ile patch and stores result in (ile
#est;
Nota- Both (iles >(ile and patch? Eill #e loaded into memory so ensure that your
memoryZlimit is set high enough;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplo !. +diff>file>patch>binary./ e+ample
,he (olloEing code applies #inary di(( to a (ile;
<?php
$old%=ersion > Marchi=eF6.2.tE0M;
$patch > Marchi=e.bpatchM;
$result > xdi##%#ile%patch%binary3$old%=ersion, $patch, Marchi=eF6.6.tE0M9;
i# 3$result9 :
echo "Sile patched";
; else :
echo "Sile couldnMt be patched";
;
?>
ee also +diff>string>patch>binary./;
+diff>file>patch
>no version in(ormationA might #e only in 5$?
Fdi((Z(ileZpatch 22 Patch a (ile Eith an uni(ied di((
Kescription
miFed +diff>file>patch > string (ileA string patchA string dest PA int (lagsQ ?
+diff>file>patch./ patches (ile 96le Eith uni(ied patch in (ile patch and stores result in (ile #est;
9laEs can #e either %DIFF_PATCH_NORMAL >de(ault modeA normal patch? or
%DIFF_PATCH_RE$ERSE >reversed patch?;
Returns FALSE i( an internal error happenedA string Eith re'ected chun"s o( patch or TRUE i( patch
has #een success(ully applied;
E'emplo !. +diff>file>patch./ e+ample
,he (olloEing code applies uni(ied di(( to a (ile;
<?php
$old%=ersion > Mmy%scriptF6.2.phpM;
$patch > Mmy%script.patchM;
$errors > xdi##%#ile%patch3$old%=ersion, $patch, Mmy%scriptF6.6.phpM9;
i# 3is%strinE3$errors99 :
echo "'ejects@Vn";
echo $errors;
;
?>
E'emplo *. Patch re5ersing e+ample
,he (olloEing code reverses a patch;
<?php
$ne8%=ersion > Mmy%scriptF6.6.phpM;
$patch > Mmy%script.patchM;
$errors > xdi##%#ile%patch3$ne8%=ersion, $patch, Mmy%scriptF6.2.phpM, XL4SS%,*RH%'E(E'&E9;
i# 3is%strinE3$errors99 :
echo "'ejects@Vn";
echo $errors;
;
?>
ee also +diff>string>patch./;
+diff>string>diff>binary
>no version in(ormationA might #e only in 5$?
Fdi((ZstringZdi((Z#inary 22 Ma"e #inary di(( o( tEo strings
Kescription
miFed +diff>string>diff>binary > string str1A string str0 ?
+diff>string>diff>binary./ ma"es #inary di(( o( strings str1 and str2;
Returns string Eith result or FALSE i( an internal error happened;
ee also +diff>file>diff>binary./;
+diff>string>diff
>no version in(ormationA might #e only in 5$?
Fdi((ZstringZdi(( 22 Ma"e uni(ied di(( o( tEo strings
Kescription
miFed +diff>string>diff > string str1A string str0 PA int conteFt PA #ool minimalQQ ?
+diff>string>diff./ ma"es uni(ied di(( o( strings str1 and str2; conte8t indicated hoE many lines o(
conteFt you Eant to include in di(( result; et m6n6mal to TRUE i( you Eant to minimalize size o(
di(( >can ta"e a long time?;
Nota- ,his (unction doesnHt Eor" Eell Eith #inary strings; ,o ma"e di(( o( #inary
strings use +diff>string>diff>binary./;
Returns string Eith result or FALSE i( an internal error happened;
E'emplo !. +diff>string>diff./ e+ample
,he (olloEing code ma"es uni(ied di(( o( tEo articles;
<?php
$old%article > #ile%Eet%contents3M./old%article.txtM9;
$ne8%article > $%'EN+E&*)MarticleM/; /W OetMs say that someone pasted a ne8 article to html #orm W/
$di## > xdi##%strinE%di##3$old%article, $ne8%article, 69;
i# 3is%strinE3$di##99 :
echo "Li##erences bet8een t8o articles@Vn";
echo $di##;
;
?>
ee also +diff>file>diff./;
+diff>string>merge7
>no version in(ormationA might #e only in 5$?
Fdi((ZstringZmerge7 22 Merge 7 strings into one
Kescription
string +diff>string>merge7 > string str1A string str0A string str7 PA string ierrorQ ?
+diff>string>merge7./ merges strings str1A str2 and strR into one;
.( error is passed then re'ected parts are stored inside this varia#le;
Returns merged string or FALSE i( an internal error happened;
ee also +diff>file>merge7./;
+diff>string>patch>binary
>no version in(ormationA might #e only in 5$?
Fdi((ZstringZpatchZ#inary 22 Patch a string Eith a #inary di((
Kescription
string +diff>string>patch>binary > string strA string patch ?
+diff>string>patch>binary./ patches string str Eith #inary patch in string patch;
Returns a patched string;
ee also +diff>file>patch>binary./;
+diff>string>patch
>no version in(ormationA might #e only in 5$?
Fdi((ZstringZpatch 22 Patch a string Eith an uni(ied di((
Kescription
string +diff>string>patch > string strA string patch PA int (lags PA string ierrorQQ ?
+diff>string>patch./ patches string str Eith uni(ied patch in string patch;
9laEs can #e either %DIFF_PATCH_NORMAL >de(ault modeA normal patch? or
%DIFF_PATCH_RE$ERSE >reversed patch?;
.( error is passed then re'ected parts are stored inside this varia#le;
E'emplo !. +diff>string>patch./ e+ample
,he (olloEing code applies changes to some article;
<?php
$old%article > #ile%Eet%contents3M./old%article.txtM9;
$di## > $%&E'(E')MpatchM/; /W OetMs say that someone pasted a patch to html #orm W/
$errors > MM;
$ne8%article > xdi##%strinE%patch3$old%article, $di##, XL4SS%,*RH%.?'",O, $errors9;
i# 3is%strinE3$ne8%article99 :
echo ".e8 article@Vn";
echo $ne8%article;
;
i# 3strlen3$errors99 :
echo "'ejects@ Vn";
echo $errors;
;
?>
Returns a patched string;
ee also +diff>file>patch./;
CIIIC. ;unciones de int%rprete IM:
Introducci"n
Acerca de IM:
JML >eJtensi#le Mar"up Language? es un (ormato de in(ormaci-n para el intercam#io de
documentos estructurado en la =Le#= +s un est*ndar de(inido por el consorcio de la =Lorld Lide
Le#= >L75?; e puede encontrar in(ormaci-n so#re JML y tecnolog)s relacionadas en
httpCDDEEE;E7;orgDJMLD;
Instalaci"n
+sta eFtensi-n usa eFpatA /ue se puede encontrar en httpCDDEEE;'clar";comDFmlDeFpat;html; +l
Ma"e(ile /ue viene con eFpat no crea una #i#lioteca por de(ectoA se puede usar esta regla de ma"e
para esoC
libexpat.a@ $3?ZA&9
ar Frc $^ $3?ZA&9
ranlib $^
e puede conseguir un pa/uete RPM de eFpat en httpCDDsource(orge;netDpro'ectsDeFpatD;
Nota /ue si se usa Apache21;7;: o posteriorA ya tienes la #i#lioteca re/uerida eFpat; implementeA
con(igura P&P usando ==76th=8ml >sin ninguna ruta adicional? y usar* autom*ticamente la #i#lioteca
eFpat incluida en Apache;
+n @N.JA e'ecuta configure con la opci-n ==76th=8ml; La #i#lioteca eFpat de#er)a ser instalada en
algBn lugar donde el compilador pueda encontrarlo; i se compila P&P como un m-dulo para
Apache 1;7;9 o posteriorA P&P autom*ticamente usar* la #i#lioteca integrada eFpat de Apache;
Puede necesitar esta#lecer C++34,-S y 4D34,-S en su entorno antes de e'ecutar =con(igure= si
se ha instalado eFpat en algBn lugar eF-tico;
5ompila P&P; iTa=tam_ %a de#er)a estar;
,obre Esta E+tensi"n
+sta eFtensi-n de P&P implementa soporte para eFpat de !ames 5lar"in en P&P; +ste con'unto de
herramientas permite interpretarA pero no validarA documentos JML; oporta tres codi(icaciones de
caracteres (uenteA tam#i<n proporcionados por P&PC US=,SC00A 0SO=PPSO=1 y UT3=P; UT3=1X no
est* soportado;
+sta eFtensi-n permite crear int<rpretes de JML y de(inir entonces Eestores para di(erentes eventos
JML; 5ada int<rprete JML tiene tam#i<n unos cuantos par*metros /ue se pueden a'ustar;
Los gestores de eventos JML de(inidos sonC
Tabla !. Festores de IM: soportados
;unci"n PHP
para establecer
gestor
Kescripci"n del e5ento
+ml>set>element>
handler./
Los eventos de elemento >=element=? se producen cuando el int<rprete JML
encuentra eti/uetas de comienzo o (in; &ay gestores separados para eti/uetas
de comienzo y eti/uetas de (in;
+ml>set>character
>data>handler./
La in(ormaci-n de caracteres esA por de(inici-nA todo el contenido no
=marcado= de los documentos JMLA incluidos los espacios en #lanco entre
eti/uetas; Nota /ue el int<rprete JML no aWade o elimina ningBn espacio en
#lancoA depende de la aplicaci-n >de ti? decidir si el espacio en #lanco es
signi(icativo;
;unci"n PHP
para establecer
gestor
Kescripci"n del e5ento
+ml>set>processin
g>instruction>han
dler./
Los programadores de P&P de#er)an estar ya (amiliarizados con las
instrucciones de procesado >P.?; `Nphp N_ es una instrucci-n de procesadoA
donde php se denomina el =o#'etivo de procesado=; +l mane'o de <stos es
espec)(ico a cada aplicaci-nA salvo /ue todos los o#'etivos P. /ue comienzan
con =JML= est*n reservados;
+ml>set>default>h
andler./
,odo lo /ue no va a otro gestorA va al gestor por de(ecto; e tendr*n en el
gestor por de(ecto cosas como las declaraciones de tipos de documento y
JML;
+ml>set>unparsed
>entity>decl>hand
ler./
+ste gestor se llamar* para la declaraci-n de una entidad no analizada
>NDA,A?;
+ml>set>notation>
decl>handler./
+ste gestor se llama para la declaraci-n de una anotaci-n;
+ml>set>e+ternal>
entity>ref>handle
r./
+ste gestor se llama cuando el int<rprete JML encuentra una re(erencia a una
entidad general interpretada eFterna; Puede ser una re(erencia a un archivo o
@RLA por e'emplo; $er el e'emplo de entidad eFterna para demostraci-n;
Case ;olding
Las (unciones mane'adoras de elementos pueden tomar sus nom#res de elementos =case=9ol#e#=;
5ase2(olding se de(ine en el est*ndar JML como =un proceso aplicado a una secuencia de
caracteresA en el cual a/uellos identi(icados como sin2mayBsculas son reemplazados por sus Walentes
en mayBsculas=; +n otras pala#rasA cuando se trata de JMLA case2(olding simplemente signi(ica
poner en mayBsculas;
Por de(ectoA todos los nom#res de elementos /ue se pasan a las (unciones gestoras estan =pasados a
mayBsculas=; +sta conducta puede ser o#servada y controlada por el analizador JML con las
(unciones +ml>parser>get>option./ y +ml>parser>set>option./A respectivamente;
C"digos de Error
Las siguientes constantes se de(inen para c-digos de error JML >como los devuelve +ml>parse./?C
JMLZ+RRORZNON+
JMLZ+RRORZNOZM+MOR%
JMLZ+RRORZ%N,AJ
JMLZ+RRORZNOZ+L+M+N,
JMLZ+RRORZ.N$AL.DZ,OS+N
JMLZ+RRORZ@N5LO+DZ,OS+N
JMLZ+RRORZPAR,.ALZ5&AR
JMLZ+RRORZ,AGZM.MA,5&
JMLZ+RRORZD@PL.5A,+ZA,,R.B@,+
JMLZ+RRORZ!@NSZAF,+RZDO5Z+L+M+N,
JMLZ+RRORZPARAMZ+N,.,%ZR+F
JMLZ+RRORZ@ND+F.N+DZ+N,.,%
JMLZ+RRORZR+5@R.$+Z+N,.,%ZR+F
JMLZ+RRORZA%N5Z+N,.,%
JMLZ+RRORZBADZ5&ARZR+F
JMLZ+RRORZB.NAR%Z+N,.,%ZR+F
JMLZ+RRORZA,,R.B@,+Z+J,+RNALZ+N,.,%ZR+
F
JMLZ+RRORZM.PLA5+DZJMLZP.
JMLZ+RRORZ@NSNOLNZ+N5OD.NG
JMLZ+RRORZ.N5ORR+5,Z+N5OD.NG
JMLZ+RRORZ@N5LO+DZ5DA,AZ+5,.ON
JMLZ+RRORZ+J,+RNALZ+N,.,%Z&ANDL.NG
Codificaci"n de caracteres
La eFtension JML de P&P soporta el con'unto de caracteres @nicode a trav<s de di(erentes
co#696cac6ones #e caracteres; &ay dos tipos de codi(icaciones de caracteresA co96cac6`n #e 9uente y
co#696cac6`n #e #est6no; La representaci-n interna de P&P del documento est* siempre codi(icada
con UT3=P;
La codi(icaci-n de (uente se hace cuando un documento JML es interpretado; Al crear un int<rprete
JML A se puede especi(icar una codi(icaci-n de (uente >esta codi(icaci-n no se puede cam#iar m*
tarde durante el tiempo de vida del int<rprete JML?; Las codi(icaciones de (uente soportadas son
0SO=PPSO=1A US=,SC00 y UT3=P; Las dos primeras son codi(icaciones de #yte2BnicoA lo /ue
signi(ica /ue cada car*cter se representa por un solo #yte; UT3=P puede codi(icar caracteres
compuestos por un nBmero varia#le de #its >hasta 01? en de uno a cuatro #ytes; La codi(icaci-n
(uente por de(ecto usada por P&P es 0SO=PPSO=1;
La codi(icaci-n de destino se hace cuando P&P pasa datos a las (unciones gestoras JML; 5uando se
crea un int<rprete JMLA la codi(icaci-n de destino se crea igual a la codi(icaci-n de (uenteA pero se
puede cam#iar en cual/uier momento; La codi(icaci-n de destino a(ectar* a la in(ormaci-n de los
caracteres as) como a los nom#res de las eti/uetas y a los o#'etivos de instrucciones de procesado;
i el int<rprete JML encuentra caracteres (uera del rango /ue su codi(icaci-n de (uente es capaz de
representarA devolver* un error;
i P&P encuentra caracteres en el documento JML interpretado /ue no pueden ser representados en
la codi(icaci-n de destino elegidaA los caracteres pro#lema ser*n =degradados=; ActualmenteA esto
signi(ica /ue tales caracteres se reemplazan por un signo de interrogaci-n;
Algunos E'emplos
A/u) hay algunos e'emplos de archivos de comandos P&P /ue interpretan documentos JML;
E'emplos de Estructuras de Elementos IM:
+ste primer e'emplo muestra la estructura del elemento inicio en un documento con indentaci-n;
E'emplo !. Muestra la Estructura del Elemento IM:
$#ile > "data.xml";
$depth > array39;
#unction startElement3$parser, $name, $attrs9 :
Elobal $depth;
#or 3$i > 2; $i < $depth)$parser/; $i[[9 :
print " ";
;
print "$nameVn";
$depth)$parser/[[;
;
#unction endElement3$parser, $name9 :
Elobal $depth;
$depth)$parser/FF;
;
$xml%parser > xml%parser%create39;
xml%set%element%handler3$xml%parser, "startElement", "endElement"9;
i# 3!3$#p > #open3$#ile, "r"999 :
die3"could not open X"O input"9;
;
8hile 3$data > #read3$#p, 12KG99 :
i# 3!xml%parse3$xml%parser, $data, #eo#3$#p999 :
die3sprint#3"X"O error@ \s at line \d",
xml%error%strinE3xml%Eet%error%code3$xml%parser99,
xml%Eet%current%line%number3$xml%parser999;
;
;
xml%parser%#ree3$xml%parser9;
E'emplo de Mapeo de Eti?uetas IM:
E'emplo *. Traduciendo IM: a HTM:
+ste e'emplo trans(orma eti/uetas de un documento JML directamente a eti/uetas &,ML; Los
elementos no encontrados en el =array de traducci-n >=map array=? son ignorados; Por supuestoA este
e'emplo solamente (uncionar* con un tipo de documentos JML espec)(ico;
$#ile > "data.xml";
$map%array > array3
"Z?OL" >> "Z",
"E"H,&4&" >> "4",
"O4*E',O" >> "**"
9;
#unction startElement3$parser, $name, $attrs9 :
Elobal $map%array;
i# 3$htmltaE > $map%array)$name/9 :
print "<$htmltaE>";
;
;
#unction endElement3$parser, $name9 :
Elobal $map%array;
i# 3$htmltaE > $map%array)$name/9 :
print "</$htmltaE>";
;
;
#unction characterLata3$parser, $data9 :
print $data;
;
$xml%parser > xml%parser%create39;
// usa caseF#oldinE para Que estemos seEuros de encontrar la etiQueta
// en $map%array
xml%parser%set%option3$xml%parser, X"O%?*4?.%R,&E%S?OL4.-, true9;
xml%set%element%handler3$xml%parser, "startElement", "endElement"9;
xml%set%character%data%handler3$xml%parser, "characterLata"9;
i# 3!3$#p > #open3$#ile, "r"999 :
die3"could not open X"O input"9;
;
8hile 3$data > #read3$#p, 12KG99 :
i# 3!xml%parse3$xml%parser, $data, #eo#3$#p999 :
die3sprint#3"X"O error@ \s at line \d",
xml%error%strinE3xml%Eet%error%code3$xml%parser99,
xml%Eet%current%line%number3$xml%parser999;
;
;
xml%parser%#ree3$xml%parser9;
E'emplo de Entidad E+terna IM:
+ste e'emplo resalta el c-digo JML; .lustra c-mo usar un gestor de re(erencia de entidades eFtenas
para incluir y analizar otros documentosA as) como cuBntos P.s pueden ser procesadosA y un modo de
determinar =con(ianza= para P.s /ue contienen c-digo;
Los documentos JML /ue se pueden usar en este e'emplo se encuentran #a'o el e'emplo
>xmltest.xml y xmltestC.xml;?
E'emplo 7. E'emplo de Entidades E+ternas
$#ile > "xmltest.xml";
#unction trustedSile3$#ile9 :
// solamente con#ga en archi=os locales Que nos pertene0can
i# 3!ereEi3"c3)aF0/[9@//", $#ile9
&& #ileo8ner3$#ile9 >> Eetmyuid399 :
return true;
;
return #alse;
;
#unction startElement3$parser, $name, $attribs9 :
print "&lt;<#ont color>V"U2222ccV">$name</#ont>";
i# 3si0eo#3$attribs99 :
8hile 3list3$I, $=9 > each3$attribs99 :
print " <#ont color>V"U22KK22V">$I</#ont>>V"<#ont
color>V"UKK2222V">$=</#ont>V"";
;
;
print "&Et;";
;
#unction endElement3$parser, $name9 :
print "&lt;/<#ont color>V"U2222ccV">$name</#ont>&Et;";
;
#unction characterLata3$parser, $data9 :
print "<b>$data</b>";
;
#unction 4Handler3$parser, $tarEet, $data9 :
s8itch 3strtolo8er3$tarEet99 :
case "php"@
Elobal $parser%#ile;
// &i el documento anali0ado es "de con#ian0a", diremos
// Que es seEuro ejecutar cidiEo H en su interior.
// &i no, en =e0 de ello mostrare el cidiEo.
i# 3trustedSile3$parser%#ile)$parser/99 :
e=al3$data9;
; else :
print#3"+ntrusted H code@ <i>\s</i>",
htmlspecialchars3$data99;
;
breaI;
;
;
#unction de#aultHandler3$parser, $data9 :
i# 3substr3$data, 2, 69 >> "&" && substr3$data, F6, 69 >> ";"9 :
print#3M<#ont color>"Uaa22aa">\s</#ont>M,
htmlspecialchars3$data99;
; else :
print#3M<#ont si0e>"F6">\s</#ont>M,
htmlspecialchars3$data99;
;
;
#unction externalEntity'e#Handler3$parser, $openEntity.ames, $base, $system4d,
$public4d9 :
i# 3$system4d9 :
i# 3!list3$parser, $#p9 > ne8%xml%parser3$system4d99 :
print#3"Rould not open entity \s at \sVn", $openEntity.ames,
$system4d9;
return #alse;
;
8hile 3$data > #read3$#p, 12KG99 :
i# 3!xml%parse3$parser, $data, #eo#3$#p999 :
print#3"X"O error@ \s at line \d 8hile parsinE entity \sVn",
xml%error%strinE3xml%Eet%error%code3$parser99,
xml%Eet%current%line%number3$parser9, $openEntity.ames9;
xml%parser%#ree3$parser9;
return #alse;
E'emplo 8. +mltest.+ml
<?xml =ersion>M6.2M?>
<!L?R*PE chapter &P&*E" "/just/a/test.dtd" )
<!E.*4*P plainEntity "S?? entity">
<!E.*4*P systemEntity &P&*E" "xmltestC.xml">
/>
<chapter>
<*4*OE>*itle &plainEntity;</*4*OE>
<para>
<in#ormaltable>
<tEroup cols>"<">
<tbody>
<ro8><entry>a6</entry><entry morero8s>"6">b6</entry><entry>c6</entry></ro8>
<ro8><entry>aC</entry><entry>cC</entry></ro8>
<ro8><entry>a<</entry><entry>b<</entry><entry>c<</entry></ro8>
</tbody>
</tEroup>
</in#ormaltable>
</para>
&systemEntity;
<sect6 id>"about">
<title>,bout this Locument</title>
<para>
<!FF this is a comment FF>
<?php print MHi! *his is H =ersion M.php=ersion39; ?>
</para>
</sect6>
</chapter>
+ste archivo se incluye desde xmltest.xmlC
E'emplo 9. +mltest*.+ml
<?xml =ersion>"6.2"?>
<!L?R*PE #oo )
<!E.*4*P testEnt "test entity">
/>
<#oo>
<element attrib>"=alue"/>
&testEnt;
<?php print "*his is some more H code beinE executed."; ?>
</#oo>
Tabla de contenidos
ut(MZdecode 22 5onvierte una cadena codi(icada @,F2M a .O2MM4921
ut(MZencode 22 codi(ica una cadena .O2MM4921 a @,F2M
FmlZerrorZstring 22 o#tiene la cadena de error del analizador JML
FmlZgetZcurrentZ#yteZindeF 22 o#tiene el )ndice del #yte actual para un analizador JML
FmlZgetZcurrentZcolumnZnum#er 22 O#tiene el nBmero de columna actual para un analizador
JML;
FmlZgetZcurrentZlineZnum#er 22 o#tiene el nBmero de l)nea actual de un analizador JML
FmlZgetZerrorZcode 22 o#tiene el c-digo de error del analizador JML
FmlZparseZintoZstruct 22 Parse JML data into an array structure
FmlZparse 22 comienza a analizar un documento JML
FmlZparserZcreateZns 22 5reate an JML parser Eith namespace support
FmlZparserZcreate 22 crea un analizador de JML
FmlZparserZ(ree 22 Li#era un analizador JML
FmlZparserZgetZoption 22 o#tiene las opciones de un analizador JML
FmlZparserZsetZoption 22 esta#lece las opciones de un analizador JML
FmlZsetZcharacterZdataZhandler 22 +sta#lece gestores de datos de caracteres
FmlZsetZde(aultZhandler 22 set up de(ault handler
FmlZsetZelementZhandler 22 esta#lece gestores de los elementos principio y (in
FmlZsetZendZnamespaceZdeclZhandler 22 et up end namespace declaration handler
FmlZsetZeFternalZentityZre(Zhandler 22 +sta#lece gestores de re(erencia de entidades eFternas
FmlZsetZnotationZdeclZhandler 22 +sta#lece gestores de declaraciones de notaci-n
FmlZsetZo#'ect 22 @sa un analizador JML dentro de un o#'ecto
FmlZsetZprocessingZinstructionZhandler 22 +sta#lece el gestor de instrucciones de procesado >P.?
FmlZsetZstartZnamespaceZdeclZhandler 22 et up start namespace declaration handler
FmlZsetZunparsedZentityZdeclZhandler 22 +sta#lece un gestor de declaraciones de entidades no
analizadas
utfN>decode
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
ut(MZdecode 22 5onvierte una cadena codi(icada @,F2M a .O2MM4921
Kescripci"n
string utfN>decode > string data ?
+sta (unci-n decodi(ica#ataA asume codi(icaci-n UT3=P A a 0SO=PPSO=1;
Mira utfN>encode./ para una eFplicaci-n de codi(icaci-n @,F2M;
utfN>encode
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
ut(MZencode 22 codi(ica una cadena .O2MM4921 a @,F2M
Kescripci"n
string utfN>encode > string data ?
+sta (unci-n codi(ica la cadena #ata a UT3=PA y devuelve la versi-n codi(icada; UT3=P es un
mecanismo est*ndar usado por @nicodepara codi(icar valores de caracteres ampl6os en un chorro de
#ytes; UT3=P es transparente a caracteres de A5.. planoA es auto2sincronizado >signi(ica /ue es
posi#le para un programa averiguar d-nde comienzan los caracteres en el chorro de #ytes? y se
puede usar con (unciones de comparaci-n de cadenas normales para ordenar y otros (ines; P&P
codi(ica caracteres UT3=P en hasta cuatro #ytesA como estoC
Tabla !. Codificaci"n )T;(N
bytes bits representaci"n
1 : 3#######
0 11 113##### 13######
7 1K 1113#### 13###### 13######
8 01 11113### 13###### 13###### 13######
5ada 1 representa un #it /ue puede ser usado para almacenar datos de caracteres;
+ml>error>string
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZerrorZstring 22 o#tiene la cadena de error del analizador JML
Kescripci"n
string +ml>error>string > int code ?
co#e
@n c-digo de error de +ml>get>error>code./;
Devuelve una cadena con una descripci-n teFtual del c-digo de error co#eA o FALSE si no se
encontr- descripci-n;
+ml>get>current>byte>inde+
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZgetZcurrentZ#yteZindeF 22 o#tiene el )ndice del #yte actual para un analizador JML
Kescripci"n
int +ml>get>current>byte>inde+ > int parser ?
parser
@na re(erencia al analizador JML del /ue o#tener el )ndice del #yte;
+sta (unci-n devuelve FALSE si parser no re(erencia un analizador v*lidoA o si no devuelve en /u<
)ndice de #yte se encuentra el #u((er de datos del analizador >empezando en 3?;
+ml>get>current>column>number
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZgetZcurrentZcolumnZnum#er 22 O#tiene el nBmero de columna actual para un analizador
JML;
Kescripci"n
int +ml>get>current>column>number > int parser ?
parser
@na re(erencia al analizador JML del /ue o#tener el nBmero de columna;
+sta (unci-n devuelve FALSE si parser no re(erencia un analizador v*lidoA o si no devuelve en /u<
columna de la l)nea actual >como se o#tiene de +ml>get>current>line>number./? en la /ue se
encuentra el analizador;
+ml>get>current>line>number
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZgetZcurrentZlineZnum#er 22 o#tiene el nBmero de l)nea actual de un analizador JML
Kescripci"n
int +ml>get>current>line>number > int parser ?
parser
@na re(erencia al analizador JML del /ue o#tener el nBmero de l)nea;
+sta (unci-n devuelve FALSE si parser no re(erencia un analizador v*lidoA o si no devuelve en /u<
l)nea se encuentra actualmente el #u((er de datos del analizador;
+ml>get>error>code
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZgetZerrorZcode 22 o#tiene el c-digo de error del analizador JML
Kescripci"n
int +ml>get>error>code > int parser ?
parser
@na re(erencia al analizador JML del /ue o#tener el c-digo de error;
+sta (unci-n devuelve FALSE si parser no re(erencia un analizador v*lidoA o si no devuelve uno de
los c-digos de error listados en la secci-n de c-digos de error;
+ml>parse>into>struct
>P&P 7_^ 7;3;MA P&P 8 A P&P 4?
FmlZparseZintoZstruct 22 Parse JML data into an array structure
Kescription
int +ml>parse>into>struct > resource parserA string dataA array ivalues PA array iindeFQ ?
,his (unction parses an JML (ile into 0 parallel array structuresA one >6n#e8? containing pointers to
the location o( the appropriate values in the alues array; ,hese last tEo parameters must #e passed
#y re(erence;
BeloE is an eFample that illustrates the internal structure o( the arrays #eing generated #y the
(unction; Le use a simple note tag em#edded inside a para tagA and then Ee parse this and print out
the structures generatedC
E'emplo !. +ml>parse>into>struct./ e+ample
<?php
$simple > "<para><note>simple note</note></para>";
$p > xml%parser%create39;
xml%parse%into%struct3$p, $simple, $=als, $index9;
xml%parser%#ree3$p9;
echo "4ndex arrayVn";
print%r3$index9;
echo "Vn(als arrayVn";
print%r3$=als9;
?>
Lhen Ee run that codeA the output Eill #eC
4ndex array
,rray
3
),',/ >> ,rray
3
)2/ >> 2
)6/ >> C
9
).?*E/ >> ,rray
3
)2/ >> 6
9
9
(als array
,rray
3
)2/ >> ,rray
3
)taE/ >> ,',
)type/ >> open
)le=el/ >> 6
9
)6/ >> ,rray
3
)taE/ >> .?*E
)type/ >> complete
)le=el/ >> C
)=alue/ >> simple note
9
)C/ >> ,rray
3
)taE/ >> ,',
)type/ >> close
)le=el/ >> 6
9
9
+vent2driven parsing >#ased on the eFpat li#rary? can get complicated Ehen you have an JML
document that is compleF; ,his (unction does not produce a DOM style o#'ectA #ut it generates
structures amena#le o( #eing transversed in a tree (ashion; ,husA Ee can create o#'ects representing
the data in the JML (ile easily; LetHs consider the (olloEing JML (ile representing a small data#ase
o( aminoacids in(ormationC
E'emplo *. moldb.+ml ( small database of molecular information
<?xml =ersion>"6.2"?>
<moldb>
<molecule>
<name>,lanine</name>
<symbol>ala</symbol>
<code>,</code>
<type>hydrophobic</type>
</molecule>
<molecule>
<name>Oysine</name>
<symbol>lys</symbol>
<code>]</code>
<type>charEed</type>
</molecule>
</moldb>
And some code to parse the document and generate the appropriate o#'ectsC
E'emplo 7. parsemoldb.php ( parses moldb.+ml into an array of molecular ob'ects
<?php
class ,mino,cid :
=ar $name; // aa name
=ar $symbol; // three letter symbol
=ar $code; // one letter code
=ar $type; // hydrophobic, charEed or neutral

#unction ,mino,cid 3$aa9
:
#oreach 3$aa as $I>>$=9
$thisF>$I > $aa)$I/;
;
;
#unction readLatabase3$#ilename9
:
// read the X"O database o# aminoacids
$data > implode3"", #ile3$#ilename99;
$parser > xml%parser%create39;
xml%parser%set%option3$parser, X"O%?*4?.%R,&E%S?OL4.-, 29;
xml%parser%set%option3$parser, X"O%?*4?.%&]4%7H4*E, 69;
xml%parse%into%struct3$parser, $data, $=alues, $taEs9;
xml%parser%#ree3$parser9;
// loop throuEh the structures
#oreach 3$taEs as $Iey>>$=al9 :
i# 3$Iey >> "molecule"9 :
$molranEes > $=al;
// each contiEuous pair o# array entries are the
// lo8er and upper ranEe #or each molecule de#inition
#or 3$i>2; $i < count3$molranEes9; $i[>C9 :
$o##set > $molranEes)$i/ [ 6;
$len > $molranEes)$i [ 6/ F $o##set;
$tdb)/ > parse"ol3array%slice3$=alues, $o##set, $len99;
;
; else :
continue;
;
;
return $tdb;
;
#unction parse"ol3$m=alues9
:
#or 3$i>2; $i < count3$m=alues9; $i[[9 :
$mol)$m=alues)$i/)"taE"// > $m=alues)$i/)"=alue"/;
;
return ne8 ,mino,cid3$mol9;
;
$db > readLatabase3"moldb.xml"9;
echo "WW Latabase o# ,mino,cid objects@Vn";
print%r3$db9;
?>
A(ter eFecuting parsemoldb.phpA the varia#le '#1 contains an array o( AminoAcid o#'ectsA and
the output o( the script con(irms thatC
WW Latabase o# ,mino,cid objects@
,rray
3
)2/ >> aminoacid ?bject
3
)name/ >> ,lanine
)symbol/ >> ala
)code/ >> ,
)type/ >> hydrophobic
9
)6/ >> aminoacid ?bject
3
)name/ >> Oysine
)symbol/ >> lys
)code/ >> ]
)type/ >> charEed
9
9
+ml>parse
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZparse 22 comienza a analizar un documento JML
Kescripci"n
int +ml>parse > int parserA string data PA int isFinalQ ?
parser
@na re(erencia al analizador JML /ue se va a utilizar;
#ata
5on'unto de in(ormaci-n /ue se analizar*; @n documento puede ser analizado por trozos
llamando varias veces a +ml>parse./ con nueva in(ormaci-nA siempre /ue se esta#lezca el
par*metro 6s36nal y sea TRUE cuando el Bltimo dato sea analizado;
6s36nal >optional?
i eFiste y es TRUEA #ata es el Bltimo pedazo de in(ormaci-n env)ado en este an*lisis;
5uando el documento JML es analizadoA se hacen llamadas a los gestores para los eventos
con(igurados tantas veces como sea necesarioA despu<s de /ue esta (unci-n devuelva TRUE o
FALSE;
Devuelve TRUE si el an*lisis se realiza con <FitoA FALSE si no tiene <FitoA o si parser no re(erencia
a un analizador v*lido; Para an*lisis (allidosA se puede recuperar in(ormaci-n de error con
+ml>get>error>code./A +ml>error>string./A +ml>get>current>line>number./A
+ml>get>current>column>number./ y +ml>get>current>byte>inde+./;
+ml>parser>create>ns
>P&P 8 _^ 8;3;4A P&P 4?
FmlZparserZcreateZns 22 5reate an JML parser Eith namespace support
Kescription
resource +ml>parser>create>ns > Pstring encoding PA string separatorQQ ?
+ml>parser>create>ns./ creates a neE JML parser Eith JML namespace support and returns a
resource handle re(erencing it to #e used #y the other JML (unctions;
Lith a namespace aEare parser tag parameters passed to the various handler (unctions Eill consist
o( namespace and tag name separated #y the string speci(ied in seperator or <:< #y de(ault;
,he optional enco#6nE speci(ies the character encoding (or the inputDoutput in P&P 8; tarting (rom
P&P 4A the input encoding is automatically detectedA so that the enco#6nE parameter speci(ies only
the output encoding; .n P&P 8A the de(ault output encoding is the same as the input charset; .n P&P
4;3;3 and 4;3;1A the de(ault output charset is .O2MM4921A Ehile in P&P 4;3;0 and upper is @,F2M;
,he supported encodings are 0SO=PPSO=1A UT3=P and US=,SC00;
ee also +ml>parser>create./A and +ml>parser>free./;
+ml>parser>create
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZparserZcreate 22 crea un analizador de JML
Kescripci"n
int +ml>parser>create > Pstring encodingQ ?
enco#6nE >opcional?
Ou< codi(icaci-n de caracteres de#er)a usar el analizador; Las siguientes codi(icaci-n de
caracteres est*n soportadasC
0SO=PPSO=1 >por de(ecto?
US=,SC00
UT3=P
+sta (unci-n crea un analizador JML y devuelve un )ndice para usarlo con otras (unciones JML;
Devuelve FALSE en caso de (allo;
+ml>parser>free
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZparserZ(ree 22 Li#era un analizador JML
Kescripci"n
string +ml>parser>free > int parser ?
parser
@na re(erencia al analizador JML /ue se li#erar*;
+sta (unci-n devuelve FALSE si parser no re(erencia un analizador v*lidoA o si no li#era el
analizador y devuelve TRUE;
+ml>parser>get>option
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZparserZgetZoption 22 o#tiene las opciones de un analizador JML
Kescripci"n
miFed +ml>parser>get>option > int parserA int option ?
parser
@na re(erencia al analizador JML del /ue o#tener opciones;
opt6on
Ou< opci-n recuperar; $er +ml>parser>set>option./ para una lista de opciones;
+sta (unci-n devuelve FALSE si parser no re(erencia un analizador v*lidoA o si la opci-n no pudo
ser esta#lecida; i noA se devuelve la opci-n;
Mirar +ml>parser>set>option./ para la lista de opciones;
+ml>parser>set>option
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZparserZsetZoption 22 esta#lece las opciones de un analizador JML
Kescripci"n
int +ml>parser>set>option > int parserA int optionA miFed value ?
parser
@na re(erencia al analizador JML en el /ue esta#lecer opciones;
opt6on
Opci-n /ue se esta#lecer*; $er m*s a#a'o;
alue
+l nuevo valor de la opci-n;
+sta (unci-n devuelve FALSE si parser no re(erencia un analizador v*lidoA o si la opci-n no pudo
ser esta#lecida; i noA la opci-n se esta#lece y devuelve TRUE;
Las opciones siguientes est*n disponi#lesC
Tabla !. Jpciones de anali6ador IM:
Jpci"n constante
Tipo de
Katos
Kescripci"n
JMLZOP,.ONZ5A
+ZFOLD.NG
integer
5ontrola si case2(olding se ha#ilita para este analizador JML;
&a#ilitado por de(ecto;
JMLZOP,.ONZ,A
RG+,Z+N5OD.NG
string
+sta#lece /u< codi(icaci-n destino se usa en este analizador JML;
Por de(ectoA esta puesta al mismo /ue la codi(icaci-n (uente usada
por +ml>parser>create./; Las codi(icaciones de destino
soportadas son 0SO=PPSO=1A US=,SC00 y UT3=P;
+ml>set>character>data>handler
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZsetZcharacterZdataZhandler 22 +sta#lece gestores de datos de caracteres
Kescripci"n
int +ml>set>character>data>handler > int parserA string handler ?
+sta#lece la (unci-n gestora de datos de caracteres para el analizador JML parser; han#ler es un
string /ue contiene el nom#re de la (unci-n /ue de#e eFistir cuando +ml>parse./ es llamado por
parser;
La (unci-n nom#rada en han#ler de#e aceptar dos par*metrosC handler > int parserA string data ?
parser
+l primer par*metroA parserA es una re(erencia al analizador JML /ue llama al gestor;
#ata
+l segundo par*metroA #ataA contiene los datos caracteres como string;
i una (unci-n gestora se esta#lece como la cadena vac)aA o FALSEA el gestor en cuesti-n se
desha#ilita;
e devuelve TRUE si se esta#leci- el gestorA FALSE si parser no es un analizador;
+n la actualidad no hay soporte para gestores o#'etoDm<todo;
+ml>set>default>handler
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZsetZde(aultZhandler 22 set up de(ault handler
Kescripci"n
int +ml>set>default>handler > int parserA string handler ?
+sta#lece la (unci-n gestora por de(ecto para un analizador JML parser; han#ler es un string /ue
contiene el nom#re de la (unci-n /ue de#e eFistir cuando +ml>parse./ es llamado por parser;
La (unci-n nom#rada en han#ler de#e aceptar dos par*metrosC handler > int parserA string data ?
parser
+l primer par*metroA parserA es una re(erencia al analizador JML /ue llama al gestor;
#ata
+l segundo par*metroA #ataA contiene los caracteres de dato; +sto puede ser la declaraci-n
JMLA la declaraci-n de tipo de documentoA entidades u otros datos para los cuales no eFiste
otro gestor;
i una (unci-n gestora se esta#lece como la cadena vac)aA o FALSEA el gestor en cuesti-n se
desha#ilita;
e devuelve TRUE si se esta#leci- el gestorA FALSE si parser no es un analizador;
+n la actualidad no hay soporte para gestores o#'etoDm<todo;
+ml>set>element>handler
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZsetZelementZhandler 22 esta#lece gestores de los elementos principio y (in
Kescripci"n
int +ml>set>element>handler > int parserA string start+lement&andlerA string end+lement&andler ?
+sta#lece las (unciones de gestion de elementos para el analizador JML parser;
startElement!an#ler y en#Element!an#ler son strings /ue contienen los nom#res de las (unciones
/ue de#en eFistir cuando +ml>parse./ es llamado por parser;
La (unci-n denominada startElement!an#ler de#e aceptar tres par*metrosC start*le&entHandler
> int parserA string nameA string attri#s ?
parser
+l primer par*metroA parserA es una re(erencia al analizador JML /ue llama al gestor;
name
+l segundo par*metroA nameA contiene el nom#re del elemento para el /ue se llama a este
gestor; i la propiedad de case2(olding tiene e(ecto para este analizadorA el nom#re del
elemento estar* en mayBsculas;
attr61s
+l tercer par*metroA attr61sA contiene un array asociativo con los atri#utos de los elementos >si
hay?; Las claves de este array son los nom#res de los atri#utosA los valores son los valores de
los atri#utos; Los nom#res de los atri#utos est*n en mayBsculas >case2(olded? con el mismo
criterio /ue los nom#res de los elementos; Los valores de los atri#utos no su(ren las
consecuencias de case2(olding;
+l orden original de los atri#utos se puede recuperar recorriendo attr61s del modo usualA
usando each./; La primera clave del array es el el primer atri#utoA y as) sucesivamente;
La (unci-n llamada en#Element!an#ler de#e aceptar dos par*metrosC end*le&entHandler > int
parserA string name ?
parser
+l primer par*metroA parserA es una re(erencia al analizador JML /ue llama al gestor;
name
+l segundo par*metroA nameA contiene el nom#re del elemento para el /ue se llama a este
gestor; i la propiedad de case2(olding tiene e(ecto para este analizadorA el nom#re del
elemento estar* en mayBsculas;
i una (unci-n gestora se esta#lece como la cadena vac)aA o FALSEA el gestor en cuesti-n se
desha#ilita;
e devuelve TRUE si se esta#lecieron los gestoresA FALSE si parser no es un analizador;
+n la actualidad no hay soporte para gestores o#'etoDm<todo;
+ml>set>end>namespace>decl>handler
>P&P 8 _^ 8;3;4A P&P 4?
FmlZsetZendZnamespaceZdeclZhandler 22 et up end namespace declaration handler
Kescription
#ool +ml>set>end>namespace>decl>handler > resource parserA call#ac" handler ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- +n lugar de un nom#re de (unci-nA se puede proporcionar una matriz /ue
contenga una re(erencia a un o#'eto o el nom#re de un m<todo;
+ml>set>e+ternal>entity>ref>handler
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZsetZeFternalZentityZre(Zhandler 22 +sta#lece gestores de re(erencia de entidades eFternas
Kescripci"n
int +ml>set>e+ternal>entity>ref>handler > int parserA string handler ?
+sta#lece la (unci-n gestora de declaraciones de notaci-n para el analizador JML parser; han#ler
es un string /ue contiene el nom#re de una (unci-n /ue de#e eFistir cuando +ml>parse./ es llamado
por parser;
La (unci-n llamada por han#ler de#e aceptar cinco par*metrosA y de#er)a devolver un valor entero;
i el valor devuelto desde el gestor >handler? es (also >lo cual ocurrir* si no se devuelve un valor?A el
analizador JML de'ar* de analizar y +ml>get>error>code./ devolver*
JMLZ+RRORZ+J,+RNALZ+N,.,%Z&ANDL.NG; int handler > int parserA string
open+ntityNamesA string #aseA string system.dA string pu#lic.d ?
parser
+l primer par*metroA parserA es una re(erencia al analizador JML /ue llama al gestor;
openEnt6t?Names
+l segundo par*metroA openEnt6t?NamesA es una listaA separada por espaciosA de los nom#res
de las entidades /ue se a#ren para el an*lisis de esta entidad >incluido el nom#re de la entidad
re(erenciada?;
1ase
+sta es la #ase para resolver el identi(icador de sistema >s?stem6#? de la entidad eFterna; +n la
actualidad este par*metro es siempre la cadena vac)a;
s?stem0#
+l cuarto par*metroA s?stem0#A es el identi(icador del sistema tal como se especi(ic- en la
declaraci-n de la entidad;
pu1l6c0#
+l /uinto par*metroA pu1l6c0#A es el identi(icador pB#lico como se especi(ic- en la declaraci-n
de la entidadA o una cadena vac)a si no se especi(ic- ningunoX el espacio en #lanco en el
identi(icador pB#lico se ha#r* normalizado como se re/uiere en las especi(icaciones JML;
i una (unci-n gestora se esta#lece como la cadena vac)aA o FALSEA el gestor en cuesti-n se
desha#ilita;
e devuelve TRUE si se esta#leci- el gestorA FALSE si parser no es un analizador;
+n la actualidad no hay soporte para gestores o#'etoDm<todo;
+ml>set>notation>decl>handler
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZsetZnotationZdeclZhandler 22 +sta#lece gestores de declaraciones de notaci-n
Kescripci"n
int +ml>set>notation>decl>handler > int parserA string handler ?
+sta#lece las (unciones gestoras de declaraciones de notaci-n para el analizador JML parser;
han#ler es un string /ue contiene el nom#re de una (unci-n /ue de#e eFistir cuando +ml>parse./ es
llamado por parser;
@na declaraci-n de notaci-n es parte del D,D del documento y tiene el siguiente (ormatoC
<!.?*,*4?. name
:system4d T public4d;
>
$er la secci-n 8;: de las especi(icaciones JML 1;3 para la de(inici-n de declaraciones de notaci-n;
La (unci-n llamada por han#ler de#e aceptar cinco par*metrosC handler > int parserA string
notationNameA string #aseA string system.dA string pu#lic.d ?
parser
+l primer par*metroA parserA es una re(erencia al analizador JML /ue llama al gestor;
notat6onName
+ste es el nom1re de la notaci-nA como se descri#i- arri#a en el (ormato de notaci-n;
1ase
+sta es la #ase para resolver el identi(icador de sistema >s?stem0#? de la declaraci-n; +n la
actualidad este par*metro es siempre la cadena vac)a;
s?stem0#
.denti(icador de sistema de la declaraci-n de notaci-n eFterna;
pu1l6c0#
.denti(icador pB#lico de la declaraci-n de notaci-n eFterna;
i una (unci-n gestora se esta#lece como la cadena vac)aA o FALSEA el gestor en cuesti-n se
desha#ilita;
e devuelve TRUE si se esta#leci- el gestorA FALSE si parser no es un analizador;
+n la actualidad no hay soporte para gestores o#'etoDm<todo;
+ml>set>ob'ect
>P&P 8 A P&P 4?
FmlZsetZo#'ect 22 @sa un analizador JML dentro de un o#'ecto
Kescripci"n
void +ml>set>ob'ect > int parserA o#'ect io#'ect ?
+sta (unci-n hace a parser utiliza#le dentro de o1Uect; ,odas las (unciones de call#ac" esta#lecidas
por +ml>set>element>handler./ etc se asumen como m<todos de o1Uect;
<?php
class xml :
=ar $parser;
#unction xml39 :
$thisF>parser > xml%parser%create39;
xml%set%object3$thisF>parser,$this9;
xml%set%element%handler3$thisF>parser,"taE%open","taE%close"9;
xml%set%character%data%handler3$thisF>parser,"cdata"9;
;
#unction parse3$data9 :
xml%parse3$thisF>parser,$data9;
;
#unction taE%open3$parser,$taE,$attributes9 :
=ar%dump3$parser,$taE,$attributes9;
;
#unction cdata3$parser,$cdata9 :
=ar%dump3$parser,$cdata9;
;
#unction taE%close3$parser,$taE9 :
=ar%dump3$parser,$taE9;
;
; // end o# class xml
$xml%parser > ne8 xml39;
$xml%parserF>parse3"&lt;, 4L>V"halloV">H&lt;/,>"9;
?>
Nota- +ml>set>ob'ect./ es gestiona#le a partir de P&P 8;3;
+ml>set>processing>instruction>handler
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZsetZprocessingZinstructionZhandler 22 +sta#lece el gestor de instrucciones de procesado >P.?
Kescripci"n
int +ml>set>processing>instruction>handler > int parserA string handler ?
+sta#lece ela (unci-n de gesti-n de instrucciones de procesado >P.? para el analizador JML parser;
han#ler es un string /ue contiene el nom#re de una (unci-n /ue de#e eFistir cuando +ml>parse./ es
llamada por parser;
@na instrucci-n de procedado tiene el siguiente (ormatoC
<?
tarEet
data?>
Puedes poner c-digo P&P en esa eti/uetaA pero ten en cuenta una limitaci-nC en una P. JMLA la
eti/ueta de (in de la P. >%&? no puede ser citadaA por lo /ue esta secuencia de caracteres no de#er)a
aparecer en el c-digo P&P /ue insertes con las P.s en documentos JML; i lo haceA el resto del
c-digo P&PA as) como la eti/ueta de (in de P. =real=A ser*n tratados como datos de caracteres;
La (unci-n nom#rada en han#ler de#e aceptar tres par*metrosC handler > int parserA string targetA
string data ?
parser
+l primer par*metroA parserA es una re(erencia al analizador JML /ue llama al gestor;
tarEet
+l segundo par*metroA tarEetA contiene el o#'etivo P.;
#ata
+l tercer par*metroA #ataA contiene los datos P.;
i una (unci-n gestora se esta#lece como la cadena vac)aA o FALSEA el gestor en cuesti-n se
desha#ilita;
e devuelve TRUE si se esta#leci- el gestorA FALSE si parser no es un analizador;
+n la actualidad no hay soporte para gestores o#'etoDm<todo;
+ml>set>start>namespace>decl>handler
>P&P 8 _^ 8;3;4A P&P 4?
FmlZsetZstartZnamespaceZdeclZhandler 22 et up start namespace declaration handler
Kescription
#ool +ml>set>start>namespace>decl>handler > resource parserA call#ac" handler ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
Nota- +n lugar de un nom#re de (unci-nA se puede proporcionar una matriz /ue
contenga una re(erencia a un o#'eto o el nom#re de un m<todo;
+ml>set>unparsed>entity>decl>handler
>P&P 7_^ 7;3;KA P&P 8 A P&P 4?
FmlZsetZunparsedZentityZdeclZhandler 22 +sta#lece un gestor de declaraciones de entidades no
analizadas
Kescripci"n
int +ml>set>unparsed>entity>decl>handler > int parserA string handler ?
+sta#lece la (unci-n gestora de declaraci-n de entidades no analizadas para el analizador JML
parser; han#ler es una cadena /ue contiene el nom#re de una (unci-n /ue de#e eFistir cuando
+ml>parse./ es llamada por parser;
+ste gestor ser* llamado si el analizador JML encuentra una declaraci-n de entidades eFternas con
una declaraci-n NDA,AA como la siguienteC
<!E.*4*P name :public4d T system4d;
.L,*, notation.ame>
Mira la secci-n 8;0;0 de las especi(icaciones JML 1;3 para la de(inici-n de entidades eFternas de
notaci-n declarada;
La (unci-n nom#rada en han#ler de#e aceptar seis par*metrosC handler > int parserA string
entityNameA string #aseA string system.dA string pu#lic.dA string notationName ?
parser
+l primer par*metroA parserA es una re(erencia al analizador JML /ue llama al gestor;
ent6t?Name
+l nom#re de la entidad /ue va a ser de(inida;
1ase
+sta es la #ase para resolver el identi(icador de sistema >s?stem0#? de la entidad eFterna;
Actualmente este par*metro siempre ser* una cadena vac)a;
s?stem0#
.denti(icador de istema para la entidad eFterna;
pu1l6c0#
.denti(icador pB#lico para la entidad eFterna;
notat6onName
Nom#re de la notaci-n de esta entidad >ver +ml>set>notation>decl>handler./?;
i una (unci-n gestora se esta#lece como la cadena vac)aA o FALSEA el gestor en cuesti-n se
desha#ilita;
e devuelve TRUE si se esta#leci- el gestorA FALSE si parser no es un analizador;
+n la actualidad no hay soporte para gestores o#'etoDm<todo;
CIIICI. IM:(MPC ;unctions
Introducci"n
,hese (unctions can #e used to Erite JML2RP5 servers and clients; %ou can (ind more in(ormation
a#out JML2RP5 at httpCDDEEE;Fmlrpc;comDA and more documentation on this eFtension and its
(unctions at httpCDDFmlrpc2epi;source(orge;netD;
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
Me?uirimientos
No se necesitan #i#liotecas eFternas para construir esta eFtensi-n
Instalaci"n
JML2RP5 support in P&P is not ena#led #y de(ault; %ou Eill need to use the ==76th=8mlrpc):D0R.
con(iguration option Ehen compiling P&P to ena#le JML2RP5 support; ,his eFtension is #undled
into P&P as o( 8;1;3;
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
Tabla !. IM:(MPC configuration options
Name Kefault Changeable
FmlrpcZerrors =3= P&PZ.N.Z%,+M
FmlrpcZerrorZnum#e
r
=3= P&PZ.N.ZALL
For (urther details and de(initions o( the P&PZ.N.ZV constantsA see the Ap<ndice &;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
Tabla de contenidos
FmlrpcZdecodeZre/uest 22 Decodes JML into native P&P types
FmlrpcZdecode 22 Decodes JML into native P&P types
FmlrpcZencodeZre/uest 22 Generates JML (or a method re/uest
FmlrpcZencode 22 Generates JML (or a P&P value
FmlrpcZgetZtype 22 Gets Fmlrpc type (or a P&P value
FmlrpcZisZ(ault 22 Determines i( an array value represents an JMLRP5 (ault
FmlrpcZparseZmethodZdescriptions 22 Decodes JML into a list o( method descriptions
FmlrpcZserverZaddZintrospectionZdata 22 Adds introspection documentation
FmlrpcZserverZcallZmethod 22 Parses JML re/uests and call methods
FmlrpcZserverZcreate 22 5reates an Fmlrpc server
FmlrpcZserverZdestroy 22 Destroys server resources
FmlrpcZserverZregisterZintrospectionZcall#ac" 22 Register a P&P (unction to generate
documentation
FmlrpcZserverZregisterZmethod 22 Register a P&P (unction to resource method matching
methodZname
FmlrpcZsetZtype 22 ets Fmlrpc typeA #aseK8 or datetimeA (or a P&P string value
+mlrpc>decode>re?uest
>P&P 8 _^ 8;1;3A P&P 4?
FmlrpcZdecodeZre/uest 22 Decodes JML into native P&P types
Kescription
array +mlrpc>decode>re?uest > string FmlA string imethod PA string encodingQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+mlrpc>decode
>P&P 8 _^ 8;1;3A P&P 4?
FmlrpcZdecode 22 Decodes JML into native P&P types
Kescription
array +mlrpc>decode > string Fml PA string encodingQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+mlrpc>encode>re?uest
>P&P 8 _^ 8;1;3A P&P 4?
FmlrpcZencodeZre/uest 22 Generates JML (or a method re/uest
Kescription
string +mlrpc>encode>re?uest > string methodA miFed params PA array outputZoptionsQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+mlrpc>encode
>P&P 8 _^ 8;1;3A P&P 4?
FmlrpcZencode 22 Generates JML (or a P&P value
Kescription
string +mlrpc>encode > miFed value ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+mlrpc>get>type
>P&P 8 _^ 8;1;3A P&P 4?
FmlrpcZgetZtype 22 Gets Fmlrpc type (or a P&P value
Kescription
string +mlrpc>get>type > miFed value ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
,his (unction is especially use(ul (or #aseK8 and datetime strings;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+mlrpc>is>fault
>P&P 8 _^ 8;7;3A P&P 4?
FmlrpcZisZ(ault 22 Determines i( an array value represents an JMLRP5 (ault
Kescription
#ool +mlrpc>is>fault > array arg ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+mlrpc>parse>method>descriptions
>P&P 8 _^ 8;1;3A P&P 4?
FmlrpcZparseZmethodZdescriptions 22 Decodes JML into a list o( method descriptions
Kescription
array +mlrpc>parse>method>descriptions > string Fml ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+mlrpc>ser5er>add>introspection>data
>P&P 8 _^ 8;1;3A P&P 4?
FmlrpcZserverZaddZintrospectionZdata 22 Adds introspection documentation
Kescription
int +mlrpc>ser5er>add>introspection>data > resource serverA array desc ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+mlrpc>ser5er>call>method
>P&P 8 _^ 8;1;3A P&P 4?
FmlrpcZserverZcallZmethod 22 Parses JML re/uests and call methods
Kescription
miFed +mlrpc>ser5er>call>method > resource serverA string FmlA miFed userZdata PA array
outputZoptionsQ ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+mlrpc>ser5er>create
>P&P 8 _^ 8;1;3A P&P 4?
FmlrpcZserverZcreate 22 5reates an Fmlrpc server
Kescription
resource +mlrpc>ser5er>create > void ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+mlrpc>ser5er>destroy
>P&P 8 _^ 8;1;3A P&P 4?
FmlrpcZserverZdestroy 22 Destroys server resources
Kescription
int +mlrpc>ser5er>destroy > resource server ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+mlrpc>ser5er>register>introspection>callbac
B
>P&P 8 _^ 8;1;3A P&P 4?
FmlrpcZserverZregisterZintrospectionZcall#ac" 22 Register a P&P (unction to generate
documentation
Kescription
#ool +mlrpc>ser5er>register>introspection>callbacB > resource serverA string (unction ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+mlrpc>ser5er>register>method
>P&P 8 _^ 8;1;3A P&P 4?
FmlrpcZserverZregisterZmethod 22 Register a P&P (unction to resource method matching
methodZname
Kescription
#ool +mlrpc>ser5er>register>method > resource serverA string methodZnameA string (unction ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+mlrpc>set>type
>P&P 8 _^ 8;1;3A P&P 4?
FmlrpcZsetZtype 22 ets Fmlrpc typeA #aseK8 or datetimeA (or a P&P string value
Kescription
#ool +mlrpc>set>type > string ivalueA string type ?
A5iso
+sta (unci-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta (unci-nA el
nom#re de esta (unci-n y en de(initiva ,ODO lo documentado so#re esta (unci-nA puede cam#iar
en una (utura version de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta eFtensi-n
/ueda #a'o su propia responsa#ilidad;
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
CIIICII. I,: functions
Introducci"n
,he JL eFtension implements the JL standardA per(orming JL, trans(ormations using the
li#Fslt li#rary
Me?uirimientos
,his eFtension uses li#Fslt Ehich can #e (ound at httpCDDFmlso(t;orgDJL,D; li#Fslt version 1;3;1M or
greater is re/uired;
Instalaci"n
P&P 4 includes the JL eFtension #y de(ault and can #e ena#led #y adding the argument ==76th=8sl
):D0R. to your con(igure line; D0R is the li#Fslt installation directory;
Clases predefinidas
I,:TProcessor
Constructor
JL,Processor2_ZZconstruct>? 2 construct a neE JL,Processor o#'ect
M%todos
JL,Processor2_getParameter>? 2 Get value o( a parameter
JL,Processor2_has+Fsltupport>? 2 Determine i( P&P has +JL, support
JL,Processor2_importtylesheet>? 2 .mport stylesheet
JL,Processor2_registerP&PFunctions>? 2 +na#les the a#ility to use P&P (unctions as
JL, (unctions
JL,Processor2_removeParameter>? 2 Remove parameter
JL,Processor2_setParameter>? 2 et value (or a parameter
JL,Processor2_trans(orm,oDoc>? 2 ,rans(orm to DOMDocument
JL,Processor2_trans(orm,o@R.>? 2 ,rans(orm to @R.
JL,Processor2_trans(orm,oJML>? 2 ,rans(orm to JML
E'emplos
Many eFamples in this re(erence re/uire #oth an JML and an JL (ile; Le Eill use
collection.xml and collection.xsl that contains the (olloEingC
E'emplo !. collection.+ml
<collection>
<cd>
<title>SiEht #or your mind</title>
<artist>Zen Harper</artist>
<year>6KK5</year>
</cd>
<cd>
<title>Electric Oadyland</title>
<artist>Aimi Hendrix</artist>
<year>6KKH</year>
</cd>
</collection>
E'emplo *. collection.+sl
<xsl@stylesheet =ersion>"6.2" xmlns@xsl>"http@//888.8<.orE/6KKK/X&O/*rans#orm">
<xsl@param name>"o8ner" select>"M.icolas Elias0e8ic0M"/>
<xsl@output method>"html" encodinE>"isoFJJ5KF6" indent>"no"/>
<xsl@template match>"collection">
Hey! 7elcome to <xsl@=alueFo# select>"$o8ner"/>Ms s8eet RL collection!
<xsl@applyFtemplates/>
</xsl@template>
<xsl@template match>"cd">
<h6><xsl@=alueFo# select>"title"/></h6>
<hC>by <xsl@=alueFo# select>"artist"/> F <xsl@=alueFo# select>"year"/></hC>
<hr />
</xsl@template>
</xsl@stylesheet>
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
%SL_CLONE_AUTO >integer?
%SL_CLONE_NE$ER >integer?
%SL_CLONE_AL"AYS >integer?
Tabla de contenidos
JL,Processor2_ZZconstruct>? 22 5reates a neE JL,Processor o#'ect
JL,Processor2_getParameter>? 22 Get value o( a parameter
JL,Processor2_has+Fsltupport>? 22 Determine i( P&P has +JL, support
JL,Processor2_importtylesheet>? 22 .mport stylesheet
JL,Processor2_registerP&PFunctions>? 22 +na#les the a#ility to use P&P (unctions as JL,
(unctions
JL,Processor2_removeParameter>? 22 Remove parameter
JL,Processor2_setParameter>? 22 et value (or a parameter
JL,Processor2_trans(orm,oDoc>? 22 ,rans(orm to a DOMDocument
JL,Processor2_trans(orm,o@R.>? 22 ,rans(orm to @R.
JL,Processor2_trans(orm,oJML>? 22 ,rans(orm to JML
I,:TProcessor(G>>construct./
JL,Processor2_ZZconstruct>? 22 5reates a neE JL,Processor o#'ect
Kescripci"n
class I,:TProcessor \
>>construct > >void?X ?
]
5reates a neE I,:TProcessor o#'ect;
E'emplos
E'emplo !. Creating an I,:TProcessor
<?php
$xsl > ne8 X&O*rocessor39;
$xslF>import&tyle&heet3L?"Locument@@load3$xsl%#ilename99;
echo $xslF>trans#orm*oX"O3L?"Locument@@load3$xml%#ilename99;
?>
I,:TProcessor(GgetParameter./
JL,Processor2_getParameter>? 22 Get value o( a parameter
Kescripci"n
class I,:TProcessor \
string getParameter > string namespace@R.A string localName ?
]
Gets a parameter i( previously set #y JL,Processor2_setParameter>?;
:ista de parmetros
namespaceUR0
,he namespace @R. o( the JL, parameter;
localName
,he local name o( the JL, parameter;
Calores retornados
,he value o( the parameter or NULL i( itHs not set;
Cer tambi%n
JL,Processor2_setParameter>?
JL,Processor2_removeParameter>?
I,:TProcessor(GhasE+slt,upport./
JL,Processor2_has+Fsltupport>? 22 Determine i( P&P has +JL, support
Kescripci"n
class I,:TProcessor \
#ool hasE+slt,upport > void ?
]
,his method determine i( P&P Eas #uilt Eith the +JL, li#rary;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. Testing EI,:T support
<?php
$proc > ne8 X&O*rocessor;
i# 3!$procF>hasExslt&upport399 :
die3MEX&O* support not a=ailableM9;
;
// do EX&O* stu## here ..
?>
I,:TProcessor(Gimport,tylesheet./
JL,Processor2_importtylesheet>? 22 .mport stylesheet
Kescripci"n
class I,:TProcessor \
void import,tylesheet > DOMDocument stylesheet ?
]
,his method import the stylesheet into the I,:TProcessor (or trans(ormations;
:ista de parmetros
st?lesheet
,he imported style sheet as a KJMKocument o#'ect;
Calores retornados
No value is returned;
I,:TProcessor(GregisterPHP;unctions./
JL,Processor2_registerP&PFunctions>? 22 +na#les the a#ility to use P&P (unctions as JL,
(unctions
Kescripci"n
class I,:TProcessor \
void registerPHP;unctions > void ?
]
,his method ena#les the a#ility to use P&P (unctions as JL, (unctions Eithin JL stylesheets;
Calores retornados
No value is returned;
I,:TProcessor(Gremo5eParameter./
JL,Processor2_removeParameter>? 22 Remove parameter
Kescripci"n
class I,:TProcessor \
#ool remo5eParameter > string namespace@R.A string localName ?
]
Removes a parameterA i( set; ,his Eill ma"e the processor use the de(ault value (or the parameter as
speci(ied in the stylesheet;
:ista de parmetros
namespaceUR0
,he namespace @R. o( the JL, parameter;
localName
,he local name o( the JL, parameter;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
JL,Processor2_setParameter>?
JL,Processor2_getParameter>?
I,:TProcessor(GsetParameter./
JL,Processor2_setParameter>? 22 et value (or a parameter
Kescripci"n
class I,:TProcessor \
#ool setParameter > string namespaceA miFed name PA string valueQ ?
]
ets the value o( one or more parameters to #e used in su#se/uent trans(ormations Eith
I,:TProcessor; .( the parameter doesnHt eFist in the stylesheet it Eill #e ignored;
:ista de parmetros
namespaceUR0
,he namespace @R. o( the JL, parameter;
localName
,he local name o( the JL, parameter; ,his can #e either a string representing the parameter
name or an array o( name :& alue pairs;
alue
,he neE value o( the JL, parameter;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
E'emplos
E'emplo !. Changing the o3ner before the transformation
<?php
$collections > array3
M"arc 'utIo8sIiM >> MmarcM,
M?li=ier armentierM >> Moli=ierM
9;
$xsl > ne8 L?"Locument;
$xslF>load3Mcollection.xslM9;
// Ron#iEure the trans#ormer
$proc > ne8 X&O*rocessor;
$procF>import&tyle&heet3$xsl9; // attach the xsl rules
#oreach 3$collections as $name >> $#ile9 :
// Ooad the X"O source
$xml > ne8 L?"Locument;
$xmlF>load3Mcollection%M . $#ile . M.xmlM9;
$procF>setarameter3MM, Mo8nerM, $name9;
$procF>trans#orm*o+'43$xml, M#ile@///tmp/M . $#ile . M.htmlM9;
;
?>
Cer tambi%n
JL,Processor2_getParameter>?
JL,Processor2_removeParameter>?
I,:TProcessor(GtransformToKoc./
JL,Processor2_trans(orm,oDoc>? 22 ,rans(orm to a DOMDocument
Kescripci"n
class I,:TProcessor \
DOMDocument transformToKoc > DOMNode doc ?
]
,rans(orms the source node to a KJMKocument applying the stylesheet given #y the
JL,Processor2_importtylesheet>? method;
:ista de parmetros
#oc
,he node to #e trans(ormed;
Calores retornados
,he resulting KJMKocument or FALSE on error;
E'emplos
E'emplo !. Transforming to a KJMKocument
<?php
// Ooad the X"O source
$xml > ne8 L?"Locument;
$xmlF>load3Mcollection.xmlM9;
$xsl > ne8 L?"Locument;
$xslF>load3Mcollection.xslM9;
// Ron#iEure the trans#ormer
$proc > ne8 X&O*rocessor;
$procF>import&tyle&heet3$xsl9; // attach the xsl rules
echo trim3$procF>trans#orm*oLoc3$xml9F>#irstRhildF>8hole*ext9;
?>
+l resultado del e'emplo seriaC
Hey! 7elcome to .icolas Elias0e8ic0Ms s8eet RL collection!
Cer tambi%n
JL,Processor2_trans(orm,o@R.>?
JL,Processor2_trans(orm,oJML>?
I,:TProcessor(GtransformTo)MI./
JL,Processor2_trans(orm,o@R.>? 22 ,rans(orm to @R.
Kescripci"n
class I,:TProcessor \
int transformTo)MI > DOMDocument docA string uri ?
]
,rans(orms the source node to an @R. applying the stylesheet given #y the JL,Processor2
_importtylesheet>? method;
:ista de parmetros
#oc
,he trans(ormed document;
ur6
Calores retornados
Returns the num#er o( #ytes Eritten or FALSE i( an error occurred;
E'emplos
E'emplo !. Transforming to a HTM: file
<?php
// Ooad the X"O source
$xml > ne8 L?"Locument;
$xmlF>load3Mcollection.xmlM9;
$xsl > ne8 L?"Locument;
$xslF>load3Mcollection.xslM9;
// Ron#iEure the trans#ormer
$proc > ne8 X&O*rocessor;
$procF>import&tyle&heet3$xsl9; // attach the xsl rules
$procF>trans#orm*o+'43$xml, M#ile@///tmp/out.htmlM9;
?>
Cer tambi%n
JL,Processor2_trans(orm,oDoc>?
JL,Processor2_trans(orm,oJML>?
I,:TProcessor(GtransformToIM:./
JL,Processor2_trans(orm,oJML>? 22 ,rans(orm to JML
Kescripci"n
class I,:TProcessor \
string transformToIM: > DOMDocument doc ?
]
,rans(orms the source node to a string applying the stylesheet given #y the JL,Processor2
_importtylesheet>? method;
:ista de parmetros
#oc
,he trans(ormed document;
Calores retornados
,he result o( the trans(ormation as a string or FALSE on error;
E'emplos
E'emplo !. Transforming to a string
<?php
// Ooad the X"O source
$xml > ne8 L?"Locument;
$xmlF>load3Mcollection.xmlM9;
$xsl > ne8 L?"Locument;
$xslF>load3Mcollection.xslM9;
// Ron#iEure the trans#ormer
$proc > ne8 X&O*rocessor;
$procF>import&tyle&heet3$xsl9; // attach the xsl rules
echo $procF>trans#orm*oX"O3$xml9;
?>
+l resultado del e'emplo seriaC
Hey! 7elcome to .icolas Elias0e8ic0Ms s8eet RL collection!
<h6>SiEht #or your mind</h6><hC>by Zen Harper F 6KK5</hC><hr>
<h6>Electric Oadyland</h6><hC>by Aimi Hendrix F 6KKH</hC><hr>
Cer tambi%n
JL,Processor2_trans(orm,oDoc>?
JL,Processor2_trans(orm,o@R.>?
CIIICIII. I,:T functions
A5iso
+sta eFtensi-n es EF+ER0MENT,4; +sto signi(ica /ue el comportamiento de esta eFtensi-nA los
nom#re de sus (unciones y en de(initiva ,ODO lo documentado so#re esta eFtensi-nA puede
cam#iar en una (utura versi-n de P&P .N A$.O; La advertencia /ueda hechaA y utilizar esta
eFtensi-n /ueda #a'o su propia responsa#ilidad;
Introduction
About I,:T and ,ablotron
JL, >+Ftensi#le tylesheet Language >JL? ,rans(ormations? is a language (or trans(orming
JML documents into other JML documents; .t is a standard de(ined #y ,he Lorld Lide Le#
consortium >L75?; .n(ormation a#out JL, and related technologies can #e (ound at
httpCDDEEE;E7;orgD,RDFslt;
Installation
,his eFtension uses a#loton and eFpatA Ehich can #oth #e (ound at httpCDDEEE;gingerall;comD;
Binaries are provided as Eell as source;
On @N.JA run configure Eith the ==76th=sa1lot and ==ena1le=sa1lot=errors=#escr6pt6e options; ,he
a#lotron li#rary should #e installed someEhere your compiler can (ind it;
About This E+tension
,his P&P eFtension implements support a#lotron (rom Ginger Alliance in P&P; ,his tool"it lets
you trans(orm JML documents into other documentsA including neE JML documentsA #ut also into
&,ML or other target (ormats; .t #asically provides a standardized and porta#le template
mechanismA separating content and design o( a Ee#site;
Tabla de contenidos
FsltZ#ac"endZin(o 22 Returns the in(ormation on the compilation settings o( the #ac"end
FsltZ#ac"endZname 22 Returns the name o( the #ac"end
FsltZ#ac"endZversion 22 Returns the version num#er o( a#lotron
FsltZcreate 22 5reate a neE JL processor;
FsltZerrno 22 Return the current error num#er
FsltZerror 22 Return the current error string
FsltZ(ree 22 Free JL, processor
FsltZgetopt 22 Get options on a given Fsl processor
FsltZprocess 22 un"noEn
FsltZsetZ#ase 22 et the #ase @R. (or all JL, trans(ormations
FsltZsetZencoding 22 et the encoding (or the parsing o( JML documents
FsltZsetZerrorZhandler 22 et an error handler (or a JL, processor
FsltZsetZlog 22 et the log (ile to Erite log messages to
FsltZsetZo#'ect 22 ets the o#'ect in Ehich to resolve call#ac" (unctions
FsltZsetZsaFZhandler 22 et AJ handlers (or a JL, processor
FsltZsetZsaFZhandlers 22 et the AJ handlers to #e called Ehen the JML document gets
processed
FsltZsetZschemeZhandler 22 et cheme handlers (or a JL, processor
FsltZsetZschemeZhandlers 22 et the scheme handlers (or the JL, processor
FsltZsetopt 22 et options on a given Fsl processor
+slt>bacBend>info
>P&P 8 _^ 8;7;3?
FsltZ#ac"endZin(o 22 Returns the in(ormation on the compilation settings o( the #ac"end
Kescription
string +slt>bacBend>info > void ?
+slt>bacBend>info./ returns a string Eith in(ormation a#out the compilation setting o( the #ac"end
or an error string Ehen no in(ormation availa#le;
Cer tambi%n
+slt>bacBend>name./A y +slt>bacBend>5ersion./;
+slt>bacBend>name
>P&P 8 _^ 8;7;3?
FsltZ#ac"endZname 22 Returns the name o( the #ac"end
Kescription
string +slt>bacBend>name > void ?
+slt>bacBend>name./ Eill alEays return a#lotron;
E'emplos
E'emplo !. +slt>bacBend>name./ e+ample
<?php
echo xslt%bacIend%name39; // &ablotron
?>
Cer tambi%n
+slt>bacBend>info./A y +slt>bacBend>5ersion./;
+slt>bacBend>5ersion
>P&P 8 _^ 8;7;3?
FsltZ#ac"endZversion 22 Returns the version num#er o( a#lotron
Kescription
string +slt>bacBend>5ersion > void ?
+slt>bacBend>5ersion./ returns the version num#er o( a#lotron i( availa#leA FALSE otherEise;
E'emplos
E'emplo !. +slt>bacBend>5ersion./ e+ample
<?php
echo xslt%bacIend%=ersion39; // 2.KJ #or example
?>
Cer tambi%n
+slt>bacBend>name./A y +slt>bacBend>info./;
+slt>create
>P&P 8 _^ 8;3;7?
FsltZcreate 22 5reate a neE JL processor;
Kescription
resource +slt>create > void ?
,his (unction returns a handle (or a neE JL processor; ,his handle is needed in all su#se/uent
calls to JL (unctions;
+slt>errno
>P&P 8 _^ 8;3;7?
FsltZerrno 22 Return the current error num#er
Kescription
int +slt>errno > P int FhQ ?
Return the current error num#er o( the given JL processor; .( no handle is givenA the last error
num#er that occured anyEhere is returned;
+slt>error
>P&P 8 _^ 8;3;7?
FsltZerror 22 Return the current error string
Kescription
miFed +slt>error > P int FhQ ?
Return the current error string o( the given JL processor; .( no handle is givenA the last error string
that occured anyEhere is returned;
+slt>free
>P&P 8 _^ 8;3;7?
FsltZ(ree 22 Free JL, processor
Kescription
void +slt>free > resource Fh ?
Free the JL, processor identi(ied #y the given handle;
+slt>getopt
>P&P 8 _^ 8;7;3?
FsltZgetopt 22 Get options on a given Fsl processor
Kescription
int +slt>getopt > resource processor ?
+slt>getopt./ returns the options on the given processor;
Cer tambi%n
+slt>setopt./;
+slt>process
>P&P 8 _^ 8;3;7?
FsltZprocess 22 un"noEn
Kescription
un"noEn +slt>process > un"noEn ?
,his (unction lac"s a prototype de(inition;
+slt>set>base
>P&P 8 _^ 8;3;4?
FsltZsetZ#ase 22 et the #ase @R. (or all JL, trans(ormations
Kescription
void +slt>set>base > resource FhA string uri ?
ets the #ase @R. (or all JL, trans(ormationsA the #ase @R. is used Eith Jpath instructions to
resolve document>? and other commands Ehich access eFternal resources; .t is also used to resolve
@R.s (or the `FslCinclude_ and `FslCimport_ elements;
As o( 8;7A the de(ault #ase @R. is the directory o( the eFecuting script; .n e((ectA it is the directory
name value o( the __FILE__ constant; Prior to 8;7A the de(ault #ase @R. Eas less predicta#le;
Nota- ,ener en cuanta /ue se re/uiere el uso de 96le:// delante del PA,& si se utiliza
LindoEs;
+slt>set>encoding
>P&P 8 _^ 8;3;4?
FsltZsetZencoding 22 et the encoding (or the parsing o( JML documents
Kescription
void +slt>set>encoding > resource FhA string encoding ?
et the output encoding (or the JL, trans(ormations; Lhen using the a#lotron #ac"endA this
option is only availa#le Ehen you compile a#lotron Eith encoding support;
+slt>set>error>handler
>P&P 8 _^ 8;3;8?
FsltZsetZerrorZhandler 22 et an error handler (or a JL, processor
Kescription
void +slt>set>error>handler > resource FhA miFed handler ?
et an error handler (unction (or the JL, processor given #y 8hA this (unction Eill #e called
Ehenever an error occurs in the JL, trans(ormation >this (unction is also called (or notices?;
,he user (unction needs to accept (our parametersC the JL, processorA the error levelA the error
code and an array o( messages; ,he (unction can #e shoEn asC error_handler > resource FhA int
errorZlevelA int errorZcodeA array messages ?
E'emplos
E'emplo !. +slt>set>error>handler./ E+ample
<?php
// ?ur X&O* error handler
#unction xslt%error%handler3$handler, $errno, $le=el, $in#o9
:
// #or no8, letMs just see the arEuments
=ar%dump3#unc%Eet%arEs399;
;
// X"O content @
$xml>M<?xml =ersion>"6.2"?>
<para>
oops, 4 misspelled the closinE taE
</pata>M;
// X&O content @
$xsl>M<?xml =ersion>"6.2"?>
<xsl@stylesheet =ersion>"6.2" xmlns@xsl>"http@//888.8<.orE/6KKK/X&O/*rans#orm">
<xsl@template match>"/">
<stronE><xsl@=alueFo# select>"para"/></stronE>
</xsl@template>
</xsl@stylesheet>M;
$xh > xslt%create39;
xslt%set%error%handler3$xh, "xslt%error%handler"9;
echo xslt%process3$xh, MarE@/%xmlM, MarE@/%xslM,
.+OO, array3"/%xml" >> $xml, "/%xsl" >> $xsl99;
?>
+l resultado del e'emplo seria algo similar aC
array319 :
)2/>>
resource369 o# type 3X&O* rocessor9
)6/>>
int3<9
)C/>>
int329
)</>>
array3G9 :
)"msEtype"/>>
strinE359 "error"
)"code"/>>
strinE369 "C"
)"module"/>>
strinE3K9 "&ablotron"
)"+'4"/>>
strinE3K9 "arE@/%xml"
)"line"/>>
strinE369 "1"
)"msE"/>>
strinE3<19 "X"O parser error H@ mismatched taE"
;
;
Cer tambi%n
+slt>set>ob'ect./ i( you Eant to use an o#'ect method as handler;
+slt>set>log
>P&P 8 _^ 8;3;K?
FsltZsetZlog 22 et the log (ile to Erite log messages to
Kescription
void +slt>set>log > resource Fh PA miFed logQ ?
8h
A re(erence to the JL, parser;
loE
,his parameter is either a #oolean value Ehich toggles logging on and o((A or a string
containing the log(ile in Ehich log errors too;
,his (unction alloEs you to set the (ile in Ehich you Eant JL, log messages toA JL, log
messages are di((erent than error messagesA in that log messages are not actually error messages #ut
rather messages related to the state o( the JL, processor; ,hey are use(ul (or de#ugging JL,A
Ehen something goes Erong;
By de(ault logging is disa#ledA in order to ena#le logging you must (irst call +slt>set>log./ Eith a
#oolean parameter Ehich ena#les loggingA then i( you Eant to set the log (ile to de#ug toA you must
then pass it a string containing the (ilename;
Nota- ,ener en cuanta /ue se re/uiere el uso de 96le:// delante del PA,& si se utiliza
LindoEs;
E'emplos
E'emplo !. )sing the I,:T :ogging features
<?php
$xh > xslt%create39;
xslt%set%loE3$xh, true9;
xslt%set%loE3$xh, Eetc8d39 . M/my#ile.loEM9;
$result > xslt%process3$xh, MdoE.xmlM, Mpets.xslM9;
echo $result;
xslt%#ree3$xh9;
?>
+slt>set>ob'ect
>P&P 8 _^ 8;7;3?
FsltZsetZo#'ect 22 ets the o#'ect in Ehich to resolve call#ac" (unctions
Kescription
int +slt>set>ob'ect > resource processorA o#'ect io#' ?
,his (unction alloEs to use the processor inside an o1Uect and to resolve all call#ac" (unctions in it;
,he call#ac" (unctions can #e declared Eith +ml>set>sa+>handlers./A +slt>set>scheme>handlers./
or +slt>set>error>handler./ and are assumed to #e methods o( o1Uect;
E'emplos
E'emplo !. )sing your o3n error handler as a method
<?php
class my%xslt%processor :

=ar $%xh; // our X&O* processor

#unction my%xslt%processor39
:
$thisF>%xh > xslt%create39;
// "aIe $this object the callbacI resol=er
xslt%set%object3$thisF>%xh, $this9;
// OetMs handle the errors
xslt%set%error%handler3$thisF>%xh, "my%xslt%error%handler"9;
;
#unction my%xslt%error%handler3$handler, $errno, $le=el, $in#o9
:
// #or no8, letMs just see the arEuments
=ar%dump3#unc%Eet%arEs399;
;
;
?>
+slt>set>sa+>handler
>8;3;7 2 8;3;K only?
FsltZsetZsaFZhandler 22 et AJ handlers (or a JL, processor
Kescription
#ool +slt>set>sa+>handler > resource FhA handlers ?
et AJ handlers on the ressource handle given #y Fh;
+slt>set>sa+>handlers
>P&P 8 _^ 8;3;K?
FsltZsetZsaFZhandlers 22 et the AJ handlers to #e called Ehen the JML document gets
processed
Kescription
void +slt>set>sa+>handlers > resource processorA array handlers ?
+slt>set>sa+>handlers./ registers the AJ han#lers (or the documentA given a JL, processor
resource;
han#lers should #e an array in the (olloEing (ormatC
<?php
$handlers > array3
"document" >> array3
"start%doc",
"end%doc"9,
"element" >> array3
"start%element",
"end%element"9,
"namespace" >> array3
"start%namespace",
"end%namespace"9,
"comment" >> "comment",
"pi" >> "pi",
"character" >> "characters"
9;
?>
Lhere the (unctions (olloE the syntaF descri#ed (or the scheme handler (unctions;
Nota- ,he given array does not need to contain all o( the di((erent saF handler elements
>although it can?A #ut it only needs to con(orm to =handler= ^_ =(unction= (ormat
descri#ed a#ove;
+ach o( the individual AJ handler (unctions are in the (ormat #eloEC
start_doc > resource processor ?
end_doc > resource processor ?
start_ele&ent > resource processorA string nameA array attri#utes ?
end_ele&ent > resource processorA string name ?
start_na&espace > resource processorA string pre(iFA string uri ?
end_na&espace > resource processorA string pre(iF ?
co&&ent > resource processorA string contents ?
pi > resource processorA string targetA string contents ?
characters > resource processorA string contents ?
@sing +slt>set>sa+>handlers./ doesnHt loo" very di((erent than running a AJ parser li"e
+ml>parse./ on the result o( an +slt>process./ trans(ormation;
E'emplos
E'emplo !. +slt>set>sa+>handlers./ E+ample
<?php
// Srom ohlesbeauxjours at yahoo dot #r
// HereMs a simple example that applies strtoupper39 on
// the content o# e=ery <auteur> taE and then displays the
// resultinE X"O tree@
$xml>M<?xml =ersion>"6.2"?>
<booIs>
<booI>
<title>"me Zo=ary</title>
<author>-usta=e Slaubert</author>
</booI>
<booI>
<title>"rs Lallo8ay</title>
<author>(irEinia 7ool#</author>
</booI>
</booIs>M;
$xsl>M<?xml =ersion>"6.2"?>
<xsl@stylesheet =ersion>"6.2" xmlns@xsl>"http@//888.8<.orE/6KKK/X&O/*rans#orm">
<xsl@output method>"html" encodinE>"4&?FJJ5KF6" indent>"no" omitFxmlFdeclaration>"yes"/>
<xsl@template match>"/">
<xsl@#orFeach select>"booIs/booI">
<li=re>
<auteur><xsl@=alueFo# select>"author/text39"/></auteur>
</li=re>
</xsl@#orFeach>
</xsl@template>
</xsl@stylesheet>M;
// Handlers @
#unction start%document39
:
// start readinE the document
;
#unction end%document39
:
// end readinE the document
;
#unction start%element3$parser, $name, $attributes9
:
Elobal $result,$taE;
$result .> "<". $name . ">";
$taE > $name;
;
#unction end%element3$parser, $name9
:
Elobal $result;
$result .> "</" . $name . ">";
;
#unction characters3$parser, $data9
:
Elobal $result,$taE;
i# 3$taE >> "auteur" 9 :
$data > strtoupper3$data9;
;
$result .> $data;
;
// *rans#ormation @
$xh > xslt%create39;
$handlers > array3"document" >> array3"start%document","end%document"9,
"element" >> array3"start%element","end%element"9,
"character" >> "characters"9;
xslt%set%sax%handlers3$xh, $handlers9;
xslt%process3$xh, MarE@/%xmlM, MarE@/%xslM, .+OO, array3"/%xml">>$xml, "/%xsl">>$xsl99;
xslt%#ree3$xh9;
%ou can also use +slt>set>ob'ect./ i( you Eant to implement your handlers in an o#'ect;
E'emplo *. Jb'ect oriented handler
<?php
// *his is the object oriented =ersion o# the pre=ious example
class data%sax%handler :
=ar $bu##er, $taE, $attrs;
=ar $%xh;
#unction data%sax%handler3$xml, $xsl9
:
// our xslt resource
$thisF>%xh > xslt%create39;
xslt%set%object3$thisF>%xs, $this9;
// con#iEure sax handlers
$handlers > array3
"document" >> array3Mstart%documentM, Mend%documentM9,
"element" >> array3Mstart%elementM, Mend%elementM9,
"character" >> McharactersM
9;
xslt%set%sax%handlers3$thisF>%xh, $handlers9;

xslt%process3$thisF>%xh, MarE@/%xmlM, MarE@/%xslM, .+OO, array3"/%xml">>$xml, "/%xsl">>$xsl99;
xslt%#ree3$thisF>%xh9;
;
#unction start%document39
:
// start readinE the document
;
#unction end%document39 :
// complete readinE the document
;
#unction start%element3$parser, $name, $attributes9 :
$thisF>taE > $name;
$thisF>bu##er .> "<" . $name . ">";
$thisF>attrs > $attributes;
;
#unction end%element3$parser, $name9
:
$thisF>taE > MM;
$thisF>bu##er .> "</" . $name . ">";
;
#unction characters3$parser, $data9
:
i# 3$thisF>taE >> MauteurM9 :
$data > strtoupper3$data9;
;
$thisF>bu##er .> $data;
;

#unction Eet%bu##er39 :
return $thisF>bu##er;
;
;
$exec > ne8 data%sax%handler3$xml, $xsl9;
?>
Both eFamples Eill outputC
<li=re>
<auteur>-+&*,(E SO,+ZE'*</auteur>
</li=re>
<li=re>
<auteur>(4'-4.4, 7??OS</auteur>
</li=re>
+slt>set>scheme>handler
>8;3;4 2 8;3;K only?
FsltZsetZschemeZhandler 22 et cheme handlers (or a JL, processor
Kescription
void +slt>set>scheme>handler > resource FhA array handlers ?
et cheme handlers on the resource handle given #y 8h; cheme handlers should #e an array Eith
the (ormat >all elements are optional?C
array3
)Eet%all/ >> Eet all handler,
)open/ >> open handler,
)Eet/ >> Eet handler,
)put/ >> put handler,
)close/ >> close handler
9
+slt>set>scheme>handlers
>P&P 8 _^ 8;3;K?
FsltZsetZschemeZhandlers 22 et the scheme handlers (or the JL, processor
Kescription
void +slt>set>scheme>handlers > resource processorA array handlers ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
+slt>setopt
>P&P 8 _^ 8;7;3?
FsltZsetopt 22 et options on a given Fsl processor
Kescription
int +slt>setopt > resource processorA int neEmas" ?
+slt>setopt./ sets the options speci(ied #y ne7mas> on the given processor;
ne7mas> is a #itmas" constructed Eith the (olloEing constantsC
%SLT_SA(OPT_PARSE_PU(LIC_ENTITIES 2 ,ell the processor to parse pu#lic
entities; By de(ault this has #een turned o((;
%SLT_SA(OPT_DISA(LE_ADDIN#_META 2 Do not add the meta tag =5ontent2,ype= (or
&,ML output; ,he de(ault is set during the compilation o( the processor;
%SLT_SA(OPT_DISA(LE_STRIPPIN# 2 uppress the Ehitespace stripping >on data
(iles only?;
%SLT_SA(OPT_I#NORE_DOC_NOT_FOUND 2 5onsider unresolved documents >the
document>? (unction? non2lethal;
E'emplos
E'emplo !. +slt>setopt./ E+ample
<?php
$xh > xslt%create39;
// *ell &ablotron to process public entities
xslt%setopt3$xh, X&O*%&,Z?*%,'&E%+ZO4R%E.*4*4E&9;
// OetMs also asI him to suppress 8hitespace strippinE
xslt%setopt3$xh, xslt%Eetopt3$xh9 T X&O*%&,Z?*%L4&,ZOE%&*'44.-9;
?>
Cer tambi%n
+slt>getopt./;
CIIIII. @Ab
,he ya6./ (unctions Erap the %AI AP.; ,he home page o( the pro'ect is
httpCDDEEE;indeFdata;d"DyazD; .n(ormation a#out the phpyaz module can #e (ound at
httpCDDEEE;indeFdata;d"DphpyazD;
P&PD%AI is much simpler to use than the 5 AP. (or %AI #ut less (leFi#le; ,he intent is to ma"e it
easy to #uild #asic client (unctions; .t supports persistent stateless connections very similar to those
o((ered #y the various OL AP.s that are availa#le (or P&P; ,his means that sessions are stateless
#ut shared amongst usersA thus saving the connect and .N., steps in many cases;
Be(ore compiling P&P Eith the P&PD%AI module youHll need the %AI tool"it; Build %AI and
install it; Build P&P Eith your (avourite modules and add option 22Eith2yaz; %our tas" is roughly
the (olloEingC
Eun0ip Fc ya0F6.G.tar.E0Ttar x# F
Eun0ip Fc phpF1.2.X.tar.E0Ttar x# F
cd ya0F6.G
./con#iEure FFpre#ix>/usr
maIe
maIe install
cd ../phpF1.2.X
./con#iEure FF8ithFya0>/usr/bin
maIe
maIe install
P&PD%AI "eeps trac" o( connections Eith targets >I2Associations?; A positive integer represents
the .D o( a particular association;
,he script #eloE demonstrates the parallel searching (eature o( the AP.; Lhen invo"ed it either
prints a /uery (orm >i( no arguments are supplied? or i( there are arguments >term and one or more
hosts? it searches the targets in array host;
E'emplo !. @Ab./
$num%hosts > count 3$host9;
i# 3empty3$term9 TT count3$host9 >> 29 :
echo M<#orm method>"Eet">
<input type>"checIbox"
name>"host)/" =alue>"baEel.indexdata.dI/Eils">
-4O& test
<input type>"checIbox"
name>"host)/" =alue>"localhost@KKKK/Le#ault">
local test
<input type>"checIbox" checIed>"6"
name>"host)/" =alue>"0<K52.bellFlabs.com/booIs">
ZEOO Oabs Oibrary
<br>
'. Nuery@
<input type>"text" si0e>"<2" name>"term">
<input type>"submit" name>"action" =alue>"&earch">
M;
; else :
echo MPou searced #or M . htmlspecialchars3$term9 . M<br>M;
#or 3$i > 2; $i > $num%hosts; $i[[9 :
$id)/ > ya0%connect3$host)$i/9;
ya0%syntax3$id)$i/,"sutrs"9;
ya0%search3$id)$i/,"rpn",$term9;
;
ya0%8ait39;
#or 3$i > 2; $i < $num%hosts; $i[[9 :
echo M<hr>M . $host)$i/ . "@";
$error > ya0%error3$id)$i/9;
i# 3!empty3$error99 :
echo "Error@ $error";
; else :
$hits > ya0%hits3$id)$i/9;
echo "'esult Rount $hits";
;
echo M<dl>M;
#or 3$p > 6; $p <> 62; $p[[9 :
$rec > ya0%record3$id)$i/,$p,"strinE"9;
i# 3empty3$rec99 continue;
echo "<dt><b>$p</b></dt><dd>";
echo ereE%replace3"Vn", "<br>Vn",$rec9;
echo "</dd>";
;
echo M</dl>M;
;
;
Tabla de contenidos
yazZaddin(o 22 Returns additional error in(ormation
yazZcclZcon( 22 5on(igure 55L parser
yazZcclZparse 22 .nvo"e 55L Parser
yazZclose 22 5loses a %AI connection
yazZconnect 22 Returns a positive association .D on successX zero on (ailure
yazZdata#ase 22 peci(ies the data#ases Eithin a session
yazZelement 22 peci(ies +lement2et Name (or retrieval
yazZerrno 22 Returns error num#er
yazZerror 22 Returns error description
yazZesZresult 22 .nspects +Ftended ervices Result
yazZgetZoption 22 Returns value o( option (or connection
yazZhits 22 Returns num#er o( hits (or last search
yazZitemorder 22 Prepares (or I79;43 .tem Order Eith an .LL2Re/uest pac"age
yazZpresent 22 Prepares (or retrieval >I79;43 present?
yazZrange 22 peci(ies the maFimum num#er o( records to retrieve
yazZrecord 22 Returns a record
yazZscanZresult 22 Returns can Response result
yazZscan 22 Prepares (or a scan
yazZschema 22 peci(ies schema (or retrieval
yazZsearch 22 Prepares (or a search
yazZsetZoption 22 ets one or more options (or connection
yazZsort 22 ets sorting criteria
yazZsyntaF 22 peci(ies the pre(erred record syntaF (or retrieval
yazZEait 22 +Fecutes /ueries
ya6>addinfo
>P&P 8 _^ 8;3;1A P&P 4?
yazZaddin(o 22 Returns additional error in(ormation
Kescription
int ya6>addinfo > int id ?
Returns additional error message (or target >last re/uest?; An empty string is returned i( last
operation Eas a success or i( no additional in(ormation Eas provided #y the target;
ya6>ccl>conf
>P&P 8 _^ 8;3;4A P&P 4?
yazZcclZcon( 22 5on(igure 55L parser
Kescription
int ya6>ccl>conf > resource idA array con(ig ?
,his (unction con(igures the 55L /uery parser (or a server Eith de(initions o( access points >55L
/uali(iers? and their mapping to RPN; ,o map a speci(ic 55L /uery to RPN a(terEards call the
ya6>ccl>parse./ (unction; +ach indeF o( the array con96E is the name o( a 55L (ield and the
corresponding value holds a string that speci(ies a mapping to RPN; ,he mapping is a se/uence o(
attri#ute2typeA attri#ute2value pairs; Attri#ute2type and attri#ute2value is separated #y an e/ual sign
>:?; +ach pair is separated #y Ehite space;
E'emplo !. CC: configuration
.n the eFample #eloEA the 55L parser is con(igured to support three 55L (ieldsC t6A au and 6s1n;
+ach (ield is mapped to their B.B21 Walent; .t is assumed that varia#le '6# is the connection .D;
<?php
$#ields)"ti"/ > "6>1";
$#ields)"au"/ > "6>6";
$#ields)"isbn"/ > "6>H";
ya0%ccl%con#3$id, $#ields9;
?>
ya6>ccl>parse
>P&P 8 _^ 8;3;4A P&P 4?
yazZcclZparse 22 .nvo"e 55L Parser
Kescription
#ool ya6>ccl>parse > resource idA string /ueryA array iresult ?
,his (unction invo"es a 55L parser; .t converts a given 55L F.ND /uery to an RPN /uery Ehich
may #e passed to the ya6>search./ (unction to per(orm a search; ,o de(ine a set o( valid 55L (ields
call ya6>ccl>conf./ prior to this (unction; .( the supplied @uer? Eas success(ully converted to RPNA
this (unction returns TRUEA and the indeF rpn o( the supplied array result holds a valid RPN /uery;
.( the /uery could not #e converted >#ecause o( invalid syntaFA un"noEn (ieldA etc;? this (unction
returns FALSE and three indeFes are set in the resulting array to indicate the cause o( (ailureC
errorco#e 55L error code >integer?A errorstr6nE 55L error stringA and errorpos approFimate
position in /uery o( (ailure >integer is character position?;
E'emplo !. CC: Parsing
Le Eill try to search using 55L; .n the eFample #eloEA 'ccl is a 55L /uery;
<?php
ya0%ccl%con#3$id, $#ields9; // see example #or ya0%ccl%con#
i# 3!ya0%ccl%parse3$id, $ccl, &$cclresult99 :
echo MError@ M . $cclresult)"errorstrinE"/;
; else :
$rpn > $cclresult)"rpn"/;
ya0%search3$id, "rpn", $rpn9;
;
?>
ya6>close
>P&P 8 _^ 8;3;1A P&P 4?
yazZclose 22 5loses a %AI connection
Kescription
int ya6>close > int id ?
5loses a connection to a target; ,he application can no longer re(er to the target Eith the given id;
ya6>connect
>P&P 8 _^ 8;3;1A P&P 4?
yazZconnect 22 Returns a positive association .D on successX zero on (ailure
Kescription
int ya6>connect > string zurl ?
ya6>connect./ prepares (or a connection to a I79;43 target; ,he zurl argument ta"es the (orm host
PCportQPDdata#aseQ; .( port is omitted 013 is used; .( data#ase is omitted De(ault is used; ,his (unction
is non2#loc"ing and doesnHt attempt to esta#lish a soc"et 2 it merely prepares a connect to #e
per(ormed later Ehen ya6>3ait./ is called;
ya6>database
>P&P 8 _^ 8;3;KA P&P 4?
yazZdata#ase 22 peci(ies the data#ases Eithin a session
Kescription
#ool ya6>database > resource idA string data#ases ?
,his (unction speci(ies one or more data#ases to #e used in searchA retrievalA etc; 2 overriding
data#ases speci(ied in call to ya6>connect./; Multiple data#ases are separated #y a plus sign Y;
,his (unction alloEs you to change data#ases Eithin a session;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ya6>element
>P&P 8 _^ 8;3;1A P&P 4?
yazZelement 22 peci(ies +lement2et Name (or retrieval
Kescription
#ool ya6>element > resource idA string elementset ?
,his (unction sets the element set name (or retrieval; 5all this (unction #e(ore ya6>search./ or
ya6>present./ to speci(y the element set name (or records to #e retrieved; Most servers support 3
>(or (ull records? and A >(or #rie( records?;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ya6>errno
>P&P 8 _^ 8;3;1A P&P 4?
yazZerrno 22 Returns error num#er
Kescription
int ya6>errno > int id ?
Returns error (or target >last re/uest?; A positive value is returned i( the target returned a diagnostic
codeX a value o( zero is returned i( no errors occurred >success?X negative value is returned (or other
errors targets didnHt indicate the error in /uestion;
ya6>errno./ should #e called a(ter netEor" activity (or each target 2 >a(ter ya6>3ait./ returns? to
determine the success or (ailure o( the last operation >e;g; search?;
ya6>error
>P&P 8 _^ 8;3;1A P&P 4?
yazZerror 22 Returns error description
Kescription
int ya6>error > int id ?
Returns error message (or target >last re/uest?; An empty string is returned i( last operation Eas a
success;
ya6>error./ returns a english message corresponding to the last error num#er as returned #y
ya6>errno./;
ya6>es>result
>P&P 8 _^ 8;0;3A P&P 4?
yazZesZresult 22 .nspects +Ftended ervices Result
Kescription
array ya6>es>result > resource id ?
A5iso
+sta (unci-n no est* documentada actualmenteA solamente se encuentra disponi#le la lista de
par*metros;
ya6>get>option
>P&P 4?
yazZgetZoption 22 Returns value o( option (or connection
Kescription
string ya6>get>option > resource idA string name ?
Returns the value o( the option speci(ied Eith name; .( an option is not setA an empty string is
returned;
ee the description o( ya6>set>option./ (or availa#le options;
ya6>hits
>P&P 8 _^ 8;3;1A P&P 4?
yazZhits 22 Returns num#er o( hits (or last search
Kescription
int ya6>hits > int id ?
ya6>hits./ returns num#er o( hits (or last search;
ya6>itemorder
>P&P 8 _^ 8;3;4A P&P 4?
yazZitemorder 22 Prepares (or I79;43 .tem Order Eith an .LL2Re/uest pac"age
Kescription
int ya6>itemorder > resource idA array args ?
,his (unction prepares (or an +Ftended ervices re/uest using the Pro(ile (or the @se o( I79;43 .tem
Order +Ftended ervice to ,ransport .LL >Pro(ileD1?; ee this and the speci(ication; ,he arEs
parameter must #e a hash array Eith in(ormation a#out the .tem Order re/uest to #e sent; ,he "ey o(
the hash is the name o( the corresponding AN;1 tag path; For eFampleA the .BN #eloE the .tem2
.D has the "ey item2idA.BN;
,he .LL2Re/uest parameters areC
protocol2version2num
transaction2idAinitial2re/uester2idAperson2or2institution2sym#olAperson
transaction2idAinitial2re/uester2idAperson2or2institution2sym#olAinstitution
transaction2idAinitial2re/uester2idAname2o(2person2or2institutionAname2o(2person
transaction2idAinitial2re/uester2idAname2o(2person2or2institutionAname2o(2institution
transaction2idAtransaction2group2/uali(ier
transaction2idAtransaction2/uali(ier
transaction2idAsu#2transaction2/uali(ier
service2date2timeAthisAdate
service2date2timeAthisAtime
service2date2timeAoriginalAdate
service2date2timeAoriginalAtime
re/uester2idAperson2or2institution2sym#olAperson
re/uester2idAperson2or2institution2sym#olAinstitution
re/uester2idAname2o(2person2or2institutionAname2o(2person
re/uester2idAname2o(2person2or2institutionAname2o(2institution
responder2idAperson2or2institution2sym#olAperson
responder2idAperson2or2institution2sym#olAinstitution
responder2idAname2o(2person2or2institutionAname2o(2person
responder2idAname2o(2person2or2institutionAname2o(2institution
transaction2type
delivery2addressApostal2addressAname2o(2person2or2institutionAname2o(2person
delivery2addressApostal2addressAname2o(2person2or2institutionAname2o(2institution
delivery2addressApostal2addressAeFtended2postal2delivery2address
delivery2addressApostal2addressAstreet2and2num#er
delivery2addressApostal2addressApost2o((ice2#oF
delivery2addressApostal2addressAcity
delivery2addressApostal2addressAregion
delivery2addressApostal2addressAcountry
delivery2addressApostal2addressApostal2code
delivery2addressAelectronic2addressAtelecom2service2identi(ier
delivery2addressAelectronic2addressAtelecom2service2addreess
#illing2addressApostal2addressAname2o(2person2or2institutionAname2o(2person
#illing2addressApostal2addressAname2o(2person2or2institutionAname2o(2institution
#illing2addressApostal2addressAeFtended2postal2delivery2address
#illing2addressApostal2addressAstreet2and2num#er
#illing2addressApostal2addressApost2o((ice2#oF
#illing2addressApostal2addressAcity
#illing2addressApostal2addressAregion
#illing2addressApostal2addressAcountry
#illing2addressApostal2addressApostal2code
#illing2addressAelectronic2addressAtelecom2service2identi(ier
#illing2addressAelectronic2addressAtelecom2service2addreess
ill2service2type
re/uester2optional2messagesAcan2send2R+5+.$+D
re/uester2optional2messagesAcan2send2R+,@RN+D
re/uester2optional2messagesAre/uester2&.PP+D
re/uester2optional2messagesAre/uester25&+5S+D2.N
search2typeAlevel2o(2service
search2typeAneed2#e(ore2date
search2typeAeFpiry2date
search2typeAeFpiry2(lag
place2on2hold
client2idAclient2name
client2idAclient2status
client2idAclient2identi(ier
item2idAitem2type
item2idAcall2num#er
item2idAauthor
item2idAtitle
item2idAsu#2title
item2idAsponsoring2#ody
item2idAplace2o(2pu#lication
item2idApu#lisher
item2idAseries2title2num#er
item2idAvolume2issue
item2idAedition
item2idApu#lication2date
item2idApu#lication2date2o(2component
item2idAauthor2o(2article
item2idAtitle2o(2article
item2idApagination
item2idA.BN
item2idA.N
item2idAadditional2no2letters
item2idAveri(ication2re(erence2source
copyright2complicance
retry2(lag
(orEard2(lag
re/uester2note
(orEard2note

,here are also a (eE parameters that are part o( the +Ftended ervices Re/uest pac"age and the
.temOrder pac"ageC
pac"age2name
user2id
contact2name
contact2phone
contact2email
itemorder2item

ya6>present
>P&P 8 _^ 8;3;4A P&P 4?
yazZpresent 22 Prepares (or retrieval >I79;43 present?
Kescription
#ool ya6>present > resource id ?
,his (unction prepares (or retrieval o( records a(ter a success(ul search; ,he ya6>range./ should #e
called prior to this (unction to speci(y the range o( records to #e retrieved;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
ya6>range
>P&P 8 _^ 8;3;1A P&P 4?
yazZrange 22 peci(ies the maFimum num#er o( records to retrieve
Kescription
int ya6>range > int idA int startA int num#er ?
,his (unction is used in con'unction Eith ya6>search./ to speci(y the maFimum num#er o( records
to retrieve >num#er? and the (irst record position >start?; .( this (unction is not invo"ed >only
ya6>search./? start is set to 1 and num#er is set to 13;
Returns TRUE on successX FALSE on error;
ya6>record
>P&P 8 _^ 8;3;1A P&P 4?
yazZrecord 22 Returns a record
Kescription
int ya6>record > int idA int posA string type ?
Returns record at position or empty string i( no record eFists at given position;
,he ya6>record./ (unction inspects a record in the current result set at the position speci(ied; .( no
data#ase record eFists at the given position an empty string is returned; ,he argumentA typeA
speci(ies the (orm o( the returned record; .( type is =string= the record is returned in a string
representation suita#le (or printing >(or JML and @,R?; .( type is =array= the record is returned
as an array representation >(or structured records?;
ya6>scan>result
>P&P 8 _^ 8;3;4A P&P 4?
yazZscanZresult 22 Returns can Response result
Kescription
array ya6>scan>result > resource id PA array iresultQ ?
ya6>scan>result./ returns terms and associated in(ormation as received (rom the server in the last
per(ormed ya6>scan./; ,his (unction returns an array >3;;n21? Ehere n is the num#er o( terms
returned; +ach value is a pair Ehere the (irst item is the termA and the second item is the result2
count; .( the optional parameter result is given it Eill #e modi(ied to hold additional in(ormation
ta"en (rom the can ResponseC num1er >num#er o( entries returned?A steps6De >tep2size?A pos6t6on
>position o( term?A status >can tatus?;
ya6>scan
>P&P 8 _^ 8;3;4A P&P 4?
yazZscan 22 Prepares (or a scan
Kescription
int ya6>scan > resource idA string typeA string startterm PA array (lagsQ ?
,his (unction prepares (or a I79;43 can Re/uestA Ehere parameter 6# speci(ies connection; tarting
term point (or the scan is given #y startterm; ,he (orm in Ehich the starting term is speci(ied is
given #y parameter t?pe; 5urrently only type rpn is supported; ,he optional parameter 9laEs
speci(ies additional in(ormation to control the #ehaviour o( the scan re/uest; ,hree indeFes are
currently read (rom the (lagsC num1er >num#er o( terms re/uested?A pos6t6on >pre(erred position o(
term? and stepS6De >pre(erred step size?; ,o actually trans(er the can Re/uest to the server and
receive the can ResponseA ya6>3ait./ must #e called; @pon completion o( ya6>3ait./ call
ya6>error./ and ya6>scan>result./ to handle the response;
,he syntaF o( startterm is similar to the RPN /uery as descri#ed in ya6>search./; ,he startterm
consists o( zero or more Wattr2operator speci(icationsA then (olloEed #y eFactly one to"en;
E'emplo !. PHP function that scans titles
<?php
#unction scan%titles3$id, $startterm9
:
ya0%scan3$id, "rpn", "^attr 6>1 " . $startterm9;
ya0%8ait39;
$errno > ya0%errno3$id9;
i# 3$errno >> 29 :
$ar > ya0%scan%result3$id, &$options9;
echo M&can oI; M;
8hile 3list3$Iey, $=al9 > each3$options99 :
echo "$Iey > $=al &nbsp;";
;
echo M<br /><table>M;
8hile 3list3$Iey, list3$I, $term, $tcount99 > each3$ar99 :
i# 3empty3$I99 continue;
echo "<tr><td>$term</td><td>$tcount</td></tr>";
;
echo M</table>M;
; else :
echo "&can #ailed. Error@ " . ya0%error3$id9 . "<br />";
;
;
?>
ya6>schema
>P&P 8 _^ 8;0;3A P&P 4?
yazZschema 22 peci(ies schema (or retrieval
Kescription
int ya6>schema > resource idA string schema ?
,he schema must #e speci(ied as an O.D >O#'ect .denti(ier? in a raE dot2notation >li"e
1.2.P;0.1000R.1R.;? or as one o( the "noEn registered schemasC -04S=schemaA !ol#6nEsA ^thesA ;;;
,his (unction should #e called #e(ore ya6>search./ or ya6>present./;
ya6>search
>P&P 8 _^ 8;3;1A P&P 4?
yazZsearch 22 Prepares (or a search
Kescription
int ya6>search > int idA string typeA string /uery ?
ya6>search./ prepares (or a search on the target Eith given id; ,he type represents the /uery type 2
only =rpn= is supported noE in Ehich case the third argument is a pre(iF notation /uery as used #y
%AI; Li"e ya6>connect./ this (unction is non2#loc"ing and only prepares (or a search to #e
eFecuted later Ehen ya6>3ait./ is called;
ya6>set>option
>P&P 4?
yazZsetZoption 22 ets one or more options (or connection
Kescription
string ya6>set>option > resource idA string nameA string value ?
string ya6>set>option > resource idA array options ?
ets option name to alue;
Tabla !. P@PA@Ab Connection Jptions
Name Kescription
implementationName
implementatio
n name o(
server
implementation$ersio
n
implementatio
n version o(
server
implementation.d
implementatio
n .D o( server
Name Kescription
schema
schema (or
retrieval; By
de(aultA no
schema is
used; etting
this option is
Walent to using
(unction
ya6>schema./
pre(erredRecordyntaF
record syntaF
(or retrieval;
By de(aultA no
syntaF is used;
etting this
option is Walent
to using
(unction
ya6>synta+./
start
o((set (or (irst
record to #e
retrieved via
ya6>search./
or ya6>present
./; First record
is num#ered
has a start
value o( 3;
econd record
has start value
1; etting this
option in
com#ination
Eith option
count has the
same e((ect as
calling
ya6>range./
eFcept that
records are
num#ered (rom
1 in ya6>range
./
count
maFimum
num#er o(
records to #e
retrieved via
ya6>search./
or ya6>present
./;
Name Kescription
elementetName
element2set2
name (or
retrieval;
etting this
option is Walent
to calling
ya6>element./;
ya6>sort
>P&P 8 _^ 8;1;3A P&P 4?
yazZsort 22 ets sorting criteria
Kescription
int ya6>sort > resource idA string criteria ?
,his (unction sets sorting criteria and ena#les I79;43 ort; 5all this (unction 1e9ore ya6>search./;
@sing this (unction alone does not have any e((ect; Lhen used in con'unction Eith ya6>search./A a
I79;43 ort Eill #e sent a(ter a search response has #een received and #e(ore any records are
retrieved Eith I79;43 Present >ya6>present./; ,he parameter cr6ter6a ta"es the (orm
96el#1 9laEs1 96el#2 9laEs2 ;;;
Ehere (ield1 speci(ies the primary attri#utes (or sortA (ield0 secondsA etc;; ,he (ield speci(ies either a
numerical attri#ute com#inations consisting o( type^value pairs separated #y comma >e;g; 1:;C2:1?
X or the (ield may speci(y a plain string criteria >e;g; t6tle; ,he (lags is a se/uence o( the (olloEing
characters Ehich may not #e separated #y any Ehite space;
,ort ;lags
a
ort ascending
#
ort descending
6
5ase insensitive sorting
s
5ase sensitive sorting
E'emplo !. ,ort Criterias
,o sort on Bi#1 attri#ute titleA case insensitiveA and ascending you Eould use the (olloEing sort
criteriaC
6>1 ia
.( the secondary sorting criteria should #e authorA case sensitive and ascending you Eould useC
6>1 ia 6>622< sa
ya6>synta+
>P&P 8 _^ 8;3;1A P&P 4?
yazZsyntaF 22 peci(ies the pre(erred record syntaF (or retrieval
Kescription
int ya6>synta+ > int idA string syntaF ?
,his (unction is used in con'unction Eith ya6>search./ to speci(y the pre(erred record syntaF (or
retrieval;
ya6>3ait
>P&P 8 _^ 8;3;1A P&P 4?
yazZEait 22 +Fecutes /ueries
Kescription
int ya6>3ait > int idA string syntaF ?
,his (unction carries out netEor"ed >#loc"ed? activity (or outstanding re/uests Ehich have #een
prepared #y the (unctions ya6>connect./A ya6>search./; ya6>3ait./ returns Ehen all targets have
either completed all re/uests or otherEise completed >in case o( errors?;
CI:. ;unciones de mane'o de archi5os bip
.s"lo lectura/
Introducci"n
+ste m-dulo permite leer de (orma transparente archivos comprimidos en (ormato Iip y acceder a
su contenido;
Me?uirimientos
+ste m-dulo utiliza las (unciones de la #i#lioteca II.Pli#A creada por Guido Draheim; e re/uiere
una versi-n de II.Pli# _^ 3;13;K;
De#e tenerse en cuenta /ue la anterior #i#lioteca solamente proporciona un con'unto limitado de
(unciones para el tratamiento de archivos en (ormato Iip; Para poder crear los archivos en (ormato
Iip se re/uiere del uso de alguna herramienta eFterna a P&P;
Instalaci"n
Para poder usar las (unciones de mane'o de archivos en (ormato IipA se de#e aWadir el par*metro ==
76th=D6p):D0R. a las opciones de con(iguraci-n de P&P;
Nota- +l (uncionamiento de las (unciones de mane'o de archivos en (ormato Iip es
eFperimental en las versiones de P&P anteriores a la 8;1;3; +n esta secci-n del manual
se muestran las (unciones /ue eFisten en las versiones posteriores a la 8;1;3
Configuraci"n en tiempo de e'ecuci"n
+sta eFtensi-n no tiene directivas de con(iguraci-n en php.ini;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+sta eFtensi-n no tiene ninguna constante de(inida;
E'emplos
+n el siguiente e'emplo se a#re un archivo en (ormato IipA se lee cada uno de los archivos
contenidos en el y se muestran sus contenidos; +l archivo testC.0ip /ue se utiliza en el e'emplo
es uno de los archivos de prue#a /ue se incluyen en la distri#uci-n del c-digo (uente de la li#er)a
II.Pli#;
E'emplo !. E'emplo de utili6aci"n de las funciones para mane'o de archi5os en formato bip
<?php
$0ip > 0ip%open3"/tmp/testC.0ip"9;
i# 3$0ip9 :
8hile 3$0ip%entry > 0ip%read3$0ip99 :
echo ".ombre@ " . 0ip%entry%name3$0ip%entry9 . "Vn";
echo "*amanio sin comprimir@ " . 0ip%entry%#ilesi0e3$0ip%entry9 . "Vn";
echo "*amanio comprimido@ " . 0ip%entry%compressedsi0e3$0ip%entry9 . "Vn";
echo ""etodo de compresion@ " . 0ip%entry%compressionmethod3$0ip%entry9 . "Vn";
i# 30ip%entry%open3$0ip, $0ip%entry, "r"99 :
echo "Rontenidos del archi=o@Vn";
$bu# > 0ip%entry%read3$0ip%entry, 0ip%entry%#ilesi0e3$0ip%entry99;
echo "$bu#Vn";
0ip%entry%close3$0ip%entry9;
;
echo "Vn";
;
0ip%close3$0ip9;
;
?>
Tabla de contenidos
zipZclose 22 5ierra un archivo en (ormato Iip
zipZentryZclose 22 5ierra una entrada de directorio
zipZentryZcompressedsize 22 O#tiene el tamaWo comprimido de una entrada de directorio
zipZentryZcompressionmethod 22 O#tiene el m<todo de compresi-n utilizado por una entrada de
directorio
zipZentryZ(ilesize 22 O#tiene el tamaWo real de una entrada de directorio
zipZentryZname 22 O#tiene el nom#re de una entrada de directorio
zipZentryZopen 22 A#re una entrada de directorio en modo solo lectura
zipZentryZread 22 Lee los datos de una entrada de directorio a#ierta
zipZopen 22 A#re un archivo en (ormato Iip
zipZread 22 Lee la siguiente entrada de un archivo en (ormato Iip
6ip>close
>P&P 8 _^ 8;1;3?
zipZclose 22 5ierra un archivo en (ormato Iip
Kescripci"n
void 6ip>close > resource zip ?
5ierra un archivo en (ormato Iip; +l par*metro D6p de#e ser un archivo en (ormato Iip a#ierto
previamente con la (unci-n 6ip>open./;
+sta (unci-n no devuelve ningB valor;
$er tam#i<n 6ip>open./ y 6ip>read./;
6ip>entry>close
>P&P 8 _^ 8;1;3?
zipZentryZclose 22 5ierra una entrada de directorio
Kescripci"n
void 6ip>entry>close > resource zipZentry ?
5ierra la entrada de directorio indicada en el par*metro D6p_entr?; +ste par*metro D6p_entr? de#e ser
una entrada de directorio a#ierta mediante la (unci- 6ip>entry>open./;
+sta (unci-n no devuelve ningB valor;
$er tam#i<n 6ip>entry>open./ y 6ip>entry>read./;
6ip>entry>compressedsi6e
>P&P 8 _^ 8;1;3?
zipZentryZcompressedsize 22 O#tiene el tamaWo comprimido de una entrada de directorio
Kescripci"n
int 6ip>entry>compressedsi6e > resource zipZentry ?
Devuelve el tamaWo comprimido de la entrada de directorio indicada en el par*metro D6p_entr?; +ste
par*metro D6p_entr? de#e ser una entrada de directorio v*lida o#tenida mediante la (unci-n
6ip>read./;
$er tam#i<n 6ip>open./ y 6ip>read./;
6ip>entry>compressionmethod
>P&P 8 _^ 8;1;3?
zipZentryZcompressionmethod 22 O#tiene el m<todo de compresi-n utilizado por una entrada de
directorio
Kescripci"n
string 6ip>entry>compressionmethod > resource zipZentry ?
Devuelve el m<todo de compresi-n de la entrada de directorio especi(icada en el par*metro
D6p_entr?; +l par*metro D6p_entr? de#e ser una entrada de directorio v*lida o#tenida mediante la
(unci-n 6ip>read./;
$er tami<n 6ip>open./ y 6ip>read./;
6ip>entry>filesi6e
>P&P 8 _^ 8;1;3?
zipZentryZ(ilesize 22 O#tiene el tamaWo real de una entrada de directorio
Kescripci"n
int 6ip>entry>filesi6e > resource zipZentry ?
Devuelve el tamaWo real >no comprimido? de la entrada de directorio indicada en el par*metro
D6p_entr?; +ste par*metro D6p_entr? de#e ser una entrada de directorio v*lida o#tenida mediante la
(unci-n 6ip>read./;
$er tam#i<n 6ip>open./ y 6ip>read./;
6ip>entry>name
>P&P 8 _^ 8;1;3?
zipZentryZname 22 O#tiene el nom#re de una entrada de directorio
Kescripci"n
string 6ip>entry>name > resource zipZentry ?
Devuelve el nom#re de la entrada de directorio indicada en el par*metro D6p_entr?; +l par*metro
D6p_entr? de#e ser una entrada de directorio v*lida o#tenida mediante la (unci-n 6ip>read./;
$er tam#i<n 6ip>open./ y 6ip>read./;
6ip>entry>open
>P&P 8 _^ 8;1;3?
zipZentryZopen 22 A#re una entrada de directorio en modo solo lectura
Kescripci"n
#ool 6ip>entry>open > resource zipA resource zipZentry PA string modoQ ?
A#re una entrada de directorio de un archivo en (ormato zip para su lectura; +l par*metro D6p es un
apuntador v*lido devuelto por la (unci-n 6ip>open./; +l par*metro D6p_entr? es una entrada de
directorio v*lida o#tenida mediante la (unci-n 6ip>read./; +l par*metro opcional mo#o puede ser
cual/uiera de los modos descritos en la documentaci-n de la (unci-n fopen./;
Nota- ActualmenteA el par*metro mo#o no se tiene en cuenta y siempre se considera /ue
es *r1*; La raz-n de este comportamiento es /ueA de momentoA P&P solo soporta el
(ormato Iip en operaciones de lectura y no de escritura; +n la documentaci-n de la
(unci-n fopen./ se eFplican todos los modos disponi#lesA incluido el modo *r1*;
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Nota- Al contrario de lo /ue sucede con la (unci-n fopen./ y otras similaresA el valor
/ue devuelve 6ip>entry>open./ solamente indica el resultado de la operaci-n e(ectuada
y no es necesario para realizar las (unciones de lectura y cierre de esa entrada de
directorio;
$er tam#i<n 6ip>entry>read./ y 6ip>entry>close./;
6ip>entry>read
>P&P 8 _^ 8;1;3?
zipZentryZread 22 Lee los datos de una entrada de directorio a#ierta
Kescripci"n
string 6ip>entry>read > resource zipZentry PA int longitudQ ?
Lee como m*Fimo un nBmero de #ytes igual al par*metro lonE6tu# en una entrada de directorio
a#ierta; i no se especi(ica el par*metro lonE6tu#A la (unci-n 6ip>entry>read./ intentar* leer 1308
#ytes; +l par*metro D6p_entr? es una entrada de directorio v*lida o#tenida mediante la (unci-n
6ip>read./;
Nota- +l par*metro lonE6tu# indica el nBmero de #ytes /ue se /uieren leer del archivo
una vez descomprimido;
La (unci-n devuelve los datos leidos o FALSE si se ha llegado al (inal del archivo;
$er tam#i<n 6ip>entry>open./A 6ip>entry>close./ y 6ip>entry>filesi6e./;
6ip>open
>P&P 8 _^ 8;1;3?
zipZopen 22 A#re un archivo en (ormato Iip
Kescripci"n
resource 6ip>open > string nom#reZarchivo ?
A#re un archivo en (ormato Iip para poder leerlo; +l par*metro nom1re_arch6o es el nom#re del
archivo en (ormato Iip /ue se /uiere a#rir;
La (unci-n devuelve un apuntador /ue se utiliza con las (unciones 6ip>read./ y 6ip>close./ o
devuelve FALSE si no eFiste el archivo nom1re_arch6o;
$er tam#i<n 6ip>read./ y 6ip>close./;
6ip>read
>P&P 8 _^ 8;1;3?
zipZread 22 Lee la siguiente entrada de un archivo en (ormato Iip
Kescripci"n
resource 6ip>read > resource zip ?
Lee la siguiente entrada de un archivo en (ormato Iip; +l par*metro D6p de#e ser un apuntador
v*lido o#tenido mediante la (unci-n 6ip>open./;
La (unci-n devuelve una entrada de directorio v*lida para su uso con cual/uiera de las (unciones
6ip>entry>..../ o FALSE si ya no hay mas entradas para leer en el archivo en (ormato Iip;
$er tam#i<n 6ip>open./A 6ip>close./A 6ip>entry>open./ y 6ip>entry>read./;
CI:I. ;unciones de Compresi"n blib
Introducci"n
+ste m-dulo le permite leer y escri#ir de (orma transparente so#re archivos gzip >;gz? comprimidosA
a trav<s de algunas versiones de la mayor)a de (unciones del sistema de archivos /ue tra#a'en con
archivos comprimidos2gzip >y archivos sin comprimir tam#i<nA pero no con soc"ets?;
Nota- La versi-n 8;3;8 introdu'o una envoltura (open para archivos2;gzA de modo /ue
puede usar una @RL especial Hzli#CH para acceder a archivos comprimidos de (orma
transparente usando las (unciones de acceso normales (V>? si precede el nom#re o ruta
de archivo con un pre(i'o Hzli#CH al llamar a fopen./;
+n la versi-n 8;7;3A este pre(i'o especial ha cam#iado a Hzli#CDDH para prevenir
am#igjedades con nom#res de archivo /ue contengan HCH;
+sta caracter)stica re/uiere una #i#lioteca 5 de tiempo de e'ecuci-n /ue provee la
(unci-n 9opencoo>6eLM; &asta donde se conoceA la #i#lioteca de 5 GN@ es la Bnica /ue
o(rece esta caracter)stica;
Me?uirimientos
+ste m-dulo usa las (unciones de zli#A por !ean2loup Gailly y Mar" Adler; De#e usar una versi-n de
zli# _^ 1;3;9 con <ste m-dulo;
Instalaci"n
oporte Ili# en P&P no est* activo por de(ecto; @sted necesitar* con(igurar P&P ==76th=Dl61):D0R.
La versi-n para LindoEs de +!+ tiene soporte nativo para esta eFtensi-n; No se necesita cargar
ninguna eFtensi-n adicional para usar estas (unciones;
Nota- soporte integrado para zli# en LindoEs est* disponi#le con P&P 8;7;3
Configuraci"n en tiempo de e'ecuci"n
+l comportamiento de estas (unciones est* a(ectado por los valores de(inidos en php.ini;
La eFtensi-n de zli# o(rece la opci-n de comprimir transparentemente tus p*ginas Ee# al vueloA si el
navegador de internet soporta esto; Por lo tanto hay tres opciones en el archivo de con(iguraci-n
php.ini;
Tabla !. Jpciones de configuraci"n blib
Nombre
Calor por
Kefecto
Modificable
zli#;outputZcompression =O((= P&PZ.N.ZALL
zli#;outputZcompressionZleve
l
=21= P&PZ.N.ZALL
zli#;outputZhandler == P&PZ.N.ZALL
Para m*s detalles y de(iniciones de las constantes P&PZ.N.ZV vea ini>set./;
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
Dl61.output_compress6on booleanDinteger
i se desea comprimir p*ginas transparentemente; i esta opci-n est* en =On= en php.ini o
en la con(iguraci-n del ApacheA las p*ginas son comprimidas si el navegador env)a un
enca#ezado =Accept2+ncodingC gzip= o =de(late=; =5ontent2+ncodingC gzip= >respectivamente
=de(late=? y =$aryC Accept2+ncoding=A los enca#ezados son agregados a la salida;
+sta opci-n tam#i<n acepta valores enteros en vez de los #oleanos =On=D=O((=A usando esto
usted puede (i'ar el tamaWo del #u((er de salida >de(ault es 8SB?;
Nota- outputZhandler de#e estar vac)o si est* puesto en HOnH en lugar de este usted
de#e usar zli#;outputZhandler;
Dl61.output_compress6on_leel entero
+l nivel de compresi-n usado para la salida transparentemente comprimida;
Dl61.output_han#ler cadena
@sted no puede especi(icar mane'adores adicionales de salida si zli#;outputZcompression est*
activada; +stos a'ustes no son lo mismo /ue outputZhandler sino un di(erente orden;
Tipos de recursos
+sta eFtensi-n no tiene ningBn tipo de recurso de(inido;
Constantes predefinidas
+stas constantes est*n de(inidas por esta eFtensi-n y estar*n disponi#les solamente cuando la
eFtensi-n ha sido o #ien compilada dentro de P&P o gra#ada din*micamente en tiempo de
e'ecuci-n;
FORCE_#/IP >entero?
FORCE_DEFLATE >entero?
E'emplos
+ste e'emplo a#re un archivo temporal y escri#e una cadena de prue#a en <lA luego imprime el
contenido de este archivo dos veces;
E'emplo !. Pe?ueWo E'emplo de blib
<?php
$nombre%archi=o > tempnam3M/tmpM, M0libtestM9 . M.E0M;
echo "<html>Vn<head></head>Vn<body>Vn<pre>Vn";
$s > "&iexcl;*an solo una prueba, prueba, prueba, prueba, prueba, prueba!Vn";
// abrir el archi=o para escritura con maxima compresion
$0p > E0open3$nombre%archi=o, "8K"9;
// escribir la cadena en el archi=o
E08rite3$0p, $s9;
// cerrar el archi=o
E0close3$0p9;
// abrir el archi=o para lectura
$0p > E0open3$nombre%archi=o, "r"9;
// leer < caracteres
echo E0read3$0p, <9;
// mostrar la salida hasta el #inal de archi=o y cerrarlo.
E0passthru3$0p9;
E0close3$0p9;
echo "Vn";
// abrir el archi=o e imprimir su contenido 3por seEunda =e09.
i# 3readE0#ile3$nombre%archi=o9 !> strlen3$s99 :
echo "&iexcl;Error con las #unciones 0lib!";
;
unlinI3$nombre%archi=o9;
echo "</pre>Vn</body>Vn</html>Vn";
?>
Tabla de contenidos
gzclose 22 5ierra un apuntador de un (ichero gz a#ierto
gzcompress 22 5omprime una cadena
gzde(late 22 5omprime una cadena
gzencode 22 5rea una cadena comprimida con gzip
gzeo( 22 Prue#a de apuntador para el (in de archivo gz
gz(ile 22 Lee un archivo gz completo en una matriz
gzgetc 22 O#tiene un caracter del archivo GI apuntado
gzgets 22 O#tiene una l)nea del archivo apuntado
gzgetss 22 O#tiene una l)nea del archivo apuntado y le retira las eti/uetas &,ML
gzin(late 22 Descomprime una cadena comprimida
gzopen 22 A#rir un archivo gz
gzpassthru 22 .mprimir todos los datos /ue restan en un apuntador a archivo gz
gzputs 22 Alias de g63rite./
gzread 22 Lectura segura de archivo #inario gz
gzreEind 22 Reinicia la posici-n de un apuntador de archivo gz
gzsee" 22 Busca en el archivo gz apuntado
gztell 22 .ndica la posici-n de lecturaDescritura del apuntador a archivo gz
gzuncompress 22 Descomprime una cadena comprimida
gzErite 22 +scritura en un archivo gzA segura con material #inario
readgz(ile 22 .mprimir un archivo gz
zli#ZgetZcodingZtype 22 Regresa el tipo de codi(icaci-n usada para la salida de la compresi-n
g6close
>P&P 7A P&P 8 A P&P 4?
gzclose 22 5ierra un apuntador de un (ichero gz a#ierto
Kescripci"n
#ool g6close > resource zp ?
5ierra el apuntador del (ichero gz dado;
:ista de parmetros
Dp
+l apuntador al archivo gz; De#e ser v*lidoA y de#e apuntar a un (ichero a#ierto eFitosamente
por g6open./;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
g6open./
g6compress
>P&P 8 _^ 8;3;1A P&P 4?
gzcompress 22 5omprime una cadena
Kescripci"n
string g6compress > string datos PA int nivelQ ?
+sta (unci-n comprime la cadena dada usando el (ormato de datos ^40A;
Para detalles so#re el algoritmo de compresi-n de IL.BA vea el documento =+spe(ci(icaci-n del
(ormato de compresi-n de IL.B versi-n 7;7= >RF5 1943?;
Nota- +sto no es lo mismo /ue la compresi-n gzipA la cu*l incluye algunos
enca#ezados; $ea g6encode./ para compresi-n de gzip;
:ista de parmetros
#atos
Los datos a comprimir;
n6el
+l nivel de compresi-n; Puede ser dado como 3 para no compresi-n hasta 9 para la
compresi-n m*Fima;
Calores retornados
La cadena comprimida o FALSE si ocurre un error;
Cer tambi%n
g6deflate./
g6inflate./
g6uncompress./
g6encode./
g6deflate
>P&P 8 _^ 8;3;8A P&P 4?
gzde(late 22 5omprime una cadena
Kescripci"n
string g6deflate > string datos PA int nivelQ ?
+sta (unci-n comprime los datos datos usando el (ormato de datos DE34,TE;
Para detalles so#re el algoritmo de compresi-n de D+FLA,+ vea el documento =+speci(icaci-n del
(ormato de compresi-n de datos D+FLA,+ versi-n 1;7= >RF5 1941?;
:ista de parmetros
#atos
Los datos a comprimir;
n6el
+l nivel de compresi-n; Puede ser dado como 3 para no compresi-n hasta 9 para la
compresi-n m*Fima; i no se d*A el nivel por de(ecto de compresi-n ser* el valor por de(ecto
de la li#reria zli#;
Calores retornados
La cadena comprimida o FALSE si ocurre un error;
Cer tambi%n
g6inflate./
g6compress./
g6uncompress./
g6encode./
g6encode
>P&P 8 _^ 8;3;8A P&P 4?
gzencode 22 5rea una cadena comprimida con gzip
Kescripci"n
string g6encode > string datos PA int nivel PA int encodingZmodeQQ ?
+sta (unci-n regresa una versi-n comprimida de los #atos compati#le con la salida de el programa
g6ip;
Para m*s in(ormaci-n so#re el (ormato de (icheros GI.PA vea el documentoC +speci(icaci-n del
(ormato de (icheros GI.P versi-n 8;7 >RF5 1940?;
:ista de parmetros
#atos
Los datos a codi(icar;
n6el
+l nivel de compresi-n; Puede ser dado como 3 para no compresi-n hasta 9 para la
compresi-n m*Fima; i no se d*A el nivel por de(ecto de compresi-n ser* el valor por de(ecto
de la li#reria zli#;
enco#6nE_mo#e
+l modo de codi(icado; Puede ser FORCE_#/IP >por de(ecto? o FORCE_DEFLATE;
i usa FORCE_DEFLATEA o#tiene una cadena descomprimida est*ndar de zli# >incluyendo
los enca#ezados zli#? despu<s de los enca#ezados del archivo gzip pero sin che/ueo de
redundancia c)clica crc70;
Calores retornados
La cadena codi(icada o FALSE en case de error;
E'emplos
Los datos resultantes contienen los enca#ezados apropiados y la estructura de datos para ser un
(ichero ;gz est*dar e';C
E'emplo !. Creando un fichero g6ip
<?php
$data > implode3"", #ile3"biE#ile.txt"99;
$E0data > E0encode3$data, K9;
$#p > #open3"biE#ile.txt.E0", "8"9;
#8rite3$#p, $E0data9;
#close3$#p9;
?>
Megistro de cambios
Cersi"n Kescripci"n
8;0
Fue agregado n6el; Antes g6encode./ solo tenia los par*metros opcionales #atos y
enco#6nE_mo#e;
Cer tambi%n
g6deflate./
g6inflate./
g6uncompress./
g6compress./
g6eof
>P&P 7A P&P 8 A P&P 4?
gzeo( 22 Prue#a de apuntador para el (in de archivo gz
Kescripci"n
int g6eof > resource zp ?
Prue#a el apuntador de archivo GI dado en #usca del +OF >(in de archivo?;
:ista de parmetros
Dp
+l apuntador al archivo gz; De#e ser v*lidoA y de#e apuntar a un (ichero a#ierto eFitosamente
por g6open./;
Calores retornados
Regresa TRUE si el apuntador GI est* al (inal del archivo o si ocurri- un errorA FALSE en caso
contrario;
g6file
>P&P 7A P&P 8 A P&P 4?
gz(ile 22 Lee un archivo gz completo en una matriz
Kescripci"n
array g6file > string nom#reZarchivo PA int usarZrutaZinclusionQ ?
Funci-n id<ntica a readg6file./A eFcepto /ue g6file./ devuelve el archivo en una matriz;
:ista de parmetros
nom1re_arch6o
+l nom#re del archivo;
usar_ruta_6nclus6on
Puedes asignar este par*metro opcional a 1A si deseas #uscar tam#i<n el archivo
enincludeZpath;
Calores retornados
@na matriz /ue contiene el archivoA una l)nea por celda;
Cer tambi%n
readg6file./
g6open./
g6getc
>P&P 7A P&P 8 A P&P 4?
gzgetc 22 O#tiene un caracter del archivo GI apuntado
Kescripci"n
string g6getc > resource zp ?
Regresa una cadena conteniendo un s-lo caracter >sin compresi-n? le)do de archivo gz apuntado;
:ista de parmetros
Dp
+l apuntador al archivo gz; +ste de#e ser v*lidoA y de#e apuntar a un archivo a#ierto
eFitosamente por g6open./;
Calores retornados
+l caracter sin compresi-n o FALSE en caso de +OF >a di(erencia de g6eof./?;
Cer tambi%n
g6open./
g6gets./
g6gets
>P&P 7A P&P 8 A P&P 4?
gzgets 22 O#tiene una l)nea del archivo apuntado
Kescripci"n
string g6gets > resource zpA int tamaWo ?
O#tiene a cadena >sin comprimir? de hasta tamaWo 21 #ytes le)dos de el archivo apuntado; La lectura
termina cuando tamaWo 21 #ytes han sido le)dosA en un salto de l)nea o cuando se alcance el (in del
archivo >+OF?A lo /ue ocurra primero;
:ista de parmetros
Dp
+l apuntador al archivo gz; De#e ser v*lidoA y de#e apuntar a un (ichero a#ierto eFitosamente
por g6open./;
tamaao
+l tamaWo de los datos a o#tener;
Calores retornados
La cadena sin comprimirA o FALSE en error;
Cer tambi%n
g6open./
g6getc./
g6gets./
g6getss
>P&P 7A P&P 8 A P&P 4?
gzgetss 22 O#tiene una l)nea del archivo apuntado y le retira las eti/uetas &,ML
Kescripci"n
string g6getss > resource zpA int longitud PA string eti/uetaZpermitidaQ ?
.dentica a g6gets./A eFcepto /ue g6getss./ intenta retirar cual/uier eti/ueta &,ML y P&P del teFto
/ue lee;
:ista de parmetros
Dp
+l apuntador de archivo gz; De#e ser v*lidoA y de#e apuntar a un archivo eFitosamente a#ierto
por g6open./;
lonE6tu#
La longitud de los datos a o#tener;
et6@ueta_perm6t6#a
Puede usar este par*metro opcional para especi(icar /ue eti/uetas no ser* retiradas;
Calores retornados
Los datos sin compresi-n ni eti/uetasA o FALSE en caso de error;
Megistro de cambios
Cersi"n Kescripci"n
7;3;17 y 8;3#7 et6@ueta_perm6t6#a (ue agregada;
Cer tambi%n
g6open./
g6gets./
strip>tags./
g6inflate
>P&P 8 _^ 8;3;8A P&P 4?
gzin(late 22 Descomprime una cadena comprimida
Kescripci"n
string g6inflate > string datos PA int longitudQ ?
+st* (unci-n descomprime una cadena comprimida;
:ista de parmetros
#atos
Los datos comprimidos por g6deflate./;
lonE6tu#
La longitud m*Fima de los datos a descodi(icar o descomprimir;
Calores retornados
,he original uncompressed data or FALSE on error;
La (unci-n regresar* un error si los datos ya sin comprimir son mayor a 70:KM veces la longitud de
los dados en el par*metro #atos o mas /ue el par*metro opcional lonE6tu#;
Cer tambi%n
g6deflate./
g6compress./
g6uncompress./
g6encode./
g6open
>P&P 7A P&P 8 A P&P 4?
gzopen 22 A#rir un archivo gz
Kescripci"n
resource g6open > string nom#reZarchivoA string modo PA int usarZrutaZinclusionQ ?
A#re un archivo gzip >;gz? para lectura o escritura;
g6open./ puede ser usada para leer un archivo el cual no est* en (ormato gzipX en este caso g6read./
leer* directamente desde el archivo sin relizar descompresi-n;
:ista de parmetros
nom1re_arch6o
+l nom#re del archivo;
mo#o
5omo en fopen./ >r1 o 71? pero puede tam#i<n incluir un nivel de compresi-n >71O? o una
estrategiaC 9 para datos (iltrados como en 71X9A h para !u99man onl? compress6on como en
711h; >$ea la descripci-n de de(late.nit0 en 0lib.h para m*s in(ormaci-n acerca del
par*metro de estrategia;?
usar_ruta_6nclus6on
Puede usar el tercer par*metro opcional y de(inirlo como =1=A si desea /ue el archivo sea
#uscado tam#i<n en includeZpath;
Calores retornados
Regresa un apuntador de archivo a el archivo a#iertoA despu<s de esoA todo lo /ue se lea desde este
descriptor de archivo ser* descomprimido transparentemente y lo /ue escri#a ser* comprimido;
i (alla al a#rir el archivoA la (unci-n regresa FALSE;
E'emplos
E'emplo !. E'emplo de g6open./
<?php
$#p > E0open3"/tmp/#ile.E0", "r"9;
?>
Cer tambi%n
g6close./
g6passthru
>P&P 7A P&P 8 A P&P 4?
gzpassthru 22 .mprimir todos los datos /ue restan en un apuntador a archivo gz
Kescripci"n
int g6passthru > resource zp ?
Lee desde el apuntador de archivo gz hasta el (inal del archivo y escri#e los resultados >sin
compresi-n? a la salida est*ndar;
Nota- Puede /ue necesite llamar g6re3ind./ para reiniciar el apuntador del archivo al
principio del archivo si ya se ha escrito datos en <l;
,ugerencia- i s-lo desea volcar el contenido de un archivo al #u((er de salidaA sin
modi(icarlo primero o #uscar una posici-n en particularA puede /ue desee usar la
(unci-n readg6file./A la cual le ahorra la llamada a g6open./;
:ista de parmetros
Dp
+l apuntador de archivo de#e ser v*lidoA y de#e apuntar a un archivo a#ierto
satis(actoriamente por g6open./;
Calores retornados
+l nBmero de caracteres sin compresi-n le)dos desde ED y pasados a trav<s de la entradaA o FALSE
en caso de error;
E'emplos
E'emplo !. E'emplo de g6passthru./
<?php
$#p > E0open3M#ile.E0M, MrM9;
E0passthru3$#p9;
E0close3$#p9;
?>
g6puts
gzputs 22 Alias de g63rite./
Kescripci"n
+sta (unci-n es un alias de g63rite./;
g6read
>P&P 7A P&P 8 A P&P 4?
gzread 22 Lectura segura de archivo #inario gz
Kescripci"n
string g6read > resource zpA int longitud ?
g6read./ lee hasta lonE6tu# #ytes de el apuntador de archivo gz; La lectura se detiene cuando lenEth
en #ytes>sin compresi-n? han sido le)dos o se encuentre el (in del archivo +OFA lo /ue ocurra
primero;
:ista de parmetros
Dp
+l apuntador de archivo gz; De#e ser v*lidoA y de#e apuntar a un archivo eFitosamente a#ierto
por g6open./;
lonE6tu#
+l nBmero de #ytes a leer;
Calores retornados
Los datos /ue han sido le)dos;
E'emplos
E'emplo !. e'emplo de g6read./
<?php
// Eet contents o# a E0F#ile into a strinE
$#ilename > "/usr/local/somethinE.txt.E0";
$0d > E0open3$#ilename, "r"9;
$contents > E0read3$0d, 622229;
E0close3$0d9;
?>
Cer tambi%n
g63rite./
g6open./
g6gets./
g6getss./
g6file./
g6passthru./
g6re3ind
>P&P 7A P&P 8 A P&P 4?
gzreEind 22 Reinicia la posici-n de un apuntador de archivo gz
Kescripci"n
#ool g6re3ind > resource zp ?
+sta#lece el indicador de posici-n del apuntador de archivo vz al principio de el archivo;
:ista de parmetros
Dp
+l apuntador de archivo gz; De#e ser v*lidoA y de#e apuntar a un archivo eFitosamente a#ierto
por g6open./;
Calores retornados
Devuelve TRUE si todo se llev- a ca#o correctamenteA FALSE en caso de (allo;
Cer tambi%n
g6seeB./
g6tell./
g6seeB
>P&P 7A P&P 8 A P&P 4?
gzsee" 22 Busca en el archivo gz apuntado
Kescripci"n
int g6seeB > resource zpA int o((set ?
+sta#lece el indicador de posici-n del archivo para el apuntador de archivo; Walente a e'ecutar >en
5? EDsee>LDpC o99setC SEE2_SETM;
i el archivo es a#ierto para lecturaA esta (unci-n es emulada pero puede ser eFtremadamente lenta;
i el archivo es a#ierto para escrituraA solo se soportan #cdeos/uedas hacia adelanteX g6seeB./
entonces comprime una secuencia de ceros hasta la nueva posici-n;
:ista de parmetros
Dp
+l apuntador de archivo gz; De#e ser v*lidoA y de#e apuntar a un archivo eFitosamente a#ierto
por g6open./;
o99set
La posici-n a #uscar;
Calores retornados
+n caso de <FitoA regresa 3X de otro modoA regresa 21; Note /ue si se pasa del (in del archivo no es
considerado un error;
Cer tambi%n
g6tell./
g6re3ind./
g6tell
>P&P 7A P&P 8 A P&P 4?
gztell 22 .ndica la posici-n de lecturaDescritura del apuntador a archivo gz
Kescripci"n
int g6tell > resource zp ?
O#tiene la posici-n del apuntador de archivo dadoX e';A su desplazamiento secuencial en el interior
del archivo;
:ista de parmetros
Dp
+l apuntador de archivo de#e ser v*lidoA y de#e apuntar a un archivo a#ierto con <Fito por
g6open./;
Calores retornados
La posici-n de el apuntador del rchivo o FALSE si ocurre un error;
Cer tambi%n
g6open./
g6seeB./
g6re3ind./
g6uncompress
>P&P 8 _^ 8;3;1A P&P 4?
gzuncompress 22 Descomprime una cadena comprimida
Kescripci"n
string g6uncompress > string datos PA int longitudQ ?
+sta (unci-n descomprime una cadena comprimida;
:ista de parmetros
#atos
Los datos comprimidos por g6compress./;
lonE6tu#
La longitud m*Fima a decodi(icar o descomprimir;
Calores retornados
Los datos originales sin compresi- o FALSE en error;
La (unci-n regresar* un error si los datos sin comprimir son mas /ue 70:KM veces la longitud de los
#atos de entradaA o mayor al par*metro opcional lonE6tu#;
Cer tambi%n
g6compress./
g6inflate./
g6deflate./
g6encode./
g63rite
>P&P 7A P&P 8 A P&P 4?
gzErite 22 +scritura en un archivo gzA segura con material #inario
Kescripci"n
int g63rite > resource zpA string cadena PA int longitudQ ?
g63rite./ escri#e el contenido de ca#ena al archivo gz dado;
:ista de parmetros
Dp
+l apuntador de archivo gz; De#e ser v*lidoA y de#e apuntar a un archivo a#ierto eFitosamente
por g6open./;
ca#ena
La cadena a escri#ir;
lonE6tu#
+l nBmero de #ytes sin comprimir a escri#ir; i se de(ineA la escritura se detendr* despu<s de
/ue se haya alcanzado la lonE6tu# de #ytes escritos >sin comprimir? o /ue se encuentre el (in
de ca#enaA lo /ue ocurra primero;
Nota- note /ue si el argumento lonE6tu# es dadoA entoces la opci-n de
con(iguraci-n magicZ/uotesZruntime ser* ignorada no se retirar*n los slashes >=D=?
de ca#ena;
Calores retornados
Regresa el nBmero de #ytes >sin comprimir? escritos a archivo gz;
Cer tambi%n
g6read./
g6open./
readg6file
>P&P 7A P&P 8 A P&P 4?
readgz(ile 22 .mprimir un archivo gz
Kescripci"n
int readg6file > string nom#reZarchivo PA int usarZrutaZinclusionQ ?
Lee un archivoA lo descomprime y lo escri#e en la salida est*ndar;
La (unci-n readg6file./ puede ser usada para leer un archivo /ue no se encuentra en (ormato gzipX
en este caso readg6file./ leer* desde el archivo directamente sin descomprimirlo;
:ista de parmetros
nom1re_arch6o
+l nom#re del archivo; +l archivo ser* a#ierto desde el sistema de archivos y su contenido
ser* escrito en la salida est*ndar;
usar_ruta_6nclus6on
Puede usar el segundo par*metro opcionalA y de(inirlo como 1A si desea /ue el archivo sea
#uscado tam#i<n en includeZpath;
Calores retornados
Devuelve el nBmero de #ytes >sin compresi-n? le)dos desde el archivo; i ocurre un errorA se
devuelve FALSE yA a menos /ue la (unci-n sea llamada como Wrea#ED96leA se imprime un mensa'e
de error;
Cer tambi%n
g6passthru./
g6file./
g6open./
6lib>get>coding>type
>P&P 8 _^ 8;7;0A P&P 4?
zli#ZgetZcodingZtype 22 Regresa el tipo de codi(icaci-n usada para la salida de la compresi-n
Kescripci"n
string 6lib>get>coding>type > void ?
Regresa el tipo de codi(icaci-n usada en la compresi-n;
Calores retornados
Los posi#les valores regresados son ED6pA #e9lateA o FALSE;
Cer tambi%n
La directiva zli#;outputZcompression
CII. bend API
HacBing the Core of PHP
,hose Eho "noE donHt tal";
,hose Eho tal" donHt "noE;
ometimesA P&P =as is= simply isnHt enough; Although these cases are rare (or the average userA
pro(essional applications Eill soon lead P&P to the edge o( its capa#ilitiesA in terms o( either speed
or (unctionality; NeE (unctionality cannot alEays #e implemented natively due to language
restrictions and inconveniences that arise Ehen having to carry around a huge li#rary o( de(ault code
appended to every single scriptA so another method needs to #e (ound (or overcoming these eventual
lac"s in P&P;
As soon as this point is reachedA itHs time to touch the heart o( P&P and ta"e a loo" at its coreA the 5
code that ma"es P&P go;
Tabla de contenidos
88; OvervieE
84; +Ftension Possi#ilities
8K; ource Layout
8:; P&PHs Automatic Build ystem
8M; 5reating +Ftensions
89; @sing +Ftensions
43; ,rou#leshooting
41; ource Discussion
40; Accepting Arguments
47; 5reating $aria#les
48; Duplicating $aria#le 5ontentsC ,he 5opy 5onstructor
44; Returning $alues
4K; Printing .n(ormation
4:; tartup and hutdoEn Functions
4M; 5alling @ser Functions
49; .nitialization File upport
K3; Lhere to Go (rom &ere
K1; Re(erenceC ome 5on(iguration Macros
K0; AP. Macros
&ac"ing the 5ore o( P&P
Captulo 88. J5er5ie3
=+Ftending P&P= is easier said than done; P&P has evolved to a (ull2(ledged tool consisting o( a (eE
mega#ytes o( source codeA and to hac" a system li"e this /uite a (eE things have to #e learned and
considered; Lhen structuring this chapterA Ee (inally decided on the =learn #y doing= approach;
,his is not the most scienti(ic and pro(essional approachA #ut the method thatHs the most (un and
gives the #est end results; .n the (olloEing sectionsA youHll learn /uic"ly hoE to get the most #asic
eFtensions to Eor" almost instantly; A(ter thatA youHll learn a#out IendHs advanced AP.
(unctionality; ,he alternative Eould have #een to try to impart the (unctionalityA designA tipsA tric"sA
etc; as a EholeA all at onceA thus giving a complete loo" at the #ig picture #e(ore doing anything
practical; Although this is the =#etter= methodA as no dirty hac"s have to #e madeA it can #e very
(rustrating as Eell as energy2 and time2consumingA Ehich is Ehy EeHve decided on the direct
approach;
Note that even though this chapter tries to impart as much "noEledge as possi#le a#out the inner
Eor"ings o( P&PA itHs impossi#le to really give a complete guide to eFtending P&P that Eor"s 133b
o( the time in all cases; P&P is such a huge and compleF pac"age that its inner Eor"ings can only #e
understood i( you ma"e yoursel( (amiliar Eith it #y practicingA so Ee encourage you to Eor" Eith
the source;
2hat Is bend& and 2hat Is PHP&
,he name ^en# re(ers to the language engineA P&PHs core; ,he term +!+ re(ers to the complete
system as it appears (rom the outside; ,his might sound a #it con(using at (irstA #ut itHs not that
complicated >see Figura 8821?; ,o implement a Le# script interpreterA you need three partsC
1; ,he 6nterpreter part analyzes the input codeA translates itA and eFecutes it;
0; ,he 9unct6onal6t? part implements the (unctionality o( the language >its (unctionsA etc;?;
7; ,he 6nter9ace part tal"s to the Le# serverA etc;
Iend ta"es part 1 completely and a #it o( part 0X P&P ta"es parts 0 and 7; ,ogether they (orm the
complete P&P pac"age; Iend itsel( really (orms only the language coreA implementing P&P at its
very #asics Eith some prede(ined (unctions; P&P contains all the modules that actually create the
languageHs outstanding capa#ilities;
;igura 88(!. The internal structure of PHP.
,he (olloEing sections discuss Ehere P&P can #e eFtended and hoE itHs done;
Captulo 89. E+tension Possibilities
As shoEn in Figura 8821 a#oveA P&P can #e eFtended primarily at three pointsC eFternal modulesA
#uilt2in modulesA and the Iend engine; ,he (olloEing sections discuss these options;
E+ternal Modules
+Fternal modules can #e loaded at script runtime using the (unction dl./; ,his (unction loads a
shared o#'ect (rom dis" and ma"es its (unctionality availa#le to the script to Ehich itHs #eing #ound;
A(ter the script is terminatedA the eFternal module is discarded (rom memory; ,his method has #oth
advantages and disadvantagesA as descri#ed in the (olloEing ta#leC
Advantages Disadvantages
+Fternal
modules
donHt
re/uire
recompilin
g o( P&P;
,he shared
o#'ects need
to #e loaded
every time a
script is #eing
eFecuted
>every hit?A
Ehich is very
sloE;
,he size o(
P&P
remains
small #y
=outsourcin
g= certain
(unctionalit
y;
+Fternal
additional
(iles clutter up
the dis";

+very script
that Eants to
use an
eFternal
moduleHs
(unctionality
has to
speci(ically
include a call
to dl./A or the
e8tens6on tag
in php.ini
needs to #e
modi(ied
>Ehich is not
alEays a
suita#le
solution?;
,o sum upA eFternal modules are great (or third2party productsA small additions to P&P that are
rarely usedA or 'ust (or testing purposes; ,o develop additional (unctionality /uic"lyA eFternal
modules provide the #est results; For (re/uent usageA larger implementationsA and compleF codeA the
disadvantages outEeigh the advantages;
,hird parties might consider using the e8tens6on tag in php.ini to create additional eFternal
modules to P&P; ,hese eFternal modules are completely detached (rom the main pac"ageA Ehich is
a very handy (eature in commercial environments; 5ommercial distri#utors can simply ship dis"s or
archives containing only their additional modulesA Eithout the need to create (iFed and solid P&P
#inaries that donHt alloE other modules to #e #ound to them;
1uilt(in Modules
Built2in modules are compiled directly into P&P and carried around Eith every P&P processX their
(unctionality is instantly availa#le to every script thatHs #eing run; Li"e eFternal modulesA #uilt2in
modules have advantages and disadvantagesA as descri#ed in the (olloEing ta#leC
Advantages Disadvantages
No need to
load the
module
speci(ically
X the
(unctionalit
y is
instantly
availa#le;
5hanges to
#uilt2in
modules
re/uire
recompiling
o( P&P;
No eFternal
(iles clutter
up the dis"X
everything
resides in
the P&P
#inary;
,he P&P
#inary groEs
and consumes
more
memory;
Built2in modules are #est Ehen you have a solid li#rary o( (unctions that remains relatively
unchangedA re/uires #etter than poor2to2average per(ormanceA or is used (re/uently #y many scripts
on your site; ,he need to recompile P&P is /uic"ly compensated #y the #ene(it in speed and ease o(
use; &oEeverA #uilt2in modules are not ideal Ehen rapid development o( small additions is re/uired;
The bend Engine
O( courseA eFtensions can also #e implemented directly in the Iend engine; ,his strategy is good i(
you need a change in the language #ehavior or re/uire special (unctions to #e #uilt directly into the
language core; .n generalA hoEeverA modi(ications to the Iend engine should #e avoided; 5hanges
here result in incompati#ilities Eith the rest o( the EorldA and hardly anyone Eill ever adapt to
specially patched Iend engines; Modi(ications canHt #e detached (rom the main P&P sources and are
overridden Eith the neFt update using the =o((icial= source repositories; ,here(oreA this method is
generally considered #ad practice andA due to its rarityA is not covered in this #oo";
Captulo 8<. ,ource :ayout
Nota- Prior to Eor"ing through the rest o( this chapterA you should retrieve cleanA
unmodi(ied source trees o( your (avorite Le# server; LeHre Eor"ing Eith Apache
>availa#le at httpCDDEEE;apache;orgD? andA o( courseA Eith P&P >availa#le at
httpCDDEEE;php;netD 2 does it need to #e saidN?;
Ma"e sure that you can compile a Eor"ing P&P environment #y yoursel(a Le EonHt go
into this issue hereA hoEeverA as you should already have this most #asic a#ility Ehen
studying this chapter;
Be(ore Ee start discussing code issuesA you should (amiliarize yoursel( Eith the source tree to #e
a#le to /uic"ly navigate through P&PHs (iles; ,his is a must2have a#ility to implement and de#ug
eFtensions;
,he (olloEing ta#le descri#es the contents o( the ma'or directories;
Directory 5ontents
php1
Main P&P
source
(iles and
main
header
(ilesX here
youHll (ind
all o(
P&PHs AP.
de(initions
A macrosA
etc;
>important
?;
+verythin
g else is
#eloE this
directory;
php1/e
xt
Repository
(or
dynamic
and #uilt2
in
modulesX
#y de(aultA
these are
the
=o((icial=
P&P
modules
that have
#een
integrated
into the
main
source
tree; From
P&P 8;3A
itHs
possi#le to
compile
these
standard
eFtensions
as
dynamic
loada#le
modules
>at leastA
those that
support
it?;
php1/m
ain
,his
directory
contains
the main
php
macros
and
de(initions
;
>important
?
php1/p
ear
Directory
(or the
P&P
+Ftension
and
Applicatio
n
Repository
; ,his
directory
contains
core
P+AR
(iles;
php1/s
api
5ontains
the code
(or the
di((erent
server
a#stractio
n layers;
php1/*
&'"
Location
o( the
=,hread
a(e
Resource
Manager=
>,RM?
(or Iend
and P&P;
php1/Y
end
Location
o( the
Iend
+ngine
(ilesX here
youHll (ind
all o(
IendHs
AP.
de(initions
A macrosA
etc;
>important
?;
Discussing all the (iles included in the P&P pac"age is #eyond the scope o( this chapter; &oEeverA
you should ta"e a close loo" at the (olloEing (ilesC
php1/main/php.hA located in the main P&P directory; ,his (ile contains most o( P&PHs
macro and AP. de(initions;
php1/Yend/0end.hA located in the main Iend directory; ,his (ile contains most o(
IendHs macros and de(initions;
php1/Yend/0end%,4.hA also located in the Iend directoryA Ehich de(ines IendHs AP.;
%ou should also (olloE some su#2inclusions (rom these (ilesX (or eFampleA the ones relating to the
Iend eFecutorA the P&P initialization (ile supportA and such; A(ter reading these (ilesA ta"e the time
to navigate around the pac"age a little to see the interdependencies o( all (iles and modules 2 hoE
they relate to each other and especially hoE they ma"e use o( each other; ,his also helps you to
adapt to the coding style in Ehich P&P is authored; ,o eFtend P&PA you should /uic"ly adapt to this
style;
E+tension Con5entions
Iend is #uilt using certain conventionsX to avoid #rea"ing its standardsA you should (olloE the rules
descri#ed in the (olloEing sections;
Macros
For almost every important tas"A Iend ships prede(ined macros that are eFtremely handy; ,he ta#les
and (igures in the (olloEing sections descri#e most o( the #asic (unctionsA structuresA and macros;
,he macro de(initions can #e (ound mainly in 0end.h and 0end%,4.h; Le suggest that you
ta"e a close loo" at these (iles a(ter having studied this chapter; >Although you can go ahead and
read them noEA not everything Eill ma"e sense to you yet;?
Memory Management
Resource management is a crucial issueA especially in server so(tEare; One o( the most valua#le
resources is memoryA and memory management should #e handled Eith eFtreme care; Memory
management has #een partially a#stracted in IendA and you should stic" to this a#straction (or
o#vious reasonsC Due to the a#stractionA Iend gets (ull control over all memory allocations; Iend is
a#le to determine Ehether a #loc" is in useA automatically (reeing unused #loc"s and #loc"s Eith
lost re(erencesA and thus prevent memory lea"s; ,he (unctions to #e used are descri#ed in the
(olloEing ta#leC
Function
Descriptio
n
emalloc
./
erves as
replacemen
t (or
malloc./;
efree./
erves as
replacemen
t (or free./;
estrdup
./
erves as
replacemen
t (or
strdup./;
estrndu
p./
erves as
replacemen
t (or
strndup./;
Faster than
estrdup./
and #inary2
sa(e; ,his
is the
recommen
ded
(unction to
use i( you
"noE the
string
length
prior to
duplicating
it;
ecalloc./
erves as
replacemen
t (or calloc
./;
erealloc
./
erves as
replacemen
t (or
realloc./;
emalloc./A estrdup./A estrndup./A ecalloc./A and erealloc./ allocate internal memoryX efree./ (rees
these previously allocated #loc"s; Memory handled #y the eL./ (unctions is considered local to the
current process and is discarded as soon as the script eFecuted #y this process is terminated;
A5iso
,o allocate resident memory that survives termination o( the current scriptA you can use malloc./
and free./; ,his should only #e done Eith eFtreme careA hoEeverA and only in con'unction Eith
demands o( the Iend AP.X otherEiseA you ris" memory lea"s;
Iend also (eatures a thread2sa(e resource manager to provide #etter native support (or multithreaded
Le# servers; ,his re/uires you to allocate local structures (or all o( your glo#al varia#les to alloE
concurrent threads to #e run; Because the thread2sa(e mode o( Iend Eas not (inished #ac" Ehen this
Eas ErittenA it is not yet eFtensively covered here;
Kirectory and ;ile ;unctions
,he (olloEing directory and (ile (unctions should #e used in Iend modules; ,hey #ehave eFactly
li"e their 5 counterpartsA #ut provide virtual Eor"ing directory support on the thread level;
Iend
Function
Regula
r 5
Functio
n
C>FETC2
K./
getc3d
./
C>;JPEN
./
fopen./
C>JPEN./ open./
C>CHKIM
./
chdir./
C>FET2K
./
get3d
./
C>CHKIM>
;I:E./
,a"es a
(ile
path as
an
argume
nt and
change
s the
current
Eor"in
g
director
y to
that
(ileHs
director
y;
C>,TAT./ stat./
C>:,TAT
./
lstat./
,tring Handling
trings are handled a #it di((erently #y the Iend engine than other values such as integersA BooleansA
etc;A Ehich donHt re/uire additional memory allocation (or storing their values; .( you Eant to return
a string (rom a (unctionA introduce a neE string varia#le to the sym#ol ta#leA or do something
similarA you have to ma"e sure that the memory the string Eill #e occupying has previously #een
allocatedA using the a(orementioned eL./ (unctions (or allocation; >,his might not ma"e much sense
to you yetX 'ust "eep it someEhere in your head (or noE 2 EeHll get #ac" to it shortly;?
Comple+ Types
5ompleF types such as arrays and o#'ects re/uire di((erent treatment; Iend (eatures a single AP. (or
these types 2 theyHre stored using hash ta#les;
Nota- ,o reduce compleFity in the (olloEing source eFamplesA EeHre only Eor"ing Eith
simple types such as integers at (irst; A discussion a#out creating more advanced types
(olloEs later in this chapter;
Captulo 8=. PHPUs Automatic 1uild ,ystem
P&P 8 (eatures an automatic #uild system thatHs very (leFi#le; All modules reside in a su#directory
o( the ext directory; .n addition to its oEn sourcesA each module consists o( a con(ig;m8 (ileA (or
eFtension con(iguration; >(or eFampleA see httpCDDEEE;gnu;orgDmanualDm8DhtmlZmonoDm8;html?
All these stu# (iles are generated automaticallyA along Eith .c=siEnoreA #y a little shell script
named ext%sIel that resides in the ext directory; As argument it ta"es the name o( the module
that you Eant to create; ,he shell script then creates a directory o( the same nameA along Eith the
appropriate stu# (iles;
tep #y stepA the process loo"s li"e thisC
@f/c=s/php1/ext@> ./ext%sIel FFextname>my%module
RreatinE directory my%module
RreatinE basic #iles@ con#iE.m1 .c=siEnore my%module.c php%my%module.h R'EL4*& EXE'4"E.*,O tests/226.phpt my%module.php )done/.
*o use your ne8 extension, you 8ill ha=e to execute the #ollo8inE steps@
6. $ cd ..
C. $ =i ext/my%module/con#iE.m1
<. $ ./buildcon#
1. $ ./con#iEure FF)8ithTenable/Fmy%module
5. $ maIe
G. $ ./php F# ext/my%module/my%module.php
H. $ =i ext/my%module/my%module.c
J. $ maIe
'epeat steps <FG until you are satis#ied 8ith ext/my%module/con#iE.m1 and
step G con#irms that your module is compiled into H. *hen, start 8ritinE
code and repeat the last t8o steps as o#ten as necessary.
,his instruction creates the a(orementioned (iles; ,o include the neE module in the automatic
con(iguration and #uild processA you have to run buildcon#A Ehich regenerates the con#iEure
script #y searching through the ext directory and including all (ound con#iE.m1 (iles;
,he de(ault con#iE.m1 shoEn in +'emplo 8:21 is a #it more compleFC
E'emplo 8=(!. The default !on9ig.:+.
dnl $4d@ ExtendinE%Yend%Zuild.xml,= 6.J C22C/62/62 6J@6<@66 imajes Exp $
dnl con#iE.m1 #or extension my%module
dnl Romments in this #ile start 8ith the strinE MdnlM.
dnl 'emo=e 8here necessary. *his #ile 8ill not 8orI
dnl 8ithout editinE.
dnl 4# your extension re#erences somethinE external, use 8ith@
dnl H%,'-%74*H3my%module, #or my%module support,
dnl "aIe sure that the comment is aliEned@
dnl ) FF8ithFmy%module 4nclude my%module support/9
dnl ?ther8ise use enable@
dnl H%,'-%E.,ZOE3my%module, 8hether to enable my%module support,
dnl "aIe sure that the comment is aliEned@
dnl ) FFenableFmy%module Enable my%module support/9
i# test "$H%"P%"?L+OE" !> "no"; then
dnl 7rite more examples o# tests here...
dnl U FF8ithFmy%module F> checI 8ithFpath
dnl &E,'RH%,*H>"/usr/local /usr" U you miEht 8ant to chanEe this
dnl &E,'RH%S?'>"/include/my%module.h" U you most liIely 8ant to chanEe this
dnl i# test Fr $H%"P%"?L+OE/; then U path Ei=en as parameter
dnl "P%"?L+OE%L4'>$H%"P%"?L+OE
dnl else U search de#ault path list
dnl ,R%"&-%RHER]4.-3)#or my%module #iles in de#ault path/9
dnl #or i in $&E,'RH%,*H ; do
dnl i# test Fr $i/$&E,'RH%S?'; then
dnl "P%"?L+OE%L4'>$i
dnl ,R%"&-%'E&+O*3#ound in $i9
dnl #i
dnl done
dnl #i
dnl
dnl i# test F0 "$"P%"?L+OE%L4'"; then
dnl ,R%"&-%'E&+O*3)not #ound/9
dnl ,R%"&-%E''?'3)lease reinstall the my%module distribution/9
dnl #i
dnl U FF8ithFmy%module F> add include path
dnl H%,LL%4.RO+LE3$"P%"?L+OE%L4'/include9
dnl U FF8ithFmy%module F> chech #or lib and symbol presence
dnl O4Z.,"E>my%module U you may 8ant to chanEe this
dnl O4Z&P"Z?O>my%module U you most liIely 8ant to chanEe this
dnl H%RHER]%O4Z','P3$O4Z.,"E,$O4Z&P"Z?O,
dnl )
dnl H%,LL%O4Z','P%74*H%,*H3$O4Z.,"E, $"P%"?L+OE%L4'/lib, "P%"?L+OE%&H,'EL%O4Z,LL9
dnl ,R%LES4.E3H,(E%"P%"?L+OEO4Z,6,) /9
dnl /,)
dnl ,R%"&-%E''?'3)8ronE my%module lib =ersion or lib not #ound/9
dnl /,)
dnl FO$"P%"?L+OE%L4'/lib Flm Fldl
dnl /9
dnl
dnl H%&+Z&*3"P%"?L+OE%&H,'EL%O4Z,LL9
H%.E7%EX*E.&4?.3my%module, my%module.c, $ext%shared9
#i
.( youHre un(amiliar Eith M8 (iles >noE is certainly a good time to get (amiliar?A this might #e a #it
con(using at (irstX #ut itHs actually /uite easy;
Note: +verything pre(iFed Eith #nl is treated as a comment and is not parsed;
,he con#iE.m1 (ile is responsi#le (or parsing the command2line options passed to con#iEure
at con(iguration time; ,his means that it has to chec" (or re/uired eFternal (iles and do similar
con(iguration and setup tas"s;
,he de(ault (ile creates tEo con(iguration directives in the con#iEure scriptC ==76th=m?_mo#ule
and ==ena1le=m?_mo#ule; @se the (irst option Ehen re(erring eFternal (iles >such as the ==76th=
apache directive that re(ers to the Apache directory?; @se the second option Ehen the user simply
has to decide Ehether to ena#le your eFtension; Regardless o( Ehich option you useA you should
uncomment the otherA unnecessary oneX that isA i( youHre using ==ena1le=m?_mo#uleA you should
remove support (or ==76th=m?_mo#uleA and vice versa;
By de(aultA the con#iE.m1 (ile created #y ext%sIel accepts #oth directives and automatically
ena#les your eFtension; +na#ling the eFtension is done #y using the +!+_EFTENS0ON macro; ,o
change the de(ault #ehavior to include your module into the P&P #inary Ehen desired #y the user
>#y eFplicitly speci(ying ==ena1le=m?_mo#ule or ==76th=m?_mo#ule?A change the test (or
'+!+_MB_MODU4E to :: *?es*C
i# test "$H%"P%"?L+OE" >> "yes"; then dnl
,ction.. H%EX*E.&4?.3my%module, $ext%shared9
#i
,his Eould re/uire you to use ==ena1le=m?_mo#ule each time Ehen recon(iguring and recompiling
P&P;
Note: Be sure to run buildcon# every time you change con#iE.m1a
LeHll go into more details on the M8 macros availa#le to your con(iguration scripts later in this
chapter; For noEA EeHll simply use the de(ault (iles;
Captulo 8N. Creating E+tensions
LeHll start Eith the creation o( a very simple eFtension at (irstA Ehich #asically does nothing more
than implement a (unction that returns the integer it receives as parameter; +'emplo 8M21 shoEs the
source;
E'emplo 8N(!. A simple e+tension.
/W include standard header W/
Uinclude "php.h"
/W declaration o# #unctions to be exported W/
YE.L%S+.R*4?.3#irst%module9;
/W compiled #unction list so Yend Ino8s 8hatMs in this module W/
0end%#unction%entry #irstmod%#unctions)/ >
:
YE.L%SE3#irst%module, .+OO9
:.+OO, .+OO, .+OO;
;;
/W compiled module in#ormation W/
0end%module%entry #irstmod%module%entry >
:
&*,.L,'L%"?L+OE%HE,LE',
"Sirst "odule",
#irstmod%#unctions,
.+OO,
.+OO,
.+OO,
.+OO,
.+OO,
.?%(E'&4?.%PE*,
&*,.L,'L%"?L+OE%'?E'*4E&
;;
/W implement standard "stub" routine to introduce oursel=es to Yend W/
Ui# R?"4OE%LO%S4'&*%"?L+OE
YE.L%-E*%"?L+OE3#irstmod9
Uendi#
/W implement #unction that is meant to be made a=ailable to H W/
YE.L%S+.R*4?.3#irst%module9
:
lonE parameter;
i# 30end%parse%parameters3YE.L%.+"%,'-&39 *&'"O&%RR, "l", &parameter9 >> S,4O+'E9 :
return;
;
'E*+'.%O?.-3parameter9;
;
,his code contains a complete P&P module; LeHll eFplain the source code in detail shortlyA #ut (irst
EeHd li"e to discuss the #uild process; >,his Eill alloE the impatient to eFperiment #e(ore Ee dive
into AP. discussions;?
Nota- ,he eFample source ma"es use o( some (eatures introduced Eith the Iend version
used in P&P 8;1;3 and a#oveA it EonHt compile Eith older P&P 8;3;F versions;
Compiling Modules
,here are #asically tEo Eays to compile modulesC
@se the provided =ma"e= mechanism in the ext directoryA Ehich also alloEs #uilding o(
dynamic loada#le modules;
5ompile the sources manually;
,he (irst method should de(initely #e (avoredA sinceA as o( P&P 8;3A this has #een standardized into a
sophisticated #uild process; ,he (act that it is so sophisticated is also its draE#ac"A un(ortunately 2
itHs hard to understand at (irst; LeHll provide a more detailed introduction to this later in the chapterA
#ut (irst letHs Eor" Eith the de(ault (iles;
,he second method is good (or those Eho >(or some reason? donHt have the (ull P&P source tree
availa#leA donHt have access to all (ilesA or 'ust li"e to 'uggle Eith their "ey#oard; ,hese cases should
#e eFtremely rareA #ut (or the sa"e o( completeness EeHll also descri#e this method;
Compiling )sing MaBe. ,o compile the sample sources using the standard mechanismA copy all
their su#directories to the ext directory o( your P&P source tree; ,hen run buildcon#A Ehich
Eill create an updated con#iEure script containing appropriate options (or the neE eFtension; By
de(aultA all the sample sources are disa#ledA so you donHt have to (ear #rea"ing your #uild process;
A(ter you run buildcon#A con#iEure FFhelp shoEs the (olloEing additional modulesC
FFenableFarray%experiments Z??]@ Enables array experiments
FFenableFcall%userland Z??]@ Enables userland module
FFenableFcross%con=ersion Z??]@ Enables crossFcon=ersion module
FFenableF#irst%module Z??]@ Enables #irst module
FFenableFin#oprint Z??]@ Enables in#oprint module
FFenableFre#erence%test Z??]@ Enables re#erence test module
FFenableFresource%test Z??]@ Enables resource test module
FFenableF=ariable%creation Z??]@ Enables =ariableFcreation module
,he module shoEn earlier in +'emplo 8M21 can #e ena#led Eith ==ena1le=96rst_mo#ule or ==ena1le=
96rst_mo#ule:?es;
Compiling Manually. ,o compile your modules manuallyA you need the (olloEing commandsC
Action 5ommand
5ompilin
g
cc 2(pic
2D5OMP.
L+ZDL^1
2.D
usrDlocalDi
nclude 2.;
2.;; 2.;;D
Iend 2c 2o
<your%o
bject%#
ile>
<your%c
%#ile>
Lin"ing
cc 2shared
2LD
usrDlocalDli
#
2rdynamic
2o
<your%m
odule%#
ile>
<your%o
bject%#
ile3s9>
,he command to compile the module simply instructs the compiler to generate position2independent
code >=9p6c shouldnHt #e omitted? and additionally de(ines the constant COM+04E_D4 to tell the
module code that itHs compiled as a dynamically loada#le module >the test module a#ove chec"s (or
thisX EeHll discuss it shortly?; A(ter these optionsA it speci(ies a num#er o( standard include paths that
should #e used as the minimal set to compile the source (iles;
Note: All include paths in the eFample are relative to the directory ext; .( youHre compiling (rom
another directoryA change the pathnames accordingly; Re/uired items are the P&P directoryA the
Yend directoryA and >i( necessary?A the directory in Ehich your module resides;
,he lin" command is also a plain vanilla command instructing lin"age as a dynamic module;
%ou can include optimization options in the compilation commandA although these have #een
omitted in this eFample >#ut some are included in the ma"e(ile template descri#ed in an earlier
section?;
Note: 5ompiling and lin"ing manually as a static module into the P&P #inary involves very long
instructions and thus is not discussed here; >.tHs not very e((icient to type all those commands;?
Captulo 8O. )sing E+tensions
Depending on the #uild process you selectedA you should either end up Eith a neE P&P #inary to #e
lin"ed into your Le# server >or run as 5G.?A or Eith an ;so >shared o#'ect? (ile; .( you compiled the
eFample (ile #irst%module.c as a shared o#'ectA your result (ile should #e
#irst%module.so; ,o use itA you (irst have to copy it to a place (rom Ehich itHs accessi#le to
P&P; For a simple test procedureA you can copy it to your htdocs directory and try it Eith the
source in +'emplo 8921; .( you compiled it into the P&P #inaryA omit the call to dl./A as the moduleHs
(unctionality is instantly availa#le to your scripts;
A5iso
For security reasonsA you shoul# not put your dynamic modules into pu#licly accessi#le
directories; +ven though it can #e done and it simpli(ies testingA you should put them into a
separate directory in production environments;
E'emplo 8O(!. A test file for first>module.so.
<?php

// remo=e next comment i# necessary
// dl3"#irst%module.so"9;
$param > C;
$return > #irst%module3$param9;
print3"7e sent M$paramM and Eot M$returnM"9;
?>
5alling this P&P (ile in your Le# #roEser should give you the output shoEn in Figura 8921;
;igura 8O(!. Jutput of first>module.php.
.( re/uiredA the dynamic loada#le module is loaded #y calling the dl./ (unction; ,his (unction loo"s
(or the speci(ied shared o#'ectA loads itA and ma"es its (unctions availa#le to P&P; ,he module
eFports the (unction first>module./A Ehich accepts a single parameterA converts it to an integerA and
returns the result o( the conversion;
.( youHve gotten this (arA congratulationsa %ou 'ust #uilt your (irst eFtension to P&P;
Captulo 9D. Troubleshooting
ActuallyA not much trou#leshooting can #e done Ehen compiling static or dynamic modules; ,he
only pro#lem that could arise is that the compiler Eill complain a#out missing de(initions or
something similar; .n this caseA ma"e sure that all header (iles are availa#le and that you speci(ied
their path correctly in the compilation command; ,o #e sure that everything is located correctlyA
eFtract a clean P&P source tree and use the automatic #uild in the ext directory Eith the (resh (ilesX
this Eill guarantee a sa(e compilation environment; .( this (ailsA try manual compilation;
P&P might also complain a#out missing (unctions in your module; >,his shouldnHt happen Eith the
sample sources i( you didnHt modi(y them;? .( the names o( eFternal (unctions youHre trying to access
(rom your module are misspelledA theyHll remain as =unlin"ed sym#ols= in the sym#ol ta#le; During
dynamic loading and lin"age #y P&PA they EonHt resolve #ecause o( the typing errors 2 there are no
corresponding sym#ols in the main #inary; Loo" (or incorrect declarations in your module (ile or
incorrectly Eritten eFternal re(erences; Note that this pro#lem is speci(ic to dynamic loada#le
modulesX it doesnHt occur Eith static modules; +rrors in static modules shoE up at compile time;
Captulo 9!. ,ource Kiscussion
NoE that youHve got a sa(e #uild environment and youHre a#le to include the modules into P&P (ilesA
itHs time to discuss hoE everything Eor"s;
Module ,tructure
All P&P modules (olloE a common structureC
&eader (ile inclusions >to include all re/uired macrosA AP. de(initionsA etc;?
5 declaration o( eFported (unctions >re/uired to declare the Iend (unction #loc"?
Declaration o( the Iend (unction #loc"
Declaration o( the Iend module #loc"
.mplementation o( get>module./
.mplementation o( all eFported (unctions
Header ;ile Inclusions
,he only header (ile you really have to include (or your modules is php.hA located in the P&P
directory; ,his (ile ma"es all macros and AP. de(initions re/uired to #uild neE modules availa#le to
your code;
T6p: .tHs good practice to create a separate header (ile (or your module that contains module2speci(ic
de(initions; ,his header (ile should contain all the (orEard de(initions (or eFported (unctions and
include php.h; .( you created your module using e8t_s>el you already have such a header (ile
prepared;
Keclaring E+ported ;unctions
,o declare (unctions that are to #e eFported >i;e;A made availa#le to P&P as neE native (unctions?A
Iend provides a set o( macros; A sample declaration loo"s li"e thisC
YE.L%S+.R*4?. 3 my%#unction 9;
^END_3UNCT0ON declares a neE 5 (unction that complies Eith IendHs internal AP.; ,his means
that the (unction is o( type o6# and accepts 0NTERN,4_3UNCT0ON_+,R,METERS >another
macro? as parameters; AdditionallyA it pre(iFes the (unction name Eith D69; ,he immediately
eFpanded version o( the a#ove de(initions Eould loo" li"e thisC
=oid 0i#%my%#unction 3 4.*E'.,O%S+.R*4?.%,',"E*E'& 9;
+Fpanding 0NTERN,4_3UNCT0ON_+,R,METERS results in the (olloEingC
=oid 0i#%my%#unction3 int ht
, 0=al W return%=alue
, 0=al W this%ptr
, int return%=alue%used
, 0end%executor%Elobals W executor%Elobals
9;
ince the interpreter and eFecutor core have #een separated (rom the main P&P pac"ageA a second
AP. de(ining macros and (unction sets has evolvedC the Iend AP.; As the Iend AP. noE handles
/uite a (eE o( the responsi#ilities that previously #elonged to P&PA a lot o( P&P (unctions have #een
reduced to macros aliasing to calls into the Iend AP.; ,he recommended practice is to use the Iend
AP. Eherever possi#leA as the old AP. is only preserved (or compati#ility reasons; For eFampleA the
types Dal and pal are identical; Dal is IendHs de(initionX pal is P&PHs de(inition >actuallyA pal is
an alias (or Dal noE?; As the macro 0NTERN,4_3UNCT0ON_+,R,METERS is a Iend macroA the
a#ove declaration contains Dal; Lhen Eriting codeA you should alEays use Dal to con(orm to the
neE Iend AP.;
,he parameter list o( this declaration is very importantX you should "eep these parameters in mind
>see ,a#la 4121 (or descriptions?;
Tabla 9!(!. bendUs Parameters to ;unctions Called from PHP
Parameter
Descriptio
n
ht
,he
num#er o(
arguments
passed to
the Iend
(unction;
%ou
should not
touch this
directlyA
#ut instead
use
I+NDZN@
MZARG
>? to o#tain
the value;
return_a
lue
,his
varia#le is
used to
pass any
return
values o(
your
(unction
#ac" to
P&P;
Access to
this
varia#le is
#est done
using the
prede(ined
macros;
For a
description
o( these
see #eloE;
th6s_ptr
@sing this
varia#leA
you can
gain access
to the
o#'ect in
Ehich your
(unction is
containedA
i( itHs used
Eithin an
o#'ect; @se
the
(unction
getThis./
to o#tain
this
pointer;
return_a
lue_use#
,his (lag
indicates
Ehether an
eventual
return
value (rom
this
(unction
Eill
actually #e
used #y the
calling
script; 0
indicates
that the
return
value is not
usedX 1
indicates
that the
caller
eFpects a
return
value;
+valuation
o( this (lag
can #e
done to
veri(y
correct
usage o(
the
(unction as
Eell as
speed
optimizatio
ns in case
returning a
value
re/uires
eFpensive
operations
>(or an
eFampleA
see hoE
array.c
ma"es use
o( this?;
e8ecutor_
Elo1als
,his
varia#le
points to
glo#al
settings o(
the Iend
engine;
%ouHll (ind
this use(ul
Ehen
creating
neE
varia#lesA
(or
eFample
>more
a#out this
later?; ,he
eFecutor
glo#als can
also #e
introduced
to your
(unction #y
using the
macro
TSRM4S_
3ETC!LM;
Keclaration of the bend ;unction 1locB
NoE that you have declared the (unctions to #e eFportedA you also have to introduce them to Iend;
.ntroducing the list o( (unctions is done #y using an array o( Den#_9unct6on_entr?; ,his array
consecutively contains all (unctions that are to #e made availa#le eFternallyA Eith the (unctionHs
name as it should appear in P&P and its name as de(ined in the 5 source; .nternallyA
Den#_9unct6on_entr? is de(ined as shoEn in +'emplo 4121;
E'emplo 9!(!. Internal declaration of 2end_function_entr).
typede# struct %0end%#unction%entry :
char W#name;
=oid 3Whandler934.*E'.,O%S+.R*4?.%,',"E*E'&9;
unsiEned char W#unc%arE%types;
; 0end%#unction%entry;
+ntry Description
9name
Denotes the
(unction name
as seen in P&P
>(or eFampleA
9openA
m?s@l_connectA
orA in our
eFampleA
96rst_mo#ule?;
han#le
r
Pointer to the 5
(unction
responsi#le (or
handling calls to
this (unction;
For eFampleA
see the standard
macro
0NTERN,4_3U
NCT0ON_+,R,
METERS
discussed
earlier;
9unc_a
rE_t?pe
s
AlloEs you to
mar" certain
parameters so
that theyHre
(orced to #e
passed #y
re(erence; %ou
usually should
set this to
N@LL;
.n the eFample a#oveA the declaration loo"s li"e thisC
0end%#unction%entry #irstmod%#unctions)/ >
:
YE.L%SE3#irst%module, .+OO9
:.+OO, .+OO, .+OO;
;;
%ou can see that the last entry in the list alEays has to #e GNU44C NU44C NU44H; ,his mar"er has
to #e set (or Iend to "noE Ehen the end o( the list o( eFported (unctions is reached;
Nota- %ou cannot use the prede(ined macros (or the end mar"erA as these Eould try to
re(er to a (unction named =N@LL=a
,he macro ^END_3E >short (or HIend Function +ntryH? simply eFpands to a structure entry in
Den#_9unct6on_entr?; Note that these macros introduce a special naming scheme to your (unctions 2
your 5 (unctions Eill #e pre(iFed Eith D69_A meaning that ^END_3EL96rst_mo#uleM Eill re(er to a 5
(unction 6if>first>module./; .( you Eant to miF macro usage Eith hand2coded entries >not a good
practice?A "eep this in mind;
,ipC 5ompilation errors that re(er to (unctions named 6if>L./ relate to (unctions de(ined Eith
^END_3E;
,a#la 4120 shoEs a list o( all the macros that you can use to de(ine (unctions;
Tabla 9!(*. Macros for Kefining ;unctions
Macro
Name
Description
^END_3
ELnameC
arE_t?pe
sM
De(ines a
(unction entry
o( the name
name in
Den#_9unct6on
_entr?;
Re/uires a
corresponding
5 (unction;
arE_t?pes
needs to #e
set to NU44;
,his (unction
uses
automatic 5
(unction name
generation #y
pre(iFing the
P&P (unction
name Eith
D69_; For
eFampleA
^END_3E
L*96rst_mo#ul
e*C NU44M
introduces a
(unction
first>module
./ to P&P and
lin"s it to the
5 (unction
6if>first>mod
ule./; @se in
con'unction
Eith
^END_3UN
CT0ON;
^END_N
,MED_3
E
Lphp_na
meC
nameC
arE_t?pe
sM
De(ines a
(unction that
Eill #e
availa#le to
P&P #y the
name
php_name
and lin"s it to
the
corresponding
5 (unction
name;
arE_t?pes
needs to #e
set to NU44;
@se this
(unction i(
you donHt
Eant the
automatic
name
pre(iFing
introduced #y
^END_3E;
@se in
con'unction
Eith
^END_N,M
ED_3UNCT0
ON;
^END_3
,40,S
LnameC
al6asC
arE_t?pe
sM
De(ines an
alias named
al6as (or
name;
arE_t?pes
needs to #e
set to NU44;
DoesnHt
re/uire a
corresponding
5 (unctionX
re(ers to the
alias target
instead;
+!+_3E
LnameC
arE_t?pe
sM
Old P&P AP.
Walent o(
^END_3E;
+!+_N,
MED_3E
Lrunt6me
_nameC
nameC
arE_t?pe
sM
Old P&P AP.
Walent o(
^END_N,M
ED_3E;
Note: %ou canHt use ^END_3E in con'unction Eith +!+_3UNCT0ONA or +!+_3E in con'unction
Eith ^END_3UNCT0ON; &oEeverA itHs per(ectly legal to miF ^END_3E and ^END_3UNCT0ON
Eith +!+_3E and +!+_3UNCT0ON Ehen staying Eith the same macro set (or each (unction to #e
declared; But miFing is not recommendedX insteadA youHre advised to use the ^END_/ macros only;
Keclaration of the bend Module 1locB
,his #loc" is stored in the structure Den#_mo#ule_entr? and contains all necessary in(ormation to
descri#e the contents o( this module to Iend; %ou can see the internal de(inition o( this module in
+'emplo 4120;
E'emplo 9!(*. Internal declaration of 2end_&odule_entr).
typede# struct %0end%module%entry 0end%module%entry;

struct %0end%module%entry :
unsiEned short si0e;
unsiEned int 0end%api;
unsiEned char 0end%debuE;
unsiEned char 0ts;
char Wname;
0end%#unction%entry W#unctions;
int 3Wmodule%startup%#unc934.4*%S+.R%,'-&9;
int 3Wmodule%shutdo8n%#unc93&H+*L?7.%S+.R%,'-&9;
int 3WreQuest%startup%#unc934.4*%S+.R%,'-&9;
int 3WreQuest%shutdo8n%#unc93&H+*L?7.%S+.R%,'-&9;
=oid 3Win#o%#unc93YE.L%"?L+OE%4.S?%S+.R%,'-&9;
char W=ersion;
) 'est o# the structure is not interestinE here /
;;
Entry Kescription
s6DeA
Den#_ap6A
Den#_#e1u
E and Dts
@sually (illed
Eith the
*ST,ND,RD_M
ODU4E_!E,D
ER*A Ehich (ills
these (our
mem#ers Eith
the size o( the
Ehole
zendZmoduleZen
tryA the
^END_MODU4
E_,+0_NOA
Ehether it is a
de#ug #uild or
normal #uild
>^END_DEAU-
? and i( I, is
ena#led
>US0N-_^TS?;
name
5ontains the
module name
>(or eFampleA
*36le 9unct6ons*A
*Soc>et
9unct6ons*A
*Cr?pt*A etc;?;
,his name Eill
shoE up in
phpinfo./A in the
section
=Additional
Modules;=
9unct6ons
Points to the
Iend (unction
#loc"A discussed
in the preceding
section;
mo#ule_st
artup_9un
c
,his (unction is
called once upon
module
initialization and
can #e used to do
one2time
initialization
steps >such as
initial memory
allocationA etc;?;
,o indicate a
(ailure during
initializationA
return 3,04UREX
otherEiseA
.n our eFampleA this structure is implemented as (olloEsC
0end%module%entry #irstmod%module%entry >
:
&*,.L,'L%"?L+OE%HE,LE',
"Sirst "odule",
#irstmod%#unctions,
.+OO, .+OO, .+OO, .+OO, .+OO,
.?%(E'&4?.%PE*,
&*,.L,'L%"?L+OE%'?E'*4E&,
;;
,his is #asically the easiest and most minimal set o( values you could ever use; ,he module name is
set to 36rst Mo#uleA then the (unction list is re(erencedA a(ter Ehich all startup and shutdoEn
(unctions are mar"ed as #eing unused;
For re(erence purposesA you can (ind a list o( the macros involved in declared startup and shutdoEn
(unctions in ,a#la 4127; ,hese are not used in our #asic eFample yetA #ut Eill #e demonstrated later
on; %ou should ma"e use o( these macros to declare your startup and shutdoEn (unctionsA as these
re/uire special arguments to #e passed >0N0T_3UNC_,R-S and S!UTDOIN_3UNC_,R-S?A
Ehich are automatically included into the (unction declaration Ehen using the prede(ined macros; .(
you declare your (unctions manually and the P&P developers decide that a change in the argument
list is necessaryA youHll have to change your module sources to remain compati#le;
Tabla 9!(7. Macros to Keclare ,tartup and ,hutdo3n ;unctions
Macro Description
^END_M0N0T
Lmo#uleM
Declares a
(unction (or
module startup;
,he generated
name Eill #e
Den#_m6n6t_$m
o#ule& >(or
eFampleA
Den#_m6n6t_96rst
_mo#ule?; @se
in con'unction
Eith
^END_M0N0T_
3UNCT0ON;
^END_MS!UT
DOINLmo#uleM
Declares a
(unction (or
module
shutdoEn; ,he
generated name
Eill #e
Den#_mshut#o7
n_$mo#ule&
>(or eFampleA
Den#_mshut#o7
n_96rst_mo#ule?;
@se in
con'unction Eith
^END_MS!UT
DOIN_3UNCT
0ON;
^END_R0N0T
Lmo#uleM
Declares a
(unction (or
re/uest startup;
,he generated
name Eill #e
Den#_r6n6t_$mo
#ule& >(or
eFampleA
Den#_r6n6t_96rst_
mo#ule?; @se in
con'unction Eith
^END_R0N0T_3
UNCT0ON;
^END_RS!UT
DOINLmo#uleM
Declares a
(unction (or
re/uest
shutdoEn; ,he
generated name
Eill #e
Den#_rshut#o7n
_$mo#ule& >(or
eFampleA
Den#_rshut#o7n
_96rst_mo#ule?;
@se in
con'unction Eith
^END_RS!UT
DOIN_3UNCT
0ON;
^END_M0N3O
Lmo#uleM
Declares a
(unction (or
printing module
in(ormationA
used Ehen
phpinfo./ is
called; ,he
generated name
Eill #e
Den#_6n9o_$mo
#ule& >(or
eFampleA
Den#_6n9o_96rst_
mo#ule?; @se in
con'unction Eith
^END_M0N3O_
3UNCT0ON;
Creation of get>module./
,his (unction is special to all dynamic loada#le modules; ,a"e a loo" at the creation via the
^END_-ET_MODU4E macro (irstC
Ui# R?"4OE%LO%S4'&*"?L
YE.L%-E*%"?L+OE3#irstmod9
Uendi#
,he (unction implementation is surrounded #y a conditional compilation statement; ,his is needed
since the (unction get>module./ is only re/uired i( your module is #uilt as a dynamic eFtension; By
speci(ying a de(inition o( COM+04E_D4_30RSTMOD in the compiler command >see a#ove (or a
discussion o( the compilation instructions re/uired to #uild a dynamic eFtension?A you can instruct
your module Ehether you intend to #uild it as a dynamic eFtension or as a #uilt2in module; .( you
Eant a #uilt2in moduleA the implementation o( get>module./ is simply le(t out;
get>module./ is called #y Iend at load time o( the module; %ou can thin" o( it as #eing invo"ed #y
the dl./ call in your script; .ts purpose is to pass the module in(ormation #loc" #ac" to Iend in order
to in(orm the engine a#out the module contents;
.( you donHt implement a get>module./ (unction in your dynamic loada#le moduleA Iend Eill
compliment you Eith an error message Ehen trying to access it;
Implementation of All E+ported ;unctions
.mplementing the eFported (unctions is the (inal step; ,he eFample (unction in 96rst_mo#ule loo"s
li"e thisC
YE.L%S+.R*4?.3#irst%module9
:
lonE parameter;
i# 30end%parse%parameters3YE.L%.+"%,'-&39 *&'"O&%RR, "l", &parameter9 >> S,4O+'E9 :
return;
;
'E*+'.%O?.-3parameter9;
;
,he (unction declaration is done using ^END_3UNCT0ONA Ehich corresponds to ^END_3E in the
(unction entry ta#le >discussed earlier?;
A(ter the declarationA code (or chec"ing and retrieving the (unctionHs argumentsA argument
conversionA and return value generation (olloEs >more on this later?;
,ummary
,hatHs itA #asically 2 thereHs nothing more to implementing P&P modules; Built2in modules are
structured similarly to dynamic modulesA soA e/uipped Eith the in(ormation presented in the
previous sectionsA youHll #e a#le to (ight the odds Ehen encountering P&P module source (iles;
NoEA in the (olloEing sectionsA read on a#out hoE to ma"e use o( P&PHs internals to #uild poEer(ul
eFtensions;
Captulo 9*. Accepting Arguments
One o( the most important issues (or language eFtensions is accepting and dealing Eith data passed
via arguments; Most eFtensions are #uilt to deal Eith speci(ic input data >or re/uire parameters to
per(orm their speci(ic actions?A and (unction arguments are the only real Eay to eFchange data
#etEeen the P&P level and the 5 level; O( courseA thereHs also the possi#ility o( eFchanging data
using prede(ined glo#al values >Ehich is also discussed later?A #ut this should #e avoided #y all
meansA as itHs eFtremely #ad practice;
P&P doesnHt ma"e use o( any (ormal (unction declarationsX this is Ehy call syntaF is alEays
completely dynamic and never chec"ed (or errors; 5hec"ing (or correct call syntaF is le(t to the user
code; For eFampleA itHs possi#le to call a (unction using only one argument at one time and (our
arguments the neFt time 2 #oth invocations are syntactically a#solutely correct;
Ketermining the Number of Arguments
ince P&P doesnHt have (ormal (unction de(initions Eith support (or call syntaF chec"ingA and since
P&P (eatures varia#le argumentsA sometimes you need to (ind out Eith hoE many arguments your
(unction has #een called; %ou can use the ^END_NUM_,R-S macro in this case; .n previous
versions o( P&PA this macro retrieved the num#er o( arguments Eith Ehich the (unction has #een
called #ased on the (unctionHs hash ta#le entryA htA Ehich is passed in the
0NTERN,4_3UNCT0ON_+,R,METERS list; As ht itsel( noE contains the num#er o( arguments
that have #een passed to the (unctionA ^END_NUM_,R-S has #een stripped doEn to a dummy
macro >see its de(inition in 0end%,4.h?; But itHs still good practice to use itA to remain
compati#le Eith (uture changes in the call inter(ace; Note: ,he old P&P Walent o( this macro is
,R-_COUNT;
,he (olloEing code chec"s (or the correct num#er o( argumentsC
i#3YE.L%.+"%,'-&39 !> C9 7'?.-%,',"%R?+.*;
.( the (unction is not called Eith tEo argumentsA it eFits Eith an error message; ,he code snippet
a#ove ma"es use o( the tool macro IRON-_+,R,M_COUNTA Ehich can #e used to generate a
standard error message >see Figura 4021?;
;igura 9*(!. 3/O45_P$/$6_CO+4 in action.
,his macro prints a de(ault error message and then returns to the caller; .ts de(inition can also #e
(ound in 0end%,4.h and loo"s li"e thisC
YE.L%,4 =oid 8ronE%param%count3=oid9;
Ude#ine 7'?.-%,',"%R?+.* : 8ronE%param%count39; return; ;
As you can seeA it calls an internal (unction named 3rong>param>count./ thatHs responsi#le (or
printing the Earning; For details on generating customized error messagesA see the later section
=Printing .n(ormation;=
Metrie5ing Arguments
Ne3 parameter parsing API- ,his chapter documents the neE Iend parameter parsing
AP. introduced #y Andrei Imievs"i; .t Eas introduced in the development stage
#etEeen P&P 8;3;K and 8;1;3 ;
Parsing parameters is a very common operation and it may get a #it tedious; .t Eould also #e nice to
have standardized error chec"ing and error messages; ince P&P 8;1;3A there is a Eay to do 'ust that
#y using the neE parameter parsing AP.; .t greatly simpli(ies the process o( receiving parameteresA
#ut it has a draE#ac" in that it canHt #e used (or (unctions that eFpect varia#le num#er o( parameters;
But since the vast ma'ority o( (unctions do not (all into those categoriesA this parsing AP. is
recommended as the neE standard Eay;
,he prototype (or parameter parsing (unction loo"s li"e thisC
int 0end%parse%parameters3int num%arEs *&'"O&%LR, char Wtype%spec, ...9;
,he (irst argument to this (unction is supposed to #e the num#er o( actual parameters passed to your
(unctionA so ^END_NUM_,R-SLM can #e used (or that; ,he second parameter should alEays #e
TSRM4S_CC macro; ,he third argument is a string that speci(ies the num#er and types o(
arguments your (unction is eFpectingA similar to hoE print( (ormat string speci(ies the num#er and
(ormat o( the output values it should operate on; And (inally the rest o( the arguments are pointers to
varia#les Ehich should receive the values (rom the parameters;
6end>parse>parameters./ also per(orms type conversions Ehenever possi#leA so that you alEays
receive the data in the (ormat you as"ed (or; Any type o( scalar can #e converted to another oneA #ut
conversions #etEeen compleF types >arraysA o#'ectsA and resources? and scalar types are not
alloEed;
.( the parameters could #e o#tained success(ully and there Eere no errors during type conversionA
the (unction Eill return SUCCESSA otherEise it Eill return 3,04URE; ,he (unction Eill output
in(ormative error messagesA i( the num#er o( received parameters does not match the re/uested
num#erA or i( type conversion could not #e per(ormed;
&ere are some sample error messagesC
7arninE F ini%Eet%all39 reQuires at most 6 parameter, C Ei=en
7arninE F 8ddx%deseriali0e39 expects parameter 6 to be strinE, array Ei=en
O( course each error message is accompanied #y the (ilename and line num#er on Ehich it occurs;
&ere is the (ull list o( type speci(iersC
l = long
# = dou#le
s = string >Eith possi#le null #ytes? and its length
1 = #oolean
r = resourceA stored in Dal/
a = arrayA stored in Dal/
o = o#'ect >o( any class?A stored in Dal/
O = o#'ect >o( class speci(ied #y class entry?A stored in Dal/
D = the actual Dal/
,he (olloEing characters also have a meaning in the speci(ier stringC
V = indicates that the remaining parameters are optional; ,he storage varia#les corresponding
to these parameters should #e initialized to de(ault values #y the eFtensionA since they Eill
not #e touched #y the parsing (unction i( the parameters are not passed;
/ = the parsing (unction Eill call ,EPAMATE>bCA:>I;>NJT>ME;./ on the parameter it
(olloEsA to provide a copy o( the parameterA unless itHs a re(erence;
_ = the parameter it (olloEs can #e o( speci(ied type or NU44 >only applies to aA oA OA rA and
z?; .( NU44 value is passed #y the userA the storage pointer Eill #e set to NU44;
,he #est Eay to illustrate the usage o( this (unction is through eFamplesC
/W -ets a lonE, a strinE and its lenEth, and a 0=al. W/
lonE l;
char Ws;
int s%len;
0=al Wparam;
i# 30end%parse%parameters3YE.L%.+"%,'-&39 *&'"O&%RR,
"ls0", &l, &s, &s%len, &param9 >> S,4O+'E9 :
return;
;
/W -ets an object o# class speci#ied by my%ce, and an optional double. W/
0=al Wobj;
double d > 2.5;
i# 30end%parse%parameters3YE.L%.+"%,'-&39 *&'"O&%RR,
"?Td", &obj, my%ce, &d9 >> S,4O+'E9 :
return;
;
/W -ets an object or null, and an array.
4# null is passed #or object, obj 8ill be set to .+OO. W/
0=al Wobj;
0=al Warr;
i# 30end%parse%parameters3YE.L%.+"%,'-&39 *&'"O&%RR, "?!a", &obj, &arr9 >> S,4O+'E9 :
return;
;
/W -ets a separated array. W/
0=al Warr;
i# 30end%parse%parameters3YE.L%.+"%,'-&39 *&'"O&%RR, "a/", &arr9 >> S,4O+'E9 :
return;
;
/W -et only the #irst three parameters 3use#ul #or =ararEs #unctions9. W/
0=al W0;
0end%bool b;
0=al Wr;
i# 30end%parse%parameters3<, "0br!", &0, &b, &r9 >> S,4O+'E9 :
return;
;
Note that in the last eFample Ee pass 7 (or the num#er o( received parametersA instead o(
bENK>N)M>AMF,./; Lhat this lets us do is receive the least num#er o( parameters i( our
(unction eFpects a varia#le num#er o( them; O( courseA i( you Eant to operate on the rest o( the
parametersA you Eill have to use 6end>get>parameters>array>e+./ to o#tain them;
,he parsing (unction has an eFtended version that alloEs (or an additional (lags argument that
controls its actions;
int 0end%parse%parameters%ex3int #laEs, int num%arEs *&'"O&%LR, char Wtype%spec, ...9;
,he only (lag you can pass currently is ^END_+,RSE_+,R,MS_5U0ETA Ehich instructs the
(unction to not output any error messages during its operation; ,his is use(ul (or (unctions that
eFpect several sets o( completely di((erent argumentsA #ut you Eill have to output your oEn error
messages;
For eFampleA here is hoE you Eould get either a set o( three longs or a stringC
lonE l6, lC, l<;
char Ws;
i# 30end%parse%parameters%ex3YE.L%,'&E%,',"&%N+4E*,
YE.L%.+"%,'-&39 *&'"O&%RR,
"lll", &l6, &lC, &l<9 >> &+RRE&&9 :
/W manipulate lonEs W/
; else i# 30end%parse%parameters%ex3YE.L%,'&E%,',"&%N+4E*,
YE.L%.+"%,'-&39, "s", &s, &s%len9 >> &+RRE&&9 :
/W manipulate strinE W/
; else :
php%error3E%7,'.4.-, "\s39 taIes either three lonE =alues or a strinE as arEument",
Eet%acti=e%#unction%name3*&'"O&%R99;
return;
;
Lith all the a#ovementioned Eays o( receiving (unction parameters you should have a good handle
on this process; For even more eFampleA loo" through the source code (or eFtensions that are
shipped Eith P&P 2 they illustrate every conceiva#le situation;
Jld 3ay of retrie5ing arguments .deprecated/
Keprecated parameter parsing API- ,his AP. is deprecated and superseded #y the
neE I+ND parameter parsing AP.;
A(ter having chec"ed the num#er o( argumentsA you need to get access to the arguments themselves;
,his is done Eith the help o( 6end>get>parameters>e+./C
0=al WWparameter;
i#30end%Eet%parameters%ex36, &parameter9 !> &+RRE&&9
7'?.-%,',"%R?+.*;
All arguments are stored in a Dal containerA Ehich needs to #e pointed to t76ce; ,he snippet a#ove
tries to retrieve one argument and ma"e it availa#le to us via the parameter pointer;
6end>get>parameters>e+./ accepts at least tEo arguments; ,he (irst argument is the num#er o(
arguments to retrieve >Ehich should match the num#er o( arguments Eith Ehich the (unction has
#een calledX this is Ehy itHs important to chec" (or correct call syntaF?; ,he second argument >and all
(olloEing arguments? are pointers to pointers to pointers to Dals; >5on(usingA isnHt itN? All these
pointers are re/uired #ecause Iend Eor"s internally Eith //DalX to ad'ust a local //Dal in our
(unctionA6end>get>parameters>e+./ re/uires a pointer to it;
,he return value o( 6end>get>parameters>e+./ can either #e SUCCESS or 3,04UREA indicating
>unsurprisingly? success or (ailure o( the argument processing; A (ailure is most li"ely related to an
incorrect num#er o( arguments #eing speci(iedA in Ehich case you should eFit Eith
IRON-_+,R,M_COUNT;
,o retrieve more than one argumentA you can use a similar snippetC
0=al WWparam6, WWparamC, WWparam<, WWparam1;

i#30end%Eet%parameters%ex31, &param6, &paramC, &param<, &param19 !> &+RRE&&9
7'?.-%,',"%R?+.*;
6end>get>parameters>e+./ only chec"s Ehether youHre trying to retrieve too many parameters; .(
the (unction is called Eith (ive argumentsA #ut youHre only retrieving three o( them Eith
6end>get>parameters>e+./A you EonHt get an error #ut Eill get the (irst three parameters instead;
u#se/uent calls o( 6end>get>parameters>e+./ EonHt retrieve the remaining argumentsA #ut Eill
get the same arguments again;
Kealing 3ith a Cariable Number of ArgumentsAJptional
Parameters
.( your (unction is meant to accept a varia#le num#er o( argumentsA the snippets 'ust descri#ed are
sometimes su#optimal solutions; %ou have to create a line calling 6end>get>parameters>e+./ (or
every possi#le num#er o( argumentsA Ehich is o(ten unsatis(ying;
For this caseA you can use the (unction 6end>get>parameters>array>e+./A Ehich accepts the
num#er o( parameters to retrieve and an array in Ehich to store themC
0=al WWparameter%array)1/;
/W Eet the number o# arEuments W/
arEument%count > YE.L%.+"%,'-&39;
/W see i# it satis#ies our minimal reQuest 3C arEuments9 W/
/W and our maximal acceptance 31 arEuments9 W/
i#3arEument%count < C TT arEument%count > 59
7'?.-%,',"%R?+.*;
/W arEument count is correct, no8 retrie=e arEuments W/
i#30end%Eet%parameters%array%ex3arEument%count, parameter%array9 !> &+RRE&&9
7'?.-%,',"%R?+.*;
FirstA the num#er o( arguments is chec"ed to ma"e sure that itHs in the accepted range; A(ter thatA
6end>get>parameters>array>e+./ is used to (ill parameter_arra? Eith valid pointers to the
argument values;
A very clever implementation o( this can #e (ound in the code handling P&PHs fsocBopen./ located
in ext/standard/#socI.cA as shoEn in +'emplo 4021; DonHt Eorry i( you donHt "noE all the
(unctions used in this source yetX EeHll get to them shortly;
E'emplo 9*(!. PHPUs implementation of 5ariable arguments in fsocBopen./.
p=al WWarEs)5/;
int WsocI>emalloc3si0eo#3int99;
int WsocIp;
int arE%count>,'-%R?+.*3ht9;
int socIetd > F6;
unsiEned char udp > 2;
struct time=al timeout > : G2, 2 ;;
unsiEned short portno;
unsiEned lonE con=;
char WIey > .+OO;
SO&%SE*RH39;
i# 3arE%count > 5 TT arE%count < C TT 0end%Eet%parameters%array%ex3arE%count,arEs9>>S,4O+'E9 :
RO?&E%&?R]369;
7'?.-%,',"%R?+.*;
;
s8itch3arE%count9 :
case 5@
con=ert%to%double%ex3arEs)1/9;
con= > 3unsiEned lonE9 3Y%L(,O%3arEs)1/9 W 6222222.29;
timeout.t=%sec > con= / 6222222;
timeout.t=%usec > con= \ 6222222;
/W #allFthrouEh W/
case 1@
i# 3!Y(,O%4&%'ES3WarEs)</99 :
php%error3E%7,'.4.-,"error strinE arEument to #socIopen not passed by re#erence"9;
;
p=al%copy%constructor3WarEs)</9;
Y(,O%E"*P%&*'4.-3WarEs)</9;
/W #allFthrouEh W/
case <@
i# 3!Y(,O%4&%'ES3WarEs)C/99 :
php%error3E%7,'.4.-,"error arEument to #socIopen not passed by re#erence"9;
return;
;
Y(,O%O?.-3WarEs)C/, 29;
breaI;
;
con=ert%to%strinE%ex3arEs)2/9;
con=ert%to%lonE%ex3arEs)6/9;
portno > 3unsiEned short9 Y%O(,O%3arEs)6/9;
Iey > emalloc3Y%&*'OE.%3arEs)2/9 [ 629;
fsocBopen./ accepts tEoA threeA (ourA or (ive parameters; A(ter the o#ligatory varia#le declarationsA
the (unction chec"s (or the correct range o( arguments; ,hen it uses a (all2through mechanism in a
s76tchLM statement to deal Eith all arguments; ,he s76tchLM statement starts Eith the maFimum
num#er o( arguments #eing passed >(ive?; A(ter thatA it automatically processes the case o( (our
arguments #eing passedA then threeA #y omitting the otherEise o#ligatory 1rea> "eyEord in all
stages; A(ter having processed the last caseA it eFits the s76tchLM statement and does the minimal
argument processing needed i( the (unction is invo"ed Eith only tEo arguments;
,his multiple2stage type o( processingA similar to a stairEayA alloEs convenient processing o( a
varia#le num#er o( arguments;
Accessing Arguments
,o access argumentsA itHs necessary (or each argument to have a clearly de(ined type; AgainA P&PHs
eFtremely dynamic nature introduces some /uir"s; Because P&P never does any "ind o( type
chec"ingA itHs possi#le (or a caller to pass any "ind o( data to your (unctionsA Ehether you Eant it or
not; .( you eFpect an integerA (or eFampleA the caller might pass an arrayA and vice versa 2 P&P
simply EonHt notice;
,o Eor" around thisA you have to use a set o( AP. (unctions to (orce a type conversion on every
argument thatHs #eing passed >see ,a#la 4021?;
Note: All conversion (unctions eFpect a //Dal as parameter;
Tabla 9*(!. Argument Con5ersion ;unctions
Function Description
con5ert>
to>boole
an>e+./
Forces
conversion
to a Boolean
type;
Boolean
values
remain
untouched;
LongsA
dou#lesA and
strings
containing 0
as Eell as
N@LL
values Eill
result in
Boolean 0
>FAL+?;
Arrays and
o#'ects are
converted
#ased on the
num#er o(
entries or
propertiesA
respectivelyA
that they
have; +mpty
arrays and
o#'ects are
converted to
FAL+X
otherEiseA to
,R@+; All
other values
result in a
Boolean 1
>,R@+?;
con5ert>
to>long>
e+./
Forces
conversion
to a longA the
de(ault
integer type;
N@LL
valuesA
BooleansA
resourcesA
and o(
course longs
remain
untouched;
Dou#les are
truncated;
trings
containing
an integer
are
converted to
their
correspondin
g numeric
representatio
nA otherEise
resulting in
0; Arrays
and o#'ects
are
converted to
0 i( emptyA 1
otherEise;
con5ert>
to>doubl
e>e+./
Forces
conversion
to a dou#leA
the de(ault
(loating2
point type;
N@LL
valuesA
BooleansA
resourcesA
longsA and o(
course
dou#les
remain
untouched;
trings
containing a
num#er are
converted to
their
correspondin
g numeric
representatio
nA otherEise
resulting in
0.0; Arrays
and o#'ects
are
converted to
0.0 i( emptyA
1.0
otherEise;
con5ert>
to>string
>e+./
Forces
conversion
to a string;
trings
remain
untouched;
N@LL
values are
converted to
an empty
string;
Booleans
containing
,R@+ are
converted to
*1*A
otherEise
resulting in
an empty
string;
Longs and
dou#les are
converted to
their
correspondin
g string
representatio
n; Arrays are
converted to
the string
*,rra?* and
o#'ects to
the string
*O1Uect*;
conert_t
o_arra?_
e8LalueM
Forces
conversion
to an array;
Arrays
remain
untouched;
O#'ects are
converted to
an array #y
assigning all
their
properties to
the array
ta#le; All
property
names are
used as "eysA
property
contents as
values;
N@LL
values are
converted to
an empty
array; All
other values
are
converted to
an array that
contains the
speci(ic
source value
in the
element Eith
the "ey 0;
conert_t
o_o1Uect
_e8
LalueM
Forces
conversion
to an o#'ect;
O#'ects
remain
untouched;
N@LL
values are
converted to
an empty
o#'ect;
Arrays are
converted to
o#'ects #y
introducing
their "eys as
properties
into the
o#'ects and
their values
as
correspondin
g property
contents in
the o#'ect;
All other
types result
in an o#'ect
Eith the
property
scalar A
having the
correspondin
g source
value as
content;
conert_t
o_null_e
8LalueM
Forces the
type to
#ecome a
N@LL
valueA
meaning
empty;
Nota- %ou can (ind a demonstration o( the #ehavior in cross%con=ersion.php on
the accompanying 5D2ROM; Figura 4020 shoEs the output;
;igura 9*(*. Cross(con5ersion beha5ior of PHP.
@sing these (unctions on your arguments Eill ensure type sa(ety (or all data thatHs passed to you; .(
the supplied type doesnHt match the re/uired typeA P&P (orces dummy contents on the resulting
value >empty stringsA arraysA or o#'ectsA 0 (or numeric valuesA 3,4SE (or Booleans? to ensure a
de(ined state;
FolloEing is a /uote (rom the sample module discussed previouslyA Ehich ma"es use o( the
conversion (unctionsC
0=al WWparameter;
i#33YE.L%.+"%,'-&39 !> 69 TT 30end%Eet%parameters%ex36, &parameter9 !> &+RRE&&99
:
7'?.-%,',"%R?+.*;
;
con=ert%to%lonE%ex3parameter9;
'E*+'.%O?.-3Y%O(,O%3parameter99;
A(ter retrieving the parameter pointerA the parameter value is converted to a long >an integer?A Ehich
also (orms the return value o( this (unction; @nderstanding access to the contents o( the value
re/uires a short discussion o( the Dal typeA Ehose de(inition is shoEn in +'emplo 4020;
E'emplo 9*(*. PHPAbend 2%al type definition.
typede# p=al 0=al;

typede# struct %0=al%struct 0=al;
typede# union %0=alue%=alue :
lonE l=al; /W lonE =alue W/
double d=al; /W double =alue W/
struct :
char W=al;
int len;
; str;
Hash*able Wht; /W hash table =alue W/
struct :
0end%class%entry Wce;
Hash*able Wproperties;
; obj;
; 0=alue%=alue;
struct %0=al%struct :
/W (ariable in#ormation W/
0=alue%=alue =alue; /W =alue W/
unsiEned char type; /W acti=e type W/
unsiEned char is%re#;
short re#count;
;;
ActuallyA pal >de(ined in php.h? is only an alias o( Dal >de(ined in 0end.h?A Ehich in turn re(ers
to _Dal_struct; ,his is a most interesting structure; _Dal_struct is the =master= structureA containing
the value structureA typeA and re(erence in(ormation; ,he su#structure Dalue_alue is a union that
contains the varia#leHs contents; Depending on the varia#leHs typeA youHll have to access di((erent
mem#ers o( this union; For a description o( #oth structuresA see ,a#la 4020A ,a#la 4027 and ,a#la
4028;
Tabla 9*(*. bend 2%al ,tructure
+ntry
Descriptio
n
alue
@nion
containing
this
varia#leHs
contents;
ee ,a#la
4027 (or a
description
;
t?pe
5ontains
this
varia#leHs
type; For a
list o(
availa#le
typesA see
,a#la 4028;
6s_re9
3 means
that this
varia#le is
not a
re(erenceX
1 means
that this
varia#le is
a re(erence
to another
varia#le;
re9count
,he
num#er o(
re(erences
that eFist
(or this
varia#le;
For every
neE
re(erence
to the
value
stored in
this
varia#leA
this
counter is
increased
#y 1; For
every lost
re(erenceA
this
counter is
decreased
#y 1; Lhen
the
re(erence
counter
reaches 3A
no
re(erences
eFist to
this value
anymoreA
Ehich
causes
automatic
(reeing o(
the value;
Tabla 9*(7. bend 2%alue_%alue ,tructure
+ntr
y
Description
lal
@se this
property i( the
varia#le is o(
the type
0S_4ON-A
0S_AOO4E,
NA or
0S_RESOURC
E;
#al
@se this
property i( the
varia#le is o(
the type
0S_DOUA4E;
str
,his structure
can #e used to
access
varia#les o(
the type
0S_STR0N-;
,he mem#er
len contains
the string
lengthX the
mem#er al
points to the
string itsel(;
Iend uses 5
stringsX thusA
the string
length
contains a
trailing 0800;
ht
,his entry
points to the
varia#leHs hash
ta#le entry i(
the varia#le is
an array;
o1U
@se this
property i( the
varia#le is o(
the type
0S_OAbECT;
Tabla 9*(8. bend Cariable Type Constants
5onstant
Descriptio
n
0S_NU44
Denotes a
N@LL
>empty?
value;
0S_4ON-
A long
>integer?
value;
0S_DOUA4E
A dou#le
>(loating
point?
value;
0S_STR0N- A string;
0S_,RR,B
Denotes an
array;
0S_OAbECT An o#'ect;
0S_AOO4
A Boolean
value;
0S_RESOUR
CE
A resource
>(or a
discussion
o(
resourcesA
see the
appropriate
section
#eloE?;
0S_CONST,
NT
A constant
>de(ined?
value;
,o access a long you access Dal.alue.lalA to access a dou#le you use Dal.alue.#alA and so on;
Because all values are stored in a unionA trying to access data Eith incorrect union mem#ers results
in meaningless output;
Accessing arrays and o#'ects is a #it more complicated and is discussed later;
Kealing 3ith Arguments Passed by Meference
.( your (unction accepts arguments passed #y re(erence that you intend to modi(yA you need to ta"e
some precautions;
Lhat Ee didnHt say yet is that under the circumstances presented so (arA you donHt have Erite access
to any Dal containers designating (unction parameters that have #een passed to you; O( courseA you
can change any Dal containers that you created Eithin your (unctionA #ut you mustnHt change any
Dals that re(er to Iend2internal dataa
LeHve only discussed the so2called L>e+./ AP. so (ar; %ou may have noticed that the AP. (unctions
EeHve used are called 6end>get>parameters>e+./ instead o( 6end>get>parameters./A
con5ert>to>long>e+./ instead o( con5ert>to>long./A etc; ,he L>e+./ (unctions (orm the so2called
neE =eFtended= Iend AP.; ,hey give a minor speed increase over the old AP.A #ut as a tradeo(( are
only meant (or providing read2only access;
Because Iend Eor"s internally Eith re(erencesA di((erent varia#les may re(erence the same value;
Lrite access to a Dal container re/uires this container to contain an isolated valueA meaning a value
thatHs not re(erenced #y any other containers; .( a Dal container Eere re(erenced #y other containers
and you changed the re(erenced DalA you Eould automatically change the contents o( the other
containers re(erencing this Dal >#ecause theyHd simply point to the changed value and thus change
their oEn value as Eell?;
6end>get>parameters>e+./ doesnHt care a#out this situationA #ut simply returns a pointer to the
desired Dal containersA Ehether they consist o( re(erences or not; .ts corresponding (unction in the
traditional AP.A 6end>get>parameters./A immediately chec"s (or re(erenced values; .( it (inds a
re(erenceA it creates a neEA isolated Dal containerX copies the re(erenced data into this neEly
allocated spaceX and then returns a pointer to the neEA isolated value;
,his action is called Dal separat6on >or pval separation?; Because the L>e+./ AP. doesnHt per(orm
zval separationA itHs considera#ly (asterA Ehile at the same time disa#ling Erite access;
,o change parametersA hoEeverA Erite access is re/uired; Iend deals Eith this situation in a special
EayC Lhenever a parameter to a (unction is passed #y re(erenceA it per(orms automatic zval
separation; ,his means that Ehenever youHre calling a (unction li"e this in P&PA Iend Eill
automatically ensure that 'parameter is #eing passed as an isolated valueA rendering it to a Erite2
sa(e stateC
my%#unction3&$parameter9;
But this 6s not the case Eith regular parametersa All other parameters that are not passed #y
re(erence are in a read2only state;
,his re/uires you to ma"e sure that youHre really Eor"ing Eith a re(erence 2 otherEise you might
produce unEanted results; ,o chec" (or a parameter #eing passed #y re(erenceA you can use the
macro +^(,4_0S_RE3; ,his macro accepts a Dal/ to chec" i( it is a re(erence or not; +Famples are
given in in +'emplo 4027;
E'emplo 9*(7. Testing for referenced parameter passing.
0=al Wparameter;
i# 30end%parse%parameters3YE.L%.+"%,'-&39 *&'"O&%RR, "0", &parameter9 >> S,4O+'E9
return;
/W checI #or parameter beinE passed by re#erence W/
i# 3!Y(,O%4&%'ES3Wparameter99 :
:
0end%error3E%7,'.4.-, "arameter 8asnMt passed by re#erence"9;
'E*+'.%.+OO39;
;
/W maIe chanEes to the parameter W/
Y(,O%O?.-3Wparameter, 629;
Assuring 2rite ,afety for Jther Parameters
%ou might run into a situation in Ehich you need Erite access to a parameter thatHs retrieved Eith
6end>get>parameters>e+./ #ut not passed #y re(erence; For this caseA you can use the macro
SE+,R,TE_^(,4A Ehich does a zval separation on the provided container; ,he neEly generated
Dal is detached (rom internal data and has only a local scopeA meaning that it can #e changed or
destroyed Eithout implying glo#al changes in the script conteFtC
0=al WWparameter;

/W retrie=e parameter W/
0end%Eet%parameters%ex36, &parameter9;
/W at this staEe, <parameter> still is connected W/
/W to YendMs internal data bu##ers W/
/W maIe <parameter> 8riteFsa#e W/
&E,',*E%Y(,O3parameter9;
/W no8 8e can sa#ely modi#y <parameter> W/
/W 8ithout implyinE Elobal chanEes W/
SE+,R,TE_^(,4 uses emalloc./ to allocate the neE Dal containerA Ehich means that even i( you
donHt deallocate this memory yoursel(A it Eill #e destroyed automatically upon script termination;
&oEeverA doing a lot o( calls to this macro Eithout (reeing the resulting containers Eill clutter up
your RAM;
Note: As you can easily Eor" around the lac" o( Erite access in the =traditional= AP. >Eith
6end>get>parameters./ and so on?A this AP. seems to #e o#soleteA and is not discussed (urther in
this chapter;
Captulo 97. Creating Cariables
Lhen eFchanging data (rom your oEn eFtensions Eith P&P scriptsA one o( the most important
issues is the creation o( varia#les; ,his section shoEs you hoE to deal Eith the varia#le types that
P&P supports;
J5er5ie3
,o create neE varia#les that can #e seen =(rom the outside= #y the eFecuting scriptA you need to
allocate a neE Dal containerA (ill this container Eith meaning(ul valuesA and then introduce it to
IendHs internal sym#ol ta#le; ,his #asic process is common to all varia#le creationsC
0=al Wne8%=ariable;
/W allocate and initiali0e ne8 container W/
",]E%&*L%Y(,O3ne8%=ariable9;
/W set type and =ariable contents here, see the #ollo8inE sections W/
/W introduce this =ariable by the name "ne8%=ariable%name" into the symbol table W/
YE.L%&E*%&P"Z?O3E-3acti=e%symbol%table9, "ne8%=ariable%name", ne8%=ariable9;
/W the =ariable is no8 accessible to the script by usinE $ne8%=ariable%name W/
,he macro M,2E_STD_^(,4 allocates a neE Dal container using ,44OC_^(,4 and initializes it
using 0N0T_^(,4; As implemented in Iend at the time o( this EritingA 6n6t6al6D6nE means setting the
re(erence count to 1 and clearing the 6s_re9 (lagA #ut this process could #e eFtended later 2 this is
Ehy itHs a good idea to "eep using M,2E_STD_^(,4 instead o( only using ,44OC_^(,4; .( you
Eant to optimize (or speed >and you donHt have to eFplicitly initialize the Dal container here?A you
can use ,44OC_^(,4A #ut this isnHt recommended #ecause it doesnHt ensure data integrity;
^END_SET_SBMAO4 ta"es care o( introducing the neE varia#le to IendHs sym#ol ta#le; ,his
macro chec"s Ehether the value already eFists in the sym#ol ta#le and converts the neE sym#ol to a
re(erence i( so >Eith automatic deallocation o( the old Dal container?; ,his is the pre(erred method
i( speed is not a crucial issue and youHd li"e to "eep memory usage loE;
Note that ^END_SET_SBMAO4 ma"es use o( the Iend eFecutor glo#als via the macro E-; By
speci(ying E-Lact6e_s?m1ol_ta1leMA you get access to the currently active sym#ol ta#leA dealing
Eith the activeA local scope; ,he local scope may di((er depending on Ehether the (unction Eas
invo"ed (rom Eithin a (unction;
.( you need to optimize (or speed and donHt care a#out optimal memory usageA you can omit the
chec" (or an eFisting varia#le Eith the same value and instead (orce insertion into the sym#ol ta#le
#y using 6end>hash>update./C
0=al Wne8%=ariable;
/W allocate and initiali0e ne8 container W/
",]E%&*L%Y(,O3ne8%=ariable9;
/W set type and =ariable contents here, see the #ollo8inE sections W/
/W introduce this =ariable by the name "ne8%=ariable%name" into the symbol table W/
0end%hash%update3
E-3acti=e%symbol%table9,
"ne8%=ariable%name",
strlen3"ne8%=ariable%name"9 [ 6,
&ne8%=ariable,
si0eo#30=al W9,
.+OO
9;
,his is actually the standard method used in most modules;
,he varia#les generated Eith the snippet a#ove Eill alEays #e o( local scopeA so they reside in the
conteFt in Ehich the (unction has #een called; ,o create neE varia#les in the glo#al scopeA use the
same method #ut re(er to another sym#ol ta#leC
0=al Wne8%=ariable;

// allocate and initiali0e ne8 container
",]E%&*L%Y(,O3ne8%=ariable9;
//
// set type and =ariable contents here
//
// introduce this =ariable by the name "ne8%=ariable%name" into the Elobal symbol table
YE.L%&E*%&P"Z?O3&E-3symbol%table9, "ne8%=ariable%name", ne8%=ariable9;
,he macro ^END_SET_SBMAO4 is noE #eing called Eith a re(erence to the mainA glo#al sym#ol
ta#le #y re(erring E-Ls?m1ol_ta1leM;
Note: ,he act6e_s?m1ol_ta1le varia#le is a pointerA #ut s?m1ol_ta1le is not; ,his is Ehy you have
to use E-Lact6e_s?m1ol_ta1leM and ]E-Ls?m1ol_ta1leM as parameters to ^END_SET_SBMAO4 2 it
re/uires a pointer;
imilarlyA to get a more e((icient versionA you can hardcode the sym#ol ta#le updateC
0=al Wne8%=ariable;
// allocate and initiali0e ne8 container
",]E%&*L%Y(,O3ne8%=ariable9;
//
// set type and =ariable contents here
//
// introduce this =ariable by the name "ne8%=ariable%name" into the Elobal symbol table
0end%hash%update3
&E-3symbol%table9,
"ne8%=ariable%name",
strlen3"ne8%=ariable%name"9 [ 6,
&ne8%=ariable,
si0eo#30=al W9,
.+OO
9;
+'emplo 4721 shoEs a sample source that creates tEo varia#les 2 local_ar6a1le Eith a local scope
and Elo1al_ar6a1le Eith a glo#al scope >see Figure 9;:?; ,he (ull eFample can #e (ound on the 5D2
ROM;
NoteC %ou can see that the glo#al varia#le is actually not accessi#le (rom Eithin the (unction; ,his is
#ecause itHs not imported into the local scope using Elo1al 'Elo1al_ar6a1leJ in the P&P source;
E'emplo 97(!. Creating 5ariables 3ith different scopes.
YE.L%S+.R*4?.3=ariable%creation9
:
0=al Wne8%=ar6, Wne8%=arC;
",]E%&*L%Y(,O3ne8%=ar69;
",]E%&*L%Y(,O3ne8%=arC9;
Y(,O%O?.-3ne8%=ar6, 629;
Y(,O%O?.-3ne8%=arC, 59;
YE.L%&E*%&P"Z?O3E-3acti=e%symbol%table9, "local%=ariable", ne8%=ar69;
YE.L%&E*%&P"Z?O3&E-3symbol%table9, "Elobal%=ariable", ne8%=arC9;
'E*+'.%.+OO39;
;
:ongs .Integers/
NoE letHs get to the assignment o( data to varia#lesA starting Eith longs; Longs are P&PHs integers
and are very simple to store; Loo"ing at the Dal.alue container structure discussed earlier in this
chapterA you can see that the long data type is directly contained in the unionA namely in the lal
(ield; ,he corresponding t?pe value (or longs is 0S_4ON- >see +'emplo 4720?;
E'emplo 97(*. Creation of a long.
0=al Wne8%lonE;
",]E%&*L%Y(,O3ne8%lonE9;
ne8%lonEF>type > 4&%O?.-;
ne8%lonEF>=alue.l=al > 62;
AlternativelyA you can use the macro ^(,4_4ON-C
0=al Wne8%lonE;
",]E%&*L%Y(,O3ne8%lonE9;
Y(,O%O?.-3ne8%lonE, 629;
Koubles .;loats/
Dou#les are P&PHs (loats and are as easy to assign as longsA #ecause their value is also contained
directly in the union; ,he mem#er in the Dal.alue container is #alX the corresponding type is
0S_DOUA4E;
0=al Wne8%double;
",]E%&*L%Y(,O3ne8%double9;
ne8%doubleF>type > 4&%L?+ZOE;
ne8%doubleF>=alue.d=al > <.15;
AlternativelyA you can use the macro ^(,4_DOUA4EC
0=al Wne8%double;
",]E%&*L%Y(,O3ne8%double9;
Y(,O%L?+ZOE3ne8%double, <.159;
,trings
trings need slightly more e((ort; As mentioned earlierA all strings that Eill #e associated Eith
IendHs internal data structures need to #e allocated using IendHs oEn memory2management
(unctions; Re(erencing o( static strings or strings allocated Eith standard routines is not alloEed; ,o
assign stringsA you have to access the structure str in the Dal.alue container; ,he corresponding
type is 0S_STR0N-C
0=al Wne8%strinE;
char WstrinE%contents > "*his is a ne8 strinE =ariable";
",]E%&*L%Y(,O3ne8%strinE9;
ne8%strinEF>type > 4&%&*'4.-;
ne8%strinEF>=alue.str.len > strlen3strinE%contents9;
ne8%strinEF>=alue.str.=al > estrdup3strinE%contents9;
Note the usage o( IendHs estrdup./ here; O( courseA you can also use the prede(ined macro
^(,4_STR0N-C
0=al Wne8%strinE;
char WstrinE%contents > "*his is a ne8 strinE =ariable";
",]E%&*L%Y(,O3ne8%strinE9;
Y(,O%&*'4.-3ne8%strinE, strinE%contents, 69;
^(,4_STR0N- accepts a third parameter that indicates Ehether the supplied string contents should
#e duplicated >using estrdup./?; etting this parameter to 1 causes the string to #e duplicatedX 0
simply uses the supplied pointer (or the varia#le contents; ,his is most use(ul i( you Eant to create a
neE varia#le re(erring to a string thatHs already allocated in Iend internal memory;
.( you Eant to truncate the string at a certain position or you already "noE its lengthA you can use
^(,4_STR0N-4LDalC str6nEC lenEthC #upl6cateMA Ehich accepts an eFplicit string length to #e set (or
the neE string; ,his macro is (aster than ^(,4_STR0N- and also #inary2sa(e;
,o create empty stringsA set the string length to 0 and use empt?_str6nE as contentsC
ne8%strinEF>type > 4&%&*'4.-;
ne8%strinEF>=alue.str.len > 2;
ne8%strinEF>=alue.str.=al > empty%strinE;
O( courseA thereHs a macro (or this as Eell >^(,4_EM+TB_STR0N-?C
",]E%&*L%Y(,O3ne8%strinE9;
Y(,O%E"*P%&*'4.-3ne8%strinE9;
1ooleans
Booleans are created 'ust li"e longsA #ut have the type 0S_AOO4; AlloEed values in lal are 0 and 1C
0=al Wne8%bool;
",]E%&*L%Y(,O3ne8%bool9;
ne8%boolF>type > 4&%Z??O;
ne8%boolF>=alue.l=al > 6;
,he corresponding macros (or this type are ^(,4_AOO4 >alloEing speci(ication o( the value? as
Eell as ^(,4_TRUE and ^(,4_3,4SE >Ehich eFplicitly set the value to TRUE and 3,4SEA
respectively?;
Arrays
Arrays are stored using IendHs internal hash ta#lesA Ehich can #e accessed using the 6end>hash>L./
AP.; For every array that you Eant to createA you need a neE hash ta#le handleA Ehich Eill #e stored
in the ht mem#er o( the Dal.alue container;
,hereHs a Ehole AP. solely (or the creation o( arraysA Ehich is eFtremely handy; ,o start a neE
arrayA you call array>init./;
0=al Wne8%array;
",]E%&*L%Y(,O3ne8%array9;
array%init3ne8%array9;
array>init./ alEays returns SUCCESS;
,o add neE elements to the arrayA you can use numerous (unctionsA depending on Ehat you Eant to
do; ,a#la 4721A ,a#la 4720 and ,a#la 4727 descri#e these (unctions; All (unctions return 3,04URE
on (ailure and SUCCESS on success;
Tabla 97(!. bendUs API for Associati5e Arrays
Function
Descriptio
n
add>asso
c>long
.65al
LarrayE
char
LBeyE
long n/Z./
Adds an
element o(
type lonE;
add>asso
c>unset
.65al
LarrayE
char
LBey/Z./
Adds an
unset
element;
add>asso
c>bool
.65al
LarrayE
char
LBeyE int
b/Z./
Adds a
Boolean
element;
add>asso
c>resourc
e.65al
LarrayE
char
LBeyE int
r/Z./
Adds a
resource to
the array;
add>asso
c>double
.65al
LarrayE
char
LBeyE
double
d/Z./
Adds a
(loating2
point
value;
add>asso
c>string
.65al
LarrayE
char
LBeyE
char LstrE
int
duplicate
/Z./
Adds a
string to
the array;
,he (lag
#upl6cate
speci(ies
Ehether
the string
contents
have to #e
copied to
Iend
internal
memory;
add>asso
c>stringl
.65al
LarrayE
char
LBeyE
char LstrE
uint
lengthE
int
duplicate
/Z ./
Adds a
string Eith
the desired
length
lenEth to
the array;
OtherEiseA
#ehaves
li"e
add>assoc
>string./;
add>asso
c>65al
.65al
LarrayE
char
LBeyE 65al
L5alue/Z./
Adds a
zval to the
array;
@se(ul (or
adding
other
arraysA
o#'ectsA
streamsA
etc;;;
Tabla 97(*. bendUs API for Inde+ed ArraysE Part !
Function
Descriptio
n
add>inde
+>long
.65al
LarrayE
uint id+E
long n/Z./
Adds an
element o(
type lonE;
add>inde
+>unset
.65al
LarrayE
uint id+/Z
./
Adds an
unset
element;
add>inde
+>bool
.65al
LarrayE
uint id+E
int b/Z./
Adds a
Boolean
element;
add>inde
+>resourc
e.65al
LarrayE
uint id+E
int r/Z./
Adds a
resource to
the array;
add>inde
+>double
.65al
LarrayE
uint id+E
double
d/Z./
Adds a
(loating2
point
value;
add>inde
+>string
.65al
LarrayE
uint id+E
char LstrE
int
duplicate
/Z./
Adds a
string to
the array;
,he (lag
#upl6cate
speci(ies
Ehether
the string
contents
have to #e
copied to
Iend
internal
memory;
add>inde
+>stringl
.65al
LarrayE
uint id+E
char LstrE
uint
lengthE
int
duplicate
/Z./
Adds a
string Eith
the desired
length
lenEth to
the array;
,his
(unction is
(aster and
#inary2
sa(e;
OtherEiseA
#ehaves
li"e
add>inde+
>string././;
add>inde
+>65al
.65al
LarrayE
uint id+E
65al
L5alue/Z./
Adds a
zval to the
array;
@se(ul (or
adding
other
arraysA
o#'ectsA
streamsA
etc;;;
Tabla 97(7. bendUs API for Inde+ed ArraysE Part *
Function
Descriptio
n
add>ne+t
>inde+>lo
ng.65al
LarrayE
long n/Z./
Adds an
element o(
type lonE;
add>ne+t
>inde+>u
nset.65al
Larray/Z./
Adds an
unset
element;
add>ne+t
>inde+>b
ool.65al
LarrayE
int b/Z./
Adds a
Boolean
element;
add>ne+t
>inde+>re
source
.65al
LarrayE
int r/Z./
Adds a
resource to
the array;
add>ne+t
>inde+>d
ouble
.65al
LarrayE
double
d/Z./
Adds a
(loating2
point
value;
add>ne+t
>inde+>st
ring.65al
LarrayE
char LstrE
int
duplicate
/Z./
Adds a
string to
the array;
,he (lag
#upl6cate
speci(ies
Ehether
the string
contents
have to #e
copied to
Iend
internal
memory;
add>ne+t
>inde+>st
ringl.65al
LarrayE
char LstrE
uint
lengthE
int
duplicate
/Z./
Adds a
string Eith
the desired
length
lenEth to
the array;
,his
(unction is
(aster and
#inary2
sa(e;
OtherEiseA
#ehaves
li"e
add>inde+
>string././;
add>ne+t
>inde+>6
5al.65al
LarrayE
65al
L5alue/Z./
Adds a
zval to the
array;
@se(ul (or
adding
other
arraysA
o#'ectsA
streamsA
etc;;;
All these (unctions provide a handy a#straction to IendHs internal hash AP.; O( courseA you can also
use the hash (unctions directly 2 (or eFampleA i( you already have a Dal container allocated that you
Eant to insert into an array; ,his is done using 6end>hash>update././ (or associative arrays >see
+'emplo 4727? and 6end>hash>inde+>update./ (or indeFed arrays >see +'emplo 4728?C
E'emplo 97(7. Adding an element to an associati5e array.
0=al Wne8%array, Wne8%element;
char WIey > "element%Iey";

",]E%&*L%Y(,O3ne8%array9;
",]E%&*L%Y(,O3ne8%element9;
array%init3ne8%array9;
Y(,O%O?.-3ne8%element, 629;
i#30end%hash%update3ne8%arrayF>=alue.ht, Iey, strlen3Iey9 [ 6, 3=oid W9&ne8%element, si0eo#30=al W9, .+OO9 >> S,4O+'E9
:
// do error handlinE here
;
E'emplo 97(8. Adding an element to an inde+ed array.
0=al Wne8%array, Wne8%element;
int Iey > C;
",]E%&*L%Y(,O3ne8%array9;
",]E%&*L%Y(,O3ne8%element9;
array%init3ne8%array9;
Y(,O%O?.-3ne8%element, 629;
i#30end%hash%index%update3ne8%arrayF>=alue.ht, Iey, 3=oid W9&ne8%element, si0eo#30=al W9, .+OO9 >> S,4O+'E9
:
// do error handlinE here
;
,o emulate the (unctionality o( add>ne+t>inde+>L./A you can use thisC
0end%hash%next%index%insert3ht, 0=al WWne8%element, si0eo#30=al W9, .+OO9
Note: ,o return arrays (rom a (unctionA use array>init./ and all (olloEing actions on the prede(ined
varia#le return_alue >given as argument to your eFported (unctionX see the earlier discussion o( the
call inter(ace?; %ou do not have to use M,2E_STD_^(,4 on this;
T6p: ,o avoid having to Erite ne7_arra?=&alue.ht every timeA you can use !,S!_O3Lne7_arra?MA
Ehich is also recommended (or compati#ility and style reasons;
Jb'ects
ince o#'ects can #e converted to arrays >and vice versa?A you might have already guessed that they
have a lot o( similarities to arrays in P&P; O#'ects are maintained Eith the same hash (unctionsA #ut
thereHs a di((erent AP. (or creating them;
,o initialize an o#'ectA you use the (unction ob'ect>init./C
0=al Wne8%object;
",]E%&*L%Y(,O3ne8%object9;
i#3object%init3ne8%object9 !> &+RRE&&9
:
// do error handlinE here
;
%ou can use the (unctions descri#ed in ,a#la 4728 to add mem#ers to your o#'ect;
Tabla 97(8. bendUs API for Jb'ect Creation
Function
Descriptio
n
add>prop
erty>long
.65al
Lob'ectE
char
LBeyE
long l/Z./
Adds a
long to the
o#'ect;
add>prop
erty>unse
t.65al
Lob'ectE
char
LBey/Z./
Adds an
unset
property to
the o#'ect;
add>prop
erty>bool
.65al
Lob'ectE
char
LBeyE int
b/Z./
Adds a
Boolean to
the o#'ect;
add>prop
erty>reso
urce.65al
Lob'ectE
char
LBeyE
long r/Z./
Adds a
resource to
the o#'ect;
add>prop
erty>dou
ble.65al
Lob'ectE
char
LBeyE
double
d/Z./
Adds a
dou#le to
the o#'ect;
add>prop
erty>strin
g.65al
Lob'ectE
char
LBeyE
char LstrE
int
duplicate/
Z./
Adds a
string to
the o#'ect;
add>prop
erty>strin
gl.65al
Lob'ectE
char
LBeyE
char LstrE
uint
lengthE
int
duplicate/
Z./
Adds a
string o(
the
speci(ied
length to
the o#'ect;
,his
(unction is
(aster than
add>prop
erty>strin
g./ and
also
#inary2
sa(e;
add>prop
erty>65al
.65al
LobectE
char
LBeyE 65al
Lcontaine
r/-./
Adds a
Dal
container
to the
o#'ect;
,his is
use(ul i(
you have
to add
properties
Ehich
arenHt
simple
types li"e
integers or
strings #ut
arrays or
other
o#'ects;
Mesources
Resources are a special "ind o( data type in P&P; ,he term resources doesnHt really re(er to any
special "ind o( dataA #ut to an a#straction method (or maintaining any "ind o( in(ormation;
Resources are "ept in a special resource list Eithin Iend; +ach entry in the list has a
correspondending type de(inition that denotes the "ind o( resource to Ehich it re(ers; Iend then
internally manages all re(erences to this resource; Access to a resource is never possi#le directly 2
only via a provided AP.; As soon as all re(erences to a speci(ic resource are lostA a corresponding
shutdoEn (unction is called;
For eFampleA resources are used to store data#ase lin"s and (ile descriptors; ,he #e 9acto standard
implementation can #e (ound in the MyOL moduleA #ut other modules such as the Oracle module
also ma"e use o( resources;
Nota- .n (actA a resource can #e a pointer to anything you need to handle in your
(unctions >e;g; pointer to a structure? and the user only has to pass a single resource
varia#le to your (unction;
,o create a neE resource you need to register a resource destruction handler (or it; ince you can
store any "ind o( data as a resourceA Iend needs to "noE hoE to (ree this resource i( its not longer
needed; ,his Eor"s #y registering your oEn resource destruction handler to Iend Ehich in turn gets
called #y Iend Ehenever your resource can #e (reed >Ehether manually or automatically?;
Registering your resource handler Eithin Iend returns you the resource type handle (or that
resource; ,his handle is needed Ehenever you Eant to access a resource o( this type later and is
most o( time stored in a glo#al static varia#le Eithin your eFtension; ,here is no need to Eorry
a#out thread sa(ety here #ecause you only register your resource handler once during module
initialization;
,he Iend (unction to register your resource handler is de(ined asC
YE.L%,4 int 0end%reEister%list%destructors%ex3rsrc%dtor%#unc%t ld, rsrc%dtor%#unc%t pld, char Wtype%name, int module%number9;
,here are tEo di((erent "inds o( resource destruction handlers you can pass to this (unctionC a
handler (or normal resources and a handler (or persistent resources; Persistent resources are (or
eFample used (or data#ase connection; Lhen registering a resourceA either o( these handlers must #e
given; For the other handler 'ust pass NU44;
6end>register>list>destructors>e+./ accepts the (olloEing parametersC
l#
Normal
resource
destruction
handler
call#ac"
pl#
Pesistent
resource
destruction
handler
call#ac"
t?pe_na
me
A string
speci(ying
the name o(
your
resource; .tHs
alEays a
good thing to
speci(y an
uni/ue name
Eithin P&P
(or the
resource type
so Ehen the
user (or
eFample calls
ar_#ump
L'resourceMJ
he also gets
the name o(
the resource;
mo#ule_
num1er
,he
mo#ule_num
1er is
automatically
availa#le in
your
+!+_M0N0T
_3UNCT0O
N (unction
and there(ore
you 'ust pass
it over;
,he return value is an uni/ue integer .D (or your resource type;
,he resource destruction handler >either normal or persistent resources? has the (olloEing prototypeC
=oid resource%destruction%handler30end%rsrc%list%entry Wrsrc *&'"O&%LR9;
,he passed rsrc is a pointer to the (olloEing structureC
typede# struct %0end%rsrc%list%entry :

=oid Wptr;
int type;
int re#count;
; 0end%rsrc%list%entry;
,he mem#er o6# /ptr is the actual pointer to your resource;
NoE Ee "noE hoE to start thingsA Ee de(ine our oEn resource Ee Eant register Eithin Iend; .t is
only a simple structure Eith tEo integer mem#ersC
typede# struct :

int resource%linI;
int resource%type;
; my%resource;
Our resource destruction handler is pro#a#ly going to loo" something li"e thisC
=oid my%destruction%handler30end%rsrc%list%entry Wrsrc *&'"O&%LR9 :
// Pou most liIely cast the =oid pointer to your structure type
my%resource Wmy%rsrc > 3my%resource W9 rsrcF>ptr;
// .o8 do 8hate=er needs to be done 8ith you resource. RlosinE
// Siles, &ocIets, #reeinE additional memory, etc.
// ,lso, donMt #orEet to actually #ree the memory #or your resource too!
do%8hate=er%needs%to%be%done%8ith%the%resource3my%rsrc9;
;
Nota- One important thing to mentionC .( your resource is a rather compleF structure
Ehich also contains pointers to memory you allocated during runtime you have to (ree
them before (reeing the resource itsel(a
NoE that Ee have de(ined
1; Ehat our resource is and
0; our resource destruction handler
Ee can go on and do the rest o( the stepsC
1; create a glo#al varia#le Eithin the eFtension holding the resource .D so it can #e accessed (rom
every (unction Ehich needs it
0; de(ine the resource name
7; Erite the resource destruction handler
8; and (inally register the handler
// &ome8here in your extension, de#ine the =ariable #or your reEistered resources.
// 4# you 8ondered 8hat MleM stands #or@ it simply means Mlist entryM.
static int le%myresource;
// 4tMs nice to de#ine your resource name some8here
Ude#ine le%myresource%name ""y type o# resource"
).../
// .o8 actually de#ine our resource destruction handler
=oid my%destruction%handler30end%rsrc%list%entry Wrsrc *&'"O&%LR9 :
my%resource Wmy%rsrc > 3my%resource W9 rsrcF>ptr;
do%8hate=er%needs%to%be%done%8ith%the%resource3my%rsrc9;
;
).../
H%"4.4*%S+.R*4?.3my%extension9 :
// .ote that Mmodule%numberM is already pro=ided throuEh the
// H%"4.4*%S+.R*4?.39 #unction de#inition.
le%myresource > 0end%reEister%resource%destructors%ex3my%destruction%handler, .+OO, le%myresource%name, module%number9;
// Pou can reEister additional resources, initiali0e
// your Elobal =ars, constants, 8hate=er.
;
,o actually register a neE resource you use can either use the 6end>register>resource./ (unction or
the bENK>MEFI,TEM>ME,J)ME./ macroA #oth de(ined in zendZlist;h ; Although the
arguments (or #oth map 1C1 itHs a good idea to alEays use macros to #e upEards compati#leC
int YE.L%'E-4&*E'%'E&?+'RE30=al Wrsrc%result, =oid Wrsrc%pointer, int rsrc%type9;
rsrc_res
ult
,his is an
already
initialized
Dal /
container;
rsrc_po
6nter
%our
resource
pointer you
Eant to store;
rsrc_t?p
e
,he type
Ehich you
received
Ehen you
registered the
resource
destruction
handler; .(
you (olloEed
the naming
scheme this
Eould #e
le_m?resour
ce;
,he return value is an uni/ue integer identi(ier (or that resource;
Lhat is really going on Ehen you register a neE resource is it gets inserted in an internal list in
Iend and the result is 'ust stored in the given Dal / containerC
rsrc%id > 0end%list%insert3rsrc%pointer, rsrc%type9;

i# 3rsrc%result9 :
rsrc%resultF>=alue.l=al > rsrc%id;
rsrc%resultF>type > 4&%'E&?+'RE;
;
return rsrc%id;
,he returned rsrc_6# uni/uly identi(ies the neEly registered resource; %ou can use the macro
RETURN_RESOURE to return it to the userC
'E*+'.%'E&?+'RE3rsrc%id9
Nota- .t is common practice that i( you Eant to return the resource immidiately to the
user you speci(y the return_alue as the Dal / container;
Iend noE "eeps trac" o( all re(erences to this resource; As soon as all re(erences to the resource are
lostA the destructor that you previously registered (or this resource is called; ,he nice thing a#out
this setup is that you donHt have to Eorry a#out memory lea"ages introduced #y allocations in your
module 2 'ust register all memory allocations that your calling script Eill re(er to as resources; As
soon as the script decides it doesnHt need them anymoreA Iend Eill (ind out and tell you;
NoE that the user got his resourceA at some point he is passing it #ac" to one o( your (unctions; ,he
alue.lal inside the Dal / container contains the "ey to your resource and thus can #e used to (etch
the resource Eith the (olloEing macroC ^END_3ETC!_RESOURCEC
YE.L%SE*RH%'E&?+'RE3rsrc, rsrc%type, rsrc%id, de#ault%rsrc%id, resource%type%name, resource%type9
rsrc
,his is your
pointer
Ehich Eill
point to your
previously
registered
resource;
rsrc_t?p
e
,his is the
typecast
argument (or
your pointerA
e;g;
m?resource
/;
rsrc_6#
,his is the
address o(
the Dal
/container
the user
passed to
your
(unctionA e;g;
]D_resource
i( Dal
/D_resource
is given;
#e9ault_
rsrc_6#
,his integer
speci(ies the
de(ault
resource 0D
i( no
resource
could #e
(etched or 21;
resourc
e_t?pe_
name
,his is the
name o( the
re/uested
resource; .tHs
a string and
is used Ehen
the resource
canHt #e
(ound or is
invalid to
(orm a
meaning(ul
error
message;
resourc
e_t?pe
,he
resource_t?p
e you got
#ac" Ehen
registering
the resource
destruction
handler; .n
our eFample
this Eas
le_m?resour
ce;
,his macro has no return value; .t is (or the developers convenience and ta"es care o( ,RML
arguments passing and also does chec" i( the resource could #e (etched; .t throEs a Earning
message and returns the current P&P (unction Eith NU44 i( there Eas a pro#lem retrieving the
resource;
,o (orce removal o( a resource (rom the listA use the (unction 6end>list>delete./; %ou can also (orce
the re(erence count to increase i( you "noE that youHre creating another re(erence (or a previously
allocated value >(or eFampleA i( youHre automatically reusing a de(ault data#ase lin"?; For this caseA
use the (unction 6end>list>addref./; ,o search (or previously allocated resource entriesA use
6end>list>find./; ,he complete AP. can #e (ound in 0end%list.h;
Macros for Automatic Flobal Cariable Creation
.n addition to the macros discussed earlierA a (eE macros alloE easy creation o( simple glo#al
varia#les; ,hese are nice to "noE in case you Eant to introduce glo#al (lagsA (or eFample; ,his is
someEhat #ad practiceA #ut ,a#le ,a#la 4724 descri#es macros that do eFactly this tas"; ,hey donHt
need any Dal allocationX you simply have to supply a varia#le name and value;
Tabla 97(9. Macros for Flobal Cariable Creation
Macro
Descriptio
n
SET_(,R
_STR0N-
LnameC
alueM
5reates a
neE string;
SET_(,R
_STR0N-
4LnameC
alueC
lenEthM
5reates a
neE string
o( the
speci(ied
length;
,his macro
is (aster
than
SET_(,R_
STR0N-
and also
#inary2
sa(e;
SET_(,R
_4ON-
LnameC
alueM
5reates a
neE long;
SET_(,R
_DOUA4E
LnameC
alueM
5reates a
neE
dou#le;
Creating Constants
Iend supports the creation o( true constants >as opposed to regular varia#les?; 5onstants are
accessed Eithout the typical dollar sign >'? pre(iF and are availa#le in all scopes; +Famples include
TRUE and 3,4SEA to name 'ust tEo;
,o create your oEn constantsA you can use the macros in ,a#la 472K; All the macros create a
constant Eith the speci(ied name and value;
%ou can also speci(y (lags (or each constantC
CONST_CS 2 ,his constantHs name is to #e treated as case sensitive;
CONST_+ERS0STENT 2 ,his constant is persistent and EonHt #e =(orgotten= Ehen the
current process carrying this constant shuts doEn;
,o use the (lagsA com#ine them using a inary ORC
// reEister a ne8 constant o# type "lonE"
'E-4&*E'%O?.-%R?.&*,.*3".E7%"E,.4.-S+O%R?.&*,.*", <C1, R?.&*%R& T
R?.&*%E'&4&*E.*9;
,here are tEo types o( macros 2 RE-0STER_/_CONST,NT andRE-0STER_M,0N_/_CONST,NT;
,he (irst type creates constants #ound to the current module; ,hese constants are dumped (rom the
sym#ol ta#le as soon as the module that registered the constant is unloaded (rom memory; ,he
second type creates constants that remain in the sym#ol ta#le independently o( the module;
Tabla 97(<. Macros for Creating Constants
Macro
Descriptio
n
RE-0STER_
4ON-_CON
ST,NT
LnameC alueC
9laEsM
RE-0STER_
M,0N_4ON
-_CONST,
NTLnameC
alueC 9laEsM
Registers a
neE
constant o(
type long;
RE-0STER_
DOUA4E_C
ONST,NT
LnameC alueC
9laEsM
RE-0STER_
M,0N_DOU
A4E_CONST
,NTLnameC
alueC 9laEsM
Registers a
neE
constant o(
type
dou#le;
RE-0STER_
STR0N-_CO
NST,NT
LnameC alueC
9laEsM
RE-0STER_
M,0N_STR0
N-_CONST
,NTLnameC
alueC 9laEsM
Registers a
neE
constant o(
type string;
,he
speci(ied
string must
reside in
IendHs
internal
memory;
RE-0STER_
STR0N-4_C
ONST,NT
LnameC alueC
lenEthC 9laEsM
RE-0STER_
M,0N_STR0
N-4_CONS
T,NTLnameC
alueC lenEthC
9laEsM
Registers a
neE
constant o(
type string;
,he string
length is
eFplicitly
set to
lenEth; ,he
speci(ied
string must
reside in
IendHs
internal
memory;
Captulo 98. Kuplicating Cariable Contents-
The Copy Constructor
ooner or laterA you may need to assign the contents o( one Dal container to another; ,his is easier
said than doneA since the Dal container doesnHt contain only type in(ormationA #ut also re(erences to
places in IendHs internal data; For eFampleA depending on their sizeA arrays and o#'ects may #e
nested Eith lots o( hash ta#le entries; By assigning one Dal to anotherA you avoid duplicating the
hash ta#le entriesA using only a re(erence to them >at most?;
,o copy this compleF "ind o( dataA use the cop? constructor; 5opy constructors are typically de(ined
in languages that support operator overloadingA Eith the eFpress purpose o( copying compleF types;
.( you de(ine an o#'ect in such a languageA you have the possi#ility o( overloading the =^= operatorA
Ehich is usually responsi#le (or assigning the contents o( the lvalue >result o( the evaluation o( the
le(t side o( the operator? to the rvalue >same (or the right side?;
Oerloa#6nE means assigning a di((erent meaning to this operatorA and is usually used to assign a
(unction call to an operator; Lhenever this operator Eould #e used on such an o#'ect in a programA
this (unction Eould #e called Eith the lvalue and rvalue as parameters; +/uipped Eith that
in(ormationA it can per(orm the operation it intends the =^= operator to have >usually an eFtended
(orm o( copying?;
,his same (orm o( =eFtended copying= is also necessary (or P&PHs Dal containers; AgainA in the
case o( an arrayA this eFtended copying Eould imply re2creation o( all hash ta#le entries relating to
this array; For stringsA proper memory allocation Eould have to #e assuredA and so on;
Iend ships Eith such a (unctionA called 6end>copy>ctor./ >the previous P&P Walent Eas
p5al>copy>constructor./?;
A most use(ul demonstration is a (unction that accepts a compleF type as argumentA modi(ies itA and
then returns the argumentC
0=al Wparameter;

i# 30end%parse%parameters3YE.L%.+"%,'-&39 *&'"O&%RR, "0", &parameter9 >> S,4O+'E9
return;
;

// do modi#ications to the parameter here
// no8 8e 8ant to return the modi#ied container@
Wreturn%=alue >> Wparameter;
0=al%copy%ctor3return%=alue9;
,he (irst part o( the (unction is plain2vanilla argument retrieval; A(ter the >le(t out? modi(icationsA
hoEeverA it gets interestingC ,he container o( parameter is assigned to the >prede(ined? return_alue
container; NoEA in order to e((ectively duplicate its contentsA the copy constructor is called; ,he
copy constructor Eor"s directly Eith the supplied argumentA and the standard return values are
3,04URE on (ailure and SUCCESS on success;
.( you omit the call to the copy constructor in this eFampleA #oth parameter and return_alue Eould
point to the same internal dataA meaning that return_alue Eould #e an illegal additional re(erence
to the same data structures; Lhenever changes occurred in the data that parameter points toA
return_alue might #e a((ected; ,husA in order to create separate copiesA the copy constructor must
#e used;
,he copy constructorHs counterpart in the Iend AP.A the destructor 65al>dtor./A does the opposite o(
the constructor;
Captulo 99. Meturning Calues
Returning values (rom your (unctions to P&P Eas descri#ed #rie(ly in an earlier sectionX this section
gives the details; Return values are passed via the return_alue varia#leA Ehich is passed to your
(unctions as argument; ,he return_alue argument consists o( a Dal container >see the earlier
discussion o( the call inter(ace? that you can (reely modi(y; ,he container itsel( is already allocatedA
so you donHt have to run M,2E_STD_^(,4 on it; .nsteadA you can access its mem#ers directly;
,o ma"e returning values (rom (unctions easier and to prevent hassles Eith accessing the internal
structures o( the Dal containerA a set o( prede(ined macros is availa#le >as usual?; ,hese macros
automatically set the correspondent type and valueA as descri#ed in ,a#la 4421 and ,a#la 4420;
Nota- ,he macros in ,a#la 4421 automatically return (rom your (unctionA those in ,a#la
4420 only set the return valueX they donHt return (rom your (unction;
Tabla 99(!. Predefined Macros for Meturning Calues from a ;unction
Macro
Descriptio
n
RETURN_RE
SOURCE
LresourceM
Returns a
resource;
RETURN_A
OO4L1oolM
Returns a
Boolean;
RETURN_N
U44LM
Returns
nothing >a
N@LL
value?;
RETURN_4
ON-LlonEM
Returns a
long;
RETURN_D
OUA4E
L#ou1leM
Returns a
dou#le;
RETURN_ST
R0N-Lstr6nEC
#upl6cateM
Returns a
string; ,he
#upl6cate
(lag
indicates
Ehether
the string
should #e
duplicated
using
estrdup./;
RETURN_ST
R0N-4
Lstr6nEC
lenEthC
#upl6cateM
Returns a
string o(
the
speci(ied
lengthX
otherEiseA
#ehaves
li"e
RETURN_
STR0N-;
,his macro
is (aster
and #inary2
sa(eA
hoEever;
RETURN_E
M+TB_STR0
N-LM
Returns an
empty
string;
RETURN_3,
4SE
Returns
Boolean
(alse;
RETURN_TR
UE
Returns
Boolean
true;
Tabla 99(*. Predefined Macros for ,etting the Meturn Calue of a ;unction
Macro
Descriptio
n
RET(,4_RE
SOURCE
LresourceM
ets the
return
value to
the
speci(ied
resource;
RET(,4_AO
O4L1oolM
ets the
return
value to
the
speci(ied
Boolean
value;
RET(,4_NU
44
ets the
return
value to
N@LL;
RET(,4_4O
N-LlonEM
ets the
return
value to
the
speci(ied
long;
RET(,4_DO
UA4E
L#ou1leM
ets the
return
value to
the
speci(ied
dou#le;
RET(,4_ST
R0N-Lstr6nEC
#upl6cateM
ets the
return
value to
the
speci(ied
string and
duplicates
it to Iend
internal
memory i(
desired
>see also
RETURN_
STR0N-?;
RET(,4_ST
R0N-4
Lstr6nEC
lenEthC
#upl6cateM
ets the
return
value to
the
speci(ied
string and
(orces the
length to
#ecome
lenEth >see
also
RET(,4_
STR0N-?;
,his macro
is (aster
and #inary2
sa(eA and
should #e
used
Ehenever
the string
length is
"noEn;
RET(,4_EM
+TB_STR0N
-
ets the
return
value to an
empty
string;
RET(,4_3,
4SE
ets the
return
value to
Boolean
(alse;
RET(,4_TR
UE
ets the
return
value to
Boolean
true;
5ompleF types such as arrays and o#'ects can #e returned #y using array>init./ and ob'ect>init./A
as Eell as the corresponding hash (unctions on return_alue; ince these types cannot #e
constructed o( trivial in(ormationA there are no prede(ined macros (or them;
Captulo 9<. Printing Information
O(ten itHs necessary to print messages to the output stream (rom your moduleA 'ust as print./ Eould
#e used Eithin a script; P&P o((ers (unctions (or most generic tas"sA such as printing Earning
messagesA generating output (or phpinfo./A and so on; ,he (olloEing sections provide more details;
+Famples o( these (unctions can #e (ound on the 5D2ROM;
6end>printf./
6end>printf./ Eor"s li"e the standard printf./A eFcept that it prints to IendHs output stream;
6end>error./
6end>error./ can #e used to generate error messages; ,his (unction accepts tEo argumentsX the (irst
is the error type >see 0end%errors.h?A and the second is the error message;
0end%error3E%7,'.4.-, "*his #unction has been called 8ith empty arEuments"9;
,a#la 4K21 shoEs a list o( possi#le values >see Figura 4K21?; ,hese values are also re(erred to in
php.ini; Depending on Ehich error type you chooseA your messages Eill #e logged;
Tabla 9<(!. bendUs Predefined Error Messages.
+rror
Descriptio
n
E_ERROR
ignals an
error and
terminates
eFecution
o( the
script
immediatel
y ;
E_I,RN0N
-
ignals a
generic
Earning;
+Fecution
continues;
E_+,RSE
ignals a
parser
error;
+Fecution
continues;
E_NOT0CE
ignals a
notice;
+Fecution
continues;
Note that
#y de(ault
the display
o( this type
o( error
messages
is turned
o(( in
php.ini;
E_CORE_E
RROR
.nternal
error #y
the coreX
shouldnHt
#e used #y
user2
Eritten
modules;
E_COM+04
E_ERROR
.nternal
error #y
the
compilerX
shouldnHt
#e used #y
user2
Eritten
modules;
E_COM+04
E_I,RN0N
-
.nternal
Earning #y
the
compilerX
shouldnHt
#e used #y
user2
Eritten
modules;
;igura 9<(!. Kisplay of 3arning messages in the bro3ser.
Including Jutput in phpinfo./
A(ter creating a real moduleA youHll Eant to shoE in(ormation a#out the module in phpinfo./ >in
addition to the module nameA Ehich appears in the module list #y de(ault?; P&P alloEs you to create
your oEn section in the phpinfo./ output Eith the ^END_M0N3OLM (unction; ,his (unction should
#e placed in the module descriptor #loc" >discussed earlier? and is alEays called Ehenever a script
calls phpinfo./;
P&P automatically prints a section in phpinfo./ (or you i( you speci(y the ^END_M0N3O (unctionA
including the module name in the heading; +verything else must #e (ormatted and printed #y you;
,ypicallyA you can print an &,ML ta#le header using php>info>print>table>start./ and then use
the standard (unctions php>info>print>table>header./ and php>info>print>table>ro3./; As
argumentsA #oth ta"e the num#er o( columns >as integers? and the column contents >as strings?;
+'emplo 4K21 shoEs a source eFample and its output; ,o print the ta#le (ooterA use
php>info>print>table>end./;
E'emplo 9<(!. ,ource code and screenshot for output in phpinfo./.
php%in#o%print%table%start39;
php%in#o%print%table%header3C, "Sirst column", "&econd column"9;
php%in#o%print%table%ro83C, "Entry in #irst ro8", ",nother entry"9;
php%in#o%print%table%ro83C, "Aust to #ill", "another ro8 here"9;
php%in#o%print%table%end39;
E+ecution Information
%ou can also print eFecution in(ormationA such as the current (ile #eing eFecuted; ,he name o( the
(unction currently #eing eFecuted can #e retrieved using the (unction get>acti5e>function>name./;
,his (unction returns a pointer to the (unction name and doesnHt accept any arguments; ,o retrieve
the name o( the (ile currently #eing eFecutedA use 6end>get>e+ecuted>filename./; ,his (unction
accesses the eFecutor glo#alsA Ehich are passed to it using the TSRM4S_C macro; ,he eFecutor
glo#als are automatically availa#le to every (unction thatHs called directly #y Iend >theyHre part o(
the 0NTERN,4_3UNCT0ON_+,R,METERS descri#ed earlier in this chapter?; .( you Eant to
access the eFecutor glo#als in another (unction that doesnHt have them availa#le automaticallyA call
the macro TSRM4S_3ETC!LM once in that (unctionX this Eill introduce them to your local scope;
FinallyA the line num#er currently #eing eFecuted can #e retrieved using the (unction
6end>get>e+ecuted>lineno./; ,his (unction also re/uires the eFecutor glo#als as arguments; For
eFamples o( these (unctionsA see +'emplo 4K20;
E'emplo 9<(*. Printing e+ecution information.
0end%print#3"*he name o# the current #unction is \s<br>", Eet%acti=e%#unction%name3*&'"O&%R99;
0end%print#3"*he #ile currently executed is \s<br>", 0end%Eet%executed%#ilename3*&'"O&%R99;
0end%print#3"*he current line beinE executed is \i<br>", 0end%Eet%executed%lineno3*&'"O&%R99;
Captulo 9=. ,tartup and ,hutdo3n ;unctions
tartup and shutdoEn (unctions can #e used (or one2time initialization and deinitialization o( your
modules; As discussed earlier in this chapter >see the description o( the Iend module descriptor
#loc"?A there are moduleA and re/uest startup and shutdoEn events;
,he module startup and shutdoEn (unctions are called Ehenever a module is loaded and needs
initializationX the re/uest startup and shutdoEn (unctions are called every time a re/uest is
processed >meaning that a (ile is #eing eFecuted?;
For dynamic eFtensionsA module and re/uest startupDshutdoEn events happen at the same time;
Declaration and implementation o( these (unctions can #e done Eith macrosX see the earlier section
=Declaration o( the Iend Module Bloc"= (or details;
Captulo 9N. Calling )ser ;unctions
%ou can call user (unctions (rom your oEn modulesA Ehich is very handy Ehen implementing
call#ac"sX (or eFampleA (or array Eal"ingA searchingA or simply (or event2#ased programs;
@ser (unctions can #e called Eith the (unction call>user>function>e+./; .t re/uires a hash value (or
the (unction ta#le you Eant to accessA a pointer to an o#'ect >i( you Eant to call a method?A the
(unction nameA return valueA num#er o( argumentsA argument arrayA and a (lag indicating Ehether
you Eant to per(orm zval separation;
YE.L%,4 int call%user%#unction%ex3Hash*able W#unction%table, 0=al Wobject,
0=al W#unction%name, 0=al WWret=al%ptr%ptr,
int param%count, 0=al WWparams)/,
int no%separation9;
Note that you donHt have to speci(y #oth 9unct6on_ta1le and o1UectX either Eill do; .( you Eant to call
a methodA you have to supply the o#'ect that contains this methodA in Ehich case
call>user>function./automatically sets the (unction ta#le to this o#'ectHs (unction ta#le; OtherEiseA
you only need to speci(y 9unct6on_ta1le and can set o1Uect to NU44;
@suallyA the de(ault (unction ta#le is the =root= (unction ta#le containing all (unction entries; ,his
(unction ta#le is part o( the compiler glo#als and can #e accessed using the macro C-; ,o introduce
the compiler glo#als to your (unctionA call the macro TSRM4S_3ETC! once;
,he (unction name is speci(ied in a Dal container; ,his might #e a #it surprising at (irstA #ut is /uite
a logical stepA since most o( the time youHll accept (unction names as parameters (rom calling
(unctions Eithin your scriptA Ehich in turn are contained in Dal containers again; ,husA you only
have to pass your arguments through to this (unction; ,his Dal must #e o( type 0S_STR0N-;
,he neFt argument consists o( a pointer to the return value; %ou donHt have to allocate memory (or
this containerX the (unction Eill do so #y itsel(; &oEeverA you have to destroy this container >using
65al>dtor./? a(terEarda
NeFt is the parameter count as integer and an array containing all necessary parameters; ,he last
argument speci(ies Ehether the (unction should per(orm zval separation 2 this should alEays #e set
to 0; .( set to 1A the (unction consumes less memory #ut (ails i( any o( the parameters need
separation;
+'emplo 4M21 shoEs a small demonstration o( calling a user (unction; ,he code calls a (unction
thatHs supplied to it as argument and directly passes this (unctionHs return value through as its oEn
return value; Note the use o( the constructor and destructor calls at the end 2 it might not #e
necessary to do it this Eay here >since they should #e separate valuesA the assignment might #e sa(e?A
#ut this is #ulletproo(;
E'emplo 9N(!. Calling user functions.
0=al WW#unction%name;
0=al Wret=al;
i#33YE.L%.+"%,'-&39 !> 69 TT 30end%Eet%parameters%ex36, &#unction%name9 !> &+RRE&&99
:
7'?.-%,',"%R?+.*;
;
i#33W#unction%name9F>type !> 4&%&*'4.-9
:
0end%error3E%E''?', "Sunction reQuires strinE arEument"9;
;
*&'"&O&%SE*RH39;
i#3call%user%#unction%ex3R-3#unction%table9, .+OO, W#unction%name, &ret=al, 2, .+OO, 29 !> &+RRE&&9
:
0end%error3E%E''?', "Sunction call #ailed"9;
;
0end%print#3"7e ha=e \i as type<br>", ret=alF>type9;
Wreturn%=alue > Wret=al;
0=al%copy%ctor3return%=alue9;
0=al%ptr%dtor3&ret=al9;
<?php
dl3"call%userland.so"9;
#unction test%#unction39
:
print3"7e are in the test #unction!<br>"9;
return3"hello"9;
;
$return%=alue > call%userland3"test%#unction"9;
print3"'eturn =alue@ V"$return%=alueV"<br>"9;
?>
Captulo 9O. Initiali6ation ;ile ,upport
P&P 8 (eatures a redesigned initialization (ile support; .tHs noE possi#le to speci(y de(ault
initialization entries directly in your codeA read and change these values at runtimeA and create
message handlers (or change noti(ications;
,o create an ;ini section in your oEn moduleA use the macros +!+_0N0_AE-0NLM to mar" the
#eginning o( such a section and +!+_0N0_ENDLM to mar" its end; .n #etEeen you can use
+!+_0N0_ENTRBLM to create entries;
H%4.4%ZE-4.39
H%4.4%E.*'P3"#irst%ini%entry", "has%strinE%=alue", H%4.4%,OO, .+OO9
H%4.4%E.*'P3"second%ini%entry", "C", H%4.4%&P&*E", ?nRhanEe&econd9
H%4.4%E.*'P3"third%ini%entry", "xy0", H%4.4%+&E', .+OO9
H%4.4%E.L39
,he +!+_0N0_ENTRBLM macro accepts (our parametersC the entry nameA the entry valueA its change
permissionsA and a pointer to a change2noti(ication handler; Both entry name and value must #e
speci(ied as stringsA regardless o( Ehether they really are strings or integers;
,he permissions are grouped into three sectionsC+!+_0N0_SBSTEM alloEs a change only directly in
the php.ini (ileX +!+_0N0_USER alloEs a change to #e overridden #y a user at runtime using
additional con(iguration (ilesA such as .htaccessX and +!+_0N0_,44 alloEs changes to #e made
Eithout restrictions; ,hereHs also a (ourth levelA +!+_0N0_+ERD0RA (or Ehich Ee couldnHt veri(y its
#ehavior yet;
,he (ourth parameter consists o( a pointer to a change2noti(ication handler; Lhenever one o( these
initialization entries is changedA this handler is called; uch a handler can #e declared using the
+!+_0N0_M! macroC
H%4.4%"H3?nRhanEe&econd9; // handler #or iniFentry "second%ini%entry"
// speci#y iniFentries here
H%4.4%"H3?nRhanEe&econd9
:
0end%print#3""essaEe cauEht, our ini entry has been chanEed to \s<br>", ne8%=alue9;
return3&+RRE&&9;
;
,he neE value is given to the change handler as string in the varia#le ne7_alue; Lhen loo"ing at
the de(inition o( +!+_0N0_M!A you actually have a (eE parameters to useC
Ude#ine H%4.4%"H3name9 int name3php%ini%entry Wentry, char Wne8%=alue,
uint ne8%=alue%lenEth, =oid Wmh%arE6,
=oid Wmh%arEC, =oid Wmh%arE<9
All these de(initions can #e (ound in php%ini.h; %our message handler Eill have access to a
structure that contains the (ull entryA the neE valueA its lengthA and three optional arguments; ,hese
optional arguments can #e speci(ied Eith the additional macros +!+_0N0_ENTRB1 >alloEing one
additional argument?A +!+_0N0_ENTRB2 >alloEing tEo additional arguments?A and
+!+_0N0_ENTRBR >alloEing three additional arguments?;
,he change2noti(ication handlers should #e used to cache initialization entries locally (or (aster
access or to per(orm certain tas"s that are re/uired i( a value changes; For eFampleA i( a constant
connection to a certain host is re/uired #y a module and someone changes the hostnameA
automatically terminate the old connection and attempt a neE one;
Access to initialization entries can also #e handled Eith the macros shoEn in ,a#la 4921;
Tabla 9O(!. Macros to Access Initiali6ation Entries in PHP
Macro
Descriptio
n
0N0_0N
T
LnameM
Returns the
current
value o(
entry name
as integer
>long?;
0N0_34
T
LnameM
Returns the
current
value o(
entry name
as (loat
>dou#le?;
0N0_ST
R
LnameM
Returns the
current
value o(
entry name
as string;
Note: ,his
string is
not
duplicatedA
#ut instead
points to
internal
data;
Further
access
re/uires
duplication
to local
memory;
0N0_A
OO4
LnameM
Returns the
current
value o(
entry name
as Boolean
>de(ined as
Den#_1oolA
Ehich
currently
means
uns6Ene#
char?;
0N0_O
R0-_0
NT
LnameM
Returns the
original
value o(
entry name
as integer
>long?;
0N0_O
R0-_3
4T
LnameM
Returns the
original
value o(
entry name
as (loat
>dou#le?;
0N0_O
R0-_S
TR
LnameM
Returns the
original
value o(
entry name
as string;
NoteC ,his
string is
not
duplicatedA
#ut instead
points to
internal
data;
Further
access
re/uires
duplication
to local
memory;
0N0_O
R0-_A
OO4
LnameM
Returns the
original
value o(
entry name
as Boolean
>de(ined as
Den#_1oolA
Ehich
currently
means
uns6Ene#
char?;
FinallyA you have to introduce your initialization entries to P&P; ,his can #e done in the module
startup and shutdoEn (unctionsA using the macros RE-0STER_0N0_ENTR0ESLM and
UNRE-0STER_0N0_ENTR0ESLMC
YE.L%"4.4*%S+.R*4?.3mymodule9
:
'E-4&*E'%4.4%E.*'4E&39;
;
YE.L%"&H+*L?7.%S+.R*4?.3mymodule9
:
+.'E-4&*E'%4.4%E.*'4E&39;
;
Captulo <D. 2here to Fo from Here
%ouHve learned a lot a#out P&P; %ou noE "noE hoE to create dynamic loada#le modules and
statically lin"ed eFtensions; %ouHve learned hoE P&P and Iend deal Eith internal storage o(
varia#les and hoE you can create and access these varia#les; %ou "noE /uite a set o( tool (unctions
that do a lot o( routine tas"s such as printing in(ormational teFtsA automatically introducing
varia#les to the sym#ol ta#leA and so on;
+ven though this chapter o(ten had a mostly =re(erential= characterA Ee hope that it gave you insight
on hoE to start Eriting your oEn eFtensions; For the sa"e o( spaceA Ee had to leave out a lotX Ee
suggest that you ta"e the time to study the header (iles and some modules >especially the ones in the
ext/standard directory and the MyOL moduleA as these implement commonly "noEn
(unctionality?; ,his Eill give you an idea o( hoE other people have used the AP. (unctions 2
particularly those that didnHt ma"e it into this chapter;
Captulo <!. Meference- ,ome Configuration
Macros
!on9ig.:+
,he (ile con#iE.m1 is processed #y buildcon# and must contain all the instructions to #e
eFecuted during con(iguration; For eFampleA these can include tests (or re/uired eFternal (ilesA such
as header (ilesA li#rariesA and so on; P&P de(ines a set o( macros that can #e used in this processA the
most use(ul o( Ehich are descri#ed in ,a#la K121;
Tabla <!(!. M8 Macros for !on9ig.:+
Macro Description
,C_MS-_C!EC
20N-LmessaEeM
Prints a
=chec"ing
`message_= teFt
during
con#iEure;
,C_MS-_RESU
4TLalueM
Gives the result
to
,C_MS-_C!E
C20N-X should
speci(y either ?es
or no as alue;
,C_MS-_ERRO
RLmessaEeM
Prints messaEe
as error message
during
con#iEure
and a#orts the
script;
,C_DE30NE
LnameCalueC#esc
r6pt6onM
Adds K#e96ne to
php%con#iE.
h Eith the value
o( alue and a
comment that
says #escr6pt6on
>this is use(ul (or
conditional
compilation o(
your module?;
,C_,DD_0NC4
UDELpathM
Adds a compiler
include pathX (or
eFampleA used i(
the module needs
to add search
paths (or header
(iles;
,C_,DD_40AR,
RB_I0T!_+,T!
Ll61rar?nameCl61r
ar?pathM
peci(ies an
additional li#rary
to lin";
,C_,R-_I0T!
Lmo#ulenameC#es
cr6pt6onCuncon#6t6
onaltestCcon#6t6on
altestM
Ouite a poEer(ul
macroA adding
the module Eith
#escr6pt6on to the
con#iEure
FFhelp output;
P&P chec"s
Ehether the
option ==76th=
$mo#ulename&
is given to the
con#iEure
script; .( soA it
runs the script
uncon#6t6onaltest
>(or eFampleA ==
76th=m?e8t:?es?A
in Ehich case the
value o( the
option is
contained in the
varia#le
'76thal;
OtherEiseA it
eFecutes
con#6t6onaltest;
+!+_EFTENS0O
NLmo#ulenameC
)share#.M
,his macro is a
must to call (or
P&P to con(igure
your eFtension;
%ou can supply a
second argument
in addition to
your module
nameA indicating
Ehether you
intend
compilation as a
shared module;
,his Eill result
in a de(inition at
compile time (or
your source as
COM+04E_D4_
$mo#ulename&;
Captulo <*. API Macros
A set o( macros Eas introduced into IendHs AP. that simpli(y access to Dal containers >see ,a#la
K021?;
Tabla <*(!. API Macros for Accessing 2%al Containers
Macro Re(ers to
^_4(,4
LDalM
LDalM.
alue.lal
^_D(,4
LDalM
LDalM.
alue.#al
^_STR(,
4LDalM
LDalM.
alue.str.al
^_STR4E
NLDalM
LDalM.
alue.str.len
^_,RR(
,4LDalM
LDalM.
alue.ht
^_4(,4_
+LDalM
L/DalM.
alue.lal
^_D(,4_
+LDalM
L/DalM.
alue.#al
^_STR(,
4_+
LDal_pM
L/DalM.
alue.str.al
^_STR4E
N_+
LDal_pM
L/DalM.
alue.str.len
^_,RR(
,4_+
LDal_pM
L/DalM.
alue.ht
^_4(,4_
++
LDal_ppM
L//DalM.
alue.lal
^_D(,4_
++
LDal_ppM
L//DalM.
alue.#al
^_STR(,
4_++
LDal_ppM
L//DalM.
alue.str.al
^_STR4E
N_++
LDal_ppM
L//DalM.
alue.str.len
^_,RR(
,4_++
LDal_ppM
L//DalM.
alue.ht
CIII. PHP API- Interfaces para autores de
e+tensiones
Tabla de contenidos
K7; AP. de ecuencia para Autores de +Ftensiones P&P
Captulo <7. API de ,ecuencia para Autores de
E+tensiones PHP
Feneralidades
La AP. de ecuencias de P&P introduce un en(o/ue uni(icado a la gesti-n de archivos y soc"ets en
eFtensiones P&P; @sando una AP. Bnica con (unciones est*ndar para operaciones comunesA la AP.
de secuencias le permite a su eFtensi-n acceder a archivosA soc"etsA @RLsA memoria y o#'etos
de(inidos por2script; +sta es una AP. eFtensi#le de tiempo de e'ecuci-n /ue permite la carga
din*mica de m-dulos >fy scriptsa? para registrar nuevas secuencias;
+l prop-sito de la AP. de secuencias es (acilitar la apertura de archivosA @RLs y otras (uentes de
datos secuencia#les a los desarrolladoresA mediante una AP. uni(icada /ue es (*cil de entender; La
AP. se encuentra m*s o menos #asada en la (amilia de (unciones AN. 5 stdio >con una sem*ntica
id<ntica para la mayor)a de sus (unciones principales?A as) /ue los progamadores de 5 tendr*n una
sensaci-n de (amiliaridad con las secuencias;
La AP. de secuencias opera en un par de niveles di(erentesC al nivel #aseA la AP. de(ine o#'etos
phpZstream para representar (uentes de datos secuencia#les; +n un nivel ligeramente m*s altoA la
AP. de(ine o#'etos phpZstreamZErapper /ue =envuelven= la AP. de nivel m*s #a'o para proveer
soporte para la recuperaci-n de datos y meta2datos desde @RLs; @n par*metro de conte8to
adicionalA aceptado por la mayor)a de (unciones de creaci-n de secuenciaA es pasado al m<todo
stream_opener de la envoltura para con(igurar en detalle el comportamiento de la misma;
5ual/uier secuenciaA una vez a#iertaA puede tener tam#i<n cual/uier nBmero de 96ltros aplicados
so#re ellaA los cuales procesan datos en la medida en /ue <stos son le)dos desdeDescritos hacia la
secuencia;
Las secuencias pueden ser moldeadas >convertidas? a otros tipos de gestores de archivoA de modo
/ue puedan ser usadas con #i#liotecas eFternas sin mucho pro#lema; +sto permite /ue a/uellas
#i#liotecas accedan a datos directamente desde (uentes tipo @RL; i su sistema tiene la (unci-n
fopencooBie./ o funopen./A fpuede pasar incluso cual/uier secuencia P&P a cual/uier #i#lioteca
/ue use stdio AN.a
Nota- Las (unciones en este cap)tulo son para su uso en el c-digo (uente de P&P y no
son (unciones de P&P; Las (unciones de secuencias para usuarios pueden encontrarse en
la Re(erencia de ecuencias;
Conceptos 1sicos de ,ecuencias
+l uso de secuencias es #astante similar al uso de (unciones stdio AN.; La principal di(erencia est*
en el modo en /ue o#tiene en un principo el gestor de la secuencia; +n la mayor)a de casosA usted
usar* php>stream>open>3rapper./ para o#tener el gestor de secuencia; +sta (unci-n tra#a'a de
(orma muy similar a (openA y puede apreciarse en el siguiente e'emploC
E'emplo <7(!. e'emplo simple de secuencia ?ue despliega la pgina de inicio de PHP
php%stream W stream > php%stream%open%8rapper3"http@//888.php.net", "rb", 'E?'*%E''?'&, .+OO9;
i# 3stream9 :
8hile3!php%stream%eo#3stream99 :
char bu#)62C1/;

i# 3php%stream%Eets3stream, bu#, si0eo#3bu#999 :
print#3bu#9;
; else :
breaI;
;
;
php%stream%close3stream9;
;
La ta#la a continuaci-n muestra los Walentes de ecuencia a las (unciones m*s comunes de stdio
AN.; A menos /ue se note lo contrarioA las sem*nticas de las (unciones son id<nticas;
Tabla <7(!. ;unciones Walentes a stdio AN,I en la API de ,ecuencias
;unci"n ,tdio
AN,I
;unci"n de
,ecuencias PHP
Notas
(open
phpZstreamZopenZE
rapper
Las secuencias incluyen par*metros opcionales
(close phpZstreamZclose
(gets phpZstreamZgets
(read phpZstreamZread
e asume /ue el par*metro nmem# tiene un valor de 1A as)
/ue el prototipo luce m*s como read>0?
;unci"n ,tdio
AN,I
;unci"n de
,ecuencias PHP
Notas
(Erite phpZstreamZErite
e asume /ue el par*metro nmem# tiene un valor de 1A as)
/ue el prototipo luce m*s como Erite>0?
(see" phpZstreamZsee"
(tell phpZstreamZtell
reEind phpZstreamZreEind
(eo( phpZstreamZeo(
(getc phpZstreamZgetc
(putc phpZstreamZputc
((lush phpZstreamZ(lush
puts phpZstreamZputs La misma sem*ntica /ue putsA NO (puts
(stat phpZstreamZstat Las secuencias tienen una estructura stat m*s rica
:as ,ecuencias como Mecursos
,odas las secuencias son registradas como recursos cuando son creadas; +sto asegura /ue sean
limpiadas apropiadamente incluso si ocurre un error (atal; ,odas las (unciones del sistema de
archivos en P&P operan so#re recursos de secuencia 2 lo /ue /uiere decir /ue sus eFtensiones
pueden aceptar apuntadores de archivo P&P normales como par*metros tam#i<nA y devolver
secuencias desde sus (unciones; La AP. de secuencias hace este proceso tan simple como es posi#leC
E'emplo <7(*. C"mo aceptar una secuencia como parmetro
H%S+.R*4?.3ejemplo%escribir%hola9
:
0=al W0stream;
php%stream Wstream;

i# 3S,4O+'E >> 0end%parse%parameters3YE.L%.+"%,'-&39 *&'"O&%RR, "r", &0stream99
return;

php%stream%#rom%0=al3stream, &0stream9;
/W ahora puede usar la secuencia. &in embarEo, usted no es el
"duenyo" de la secuencia, lo es el script. Eso Quiere decir Que
usted .? LEZE cerrar la secuencia, ya Que producira un #allo en
H! W/
php%stream%8rite3stream, "holaVn"9;

'E*+'.%*'+E39;
;
E'emplo <7(7. C"mo de5ol5er una secuencia desde una funci"n
H%S+.R*4?.3ejemplo%abrir%paEina%php9
:
php%stream Wstream;

stream > php%stream%open%8rapper3"http@//888.php.net", "rb", 'E?'*%E''?'&, .+OO9;

php%stream%to%0=al3stream, return%=alue9;
/W despues de este punto, el duenyo de la secuencia es el
script. &i la cierra ahora, hara Que H #alle! W/
;
%a /ue las secuencias son limpiadas autom*ticamenteA es tentador pensar /ue tenemos la
oportunidad de ser programadores mediocres y no preocuparnos por cerrar las secuencias cuando
hayamos terminado con ellas; Aun/ue tal en(o/ue podr)a (uncionarA no es una #uena idea por varias
razonesC las secuencias mantienen #lo/ueos so#re recursos del sistema mientras est*n a#iertasA as)
/ue de'ar un archivo a#ierto despu<s /ue ha terminado de usarlo puede prevenir /ue otros procesos
tengan acceso a los recursos; i un script mane'a un gran nBmero de archivosA el con'unto de los
recursos usadosA tanto en t<rminos de memoria y el eFagerado nBmero de archivos a#iertosA puede
producir /ue las peticiones al servidor Ee# (allen; uena malA Uno es as)N La AP. de secuencias
incluye algo de magia /ue le ayuda a mantener su c-digo limpio 2 si una secuencia no es cerrada por
su c-digo cuando de#er)a hacerloA encontrar* un poco de in(ormaci-n Btil de depuraci-n en su
registro de errores del servidor Ee#;
Nota- iempre use una versi-n de P&P compilada para depuraci-n cuando desarrolle
una eFtensi-n >==ena1le=#e1uE cuando e'ecute con(igure?A ya /ue se ha hecho un gran
es(uerzo para advertirle so#re (ugas de memoria y secuencias;
+n algunos casosA es Btil mantener una secuencia a#ierta durante la duraci-n de una petici-nA para
actuar como un registro o rastrear un archivoA por e'emplo; +scri#ir el c-digo necesario para limpiar
de manera segura ese tipo de secuencia no es di()cilA pero se trata de varias l)neas de c-digo /ue no
es escrictamente necesario; Para evitarse los pro#lemas de escri#ir a/u<l c-digoA puede marcar una
secuencia para /ue sea apta para una auto2limpieza; Lo /ue /uiere decir esto es /ue la AP. de
secuencias no emitir* una advertencia cuando sea momento de auto2limpiar una secuencia; Para
hacer estoA puede usar php>stream>auto>cleanup./;
Meferencia de la API Com4n de ,ecuencias
Tabla de contenidos
phpZstreamZstatZpath 22 O#tiene el status de un archivo o @RL
phpZstreamZstat 22 O#tiene el status del almacenamiento interno asociado con una secuencia
phpZstreamZopenZErapper 22 A#re una secuencia so#re un archivo o @RL
phpZstreamZread 22 Leer un nBmero de #ytes desde una secuencia a un #B(er
phpZstreamZErite 22 +scri#ir un nBmedo de #ytes desde un #B(er a una secuencia
phpZstreamZeo( 22 5he/uear por una condici-n de (in2de2archivo en una secuencia
phpZstreamZgetc 22 Leer un #yte Bnico desde una secuencia
phpZstreamZgets 22 Leer una l)nea de datos desde una secuencia a un #B(er
phpZstreamZclose 22 5errar una secuencia
phpZstreamZ(lush 22 $olcar los #B(eres de secuencia a la unidad de almacenamiento
phpZstreamZsee" 22 Reu#icar una secuencia
phpZstreamZtell 22 Determinar la posici-n de una secuencia
phpZstreamZcopyZtoZstream 22 5opiar datos de una secuencia a otra
phpZstreamZcopyZtoZmem 22 5opiar datos de una secuencia en un #B(er reservado
phpZstreamZma"eZsee"a#le 22 5onvertir una secuencia a una secuencia reu#ica#le
phpZstreamZcast 22 5onvertir una secuencia a otra (ormaA como un F.L+V o un soc"et
phpZstreamZcanZcast 22 Determina si una secuencia puede ser convertida en otra (ormaA como un
F.L+V o un soc"et
phpZstreamZisZpersistent 22 Determina si una secuencia es persistente
phpZstreamZis 22 Determina si una secuencia es de un tipo particular
phpZstreamZpassthru 22 .mprime todos los datos restantes de una secuencia
phpZregisterZurlZstreamZErapper 22 Registra una envoltura con la AP. de ecuencias
phpZunregisterZurlZstreamZErapper 22 Retira el registro de una envoltura de la AP. de ecuencias
phpZstreamZopenZErapperZeF 22 A#re una secuencia so#re un archivo o @RLA especi(icando el
conteFto
phpZstreamZopenZErapperZasZ(ile 22 A#re una secuencia so#re un archivo o @RLA y lo convierte a
F.L+V
phpZstreamZ(ilterZregisterZ(actory 22 Registra una (*#rica de (iltros con la AP. de ecuencias
phpZstreamZ(ilterZunregisterZ(actory 22 Retira el registro de una (*#rica de (iltros con la AP. de
secuencias
php>stream>stat>path
>no version in(ormationA might #e only in 5$?
phpZstreamZstatZpath 22 O#tiene el status de un archivo o @RL
Kescripci"n
int php>stream>stat>path > char V rutaA phpZstreamZstat#u( V ss# ?
php>stream>stat>path./ eFamina el archivo o @RL especi(icado por ruta y devuelve in(ormaci-n
tal como el tamaWo del archivoA los tiempos de acceso y creaci-n y dem*s; +l valor de retorno es 3
de tener <FitoA 1 en caso de error; Para m*s in(ormaci-n so#re la in(ormaci-n devueltaA vea
phpZstreamZstat#u(;
php>stream>stat
>no version in(ormationA might #e only in 5$?
phpZstreamZstat 22 O#tiene el status del almacenamiento interno asociado con una secuencia
Kescripci"n
int php>stream>stat > phpZstream V secuenciaA phpZstreamZstat#u( V ss# ?
php>stream>stat./ eFamina el almacenamiento al /ue est* su'eto la secuenc6aA y devuelve
in(ormaci-n como el tamaWo de archivoA las (echas de acceso y creaci-n y dem*s; +l valor de
retorno es 3 en caso de <FitoA 21 si ocurre un error; Para m*s in(ormaci-n so#re la in(ormaci-n
devueltaA vea phpZstreamZstat#u(;
php>stream>open>3rapper
>no version in(ormationA might #e only in 5$?
phpZstreamZopenZErapper 22 A#re una secuencia so#re un archivo o @RL
Kescripci"n
phpZstream V php>stream>open>3rapper > char V rutaA char V modoA int opcionesA char VV
a#ierto ?
php>stream>open>3rapper./ a#re una secuencia so#re el archivoA @RLA u otro recurso envuelto
indicado por ruta; Dependiendo del valor de mo#oA la secuencia puede ser a#ierta para lecturaA
escrituraA adici-n o alguna com#inaci-n de <stos modos; $ea la ta#la m*s adelante para conocer los
di(erentes modos /ue pueden ser usadosX adicionalmente a los caracteres listados m*s a#a'oA puede
incluir el caracter H#H ya sea como el segundo o Bltimo caracter en la cadena de modo; La presencia
del caracter H#H le in(orma a la implementaci-n de secuencias en cuesti-n /ue a#ra la secuencia en
modo seguro con material #inario;
+l caracter H#H es ignorado en todos los sistemas compati#les con PO.JA /ue tratan los archivos
#inarios y de teFto en la misma manera; +s una #uena idea especi(icar el caracter H#H cuando su
secuencia tra#a'e con datos en donde todos los M #its son importantesA de modo /ue su c-digo
(uncione cuando sea compilado en un sistema en donde la #andera H#H es importante;
5ual/uier archivo local creado por la AP. de secuencias tendr* sus permisos iniciales de(inidos de
acuerdo a los valores predeterminados del sistema operativo 2 #a'o sistemas #asados en @niF esto
/uiere decir /ue se usar* el valor umas" del proceso; Ba'o LindoEsA el dueWo del archivo ser* el
proceso /ue lo origin-; ,odo archivo remoto ser* creado de acuerdo a la envoltura de @RL /ue
(uera usada para a#rir el archivoA y las credenciales entregadas al servidor remoto;
r
A#re un archivo de teFto para lectura; La secuencia es u#icada al comienzo del archivo;
r@
A#re un archivo de teFto para lectura y escritura; La secuencia es u#icada el comienzo del
archivo;
8
,runca el archivo a una longitud de ceroA o crea el archivo de teFto para escritura; La
secuencia es u#icada al comienzo del archivo;
8@
A#re un archivo de teFto para lectura y escritura; +l archivo es creado si no eFisteA o de otra
(orma es truncado; La secuencia es u#icada al comienzo del archivo;
a
A#re para escritura; +l archivo es creado si no eFiste; La secuencia es u#icada al (inal del
archivo;
a@
A#re un archivo de teFto para lectura y escritura; +l archivo es creado si no eFiste; La
secuencia es u#icada al (inal del archivo;
opc6ones a(ecta el modo en /ue se interpreta la rutaD@RL de la secuenciaA los che/ueos de modo
seguro y las acciones tomadas si hay un error durante la apertura de la secuencia; $ea Opciones de
apertura de secuencia para m*s in(ormaci-n so#re las opciones;
i a16erto es di(erente a N@LLA <ste par*metro ser* de(inido como una cadena /ue contiene el
nom#re del archivoDrecurso real /ue (ue a#ierto; +sto es importante cuando las opciones incluyen
USE_PATHA valor /ue causa /ue includeZpath sea usado en #usca del archivo; @stedA el origen de la
llamadaA es responsa#le de llamar efree./ so#re el nom#re de archivo devuelto en este par*metro;
Nota- i ha especi(icado STREAM_MUST_SEE& en opc6onesA la ruta devuelta en
a16erto puede no ser el nom#re de la secuencia real /ue le (ue devuelta; in em#argoA
ser* el nom#re del recurso original desde el cual se manu(actur- la secuencia sensi#le a
#Bs/uedas;
php>stream>read
>no version in(ormationA might #e only in 5$?
phpZstreamZread 22 Leer un nBmero de #ytes desde una secuencia a un #B(er
Kescripci"n
sizeZt php>stream>read > phpZstream V secuenciaA char V #u(A sizeZt conteo ?
php>stream>read./ lee hasta conteo #ytes de datos desde secuenc6a y los copia en el #B(er 1u9;
php>stream>read./ devuelve el nBmero de #ytes /ue (ueron le)dos satis(actoriamente; No hay
distinci-n entre una lectura (allida o una condici-n de (inal2de2archivo 2 use php>stream>eof./ para
revisar si se encuentra en EOF;
La posici-n interna de la secuencia es desplazada hacia adelante por el nBmero de #ytes /ue (ueron
le)dosA de modo /ue las lecturas su#siguientes continuar*n desde ese punto;
i hay menos de conteo #ytes disponi#les para su lecturaA <sta llamada crear* un #lo/ueo >esperar*?
hasta /ue el nBmero re/uerido se encuentre disponi#leA dependiendo del status de #lo/ueo de la
secuencia; Por de(ectoA una secuencia es a#ierta en modo de #lo/ueo; 5uando se lee desde archivos
regularesA el modo de #lo/ueo usualmente no representar* ninguna di(erenciaC cuando la secuencia
alcance el EOFA php>stream>read./ devolver* un valor menor /ue conteoA y 3 en cual/uier lectura
su#siguiente;
php>stream>3rite
>no version in(ormationA might #e only in 5$?
phpZstreamZErite 22 +scri#ir un nBmedo de #ytes desde un #B(er a una secuencia
Kescripci"n
sizeZt php>stream>3rite > phpZstream V secuenciaA const char V #u(A sizeZt conteo ?
php>stream>3rite./ escri#e conteo #ytes de datos desde 1u9 en secuenc6a;
php>stream>3rite./ devuelve el nBmero de #ytes /ue (ueron escritos satis(actoriamente; i hu#o
un errorA el nBmero de #ytes escritos ser* menor /ue conteo;
La posici-n interna de la secuencia es desplazada hacia adelante en el nBmero de #ytes /ue (ueron
escritosA de modo /ue cual/uier escritura su#siguiente continuar* desde ese punto;
php>stream>eof
>no version in(ormationA might #e only in 5$?
phpZstreamZeo( 22 5he/uear por una condici-n de (in2de2archivo en una secuencia
Kescripci"n
int php>stream>eof > phpZstream V secuencia ?
php>stream>eof./ che/uea por una condici-n de (in2de2archivo en secuenc6a;
php>stream>eof./ devuelve 1 para indicar EOFA 3 si no hay EOF y 21 para indicar un error;
php>stream>getc
>no version in(ormationA might #e only in 5$?
phpZstreamZgetc 22 Leer un #yte Bnico desde una secuencia
Kescripci"n
int php>stream>getc > phpZstream V secuencia ?
php>stream>getc./ lee un caracter Bnico desde secuenc6a y lo devuelve como un char sin signoA
moldeado como un intA o EOF si se ha llegado al (in2de2archivoA u ocurri- un error;
php>stream>getc./ puede #lo/uear en el mismo modo en /ue #lo/uea php>stream>read./;
La posici-n interna de la secuencia es desplazada hacia adelante en 1 si tiene <Fito;
php>stream>gets
>no version in(ormationA might #e only in 5$?
phpZstreamZgets 22 Leer una l)nea de datos desde una secuencia a un #B(er
Kescripci"n
char V php>stream>gets > phpZstream V secuenciaA char V #u(A sizeZt conteo ?
php>stream>gets./ lee hasta conteo21 #ytes de datos desde secuenc6a y los copia en el #B(er 1u9; La
lectura se detiene luego de un EOF o una nueva l)nea; i una nueva l)nea es le)daA <sta es
almacenada en 1u9 como parte de los datos devueltos; @n caracter de terminaci-n N@L es
almacenado como el Bltimo caracter en el #B(er;
php>stream>read./ devuelve 1u9 de tener <FitoA o N@LL de lo contrario;
La posici-n interna de la secuencia es desplazada hacia adelante en el nBmero de #ytes /ue (ueron
le)dosA de modo /ue cual/uier lectura su#siguiente continuar* a partir de ese punto;
+sta (unci-n puede #lo/uear en el mismo modo en /ue lo hace php>stream>read./;
php>stream>close
>no version in(ormationA might #e only in 5$?
phpZstreamZclose 22 5errar una secuencia
Kescripci"n
int php>stream>close > phpZstream V secuencia ?
php>stream>close./ cierra de (orma segura la secuenc6a y li#era los recursos asociados con ella;
Luego de /ue la secuenc6a ha sido cerradaA su valor es inde(inido y no de#e ser usado;
php>stream>close./ devuelve 3 si la secuencia (ue cerradaA o EOF para indicar un error;
.ndependientemente del <Fito de la llamadaA secuenc6a se hace inde(inida y no de#e ser usada
despu<s de una llamada a esta (unci-n;
php>stream>flush
>no version in(ormationA might #e only in 5$?
phpZstreamZ(lush 22 $olcar los #B(eres de secuencia a la unidad de almacenamiento
Kescripci"n
int php>stream>flush > phpZstream V secuencia ?
php>stream>flush./ produce /ue cual/uier dato retenido en los #B(eres de escritura de la secuenc6a
sean aplicados a la unidad de almacenamiento interna;
php>stream>flush./ devuelve 3 si los #B(eres (ueron volcadosA o si los <stos no necesita#an ser
volcadosA y devuelve EOF para indicar un error;
php>stream>seeB
>no version in(ormationA might #e only in 5$?
phpZstreamZsee" 22 Reu#icar una secuencia
Kescripci"n
int php>stream>seeB > phpZstream V secuenciaA o((Zt desplazamientoA int aZpartirZde ?
php>stream>seeB./ reu#ica la posici-n interna de secuenc6a; La nueva posici-n es determinada al
sumar el #esplaDam6ento a la posici-n indicada por a_part6r_#e; i a_part6r_#e es de(inido como
SEE&_SETA SEE&_CUR o SEE&_ENDA el desplazamiento es relativo al comienzo de la secuenciaA
la posici-n actual o el (inal de la secuenciaA respectivamente;
php>stream>seeB./ devuelve 3 de tener <FitoA y 21 si ocurri- un error;
Nota- No todas las secuencias soportan la reu#icaci-nA aun/ue la AP. de secuencias
emular* la operaci-n si a_part6r_#e es de(inido como SEE&_CUR y #esplaDam6ento es
un valor positivoA llamando php>stream>read./ para leer >y descartar? tantos #ytes
como el valor de #esplaDam6ento;
La emulaci-n es aplicada Bnicamente cuando la implementaci-n interna de la secuencia
no soporta la reu#icaci-n; i la secuencia es >por e'emplo? una secuencia #asada en
archivos /ue se encuentra envolviendo un pipe no2reu#ica#leA la api de secuencias no
aplicar* la emulaci-n ya /ue la secuencia #asada en archivos implementa la operaci-nX
la reu#icaci-n (allar* y se devolver* un resultado de error a la (unci-n /ue hace la
llamada;
php>stream>tell
>no version in(ormationA might #e only in 5$?
phpZstreamZtell 22 Determinar la posici-n de una secuencia
Kescripci"n
o((Zt php>stream>tell > phpZstream V secuencia ?
php>stream>tell./ devuelve la posici-n interna de secuenc6aA relativa al comienzo de la misma; i
ocurre un errorA el valor 21 es devuelto;
php>stream>copy>to>stream
>no version in(ormationA might #e only in 5$?
phpZstreamZcopyZtoZstream 22 5opiar datos de una secuencia a otra
Kescripci"n
sizeZt php>stream>copy>to>stream > phpZstream V (uenteA phpZstream V destinoA sizeZt longZmaF
?
php>stream>copy>to>stream./ intenta leer hasta lonE_ma8 #ytes de datos desde 9uente y los
escri#e en #est6noA y devuelve el nBmero de #ytes /ue (ueron copiados satis(actoriamente;
i desea copiar todos los datos restantes de la secuencia 9uenteA pase la constante
PHP_STREAM_COPY_ALL como el valor de lonE_ma8;
Nota- +sta (unci-n intentar* copiar los datos en la manera m*s e(iciente posi#leA usando
archivos re(erenciados en memoria cuando sea posi#le;
php>stream>copy>to>mem
>no version in(ormationA might #e only in 5$?
phpZstreamZcopyZtoZmem 22 5opiar datos de una secuencia en un #B(er reservado
Kescripci"n
sizeZt php>stream>copy>to>mem > phpZstream V (uenteA char VV #u(A sizeZt longZmaFA int
persistente ?
php>stream>copy>to>mem./ reserva un #B(er de lonE_ma8R1 #ytes de longitud usando pemalloc
./ >pasando pers6stente?; Luego lee lonE_ma8 #ytes desde 9uente y los almacena en el #B(er
reservado;
+l #B(er reservado es devuelto en 1u9A y el nBmero de #ytes le)dos satis(actoriamente; @stedA el
origen de la llamadaA es responsa#le de li#erar el #B(erA pasando <ste y el par*metro pers6stente a
pefree./;
i desea copiar todos los datos restantes de la secuencia 9uenteA pase la constante
PHP_STREAM_COPY_ALL como el valor de lonE_ma8;
Nota- +sta (unci-n intentar* copiar los datos en la manera m*s e(iciente posi#leA usando
archivos re(erenciados en memoria cuando sea posi#le;
php>stream>maBe>seeBable
>no version in(ormationA might #e only in 5$?
phpZstreamZma"eZsee"a#le 22 5onvertir una secuencia a una secuencia reu#ica#le
Kescripci"n
int php>stream>maBe>seeBable > phpZstream V secuenciaZorigenA phpZstream VV
secuenciaZnuevaA int #anderas ?
php>stream>maBe>seeBable./ che/uea si secuenc6a_or6Een es reu#ica#le; i no lo esA copiar* los
datos en una nueva secuencia temporal; i tiene <FitoA secuenc6a_nuea es siempre de(inida como la
secuencia de uso v*lidoA incluso cuando la secuencia original era reu#ica#le;
1an#eras le permite especi(icar sus pre(erencias para la secuencia reu#ica#le /ue es devueltaC use
PHP_STREAM_NO_PREFERENCE para usar la secuencia reu#ica#le predeterminada >/ue usa un
#B(er de memoria eFpansi#le din*micamenteA pero cam#ia a un tipo de almacenamiento respaldado
en un archivo temporal cuando el tamaWo de la secuencia se hace m*s largo?A o use
PHP_STREAM_PREFER_STDIO para indicar el tipo de almacenamiento =regular=A respaldado en
un archivo temporal;
Tabla <7(!. Calores de retorno de php>stream>maBe>seeBable./
Calor ,ignificado
P&PZ,R+AMZ@N
5&ANG+D
La secuencia original era reu#ica#le en cual/uier caso; secuenc6a_nuea es
de(inida al valor de seuenc6a_or6E6nal;
P&PZ,R+AMZR+L
+A+D
La secuencia original no era reu#ica#le y ha sido li#erada;
secuenc6a_nuea es de(inida como la nueva secuencia reu#ica#le; @sted no
de#e usar m*s valor de secuenc6a_or6E6nal;
P&PZ,R+AMZFA.
L+D
@n error ocurri- mientras se intenta#a la conversi-n; secuenc6a_nuea se
de(ine como N@LLX secuenc6a_or6E6nal sigue siendo v*lida;
P&PZ,R+AMZ5R.
,.5AL
@n error ocurri-n durante el intento de conversi-n /ue ha de'ado a
secuenc6a_or6E6nal en un estado indeterminado; secuenc6a_nuea se de(ine
como N@LL y es altamente recomenda#le /ue usted cierre
secuenc6a_or6E6nal;
Nota- i necesita reu#icar y escri#ir a la secuenciaA no tiene sentido /ue use esta
(unci-nA ya /ue no se garantiza /ue la secuencia /ue devuelve est< asociada con el
mismo recurso /ue la secuencia original;
Nota- i s-lo necesita hacer #Bs/uedas de posici-n hacia adelanteA no hay necesidad de
llamar esta (unci-nA ya /ue la AP. de secuencias emular* las reu#icaciones hacia
adelante cuando el par*metro aZpartirZde es SEE&_CUR;
Nota- i secuenc6a_or6E6nal es #asada en redA esta (unci-n crear* un #lo/ueo hasta /ue
los contenidos completos hayan sido descargados;
Nota- fN@N5A llame esta (unci-n con una secuenc6a_or6E6nal /ue sea una re(erencia
por un apuntador de archivo en un script P&Pa f+sta (unci-n puede causar /ue la
secuencia interna sea cerradaA cosa /ue causar)a un (allo en el programa cuando el script
acceda nuevamente al apuntador de archivoa
Nota- +n muchos casosA esta (unci-n s-lo puede tener <Fito cuando secuenc6a_or6E6nal
es una secuencia a#ierta recientemente sin datos en #B(er en la capa de la secuencia; Por
esa raz-nA y dado /ue es di()cial usar correctamente esta (unci-nA es recomenda#le /ue
use php>stream>open>3rapper./ y pase el valor PHP_STREAM_MUST_SEE& en sus
opciones en lugar de llamar esta (unci-n directamente;
php>stream>cast
>no version in(ormationA might #e only in 5$?
phpZstreamZcast 22 5onvertir una secuencia a otra (ormaA como un F.L+V o un soc"et
Kescripci"n
int php>stream>cast > phpZstream V secuenciaA int moldearZcomoA void VV retA int #anderas ?
php>stream>cast./ intenta convertir secuenc6a a un recurso indicado por mol#ear_como; i ret es
N@LLA la secuencia es consultada para conocer si tal conversi-n es posi#leA sin e(ectuar realmente
la conversi-n >sin em#argoA algBn estado interno de secuencias VpuedeV ser modi(icado en este
caso?; i 1an#eras es de(inido como REPORT_ERRORSA se mostrar* un mensa'e de error si hay un
error durante la conversi-n;
Nota- +sta (unci-n devuelve SUCCESS en caso de tener <FitoA o FAILURE si (alla;
Advierta /ue usted de#e comparar eFpl)citamente el valor de retorno con SUCCESS o
FAILURE de#ido a los valores internos de <stas constantes; @na simple eFpresi-n
#ooleana no ser* interpretada como usted puede esperar;
Tabla <7(!. Tipos de recurso para &oldear_co&o
Calor ,ignificado
P&PZ,R+AMZAZ,D.O olicita un F.L+V AN. /ue represente la secuencia
P&PZ,R+AMZAZFD
olicita un descriptor de archivo PO.J /ue represente la
secuencia
P&PZ,R+AMZAZO5S+,
D
olicita un descriptor de soc"et de red /ue represente la
secuencia
Adicionalmente a los tipos de recurso #*sicos mencionados anteriormenteA el proceso de conversi-n
puede ser alterado mediante el uso de las siguientes #anderasA al usar el operador OR para com#inar
el tipo de recurso con uno o m*s de los siguientes valoresC
Tabla <7(*. Tipos de recurso para &oldear_co&o
Calor ,ignificado
P&PZ,R+AMZ
5A,Z,R%Z&
ARD
.ntenta lo me'or posi#leA al precio de recursos adicionalesA para asegurarse de
/ue la conversi-n tenga <Fito
P&PZ,R+AMZ
5A,ZR+L+A
+
Le in(orma a la AP. de secuencias /ue otra (uente de c-digo >posi#lemente una
#i#lioteca de algBn tercero? ser* responsa#le de cerrar el recursoDgestor interno;
+sto causa /ue la secuenc6a sea cerrada de (orma tal /ue el gestor interno es
conservado y devuelto en ret; i esta (unci-n tiene <FitoA la secuenc6a de#e ser
considerada cerrada y no de#e ser usada m*s;
Nota- i su sistema soporta el uso de fopencooBie./ >sistemas con gli#c 0 o versiones
posteriores?A la AP. de secuencias ser* capaz siempre de sintetizar un apuntador F.L+V
AN. so#re cual/uier secuencia; Aun/ue esto es tremendamente Btil para pasar
cual/uier secuencia P&P a cual/uier #i#lioteca de tercerosA tal comportamiento no es
porta#le; +s necesario /ue considere las implicaciones de porta#ilidad antes de distri#uir
su eFtensi-n; i la s)ntesis (opencoo"ie no es desea#leA de#e consultar a la secuencia
para ver si <sta soporta F.L+V de (orma natural mediante el uso de php>stream>is./
Nota- i solicita una secuencia #asada en soc"ets para un F.L+VA la AP. de secuencias
usar* fdopen./ para crearlo por usted; Advierta /ue hacer esto puede causar la p<rdida
de datos /ue (ueran puestos en #B(er en la capa de secuencias si usted entremezcla las
llamadas de la AP. de secuencias con llamadas stdio AN.;
$ea tam#i<n php>stream>is./ y php>stream>can>cast./;
php>stream>can>cast
>no version in(ormationA might #e only in 5$?
phpZstreamZcanZcast 22 Determina si una secuencia puede ser convertida en otra (ormaA como un
F.L+V o un soc"et
Kescripci"n
int php>stream>can>cast > phpZstream V secuenciaA int moldearZcomo ?
+sta (unci-n es Walente a llamar php>stream>cast./ con ret de(inido como N@LL y 1an#eras
de(inido como 3; Devuelve SUCCESS si la secuencia puede ser convertida a la (orma solicitadaA o
FAILURE si la conversi-n no puede ser e(ectuada;
Nota- Aun/ue esta (unci-n no realizar* la conversi-nA algBn estado interno de
secuencias VpuedeV ser modi(icado por esta llamada;
Nota- @sted de#e comparar eFpl)citamente el valor de retorno de <sta (unci-n con una
de las constantesA tal y como se descri#e en php>stream>cast./;
$ea tam#i<n php>stream>cast./ y php>stream>is./;
php>stream>is>persistent
>no version in(ormationA might #e only in 5$?
phpZstreamZisZpersistent 22 Determina si una secuencia es persistente
Kescripci"n
int php>stream>is>persistent > phpZstream V secuencia ?
php>stream>is>persistent./ devuelve 1 si la secuencia es persistenteA o 3 de lo contrario;
php>stream>is
>no version in(ormationA might #e only in 5$?
phpZstreamZis 22 Determina si una secuencia es de un tipo particular
Kescripci"n
int php>stream>is > phpZstream V secuenciaA int esZdelZtipo ?
php>stream>is./ devuelve 1 si secuenc6a es del tipo especi(icado por es_#el_t6poA o 3 de lo
contrario;
Tabla <7(!. Calores para es_del_tipo
Calor ,ignificado
P&PZ,R+AMZ.Z,D.
O
La secuencia es implementada usando stdio
P&PZ,R+AMZ.ZO5S
+,
La secuencia es implementada usando un soc"et de red
Calor ,ignificado
P&PZ,R+AMZ.Z@+R
PA5+
La secuencia es implementada usando un o#'eto de espacio de
usuario
P&PZ,R+AMZ.ZM+M
OR%
La secuencia es implementada usando una secuencia con memoria
/ue crece a medida /ue es solicitada
Nota- Las =constantes= P&PZ,R+AMZ.ZJJJ son de(inidas en realidad como
apuntadores a la estructura interna de operaciones de secuencia; i su eFtensi-n >o
alguna otra eFtensi-n? de(ine secuencias adicionalesA la eFtensi-n de#e declarar tam#i<n
una constante P&PZ,R+AMZ.ZJJJ en su archivo de ca#eceraA /ue usted pueda
usar como #ase para esta comparaci-n;
Nota- +sta (unci-n es implementada como una sencilla >y r*pida? comparaci-n de
apuntadoresA y no modi(ica el estado de la secuencia en (orma alguna;
$ea tam#i<n php>stream>cast./ y php>stream>can>cast./;
php>stream>passthru
>no version in(ormationA might #e only in 5$?
phpZstreamZpassthru 22 .mprime todos los datos restantes de una secuencia
Kescripci"n
sizeZt php>stream>passthru > phpZstream V secuencia ?
php>stream>passthru./ imprime todos los datos restantes de secuenc6a en el #B(er de salida activo
y devuelve el nBmero de #ytes escritos; i el uso de #B(eres est* desha#ilitadoA los datos son escritos
directamente a la salidaA la cual se re(iere al navegador /ue hace la petici-n en el caso de P&P so#re
un servidor Ee#A o stdout para c-digo P&P #asado en 5L.; +sta (unci-n usar* archivos
re(erenciados en memoria si es posi#le para me'orar el rendimiento;
php>register>url>stream>3rapper
>no version in(ormationA might #e only in 5$?
phpZregisterZurlZstreamZErapper 22 Registra una envoltura con la AP. de ecuencias
Kescripci"n
int php>register>url>stream>3rapper > char V protocoloA phpZstreamZErapper V envolturaA
,RMLZD5 ?
php>register>url>stream>3rapper./ registra enoltura como el gestor para el protocolo
especi(icado por protocolo;
Nota- i llama esta (unci-n desde un m-dulo carga#leA usted VD+B+V llamar
php>unregister>url>stream>3rapper./ en su (unci-n de cierre del m-duloA o de otro
modo P&P producir* un (allo;
php>unregister>url>stream>3rapper
>no version in(ormationA might #e only in 5$?
phpZunregisterZurlZstreamZErapper 22 Retira el registro de una envoltura de la AP. de ecuencias
Kescripci"n
int php>unregister>url>stream>3rapper > char V protocoloA ,RMLZD5 ?
php>unregister>url>stream>3rapper./ retira el registro de la envoltura asociada con protocolo;
php>stream>open>3rapper>e+
>no version in(ormationA might #e only in 5$?
phpZstreamZopenZErapperZeF 22 A#re una secuencia so#re un archivo o @RLA especi(icando el
conteFto
Kescripci"n
phpZstream V php>stream>open>3rapper>e+ > char V rutaA char V modoA int opcionesA char VV
a#iertoA phpZstreamZconteFt V conteFto ?
php>stream>open>3rapper>e+./ es eFactamente como php>stream>open>3rapper./A pero le
permite especi(icar un o#'eto phpZstreamZconteFt usando conte8to; Para conocer m*s so#re los
conteFtos de secuenciaA vea 5onteFtos de ecuencia;
php>stream>open>3rapper>as>file
>no version in(ormationA might #e only in 5$?
phpZstreamZopenZErapperZasZ(ile 22 A#re una secuencia so#re un archivo o @RLA y lo convierte a
F.L+V
Kescripci"n
F.L+ V php>stream>open>3rapper>as>file > char V rutaA char V modoA int opcionesA char VV
a#ierto ?
php>stream>open>3rapper>as>file./ es eFactamente como php>stream>open>3rapper./A pero
convierte la secuencia a un F.L+V AN. de stdio y devuelve <ste apuntador en lugar de la secuencia;
+ste es un ata'o conveniente para eFtensiones /ue pasan un valor F.L+V a las #i#liotecas de
terceros;
php>stream>filter>register>factory
>no version in(ormationA might #e only in 5$?
phpZstreamZ(ilterZregisterZ(actory 22 Registra una (*#rica de (iltros con la AP. de ecuencias
Kescripci"n
int php>stream>filter>register>factory > const char V patronZ(iltrosA phpZstreamZ(ilterZ(actory V
(a#rica ?
@se esta (unci-n para registrar una (*#rica de (iltros con el nom#re dado por patron_96ltros;
patron_96ltros puede ser un nom#re de cadena normal >como m6_96ltro? o un patr-n glo#al >es decirA
m6_clase_#e_96ltro./? para permitir /ue un (iltro Bnico realice di(erentes operaciones dependiendo
del nom#re eFacto del (iltro invocado >p;e'; m6_clase_#e_96ltro.9ooA m6_clase_#e_96ltro.1arA etc;;;?
Nota- Los (iltros registrados por una eFtensi-n carga#le de#en asegurarse de llamar
phpZstreamZ(ilterZunregisterZ(actory>? durante M&@,DOLN;
php>stream>filter>unregister>factory
>no version in(ormationA might #e only in 5$?
phpZstreamZ(ilterZunregisterZ(actory 22 Retira el registro de una (*#rica de (iltros con la AP. de
secuencias
Kescripci"n
int php>stream>filter>unregister>factory > const char V patronZ(iltros ?
Retira el registro de la 9a1r6ca_#e_96ltros especi(icada por el patron_96ltrosA de modo /ue no sigue
estando disponi#le para su uso;
Nota- Los (iltros registrados por una eFtensi-n carga#le de#en asegurarse de llamar
phpZstreamZ(ilterZunregisterZ(actory>? durante M&@,DOLN;
Meferencia de API de Kirectorios de ,ecuencias
Tabla de contenidos
phpZstreamZopendir 22 A#re un directorio para la enumeraci-n de archivos
phpZstreamZreaddir 22 Recuperar la siguiente entrada de directorio desde un directorio a#ierto
phpZstreamZreEinddir 22 Resta#lecer una secuencia de directorio a la primera entrada
phpZstreamZclosedir 22 5errar una secuencia de directorio y li#erar los recursos
Las (unciones listadas en esta secci-n tra#a'an so#re archivos localesA asi como so#re archivos
remotos >fprovisto /ue la envoltura soporta esta (uncionalidada?;
php>stream>opendir
>no version in(ormationA might #e only in 5$?
phpZstreamZopendir 22 A#re un directorio para la enumeraci-n de archivos
Kescripci"n
phpZstream V php>stream>opendir > char V rutaA phpZstreamZconteFt V conteFto ?
php>stream>opendir./ devuelve una secuencia /ue puede ser usada para listar los archivos
contenidos en el directorio especi(icado por ruta; +sta (unci-n es Walente en la pr*ctica a la (unci-n
PO.J opendir./; Aun/ue <sta (unci-n devuelve un o#'eto phpZstreamA no se recomienda usar las
(unciones de la AP. comBn so#re <stas secuencias;
php>stream>readdir
>no version in(ormationA might #e only in 5$?
phpZstreamZreaddir 22 Recuperar la siguiente entrada de directorio desde un directorio a#ierto
Kescripci"n
phpZstreamZdirent V php>stream>readdir > phpZstream V secuenciaZdirA phpZstreamZdirent V ent ?
php>stream>readdir./ lee la siguiente entrada de directorio desde secuenc6a_#6r y la almacena en
ent; i la (unci-n tiene <FitoA el valor de retorno es ent; i la (unci-n (allaA el valor de retorno es
N@LL; $ea phpZstreamZdirent para m*s detalles so#re la in(ormaci-n devuelta por cada entrada de
directorio;
php>stream>re3inddir
>no version in(ormationA might #e only in 5$?
phpZstreamZreEinddir 22 Resta#lecer una secuencia de directorio a la primera entrada
Kescripci"n
int php>stream>re3inddir > phpZstream V secuenciaZdir ?
php>stream>re3inddir./ resta#lece la secuencia de directorio a la primera entrada; Devuelve 3 en
caso de tener <FitoA o 21 de encontrar un (allo;
php>stream>closedir
>no version in(ormationA might #e only in 5$?
phpZstreamZclosedir 22 5errar una secuencia de directorio y li#erar los recursos
Kescripci"n
int php>stream>closedir > phpZstream V secuenciaZdir ?
php>stream>closedir./ cierra una secuencia de directorio y li#era los recursos asociados con ella;
Devuelve 3 de tener <FitoA y 21 en caso de (allo;
Meferencia de API de Archi5os de ,ecuencias
Tabla de contenidos
phpZstreamZ(openZ(romZ(ile 22 5onvertir un F.L+V AN. a una secuencia
phpZstreamZ(openZtmp(ile 22 A#rir un F.L+V con tmp(ile>? y convertirlo en una secuencia
phpZstreamZ(openZtemporaryZ(ile 22 Generar un nom#re de archivo temporal y a#rir una secuencia
so#re <l
php>stream>fopen>from>file
>no version in(ormationA might #e only in 5$?
phpZstreamZ(openZ(romZ(ile 22 5onvertir un F.L+V AN. a una secuencia
Kescripci"n
phpZstream V php>stream>fopen>from>file > F.L+ V archivoA char V modo ?
php>stream>fopen>from>file./ devuelve una secuencia #asada en el arch6o; mo#o de#e ser el
mismo modo usado para a#rir arch6oA o de otra (orma pueden presentarse errores eFtraWos cuando
intente escri#ir y el modo de la secuencia sea di(erente al modo so#re el archivo;
php>stream>fopen>tmpfile
>no version in(ormationA might #e only in 5$?
phpZstreamZ(openZtmp(ile 22 A#rir un F.L+V con tmp(ile>? y convertirlo en una secuencia
Kescripci"n
phpZstream V php>stream>fopen>tmpfile > void ?
php>stream>fopen>tmpfile./ devuelve una secuencia #asada en un archivo temporal a#ierto con el
modo =ER#=; +l archivo temporal ser* eliminado autom*ticamente cuando la secuencia es cerrada o
el proceso es terminado;
php>stream>fopen>temporary>file
>no version in(ormationA might #e only in 5$?
phpZstreamZ(openZtemporaryZ(ile 22 Generar un nom#re de archivo temporal y a#rir una secuencia
so#re <l
Kescripci"n
phpZstream V php>stream>fopen>temporary>file > const char V dirA const char V pre(A char VV
a#ierto ?
php>stream>fopen>temporary>file./ genera un nom#re de archivo temporal en el directorio
especi(icado por #6r y con el pre(i'o pre9; +l nom#re de archivo generado es devuelto en el
par*metro a16ertoA el cual usted de#e limpiar usando efree./; @na secuencia es a#ierta so#re ese
nom#re de archivo generado en modo =ER#=; +l archivo NO es eliminado autom*ticamenteX usted
es responsa#le de retirar el enlace o mover el archivo cuando haya terminado de tra#a'ar con <l;
Meferencia de API de ,ocBets de ,ecuencia
Tabla de contenidos
phpZstreamZsoc"ZopenZ(romZsoc"et 22 5onvertir un descriptor de soc"et en una secuencia
phpZstreamZsoc"ZopenZhost 22 A#rir una coneFi-n con un servidor hu<sped y devolver una
secuencia
phpZstreamZsoc"ZopenZuniF 22 A#rir un soc"et de dominio @niF y convertirlo en una secuencia
php>stream>socB>open>from>socBet
>no version in(ormationA might #e only in 5$?
phpZstreamZsoc"ZopenZ(romZsoc"et 22 5onvertir un descriptor de soc"et en una secuencia
Kescripci"n
phpZstream V php>stream>socB>open>from>socBet > int soc"etA int persistente ?
php>stream>socB>open>from>socBet./ devuelve una secuencia #asada en el soc>et; pers6stente es
una #andera /ue controla si la secuencia es a#ierta como una secuencia persistente; Por lo generalA
este par*metro ser* 3 en un gran nBmero de casos;
php>stream>socB>open>host
>no version in(ormationA might #e only in 5$?
phpZstreamZsoc"ZopenZhost 22 A#rir una coneFi-n con un servidor hu<sped y devolver una
secuencia
Kescripci"n
phpZstream V php>stream>socB>open>host > const char V hostA unsigned short puertoA int
tipoZsoc"A struct timeval V tiempoZesperaA int persistente ?
php>stream>socB>open>host./ esta#lece una coneFi-n con el host y puerto especi(icados;
t6po_soc> especi(ica la sem*ntica de coneFi-n /ue de#e aplicarse a la misma; Los valores de
t6po_soc> dependen del sistemaA pero usualmente incluyen >como m)nimo? SOC&_STREAM para
secuencias #asadas en coneFiones secuencialesA con(ia#les y de do#le v)a >,5P?A o SOC&_D#RAM
para mensa'es sin coneFi-nA no con(ia#les y una longitud m*Fima >@DP?;
pers6stente es una #andera /ue controla si la secuencia es a#ierta como una secuencia persistente;
Por lo generalA este par*metro ser* 3;
i es di(erente a N@LLA t6empo_espera especi(ica un tiempo m*Fimo para permitir /ue se
esta#lezca la coneFi-n; i el intento de coneFi-n toma m*s tiempo /ue el valor de tiempo de esperaA
el intento de coneFi-n es a#ortado y se devuelve N@LL para indicar /ue la secuencia no pudo ser
a#ierta;
Nota- +l valor de tiempo de espera no incluye el tiempo /ue toma realizar una consulta
de DN; La raz-n de esto es /ue no hay una (orma porta#le de implementar una
consulta DN /ue no #lo/uee;
+l tiempo de espera s-lo se aplica a la (ase de coneFi-nX si necesita esta#lecer los
tiempos de espera para operaciones posteriores de lectura o escrituraA de#er)a usar
php>stream>socB>set>timeout./ para con(igurar la duraci-n de tiempo de espera para
su secuencia una vez <sta ha sido a#ierta;
La AP. de secuencias no coloca restricciones so#re los valores /ue puede usar para t6po_soc>etA
pero es recomenda#le /ue considere la porta#ilidad de los valores /ue elige antes de /ue li#ere su
eFtensi-n;
php>stream>socB>open>uni+
>no version in(ormationA might #e only in 5$?
phpZstreamZsoc"ZopenZuniF 22 A#rir un soc"et de dominio @niF y convertirlo en una secuencia
Kescripci"n
phpZstream V php>stream>socB>open>uni+ > const char V rutaA int longZrutaA int persistenteA struct
timeval V tiempoZespera ?
php>stream>socB>open>uni+./ intenta a#rir el soc"et de dominio @niF especi(icado por ruta;
lonE_ruta especi(ica la longitud de ruta; i t6empo_espera es di(erente a N@LLA <ste valor indica un
periodo de tiempo m*Fimo de espera para el intento de coneFi-n; pers6stente indica si la secuencia
de#er)a ser a#ierta como una secuencia persistente; Por lo generalA <ste par*metro ser* 3 en la
mayor)a de casos;
Nota- +sta (unci-n no (uncionar* #a'o LindoEsA en donde no se implementan soc"ets
de dominio @niF; @na posi#le eFcepci-n a esta regla ocurre si su #inario de P&P (ue
compilado usando cygEin; +s recomenda#le /ue considere este aspecto de la
porta#ilidad de su eFtensi-n antes de su lanzamiento;
Nota- +sta (unci-n trata ruta en una manera segura con material #inarioA /ue es
apropiada en sistemas con un espacio de nom#res a#stracto >como LinuF?A en donde el
primer caracter de una ruta es un caracter N@L;
Estructuras de ,ecuencia
Tabla de contenidos
struct phpZstreamZstat#u( 22 5ontiene in(ormaci-n so#re un archivo o @RL
struct phpZstreamZdirent 22 5ontiene in(ormaci-n so#re un archivo Bnico durante el estudio de un
directorio
struct phpZstreamZops 22 5ontiene (unciones miem#ro para una implementaci-n de secuencia
struct phpZstreamZErapper 22 5ontiene propiedades de envolturas y apuntadores a operaciones
struct phpZstreamZErapperZops 22 5ontiene (unciones miem#ro para una implementaci-n de
envoltura de secuencia
struct phpZstreamZ(ilter 22 5ontiene propiedades de (iltro y apuntadores a operaciones
struct phpZstreamZ(ilterZops 22 5ontiene (unciones miem#ro para una implementaci-n de (iltro de
secuencia
struct php>stream>statbuf
struct phpZstreamZstat#u( 22 5ontiene in(ormaci-n so#re un archivo o @RL
Kescripci"n
php%stream%statbu#
struct statsb
sb es una estructura statA normalA de(inida por el sistema;
struct php>stream>dirent
struct phpZstreamZdirent 22 5ontiene in(ormaci-n so#re un archivo Bnico durante el estudio de un
directorio
Kescripci"n
php%stream%dirent
char d%name)",X,*HOE./
d%name contiene el nom#re del archivoA relativo al directorio /ue est* siendo estudiado;
struct php>stream>ops
struct phpZstreamZops 22 5ontiene (unciones miem#ro para una implementaci-n de secuencia
Kescripci"n
typede# struct %php%stream%ops :
/W todas las secuencias LEZE. implementar estas operaciones W/
si0e%t 3W8rite93php%stream Wstream, const char Wbu#, si0e%t count *&'"O&%LR9;
si0e%t 3Wread93php%stream Wstream, char Wbu#, si0e%t count *&'"O&%LR9;
int 3Wclose93php%stream Wstream, int close%handle *&'"O&%LR9;
int 3W#lush93php%stream Wstream *&'"O&%LR9;

const char Wlabel; /W nombre Que describe esta clase de secuencia W/

/W estas operaciones son opcionales, y pueden de#inirse a .+OO si la secuencia no
W soporta una operacion en particular W/
int 3WseeI93php%stream Wstream, o##%t o##set, int 8hence *&'"O&%LR9;
char W3WEets93php%stream Wstream, char Wbu#, si0e%t si0e *&'"O&%LR9;
int 3Wcast93php%stream Wstream, int castas, =oid WWret *&'"O&%LR9;
int 3Wstat93php%stream Wstream, php%stream%statbu# Wssb *&'"O&%LR9;
; php%stream%ops;
struct php>stream>3rapper
struct phpZstreamZErapper 22 5ontiene propiedades de envolturas y apuntadores a operaciones
Kescripci"n
struct %php%stream%8rapper :
php%stream%8rapper%ops W8ops; /W operaciones Que puede reali0ar la en=oltura W/
=oid Wabstract; /W contexto para la en=oltura W/
int is%url; /W de modo Que -3allo8%url%#open9 pueda respetarse W/
/W soporte para Que las en=olturas de=uel=as 3multiples9 mensajes de error a Quien abre la secuencia W/
int err%count;
char WWerr%stacI;
; php%stream%8rapper;
struct php>stream>3rapper>ops
struct phpZstreamZErapperZops 22 5ontiene (unciones miem#ro para una implementaci-n de
envoltura de secuencia
Kescripci"n
typede# struct %php%stream%8rapper%ops :
/W abrir/crear una secuencia en=uelta W/
php%stream W3Wstream%opener93php%stream%8rapper W8rapper, char W#ilename, char Wmode,
int options, char WWopened%path, php%stream%context Wcontext &*'E,"&%LR *&'"O&%LR9;
/W cerrar/destruir una secuencia en=uelta W/
int 3Wstream%closer93php%stream%8rapper W8rapper, php%stream Wstream *&'"O&%LR9;
/W operacion stat sobre una secuencia en=uelta W/
int 3Wstream%stat93php%stream%8rapper W8rapper, php%stream Wstream, php%stream%statbu# Wssb *&'$
/W operacion stat sobre una +'O W/
int 3Wurl%stat93php%stream%8rapper W8rapper, char Wurl, php%stream%statbu# Wssb *&'"O&%LR9;
/W abrir una secuencia de "directorio" W/
php%stream W3Wdir%opener93php%stream%8rapper W8rapper, char W#ilename, char Wmode,
int options, char WWopened%path, php%stream%context Wcontext &*'E,"&%LR *&'"O&%LR9;
const char Wlabel;
/W Eliminar/'etirar Enlace de un archi=o W/
int 3WunlinI93php%stream%8rapper W8rapper, char Wurl, int options, php%stream%context Wcontext *&'"O&%LR9;
; php%stream%8rapper%ops;
struct php>stream>filter
struct phpZstreamZ(ilter 22 5ontiene propiedades de (iltro y apuntadores a operaciones
Kescripci"n
struct %php%stream%#ilter :
php%stream%#ilter%ops W#ops;
=oid Wabstract; /W para su uso por la implementacion de #iltro W/
php%stream%#ilter Wnext;
php%stream%#ilter Wpre=;
int is%persistent;
/W enlace a la secuencia y la cadena W/
php%stream%#ilter%chain Wchain;
/W paQuetes en bu#er W/
php%stream%bucIet%briEade bu##er;
; php%stream%#ilter;
struct php>stream>filter>ops
struct phpZstreamZ(ilterZops 22 5ontiene (unciones miem#ro para una implementaci-n de (iltro de
secuencia
Kescripci"n
typede# struct %php%stream%#ilter%ops :
php%stream%#ilter%status%t 3W#ilter93
php%stream Wstream,
php%stream%#ilter Wthis#ilter,
php%stream%bucIet%briEade WbucIets%in,
php%stream%bucIet%briEade WbucIets%out,
si0e%t Wbytes%consumed,
int #laEs
*&'"O&%LR9;
=oid 3Wdtor93php%stream%#ilter Wthis#ilter *&'"O&%LR9;
const char Wlabel;
; php%stream%#ilter%ops;
Constantes de ,ecuencias
Tabla de contenidos
Opciones de apertura de secuencia 22 A(ecta la operaci-n de las (unciones de (*#rica de secuencias
Jpciones de apertura de secuencia
Opciones de apertura de secuencia 22 A(ecta la operaci-n de las (unciones de (*#rica de secuencias
Kescripci"n
@no o m*s de <stos valores pueden ser com#inados usando el operador OR;
I#NORE_PATH
+sta es la opci-n predeterminada para las secuenciasX solicita /ue includeZpath no sea usado
en #usca del archivo re/uerido;
USE_PATH
olicita /ue includeZpath sea usado en #usca del archivo re/uerido;
I#NORE_URL
olicita /ue las envolturas de @RL registradas sean ignoradas cuando se a#ra la secuencia;
Otras envolturas /ue no sean de @RL ser*n tomadas en cuenta cuando se decodi(i/ue la ruta;
No hay un valor opuesto para <sta #anderaX la AP. de secuencias usa todas las envolturas
registradas por de(ecto;
I#NORE_URL_"IN
+n sistemas EindoEsA <ste es el Walente a .GNOR+Z@RL; +n todos los otros sistemasA <sta
#andera no tiene e(ecto alguno;
ENFORCE_SAFE_MODE
olicita /ue la implementaci-n interna de secuencia realice che/ueos de sa(eZmode so#re el
archivo antes de a#rirlo; Al omitir <sta #andera se evitar*n los che/ueos de sa(eZmode y
permite a#rir cual/uier archivo so#re el /ue el proceso de P&P tengo privilegios de acceso;
REPORT_ERRORS
i <sta #andera se encuentra activaA y hu#o un error durante la apertura del archivo o @RLA la
AP. de secuencias llamar* la (unci-n phpZerror por usted; +sto es Btil ya /ue la ruta puede
contener in(ormaci-n so#re nom#res de usuarioDcontraseWas /ue no de#er)a ser desplegada en
la salida del navegador >cosa /ue ser)a un riesgo de seguridad?; 5uando la AP. de secuencias
genera un errorA primero retira cual/uier in(ormaci-n de nom#res de usuarioDcontraseWas de la
rutaA haciendo /ue sea seguro mostrar el mensa'e de error en el navegador;
STREAM_MUST_SEE&
+sta #andera es Btil cuando su eFtensi-n realmente de#e ser capaz de hacer #Bs/uedas
aleatorias en una secuencia; Algunas secuencias pueden no ser reu#ica#les en su (orma nativaA
as) /ue <sta #andera le pide a la AP. de secuencias /ue che/uee si la secuencia soporta la
reu#icaci-n; i no lo haceA copiar* la secuencia en un almacenamiento temporal >/ue puede
tratarse de un archivo temporal o una secuencia en memoria? /ue s) soporte #Bs/uedas; Por
(avor note /ue <sta #andera no es Btil cuando usted /uiere hacer #Bs/uedas en la secuencia y
escri#ir so#re ellaA ya /ue la secuencia con la /ue tra#a'a puede no estar asociada con el
recurso real /ue usted solicit-;
Nota- i el recurso solicitado es #asado en redA <sta #andera causar* /ue el
proceso de apertura #lo/uee hasta /ue el contenido completo haya sido
descargado;
STREAM_"ILL_CAST
i su eFtensi-n usa una #i#lioteca eFterna /ue espera un descriptor de archivo F.L+VA puede
usar esta #andera para solicitar a la AP. de secuencias /ue a#ra el recurso pero /ue evite el
uso de #B(eres; Puede usar entonces php>stream>cast./ para recuperar el apuntador F.L+V o
descriptor de archivo /ue la #i#lioteca re/uiere;
+sto es particularmente Btil cuando accede a @RLs &,,P en donde el inicio de los datos
reales de la secuencia se encuentra despu<s de un desplazamiento indeterminado al interior de
la secuencia;
%a /ue esta opci-n desha#ilita el uso de #B(eres en el nivel del AP. de secuenciasA usted
puede eFperimentar un rendimiento in(erior cuando usa (unciones de secuencias so#re ellaX
esto es considerado acepta#le ya /ue usted le ha indicado a la AP. /ue estar* usando las
(unciones para adaptar la implementaci-n interna de secuencias; @se esta opci-n Bnicamente
cuando est< seguro de /ue la necesita;
II. ;A$- Preguntas frecuentes
Tabla de contenidos
K8; General .n(ormation
K4; Listas de correo
KK; O#tenci-n de P&P
K:; Data#ase issues
KM; .nstalaci-n
K9; Build Pro#lems
:3; @so de P&P
:1; P&P and &,ML
:0; P&P and 5OM
:7; P&P y otros lengua'es
:8; Migraci-n de P&P 0 a P&P 7
:4; Migraci-n de P&P 7 a P&P 8
:K; Migrating (rom P&P 8 to P&P 4
::; Preguntas $arias
Captulo <8. Feneral Information
,his section holds the most general /uestions a#out P&PC Ehat it is and Ehat it does;
1; Lhat is P&PN
0; Lhat does P&P stand (orN
7; Lhat is the relation #etEeen the versionsN
8; 5an . run several versions o( P&P at the same timeN
4; Lhat are the di((erences #etEeen P&P 7 and P&P 8N
K; . thin" . (ound a #uga Lho should . tellN
!. 2hat is PHP&
From the pre(ace o( the manualC
P&P is an &,ML2em#edded scripting language; Much o( its syntaF is #orroEed (rom 5A !ava and
Perl Eith a couple o( uni/ue P&P2speci(ic (eatures throEn in; ,he goal o( the language is to alloE
Ee# developers to Erite dynamically generated pages /uic"ly;
A nice introduction to P&P #y tig cpe~ther Ba""en can #e (ound here on the Iend Ee#site; AlsoA
much o( the P&P 5on(erence Material is (reely availa#le;
*. 2hat does PHP stand for&
P&P stands (or +!+: !?perte8t +reprocessor; ,his con(uses many people #ecause the (irst Eord o(
the acronym is the acronym; ,his type o( acronym is called a recursive acronym; ,he curious can
visit Free On2Line Dictionary o( 5omputing (or more in(ormation on recursive acronyms;
7. 2hat is the relation bet3een the 5ersions&
P&PDF. 0;3 is an early and no longer supported version o( P&P; P&P 7 is the successor to P&PDF.
0;3 and is a lot nicer; P&P 8 is the current generation o( P&PA Ehich uses the Iend engine under the
hood; P&P 4 uses Iend engine 0 EhichA among other thingsA o((ers many additional OOP (eatures;
P&P 4 is eFperimental;
8. Can I run se5eral 5ersions of PHP at the same time&
%es; ee the 4.&*,OO (ile that is included in the P&P 8 source distri#ution; AlsoA read the related
appendiF;
9. 2hat are the differences bet3een PHP 7 and PHP 8&
,here are a couple o( articles Eritten on this #y the authors o( P&P 8; &ereHs a list o( some o( the
more important neE (eaturesC
+Ftended AP. module
Generalized #uild process under @N.J
Generic Ee# server inter(ace that also supports multi2threaded Ee# servers
.mproved syntaF highlighter
Native &,,P session support
Output #u((ering support
More poEer(ul con(iguration system
Re(erence counting
Please see the LhatHs neE in P&P 8 overvieE (or a detailed eFplanation o( these (eatures and more;
.( youHre migrating (rom P&P 7 to P&P 8A also read the related appendiF;
<. I thinB I found a buge 2ho should I tell&
%ou should go to the P&P Bug Data#ase and ma"e sure the #ug isnHt a "noEn #ug; .( you donHt see it
in the data#aseA use the reporting (orm to report the #ug; .t is important to use the #ug data#ase
instead o( 'ust sending an email to one o( the mailing lists #ecause the #ug Eill have a trac"ing
num#er assigned and it Eill then #e possi#le (or you to go #ac" later and chec" on the status o( the
#ug; ,he #ug data#ase can #e (ound at httpCDD#ugs;php;netD;
Captulo <9. :istas de correo
+sta secci-n contiene preguntas so#re c-mo ponerse en contacto con la comunidad de P&P; La
me'or manera es a trav<s de las listas de correo;
1; U+Fisten listas de correo so#re P&PN
0; U+Fisten otras comunidadesN
7; fAyudaa fAparentemente no puedo iniciarDcancelar suscripciones en una de las listas de correoa
8; U+Fiste un archivo de las listas de correo en alguna parteN
4; UOu< puedo preguntar a la lista de correoN
K; UOu< in(ormaci-n de#o incluir cuando env)o mensa'es a la lista de correoN
!. #E+isten listas de correo sobre PHP&
fPor supuestoa +Fisten varias listas de correo para varios asuntos; @na lista completa de listas de
correo puede encontrarse en nuestra p*gina de oporte;
La lista de correo m*s general es php=Eeneral; Para suscri#irseA env)e un correo a php2general2
su#scri#eGlists;php;net; No necesita incluir nada especial en el asunto o cuerpo del mensa'e; Para
cancelar la suscripci-nA env)e un correo a php2general2unsu#scri#eGlists;php;net;
,am#i<n puede iniciar y cancelar suscripciones usando la inter(az Ee# en nuestra p*gina de
oporte;
*. #E+isten otras comunidades&
+Fiste un sinnBmero de ellas alrededor del mundo; Nosotros contamos con enlacesA por e'emploA
hacia servidores .R5 y listas de correo en di(erentes lengua'es en nuestra p*gina de oporte;
7. fAyudae fAparentemente no puedo iniciarAcancelar suscripciones en una de las listas de
correoe
i tiene pro#lemas con la suscripci-n o cancelaci-n de una suscripci-n en la lista de correo php2
generalA puede ser de#ido a /ue el so(tEare de la lista de correo no puede adivinar la direcci-n de
correo apropiada para usar; i su direcci-n de correo electr-nico era Uoe1lo7We8ample.comA puede
enviar su petici-n de suscripci-n a php=Eeneral=su1scr61e=Uoe1lo7:e8ample.comWl6sts.php.netA o
su petici-n de cancelaci-n del servicio a php=Eeneral=unsu1scr61e=
Uoe1lo7:e8ample.comWl6sts.php.net; @se direcciones similares para las otras listas de correo;
8. #E+iste un archi5o de las listas de correo en alguna parte&
iA encontrar* una lista de sitios /ue mantienen archivos en la p*gina de oporte; Los art)culos de
las listas de correo tam#i<n son archivados como mensa'es de noticias; Puede acceder al servidor de
noticias en neEsCDDneEs;php;netD con un cliente de este servicio; ,am#i<n eFiste una inter(az Ee#
eFperimental para el servidor de noticias en httpCDDneEs;php;netD
9. #$u% puedo preguntar a la lista de correo&
Dado /ue P&P est* creciendo m*s y m*s cada d)aA el tr*(ico en la lista de correo php2general se ha
incrementado y en el momento ronda los 143 a 033 mensa'es por d)a; De#ido a estoA es del inter<s
de todos /ue use la lista como un Bltimo recurso una vez ha pro#ado todos los otros caminos;
Antes de enviar un mensa'e a la listaA por (avor eche un vistazo a este FAO y el manual para ver si
puede encontrar ayuda en tales sitios; i no encuentra nadaA prue#e con los archivos de la lista de
correo >vea la menci-n de este tema en un punto anterior?; i tiene pro#lemas con la instalaci-n o
con(iguraci-n de P&PA por (avor lea en su totalidad la documentaci-n incluida y los documentos
R+ADM+; i aun no puede encontrar in(ormaci-n /ue le ayudeA entonces es m*s /ue #ienvenido a
usar la lista de correo;
Antes de (ormular preguntasA puede /ue /uiera leer el documento so#re 5-mo Formular Preguntas
de Forma .nteligenteA cosa /ue es una #uena idea para todos;
<. #$u% informaci"n debo incluir cuando en5o mensa'es a la lista de correo&
Mensa'es del tipo =fNo logro /ue P&P (uncionea fAyBdenmea UOu< est* pasandoN= son
a#solutamente inBtiles para cual/uier persona; i est* su(riendo di(icultades con la con(iguraci-n y
e'ecuci-n de P&PA de#e incluir in(ormaci-n so#re el sistema operativo /ue usaA la versi-n de P&P
/ue est* tratando de instalarA en /u< (orma ad/uiri- el so(tEare >pre2compiladoA 5$A RPMsA etc?A
/u< ha hecho hasta el momentoA en /u< punto se interrumpi- el procesoA y el mensa'e de error
eFacto;
+sto se aplica tam#i<n para cual/uier otro pro#lema; De#e incluir in(ormaci-n so#re lo /ue ha
hechoA en d-nde /ued- #lo/ueadoA /u< est* tratando de hacer yA si se aplicaA los mensa'es de error
eFactos; i tiene pro#lemas con su c-digo (uenteA necesita incluir la parte de <ste /ue no est*
tra#a'ando; fAun/ueA no incluya m*s c-digo del necesarioa &ace /ue el mensa'e sea di()cil de leerA y
muchas personas pueden simplemente ignorarlo por esta raz-n; i no est* seguro so#re la cantidad
de in(ormaci-n a incluir en el correoA es me'or /ue incluya de m*s;
Otra cosa importante a tener en cuenta es o(recer un resumen de su pro#lema en la l)nea de asunto;
@n asunto como =fA%cpzfD+NM+aaa= o =U5u*l es el pro#lema a/u)N= ser* ignorado por la
mayor)a de lectores;
%A por BltimoA es recomenda#le /ue lea el documento so#re 5-mo Formular Preguntas de Forma
.nteligenteA cosa /ue ser* de ayuda para todosA especialmente para usted;
Captulo <<. Jbtenci"n de PHP
+sta secci-n contiene detalles so#re las u#icaciones de descarga de P&PA y asuntos particulares a
ciertos sistemas operativos;
1; UDesde d-nde puedo o#tener P&PN
0; U&ay versiones #inarias pre2compiladas disponi#lesN
7; U+n d-nde puedo encontrar las #i#liotecas re/ueridas para compilar algunas de las eFtensiones
opcionales de P&PN
8; U5-mo logro /ue <stas #i#liotecas (uncionenN
4; &e conseguido la Bltima versi-n del c-digo P&P desde el repositorio 5$ en mi m*/uina
LindoEsA U/u< necesito para su compilaci-nN
K; U+n d-nde encuentro el Archivo de 5apacidades del NavegadorN
!. #Kesde d"nde puedo obtener PHP&
Puede descargar P&P desde cual/uiera de los miem#ros de la red de sitios P&P; +stos pueden
encontrarse en httpCDDEEE;php;netD; ,am#i<n puede usar 5$ an-nimo para o#tener la Bltima
versi-n del c-digo (uente; Para m*s in(ormaci-nA visite httpCDDEEE;php;netDanoncvs;php;
*. #Hay 5ersiones binarias pre(compiladas disponibles&
Nosotros s-lo distri#uimos #inarios pre2compilados para sistemas LindoEsA dado /ue no tenemos
la capacidad de compilar P&P para cada plata(orma LinuFD@niF popular con todas las
com#inaciones de eFtensiones; ,am#i<n note /ue muchas distri#uciones LinuF vienen con P&P
integrado en la actualidad; Los #inarios de LindoEs pueden descargarse desde nuestra p*gina de
DescargasA para encontrar #inarios LinuFA por (avor visite el sitio Ee# de su distri#uci-n;
7. #En d"nde puedo encontrar las bibliotecas re?ueridas para compilar algunas de las
e+tensiones opcionales de PHP&
Nota- A/uellas marcadas con el signo V son l)#rerias /ue no son seguras en entornos
multi2hilosA y no de#er)an ser usadas con P&P como m-dulo de servidor en los
servidores Ee# milti2hilos de LindoEs >..A Netscape?; Por el momentoA esto no tiene
importancia en los entornos @niF;
LDAP >@niF? ;
LDAPV >@niF? ;
LDAP >@niFDLin? C Netscape Directory >LDAP? DS 1;1;
servidor LDAP gratuito ;
Ber"eley DB0 >@niFDLin? C httpCDDEEE;sleepycat;comD;
NMPV >@niF?C ;
GDV >@niFDLin? ;
mOLV >@niF? ;
PostgreOL >@niF? ;
.MAPV >LinD@niF? ;
y#ase25,V >LinuFA li#c4? C Disponi#le localmente;
Free,ype >li#tt(?C ;
ILi# >@niFDLin70? ;
procesador JML eFpat >@niFDLin70? ;
PDFLi# ;
mcrypt ;
mhash ;
t1li# ;
dmalloc ;
aspell ;
readline ;
8. #C"mo logro ?ue %stas bibliotecas funcionen&
Necesitar* seguir las instrucciones provistas con la #i#lioteca; Algunas de estas #i#liotecas son
detectadas autom*ticamente cuando e'ecuta el script Hcon(igureH de P&P >como la #i#lioteca GD?A y
otras tendr*n /ue ser ha#ilitadas usando opciones H==76th=EFTENS0ONH con Hcon96EureH; +'ecute
Hcon96Eure ==helpH para reci#ir un listado de <stas opciones;
9. He conseguido la 4ltima 5ersi"n del c"digo PHP desde el repositorio CC, en mi m?uina
2indo3sE #?u% necesito para su compilaci"n&
PrimeroA necesita Microso(t $isual 5RR vK >la versi-n 4 puede /ue (uncioneA pero nosotros usamos
la versi-n K?A y necesitar* algunos archivos de soporte; $ea la secci-n del manual so#re la
compilaci-n de P&P desde las (uentes en LindoEs;
<. #En d"nde encuentro el Archi5o de Capacidades del Na5egador&
Puede encontrar un archivo bro8scap.ini en
httpCDDEEE;gary"eith;comD#roEsersDdoEnloads;asp;
Captulo <=. Katabase issues
,his section holds common /uestions a#out relation #etEeen P&P and data#ases; %esA P&P can
access virtually any data#ase availa#le today;
1; . heard itHs possi#le to access Microso(t OL erver (rom P&P; &oEN
0; 5an . access Microso(t Access data#asesN
7; . upgraded to P&P 8A and noE mys/l "eeps telling me =LarningC MyOLC @na#le to save result
set in ;;;=; LhatHs upN
8; A(ter installing shared MyOL supportA Apache dumps core as soon as li#php8;so is loaded; 5an
this #e (iFedN
4; Lhy do . get an error that loo"s something li"e thisC =LarningC 3 is not a MyOL result indeF in
`(ile_ on line `F_= or =LarningC upplied argument is not a valid MyOL result resource in `(ile_
on line `F_N
!. I heard itUs possible to access Microsoft ,$: ,er5er from PHP. Ho3&
On LindoEs machinesA you can simply use the included ODB5 support and the correct ODB5
driver;
On @niF machinesA you can use the y#ase25, driver to access Microso(t OL ervers #ecause they
are >at least mostly? protocol2compati#le; y#ase has made a (ree version o( the necessary li#raries
(or LinuF systems; For other @niF operating systemsA you need to contact y#ase (or the correct
li#raries; Also see the ansEer to the neFt /uestion;
*. Can I access Microsoft Access databases&
%es; %ou already have all the tools you need i( you are running entirely under LindoEs 9FDMeA or
N,D0333A Ehere you can use ODB5 and Microso(tHs ODB5 drivers (or Microso(t Access data#ases;
.( you are running P&P on a @niF #oF and Eant to tal" to M Access on a LindoEs #oF you Eill
need @niF ODB5 drivers; OpenLin" o(tEare has @niF2#ased ODB5 drivers that can do this;
,here is a (ree pilot program Ehere you can doEnload an evaluation copy that doesnHt eFpire and
prices start at YK:4 (or the commercial supported version;
Another alternative is to use an OL server that has LindoEs ODB5 drivers and use that to store
the dataA Ehich you can then access (rom Microso(t Access >using ODB5? and P&P >using the #uilt
in drivers?A or to use an intermediary (ile (ormat that Access and P&P #oth understandA such as (lat
(iles or dBase data#ases; On this point ,im &ayes (rom OpenLin" so(tEare EritesC
+sinE another database as an intermediary is not a Eood idea, 8hen you can
use ?LZR #rom H straiEht to your database F i.e. 8ith ?penOinIMs dri=ers. 4#
you do need to use an intermediary #ile #ormat, ?penOinI ha=e no8 released
(irtuoso 3a =irtual database enEine9 #or .*, Oinux and other unix plat#orms.
lease =isit our 8ebsite #or a #ree do8nload.
One option that has proven success(ul is to use MyOL and its MyODB5 drivers on LindoEs and
synchronizing the data#ases; teve LaErence EritesC
.nstall MyOL on your plat(orm according to instructions Eith MyOL; Latest availa#le
(rom EEE;mys/l;com >get it (rom your mirrora?; No special con(iguration re/uired eFcept
Ehen you set up a data#aseA and con(igure the user accountA you should put b in the host
(ieldA or the host name o( the LindoEs computer you Eish to access MyOL Eith; Ma"e a
note o( your server nameA usernameA and passEord;
DoEnload the MyODB5 (or LindoEs driver (rom the MyOL site; Latest release is
myod#c20Z43Z192Ein94;zip >N, availa#le tooA as Eell as source code?; .nstall it on your
LindoEs machine; %ou can test the operation Eith the utilities included Eith this program;
5reate a user or system dsn in your ODB5 administratorA located in the control panel; Ma"e
up a dsn nameA enter your hostnameA user nameA passEordA portA etc (or you MyOL
data#ase con(igured in step 1;
.nstall Access Eith a (ull installA this ma"es sure you get the proper add2ins;; at the least you
Eill need ODB5 support and the lin"ed ta#le manager;
NoE the (un parta 5reate a neE access data#ase; .n the ta#le EindoE right clic" and select
Lin" ,a#lesA or under the (ile menu optionA select Get +Fternal Data and then Lin" ,a#les;
Lhen the (ile #roEser #oF comes upA select (iles o( typeC ODB5; elect ystem dsn and the
name o( your dsn created in step 7; elect the ta#le to lin"A press OSA and prestoa %ou can
noE open the ta#le and addDdeleteDedit data on your MyOL servera %ou can also #uild
/ueriesA importDeFport ta#les to MyOLA #uild (orms and reportsA etc;
,ips and ,ric"sC
%ou can construct your ta#les in Access and eFport them to MyOLA then lin" them #ac" in;
,hat ma"es ta#le creation /uic";
Lhen creating ta#les in AccessA you must have a primary "ey de(ined in order to have Erite
access to the ta#le in access; Ma"e sure you create a primary "ey in MyOL #e(ore lin"ing in
access
.( you change a ta#le in MyOLA you have to re2lin" it in Access; Go to tools_add2
ins_lin"ed ta#le managerA cruise to your ODB5 DNA and select the ta#le to re2lin" (rom
there; you can also move your dsn source around thereA 'ust hit the alEays prompt (or neE
location chec"#oF #e(ore pressing OS;
7. I upgraded to PHP 8E and no3 mys?l Beeps telling me 02arning- My,$:- )nable to sa5e
result set in ...0. 2hatUs up&
Most li"ely Ehat has happened isA P&P 8 Eas compiled Eith the H22Eith2mys/lH optionA Eithout
speci(ying the path to MyOL; ,his means P&P is using its #uilt2in MyOL client li#rary; .( your
system is running applicationsA such as P&P 7 as a concurrent Apache moduleA or auth2mys/lA that
use other versions o( MyOL clientsA then there is a con(lict #etEeen the tEo di((ering versions o(
those clients;
Recompiling P&P 8A and adding the path to MyOL to the (lagA H22Eith2mys/l^DyourDpathDtoDmys/lH
usually solves the pro#lem;
8. After installing shared My,$: supportE Apache dumps core as soon as libphp8.so is
loaded. Can this be fi+ed&
.( your MyOL li#s are lin"ed against pthreads this Eill happen; 5hec" using ldd; .( they areA gra#
the MyOL tar#all and compile (rom sourceA or recompile (rom the source rpm and remove the
sEitch in the spec (ile that turns on the threaded client code; +ither o( these suggestions Eill (iF this;
,hen recompile P&P Eith the neE MyOL li#s;
9. 2hy do I get an error that looBs something liBe this- 02arning- D is not a My,$: result
inde+ in QfileG on line Q+G0 or 02arning- ,upplied argument is not a 5alid My,$: result
resource in QfileG on line Q+G&
%ou are trying to use a result identi(ier that is 3; ,he 3 indicates that your /uery (ailed (or some
reason; %ou need to chec" (or errors a(ter su#mitting a /uery and #e(ore you attempt to use the
returned result identi(ier; ,he proper Eay to do this is Eith code similar to the (olloEingC
$result > mysQl%Query3"&EOER* W S'?" tables%pri="9;
i# 3!$result9 :
echo mysQl%error39;
exit;
;
or
$result > mysQl%Query3"&EOER* W S'?" tables%pri="9
or die3"Zad Query@ ".mysQl%error399;
Captulo <N. Instalaci"n
+sta secci-n contiene preguntas comunes so#re el modo de instalar P&P; P&P se encuentra
disponi#le para casi cual/uier O >eFcepto /uiz*s por MacO antes de OJ?A y casi cual/uier
servidor Ee#;
Para instalar P&PA siga las instrucciones del archivo .N,ALL u#icado en la distri#uci-n; Los
usuarios de EindoEs tam#i<n de#er)an leer el archivo install;tFt; ,am#i<n eFisten algunas pistas
Btiles para usuarios de EindoEs a/u);
1; UPor/u< no de#o usar Apache 0 en un entorno en producci-nN
0; @niFDLindoEsC U+n d-nde de#e estar u#icado mi archivo php.ini N
7; @niFC .nstal< P&PA fpero cada vez /ue cargo un documentoA reci#o el mensa'e HDocument
5ontains No DataHa UOu< est* pasando a/u)N
8; @niFC .nstal< P&P usando RPMA fpero Apache no est* procesando las p*ginas P&Pf UOu< est*
pasando a/u)N
4; @niFC .nstal< P&P 7 usando RPMA fpero no compila con el soporte de #ases de datos /ue
necesitoa UOu< est* pasandoN
K; @niFC &e aplicado el parche de eFtensiones FrontPage a ApacheA y de pronto P&P de'- de
(uncionar; U+s P&P incompati#le con las eFtensiones FrontPage de ApacheN
:; @niFDLindoEsC &e instalado P&PA pero cuando intento acceder a un script P&P a trav<s de mi
navegadorA reci#o una pantalla en #lanco;
M; @niFDLindoEsC &e instalado P&PA pero cuando intento acceder a un script P&P a trav<s de mi
navegadorA reci#o un error 433 de servidor;
9; Algunos sistemas operativosC &e instalado P&P sin erroresA pero cuando intento iniciar apacheA
reci#o errores de s)m#olos inde(inidosC
)mi%maQuina@usuario /src/php1/ rootU apachectl con#iEtest
apachectl@ /usr/local/apache/bin/httpd +nde#ined symbols@
%compress
%uncompress
13; LindoEsC &e instalado P&PA pero cuando intento acceder a un script P&P a trav<s de mi
navegadorA reci#o el errorC
cEi error@
*he speci#ied R-4 application misbeha=ed by not
returninE a complete set o# H** headers.
*he headers it did return are@
11; LindoEsC &e seguido todas las instruccionesA fpero aun no logro /ue P&P e .. tra#a'en 'untosa
10; 5uando corro P&P como 5G. con ..A PLA Omni&,,PD o JitamiA reci#o el siguiente errorC
Secur6t? ,lert_ +!+ C-0 cannot 1e accesse# #6rectl?. ;
17; U5-mo se si mi php.ini est* siendo encontrado y le)doN Pareciera /ue mis cam#ios no est*n
siendo implementados;
18; U5-mo agrego mi directorio de P&P a la varia#le +,T! en LindoEsN
14; U5-mo hago /ue el archivo php.ini se encuentre disponi#le para P&P en EindoEsN
!. #Por?u% no debo usar Apache * en un entorno en producci"n&
La siguiente respuesta se encuentra #asada en este eFtracto modi(icado de un correo por Rasmus
Lerdor(;
Apache 0 es una versi-n escrita desde ceros y una completa modi(icaci-n de ar/uitectura a partir de
Apache 1; No es como ir de P&P 7 a P&P8A o de P&P 8 a P&P 4; &ay #astante c-digo /ue es
comBnA y ciertamente la ar/uitectura #ase de P&P no ha cam#iado a trav<s de los aWos; Asi /ue
comparar Apache 1 y Apache 0 contra P&P 8 y P&P 4 no tiene sentido; La ar/uitectura ha sido
pro#ada a lo largo de los aWos y el c-digoA aun/ue es un poco inmane'a#le en algunas partesA es una
entidad conocida; P&P (ue diseWado desde los primeros d)as contra a/uella ar/uitectura #*sica de
Apache 1 y (unciona eFtremadamente #ien cuando se usa con <ste;
La caracter)stica m*s importante /ue atrae a la gente a Apache 0 es el uso de hilos; +n LindoEsA en
donde la mayor)a de #i#liotecas #*sicos sonA y de#en serA seguras con hilosA Apache 0 realmente
tiene sentido y ser)a #ueno resolver los pe/ueWos pro#lemas en esa plata(orma; in em#argoA en
@N.J eFisten #astante #i#liotecas #*sicas en donde no se conoce su seguridad con hilos; % no se
trata de eFtensiones P&PA se trata de #i#liotecas de terceros por de#a'o de los cientos de eFtensiones
de P&P; +s realmente di()cil determinar si cierta #i#lioteca eFterna es segura con hilos; +Fisten
#astantes varia#les involucradasA incluyendo el OA la versi-n del OA la #i#lioteca li#cA la versi-n
de esa #i#lioteca e inclusoA en algunas plata(ormasA las #anderas de compilaci-n usadas para generar
las #i#liotecas; % para hacerlo aun m*s divertidoA rastrear un pro#lema de seguridad con hilos se
encuentra #astante cerca a lo imposi#le; 5ientos de personas #ien pueden declarar /ue
ApacheRP&PRcual/uierDeFtensi-n (unciona per(ectamente para ellosA pero /uiz*s ellos s-lo reci#en
un mill-n de peticiones al d)a; Luego llega otro usuario /uien reci#e 133 millones de peticiones al
d)a y usa una avanzada m*/uina con do#le2procesador y todo se arruina ya /ue de repente ahora la
oportunidad para alguna pe/ueWa condici-n de carrera se ha hecho mucho mayor de#ido a las
velocidades m*s r*pidas de cpuA el segundo cpu y la mayor (recuencia de las peticiones; % el reporte
del (allo /ue reci#imos de este usuario ser* algo similar aC
A veces no (unciona; La mayor)a de veces (unciona #ienA pero de repente de vez en
cuando no; +l error es di(erente cada vez y no tengo idea de c-mo reproducirloA fpero
arr<glenlo de inmediatoaaa
UOu< podemos hacer al respectoN
&ay un nBmero de razones t<cnicas >/ue pueden resolverse? por las /ue Rasmus no piensa /ue
Apache0RP&P sea una #uena idea en un entorno en producci-nA pero de'*ndolas de ladoA realmente
todo converge a un simple conceptoC
P&P es pegamento; +s el pegamento usado para construir interesantes aplicaciones Ee#A uniendo
docenas de #i#liotecas eFternas y haci<ndolas parecer una entidad coherente a trav<s de una inter(az
de lengua'e intuitiva y (*cil de aprender; La (leFi#ilidad y poder de P&P depende de la esta#ilidad y
ro#ustez de la plata(orma su#yacente; Necesita de un O /ue (uncioneA un servidor Ee# /ue
(uncione y unas #i#liotecas eFternas /ue (uncionen para unirlo todo; 5uando uno cual/uiera de
estos elementos de'a de tra#a'arA P&P necesita identi(icar los pro#lemas y solucionarlos
r*pidamente; Al hacer m*s comple'o el marco de re(erencia #aseA no disponiendo de hilos de
e'ecuci-n completamente separadosA segmentos de memoria completamente separados y una ca'a de
arena segura para /ue cada petici-n tra#a'eA se introduce una #ase d<#il al sistema de P&P;
@sar la versi-n mpm anterior a la #i(urcaci-n ocurrida en Apache 0 para evitar el uso de hilos es
posi#leA y s)A tam#i<n (unciona usar un mecanismo independiente (astcgi para evitar los hilosA pero
entonces se estar)an evitando caracter)sticas /ue de(inen al servidor Ee#; +n este punto de
desarrolloA Rasmus aun a(irma /ue se est* me'or siguiendo con Apache 1 para servir p*ginas P&PA
con la nota de precauci-n de /ue Apache 1 opera #astante mal en LindoEs;
*. )ni+A2indo3s- #En d"nde debe estar ubicado mi archi5o php.ini&
Por de(ectoA en @niF de#e estar en /usr/local/libA lo /ue esA <rutaF
instalacion>/lib; La mayor)a de personas /uerr*n modi(icar <ste valor en tiempo de
compilaci-n con la #andera 22Eith2con(ig2(ile2path; Podr)aA por e'emploA de(inirla comoC
FF8ithFcon#iEF#ileFpath>/etc
% luego copiar)a php.iniFdist desde su distri#uci-n a /etc/php.ini y lo editar)a para
hacer cual/uier modi(icaci-n local /ue desee;
FF8ithFcon#iEF#ileFscanFdir>,*H
+n EindoEsA la ruta predeterminada para el archivo php.ini es el directorio de EindoEs; i est*
usando el servidor Ee# ApacheA php.ini ser* #uscado primero en el directorio de instalaci-n de
ApacheA p;e'; c@VproEram #ilesVapache EroupVapache; De este modoA puede contar
con di(erentes archivos php.ini para di(erentes versiones de Apache en la misma m*/uina;
$ea tam#i<n el cap)tulo so#re el archivo de con(iguraci-n;
7. )ni+- Instal% PHPE fpero cada 5e6 ?ue cargo un documentoE recibo el mensa'e UKocument
Contains No KataUe #$u% est pasando a?u&
+sto pro#a#lemente /uiere decir /ue P&P est* su(riendo algBn tipo de di(icultad y est* produciendo
volcados de memoria; +che un vistazo a su registro de errores del servidor para ver si <ste es el
casoA y luego trate de reproducir el pro#lema con un pe/ueWo caso de prue#a; i sa#e c-mo usar
Hgd#HA es muy Btil cuando puede proveer un #ac"trace con su reporte de (allo para ayudar a los
desarrolladores a u#icar el pro#lema; i est* usando P&P como m-dulo de ApacheA intente algo
comoC
Detener todos sus procesos httpd
gd# httpd
Detener todos sus procesos httpd
_ run 2J 2( DrutaDhaciaDhttpd;con(
Luego recuperar la @RL /ue causa el pro#lema con su navegador
_ run 2J 2( DrutaDhaciaDhttpd;con(
i est* reci#iendo un volcado de memoriaA gd# de#e in(ormarle de <sto;
escri#aC #t
Ahora de#e incluir su #ac"trace en su reporte de (allo; [ste de#e ser enviado desde
httpCDD#ugs;php;netD
i su script usa las (unciones de eFpresiones regulares >ereg./ y amigas?A de#e asegurarse de /ue
compil- P&P y Apache con el mismo pa/uete de eFpresiones regulares; +sto de#e pasar
autom*ticamente con P&P y Apache 1;7;F
8. )ni+- Instal% PHP usando MPM,E fpero Apache no est procesando las pginas PHPf #$u%
est pasando a?u&
Asumiendo /ue ha instalado tanto Apache como P&P desde pa/uetes RPMA necesita remover los
caracteres de comentarioA o agregar algunas o todas de las siguientes l)neas en su archivo
httpd.con#C
U "odulos Extra
,dd"odule mod%php.c
,dd"odule mod%php<.c
,dd"odule mod%perl.c
U "odulos Extra
Ooad"odule php%module modules/mod%php.so
Ooad"odule php<%module modules/libphp<.so U para H <
Ooad"odule php1%module modules/libphp1.so U para H 1
Ooad"odule perl%module modules/libperl.so
% agregarC
,dd*ype application/xFhttpdFphp< .php< U para H <
,dd*ype application/xFhttpdFphp .php U para H 1
;;; a las propiedades glo#alesA o a las propiedades del $irtualDomain para el cual desea tener soporte
de P&P;
9. )ni+- Instal% PHP 7 usando MPM,E fpero no compila con el soporte de bases de datos ?ue
necesitoe #$u% est pasando&
De#ido a la (orma en /ue se compila P&P 7A no es sencillo crear un RPM de P&P (leFi#le completo;
+ste pro#lema es atendido en P&P 8; Para P&P 7A actualmente le sugerimos /ue use el mecanismo
descrito en el archivo .N,ALL;R+D&A, en la distri#uci-n de P&P; i insiste en usar una versi-n
RPM para P&P 7A continBe leyendo;;;
Los empa/uetadores de RPM est*n con(igurando los RPM para ser instalados sin soporte de #ases
de datos para simpli(icar las instalaciones ? por/ue los RPM usan DusrD en lugar del directorio D
usrDlocalD est*ndar para los archivos; @sted necesita decirle al archivo spec del RPM cu*les #ases de
datos soportar y la u#icaci-n del nivel m*s alto de su servidor de #ases de datos;
+ste e'emplo eFplicar* el proceso de agregar soporte para el popular servidor de #ases de datos
MyOLA usando la instalaci-n de m-dulo para Apache;
Por supuestoA toda esta in(ormaci-n puede ser a'ustada para cual/uier servidor de #ases de datos
soportada por P&P; Asumiremos /ue ha instalado MyOL y Apache completamente con RPM
para este e'emplo tam#i<n;
Primero remueva modZphp7 C
rpm Fe mod%php<
Luego o#tenga el rpm (uente e .N,cpe L+LOA NO use 22re#uild
rpm F+=h mod%php<F<.2.5FC.src.rpm
Luego edite el archivo /usr/src/redhat/&ER&/mod%php<.spec
+n la secci-n b#uild agrege el soporte de #ases de datos /ue deseaA y la ruta;
Para MyOLA usted agregar)a ==76th=m?s@l:/usr La secci-n b#uild se ver* algo comoC
./con#iEure FFpre#ix>/usr V
FF8ithFapxs>/usr/sbin/apxs V
FF8ithFcon#iEF#ileFpath>/usr/lib V
FFenableFdebuE>no V
FFenableFsa#eFmode V
FF8ithFexecFdir>/usr/bin V
FF8ithFmysQl>/usr V
FF8ithFsystemFreEex
@na vez est* hecha esta modi(icaci-nA compile el rpm #inario de este modoC
rpm Fbb /usr/src/redhat/&ER&/mod%php<.spec
Luego instale el rpm
rpm Fi=h /usr/src/redhat/'"&/i<JG/mod%php<F<.2.5FC.i<JG.rpm
AsegBrese de reiniciar ApacheA y ahora tendr* P&P 7 con soporte para MyOL usando RPMHs; Note
/ue pro#a#lemente es mucho m*s (*cil simplemente compilar a partir del tar#all de distri#uci-n de
P&P 7 y seguir las instrucciones encontradas en 4.&*,OO.'ELH,*;
<. )ni+- He aplicado el parche de e+tensiones ;rontPage a ApacheE y de pronto PHP de'" de
funcionar. #Es PHP incompatible con las e+tensiones ;rontPage de Apache&
NoA P&P tra#a'a #ien con las eFtensiones FrontPage; +l pro#lema es /ue el parche de FrontPage
modi(ica varias estructuras de Apache en las /ue depende P&P; Recompilar P&P >usando Hma"e
clean X ma"eH? despu<s de /ue se ha aplicado el parche FP de#e solucionar el pro#lema;
=. )ni+A2indo3s- He instalado PHPE pero cuando intento acceder a un script PHP a tra5%s de
mi na5egadorE recibo una pantalla en blanco.
eleccione la acci-n Hver c-digo (uenteH en el navegador Ee# y pro#a#lemente encontrar* el c-digo
(uente de su script P&P; +sto /uiere decir /ue el servidor Ee# no envi- el script a P&P para su
interpretaci-n; Algo est* mal en la con(iguraci-n del servidor 2 revise cuidadosamente la
con(iguraci-n del servidor con las instrucciones de instalaci-n de P&P;
N. )ni+A2indo3s- He instalado PHPE pero cuando intento acceder a un script PHP a tra5%s de
mi na5egadorE recibo un error 9DD de ser5idor.
Algo (all- cuando el servidor intent- e'ecutar P&P; Para poder ver un mensa'e de error m*s BtilA
desde la l)nea de comandosA vaya al directorio /ue contiene el e'ecuta#le P&P >php.exe en
LindoEs? y e'ecute php (i; i P&P tiene algBn pro#lema corriendoA entonces se desplegar* un
mensa'e de error apropiadoA el cual le dar* una pista so#re lo /ue de#e hacer a continuaci-n; i
reci#e una pantalla llena de c-digos &,ML >la salida de la (unci-n phpinfo./? entonces P&P est*
(uncionandoA y su pro#lema puede estar relacionado con la con(iguraci-n de su servidorA la cual
de#e revisar de nuevo;
O. Algunos sistemas operati5os- He instalado PHP sin erroresE pero cuando intento iniciar
apacheE recibo errores de smbolos indefinidos-
)mi%maQuina@usuario /src/php1/ rootU apachectl con#iEtest
apachectl@ /usr/local/apache/bin/httpd +nde#ined symbols@
%compress
%uncompress
+sto no tiene nada /ue ver con P&P en realidadA sino con las #i#liotecas de cliente de MyOL;
Algunas necesitan ==76th=Dl61A otras no; +sto tema tam#i<n se cu#re en el FAO so#re MyOL;
!D. 2indo3s- He instalado PHPE pero cuando intento acceder a un script PHP a tra5%s de mi
na5egadorE recibo el error-
cEi error@
*he speci#ied R-4 application misbeha=ed by not
returninE a complete set o# H** headers.
*he headers it did return are@
+l mensa'e de error signi(ica /ue P&P (all- en su intento de producir una salida; Para poder ver un
mensa'e de error m*s BtilA desde la l)nea de comandosA vaya al directorio /ue contiene el e'ecuta#le
de P&P >php.exe en LindoEs? y e'ecute php (i; i P&P tiene algBn pro#lema e'ecut*ndoseA
entonces se desplegar* un mensa'e de error apropiadoA el cual le dar* una pista so#re lo /ue necesita
hacer a continuaci-n; i reci#e una pantalla llena de c-digos &,ML >la salida de la (unci-n phpinfo
./? entonces P&P est* (uncionando;
@na vez P&P est< tra#a'ando desde la l)nea de comandosA intente acceder al script desde el
navegador nuevamente; i aun (allaA entonces la causa puede ser alguna de las siguientesC
Los permisos de archivo en su script P&PA php.exeA php1ts.dllA php.ini o
cual/uier eFtensi-n P&P /ue est< tratando cargar son de tal (orma /ue el usuario an-nimo de
internet 0SUR_$nom1re_ma@u6na& no tiene acceso a <stos recursos;
+l archivo del script no eFiste >o posi#lemente no se encuentra en donde cree /ue est*A
relativo a su directorio Ee# ra)z?; Note /ue para ..A puede atrapar este error seleccionando
la ca'a Hchec" (ile eFistsH cuando est< con(igurando la gesti-n de scripts #a'o .nternet ervices
Manager; i un archivo de script no eFisteA entonces el servidor devolver*n un error 838 en
su lugar; ,am#i<n eFiste el #ene(icio adicional de /ue .. se encargar* de cual/uier
autenticaci-n re/uerida por ustedA #asado en los permisos N,LanMan en su archivo de
script;
!!. 2indo3s- He seguido todas las instruccionesE fpero aun no logro ?ue PHP e II, traba'en
'untose
fAsegBrese de /ue cual/uier usuario /ue necesite e'ecutar un script P&P tenga los permisos para
e'ecutar php.exea .. usa un usuario an-nimo /ue es agregado al momento de instalar ..; +ste
usuario necesita privilegios so#re php.exe; ,am#i<nA cual/uier usuario autenticado necesitar*
permisos para e'ecutar php.exe; % para ..8A necesita decirle /ue P&P es un motor de scripts;
AsimismoA /uerr* leer este (a/;
!*. Cuando corro PHP como CFI con II,E P2,E JmniHTTPK o IitamiE recibo el siguiente
error- Securit) $lert7 PHP C5" cannot be accessed directl)..
De#e de(inir la directiva cgi;(orceZredirect como 0; u valor predeterminado es 1A as) /ue asegBrese
de /ue la directiva no se encuentre comentada >con un J?; 5omo todas las directivasA <sta se de(ine
en php.ini
De#ido a /ue su valor predeterminado es 1A es importante /ue est< 133b seguro de /ue el archivo
php.ini correcto est* siendo le)do; Lea este (a/ para m*s detalles;
!7. #C"mo se si mi php.ini est siendo encontrado y ledo& Pareciera ?ue mis cambios no
estn siendo implementados.
Para asegurarse de /ue su php.ini est* siendo le)do por P&PA haga un llamado a phpinfo./A y
cerca del comienzo encontrar* un listado llamado Con96Eurat6on 36le Lphp.6n6M; [ste le dir* en d-nde
est* #uscando P&P el archivo php.ini y si est* siendo le)do o no; i s-lo eFiste un directorio
PA,&A entonces no est* siendo le)do y de#e colocar su php.ini en ese directorio; i php.ini es
incluido con la ruta PA,&A entonces est* siendo le)do;
i php.ini est* siendo leido y est* e'ecutando P&P como un m-duloA entonces asegBrese de
reiniciar su navegador Ee# despu<s de hacer cam#ios a php.ini
!8. #C"mo agrego mi directorio de PHP a la 5ariable P$H en 2indo3s&
+n LindoEs N,A 0333A JP y 0337C
Dir)'ase al Panel de 5ontrol y a#ra el )cono de istema >.nicio 2_ 5on(iguraci-n 2_ Panel de
5ontrol 2_ istemaA o simplemente .nicio 2_ Panel de 5ontrol 2_ istema en LindoEs
JPD0337?
$aya a la solapa Avanzado
Pulse el #ot-n H$aria#les de +ntornoH
5onsulte el panel de H$aria#les de istemaH
+ncuentre la entrada Path >puede /ue tenga /ue desplazarse por la lista para encontrarla?
&aga do#le clic so#re la entrada Path
.ngrese su directorio P&P al (inalA incluyendo HXH al comienzo >p;e'; JC:Qphp?
Presione Aceptar y reinicie su m*/uina
+n LindoEs 9MDMe necesita editar el archivo autoexec.batC
A#ra el Bloc de Notas >.nicio 2_ +'ecutar y escri#a notepad?
A#ra el archivo R@Vautoexec.bat
@#i/ue la l)nea con PA,&^5ChL.NDOLX5ChL.NDOLh5OMMANDX;;;;; y agregueC J
C:Qphp al (inal de la l)nea
Guarde el archivo y reinicie su m*/uina
+l manual de P&P sol)a promover la copia de archivos al directorio system de LindoEsA esto es
por/ue el directorio >R@V7indo8sA R@V74..*A etc;? se encuentra por de(ecto en el valor PA,&
del sistema; 5opiar archivos en el directorio system de LindoEs se considera o#soleto desde hace
#astante tiempoA y puede causar pro#lemas;
!9. #C"mo hago ?ue el archi5o php.ini se encuentre disponible para PHP en 3indo3s&
+Fisten varias (ormas de lograr esto; i est* usando ApacheA lea sus instrucciones espec)(icas de
instalaci-n >Apache 1A Apache 0?A o de lo contrario de#e de(inir la varia#le de entorno +!+RCC
+n LindoEs N,A 0333A JP y 0337C
Dir)'ase al Panel de 5ontrol y a#ra el )cono de istema >.nicio 2_ 5on(iguraci-n 2_ Panel de
5ontrol 2_ istemaA o simplemente .nicio 2_ Panel de 5ontrol 2_ istema para LindoEs
JPD0337?
$aya a la solapa de Avanzado
Pulse so#re el #ot-n H$aria#les de +ntornoH
5onsulte el panel de H$aria#les de sistemaH
Pulse so#re HNuevaH e ingrese HP&PR5H como el nom#re de varia#le y el directorio en donde
se encuentra php.ini como el valor de la varia#le >p;e'; C:Qphp?
Pulse aceptar y reinicie su m*/uina
+n LindoEs 9MDMe necesita editar el archivo autoexec.batC
A#re el Bloc de Notas >.nicio 2_ +'ecutar e ingrese notepad?
A#ra el archivo R@Vautoexec.bat
Agrege una nueva l)nea al (inal del archivoC set +!+RC C:Qphp >reemplace C:Qphp con el
directorio en donde se encuentra php.ini?
Guarde el archivo y reinicie su m*/uina
Captulo <O. 1uild Problems
,his section gathers most common errors that occur at #uild time;
1; . got the latest version o( P&P using the anonymous 5$ serviceA #ut thereHs no con(igure scripta
0; .Hm having pro#lems con(iguring P&P to Eor" Eith Apache; .t says it canHt (ind httpd.h A #ut
itHs right Ehere . said it isa
7; Lhile con(iguring P&P > ./con96Eure ?A you come across an error similar to the (olloEingC
8; Lhen . try to start ApacheA . get the the (olloEing messageC
4; Lhen . run con(igureA it says that it canHt (ind the include (iles or li#rary (or GDA gd#mA or some
other pac"agea
K; Lhen it is compiling the (ile lanEuaEeFparser.tab.c A it gives me errors that say ??tname
un#eclare# ;
:; Lhen . run maBe A it seems to run (ine #ut then (ails Ehen it tries to lin" the (inal application
complaining that it canHt (ind some (iles;
M; Lhen lin"ing P&PA it complains a#out a num#er o( unde(ined re(erences;
9; . canHt (igure out hoE to #uild P&P Eith Apache 1;7;
13; . have (olloEed all the steps to install the Apache module version on @N.JA and my P&P scripts
shoE up in my #roEser or . am #eing as"ed to save the (ile;
11; .t says to useC ==act6ate=mo#ule:src/mo#ules/php;/l61php;.a A #ut that (ile doesnHt eFistA so .
changed it to ==act6ate=mo#ule:src/mo#ules/php;/l61mo#php;.a and it doesnHt Eor"aN LhatHs
going onN
10; Lhen . try to #uild Apache Eith P&P as a static module using ==act6ate=
mo#ule:src/mo#ules/php;/l61php;.a it tells me that my compiler is not AN. compliant;
17; Lhen . try to #uild P&P using ==76th=ap8s . get strange error messages;
18; During maBe A . get errors in microtimeA and a lot o( RUS,-E_ stu((;
14; Lhen compiling P&P Eith MyOLA con(igure runs (ine #ut during ma>e . get an error similar to
the (olloEingC e8t/m?s@l/l61m?s@l/m?_tempnam.oL.te8tY08;XM: 0n 9unct6on m?_tempnam<: /
php;/e8t/m?s@l/l61m?s@l/m?_tempnam.c:10R: the use o9 tempnam< 6s #anEerousC 1etter use
m>stemp< A EhatHs ErongN
1K; . Eant to upgrade my P&P; Lhere can . (ind the .Aconfigure line that Eas used to #uild my
current P&P installationN
1:; Lhen #uilding P&P Eith the GD li#rary it either gives strange compile errors or seg(aults on
eFecution;
!. I got the latest 5ersion of PHP using the anonymous CC, ser5iceE but thereUs no configure
scripte
%ou have to have the GN@ autocon( pac"age installed so you can generate the con(igure script (rom
con#iEure.in; !ust run .Abuildconf in the top2level directory a(ter getting the sources (rom the
5$ server; >AlsoA unless you run con(igure Eith the ==ena1le=ma6nta6ner=mo#e optionA the
con(igure script Eill not automatically get re#uilt Ehen the con#iEure.in (ile is updatedA so you
should ma"e sure to do that manually Ehen you notice con(igure;in has changed; One symptom o(
this is (inding things li"e G$AR.ABL+G in your Ma"e(ile a(ter con(igure or con#iE.status is
run;?
*. IUm ha5ing problems configuring PHP to 3orB 3ith Apache. It says it canUt find http3.hE
but itUs right 3here I said it ise
%ou need to tell the con(igureDsetup script the location o( the top2level o( your Apache source tree;
,his means that you Eant to speci(y ==76th=apache:/path/to/apache and not ==76th=
apache:/path/to/apache/src;
7. 2hile configuring PHP ..8configure/E you come across an error similar to the follo3ing-
checIinE lex output #ile root... ./con#iEure@ lex@ command not #ound
con#iEure@ error@ cannot #ind output #rom lex; Ei=inE up
Be sure to read the installation instructions care(ully and note that you need #oth (leF and #ison
installed to compile P&P; Depending on your setup you Eill install #ison and (leF (rom either
source or a pac"ageA such as a RPM;
8. 2hen I try to start ApacheE I get the the follo3ing message-
#atal@ relocation error@ #ile /path/to/libphp1.so@
symbol ap%blocI%alarms@ re#erenced symbol not #ound
,his error usually comes up Ehen one compiles the Apache core program as a DO li#rary (or
shared usage; ,ry to recon(igure apacheA ma"ing sure to use at least the (olloEing (lagsC
FFenableFshared>max FFenableFrule>&H,'EL%R?'E
For more in(ormationA read the top2level Apache 4.&*,OO (ile or the Apache DO manual page;
9. 2hen I run configureE it says that it canUt find the include files or library for FKE gdbmE or
some other pacBagee
%ou can ma"e the con(igure script loo"s (or header (iles and li#raries in non2standard locations #y
speci(ying additional (lags to pass to the 5 preprocessor and lin"erA such asC
RSO,-&>F4/path/to/include OLSO,-&>FO/path/to/library ./con#iEure
.( youHre using a csh2variant (or your login shell >EhyN?A it Eould #eC
en= RSO,-&>F4/path/to/include OLSO,-&>FO/path/to/library ./con#iEure
<. 2hen it is compiling the file lang5ageAparser.ta.!E it gi5es me errors that say
))tna&e undeclared.
%ou need to update your version o( Bison; %ou can (ind the latest version at
httpCDDEEE;gnu;orgDso(tEareD#isonD#ison;html;
=. 2hen I run maBeE it seems to run fine but then fails 3hen it tries to linB the final
application complaining that it canUt find some files.
ome old versions o( ma"e that donHt correctly put the compiled versions o( the (iles in the (unctions
directory into that same directory; ,ry running cp L.o functions and then re2running maBe to see i(
that helps; .( it doesA you should really upgrade to a recent version o( GN@ ma"e;
N. 2hen linBing PHPE it complains about a number of undefined references.
,a"e a loo" at the lin" line and ma"e sure that all o( the appropriate li#raries are #eing included at
the end; 5ommon ones that you might have missed are H2ldlH and any li#raries re/uired (or any
data#ase support you included;
.( youHre lin"ing Eith Apache 1;0;FA did you remem#er to add the appropriate in(ormation to the
+J,RAZL.B line o( the 5on(iguration (ile and re2rerun ApacheHs 5on(igure scriptN ee the
.N,ALL (ile that comes Eith the distri#ution (or more in(ormation;
ome people have also reported that they had to add H2ldlH immediately (olloEing libphp1.a
Ehen lin"ing Eith Apache;
O. I canUt figure out ho3 to build PHP 3ith Apache !.7.
,his is actually /uite easy; FolloE these steps care(ullyC
Gra# the latest Apache 1;7 distri#ution (rom httpCDDEEE;apache;orgDdistDhttpdD;
@ngzip and untar it someEhereA (or eFample /usr/local/src/apacheF6.<;
5ompile P&P #y (irst running .Aconfigure ((3ith(apacheHAQpathGAapache(!.7 >su#stitute
`path_ (or the actual path to your apache21;7 directory;
,ype maBe (olloEed #y maBe install to #uild P&P and copy the necessary (iles to the
Apache distri#ution tree;
5hange directories into to your /<path>/apacheF6.</src directory and edit the
Ron#iEuration (ile; Add to the (ileC ,##Mo#ule mo#ules/php;/l61php;.a;
,ypeC .Aconfigure (olloEed #y ma>e;
%ou should noE have a P&P2ena#led httpd #inarya
Note: %ou can also use the neE Apache ./con96Eure script; ee the instructions in the
RE,DME.con96Eure (ile Ehich is part o( your Apache distri#ution; Also have a loo" at the
4.&*,OO (ile in the P&P distri#ution;
!D. I ha5e follo3ed all the steps to install the Apache module 5ersion on )NIIE and my PHP
scripts sho3 up in my bro3ser or I am being asBed to sa5e the file.
,his means that the P&P module is not getting invo"ed (or some reason; ,hree things to chec"
#e(ore as"ing (or (urther helpC
Ma"e sure that the httpd #inary you are running is the actual neE httpd #inary you 'ust #uilt;
,o do thisA try runningC /path/to/16nar?/http# =l
.( you donHt see mod%php1.c listed then you are not running the right #inary; Find and
install the correct #inary;
Ma"e sure you have added the correct Mime ,ype to one o( your ,pache .con9 (iles; .t
should #eC ,##T?pe appl6cat6on/8=http#=phpR .phpR >(or P&P 7?
or ,##T?pe appl6cat6on/8=http#=php .php >(or P&P 8?
Also ma"e sure that this Add,ype line is not hidden aEay inside a `$irtualhost_ or
`Directory_ #loc" Ehich Eould prevent it (rom applying to the location o( your test script;
FinallyA the de(ault location o( the Apache con(iguration (iles changed #etEeen Apache 1;0
and Apache 1;7; %ou should chec" to ma"e sure that the con(iguration (ile you are adding
the Add,ype line to is actually #eing read; %ou can put an o#vious syntaF error into your
httpd;con( (ile or some other o#vious change that Eill tell you i( the (ile is #eing read
correctly;
!!. It says to use- ,,acti%ate,&odule9src8&odules8php:8libphp:.aE but that file doesnUt e+istE so I
changed it to ,,acti%ate,&odule9src8&odules8php:8lib&odphp:.a and it doesnUt 3orBe& 2hatUs
going on&
Note that the libphp1.a (ile is not supposed to eFist; ,he apache process Eill create ita
!*. 2hen I try to build Apache 3ith PHP as a static module using ,,acti%ate,
&odule9src8&odules8php:8libphp:.a it tells me that my compiler is not AN,I compliant.
,his is a misleading error message (rom Apache that has #een (iFed in more recent versions;
!7. 2hen I try to build PHP using ,,with,apxs I get strange error messages.
,here are three things to chec" here; FirstA (or some reason Ehen Apache #uilds the apFs Perl scriptA
it sometimes ends up getting #uilt Eithout the proper compiler and (lags varia#les; Find your apFs
script >try the command 3hich ap+s?A itHs sometimes (ound in /
usr/local/apache/bin/apxs or /usr/sbin/apxs; Open it and chec" (or lines similar to
theseC
my $RS-%RSO,-&%&HO4Z > M M; U substituted =ia "aIe#ile.tmpl
my $RS-%OL%&HO4Z > M M; U substituted =ia "aIe#ile.tmpl
my $RS-%OLSO,-&%&HO4Z > M M; U substituted =ia "aIe#ile.tmpl
.( this is Ehat you seeA you have (ound your pro#lem; ,hey may contain 'ust spaces or other
incorrect valuesA such as H/>?H; 5hange these lines to sayC
my $RS-%RSO,-&%&HO4Z > MF#pic FL&H,'EL%"?L+OEM; U substituted =ia "aIe#ile.tmpl
my $RS-%OL%&HO4Z > MEccM; U substituted =ia "aIe#ile.tmpl
my $RS-%OLSO,-&%&HO4Z > Q3Fshared9; U substituted =ia "aIe#ile.tmpl
,he second possi#le pro#lem should only #e an issue on Red &at K;1 and K;0; ,he apFs script Red
&at ships is #ro"en; Loo" (or this lineC
my $RS-%O4ZEXERL4' > MmodulesM; U substituted =ia ,,R4 install
.( you see the a#ove lineA change it to thisC
my $RS-%O4ZEXERL4' > M/usr/lib/apacheM; U substituted =ia ,,R4 install
LastA i( you recon(igureDreinstall ApacheA add a maBe clean to the process a(ter .Aconfigure and
#e(ore maBe;
!8. Kuring maBeE I get errors in microtimeE and a lot of /+S$5*_ stuff.
During the maBe portion o( installationA i( you encounter pro#lems that loo" similar to thisC
microtime.c@ 4n #unction dphp%i#%EetrusaEeM@
microtime.c@K1@ storaEe si0e o# dusEM isnMt Ino8n
microtime.c@KH@ d'+&,-E%&EOSM undeclared 3#irst use in this #unction9
microtime.c@KH@ 3Each undeclared identi#ier is reported only once
microtime.c@KH@ #or each #unction it appears in.9
microtime.c@62<@ d'+&,-E%RH4OL'E.M undeclared 3#irst use in this #unction9
maIe)</@ WWW )microtime.lo/ Error 6
maIe)</@ Oea=inE directory d/home/master/phpF1.2.6/ext/standardM
maIe)C/@ WWW )allFrecursi=e/ Error 6
maIe)C/@ Oea=inE directory d/home/master/phpF1.2.6/ext/standardM
maIe)6/@ WWW )allFrecursi=e/ Error 6
maIe)6/@ Oea=inE directory d/home/master/phpF1.2.6/extM
maIe@ WWW )allFrecursi=e/ Error 6
%our system is #ro"en; %ou need to (iF your /usr/include (iles #y installing a gli#c2devel
pac"age that matches your gli#c; ,his has a#solutely nothing to do Eith P&P; ,o prove this to
yoursel(A try this simple testC
$ cat >test.c <<X
Uinclude <sys/resource.h>
X
$ Ecc FE test.c >/de=/null
.( that speEs out errorsA you "noE your include (iles are messed up;
!9. 2hen compiling PHP 3ith My,$:E configure runs fine but during &ake I get an error
similar to the follo3ing- ext8&)s;l8lib&)s;l8&)_te&pna&.o'.text<=x:>(: "n function
&)_te&pna&?: 8php:8ext8&)s;l8lib&)s;l8&)_te&pna&.c:@=A: the use of te&pna&? is dangerousB
better use &kste&p?E 3hatUs 3rong&
FirstA itHs important to realize that this is a Iarn6nE and not a (atal error; Because this is o(ten the
last output seen during ma>eA it may seem li"e a (atal error #ut itHs not; O( courseA i( you set your
compiler to die on LarningsA it Eill; Also "eep in mind that MyOL support is ena#led #y de(ault;
!<. I 3ant to upgrade my PHP. 2here can I find the .Aconfigure line that 3as used to build my
current PHP installation&
+ither you loo" at con(ig;nice (ileA in the source tree o( your current P&P installation orA i( this is not
availa#leA you simply run a
<?php phpin#o39; ?>
script; On top o( the output the .Aconfigure lineA that Eas used to #uild this P&P installation is
shoEn;
!=. 2hen building PHP 3ith the FK library it either gi5es strange compile errors or segfaults
on e+ecution.
Ma"e sure your GD li#rary and P&P are lin"ed against the same depending li#raries >e;g; li#png?;
Captulo =D. )so de PHP
+sta secci-n reBne varios errores comunes /ue usted puede en(rentar cuando escri#e scripts P&P;
1; Ouisiera escri#ir un script P&P gen<rico /ue pudiera mane'ar datos /ue lleguen desde cual/uier
(ormulario; U5-mo averiguo /u< varia#les del m<todo PO, se encuentran disponi#lesN
0; Necesito convertir todas las comillas sencillas >H? en una #arra invertida seguida de una comilla
sencilla >hH?; U5-mo puedo hacer esto con una eFpresi-n regularN ,am#i<n me gustar)a convertir = en
h= y h en hh;
7; ,odos mis caracteres = se convierten en h= y mis H se convierten en hHA Uc-mo me deshago de todas
esas #arras invertidas indeseadasN U5-mo y por/u< llegaron all)N
8; 5uando hago lo siguienteA la salida se imprime en el orden WocadoC
<?php
#unction mi%#uncion3$arEumento9
:
echo $arEumento [ 62;
;
$=ariable > 62;
echo "mi%#uncion3$=ariable9 > " . mi%#uncion3$=ariable9;
?>
U/u< sucedeN
4; U&eyA /u< ha sucedido con mis saltos de l)neaN
<pre>
<?php echo "Esta debe ser la primera l&iacute;nea."; ?>
<?php echo "Esto debe aparecer despu&eacute;s de la nue=a l&iacute;nea anterior."; ?>
</pre>
K; Reci#o el mensa'e HLarningC 5annot send session coo"ie 2 headers already sent;;;H o H5annot add
header in(ormation 2 headers already sent;;;H;
:; Necesito acceder a in(ormaci-n directamente de las ca#eceras de la petici-n; U5-mo puedo hacer
estoN
M; 5uando intento usar autenticaci-n con ..A reci#o el mensa'e HNo .nput (ile speci(iedH;
9; Mi script P&P (unciona en .+ y LynFA pero en Netscape parte de mi salida est* (altando; 5uando
acciono =$er c-digo (uente= veo el contenido en .+ pero no en Netscape;
13; U5-mo se supone /ue mezcle JML y P&PN fe /ue'a so#re mis eti/uetas `NFmla
11; U5-mo puedo usar P&P con FrontPage u otro editor &,ML /ue insiste en mover mi c-digo por
todas partesN
10; U+n d-nde puedo encontrar una lista completa de varia#les disponi#les en P&PN
17; U5-mo puedo generar archivos PDF sin usar las #i#liotecas no2li#res y comerciales 5li#PDF y
PDFLi#N Ouisiera algo /ue (uera gratuito y no re/uiera de #i#liotecas PDF eFternas;
18; +stoy tratando de acceder a una de las varia#les 5G. est*ndar >como YDO5@M+N,ZROO, o
Y&,,PZR+F+R+R? en una (unci-n de(inida por el usuarioA y parece /ue no la encuentra; UOu< est*
(allandoN
14; Algunas directivas de P&P pueden reci#ir tam#i<n ata'os de valores de #ytesA en lugar de reci#ir
s-lamente valores de #ytes tipo integer ; U5u*les son todas las opciones de ata'os de valores de #yte
disponi#lesN U% puedo usarlos por (uera de php.iniN
!. $uisiera escribir un script PHP gen%rico ?ue pudiera mane'ar datos ?ue lleguen desde
cual?uier formulario. #C"mo a5eriguo ?u% 5ariables del m%todo PJ,T se encuentran
disponibles&
P&P o(rece numerosas varia#les prede(inidasA como la super2glo#al '_+OST; @sted podr)a recorrer
'_+OST con un ciclo ya /ue se trata de una matriz asociativa con todos los valores PO,; Por
e'emploA puede recorrer la matriz simplemente con (oreachA realizar un che/ueo por valores empty
./A e imprimirlos;
<?php
$=acio > $post > array39;
#oreach 3$%?&* as $nombre%=ar >> $=alor%=ar9 :
i# 3empty3$=alor%=ar99 :
$=acio)$nombre%=ar/ > $=alor%=ar;
; else :
$post)$nombre%=ar/ > $=alor%=ar;
;
;
print "<pre>";
i# 3empty3$=acio99 :
print ".inEuno de los =alores ?&* est&aacute;n =ac&iacute;os, se en=i&oacute;@Vn";
=ar%dump3$post9;
; else :
print "*enemos " . count3$=acio9 . " =alores =ac&iacute;osVn";
print "&e en=i&oacute;@Vn"; =ar%dump3$post9;
print "(ac&iacute;os@Vn"; =ar%dump3$=acio9;
exit;
;
?>
,uperglobals- Nota de disponibilidad- Desde 8;1;3A est*n disponi#les algunas
matrices superglo#ales tales como '_-ETA '_+OSTA y '_SER(ERA etc; Para m*s
in(ormaci-n puede consultar la secci-n superglo#als
*. Necesito con5ertir todas las comillas sencillas .U/ en una barra in5ertida seguida de una
comilla sencilla .gU/. #C"mo puedo hacer esto con una e+presi"n regular& Tambi%n me
gustara con5ertir 0 en g0 y g en gg.
La (unci-n addslashes./ hace esto; $ea tam#i<n mys?l>escape>string./; ,am#i<n puede remover
las #arras invertidas con stripslashes./;
Nota de directi5a- magic>?uotes>gpc- La directiva P&P magicZ/uotesZgpc tiene por
de(ecto el valor on; B*sicamente e'ecuta addslashes./ en los datos o#tenidos por G+,A
PO,A y 5OOS.+; e puede usar stripslashes./ para /uitarlos;
7. Todos mis caracteres 0 se con5ierten en g0 y mis U se con5ierten en gUE #c"mo me deshago de
todas esas barras in5ertidas indeseadas& #C"mo y por?u% llegaron all&
La (unci-n de P&P stripslashes./ eliminar* todas esas #arras invertidas de su varia#le string; Lo
m*s posi#le es /ue esas #arras invertidas eFisten m*gicamente por /ue la directiva de P&P
magicZ/uotesZgpc est* activa;
Nota de directi5a- magic>?uotes>gpc- La directiva P&P magicZ/uotesZgpc tiene por
de(ecto el valor on; B*sicamente e'ecuta addslashes./ en los datos o#tenidos por G+,A
PO,A y 5OOS.+; e puede usar stripslashes./ para /uitarlos;
8. Cuando hago lo siguienteE la salida se imprime en el orden Wocado-
<?php
#unction mi%#uncion3$arEumento9
:
echo $arEumento [ 62;
;
$=ariable > 62;
echo "mi%#uncion3$=ariable9 > " . mi%#uncion3$=ariable9;
?>
#?u% sucede&
Para poder usar los resultados de su (unci-n en una eFpresi-n >como ocurre al concatenar con otras
cadenasA como en el e'emplo anterior?A necesita devolver el valor mediante return./A no imprimirlo
con echo./;
9. #HeyE ?u% ha sucedido con mis saltos de lnea&
<pre>
<?php echo "Esta debe ser la primera l&iacute;nea."; ?>
<?php echo "Esto debe aparecer despu&eacute;s de la nue=a l&iacute;nea anterior."; ?>
</pre>
+n P&PA el (inal de un #lo/ue de c-digo esA o #ien =N_= o =N_hn= >en donde hn /uiere decir una
nueva l)nea?; De modo /ue en el e'emplo anteriorA las sentencias impresas con echo estar*n en una
l)neaA puesto /ue P&P omite los saltos de l)nea despu<s del (inal del #lo/ue; +sto /uiere decir /ue
usted necesita insertar un salto de l)nea eFtra despu<s de cada #lo/ue de c-digo P&P para hacer /ue
imprima una nueva l)nea;
UPor/u< hace esto P&PN Por /ue al dar (ormato a un documento &,ML normalA este
comportamiento por lo general hace su vida m*s simpleA ya /ue no desea ese salto de l)neaA pero
tendr)a /ue crear l)neas eFtremadamente largas o de otra (orma hacer ilegi#le el c-digo (uente #ase
para lograr ese e(ecto;
<. Mecibo el mensa'e U2arning- Cannot send session cooBie ( headers already sent...U o
UCannot add header information ( headers already sent...U.
Las (unciones header./A setcooBie./A y las (unciones de sesi-n necesitan agregar ca#eceras a la
secuencia de salidaA pero las ca#eceras s-lo pueden ser enviadas antes del resto del contenido; No
puede ha#er salida antes de usar <stas (uncionesA salida como &,ML; La (unci-n headers>sent./
revisa si su script ya ha enviado las ca#ecerasA y asimismo consulte las (unciones de 5ontrol de
alida;
=. Necesito acceder a informaci"n directamente de las cabeceras de la petici"n. #C"mo puedo
hacer esto&
La (unci-n getallheaders./ har* esto si est* e'ecutando P&P como m-dulo de Apache; As) /ueA el
siguiente segmento de c-digo le mostrar* todas las ca#eceras de petici-nC
<?php
$cabeceras > Eetallheaders39;
#oreach 3$cabeceras as $nombre >> $contenido9 :
echo "cabeceras)$nombre/ > $contenido<br />Vn";
;
?>
$ea tam#i<n apache>looBup>uri./A apache>response>headers./A y fsocBopen./
N. Cuando intento usar autenticaci"n con II,E recibo el mensa'e UNo Input file specifiedU.
+l modelo de seguridad de .. es la causa del pro#lema a/u); +ste es un inconveniente comBn a
todos los programas 5G. /ue corren #a'o ..; @na (orma de evitar el pro#lema es crear un archivo
&,ML plano >no interpretado por P&P? como p*gina de entrada en un directorio autenticado; Luego
usar una eti/ueta M+,A para redirigir a la p*gina P&PA o tener un enlace hacia la p*gina P&P; P&P
reconocer* entonces la autenticaci-n correctamente; 5on el m-dulo .AP.A esto no es un pro#lema;
+ste inconveniente no de#e a(ectar otros servidores Ee# N,; Para m*s in(ormaci-nA veaC
httpCDDsupport;microso(t;comDsupportD"#DarticlesD/1K3D8D00;asp y la secci-n del manual so#re
Autenticaci-n &,,P;
O. Mi script PHP funciona en IE y :yn+E pero en Netscape parte de mi salida est faltando.
Cuando acciono 0Cer c"digo fuente0 5eo el contenido en IE pero no en Netscape.
Netscape es m*s estricto /ue .+ en cuanto a eti/uetas &,ML >como ta#las? se re(iere; Pasar su
salida &,ML a trav<s de un validador de &,MLA como validator;E7;orgA puede ser de ayuda; Por
e'emploA una eti/ueta `Dta#le_ (altante puede ser la causa de <ste pro#lema;
AsimismoA tanto .+ como LynF ignoran los caracteres N@L >Q0? en la secuencia &,MLA mientras
/ue Netscape no; La me'or manera de che/uear esto es compilar la versi-n de l)nea de comandos de
P&P >tam#i<n conocida como la versi-n 5G.? y e'ecutar su script desde la l)nea de comandos; +n
VniFA env)e la salida a trav<s de un pipe a o# =c y #us/ue caracteres Q0; i se encuentra en LindoEs
necesita un editor o algBn otro programa /ue le permita ver archivos #inarios; 5uando Netscape ve
un N@L en un archivoA t)picamente no imprimir* nada m*s en a/uella l)neaA mientras /ue tanto .+
como LynF si lo hacen;
!D. #C"mo se supone ?ue me6cle IM: y PHP& f,e ?ue'a sobre mis eti?uetas Q&+mle
Para poder em#e#er eti/uetas `NFml directamente en su c-digo P&PA tendr* /ue desha#ilitar las
eti/uetas cortasA de(iniendo la directiva P&P shortZopenZtags como 0; No puede de(inir esta
directiva con ini>set./; .ndependientemente del valor de shortZopenZtagsA usted puede hacer algo
comoC $%php echo <$%8ml<J %&; +l valor predeterminado para esta directiva es on;
!!. #C"mo puedo usar PHP con ;rontPage u otro editor HTM: ?ue insiste en mo5er mi
c"digo por todas partes&
@na de las cosas m*s (*ciles es ha#ilitar el uso de eti/uetas AP en su c-digo P&P; +sto le permite
usar el estilo de delimitadores de c-digo AP `b y b_; Algunos de los editores &,ML populares
gestionan <stas eti/uetas de (orma m*s inteligente >por ahora?; Para ha#ilitar las eti/uetas estilo2
APA necesita de(inir la varia#le php.ini aspZtagsA o usar la directiva de Apache apropiada;
!*. #En d"nde puedo encontrar una lista completa de 5ariables disponibles en PHP&
5onsulte la p*gina del manual so#re varia#les prede(inidasA ya /ue all) se incluye una lista parcial de
varia#les prede(inidas disponi#les para su script; @na lista completa de varia#les disponi#les >y
mucha m*s in(ormaci-n? puede ser consultada al llamar la (unci-n phpinfo./; AsegBrese de leer la
secci-n del manual so#re varia#les eFternas a P&P ya /ue all) se descri#en escenarios comunes para
varia#les eFternasA como las provenientes de (ormularios &,MLA 5oo"ies y @RLs;
register>globals- Nota importante- Desde P&P 8;0;3 el valor por de(ecto de la
directiva registerZglo#als es o99; La comunidad P&P anima a todos a no con(iar en esta
directiva y usar en su lugar superglo#als;
!7. #C"mo puedo generar archi5os PK; sin usar las bibliotecas no(libres y comerciales
ClibPK; y PK;:ib& $uisiera algo ?ue fuera gratuito y no re?uiera de bibliotecas PK;
e+ternas.
+Fisten algunas pocas alternativas escritas en P&PA como httpCDDEEE;ros;co;nzDpd(DA
httpCDDEEE;(pd(;orgDA httpCDDEEE;gnuvoF;comDpd(8phpDA y httpCDDEEE;potentialtech;comDppl;php;
,am#i<n eFiste el m-dulo Panda;
!8. Estoy tratando de acceder a una de las 5ariables CFI estndar .como
VKJC)MENT>MJJT o VHTTP>ME;EMEM/ en una funci"n definida por el usuarioE y
parece ?ue no la encuentra. #$u% est fallando&
+s importante darse cuenta de /ue la directiva P&P registerZglo#als tam#i<n a(ecta a varia#les de
servidor y de entorno; 5uando registerZglo#als ^ o(( >el valor predeterminado es o(( a partir de P&P
8;0;3?A 'DOCUMENT_ROOT no eFistir*; +n su lugarA use '_SER(ER)<DOCUMENT_ROOT<.; i
registerZglo#als ^ on entonces las varia#les 'DOCUMENT_ROOT y '-4OA,4S
)<DOCUMENT_ROOT<. eFistir*n tam#i<n;
i est* seguro de /ue registerZglo#als ^ on y se pregunta por/u< 'DOCUMENT_ROOT no se
encuentra disponi#le al interior de (uncionesA es por/ue <ste tipo de varia#les es como cual/uier
otraA y re/uerir)a de una sentencia Elo1al 'DOCUMENT_ROOT al interior de la (unci-n; $ea
tam#i<n la p*gina del manual so#re los conteFtos de varia#les; +s recomenda#le escri#ir c-digo
#a'o el modelo registerZglo#als ^ o((;
,uperglobals- Nota de disponibilidad- Desde 8;1;3A est*n disponi#les algunas
matrices superglo#ales tales como '_-ETA '_+OSTA y '_SER(ERA etc; Para m*s
in(ormaci-n puede consultar la secci-n superglo#als
!9. Algunas directi5as de PHP pueden recibir tambi%n ata'os de 5alores de bytesE en lugar de
recibir s"lamente 5alores de bytes tipo integer. #Cules son todas las opciones de ata'os de
5alores de byte disponibles& #@ puedo usarlos por fuera de php.ini&
Las opciones disponi#les son S >para Silo#ytes? y M >para Mega#ytes?A las cuales son insensi#les a
mayBsculas y minBsculas; 5ual/uier otro valor asume #ytes; 1M es igual a un Mega#yte o 10;PS7X
#ytes; 12 es igual a un Silo#yte o 102; #ytes; No de#er)a usar <stas notaciones cortas por (uera de
php.iniA en su lugar use un valor integer de #ytes; $ea la documentaci-n de ini>get./ para un
e'emplo so#re c-mo convertir tales valores;
Captulo =!. PHP and HTM:
P&P and &,ML interact a lotC P&P can generate &,MLA and &,ML can pass in(ormation to P&P;
Be(ore reading these (a/sA itHs important you learn hoE to retrieve varia#les (rom outside o( P&P;
,he manual page on this topic includes many eFamples as Eell; Pay close attention to Ehat
reE6ster_Elo1als means to you too;
1; Lhat encodingDdecoding do . need Ehen . pass a value through a (ormD@RLN
0; .Hm trying to use an `input type^=image=_ tagA #ut the '9oo.8 and '9oo.? varia#les arenHt availa#le;
'_-ET)<9oo.8<. isnHt eFisting either; Lhere are theyN
7; &oE do . create arrays in a &,ML `(orm_N
8; &oE do . get all the results (rom a select multiple &,ML tagN
4; &oE can . pass a varia#le (rom !avascript to P&PN
!. 2hat encodingAdecoding do I need 3hen I pass a 5alue through a formA)M:&
,here are several stages (or Ehich encoding is important; Assuming that you have a string '#ataA
Ehich contains the string you Eant to pass on in a non2encoded EayA these are the relevant stagesC
&,ML interpretation; .n order to speci(y a random stringA you must include it in dou#le
/uotesA and htmlspecialchars./ the Ehole value;
@RLC A @RL consists o( several parts; .( you Eant your data to #e interpreted as one itemA
you must encode it Eith urlencode./;
E'emplo =!(!. A hidden HTM: form element
<?php
echo "<input type>hidden =alue>V"" . htmlspecialchars3$data9 . "V">Vn";
?>
Nota- .t is Erong to urlencode./ '#ataA #ecause itHs the #roEsers responsi#ility to
urlencode./ the data; All popular #roEsers do that correctly; Note that this Eill happen
regardless o( the method >i;e;A G+, or PO,?; %ouHll only notice this in case o( G+,
re/uest thoughA #ecause PO, re/uests are usually hidden;
E'emplo =!(*. Kata to be edited by the user
<?php
echo "<textarea name>mydata>Vn";
echo htmlspecialchars3$data9."Vn";
echo "</textarea>";
?>
Nota- ,he data is shoEn in the #roEser as intendedA #ecause the #roEser Eill interpret
the &,ML escaped sym#ols;
@pon su#mittingA either via G+, or PO,A the data Eill #e urlencoded #y the #roEser
(or trans(erringA and directly urldecoded #y P&P; o in the endA you donHt need to do any
urlencodingDurldecoding yoursel(A everything is handled automagically;
E'emplo =!(7. In an )M:
<?php
echo "<a hre#>V"" . htmlspecialchars3"/nextpaEe.php?staEe>C<&data>" .
urlencode3$data99 . "V">Vn";
?>
Nota- .n (act you are (a"ing a &,ML G+, re/uestA there(ore itHs necessary to manually
urlencode./ the data;
Nota- %ou need to htmlspecialchars./ the Ehole @RLA #ecause the @RL occurs as
value o( an &,ML2attri#ute; .n this caseA the #roEser Eill (irst un2htmlspecialchars./
the valueA and then pass the @RL on; P&P Eill understand the @RL correctlyA #ecause
you urlencoded./ the data;
%ouHll notice that the ] in the @RL is replaced #y ]ampJ; Although most #roEsers Eill
recover i( you (orget thisA this isnHt alEays possi#le; o even i( your @RL is not dynamicA
you nee# to htmlspecialchars./ the @RL;
*. IUm trying to use an Qinput typeH0image0G tagE but the $foo.x and $foo.) 5ariables arenUt
a5ailable. $_5*[?foo.x?] isnUt e+isting either. 2here are they&
Lhen su#mitting a (ormA it is possi#le to use an image instead o( the standard su#mit #utton Eith a
tag li"eC
<input type>"imaEe" src>"imaEe.Ei#" name>"#oo">
Lhen the user clic"s someEhere on the imageA the accompanying (orm Eill #e transmitted to the
server Eith tEo additional varia#lesC 9oo.8 and 9oo.?;
Because 9oo.8 and 9oo.? Eould ma"e invalid varia#le names in P&PA they are automagically
converted to 9oo_8 and 9oo_?; ,hat isA the periods are replaced Eith underscores; oA youHd access
these varia#les li"e any other descri#ed Eithin the section on retrieving varia#les (rom outside o(
P&P; For eFampleA '_-ET)<9oo_8<.;
7. Ho3 do I create arrays in a HTM: QformG&
,o get your `(orm_ result sent as an array to your P&P script you name the `input_A `select_ or
`teFtarea_ elements li"e thisC
<input name>""y,rray)/">
<input name>""y,rray)/">
<input name>""y,rray)/">
<input name>""y,rray)/">
Notice the s/uare #rac"ets a(ter the varia#le nameA thatHs Ehat ma"es it an array; %ou can group the
elements into di((erent arrays #y assigning the same name to di((erent elementsC
<input name>""y,rray)/">
<input name>""y,rray)/">
<input name>""y?ther,rray)/">
<input name>""y?ther,rray)/">
,his produces tEo arraysA MyArray and MyOtherArrayA that gets sent to the P&P script; .tHs also
possi#le to assign speci(ic "eys to your arraysC
<input name>",nother,rray)/">
<input name>",nother,rray)/">
<input name>",nother,rray)email/">
<input name>",nother,rray)phone/">
,he AnotherArray array Eill noE contain the "eys 3A 1A email and phone;
Nota- peci(ying an arrays "ey is optional in &,ML; .( you do not speci(y the "eysA the
array gets (illed in the order the elements appear in the (orm; Our (irst eFample Eill
contain "eys 3A 1A 0 and 7;
ee also Array Functions and $aria#les (rom outside P&P;
8. Ho3 do I get all the results from a select multiple HTM: tag&
,he select multiple tag in an &,ML construct alloEs users to select multiple items (rom a list;
,hese items are then passed to the action handler (or the (orm; ,he pro#lem is that they are all
passed Eith the same Eidget name; ie;
<select name>"=ar" multiple>
+ach selected option Eill arrive at the action handler asC
=ar>option6
=ar>optionC
=ar>option<
+ach option Eill overErite the contents o( the previous 'ar varia#le; ,he solution is to use P&PHs
=array (rom (orm element= (eature; ,he (olloEing should #e usedC
<select name>"=ar)/" multiple>
,his tells P&P to treat 'ar as an array and each assignment o( a value to varPQ adds an item to the
array; ,he (irst item #ecomes 'ar)0.A the neFt 'ar)1.A etc; ,he count./ (unction can #e used to
determine hoE many options Eere selectedA and the sort./ (unction can #e used to sort the option
array i( necessary;
Note that i( you are using !avacript the ). on the element name might cause you pro#lems Ehen
you try to re(er to the element #y name; @se itHs numerical (orm element .D insteadA or enclose the
varia#le name in single /uotes and use that as the indeF to the elements arrayA (or eFampleC
=ariable > documents.#orms)2/.elements)M=ar)/M/;
9. Ho3 can I pass a 5ariable from [a5ascript to PHP&
ince !avascript is >usually? a client2side technologyA and P&P is >usually? a server2side technologyA
and since &,,P is a =stateless= protocolA the tEo languages cannot directly share varia#les;
.t isA hoEeverA possi#le to pass varia#les #etEeen the tEo; One Eay o( accomplishing this is to
generate !avascript code Eith P&PA and have the #roEser re(resh itsel(A passing speci(ic varia#les
#ac" to the P&P script; ,he eFample #eloE shoEs precisely hoE to do this 22 it alloEs P&P code to
capture screen height and EidthA something that is normally only possi#le on the client side;
<?php
i# 3isset3$%-E*)M8idthM/9 ,.L isset3$%-E*)MheiEhtM/99 :
// output the Eeometry =ariables
echo "&creen 8idth is@ ". $%-E*)M8idthM/ ."<br />Vn";
echo "&creen heiEht is@ ". $%-E*)MheiEhtM/ ."<br />Vn";
; else :
// pass the Eeometry =ariables
// 3preser=e the oriEinal Query strinE
// FF post =ariables 8ill need to handled di##erently9
echo "<script lanEuaEe>V"ja=ascriptV">Vn";
echo " location.hre#>V"$:%&E'(E')M&R'4*%.,"EM/;?$:%&E'(E')MN+E'P%&*'4.-M/;"
. "&8idth>V" [ screen.8idth [ V"&heiEht>V" [ screen.heiEht;Vn";
echo "</script>Vn";
exit39;
;
?>
Captulo =*. PHP and CJM
P&P can #e used to access 5OM and D5OM o#'ects on Lin70 plat(orms;
1; . have #uilt a DLL to calculate something; .s there any Eay to run this DLL under P&P N
0; Lhat does H@nsupported variant typeC FFFF >3FFFFF?H mean N
7; .s it possi#le manipulate visual o#'ects in P&P N
8; 5an . store a 5OM o#'ect in a session N
4; &oE can . trap 5OM errors N
K; 5an . generate DLL (iles (rom P&P scripts li"e i can in Perl N
:; Lhat does H@na#le to o#tain .Dispatch inter(ace (or 5L.D \FFFFFFFF2FFFF2FFFF2FFFF2
FFFFFFFFFFFF]H mean N
M; &oE can . run 5OM o#'ect (rom remote server N
9; . get HD5OM is disa#led in 5Chpath;;;hscriptname;php on line KHA Ehat can . do N
13; .s it possi#le to loadDmanipulate an ActiveJ o#'ect in a page Eith P&P N
11; .s it possi#le to get a running instance o( a component N
10; .s there a Eay to handle an event sent (rom 5OM o#'ect N
17; .Hm having pro#lems Ehen trying to invo"e a method o( a 5OM o#'ect Ehich eFposes more than
one inter(ace; Lhat can . do N
18; o P&P Eor"s Eith 5OMA hoE a#out 5OMR N
14; .( P&P can manipulate 5OM o#'ectsA can Ee imagine to use M, to manage components
resourcesA in con'unction Eith P&P N
!. I ha5e built a K:: to calculate something. Is there any 3ay to run this K:: under PHP &
.( this is a simple DLL there is no Eay yet to run it (rom P&P; .( the DLL contains a 5OM server
you may #e a#le to access it i( it implements the .Dispatch inter(ace;
*. 2hat does U)nsupported 5ariant type- ++++ .D+++++/U mean &
,here are dozens o( $AR.AN, types and com#inations o( them; Most o( them are already
supported #ut a (eE still have to #e implemented; Arrays are not completely supported; Only single
dimensional indeFed only arrays can #e passed #etEeen P&P and 5OM; .( you (ind other types that
arenHt supportedA please report them as a #ug >i( not already reported? and provide as much
in(ormation as availa#le;
7. Is it possible manipulate 5isual ob'ects in PHP &
Generally it isA #ut as P&P is mostly used as a Ee# scripting language it runs in the Ee# servers
conteFtA thus visual o#'ects Eill never appear on the servers des"top; .( you use P&P (or application
scripting e;g; in con'unction Eith P&P2G,S there is no limitation in accessing and manipulating
visual o#'ects through 5OM;
8. Can I store a CJM ob'ect in a session &
NoA you canHt; 5OM instances are treated as resources and there(ore they are only availa#le in a
single scriptHs conteFt;
9. Ho3 can I trap CJM errors &
5urrently itHs not possi#le to trap 5OM errors #eside the Eays provided #y P&P itsel( >GA
trac"ZerrorsA ;;?A #ut Ee are thin"ing o( a Eay to implement this;
<. Can I generate K:: files from PHP scripts liBe i can in Perl &
NoA un(ortunately there is no such tool availa#le (or P&P;
=. 2hat does U)nable to obtain IKispatch interface for C:,IK h++++++++(++++(++++(++++(
++++++++++++iU mean &
,his error can have multiple reasonsC
the 5L.D is Erong
the re/uested DLL is missing
the re/uested component doesnHt implement the .Dispatch inter(ace
N. Ho3 can I run CJM ob'ect from remote ser5er &
+Factly li"e you run local o#'ects; %ou only have to pass the .P o( the remote machine as second
parameter to the 5OM constructor;
Ma"e sure that you have set com.allo7_#com:true in your php.ini;
O. I get UKCJM is disabled in C-gpath...gscriptname.php on line <UE 3hat can I do &
+dit your php.ini and set com.allo7_#com:true;
!D. Is it possible to loadAmanipulate an Acti5eI ob'ect in a page 3ith PHP &
,his has nothing to do Eith P&P; ActiveJ o#'ects are loaded on client side i( they are re/uested #y
the &,ML document; ,here is no relation to the P&P script and there(ore there is no direct server
side interaction possi#le;
!!. Is it possible to get a running instance of a component &
,his is possi#le Eith the help o( moni"ers; .( you Eant to get multiple re(erences to the same Eord
instance you can create that instance li"e shoEnC
$8ord > ne8 R?"3"R@VdocsV8ord.doc"9;
,his Eill create a neE instance i( there is no running instance availa#le or it Eill return a handle to
the running instanceA i( availa#le;
!*. Is there a 3ay to handle an e5ent sent from CJM ob'ect &
tarting in P&P 8;7;3A you can de(ine an event sin" and #ind it as shoEn in the eFample #eloE; %ou
can use com>print>typeinfo./ to have P&P generate a s"eleton (or the event sin" class;
E'emplo =*(!. CJM e5ent sinB e+ample
<?php
class 4EE=ent&inIer :
=ar $terminated > #alse;
#unction roEressRhanEe3$proEress, $proEressmax9 :
echo "Lo8nload proEress@ $proEress / $proEressmaxVn";
;
#unction LocumentRomplete3&$dom, $url9 :
echo "Locument $url completeVn";
;
#unction ?nNuit39 :
echo "Nuit!Vn";
$thisF>terminated > true;
;
;
$ie > ne8 R?"3"4nternetExplorer.,pplication"9;
$sinI >& ne8 4EE=ent&inIer39;
com%e=ent%sinI3$ie, $sinI, "L7ebZro8serE=entsC"9;
$ieF>(isible > true;
$ieF>.a=iEate3"http@//888.php.net"9;
8hile3!$sinIF>terminated9 :
com%messaEe%pump312229;
;
$ie > null;
?>
!7. IUm ha5ing problems 3hen trying to in5oBe a method of a CJM ob'ect 3hich e+poses
more than one interface. 2hat can I do &
,he ansEer is as simple as unsatis(ying; . donHt "noE eFactly #ut i thin" you can do nothing; .(
someone has speci(ic in(ormation a#out thisA please let me "noE C?
!8. ,o PHP 3orBs 3ith CJME ho3 about CJMR &
5OMR eFtends 5OM #y a (rameEor" (or managing components through M, and MMO #ut
there is nothing special that P&P has to support to use such components;
!9. If PHP can manipulate CJM ob'ectsE can 3e imagine to use MT, to manage components
resourcesE in con'unction 3ith PHP &
P&P itsel( doesnHt handle transactions yet; ,hus i( an error occurs no roll#ac" is initiated; .( you use
components that support transactions you Eill have to implement the transaction management
yoursel(;
Captulo =7. PHP y otros lengua'es
P&P es el me'or lengua'e para programaci-n Ee#A Upero /u< hay de los otros lengua'esN
1; UP&P vs; APN
0; U+Fiste so(tEare de conversi-n de AP a P&PN
7; UP&P vs; 5old FusionN
8; UP&P vs; PerlN
!. #PHP 5s. A,P&
AP no es realmente un lengua'e como talA es el acr-nimo de Active erver PagesA el lengua'e
usado en realidad para programar AP es $isual Basic cript o !cript; +l mayor inconveniente de
AP es /ue se trata de un sistema propietario /ue es usado nativamente s-lo por Microso(t .nternet
.n(ormation erver >..?; +sto limita su disponi#ilidad a servidores #asados en Lin70; +Fiste un par
de proyectos en desarrollo /ue permiten /ue AP corra en otros entornos y servidores Ee#C
.nstantAP de &alcyon >comercial?A 5hiliao(t AP de 5hiliao(t >comercial?; e dice /ue AP es
un lengua'e m*s lento y pesado /ue P&PA y tam#i<n menos esta#le; Algunas de las venta'as de AP
consisten en /ue de#ido a /ue usa principalmente $BcriptA es relativamente simple tratar con el
lengua'e si usted ya conoce c-mo programar en $isual Basic; +l soporte de AP tam#i<n se
encuentra ha#ilitado por de(ecto en el servidor ..A (acilitando su instalaci-n y e'ecuci-n; Los
componentes integrados en AP son #astante limitadosA de modo /ue si necesita usar caracter)sticas
=avanzadas=A como interactuar con servidores F,PA necesita comprar componentes adicionales;
*. #E+iste soft3are de con5ersi"n de A,P a PHP&
iA la herramienta de lado del servidor asp0php es una de las m*s conocidasA as) como <sta opci-n
de lado del cliente;
7. #PHP 5s. Cold ;usion&
5omBnmente se dice /ue P&P es m*s r*pido y e(iciente para tareas comple'as de programaci-n y
cuando se desea pro#ar ideas nuevas; AsimismoA P&P se considera por lo general m*s esta#le y
menos intensivo en el uso de recursos; 5old Fusion posee un me'or gestor de erroresA asi como
a#stracciones de #ases de datos y procesamiente de (echasA aun/ue la a#stracci-n de #ases de datos
es parte de P&P 8; Otra de las cosas /ue se lista como una de las (ortalezas de 5old Fusion es su
eFcelente motor de #Bs/uedaA pero se ha dicho /ue un motor de #Bs/ueda no es algo /ue de#a ser
incluido en un lengua'e de scripting orientado a Ee#; P&P corre en casi cual/uier plata(orma /ue
eFisteX 5old Fusion s-lo se encuentra disponi#le en Lin70A olarisA LinuF y &PD@J; 5old Fusion
posee un #uen entorno integrado de desarrolloA y es generalmente m*s sencillo para principiantesA
mientras /ue P&P re/uiere inicialmente de un mayor conocimiento de programaci-n; 5old Fusion
est* diseWado hacia personas sin eFperiencia en programaci-nA mientras /ue P&P se concentra en
los programadores;
@n eFcelente resumen so#re este temaA escrito por Michael ! heldonA ha sido pu#licado en la lista
de correo de P&P; Puede encontrarse una copia en httpCDDmarc;theaimsgroup;comDNl^php2
generalim^94K301K:810480iE^1;
8. #PHP 5s. Perl&
La mayor venta'a de P&P so#re Perl es /ue P&P (ue diseWado para desarrollo de scripts orientados a
Ee#A mientras /ue Perl (ue diseWado para hacer muchas m*s cosas y de#ido a estoA se hace muy
complicado; La (leFi#ilidad D comple'idad de Perl (acilitan la escritura de c-digo /ue otro autor D
programador puede encontrar muy di()cil de entender; P&P posee un (ormato menos con(uso y m*s
estrictoA sin perder (leFi#ilidad; 5on P&P es m*s (*cil la integraci-n con &,ML /ue con Perl; P&P
cuenta con pr*cticamente toda la (uncionalidad H#uenaH de PerlC construcciones del lengua'eA sintaFis
y dem*sA sin hacerlo tan complicado como Perl puede llegar a ser; Perl es un lengua'e muy usado y
aut<nticoA ha estado vigente desde (inales de los ochentasA pero P&P est* madurando muy
r*pidamente;
Captulo =8. Migraci"n de PHP * a PHP 7
P&P ya tiene una larga historia tras <lC Las legendarias versiones P&P 1;3A P&PDF.A P&P 7;3 y P&P
8;3;
1; UMigraci-n de P&P 0 a P&P 7N
!. #Migraci"n de PHP * a PHP 7&
%a no se o(rece soporte para P&PDF. 0;3; Por (avor re(i<rase a la secci-n apropiada del manual para
m*s in(ormaci-n so#re la migraci-n desde P&PDF. 0;3;
i aun est* tra#a'ando con P&P 0A le recomendamos 9uertemente /ue se actualice directamente a
P&P 8;
Captulo =9. Migraci"n de PHP 7 a PHP 8
P&P ya tiene una larga historia tras <lC Las legendarias versiones P&P 1;3A P&PDF.A P&P 7;3 y P&P
8;3;
1; Migraci-n de P&P 7 a P&P 8
0; UFuncionan las sesiones en P&P 7N
7; UFunciones incompati#lesN
!. Migraci"n de PHP 7 a PHP 8
P&P 8 (ue diseWado para ser tan compati#le con versiones anteriores como (uera posi#leA y muy
poco de su (uncionalidad (ue descontinuado en el proceso; i se encuentra realmente inseguro so#re
la compati#ilidadA de#er)a instalar P&P 8 en un entorno de prue#a y correr sus scripts all);
AsimismoA vea el ap<ndice de migraci-n apropiado de este manual;
*. #;uncionan las sesiones en PHP 7&
Aun cuando el soporte nativo de sesiones no eFist)a en P&P 7A eFisten aplicaciones desarrolladas
por terceros /ue o(rec)an >y aun lo hacen? la (uncionalidad de las sesiones; +l m<todo m*s comBn
era mediante el uso de P&PL.B;
7. #;unciones incompatibles&
Dado /ue P&P 8 es #*sicamente una nueva versi-n escrita desde ceros del motor de P&P completoA
hu#o unas pocas (unciones /ue (ueron alteradasA y despu<s de todoA solo algunas de las m*s
eF-ticas;
Captulo =<. Migrating from PHP 8 to PHP 9
,his (a/ section Eill help you migrate (rom P&P 8 to P&P 4;
1; Migrating (rom P&P 8 to P&P 4
0; Does MyOL Eor" in P&P 4N .t seemed to have disappeared;
7; . hear P&P 4 has an entirely neE OOP modelA Eill my eFisting OOP code Eor"N Lhere do . (ind
in(ormation on these neE OOP (eaturesN
8; o #esides the neE OOP modelA Ehat else has changed in P&P 4N AlsoA is there a P&P 4 speci(ic
version o( the P&P manualN
!. Migrating from PHP 8 to PHP 9
Although P&P 4 o((ers many neE (eaturesA itHs designed to #e as compati#le Eith earlier versions o(
P&P as possi#le Eith little (unctionality #eing #ro"en in the process;
Be sure to read the appropriate P&P 4 migration appendiF o( this manual as it contains even more
in(ormation on the topic o( migrating to P&P 4;
*. Koes My,$: 3orB in PHP 9& It seemed to ha5e disappeared.
MyOL is supported Eith the only change #eing that MyOL support is no longer ena#led #y
#e9ault in P&P 4; ,his essentially means that P&P doesnHt include the ==76th=m?s@l option in the
con(igure line so that you must noE manually do this Ehen compiling P&P; LindoEs users Eill
edit php.ini and ena#le the php%mysQl.dll DLL as in P&P 8 no such DLL eFistedA it Eas
simply #uilt into your LindoEs P&P #inaries;
AlsoA the MyOL client li#raries are no longer #undled Eith P&P; More details on this topic are
covered in the (olloEing FAO and #e sure to read the MyOL section (or details on installing
MyOL; An eFample con(igure line Eould #e ==76th=m?s@l:/usr Ehile LindoEs users Eill need the
libmy&NO.dll availa#le to the system;
7. I hear PHP 9 has an entirely ne3 JJP modelE 3ill my e+isting JJP code 3orB& 2here do I
find information on these ne3 JJP features&
,he main change in P&P 4 is to the OOP model as P&P 4 noE uses the ^en# EnE6ne 2.0; ,he
zend;ze1Zcompati#ilityZmode directive ena#les compata#ility Eith the Iend +ngine 1;3 >P&P 8?;
,he neE OOP model is documented in the OOP language re(erence and OOP migration appendiF
sections;
8. ,o besides the ne3 JJP modelE 3hat else has changed in PHP 9& AlsoE is there a PHP 9
specific 5ersion of the PHP manual&
FeE other changes eFistA see the migration 4 appendiF (or details; ,here EonHt #e a P&P 4 speci(ic
version o( the manual as the #ul" o( P&P remains the same;
Captulo ==. Preguntas Carias
Puede /ue eFistan algunas preguntas /ue no podemos colocar en otras categor)as; +ste es el lugar en
donde puede encontrarlas;
1; U5-mo puedo manipular los manuales comprimidos mediante #z0 en LindoEsN
0; UOu< signi(ica un signo i al lado de un argumento en la declaraci-n de una (unci-nA como p;e';
asort./N
!. #C"mo puedo manipular los manuales comprimidos mediante b6* en 2indo3s&
i no cuenta con una herramienta de archivaci-n /ue pueda mane'ar archivos #z0A descargue la
herramienta de l)nea de comandos de Red&at >por (avor re(i<rase a la in(oramci-n presentada m*s
adelante?;
i no desea usar una herramienta de l)nea de comandosA puede pro#ar herramientas gratuitas como
tu((it +FpanderA @ltimateIipA :2IipA o Ouic" Iip; i dispone de herramientas como LinRAR o
PoEer ArchiverA puede descomprimir (*cilmente archivos #z0 con ellas; i usa ,otal 5ommander
>anteriormente LindoEs 5ommander?A un m-dulo adicional para ese programa se encuentra
disponi#le de (orma gratuita desde el sitio de ,otal 5ommander;
La herramienta #zip0 de l)nea de comandos por RedhatC
Los usuarios de Lin0" p0 de#en o#tener la versi-n m*s recienteA 1;3;0A todos los dem*s usuarios
de LindoEs de#en o#tener la versi-n 1;33; Despu<s de la descargaA renom#re el e'ecuta#le a
#zip0;eFe; Para mayor convenienciaA col-/uelo en un directorio /ue sea parte de sus rutas
predeterminadasA p;e'; 5ChLindoEsA en donde 5 representa la unidad en donde se encuentra su
instalaci-n de EindoEs;
NotaC lang representa su lengua'eA y F el (ormato deseadoA p;e'C pd(; Para descomprimir el archivo
phpZmanualZlang;F;#z0 siga las siguientes instruccionesC
a#ra una ventana con el int<rprete de comandos
cam#ie de directorio hacia la carpeta en donde almacen- el archivo phpZmanualZlang;F;#z0
descargado
invo/ue #zip0 2d phpZmanualZlang;F;#z0A eFtrayendo de este modo phpZmanualZlang;F en
la misma carpeta
+n caso de /ue haya descargado el archivo phpZmanualZlang;tar;#z0 con varios archivos html en su
interiorA el procedimiento es el mismo; La Bnica di(erencia es /ue reci#e un archivo
phpZmanualZlang;tar; e conoce /ue el (ormato tar es tratado por la mayor)a de archivadores en
LindoEsA como por e'emplo LinIip;
*. #$u% significa un signo j al lado de un argumento en la declaraci"n de una funci"nE como
p.e'. asort./&
Ouiere decir /ue el argumento es pasado por re(erencia y es pro#a#le /ue la (unci-n modi(i/ue el
argumento de acuerdo con la documentaci-n; -lo puede pasar varia#les de este modo y no necesita
pasarlas con el signo i en la llamada de la (unci-n >tal cosa es considerada o#soleta?;
I. Ap%ndices
Tabla de contenidos
A; &istoria de P&P y proyectos relacionados
B; Migraci-n desde P&P 8 a P&P 4
5; Migraci-n de P&P 7 a P&P 8
D; Migraci-n desde P&PDF. 0 hacia P&P 7
+; Depuraci-n en P&P
F; +Ftensi-n de P&P 7
G; Opciones de con(iguraci-n
&; Directivas de php.ini
.; Lista de alias de (unciones
!; Lista de Pala#ras Reservadas
S; Lista de ,ipos de Recurso
L; Lista de ProtocolosD+nvolturas oportadas
M; Lista de Filtros Disponi#les
N; Lista de ,ransportes de oc"ets oportados
O; ,a#las de comparaci-n de tipos P&P
P; Lista de .denti(icadores >to"ens? del Analizador
O; o#re el manual
R; Open Pu#lication License
; Tndice de (unciones
,; Material /ue (alta
Ap%ndice A. Historia de PHP y proyectos
relacionados
P&P ha recorrido un largo camino en los Bltimos aWos; 5recer hasta ser uno de los m*s importantes
lengua'es de programaci-n en entornos Le# no ha sido tarea (*cil; A/uellos interesados en ver
#revemente c-mo creci- P&P hasta lo /ue es hoy en d)aA sigan leyendo; Antiguas versiones de P&P
est*n disponi#les en el Museo P&P;
Historia de PHP
PHPA;I
P&P es el heredero de un producto anteriorA llamado P&PDF.; P&PDF. (ue creado por Rasmus
Lerdor( en 1994A inicialmente como un simple con'unto de scripts de Perl para controlar los accesos
a su tra#a'o online; Llam- a ese con'unto de scripts HPersonal &ome Page ,oolsH; egBn se re/uer)a
m*s (uncionalidadA Rasmus (ue escri#iendo una implementaci-n 5 mucho mayorA /ue era capaz de
comunicarse con #ases de datosA y permit)a a los usuarios desarrollar sencillas aplicaciones Le#
din*micas; Rasmus eligi- li#erar el c-digo (uente de P&PDF. para /ue cual/uiera pudiese utilizarloA
as) como arreglar errores y me'orar el c-digo;
P&PDF.A /ue se mantuvo para p*ginas personales y como int<rprete de (ormulariosA inclu)a algunas
de las (uncionalidads #*sicas de P&P tal y como lo conocemos hoy; ,en)a varia#les como las de
PerlA interpretaci-n autom*tica de varia#les de (ormulario y sintaFis em#e#ida &,ML; La sintaFis
por s) misma era similar a la de PerlA aun/ue mucho m*s limitadaA simple y algo inconsistente;
Por 199:A P&PDF. 0;3A la segunda escritura de la implementaci-n en 5A tuvo un seguimiento
estimado de varios miles de usuarios en todo el mundoA con aproFimadamente 43;333 dominios
in(ormando /ue lo ten)an instaladoA sumando alrededor del 1b de los dominios de .nternet;
Mientras ha#)a mucha gente contri#uyendo con #its de c-digo a este proyectoA era todav)a en su
mayor parte el proyecto de una sola persona;
P&PDF. 0;3 no se li#er- o(icialmente hasta Noviem#re de 199:A despu<s de gastar la mayor)a de su
vida en desarrollos #eta; Fue sucedido en #reve tiempo por las primeras versiones al(a de P&P 7;3;
PHP 7
P&P 7;3 era la primera versi-n /ue se parec)a (ielmente al P&P tal y como lo conocemos hoy en d)a;
Fue creado por Andi Gutmans y Ieev Iuras"i en 199: reescri#i<ndolo completamenteA despu<s de
/ue encontraran /ue P&PDF. 0;3 ten)a pocas posi#ilidades para desarrollar una aplicaci-n comercial
/ue esta#an desarrollando para un pro'ecto universitario; +n un es(uerzo para cooperar y empezar a
construir so#re la #ase de usuarios de P&PDF. eFistenteA AndiA Rasmus y Ieev decidieron cooperar y
anunciar P&P 7;3 como el sucesor o(icial de P&PDF. 0;3A interrumpi<ndose en su mayor parte el
desarrollo de P&PDF. 0;3;
@na de las me'ores caracter)sticas de P&P 7;3 era su gran eFtensi#ilidad; Adem*s de proveer a los
usuarios (inales de una s-lida in(raestructura para much)simas #ases de datosA protocolos y AP.sA las
caracter)sticas de eFtensi#ilidad de P&P 7;3 atra'eron a docenas de desarrolladores a unirse y enviar
nuevos m-dulos de eFtensi-n; in dudaA <sta (ue la clave del enorme <Fito de P&P 7;3; Otras
caracter)sticas clave introducidas en P&P 7;3 (ueron el soporte de sint*Fis orientado a o#'etos y una
sint*Fis de lengua'e mucho m*s potente y consistente;
,odo el nuevo lengua'e (ue li#erado #a'o un nuevo nom#reA /ue #orra#a la implicaci-n de uso
personal limitado /ue ten)a el nom#re P&PDF. 0;3; e llam- HP&PH a secasA con el signi(icado de ser
un acr-nimo recursivo 2 P&PC &yperteFt Preprocessor;
A (inales de 199MA P&P creci- hasta una #ase de instalaci-n de decenas de millares de usuarios
>estimados? y cientos de miles de sitios Le# in(ormando de su instalaci-n; +n su apogeoA P&P 7;3
esta#a instalado en aproFimadamente un 13b de los servidores Le# en .nternet;
P&P 7;3 se li#er- o(icialmente en !unio de 199MA despu<s de ha#er gastado unos 9 meses en prue#as
pB#licas;
PHP 8
+n el invierno de 199MA poco despu<s del lanzamiento o(icial de P&P 7;3A Andi Gutmans y Ieev
uras"i comenzaron a tra#a'ar en la reescritura del nBcleo de P&P; Los o#'etivos de diseWo (ueron
me'orar la e'ecuci-n de aplicaciones comple'asA y me'orar la modularidad del c-digo #ase de P&P;
+stas aplicaciones se hicieron posi#les por las nuevas caracter)sticas de P&P 7;3 y el apoyo de una
gran variedad de #ases de datos y AP.s de tercerosA pero P&P 7;3 no (ue diseWado para el
mantenimiento tan comple'o de aplicaciones e(icientemente;
+l nuevo motorA apodado HMotor IendH >comprimido de sus apellidosA Ieev y Andi?A alcanz- estos
o#'etivos de diseWo satis(actoriamenteA y se introdu'o por primera vez a mediados de 1999; P&P 8;3A
#asado en este motorA y acoplado con un gran rango de nuevas caracter)sticas adicionalesA (ue
o(icialmente li#erado en Mayo de 0333A casi dos aWos despu<s /ue su predecesorA P&P 7;3; Adem*s
de la me'ora de e'ecuci-n de esta versi-nA P&P 8;3 inclu)a otras caracter)sticas clave como el
soporte para la mayor)a de los servidores Le#A sesiones &,,PA #u((ers de salidaA (ormas m*s
seguras de controlar las entradas de usuario y muchas nuevas construcciones de lengua'e;
P&P 8 es actualmente la Bltima versi-n li#erada de P&P; %a se est* tra#a'ando en modi(icar y
me'orar el motor Iend para integrar las caracter)sticas /ue se diseWar)an para P&P 4;3;
&oyA se estima /ue P&P es usado por cientos de miles de programadores y muchos millones de
sitios in(orman /ue lo tienen instaladoA sumando m*s del 03b de los dominios en .nternet;
+l e/uipo de desarrollo de P&P incluye docenas de programadoresA as) como otras docenas de
personas tra#a'ando en proyectos relacionados con P&P como P+AR y el proyecto de
documentaci-n;
PHP 9
+l (uturo de P&P est* dirigido por su nBcleoA el motor Iend; P&P 4 incluira el nuevo motor Iend
0;3; Para o#tener m*s in(ormaci-n so#re este motorA consultar su p*gina Ee#;
Historia de los proyectos relacionados con PHP
PEAM
P+ARA el P&P +Ftension and Application Repository >originalmenteA P&P +Ftension and Add2on
Repository? es la versi-n de clases de creaci-n de P&PA y puede crecer en el (uturo para ser una de
las v)as clave para distri#uir tanto P&P como eFtensiones P&P #asados en 5 entre desarrolladores;
P+AR naci- de las discusiones mantenidas en el P&P DevelopersH Meeting >PDM? transcurrido en
+nero de 0333 en ,el Aviv; Fue creado por tig ; Ba""enA y lo dedic- a su primog<nitaA Malin
Ba""en;
&asta principios de 0333A P+AR (ue creciendo hasta ser un gran y signi(icativo proyecto con un
gran nBmero de programadores tra#a'ando en la implementaci-n comBnA (uncionalidad reutiliza#le
para el #ene(icio de toda la comunidad P&P; P+AR hoy incluye una gran variedad de clases de
in(raestructura para acceso a #ases de datosA cach< de contenidoA c*lculos matem*ticosA comercio
electr-nico y mucho m*s;
M*s in(ormaci-n so#re P+AR se puede encontrar en el manual de P+AR;
Iniciati5a para la Faranta de Calidad de PHP
La .niciativa para la Garant)a de 5alidad de P&P se con(igur- en el verano de 0333 en respuesta a
los /ue critica#an /ue las versiones de P&P se li#era#an sin /ue (ueran compro#adas
su(icientemente para entornos de producci-n; +l e/uipo ahora consiste en un grupo central de
desarrolladores con un #uen entendimiento del c-digo #ase de P&P; +stos desarrolladores gastan
mucho tiempo localizando y solucionando pro#lemas con P&P; Adem*sA hay muchos miem#ros de
otros e/uipos /ue testean y prue#an estas soluciones usando una gran variedad de plata(ormas;
PHP(FT`
P&P2G,S es la soluci-n P&P para escri#ir las aplicaciones G@. del lado del cliente; Andrei
Imievs"i recuerda la plani(icaci-n y la creaci-n del proceso de P&P2G,SC
Programar G@. siempre ha estado entre mis interesesA y he encontrado /ue Gt"R es una
herramienta muy #uenaA salvo /ue programar con ella en 5 es algo tedioso; ,ras
presenciar las implementaciones de PyGt" y G,S2PerlA decid) ver si P&P se podr)a
hacer con la inter(az Gt"RA incluso m)nimamente; +n Agosto de 0333 empec< a tener
m*s tiempo li#reA con lo /ue comenc< a eFperimentar; Mi principal gu)a (ue la
implementaci-n PyGt" con caracter)sticas completas #astante #uenas y con un #uen
inter(az orientado a o#'etos; !ames &enstridgeA el autor de PyGt"A provey- mucha ayuda
adicional durante esos estados iniciales;
+scri#ir las inter(aces de todas las (unciones Gt"R esta#a (uera de cuesti-nA por lo /ue
mantuve la idea de generador de c-digoA similar a c-mo PyGt" lo hizo; +l generador de
c-digo es un programa P&P /ue lee un con'unto de (icheros ;de(s /ue contienen las
clases Gt"RA constantes e in(ormaci-n de m<todos y genera c-digo 5 /ue interactBa
P&P con ellos; Lo /ue no se puede generar autom*ticamente puede escri#irse a mano en
(icheros ;overrides;
,ra#a'ar en el generador de c-digo y la in(raestructura llev- algo de tiempoA por/ue
pude dedicar poco tiempo a P&P2G,S durante el otoWo de 0333; Despu<s mostr< P&P2
G,S a Fran" SromannA /ue se interes- y empez- a ayudarme con el tra#a'o del
generador de c-digo y con la implementaci-n para Lin70; 5uando escri#imos el primer
programa &ola Mundo y (uncion-A (ue eFtremadamente eFcitante; Llev- un par de
meses m*s llevar el proyecto a una condici-n presenta#le y la versi-n inicial se li#er- el
1 de Marzo de 0331; La historia r*pidamente lleg- a lashDot;
intiendo /ue P&P2G,S podr)a eFtenderseA con(igur< listas de correo separadas y
repositorios 5$ para elloA as) como el sitio Ee# gt";php;net con la ayuda de 5olin
$ie#roc"; La documentaci-n tam#i<n tuvo /ue hacerse y !ames Moore lleg- para
ayudar en esto;
Desde su lanzamiento P&P2G,S (ue ganando popularidad; ,enemos nuestro propio
e/uipo de documentaci-nA el manual sigue me'orandoA la gente ha comenzado a escri#ir
eFtensiones para P&P2G,SA y con ello m*s y me'ores aplicaciones;
:ibros sobre PHP
egBn crec)a P&PA empezo a ser reconocido como una popular plata(orma de desarrollo Ee#; @na
de las m*s interesantes (ormas de ver esta tendencia era o#servando los li#ros so#re P&P /ue han
ido llegando a lo largo de los aWos;
Por lo /ue nosotros sa#emosA el primer li#ro dedicado a P&P (ue HP&P 2 tvor#a intera"tivn)ch
internetovcpech apli"ac)H 2 un li#ro checo pu#licado en 1999A cuyo autor (ue !ir"a Sose"siendo;
Al mes siguiente le siguio un li#ro alem*n cuyos autores (ueron +gon chmidA 5hristian 5artus y
Richard Blume; +l primer li#ro en ingl<s so#re P&P se pu#lic- poco despu<sA y (ue H5ore P&P
ProgrammingH de Leon At"inson; Los dos li#ros cu#r)an P&P 7;3;
Mientras estos li#ros (ueron los primeros de su tipo 2 (ueron seguidos por un gran nBmero de li#ros
de una multitud de autores y editores; f+Fisten m*s 83 li#ros en ingl<sA 43 li#ros en alem*nA y m*s
de 03 li#ros en (ranc<sa Adem*sA se pueden encontrar li#ros so#re P&P en la mayor)a de las dem*s
lenguasA incluyendo espaWolA coreanoA 'apon<s y he#reo;
+videntementeA este gran nBmero de li#rosA escritos por di(erentes autoresA pu#licados por muchos
editoresA y su disponi#ilidad en tantas lenguas 2 son un (uerte testimonio del <Fito mundial de P&P;
Publicaciones sobre PHP
Por lo /ue sa#emosA el primer art)culo so#re P&P en una revista impresa se pu#lic- en la version
checa de 5omputerEorld en la primavera de 199MA y cu#r)a P&P 7;3; 5omo con los li#rosA (ue el
primero en una serie de muchos art)culos pu#licados so#re P&P en varias revistas importantes;
Art)culos so#re P&P han aparecido en Dr; Do##sA LinuF +nterpriseA LinuF Magazine y muchas
otras; Art)culos so#re migraci-n de aplicaciones #asadas en P&P #a'o LindoEs fhan aparecido
incluso en el MDN de Microso(ta
Ap%ndice 1. Migraci"n desde PHP 8 a PHP 9
$u% ha cambiado en PHP 9
P&P 4 y el Motor Iend 0 integrado han me'orado signi(icativamente el rendimiento y las
capacidades de P&PA al mismo tiempo /ue se han tomado precauciones para evitar al m*Fimo
incompati#ilidades con el c-digo eFistente; Por lo tantoA migrar su c-digo desde P&P 8 a la versi-n
4 de#e resultar #astante (*cil; La mayor)a de c-digo P&P 8 eFistente de#e estar listo para correr sin
modi(icacionesA pero aun es #uena idea /ue conozca so#re las pocas di(erencias y tome sus
precauciones para pro#ar el c-digo antes de actualizar versiones en entornos en producci-n;
Cambios Incompatibles con Cersiones Anteriores
Aun/ue la mayor)a de c-digo P&P 8 eFistente de#e correr sin modi(icacionesA es importante /ue
preste atenci-n a los siguientes cam#ios incompati#les con versiones anterioresC
+Fisten algunas pala#ras clave nuevas;
strrpos./ y strripos./ ahora usan la cadena entera como agu'a;
+l uso de )ndices de cadena inv*lidos generan errores de tipo E_ERROR en lugar de
E_"ARNIN#;
e modi(ic- array>merge./ para /ue acepte Bnicamente matrices; i una varia#le de un tipo
di(erente a matriz es pasadaA se genera un error de tipo E_"ARNIN# para cada uno de esos
par*metros; ,enga cuidadoA ya /ue su c-digo puede comenzar a emitir anuncios
E_"ARNIN# de la nada;
La varia#le de servidor PA,&Z,RANLA,+D ya no es de(inida de (orma impl)cita #a'o la
AP. de Apache0A a di(erencia del comportamiento de P&P 8A en donde se de(ine con el
mismo valor de la varia#le de servidor 5R.P,ZF.L+NAM+ cuando no se de(ine por
Apache; +ste cam#io (ue realizado para seguir la especi(icaci-n 5G.; Por (avor re(i<rase al
#ug n07K13 para m*s in(ormaci-n;
La constante T_ML_COMMENT ya no es de(inida por la eFtensi-n ,o"enizer; i el valor de
errorZreporting es E_ALLA P&P generar* una noticia; Aun/ue la constante T_ML_COMMENT
nunca (ue usadaA esta#a de(inida en P&P 8; ,anto en P&P 8 como en P&P 4 DD y DV VD son
resueltos como la constante T_COMMENT; in em#argoA los comentarios estilo P&PDoc DVV
VDA /ue son interpretados a partir de P&P 4A se reconocen como T_DOC_COMMENT;
YZ+R$+R de#e po#larse con argc y argv si varia#lesZorder incluye ==; i ha con(igurado
su sistema espec)(icamente para no crear YZ+R$+RA entonces por supuesto /ue no
aparecer*; +l cam#io (ue hecho para lograr /ue argc y argv siempre estuvieran disponi#les
en la versi-n 5L. independientemente del par*metro varia#lesZorder; +s decirA ahora la
versi-n 5L. de(ine siempre las varia#les glo#ales Yargc y Yargv;
@n o#'eto sin propiedades ya no es considerado =vac)o=;
+n algunos casosA las clases de#en ser declaradas antes de ser usadas; +sto s-lo ocurre si
algunas de las nuevas caracter)sticas de P&P 4 son usadas; De otro modo el comportamiento
antiguo se conserva;
get>class./ A A get>parent>class./ y get>class>methods./ devuelven ahora el nom#re de las
clasesDm<todos como ellos (ueron declarados >siguiendo las mayBsculas y minBsculas? lo
cual puede llevar a pro#lemas en scripts vie'os /ue depend)an en el comportamiento anterior
>el nom#re de la claseDm<todo era devuelto en minBsculas siempre?; @na posi#le soluci-n es
#uscar las (unciones mencionadas en todos sus scripts y usar strtolo3er./;
+ste cam#io en la sensi#ilidad a minBsculas y mayBsculas se aplica tam#i<n a las constantes
prede(inidas m*gicamente __CLASS__A __METHOD__A y __FUNCTION__; Los valores
son devueltos eFactamente como son declarados >sensi#les a mayBsculas y minBsculas?;
ip*long./ ahora devuelve FALSE cuando una direcci-n .P inv*lida es pasada como
argumento a la (unci-nA y no =1;
i hay (unciones de(inidas en el archivo incluidoA <stas pueden ser usadas en el archivo
principalA sin importar /ue est<n antes de una sentencia return./ o despu<s; i el archivo es
incluido dos vecesA P&P 4 produce un error (atal ya /ue las (unciones ya han sido declaradasA
mientras /ue P&P 8 no se /ue'a al respecto; e recomienda usar include>once./ en lugar de
revisar si el archivo ya ha#)a sido incluido y retornar condicionalmente al interior del archivo
incluido;
include>once./ y re?uire>once./ primero normalizan la ruta del archivo incluido en
LindoEs de modo /ue incluir A;php y a;php incluyen el archivo solo una vez;
E'emplo 1(!. strrpos./ y strripos./ ahora usan la cadena entera como agu'a
<?php
=ar%dump3strrpos3M,ZRLESM,MLESM99; //int3<9
=ar%dump3strrpos3M,ZRLESM,ML,SM99; //bool3#alse9
?>
E'emplo 1(*. )n ob'eto sin propiedades ya no es considerado 05aco0
<?php
class prueba : ;
$p > ne8 prueba39;
=ar%dump3empty3$p99; // echo bool3#alse9
i# 3$p9 :
// &e ejecuta
;
?>
E'emplo 1(7. En algunos casosE las clases deben declararse antes de ser usadas
<?php
// #unciona sin errores@
$a > ne8 a39;
class a :
;
// Eerena un error@
$a > ne8 b39;
inter#ace c:
;
class b implements c :
;
?>
C:I y CFI
+n P&P 4A se e(ectuaron algunos cam#ios en el entorno 5L. y los nom#res de archivo 5G.; +n P&P
4A la versi-n 5G. (ue renom#rada a phpFcEi.exe >previamente php.exe? y la versi-n 5L.
ahora eFiste en el directorio principal >previamente era cli/php.exe?;
+n P&P 4 se introdu'o tam#i<n un nuevo modoC phpF8in.exe; +ste es igual a la versi-n 5L.A
eFcepto /ue php2Ein no genera ninguna salida y por lo tanto no provee una consola >no aparece una
=ca'a de dos= en la pantalla=?; +ste comportamiento es similar a php2gt";
+n P&P 4A la versi-n 5L. siempre de(ine las varia#les glo#ales 'arE y 'arEcA independientemente
a cual/uier directiva en php.ini; .ncluso teniendo el par*metro registerZargcZargv como o99 no
tendr* e(ecto en la versi-n 5L.;
$ea tam#i<n la re(erencia de la l)nea de comandos;
Migraci"n de Archi5os de Configuraci"n
Dado /ue los m-dulos .AP. cam#iaron sus nom#resA de php8FFF a php4FFFA es necesario hacer
algunos cam#ios en los archivos de con(iguraci-n; ,am#i<n ocurrieron cam#ios en los nom#res de
archivos 5L. y 5G.; Por (avor re(i<rase a la secci-n correspondiente para m*s in(ormaci-n;
Migrar la con(iguraci-n de Apache es eFtremadamente simple; 5onsulte el e'emplo a continuaci-n
para veri(icar el cam#io /ue necesita realizarC
E'emplo 1(8. Migraci"n de archi5os de configuraci"n de Apache para PHP 9
U cambie esta linea@
Ooad"odule php1%module /php/sapi/php1apacheC.dll
U por esta@
Ooad"odule php5%module /php/php5apacheC.dll
i su servidor Ee# est* usando P&P en modo 5G.A de#e notar /ue la versi-n 5G. ha cam#iado su
nom#re de php.exe a phpFcEi.exe; +n apacheA de#e hacer algo como lo siguienteC
E'emplo 1(9. Migraci"n de archi5os de configuraci"n de Apache para PHP 9E modo CFI
U cambie esta linea@
,ction application/xFhttpdFphp "/php/php.exe"
U por esta@
,ction application/xFhttpdFphp "/php/phpFcEi.exe"
+n otros servidores Ee# necesita cam#iar ya sea el nom#re de archivo 5G. o del m-dulo .AP.;
Nue5as ;unciones
+n P&P 4 aparecen algunas (unciones nuevas; A continuaci-n se presenta una lista de ellasC
MatricesC
array>combine./ 2 5rea una matriz usando una matriz para las claves y otra para sus valores
array>diff>uassoc./ 2 5omputa la di(erencia de matrices con un che/ueo adicional de
)ndicesA el cual es realizado con una llamada de retorno entregada por el usuario
array>udiff./ 2 5omputa la di(erencia de matrices usando una llamada de retorno para la
comparaci-n de datos
array>udiff>assoc./ 2 5omputa la di(erencia de matrices con un che/ueo adicional de
)ndices; Los datos son comparados usando una llamada de retorno
array>udiff>uassoc./ 2 5omputa la di(erencia de matrices con un che/ueo adicional de
)ndices; Los datos son comparados usando una llamada de retorno; +l che/ueo de )ndices es
realizado usando una llamada de retorno
array>3alB>recursi5e./ 2 Aplica una (unci-n de usuario recursivamente a cada miem#ro de
una matriz
array>uintersect>assoc./ 2 5omputa la intersecci-n de matrices con un che/ueo adicional
de )ndices; Los datos son comparados usando una llamada de retorno
array>uintersect>uassoc./ 2 5omputa la intersecci-n de matrices con un che/ueo adicional
de )ndices; ,anto los datos como los )ndices son comparados usando llamadas de retorno
array>uintersect./ 2 5omputa la intersecci-n de matrices; Los datos son comparados
usando una llamada de retorno
.nterBaseC
ibase>affected>ro3s./ 2 Devuelve el nBmero de (ilas /ue (ueron a(ectadas por la consulta
anterior
ibase>bacBup./ 2 .nicia una la#or de respaldo en el administrador de servicios y retorna
inmediatamente
ibase>commit>ret./ 2 Aplica una transacci-n sin cerrarla
ibase>db>info./ 2 olicita estad)sticas so#re una #ase de datos
ibase>drop>db./ 2 +limina una #ase de datos
ibase>errcode./ 2 Devuelve un c-digo de error
ibase>free>e5ent>handler./ 2 5ancela un gestor de eventos registrado
ibase>gen>id./ 2 .ncrementa el generador nom#rado y devuelve su nuevo valor
ibase>maintain>db./ 2 +'ecuta un comando de mantenimiento en el servidor de #ases de
datos
ibase>name>result./ 2 Asigna un nom#re a un con'unto de resultados
ibase>num>params./ 2 Devuelve el nBmero de par*metros en una consulta preparada
ibase>param>info./ 2 Devuelve in(ormaci-n so#re un par*metro en una consulta preparada
ibase>restore./ 2 .nicia una la#or de rescate en el administrador de servicios y retorna
inmediatamente
ibase>rollbacB>ret./ 2 Revierte una transacci-n y conserva su conteFto
ibase>ser5er>info./ 2 olicita estad)sticas so#re una #ase de datos
ibase>ser5ice>attach./ 2 5onectarse al administrador de servicios
ibase>ser5ice>detach./ 2 Desconectarse del administrador de servicios
ibase>set>e5ent>handler./ 2 Registrar una llamada de retorno a ser usada cuando se
pu#lican eventos
ibase>3ait>e5ent./ 2 +sperar a /ue un evento sea pu#licado por la #ase de datos
iconvC
icon5>mime>decode./ 2 Decodi(ica un campo de ca#ecera M.M+
icon5>mime>decode>headers./ 2 Decodi(ica mBltiples campos de ca#ecera M.M+ de una
vez
icon5>mime>encode./ 2 5ompone un campo de ca#ecera M.M+
icon5>strlen./ 2 Devuelve el conteo de caracteres de la cadena
icon5>strpos./ 2 +ncuentra la posici-n de la primera ocurrencia de una agu'a al interior de
un pa'ar
icon5>strrpos./ 2 +ncuentra la Bltima ocurrencia de una agu'a al interior del rango
especi(icado del pa'ar
icon5>substr./ 2 Recorta parte de una cadena
ecuenciasC
stream>copy>to>stream./ 2 5opia datos de una secuencia a otra
stream>get>line./ 2 O#tiene una l)nea de un recurso tipo secuencia hasta cierto l)mite
indicado
stream>socBet>accept./ 2 Acepta una coneFi-n so#re un soc"et creado por
stream>socBet>ser5er./
stream>socBet>client./ 2 A#re una coneFi-n de soc"et de .nternet A#ierto o Dominio @niF
stream>socBet>get>name./ 2 Recupera el nom#re de soc"ets locales o remotos
stream>socBet>rec5from./ 2 Reci#e datos de un soc"etA conectado o no
stream>socBet>sendto./ 2 +nvia un mensa'e a un soc"etA #ien est< conectado o no
stream>socBet>ser5er./ 2 5rea un soc"et de servidor de .nternet o de dominio @niF
Fecha y horaC
idate./ 2 Dar (ormato de entero a una (echaDhora local
date>sunset./ 2 &ora de crepBsculo para un d)a y u#icaci-n determinados
date>sunrise./ 2 &ora del al#a para un d)a y u#icaci-n determinados
time>nanosleep./ 2 +spera por un nBmero de segundos y nano2segundos
5adenasC
str>split./ 2 5onvierte una cadena en una matriz
strpbrB./ 2 Busca una cadena por un con'unto cual/uiera de caracteres
substr>compare./ 2 5omparaci-n segura con material #inarioA opcionalmente insensitiva a
mayBsculas y minBsculasA de dos cadenas a partir de un desplazamientoA y hasta un l)mite da
caracteres
OtherC
con5ert>uudecode./ 2 decodi(icar una cadena con el algoritmo uuencode
con5ert>uuencode./ 2 5odi(icar una cadena con el algoritmo uuencode
curl>copy>handle./ 2 5opiar un gestor c@RL 'unto con todas sus pre(erencias
dba>Bey>split./ 2 epara una llave representada como cadena a una representaci-n de
matriz
dbase>get>header>info./ 2 O#tiene la in(ormaci-n de ca#ecera de una #ase de datos dBase
db+>fetch>ro3./ 2 Recupera (ilas desde un resultado de consulta /ue us- la #andera
DBJZR+@L,Z@NB@FF+R+D
fbs?l>set>pass3ord./ 2 5am#ia la contraseWa para un usuario determinado
file>put>contents./ 2 +scri#e una cadena a un archivo
ftp>alloc./ 2 Reserva espacio para /ue el archivo sea cargado
get>declared>interfaces./ 2 Devuelve una matriz de todas las inter(aces declaradas
get>headers./ 2 Recupera todas las ca#eceras enviadas por el servidor en respuesta a una
petici-n &,,P
headers>list./ 2 Devuelve una lista de ca#eceras de respuesta enviadas >o listas para ser
enviadas?
http>build>?uery./ 2 Generar una cadena /uery codi(icada estilo @RL
image>type>to>e+tension./ 2 O#tiene la eFtensi-n de archivo para el tipo de imagen
devuelto por getimagesi6e./A e+if>read>data./A e+if>thumbnail./A e+if>imagetype./
imagefilter./ 2 Aplica un (iltro so#re una imagen usando un *ngulo personalizado
imap>getacl./ 2 O#tiene el valor A5L para la casilla de correo dada
ldap>sasl>bind./ 2 +nlaza con el directorio LDAP usando AL
mb>list>encodings./ 2 Devuelve una matriz de todas las codi(icaciones soportadas
pcntl>getpriority./ 2 O#tiene la prioridad de cual/uier proceso
pcntl>3ait./ 2 +spera o devuelve el status de un hi'o #i(urcado como se de(ine por la
llamada de sistema Eaitpid>?
pg>5ersion./ 2 Devuelve una matriz con el clienteA protocolo y versi-n del servidor >cuando
se encuentra disponi#le?
php>checB>synta+./ 2 $eri(ica la sintaFis del archivo especi(icado
php>strip>3hitespace./ 2 Devuelve el c-digo (uente con los comentarios y espacios
eliminados
proc>nice./ 2 5am#ia la prioridad del proceso actual
pspell>config>data>dir./ 2 5am#ia la u#icaci-n de los archivos de datos del lengua'e
pspell>config>dict>dir./ 2 5am#ia la u#icaci-n de la lista principal de pala#ras
setra3cooBie./ 2 +nv)a una coo"ie sin codi(icar el valor en estilo url
snmp>read>mib./ 2 Lee y realiza an*lisis sint*ctico so#re un archivo M.B en el *r#ol M.B
activo
s?lite>fetch>column>types./ 2 Devuelve una matriz de tipos de columna de una ta#la en
particular
Nota- La eFtensi-n ,idy ha modi(icado tam#i-n su AP. por completo;
Nue5as Kirecti5as
Algunas directivas de php.ini se han incorporado en P&P 4; A/u) se presenta una lista de ellasC
mail;(orceZeFtraZparameters 2 O#liga a /ue se agreguen los par*metros especi(icados como
par*metros eFtra al e'ecuta#le de sendmail; +stos par*metros siempre reemplazan el valor
del /uinto par*metro de mail./A incluso en modo seguro
registerZlongZarrays 2 ha#ilitaDdesha#ilita el registro de las largas varia#les o#soletas
Y&,,PZVZ$AR
session;hashZ(unction 2 selecciona una (unci-n de resumen criptogr*(ico >MD4 o &A21?
session;hashZ#itsZperZcharacter 2 de(ine cu*ntos #its de#en almacenarse en cada caracter
cuando se convierten datos #inarios de hash a algo m*s legi#le >de 8 a K?
zend;ze1Zcompati#ilityZmode 2 &a#ilita el modo de compati#ilidad con el Motor Iend 1
>P&P 8?
1ases de Katos
&u#o algunos cam#ios en P&P 4 relacionados con las #ases de datos >MyOL y OLite?;
+n P&P 4 las #i#liotecas de cliente MyOL no se incluyenA de#ido a pro#lemas de licenciaA entre
otros; Para m*s in(ormaci-nA lea la entrada del FAO;
,am#i<n hay una nueva eFtensi-nA MyOLi >MyOL Me'orado?A la cual est* diseWada para tra#a'ar
con MyOL 8;1 y superior;
A partir de P&P 4A la eFtensi-n OLite viene incorporada en P&P; OLite es un motor de #ases de
datos em#e#i#le y no es una #i#lioteca de cliente usada para conectarse con un servidor grande de
#ases de datos >como MyOL o PostgreOL?; La #i#lioteca OLite lee y escri#e directamente hacia
y desde los archivos de #ases de datos en disco;
Nue5o Modelo de Jb'etos
+n P&P 4 eFiste un nuevo Modelo de O#'etos; +l mane'o de o#'etos en P&P ha sido re2escrito por
completoA permitiendo una me'ora en rendimiento y muchas caracter)sticas nuevas; +n versiones
previas de P&PA los o#'etos eran mane'ados como tipos primitivos >por e'emplo enteros y cadenas?;
La desventa'a de este m<todo era /ue sem*nticamente el o#'eto completo era copiado cuando una
varia#le era asignadaA o pasada como par*metro a un m<todo; +n el nuevo en(o/ueA los o#'etos son
re(erenciados por gestorA y no por valor >puede pensarse en el gestor como un identi(icador de
o#'eto?;
Muchos programadores de P&P no son conscientes si/uiera de los detalles /ue implican las copias
en el modelo antiguo de o#'etos yA por lo tantoA la mayor)a de aplicaciones de P&P (uncionar*n sin
pro#lemasA o con muy pocas modi(icaciones;
+l nuevo Modelo de O#'etos es documentado en la Re(erencia del Lengua'e;
$ea tam#i<n la directiva zend;ze1Zcompati#ilityZmode para compati#iladad con P&P 8;
Meporte de Errores
A partir de P&P 4A la nueva constante de reporte de errores +Z,R.5, se encuentra disponi#le con
el valor 038M; [sta ha#ilita sugerencias en tiempo de e'ecuci-n por parte de P&P so#re la inter2
opera#ilidad de su c-digo y compati#ilidad hacia adelanteA /ue le ayudar*n a sincronizarse con los
Bltimos y me'ores m<todos de escritura de c-digo; Por e'emploA un mensa'e ,R.5, puede
advertirle cuando use (unciones o#soletas;
Nota- +ZALL no incluye +Z,R.5,A as) /ue esta constante no est* ha#ilitada por
de(ecto;
Ap%ndice C. Migraci"n de PHP 7 a PHP 8
$u% ha cambiado en PHP 8
P&P 8 y el motor Iend integrado han me'orado considera#lemente las capacidades y el rendimiento
de P&PA pero se ha tenido mucho cuidado para evitar cual/uier impacto negativo so#re el c-digo
eFistente; De modo /ue migrar su c-digo desde P&P 7 a P&P 8 de#e ser mucho m*s sencillo /ue
migrar de P&PDF. 0 a P&P 7; Bastante c-digo de P&P 7 eFistente de#e estar listo para correr sin
modi(icacionesA pero aun as) es importante /ue sepa so#re las pocas di(erenciasA y tome las
precauciones necesarias para pro#ar su c-digo antes de cam#iar las versiones en entornos de
producci-n; Las siguientes l)neas de#en propocionarle algunas pistas so#re /u< tipo de cosas
considerar;
E'ecutar PHP 7 y PHP 8 simultneamente
istemas operativos recientes o(recen la posi#ilidad de realizar versionamiento y conteFtualizaci-n;
+stas caracter)sticas hacen posi#le /ue P&P 7 y P&P 8 corran como m-dulos concurrentes en un
servidor Apache;
e conoce /ue esta caracter)stica (unciona so#re las siguientes plata(ormasC
LinuF con versi-n reciente de #inutils >se ha pro#ado con #inutils 0;9;1;3;04?
olaris 0;4 o superior
FreeBD >se ha pro#ado con 7;0A 8;3?
Para ha#ilitarloA con(igure P&P 7 y P&P 8 para /ue usen APJ >==76th=ap8s? y las eFtensiones de
enlace necesarias >==ena1le=ers6on6nE?; Por lo dem*sA todas las instrucciones de instalaci-n
est*ndar se aplican; Por e'emploC
$ ./con#iEure V
FF8ithFapxs>/apache/bin/apxs V
FFenableF=ersioninE V
FF8ithFmysQl V
FFenableFtracIF=ars
Migraci"n de Archi5os de Configuraci"n
+l archivo de con(iguraci-n glo#alA php<.iniA ha cam#iado su nom#re a php.ini;
Para el archivo de con(iguraci-n de ApacheA eFisten unos cuantos cam#ios m*s; Los tipos M.M+
reconocidos por el m-dulo P&P han cam#iado;
application/xFhttpdFphp< FF> application/xFhttpdFphp
application/xFhttpdFphp<Fsource FF> application/xFhttpdFphpFsource
Puede hacer /ue sus archivos de con(iguraci-n tra#a'en con am#as versiones de P&P >dependiendo
de cu*l es la /ue est* compilada actualmente con el servidor?A usando la siguiente sintaFisC
,dd*ype application/xFhttpdFphp< .php<
,dd*ype application/xFhttpdFphp<Fsource .php<s
,dd*ype application/xFhttpdFphp .php
,dd*ype application/xFhttpdFphpFsource .phps
AdicionalmenteA los nom#res de directivas P&P para Apache han cam#iado;
A partir de P&P 8;3A eFisten solo cuatro directivas Apache /ue se relacionan con P&PC
php%=alue )nombre de directi=a H/ )=alor/
php%#laE )nombre de directi=a H/ )?nT?##/
php%admin%=alue )nombre de directi=a H/ )=alor/
php%admin%#laE )nombre de directi=a H/ )?nT?##/
+Fisten dos di(erencias entre los valores Admin y los no2adminC
Los valores >o #anderas? admin pueden aparecer solo en los archivos de con(iguraci-n
glo#ales de Apache >p;e';A httpd.con#?;
Los valores >o #anderas? est*ndar no pueden controlar ciertas directivas P&PA por e'emploC
sa(e mode >si pudiera so#rescri#ir los par*metros del modo seguro en los archivos .
htaccessA se estropear)a la gracia de sa(e mode?; +n contrasteA los valores Admin pueden
modi(icar el valor de cual/uier directiva P&P;
Para hacer el proceso de transici-n m*s sencilloA P&P 8 es distri#uido con scripts /ue convierten
autom*ticamente su con(iguraci-n en archivos Apache y .htaccess para /ue tra#a'en con P&P 7
y P&P 8; f+stos scripts NO convierten las l)neas de tipos mimea ,endr* /ue convertir <stas
manualmente;
Para convertir sus archivos de con(iguraci-n de ApacheA e'ecute el script apcon(2conv;sh >disponi#le
en el directorio scriptsDapacheD?; Por e'emploC
f/php1/scripts/apache@U ./apcon#Fcon=.sh /usr/local/apache/con#/httpd.con#
u archivo de con(iguraci-n original ser* guardado en httpd;con(;orig;
Para convertir sus archivos .htaccessA e'ecute el script aphtaccessFcon=.sh >disponi#le
as) mismo en el directorio scripts/apache/?C
f/php1/scripts/apache@U #ind / Fname .htaccess Fexec ./aphtaccessFcon=.sh :; V;
De modo seme'anteA sus archivos .htaccess antiguos ser*n guardados con el pre(i'o ;orig;
Los scripts de conversi-n re/uieren /ue aE" est< instalado;
Comportamiento del anali6ador sintctico
+l proceso de an*lisis sint*ctico y la e'ecuci-n son ahora dos pasos completamente separadosA no se
proceder* a la e'ecuci-n del c-digo de cual/uier archivo hasta /ue <ste en su totalidadA as) como
todo el c-digo re/uerido se haya analizado completa y satis(actoriamente;
@no de los nuevos re/uisitos introducidos con esta separaci-n es /ue todos los archivos re/ueridos
y de inclusi-n tienen /ue ser sint*cticamente completos ahora; %a no es permitida la separaci-n de
di(erentes segmentos de una estructura de control a trav<s de varios archivos; +sto /uiere decir /ue
ahora no puede iniciar un ciclo 9or o 7h6leA una sentencia 69 o un #lo/ue s76tch en un archivoA y
tener el (inal del cicloA sentencias elseA en#69A case o 1rea> en un archivo di(erente;
Aun es per(ectamente legal incluir c-digo adicional al interior de ciclos u otras estructuras de
controlA Bnicamente las pala#ras claves de control y los corchetes correspondientes G...H tienen /ue
estar en la misma unidad de compilaci-n >archivo o cadena procesada por e5al./?;
+sto no de#e generar una repercusi-n signi(icativa ya /ue separar el c-digo de esta manera de#e ser
considerado como muy mal estiloA en cual/uier caso;
Algo m*s /ue ya no es posi#leA aun/ue es rara veces visto en c-digo P&P 7A es devolver valores
desde un archivo re/uerido; Devolver un valor desde un archivo de inclusi-n es posi#le aun;
Meporte de errores
Cambios de configuraci"n
5on P&P 7 el nivel de reporte de errores esta#a esta#lecido como un valor num<rico simple
(ormado por la suma de los nBmeros relacionados con di(erentes niveles de error; Algunos valores
usuales eran 14 para reportar todos los errores y advertenciasA o : para reportar todo eFcepto
mensa'es de noticias simples /ue indica#an mal estilo del c-digo y cosas por el estilo;
P&P 8 tiene un con'unto de niveles de error y advertencia mayor y viene con un analizador
sint*ctico de con(iguraci-n /ue permite el uso de constantes sim#-licas para determinar el
comportamiento deseado;
+l nivel de reporte de errores de#e ser ahora con(igurado mediante la desha#ilitaci-n eFpl)cita de
niveles de advertencia /ue no desea /ue generen mensa'es de errorA con una sentencia l-gica OR
so#re la constante sim#-lica E_,44; Uuena complicadoN BienA digamos /ue usted desea /ue el
sistema de reporte de errores le haga sa#er so#re cual/uier pro#lema eFcepto por las advertencias de
estilo simples /ue est*n categorizadas por la constante sim#-lica E_NOT0CE; +n ese casoA colocar*
lo siguiente en su php.iniC error_report6nE : E_,44 ] N L E_NOT0CE M; i desea suprimir las
advertencias tam#i<nA usted agrega la constante apropiada al interior de los par<ntesis usando el
operador #inario OR HlHC error_report6nE: E_,44 ] N L E_NOT0CE V E_I,RN0N- M;
A5iso
5uando actualice c-digo o servidores desde P&P 7 a P&P 8A usted de#er)a che/uear estos
par*metros y llamadas a error>reporting./ o puede /ue /uiera desha#ilitar el reporte de los
nuevos tipos de errorA especialmente +Z5OMP.L+Z+RROR; +sto puede llevar a la generaci-n de
documentos sin in(ormaci-n alguna so#re /u< ha pasado o en d-nde investigar por posi#les
pro#lemas;
A5iso
+l uso de los valores antiguos : y 14 para esta#lecer el reporte de errores es una muy mala idea ya
/ue esto suprime algunas de las nuevas clases de errores presentesA incluyendo errores de la (ase
de an*lisis sint*ctico; +sto puede producir comportamientos #astante eFtraWosA de#ido a /ue
posi#lemente los scripts no tra#a'en m*s sin de'ar de mostrar mensa'es de error en todas partes;
+sto ha producido una cantidad enorme de reportes de (allos irreproduci#les en el pasadoA en
donde la gente reporta#a pro#lemas con el motor de scripts /ue eran incapaces de rastrearA cuando
lo /ue suced)a en realidad era usualmente algBn H]H /ue (alta#a en un archivo re/ueridoA /ue el
analizador sint*ctico no pod)a reportar de#ido a un sistema de reporte de errores mal con(igurado;
As) /ue revisar la con(iguraci-n de su reporte de errores de#e ser lo primero /ue de#e hacer
siempre /ue sus scripts mueran silenciosamente; +l motor Iend puede considerarse
su(icientemente maduro en la actualidad como para a(irmar /ue <ste no es el causante de estos
comportamientos eFtraWos;
Mensa'es de ad5ertencia adicionales
@na gran cantidad de c-digo P&P 7 eFistente usa construcciones del lengua'e /ue de#en ser
consideradas como muy mal estilo ya /ueA aun/ue logran el e(ecto esperado ahoraA pueden verse
in(luenciadas por cam#ios en otros lugares del c-digo; P&P 8 desplegar* una enorme cantidad de
mensa'es de noticia en tales situaciones en donde P&P 7 no lo hac)a; La soluci-n simple es
desha#ilitar los mensa'es +ZNO,.5+A pero usualmente es una #uena idea arreglar el c-digo en su
lugar;
+l caso m*s comBn /ue produce mensa'es de noticia ahora es el uso de constantes de cadena sin
comillas como )ndices de matrices; ,anto P&P 7 como P&P 8 llegar*n a interpretar <stas como
cadenas si no eFisten pala#ras clave o constantes con tales nom#resA pero en donde sea /ue una
constante con tal nom#re haya sido de(inida en algBn lugar del c-digoA puede daWar el script; +sto
puede convertirse incluso en un riesgo de seguridad si algBn intruso logra rede(inir constantes de
cadena en (orma tal /ue hace /ue sus scripts le den derechos de acceso /ue <l no de#)a tener; As)
/ue P&P 8 le advertir* ahora siempre /ue use constantes de cadena sin comillasA como por e'emplo
en '_SER(ER)RE5UEST_MET!OD.; Modi(icar tal eFpresi-n por '_SER(ER
)<RE5UEST_MET!OD<. har* (eliz al analizador sint*ctico y me'orar* signi(icativamente el estilo y
la seguridad de su c-digo;
Otra cosa so#re la /ue P&P 8 le noti(icar* es so#re el uso de varia#les o elementos de matrices sin
inicializar;
Iniciali6adores
Las varia#les est*ticas y los inicializadores de miem#ros de clase aceptan Bnicamente valores
escalaresA mientras /ue en P&P 7 acepta#an cual/uier eFpresi-n v*lida; +sto esA nuevamenteA
de#ido a la separaci-n entre el an*lisis sint*ctico y la e'ecuci-n ya /ue el c-digo no ha sido
e'ecutado aun cuando el analizador sint*ctico ve el inicializador;
Para clasesA de#er)a usar constructores para inicializar varia#les miem#ro en su lugar; Para varia#les
est*ticasA cosas di(erentes a simples valores est*ticos rara vez tienen sentido despu<s de todo;
e&pt)'.=.(
Ouiz*s el cam#io de comportamiento m*s controversial ha ocurrido con el modo en /ue tra#a'a
empty./; @na cadena /ue contenga solo el caracter H3H >cero? es considerada vac)aA mientras /ue en
P&P 7 no era as);
+ste nuevo comportamiento tiene sentido en aplicaciones Ee#A dado /ue todos los campos de
entrada devuelven cadenas incluso si se solicitan valores num<ricosA y dadas las capacidades de
conversi-n autom*tica de tipos de P&P; PeroA por otra parteA puede daWar su c-digo en (ormas
sutilesA causando comportamientos eF-ticos /ue son di()ciles de rastrear si no sa#e /u< #uscar;
;unciones faltantes
Aun/ue P&P 8 viene con una gran cantidad de caracter)sticasA (unciones y eFtensiones nuevasA
puede /ue aun encuentre (unciones de la versi-n 7 /ue hacen (alta; @n nBmero pe/ueWo de
(unciones centrales han desaparecido ya /ue no (uncionan con el nuevo es/uema de separaci-n de
an*lisis sint*ctico y e'ecuci-n /ue se introdu'o en P&P 8 con el motor Iend; Otras (uncionesA e
incluso eFtensiones completasA se han marcado o#soletas a medida /ue nuevas (unciones y
eFtensiones cu#ren las mismas tareas y en ocasiones en una (orma m*s general; Algunas (unciones
simplemente no han sido portadas aun y (inalmente algunas (unciones o eFtensiones pueden (altar
de#ido a con(lictos de licencias;
;unciones faltantes debido a cambios conceptuales
Dado /ue P&P 8 separa ahora el an*lisis sint*ctico de la e'ecuci-nA ya no es posi#le modi(icar el
comportamiente del analizador sint*ctico >em#e#ido ahora en el motor Iend? en tiempo de
e'ecuci-nA dado /ue el an*lisis ya ha ocurrido para entonces; De modo /ue la (unci-n short>tags./
ya no eFiste; Aun puede modi(icar el comportamiento del analizador sint*nctico de(iniendo los
valores apropiados en el archivo php.ini;
Otra caracter)stica de P&P 7 /ue no es parte de P&P 8 es la inter(az de depuraci-n integrada;
+Fisten adiciones de terceros para el motor Iend /ue aWaden (uncionalidades similares;
;unciones y e+tensiones deprecadas
Las eFtensiones de #ases de datos Ada#as y olid ya no eFisten; Larga vida a la eFtensi-n uni(icada
ODB5 en su lugar;
,tatus modificado para unset./
unset./A aun cuando sigue estando disponi#leA es implementada ahora como una construcci-n del
lengua'e en lugar de una (unci-n;
+sto no tiene consecuencia alguna en el comportamiento de unset./A pero realizar una prue#a con
=unset= usando function>e+ists./ devolver* FALSE del mismo modo /ue ocurrir)a con otras
construcciones del lengua'e /ue tienen apariencia de (uncionesA como echo./;
Otro cam#io m*s pr*ctico es /ue ya no es posi#le llamar unset./ indirectamenteA esto esA
'9unc:*unset*J '9uncL'alEuna_ar6a1leM no (uncionar* m*s;
E+tensiones PHP 7
Las eFtensiones escritas para P&P 7 no tra#a'ar*n con P&P 8A ni como #inarios ni al nivel de (uente;
No es di()cil portar eFtensiones a P&P 8 si tiene acceso a las (uentes originales; @na descripci-n
detallada de tal proceso de migraci-n no hace parte de este documento;
,ustituci"n de 5ariables en cadenas
P&P 8 aWade un nuevo mecanismo para la sustituci-n de varia#les en cadenas; AhoraA (inalmenteA
puede acceder a varia#les miem#ro de o#'etos y elementos de matrices multidimensionales al
interior de cadenas;
Para tal e(ectoA necesita rodear sus varia#les con corchetesA colocando el signo de d-lar
inmediatamente despu<s del corchete de apeturaC G'...H
Para em#e#er el valor de una varia#le miem#ro de o#'eto en una cadenaA simplemente escri#a *te8to
G'o1U=&m6em1roH te8to*A mientras /ue en P&P 7 de#)a hacer algo como *te8to *.'o1U=&m6em1ro.*
te8to*;
+sto de#er)a representar c-digo m*s legi#leA aun/ue podr)a arruinar scripts eFistentes escritos para
P&P 7; Pero puede encontrar (*cilmente este tipo de pro#lemasA revisando el c-digo por la
com#inaci-n de caracteres G' en su c-digoA y reemplaz*ndola por QG' con su herramienta de
#Bs/ueda2y2reemplazo (avorita;
CooBies
P&P 7 ten)a el mal h*#ito de de(inir coo"ies en el orden contrario al de las llamadas a setcooBie./
en su c-digo; P&P 8 aca#- con este h*#ito y crea las l)neas de ca#ecera de coo"ies en el mismo
orden eFacto en el /ue usted de(ine las coo"ies en el c-digo;
+sto puede daWar c-digo eFistenteA pero el comportamiento antiguo era tan eFtraWo de entender /ue
merec)a un cam#io para prevenir posteriores pro#lemas en el (uturo;
Festi"n de 5ariables globales
Aun/ue el mane'o de varia#les glo#ales se en(oca#a en la simplicidad en P&P 7 y versiones
tempranas de P&P 8A <ste en(o/ue ha cam#iado para ser m*s seguro; Mientras /ue en P&P 7 el
siguiente e'emplo (unciona#a #ienA en P&P 8 de#e ser unset>unsetL'-4OA,4S)*6#*.M?X; +ste es s-lo
un detalle de la gesti-n de varia#les glo#ales; @sted de#er)a usar siempre '-4OA,4SA con versiones
recientes de P&P 8 est* o#ligado a hacerlo en la mayor)a de casos; Lea m*s so#re este asunto en la
secci-n de re(erencias Elo1al ;
E'emplo C(!. Migraci"n de 5ariables globales
<?php
$id > 6;
#unction prueba39
:
Elobal $id;
unset3$id9;
;
prueba39;
echo3$id9; // Esto imprime 6 en H 1
?>
Ap%ndice K. Migraci"n desde PHPA;I * hacia
PHP 7
,obre las incompatibilidades en 7.D
P&P 7;3 ha sido rescrito desde ceros; Posee un analizador sint*ctico apropiadoA /ue es mucho m*s
ro#usto y consistente /ue el de 0;3; 7;3 es tam#i<n signi(icativamente mas r*pidoA y usa menos
memoria; in em#argoA algunas de estas me'oras no (ueron posi#les sin modi(icaciones de
compati#ilidadA tanto en la sintaFis como en el (uncionamiento;
Adem*sA los desarrolladores de P&P han intentado limpiar tanto la sintaFis como la sem*ntica de
P&P en la versi-n 7;3A y <sto ha causado tam#i<n algunas incompati#ilidades; 5reemos /ueA a largo
plazoA estos cam#ios ser*n para #ien;
+ste cap)tulo intentar* guiarle a trav<s de las incompati#ilidades /ue puede encontrar cuando vaya
desde P&PDF. 0;3 a P&P 7;3A adem*s de ayudarle a resolverlas; No se mencionan a/u) las nuevas
caracter)sticasA a menos /ue sea necesario;
+Fiste un programa /ue puede convertir autom*ticamente sus vie'os scripts P&PDF. 0;3; Puede ser
encontrado en el su#directorio con=ertor de la distri#ucion 7;3 de P&P; in em#argoA <ste
programa solo detecta los cam#ios de sintaFisA as) /ue de#er)a leer este cap)tulo con cuidadoA en
cual/uier caso;
old_function
La sentencia ol#_9unct6on le permite declarar una (unci-n usando una sintaFis id<ntica a P&PDF.0
>eFcepto en /ue de#e reemplazar H(unctionH con HoldZ(unctionH?;
+sta es una caracter)stica considerada como o#soletaA y de#e ser usada Bnicamente por el programa
de conversi-n P&PDF.02_P&P 7;
A5iso
Las (unciones declaradas como ol#_9unct6on no pueden ser llamadas desde el c-digo interno de
P&P; +ntre otras cosasA esto /uiere decir /ue no puede usarlas en (unciones como usort./A
array>3alB./A y register>shutdo3n>function./; Puede evitar esta limitaci-n escri#iendo una
(unci-n de envoltura >en la (orma normal de P&P 7? para llamar a ol#_9unct6on;
Eti?uetas de inicioAfinal
A/uello /ue pro#a#lemente note primeroA es /ue las eti/uetas de inicio y (inal de P&P han
cam#iado; Las vie'a (orma $% & ha sido reemplazada por tres nuevas (ormas posi#lesC
E'emplo K(!. Migraci"n- eti?uetas 5ie'as de inicioAfin
<? echo "Esto es c&oacute;diEo H/S4 C.2.Vn"; >
A partir de la versi-n 0;3A P&PDF. tam#i<n soporta esta varianteC
E'emplo K(*. Migraci"n- primer 'uego nue5o de eti?uetas de inicioAfin
<? echo "&iexcl;Esto es c&oacute;diEo H <.2!Vn"; ?>
Note /ue la eti/ueta de (in consiste ahora en un signo de interrogaci-n y un caracter mayor2/ueA en
lugar de tan s-lo un mayor2/ue; in em#argoA si planea usar JML en su servidorA tendr* pro#lemas
con la primera variante nuevaA ya /ue P&P puede intentar e'ecutar el marcado JML en documentos
JML como c-digo P&P; +s por esto /ue se han introducido las siguientes variantesC
E'emplo K(7. Migraci"n- segundo 'uego de eti?uetas de inicioAfin
<?php echo "&iexcl;Esto es c&oacute;diEo H <.2!Vn"; ?>
Algunas personas han tenido pro#lemas con editores /ue no reconocen las eti/uetas de instrucci-n
de procesamiento despu<s de todo; Microso(t FrontPage es uno de esos editoresA y a modo de
remedioA se ha introducido tam#i<n esta otra varianteC
E'emplo K(8. Migraci"n- tercer 'uego de eti?uetas de inicioAfin
<script lanEuaEe>"php">
echo "&iexcl;Esto es c&oacute;diEo H <.2!Vn";
</script>
,inta+is if..endif
+l modo malternativoH de escri#ir sentencias i(Delsei(DelseA usando i(>?Xelsei(>?X elseX endi(X no puede
implementarse de (orma e(iciente sin agregar una gran cantidad de comple'idad al analizador
sint*ctico 7;3; De#ido a estoA la sintaFis ha sido modi(icadaC
E'emplo K(9. Migraci"n- sinta+is if..endif antigua
i# 3$#oo9;
echo "sipVn";
elsei# 3$bar9;
echo "casiVn";
else;
echo "nopVn";
endi#;
E'emplo K(<. Migraci"n- sinta+is if..endif nue5a
i# 3$#oo9@
echo "sipVn";
elsei# 3$bar9@
echo "casiVn";
else@
echo "nopVn";
endi#;
Note /ue los punto2y2comaA han sido reemplazados por los los dos2puntos en todas las sentenciasA
eFcepto en a/uella /ue termina la eFpresi-n >endi(?;
,inta+is 3hile
Al igual /ue con i(;;endi(A la sintaFis de Ehile;;endEhile ha cam#iado tam#i<nC
E'emplo K(=. Migraci"n- sinta+is 3hile..end3hile antigua
8hile 3$mas%en%camino9;
...
end8hile;
E'emplo K(N. Migraci"n- sinta+is 3hile..end3hile nue5a
8hile 3$mas%en%camino9@
...
end8hile;
A5iso
i usa la sintaFis antigua Ehile;;endEhile en P&P 7;3A o#tendr* un ciclo /ue nunca (inaliza;
Tipos de las e+presiones
P&PDF. 0;3 usa#a el lado iz/uierdo de las eFpresiones para determinar el tipo del resultado; P&P 7;3
toma am#os lados en cuenta cuando determina los tipos del resultadoA y esto puede producir
comportamientos impredeci#les si e'ecuta scripts 0;3 en 7;3;
5onsidere este e'emploC
$a)2/>5;
$a)6/>H;
$cla=e > Iey3$a9;
8hile 3"" !> $cla=e9 :
echo "$cla=e";
next3$a9;
;
+n P&PDF. 0;3A esto mostrar)a los dos )ndices de Ya; +n P&P 7;3A no mostrar)a nada; La raz-n es /ue
en P&P 0;3A al ser el argumento iz/uierdo de tipo cadenaA se realiza#a una comparaci-n de cadenasA
y ciertamente ** no es igual a *0*A y el ciclo continBa; +n P&P 7;3A cuando se compara una cadena
con un enteroA se realiza una comparaci-n de enteros >la cadena es convertida a entero?; +sto resulta
en la comparaci-n de ato6L**M /ue es 0A y l6sta_#e_ar6a1les /ue tam#i<n es 0A y dado /ue 0::0A el
ciclo no avanzar* ni una sola vez;
La soluci-n a esto es simple; Reemplace la sentencia Ehile conC
8hile 33strinE9$cla=e !> ""9 :
:os mensa'es de error han cambiado
Los mensa'es de error de P&P 7;3 sonA usualmenteA m*s precisos /ue los de 0;3A pero ya no puede
ver el (ragmento de c-digo /ue causa el error; in em#argoA se le entregar* el nom#re de archivo y
nBmero de l)nea del error;
E5aluaci"n booleana de corto(circuito
+n P&P 7;3A la evaluaci-n #ooleana es por corto2circuito; +sto signi(ica /ue en una eFpresi-n como
L1 VV prue1aLMMA la (unci-n prueba./ no ser* e'ecutada ya /ue nada puede cam#iar el resultado de la
eFpresi-n despu<s del 1;
+s <ste un detalle menor de compati#ilidadA pero puede provocar inesperados e(ectos colaterales;
Calores de retorno de funci"n TRUEAFALSE
La mayor)a de (unciones internas han sido rescritas de modo /ue devuelvan TRUE de tener <Fito y
FALSE cuando (allanA en contraste a los valores 3 y 21 de P&PDF. 0;3A respectivamente; +l nuevo
comportamiente permite la implementaci-n de c-digo m*s l-gicoA como '#a : 9openL*/su/arch6o*M
or 9a6lL*i#6a1los_*MJ; Dado /ue P&PDF. 0;3 no dispon)a de reglas claras so#re el valor /ue de#)an
devolver las (unciones cuando (allanA la mayor)a de tales scripts pro#a#lemente de#an revisarse
manualmente despu<s de usar el programa de conversi-n de 0;3 a 7;3;
E'emplo K(O. Migraci"n desde *.D- 5alores de retornoE c"digo antiguo
$da > #open3$archi=o, "r"9;
i# 3$da >> F69;
echo3".o pudo abrirse $archi=o para lectura<br />Vn"9;
endi#;
E'emplo K(!D. Migraci"n desde *.D- 5alores de retornoE c"digo nue5o
$da > ^#open3$archi=o, "r"9 or print3".o pudo abrirse $archi=o para lectura<br />Vn"9;
Jtras incompatibilidades
+l m-dulo Apache de P&P 7;3 no soporta m*s versiones de Apache anteriores a la 1;0; e
re/uiere Apache 1;0 o superior;
echo./ no soporta m*s una cadena de (ormato; @se la (unci-n printf./ en su lugar;
+n P&PDF. 0;3A un e(ecto colateral de implementaci-n causa#a /ue '9oo)0. tuviera el mismo
e(ecto /ue '9oo; +sto no ocurre en P&P 7;3;
La lectura de matrices con 'matr6D). ya no es soportada;
+sto /uiere decir /ue no puede recorrer una matriz mediante un ciclo /ue realice '#atos :
'matr6D).; @se current./ y ne+t./ en su lugar;
As) mismoA 'matr6D1). : 'matr6D2 no adiciona los valores de 'matr6D2 a 'matr6D1A sino /ue
adiciona 'matr6D2 como la Bltima entrada de 'matr6D1; 5onsulte tam#i<n el soporte de
matrices multidimensionales;
*Y* ya no es so#recargado como un operador de concatenaci-n de cadenasA sino /ue
convierte sus argumentos a nBmeros y realiza una suma num<rica; @se *.* en su lugar;
E'emplo K(!!. Migraci"n desde *.D- concatenaci"n para cadenas
echo "6" [ "6";
+n P&P 0;3 esto mostrar)a 11A en P&P 7;3 imprimir)a 0; +n su lugar useC
echo "6"."6";
$a > 6;
$b > 6;
echo $a [ $b;
+sto imprimir)a 0 tanto en P&P 0;3 como en 7;3;
$a > 6;
$b > 6;
echo $a.$b;
+sto imprimir* 11 en P&P 7;3;
Ap%ndice E. Kepuraci"n en PHP
,obre el depurador
P&P 7 incluye soporte para un depurador #asado en red;
P&P 8 no cuenta con una herramienta de depuraci-n interna; Aun as)A puede usar uno de los
depuradores eFternos; +l entorno integrado de desarrollo Iend incluye un depuradorA y eFisten
tam#i<n algunas eFtensiones de depuraci-n gratuitas como DBG en httpCDDdd;cron;ruDd#gDA el
Depurador Avanzado de P&P >APDA por sus siglas en .ngl<s? o Jde#ugA el cual posee incluso una
inter(az de depuraci-n compati#le con la (uncionalidad de depuraci-n de P&P 7A tal y como se
descri#e en esta secci-n;
)so del Kepurador
+l depurador interno en P&P 7 es Btil para rastrear (allos di()ciles de seWalar; +l depurador (unciona
creando una coneFi-n con un puerto ,5P en cada ocasi-n /ue P&P 7 arranca; ,odos los mensa'es
de error de esa petici-n ser*n enviados a esta coneFi-n ,5P; +sta in(ormaci-n tiene como prop-sito
ser usada por un =servidor de depuraci-n= /ue puede correr dentro de un .D+ o editor programa#le
>como +macs?;
5-mo con(igurar el depuradorC
1; 5on(igure un puerto ,5P para el depurador en el archivo de con(iguraci-n >de#ugger;port? y
ha#il)telo >de#ugger;ena#led?;
0; 5on(igure un receptor ,5P en ese puerto en alguna parte >por e'emploA socBet (l (s !8DD en
sistemas @niF?;
7; +n su c-digoA e'ecute =de#uggerZon>host?=A en donde host es el nBmero .P o nom#re del servidor
hu<sped en donde est* corriendo el receptor ,5P;
AhoraA todas las advertenciasA noticias etc; aparecer*n en ese soc"et receptorA 6ncluso s6 las ha
#esha16l6ta#o con error_reporting'(;
Protocolo del Kepurador
+l protocolo del depurador de P&P 7 es #asado en l)neas; 5ada l)nea tiene un t6poA y varias l)neas
componen un mensaUe; 5ada mensa'e comienza con una l)nea del tipo start y termina con una l)nea
del tipo en#; P&P 7 puede enviar l)neas para di(erentes mensa'es simult*neamente;
@na l)nea tiene este (ormatoC
#echa hora host3pid9 tipo@ datosFmensaje
9echa
Fecha en (ormato .O MK31 >aaaa2mm2##?
hora
&oraA incluyendo microsegundosC hhCmmCuuuuuu
host
Nom#re DN o direcci-n .P del host en donde se gener- el error de script;
p6#
P.D >id de proceso? en host del proceso /ue conten)a el script de P&P 7 /ue gener- este error;
t6po
,ipo de l)nea; Le dice al programa receptor so#re el modo en /ue de#er)a tratar los datos a
continuaci-nC
Tabla E(!. Tipos de :nea del Kepurador
Nombre ,ignificado
start
Le dice el programa receptor /ue un mensa'e de depurador comienza a/u); Los
contenidos de #atos ser*n el tipo de mensa'e de errorA listados m*s adelante;
messaEe +l mensa'e de error P&P 7;
locat6on
Nom#re de archivo y nBmero de l)nea en donde ocurri- el error; La primera l)nea
locat6on contendr* siempre la u#icaci-n de nivel m*s alto; #atos contendr*
arch6o:l\nea;iempre ha#r* una l)nea locat6on despu<s de messaEe y despu<s de
cada 9unct6on;
9rames
NBmero de marcos en el siguiente volcado de pila; i hay cuatro marcosA espere
in(ormaci-n so#re cuatro niveles de llamados a (unci-n; i no se entrega una l)nea
=(rames=A se asumir* /ue la pro(undidad es 3 >el error ocurri- en el conteFto de
m*s alto nivel?;
9unct6on
Nom#re de la (unci-n en donde ocurri- el error; er* repetido una vez por cada
nivel en la pila de llamados a (unciones;
Nombre ,ignificado
en# Le indica al programa receptor /ue el mensa'e de depurador termina a/u);
#atos
Datos de la l)nea;
Tabla E(*. Tipos de Error del Kepurador
Kepurador Interno de PHP 7
Earning +ZLARN.NG
error +Z+RROR
parse +ZPAR+
notice +ZNO,.5+
core2error +Z5OR+Z+RROR
core2
Earning
+Z5OR+ZLARN.N
G
un"noEn >cual/uier otro?
E'emplo E(!. Mensa'e de Kepurador de E'emplo
199M238234 07C0:C8339KK luci(er;guardian;no>038M1? startC notice
199M238234 07C0:C8339KK luci(er;guardian;no>038M1? messageC @ninitialized varia#le
199M238234 07C0:C8339KK luci(er;guardian;no>038M1? locationC >null?C:
199M238234 07C0:C8339KK luci(er;guardian;no>038M1? (ramesC 1
199M238234 07C0:C8339KK luci(er;guardian;no>038M1? (unctionC display
199M238234 07C0:C8339KK luci(er;guardian;no>038M1? locationC DhomeDss#Dpu#licZhtmlDtest;php7C13
199M238234 07C0:C8339KK luci(er;guardian;no>038M1? endC notice

Ap%ndice ;. E+tensi"n de PHP 7
+sta secci-n se encuentra #astante desactualizada y demuestra el modo de eFtender P&P 7; i est*
interesado en P&P 8A por (avor lea la secci-n so#re la inter(az de programaci-n Iend; As) mismoA
usted /uerr* leer varios archivos encontrados en el c-digo (uente de P&PA archivos como
'E,L"E.&EOSFR?.*,4.ELFEX*E.&4?.& y 'E,L"E.EX*%&]EO;
Adici"n de funciones a PHP
Prototipo de ;unci"n
,odas las (unciones lucen de este modoC
=oid php<%#oo34.*E'.,O%S+.R*4?.%,',"E*E'&9 :

;
.ncluso si su (unci-n no reci#e argumentosA <sta es la (orma de llamarla;
Argumentos de ;unci"n
Los argumentos son siempre de tipo pval; +ste tipo posee una uni-n /ue contiene el tipo real del
argumento; As) /ueA si su (unci-n reci#e dos argumentosA usted har)a algo como lo siguiente al
comienzo de su (unci-nC
E'emplo ;(!. Mecuperaci"n de argumentos de funci"n
p=al WarE6, WarEC;
i# 3,'-%R?+.*3ht9 !> C TT Eetarameters3ht,C,&arE6,&arEC9>>S,4O+'E9 :
7'?.-%,',"%R?+.*;
;
NO,AC Los argumentos pueden ser pasados ya sea por valor o por re(erencia; +n am#os casos
necesitar* pasar i>pval V? a getParameters; i desea che/uear si el par*metra nH<simo le (ue enviado
por re(erencia o noA puede usar la (unci-n ParameterPassedByRe(erence>htAn?; [sta devolver* 1 o 3;
5uando usted modi(ica cual/uiera de los par*metros pasadosA ya sea /ue hayan sido enviados por
re(erencia o por valorA puede o #ien comenzar con el par*metro llamando pvalZdestructor so#re <lA o
si es un ARRA% al /ue desea agregar valoresA puede usar (unciones similares a a/uellas en
internalZ(unctions;h /ue manipulan returnZvalue como un ARRA%;
,am#i<nA si modi(ica un par*metro a .Z,R.NG asegBrese de asignar primero la nueva cadena
mediante estrdup>? y la longitud de la cadenaA y s-lo despu<s modi(i/ue el tipo a .Z,R.NG; i
modi(ica la cadena de un par*metro /ue ya es .Z,R.NG o .ZARRA%A de#e e'ecutar
pvalZdestructor so#re <ste primero;
Argumentos de ;unci"n Cariables
@na (unci-n puede reci#ir un nBmero varia#le de argumentos; i su (unci-n puede reci#ir ya sea 0 o
7 argumentosA use lo siguienteC
E'emplo ;(*. Argumentos de funci"n 5ariables
p=al WarE6, WarEC, WarE<;
int arE%count > ,'-%R?+.*3ht9;
i# 3arE%count < C TT arE%count > < TT
Eetarameters3ht,arE%count,&arE6,&arEC,&arE<9>>S,4O+'E9 :
7'?.-%,',"%R?+.*;
;
)so de los Argumentos de ;unci"n
+l tipo de cada argumento es almacenado en el campo type de pval; +ste tipo puede ser cual/uiera
de los siguientesC
Tabla ;(!. Tipos Internos de PHP
.Z,R.NG 5adena
.ZDO@BL+ Punto (lotante de do#le precisi-n
.ZLONG +ntero largo
.ZARRA% Matriz
.Z+MP,% Ninguno
.Z@+RZF@N5,.ON NN
.Z.N,+RNALZF@N5,.ON
NN >si alguno de <stos no puede ser pasado a una (unci-n 2
eliminar?
.Z5LA NN
.ZOB!+5, NN
i reci#e un argumento de un tipo y /uisiera usarlo como otroA o si tan s-lo desea o#ligar al
argumento a /ue sea de un cierto tipoA puede usar una de las siguientes (unciones de conversi-nC
con=ert%to%lonE3arE69;
con=ert%to%double3arE69;
con=ert%to%strinE3arE69;
con=ert%to%boolean%lonE3arE69; /W &i la cadena es "" o "2" se con=ierte a 2, 6 de lo contrario W/
con=ert%strinE%to%number3arE69; /W Ron=ierte una cadena a un O?.- o L?+ZOE, dependiendo de la cadena W/
+stas (unciones todas realizan conversi-n en2el2lugar; No devuelven nada;
+l argumento como tal es almacenado en una uni-nX los miem#ros sonC
.Z,R.NGC arg12_value;str;val
.ZLONGC arg12_value;lval
.ZDO@BL+C arg12_value;dval
Administraci"n de Memoria en las ;unciones
5ual/uier segmento de memoria necesitado por una (unci-n de#e ser reservado ya sea con emalloc>?
o estrdup>?; +stas son (unciones /ue a#straen la gesti-n de memoria y lucen y huelen como las
(unciones normales malloc>? y strdup>?; La memoria de#e ser li#erada con e(ree>?;
&ay dos tipos de memoria en este programaC la memoria /ue es devuelta al int<rprete en una
varia#leA y la memoria /ue necesita para el almacenamiento temporal en su (unci-n interna; 5uando
asigna una cadena a una varia#le /ue es devuelta al int<rpreteA necesita asegurarse de reservar
primero la memoria con emalloc>? o estrdup>?; +sta memoria no de#er)a ser li#erada por usted
N@N5AA a menos /ue m*s adelante en la misma (unci-n so#rescri#a su asignaci-n original >aun/ue
este tipo de pr*ctica no se considera apropiada?;
Para cual/uier segmento de memoria temporalDpermanente /ue necesite en sus
(uncionesD#i#liotecasA usted de#er)a usar las tres (unciones emalloc>?A estrdup>?A y e(ree>?; [stas se
comportan +JA5,AM+N,+ como sus contrapartes; 5ual/uier cosa /ue reserve con emalloc>? o
estrdup>? de#e li#erarla con e(ree>? en alguno u otro puntoA a menos /ue espere /ue permanezca
hasta el (inal del programaX de otro modoA ha#r* una (uga de memoria; +l signi(icado de =las
(unciones se comportan eFactamente como sus contrapartes= esC si usted usa e(ree>? so#re algo /ue
no (ue reservado con emalloc>? ni estrdup>?A puede /ue reci#a un (allo de segmentaci-n; De modo
/ueA por (avorA tenga cuidado y li#ere toda su memoria desperdiciada;
i compila con =2DD+B@G=A P&P imprimir* una lista de toda la memoria /ue (ue reservada usando
emalloc>? y estrdup>? y nunca li#erada con e(ree>? una vez termina la e'ecuci-n el script
especi(icado;
Kefinici"n de Cariables en la Tabla de ,mbolos
@n nBmero de macros se encuentra a su disposici-n para (acilitar la de(inici-n de una varia#le en la
ta#la de s)m#olosC
+,Z$ARZ,R.NG>nom#reAvalor?
+,Z$ARZDO@BL+>nom#reAvalor?
+,Z$ARZLONG>nom#reAvalor?
A5iso
,enga cuidado con +,Z$ARZ,R.NG; La parte del valor de#e ser reservada manualmente con
mallocA ya /ue el c-digo de gesti-n de memoria intentar* li#erar este apuntador m*s adelante; No
pase memoria reservada est*ticamente a un llamado a +,Z$ARZ,R.NG;
Las ta#las de s)m#olos en P&P se encuentran implementadas como ta#las asociativas; +n cual/uier
momento dadoA isym#olZta#le es un apuntador a la ta#la de s)m#olos HprincipalHA y
activeZsym#olZta#le apunta a la ta#la de s)m#olos activa actualmente ><stas pueden ser id<nticasA
como al arran/ueA o di(erentesA si se encuentra en el interior de una (unci-n?;
Los siguientes e'emplos usan HactiveZsym#olZta#leH; De#e reemplazar este valor con isym#olZta#le
si desea tra#a'ar espec)(icamente con la ta#la de s)m#olos HprincipalH; AsimismoA las mismas
(unciones pueden ser aplicadas so#re matricesA como se eFplica m*s adelante;
E'emplo ;(7. Che?uear si $foo e+iste en la tabla de smbolos
i# 3hash%exists3acti=e%symbol%table,"#oo",si0eo#3"#oo"999 : existe... ;
else : no existe ;
E'emplo ;(8. Encontrar el tamaWo de una 5ariable en una tabla de smbolos
hash%#ind3acti=e%symbol%table,"#oo",si0eo#3"#oo"9,&p=alue9;
checI3p=alue.type9;
Las matrices en P&P son implementadas usando las mismas ta#las asociativas como ta#las de
s)m#olos; +sto /uiere decir /ue las dos (unciones anteriores pueden ser usadas tam#i<n para
che/uear varia#les al interior de matrices;
i desea de(inir una nueva matriz en una ta#la de s)m#olosA de#e hacer lo siguiente;
PrimeroA puede /ue desee che/uear si eFisteA y a#ortar la e'ecuci-n apropiadamenteA usando
hashZeFists>? o hashZ(ind>?;
A continuaci-nA inicialice la matrizC
E'emplo ;(9. Iniciali6aci"n de una nue5a matri6
p=al arr;

i# 3array%init3&arr9 >> S,4O+'E9 : #allo... ;;
hash%update3acti=e%symbol%table,"#oo",si0eo#3"#oo"9,&arr,si0eo#3p=al9,.+OO9;
+ste c-digo declara una nueva matrizA llamada '9ooA en la ta#la de s)m#olos actual; +sta matriz se
encuentra vac)a;
+ste es el modo de agregar entradas en ellaC
E'emplo ;(<. Adici"n de nue5as entradas en una matri6 nue5a
p=al entrada;

entrada.type > 4&%O?.-;
entrada.=alue.l=al > 5;

/W de#ine $#oo)"bar"/ > 5 W/
hash%update3arr.=alue.ht,"bar",si0eo#3"bar"9,&entrada,si0eo#3p=al9,.+OO9;
/W de#ine $#oo)H/ > 5 W/
hash%index%update3arr.=alue.ht,H,&entrada,si0eo#3p=al9,.+OO9;
/W de#ine el siEuiente luEar libre en $#oo)/,
W $#oo)J/, como 5 3#unciona como en phpC9
W/
hash%next%index%insert3arr.=alue.ht,&entrada,si0eo#3p=al9,.+OO9;
i desea modi(icar un valor /ue ha insertado a una matriz asociativaA primero de#e recuperarlo
desde la matriz; Para prevenir ine(icienciasA puede o(recer un pval VV a la (unci-n de adici-n de la
matriz asociativaA y <ste ser* actualizado con la direcci-n pval V del elemento insertado en la matriz;
i tal valor es NULL >como en todos los e'emplos anteriores? 2 el par*metro es ignorado;
hashZneFtZindeFZinsert>? usa m*s o menos la misma l-gica /ue '9oo). : 1arJ en P&P 0;3;
i est* construyendo una matriz para devolverla desde una (unci-nA puede inicializar la matriz tal y
como se ha indicadoA haciendoC
i# 3array%init3return%=alue9 >> S,4O+'E9 : #allo...; ;
;;;y luego agregar valores con las (unciones de ayudaC
add%next%index%lonE3=alor%retorno,=alor%lonE9;
add%next%index%double3=alor%retorno,=alor%double9;
add%next%index%strinE3=alor%retorno,estrdup3=alor%strinE99;
Por supuestoA si la adici-n no es realizada correctamente luego de la inicializaci-n de la matrizA
pro#a#lemente tenga /ue veri(icar la eFistencia de la matriz primeroC
p=al Warr;

i# 3hash%#ind3acti=e%symbol%table,"#oo",si0eo#3"#oo"9,3=oid WW9&arr9>>S,4O+'E9 : no se pudo encontrar... ;
else : use arrF>=alue.ht... ;
Note /ue hashZ(ind reci#e un apuntador a un apuntador pvalA y no un apuntador pval;
Pr*cticamente toda (unci-n de matriz asociativa devuelve @55+ o FA.L@R+ >eFcepto por
hashZeFists>?A /ue devuelve un valor #ooleano de verdad?;
Ke5oluci"n de 5alores simples
@n nBmero de macros se encuentra a su disposici-n para (acilitar la devoluci-n de valores desde
una (unci-n;
Las macros R+,@RNZV todas esta#lecen el valor de retorno y generan una devoluci-n desde la
(unci-nC
R+,@RN
R+,@RNZFAL+
R+,@RNZ,R@+
R+,@RNZLONG>l?
R+,@RNZ,R.NG>sAdup? i dup es TRUEA duplica la cadena
R+,@RNZ,R.NGL>sAlAdup? Devuelve una cadena >s? especi(icando la longitud >l?;
R+,@RNZDO@BL+>d?
Las macros R+,$ALZV esta#lecen el valor de retornoA pero no devuelven;
R+,$ALZFAL+
R+,$ALZ,R@+
R+,$ALZLONG>l?
R+,$ALZ,R.NG>sAdup? i dup es TRUEA duplica la cadena
R+,$ALZ,R.NGL>sAlAdup? Devuelve una cadena >s? especi(icando la longitud >l?;
R+,$ALZDO@BL+>d?
,odas las macros de cadena anteriores aplicar*n estrdup>? so#re el argumento HsH pasadoA de modo
/ue puede li#erar de (orma segura el argumento despu<s de llamar la macroA o alternativamente
puede usar memoria reservada est*ticamente;
i su (unci-n devuelve repuesteas #ooleanas de <FitoDerrorA use siempre R+,@RNZ,R@+ y
R+,@RNZFAL+ respectivamente;
Ke5oluci"n de 5alores comple'os
u (unci-n tam#i<n puede devolver un tipo de datos comple'o como un o#'eto o una matriz;
Devoluci-n de un o#'etoC
1; Llame o#'ectZinit>valorZretorno?;
0; Ll<nelo con valores; Las (unciones disponi#les para este prop-sito se listan m*s adelante;
7; Posi#lementeA registre (unciones para este o#'eto; Para o#tener valores del o#'etoA la (unci-n
tendr)a /ue recuperar =this= desde activeZsym#olZta#le; u tipo de#e ser .ZOB!+5,A y es
#*sicamente una ta#la asociativa regular >esto /uiere decirA puede usar las (unciones de matrices
asociativas regulares so#re ;value;ht?; +l registro como tal de la (unci-n puede realizarse usandoC
add%method3 =alor%retorno, nombre%#uncion, apuntador%#uncion 9;
Las (unciones usadas para po#lar el o#'eto sonC
addZpropertyZlong> valorZretornoA nom#reZpropiedadA l ? 2 Agregar una propiedad llamada
Hnom#reZpropiedadHA de tipo longA igual a HlH
addZpropertyZdou#le> valorZretornoA nom#reZpropiedadA d ? 2 .gualA s-lo agrega un dou#le
addZpropertyZstring> valorZretornoA nom#reZpropiedadA str ? 2 .gualA s-lo agrega una cadena
addZpropertyZstringl> valorZretornoA nom#reZpropiedadA strA l ? 2 .gualA s-lo agrega una
cadena de longitud HlH
Devoluci-n de una matrizC
1; Llame arrayZinit>valorZretorno?;
0; Ll<nela con valores; Las (unciones disponi#les para este prop-sito se listan m*s adelante;
Las (unciones usadas para po#lar una matriz sonC
addZassocZlong>valorZretornoAclaveAl? 2 agregar una matriz asociativa con la clave HclaveH y
el valor largo HlH
addZassocZdou#le>valorZretornoAclaveAd?
addZassocZstring>valorZretornoAclaveAcadenaAduplicar?
addZassocZstringl>valorZretornoAclaveAcadenaAlongitudAduplicar? especi(ica la longitud de la
cadena
addZindeFZlong>valorZretornoAindiceAl? 2 agregar una entrada en el indice HindiceH con el
valor long HlH
addZindeFZdou#le>valorZretornoAindiceAd?
addZindeFZstring>valorZretornoAindiceAcadena?
addZindeFZstringl>valorZretornoAindiceAcadenaAlength? 2 especi(icar la longitud de la cadena
addZneFtZindeFZlong>valorZretornoAl? 2 agregar una entrada de la matriz en la siguiente
u#icaci-n li#re con el valor long HlH
addZneFtZindeFZdou#le>valorZretornoAd?
addZneFtZindeFZstring>valorZretornoAcadena?
addZneFtZindeFZstringl>valorZretornoAcadenaAlength? 2 especi(icar la longitud de la cadena
)so de la lista de recursos
P&P posee una (orma est*ndar de tratar con los varios tipos de recursos; +sto reemplaza todas las
listas enlazadas locales usadas en P&P 0;3;
Funciones disponi#lesC
php7ZlistZinsert>apuntadorA tipo? 2 devuelve el HidH del recurso reci<n insertado
php7ZlistZdelete>id? 2 eliminar el recurso con el id especi(icado
php7ZlistZ(ind>idAVtipo? 2 devuelve el apuntador del recurso con el id especi(icadoA actualiza
HtipoH al tipo del recurso
,)picamenteA estas (unciones son usadas para gestores de OLA pero pueden ser usadas para
cual/uier otra cosaX por e'emploA mantener descriptores de archivo;
@n listado de c-digo t)pico lucir)a de la siguiente (ormaC
E'emplo ;(=. Adici"n de un nue5o recurso
'E&?+'RE Wrecurso;
/W ...reser=ar memoria para el recurso y adQuirirlo... W/
/W aEreEar un nue=o recurso a la lista W/
=alor%retornoF>=alue.l=al > php<%list%insert33=oid W9 recurso, OE%'E&?+'RE%*PE9;
=alor%retornoF>type > 4&%O?.-;
E'emplo ;(N. )so de un recurso e+istente
p=al Wid%recurso;
'E&?+'RE Wrecurso;
int tipo;
con=ert%to%lonE3id%recurso9;
recurso > php<%list%#ind3id%recursoF>=alue.l=al, &tipo9;
i# 3tipo !> OE%'E&?+'RE%*PE9 :
php<%error3E%7,'.4.-,"el indice de recurso \d tiene el tipo Docado",id%recursoF>=alue.l=al9;
'E*+'.%S,O&E;
;
/W ...usar el recurso... W/
E'emplo ;(O. Eliminar un recurso e+istente
p=al Wid%recurso;
'E&?+'RE Wrecurso;
int tipo;
con=ert%to%lonE3id%recurso9;
php<%list%delete3id%recursoF>=alue.l=al9;
Los tipos de recurso de#er)an estar registrados en php7Zlist;hA en enum listZentryZtype;
AdicionalmenteA de#e procurarse la implementaci-n de c-digo de (inalizaci-n para cada nuevo tipo
de recurso de(inidoA en listZentryZdestructor>? u#icado en list;c >incluso si no tiene nada /ue hacer
en la (inalizaci-nA de#e agregar un caso vac)o?;
)so de la tabla de recursos persistentes
P&P posee una (orma est*ndar de almacenar recursos persistentes >es decirA recursos /ue son
conservados entre peticiones?; +l primer m-dulo en usar esta caracter)stica (ue el m-dulo MyOLA y
mOL a continuaci-nA de modo /ue puede o#tener una idea general de c-mo de#e ser usado un
recurso persistente leyendo mys/l;c; Las (unciones /ue de#e consultar sonC
php7Zmys/lZdoZconnect
php7Zmys/lZconnect>?
php7Zmys/lZpconnect>?
La idea general de los m-dulos de persistencia es la siguienteC
1; +scri#a todo el c-digo de su m-dulo para /ue tra#a'e con la lista de recursos normales
mencionada en la secci-n >9?;
0; +scri#a el c-digo de (unciones de coneFi-n eFtra /ue revisen si el recurso ya eFiste en la lista de
recursos persistentes; i es as)A reg)strelo en la lista de recursos normal como un apuntador a la
lista de recursos persistentes >de#ido a 1;A el resto del c-digo de#e (uncionar inmediatamente?; i
no eFisteA entonces cr<eloA agr<guelo a la lista de recursos persistentes % agregue un apuntador
hacia <l desde la lista normal de recursosA de modo /ue todo el c-digo pueda (uncionarX esto ya
/ue se encuentra en la lista de recursos regularesA peroA en la siguiente coneFi-nA el recurso ser)a
encontrado en la lista de recursos persistentes y usado sin tener /ue crearlo de nuevo; De#e
registrar <stos recursos con un tipo di(erente >p;e'; L+ZM%OLZL.NS para un enlace no2
persistente y L+ZM%OLZPL.NS para un enlace persistente?;
i lee mys/l;cA notar* /ueA con la eFcepci-n de la (unci-n de coneFi-n m*s comple'aA nada del resto
del m-dulo tiene /ue ser modi(icado;
La misma inter(az eFiste para la lista de recursos regulares y la lista de recursos persistentesA tan
s-lo HlistH se reemplaza por HplistHC
php7ZplistZinsert>apuntadorA tipo? 2 devuelve el HidH del recurso reci<n insertado
php7ZplistZdelete>id? 2 eliminar el recurso con el id especi(icado
php7ZplistZ(ind>idAVtipo? 2 devuelve el apuntador del recurso con el id especi(icadoA
actualiza HtipoH al tipo del recurso
in em#argoA es m*s /ue pro#a#le /ue estas (unciones le resulten inBtiles cuando intente
implementar un m-dulo persistente; ,)picamenteA es desea#le aprovechar el hecho de /ue la lista de
recursos persistentes es realmente una ta#la asociativa; Por e'emploA en los m-dulos
MyOLDmOLA cuando hay un llamado a pconnect>? >coneFi-n persistente?A la (unci-n crea una
cadena a partir de los valores de hostDusuarioDcontraseWa /ue (ueron pasados a la (unci-nA y asocia el
enlace OL con <sta cadena como clave; La siguiente vez /ue alguien haga un llamado a pconnect>?
con la misma in(ormaci-n de hostDusuarioDcontraseWaA se generar* la misma claveA y la (unci-n
encontrar* el enlace OL en la lista persistente;
&asta /ue sea documentado m*s a (ondoA de#er)a echarle un vistazo a mys/l;c o ms/l;c para ver
c-mo pueden usarse las capacidades de ta#la asociativa de una lista plist;
@na cosa importante a notarC los recursos /ue van a la lista de recursos persistentes VNOV de#e ser
reservada con el gestor de memoria de P&PA es decirA NO de#e ser creada con emalloc>?A estrdup>?A
etc; +n su lugarA de#en ser usadas las (unciones normales malloc>?A strdup>?A etc; La raz-n de esto es
simple 2 al (inal de la petici-n >(inal de cada visita?A cada trozo de memoria /ue (ue u#icado usando
el gestor de memoria de P&P es eliminado; %a /ue la lista persistente no se supone /ue de#a ser
eliminada el (inal de cada petici-nA no de#e utilizarse el gestor de memoria de P&P para reservar
recursos /ue vayan a la lista;
5uando registra un recurso /ue va a ser usado en la lista persistenteA de#e agregar destructores para
<sta tanto en la lista no2persistente como en la persistente; +l destructor en la lista no2persistente no
de#er)a hacer nada; A/uel en la lista persistente de#er)a li#erar apropiadamente cual/uier recurso
o#tenido por ese tipo >p;e'; memoriaA enlaces OLA etc?; ,al como con los recursos no2persistentesA
usted VD+B+V agregar destructores para cada recursoA incluso si no re/uieren ser destruidos y el
destructor puede estar vac)o; RecuerdeA ya /ue emalloc>? y amigos no de#en ser usados 'unto con la
lista persistenteA tampoco de#e usar e(ree>? a/u);
AWadir directi5as de configuraci"n de tiempo de e'ecuci"n
Muchas de las caracter)sticas de P&P pueden ser con(iguradas en tiempo de e'ecuci-n; +stas
directivas de con(iguraci-n pueden aparecer en el archivo php7;ini designadoA oA en el caso de la
versi-n m-dulo de ApacheA en los archivos ;con( de Apache; La venta'a de tenerlas en los archivos ;
con( de Apache es /ue pueden ser con(iguradas por cada directorio; +sto /uiere decir /ue un
directorio puede tener cierto valor para sa(emodeeFecdirA por e'emploA mientras /ue otro directorio
puede tener otro; +sta especi(icidad en la con(iguraci-n es especialmente Btil cuando un servidor
soporta mBltiples hosts virtuales;
Los pasos re/ueridos para agregar una nueva directivaC
1; Agregar la directiva a la estructura php7ZiniZstructure en modZphp7;h;
0; +n main;cA editar la (unci-n php7ZmoduleZstartup y agregar la llamada apropiada a
c(gZgetZstring>? o c(gZgetZlong>?;
7; Agregar la directivaA restricciones y un comentario a la estructura php7Zcommands en
modZphp7;c; F)'ese en la parte de restricciones; RR5Z5ONF son directivas /ue pueden estar
presentes s-lo en las archivos ;con( de ApacheA 5ual/uier directiva ORZOP,.ON puede estar
presente en cual/uier parteA incluyendo archivos .htaccess normales;
8; Agregue la entrada apropiada para su directiva en php7ta"e1handler>? o en php7(laghandler>?;
4; +n la secci-n de con(iguraci-n de la (unci-n Zphp7Zin(o>? en (unctionsDin(o;c necesita agregar su
nueva directiva;
K; %A por BltimoA de#e por supuesto usar su directiva en alguna parte; +sta ser* ase/ui#le como
php7Zini;directiva;
:lamados a ;unciones de )suario
Para llamar (unciones de usuario desde una (unci-n internaA de#e usar la (unci-n
call>user>function./;
call>user>function./ devuelve @55+ en caso de <FitoA y FA.L@R+ si la (unci-n no pudo ser
encontrada; fDe#e che/uear ese valor de retornoa i devuelve @55+A usted es responsa#le por
la destrucci-n del valor tipo pval retval >o devolverlo como el valor de retorno de su (unci-n?; i
devuelve FA.L@R+A el valor de retval ser* inde(inidoA y no de#e tocarlo;
,odas las (unciones internas /ue hacen llamados a (unciones de usuario #e1en ser reentrantes; +ntre
otras cosasA esto /uiere decir /ue no de#e usar varia#les glo#ales o est*ticas;
call>user>function./ reci#e seis argumentosC
HashTable Ltabla>de>funciones
+sta es la ta#la asociativa en la /ue ser* #uscada la (unci-n;
p5al Lob'eto
+ste es un apuntador a un o#'eto so#re el /ue es invocada la (unci-n; De#e ser NULL si es llamada
una (unci-n glo#al; i no es NULL >es decirA apunta hacia un o#'eto?A el argumento
ta#laZdeZ(unciones es ignoradoA y en su lugar se toma de la matriz asociativa del o#'eto; +l o#'eto
VpuedeV ser modi(icado por la (unci-n /ue es invocada so#re <l >la (unci-n tendr* acceso so#re el
o#'eto mediante Ythis?; i por alguna raz-n no desea /ue eso ocurraA env)e en su lugar una copia del
o#'eto;
p5al Lnombre>funcion
+l nom#re de la (unci-n a llamar; De#e ser un pval de tipo .Z,R.NG cuyos miem#ros
(unctionZname;str;val y (unctionZname;str;len se encuentren de(inidos con valores apropiados; +l
nom#reZ(uncion es modi(icado por callZuserZ(unction>? 2 es convertido a minBsculas; i necesita
conservar los caracteres originalesA env)e una copia del nom#re de (unci-n en su lugar;
p5al Lret5al
@n apuntador a una estructura pvalA en la cual es guardado el valor de retorno de la (unci-n
invocada; La estructura de#e ser reservada previamente 2 call>user>function./ NO reserva memoria
por s) sola;
int conteo>param
+l nBmero de par*metros /ue son pasados a la (unci-n;
p5al LparamsXY
@na matriz de apuntadores a valores /ue ser*n pasados como argumentos a la (unci-nA el primer
argumento u#icado en la posici-n 3A el segundo en la posici-n 1A etc; La matriz es una matriz de
apuntadores a valores pvalX Los apuntadores son enviados tal cual a la (unci-nA lo /ue /uiere decir
/ue si la (unci-n modi(ica sus argumentosA los valores originales son modi(icados >pasados por
re(erencia?; i no desea esta clase de comportamientoA pase una copia en su lugar;
Meporte de Errores
Para reportar errores desde una (unci-n internaA de#e llamar a la (unci-n php7>error./; [sta reci#e
por lo menos dos par*metros 22 el primero es el nivel del errorA el segundo es la cadena con (ormato
para el mensa'e de error >como en un llamado est*ndar a printf./?A y cual/uier argumento
su#siguiente ser* usado como par*metro para la cadena de (ormato; Los niveles de error sonC
E_NOTICE
Las noticias no son desplegadas por de(ectoA e indican /ue el script encontr- algo /ue puede indicar
un errorA pero podr)a ocurrir tam#i<n en el curso normal de un script en e'ecuci-n; Por e'emploA al
tratar de acceder al valor de una varia#le /ue no ha sido de(inidaA o al llamar stat./ so#re un archivo
/ue no eFiste;
E_"ARNIN#
Las advertencias son desplegadas por de(ectoA pero no interrumpen la e'ecuci-n del script; [stas
indican un pro#lema /ue de#)a ser atrapado por el script antes de /ue el llamado (uera hecho; Por
e'emploA llamar ereg./ con una eFpresi-n regular inv*lida;
E_ERROR
Los errores son desplegados por de(ecto tam#i<nA y la e'ecuci-n del script es detenida despu<s de
/ue la (unci-n retorna; [stos indican errores de los /ue no puede realizarse una recuperaci-nA tales
como pro#lemas de reserva de memoria;
E_PARSE
Los errores de an*lisis sint*ctico de#en ser generados Bnicamente por el analizador sint*ctico; +l
c-digo es listado a/u) s-lo con el prop-sito de crear una re(erencia completa;
E_CORE_ERROR
+ste es como un E_ERRORA eFcepto /ue es generado por el nBcleo de P&P; Las (unciones no de#en
generar este tipo de error;
E_CORE_"ARNIN#
+ste es como un E_"ARNIN#A eFcepto /ue es generado por el nBcleo de P&P; Las (unciones no
de#en generar este tipo de error;
E_COMPILE_ERROR
+ste es como un E_ERRORA eFcepto /ue es generado por el Motor de cripting de Iend; Las
(unciones no de#en generar este tipo de error;
E_COMPILE_"ARNIN#
+ste es como un E_"ARNIN#A eFcepto /ue es generado por el Motor de cripting de Iend; Las
(unciones no de#en generar este tipo de error;
E_USER_ERROR
+ste es como un E_ERRORA eFcepto /ue es generado en c-digo P&P usando la (unci-n
trigger>error./; Las (unciones no de#en generar este tipo de error;
E_USER_"ARNIN#
+ste es como un E_"ARNIN#A eFcepto /ue es generado en c-digo P&P usando la (unci-n
trigger>error./; Las (unciones no de#en generar este tipo de error;
E_USER_NOTICE
+ste es como un E_NOTICEA eFcepto /ue es generado en c-digo P&P usando la (unci-n
trigger>error./; Las (unciones no de#en generar este tipo de error;
E_ALL
,odos los anteriores; @sando este nivel de errorZreporting le mostrar* todos los tipos de error;
Ap%ndice F. Jpciones de configuraci"n
:ista central de opciones de configuraci"n
A#a'o est* una lista parcial de opciones de con(iguraci-n usados por los scripts con#iEure de
P&P cuando se compila en am#ientes de tipo @N.J; La mayor)a de las opciones de con(iguraci-n
est*n listadas en su u#icaci-n apropiada en las p*ginas de re(erencia de la eFtensi-n y no a/u); Para
una lista actualizada de las opciones de con(iguraci-nA e'ecute .Aconfigure ((help en su directorio
origen de P&P despu<s de e'ecutar autoconf >vea tam#i<n el 5ap)tulo de .nstalaci-n?; ,am#i<n
puede interesarle leer la documentaci-n GN@ con(igure para mayor in(ormaci-n en otras opciones
de configure tales como ==pre968:+RE30F;
Nota- +stas son usadas unicamente en tiempo de compilaci-n; i desea alterar la
con(iguraci-n en tiempo de e'ecuci-n de P&PA por (avor vea el cap)tulo so#re
5on(iguraci-n en tiempo de e'ecuci-n;
Miscel*neo
5omportamiento P&P
ervidor
Jpciones de configuraci"n en PHP 8
Nota- +stas opciones son s-lo usadas en P&P 8A tal como P&P 8;1;3; Algunas est*n
disponi#les en versiones anteriores a P&P 8A aBn algunas en P&P 7A otras solo en P&P
8;1;3; i /uiere compilar una versi-n anteriorA muy pro#a#lemente algunas opciones no
estar*n disponi#les;
Jpciones Miscelneas
==ena1le=#e1uE
5ompilar con s)m#olos de rastreo de errores >de#ugging?;
==76th=la?out:TB+E
+sta#lece como los (icheros instalados ser*n presentados el tipo uno es de P&P >valor por
de(ecto? o GN@;
==76th=pear:D0R
.nstala P+AR en D.R >valor por de(ecto PR+F.JDli#Dphp?;
==76thout=pear
No instale P+AR;
==ena1le=s6Ech6l#
+sta#lece el propio mane'ador .G5&LD de P&P;
==#6sa1le=rpath
Desha#ilita pasar trayectorias de #Bs/ueda de li#rerias de tiempo de e'ecuci-n adicionales;
==ena1le=l61Ecc
&a#ilita eFpl)citamente el ligado con li#gcc;
==ena1le=php=streams
.ncluye streams P&P eFperimentales; fNo se use a menos /ue este pro#ando el c-digoa;
==76th=Dl61=#6r):D0R.
De(ina la localizaci-n del directorio de instalaci-n de zli#;
==ena1le=trans=s6#
&a#ilita la propagaci-n transparente del .D de sesi-n; $*lido s-lo para P&P 8;1;0 or in(erior;
A partir de P&P 8;0;3A la caracter)stica trans2id est* siempre disponi#le;
==76th=tsrm=pthrea#s
@sa threads de PO.J >valor por de(ecto?;
==ena1le=share#):+2-S.
5onstruye li#rer)as compartidas Pde(ault^yesQ;
==ena1le=stat6c):+2-S.
5onstruye li#rerias est*ticas Pde(ault^yesQ;
==ena1le=9ast=6nstall):+2-S.
Optimiza para una r*pida instalaci-n Pde(ault^yesQ;
==76th=Enu=l#
Asume /ue el compilador de 5 usa GN@ .d Pde(ault^noQ;
==#6sa1le=l61tool=loc>
+vita #lo/ueos >de#e romper compilaciones paralelas?;
==76th=p6c
.ntenta usar s-lo o#'etos P.5Dnon2P.5 Pde(ault^use #othQ;
==ena1le=memor?=l6m6t
5ompila con soporte de limite de memoria;
==#6sa1le=url=9open=7rapper
Desha#ilita empa/uetador (open /ue a#re @RLsA /ue permite accesar (icheros v)a &,,P o
F,P;
==ena1le=ers6on6nE
+Fporta s-lo los s)m#olos re/ueridos; $ea .N,ALL para m*s in(ormaci-n;
==76th=6msp):D0R.
.ncluye soporte .Mp >D.R es el directorio de inclusi-n .MPHs y el directorio de li#imsp;a?;
f-lo P&P7a;
==76th=mc>):D0R.
.ncluye soporte para 5y#ercash M5S; D.R es el directorio donde se construye cy#ercash mc"A
el directorio por de(ecto es DusrDsrcDmc"27;0;3;72linuFA para ayuda so#re esto vea en
eFtraDcy#erli#; f-lo P&P 7a;
==76th=mo#=#a:D0R
.ncluye soporte para DA$ atrav<s del modulo modZdav de ApacheA D.R es el directorio de
instalaci-n de modZdav >s-lo el modulo de Apache? f-lo en P&P 7a;
==ena1le=#e1uEEer
5ompila con (unciones remotas de rastreo de errores; f-lo en P&P 7a;
==ena1le=ers6on6nE
,oma venta'a del alcance y mane'o de versiones proveido por olaris 0;F y LinuF; f-lo en
P&P 7a;
Jpciones de PHP
==ena1le=ma6nta6ner=mo#e
&a#ilita las reglas y dependencias de Ma"eA aun/ue para el /ue /uiera instalar casualmente no
son Btiles > y a veces hasta pueden con(undir?;
==76th=con96E=96le=path:+,T!
+sta#lece la ruta a seguir para php.iniA el valor por de(ecto es DPR+F.JDli#;
==ena1le=sa9e=mo#e
A#ilita AF+ MOD+ por de(ecto;
==76th=e8ec=#6r):D0R.
olo permite eFecuta#les en D.R cuando AF+ MOD+ est* por de(ecto a DusrDlocalDphpD#in;
==ena1le=maE6c=@uotes
A#ilita MAG.5 O@O,+ por de(ecto;
==#6sa1le=short=taEs
Desa#ilita la (orma corta de la eti/ueta de inicio php `N por de(ecto;
opciones ,API
La siguiente lista contiene los AP.is >Serer ,ppl6cat6on +roEramm6nE 0nter9ace? disponi#les
para P&P;
==76th=aolserer:D0R
+speci(ica la ruta donde se de#e instalar AOLserver;
==76th=ap8s):304E.
5onstruye un modulo apache compartido; F.L+ es la ruta opcional a la herramienta apFs de
Apache; AsegBrese de espec)(icar la versi-n de aspF /ue est* instalada en su sistema y NO la
/ue est* en el archivo (uente de apache;
==76th=apache):D0R.
5onstruye un modulo est*tico de Apache; D.R es el directorio de ApacheA por de(ecto /
usr/local/apache;
==76th=mo#_charset
&a#ilita trans(erir las ta#las para modZcharset >Apache en Ruso?;
==76th=ap8s2):304E.
5onstruye un modulo compartido de Apache 0;3; F.L+ es la ruta opcional a la herramienta
apFs de Apache;
==76th=cau#6um:D0R
5onstruye P&P como un modulo Pi"e para ser usado con 5audium; D.R es el directorio del
servidor 5audiumA con el valor por de(ecto /usr/local/caudium/ser=er;
==#6sa1le=cl6
Disponi#le con P&P 8;7;3; Desha#ilita contruir la versi-n 5L. de P&P >esto (uerza 22Eithout2
pear?; M*s in(ormaci-n est* disponi#le en la secci-n acerca de @sar P&P desde la l)nea de
comandos;
==ena1le=em1e#):TB+E.
&a#ilita construir la li#rer)a em#e#ida AP.; ,%P+ es share# o stat6cA y su valor por de(ecto
es share#; Disponi#le con P&P 8;7;3;
==76th=9http#):D0R.
5osntruye el modulo (httpd; D.R es el directorio de los (uentes de (httpdA su valor por de(ecto
es /usr/local/src/#httpd; %a no est* disponi#le a partir de P&P 8;7;3;
==76th=6sap6:D0R
5onstruye P&P como un modulo .AP. para ser usado con Ieus;
==76th=nsap6:D0R
+spec)(ica la ruta al servidor Ee# instalado NetscapeDiPlanetDunON+;
==76th=phttp#:D0R
in in(ormaci-n;
==76th=p6R7e1:D0R
5osntruye P&P como un modulo para ser usado con Pi7Le#;
==76th=ro8en:D0R
5osntruye P&P como un modulo Pi"e; D.R es el directorio #ase de RoFenA normalmente /
usr/local/roxen/ser=er;
==ena1le=ro8en=Dts
5onstruye el modulo RoFen usando =Iend ,hread a(ety=;
==76th=serlet):D0R.
.ncluye soporte para servlet; D.R es el directorio de instalaci-n #ase para !DS; +ste AP.
re/uiere /ue la eFtensi-n de 'ava sea construida como un dl compartido;
==76th=thttp#:SRCD0R
5onstruye P&P como un modulo thttpd;
==76th=tu8:MODU4ED0R
5onstruye P&P como un modulo ,@J >s-lo LinuF?;
==76th=7e1Uames:SRCD0R
5onstruye P&P como un modulo Le#!ames >s-lo R.5 O?;
==#6sa1le=cE6
Desha#ilita la construcci-n de la versi-n 5G. de P&P; Disponi#le con P&P 8;7;3;
==ena1le=9orce=cE6=re#6rect
&a#ilita el che/ueo de seguridad para redirecciones internas del servidor; De#e usar este si
est* e'ecutando la versi-n 5G. con Apache;
==ena1le=#6scar#=path
i est* ha#ilitadoA el #inario 5G. de P&P puede se puesto (uera del ar#ol Ee# en (orma segura
y la gente no ser* capaz de evitar la seguridad de .htaccess
==76th=9astcE6
5osntruye P&P como una aplicaci-n Fast5G.; %a no est* disponi#le desde P&P 8;7;3A en
lugar de esto usted de#e usar ==ena1le=9astcE6;
==ena1le=9astcE6
i est* ha#ilitadoA el modulo 5G. ser* construido con soporte para Fast5G. tam#i<n;
Disponi#le desde P&P 8;7;3;
==#6sa1le=path=6n9o=chec>
i no est* ha#ilitadoA (allar*n las rutas tales como /in#o.php/test?a>b; Disponi#le
desde P&P 8;7;3; Para mcdeos in(ormaci-n vea el Manual de Apache;
Ap%ndice H. Kirecti5as de php.ini
:ista de directi5as de php.ini
+sta lista incluye las directivas de php.ini /ue puede de(inir para con(igurar su instalaci-n de
P&P;
Tabla H(!. Jpciones de configuraci"n
Nombre Predeterminado Modificable Cambios
alloEZcallZtimeZpassZre
(erence
=1=
P&PZ.N.ZP+
RD.R
P&PZ.N.ZALL en P&P `^
8;3;3;
alloEZurlZ(open =1=
P&PZ.N.Z%
,+M
P&PZ.N.ZALL en P&P `^
8;7;8; Disponi#le a partir de
P&P 8;3;8;
alEaysZpopulateZraEZp
ostZdata
=3=
P&PZ.N.ZP+
RD.R
P&PZ.N.ZALL en P&P `^
8;0;7; Disponi#le a partir de
P&P 8;1;3;
apc;cacheZ#yZde(ault =1=
P&PZ.N.Z%
,+M

apc;ena#led =1=
P&PZ.N.Z%
,+M

apc;(ilters ==
P&PZ.N.Z%
,+M

apc;gcZttl =7K33=
P&PZ.N.Z%
,+M

apc;mmapZ(ileZmas" N@LL
P&PZ.N.Z%
,+M

apc;numZ(ilesZhint =1333=
P&PZ.N.Z%
,+M

apc;optimization =3=
P&PZ.N.Z%
,+M

apc;shmZsegments =1=
P&PZ.N.Z%
,+M

apc;shmZsize =73=
P&PZ.N.Z%
,+M

apc;slamZde(ense =3=
P&PZ.N.Z%
,+M

apc;ttl =3=
P&PZ.N.Z%
,+M

apc;userZentriesZhint =133=
P&PZ.N.Z%
,+M

apc;userZttl =3=
P&PZ.N.Z%
,+M

Nombre Predeterminado Modificable Cambios
apd;dumpdir N@LL
P&PZ.N.ZAL
L

apd;statementZtracing =3=
P&PZ.N.ZAL
L

argZseparator;input =i=
P&PZ.N.ZP+
RD.R
Disponi#le a partir de P&P
8;3;4;
argZseparator;output =i=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;4;
aspZtags =3=
P&PZ.N.ZP+
RD.R
P&PZ.N.ZALL en P&P `^
8;3;3;
assert;active =1=
P&PZ.N.ZAL
L

assert;#ail =3=
P&PZ.N.ZAL
L

assert;call#ac" N@LL
P&PZ.N.ZAL
L

assert;/uietZeval =3=
P&PZ.N.ZAL
L

assert;Earning =1=
P&PZ.N.ZAL
L

autoZappendZ(ile N@LL
P&PZ.N.ZP+
RD.R
P&PZ.N.ZALL en P&P `^
8;0;7;
autoZdetectZlineZending
s
=3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
autoZglo#alsZ'it =1=
P&PZ.N.ZP+
RD.R
Disponi#le a partir de P&P
4;3;3;
autoZprependZ(ile N@LL
P&PZ.N.ZP+
RD.R
P&PZ.N.ZALL en P&P `^
8;0;7;
#cmath;scale =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
#lenc;"eyZ(ile =DusrDlocalDetcD#lenc"eys=
P&PZ.N.ZAL
L

#roEscap N@LL
P&PZ.N.Z%
,+M

childZterminate =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;4;
com;alloEZdcom =3=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;4;
com;autoregisterZcasese
nsitive
=1=
P&PZ.N.ZAL
L
P&PZ.N.Z%,+M en
P&P 8; Disponi#le a partir
de P&P 8;1;3;
com;autoregisterZtypeli# =3=
P&PZ.N.ZAL
L
P&PZ.N.Z%,+M en
P&P 8; Disponi#le a partir
de P&P 8;1;3;
Nombre Predeterminado Modificable Cambios
com;autoregisterZver#os
e
=3=
P&PZ.N.ZAL
L
P&PZ.N.Z%,+M en
P&P 8; Disponi#le a partir
de P&P 8;1;3;
com;codeZpage ==
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
com;typeli#Z(ile ==
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;4;
crac";de(aultZdictionary N@LL
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;4;
da((odild#;de(aultZhost =localhost=
P&PZ.N.ZAL
L

da((odild#;de(aultZpass
Eord
=da((odil=
P&PZ.N.ZAL
L

da((odild#;de(aultZsoc"e
t
N@LL
P&PZ.N.ZAL
L

da((odild#;de(aultZuser =DAFFOD.L=
P&PZ.N.ZAL
L

da((odild#;port =784K=
P&PZ.N.ZAL
L

date;de(aultZlatitude =71;:KK:=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
date;de(aultZlongitude =74;0777=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
date;sunriseZzenith =93;M7=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
date;sunsetZzenith =93;M7=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
d#a;de(aultZhandler ==
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;7;
d#F;colnamesZcase =unchanged=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;7;3;
de(aultZcharset ==
P&PZ.N.ZAL
L

de(aultZmimetype =teFtDhtml=
P&PZ.N.ZAL
L

de(aultZsoc"etZtimeout =K3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
de(ineZsyslogZvaria#les =3=
P&PZ.N.ZAL
L

disa#leZclasses ==
olo en
php.ini
Disponi#le a partir de P&P
8;7;0;
disa#leZ(unctions ==
olo en
php.ini
Disponi#le a partir de P&P
8;3;1;
Nombre Predeterminado Modificable Cambios
displayZerrors =1=
P&PZ.N.ZAL
L

displayZstartupZerrors =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;7;
docre(ZeFt ==
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;0;
docre(Zroot ==
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
docZroot N@LL
P&PZ.N.Z%
,+M

ena#leZdl =1=
P&PZ.N.Z%
,+M

engine =1=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;4;
errorZappendZstring N@LL
P&PZ.N.ZAL
L

errorZlog N@LL
P&PZ.N.ZAL
L

errorZprependZstring N@LL
P&PZ.N.ZAL
L

errorZreporting N@LL
P&PZ.N.ZAL
L

eFi(;decodeZ'isZintel =!.=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
eFi(;decodeZ'isZmotorol
a
=!.=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
eFi(;decodeZunicodeZint
el
=@520L+=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
eFi(;decodeZunicodeZmo
torola
=@520B+=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
eFi(;encodeZ'is ==
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
eFi(;encodeZunicode =.O2MM49214=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
eFposeZphp =1=
olo en
php.ini

eFtensionZdir =DpathDtoDphp=
P&PZ.N.Z%
,+M

(#s/l;alloEZpersistent =1=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;0;3;
(#s/l;autocommit =1=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;K;
(#s/l;#atchsize =1333=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
42cvs;
Nombre Predeterminado Modificable Cambios
(#s/l;de(aultZdata#ase ==
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;K;
(#s/l;de(aultZdata#aseZp
assEord
==
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;K;
(#s/l;de(aultZhost N@LL
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;K;
(#s/l;de(aultZpassEord ==
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;K;
(#s/l;de(aultZuser =Z%,+M=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;K;
(#s/l;generateZEarnings =3=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;K;
(#s/l;maFZconnections =10M=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;K;
(#s/l;maFZlin"s =10M=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;K;
(#s/l;maFZpersistent =21=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;K;
(#s/l;maFZresults =10M=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;K;
(ileZuploads =1=
P&PZ.N.Z%
,+M
P&PZ.N.ZALL en P&P `^
8;0;7; Disponi#le a partir de
P&P 8;3;7;
highlight;#g =nFFFFFF=
P&PZ.N.ZAL
L

highlight;comment =nFFM333=
P&PZ.N.ZAL
L

highlight;de(ault =n3333BB=
P&PZ.N.ZAL
L

highlight;html =n333333=
P&PZ.N.ZAL
L

highlight;"eyEord =n33::33=
P&PZ.N.ZAL
L

highlight;string =nDD3333=
P&PZ.N.ZAL
L

htmlZerrors =1=
P&PZ.N.ZAL
L
P&PZ.N.Z%,+M en
P&P `^ 8;0;7; Disponi#le a
partir de P&P 8;3;0;
hyperEave;alloEZpersist
ent
=3=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;7;0;
hyperEave;de(aultZport =81M=
P&PZ.N.ZAL
L

i#ase;alloEZpersistent =1=
P&PZ.N.Z%
,+M

Nombre Predeterminado Modificable Cambios
i#ase;date(ormat =b%2bm2bd=
P&PZ.N.ZAL
L

i#ase;de(aultZcharset N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
i#ase;de(aultZd# N@LL
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
4;3;3;
i#ase;de(aultZpassEord N@LL
P&PZ.N.ZAL
L

i#ase;de(aultZuser N@LL
P&PZ.N.ZAL
L

i#ase;maFZlin"s =21=
P&PZ.N.Z%
,+M

i#ase;maFZpersistent =21=
P&PZ.N.Z%
,+M

i#ase;time(ormat =b&CbMCb=
P&PZ.N.ZAL
L

i#ase;timestamp(ormat
=b%2bm2bd b&CbMCb
=
P&PZ.N.ZAL
L

iconv;inputZencoding =.O2MM4921=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;4;
iconv;internalZencoding =.O2MM4921=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;4;
iconv;outputZencoding =.O2MM4921=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;4;
i(F;alloEZpersistent =1=
P&PZ.N.Z%
,+M

i(F;#lo#in(ile =1=
P&PZ.N.ZAL
L

i(F;#yteasvarchar =3=
P&PZ.N.ZAL
L

i(F;charasvarchar =3=
P&PZ.N.ZAL
L

i(F;de(aultZhost N@LL
P&PZ.N.Z%
,+M

i(F;de(aultZpassEord N@LL
P&PZ.N.Z%
,+M

i(F;de(aultZuser N@LL
P&PZ.N.Z%
,+M

i(F;maFZlin"s =21=
P&PZ.N.Z%
,+M

i(F;maFZpersistent =21=
P&PZ.N.Z%
,+M

i(F;null(ormat =3=
P&PZ.N.ZAL
L

Nombre Predeterminado Modificable Cambios
i(F;teFtasvarchar =3=
P&PZ.N.ZAL
L

ignoreZrepeatedZerrors =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
ignoreZrepeatedZsource =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
ignoreZuserZa#ort =3=
P&PZ.N.ZAL
L

implicitZ(lush =3=
P&PZ.N.ZAL
L
P&PZ.N.ZP+RD.R en P&P
`^ 8;0;7;
includeZpath =;XDpathDtoDphpDpear=
P&PZ.N.ZAL
L

ingres;alloEZpersistent =1=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;0;
ingres;de(aultZdata#ase N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;0;
ingres;de(aultZpassEord N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;0;
ingres;de(aultZuser N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;0;
ingres;maFZlin"s =21=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;0;
ingres;maFZpersistent =21=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;0;
ircg;controlZuser =no#ody=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
ircg;"eepZaliveZinterval =K3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
ircg;maFZ(ormatZmessag
eZsets
=10=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
ircg;sharedZmemZsize =K333333=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
ircg;Eor"Zdir =DtmpDircg=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
lastZmodi(ied =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;4;
ldap;maFZlin"s =21=
P&PZ.N.Z%
,+M

logZerrors =3=
P&PZ.N.ZAL
L

logZerrorsZmaFZlen =1308=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
magicZ/uotesZgpc =1=
P&PZ.N.ZP+
RD.R
P&PZ.N.ZALL en P&P `^
8;0;7;
Nombre Predeterminado Modificable Cambios
magicZ/uotesZruntime =3=
P&PZ.N.ZAL
L

magicZ/uotesZsy#ase =3=
P&PZ.N.ZAL
L

mail;(orceZeFtraZparame
ters
N@LL
P&PZ.N.ZP+
RD.R
Disponi#le a partir de P&P
4;3;3;
mailparse;de(Zcharset =us2ascii=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;1;3;
maFd#;de(aultZd# N@LL
P&PZ.N.ZAL
L

maFd#;de(aultZhost N@LL
P&PZ.N.ZAL
L

maFd#;de(aultZpE N@LL
P&PZ.N.ZAL
L

maFd#;de(aultZuser N@LL
P&PZ.N.ZAL
L

maFd#;longZreadlen =033=
P&PZ.N.ZAL
L

maFZeFecutionZtime =73=
P&PZ.N.ZAL
L

maFZinputZtime =21=
P&PZ.N.ZP+
RD.R
Disponi#le a partir de P&P
8;7;3;
m#string;detectZorder N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;K;
m#string;encodingZtrans
lation
=3=
P&PZ.N.ZP+
RD.R
Disponi#le a partir de P&P
8;7;3;
m#string;(uncZoverload =3=
P&PZ.N.ZP+
RD.R
P&PZ.N.Z%,+M en
P&P `^ 8;0;7; Disponi#le a
partir de P&P 8;0;3;
m#string;httpZinput =pass=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;K;
m#string;httpZoutput =pass=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;K;
m#string;internalZencodi
ng
N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;K;
m#string;language =neutral=
P&PZ.N.ZP+
RD.R
Disponi#le a partir de P&P
8;7;3;
m#string;scriptZencodin
g
N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
m#string;su#stituteZchar
acter
N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;K;
mcrypt;algorithmsZdir N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;0;
Nombre Predeterminado Modificable Cambios
mcrypt;modesZdir N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;0;
memoryZlimit =MM=
P&PZ.N.ZAL
L

mimeZmagic;de#ug =3=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
4;3;3;
mimeZmagic;magic(ile =DpathDtoDphpDmagic;mime=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;7;3;
mss/l;alloEZpersistent =1=
P&PZ.N.Z%
,+M

mss/l;#atchsize =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;8;
mss/l;compata#ilityZmo
de
=3=
P&PZ.N.ZAL
L

mss/l;connectZtimeout =4=
P&PZ.N.ZAL
L

mss/l;datetimeconvert =1=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;0;3;
mss/l;maFZlin"s =21=
P&PZ.N.Z%
,+M

mss/l;maFZpersistent =21=
P&PZ.N.Z%
,+M

mss/l;maFZprocs =04=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
mss/l;minZerrorZseverit
y
=13=
P&PZ.N.ZAL
L

mss/l;minZmessageZsev
erity
=13=
P&PZ.N.ZAL
L

mss/l;secureZconnection =3=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;7;3;
mss/l;teFtlimit =21=
P&PZ.N.ZAL
L

mss/l;teFtsize =21=
P&PZ.N.ZAL
L

mss/l;timeout =K3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;1;3;
mys/l;alloEZpersistent =1=
P&PZ.N.Z%
,+M

mys/l;connectZtimeout =K3=
P&PZ.N.ZAL
L
P&PZ.N.Z%,+M en
P&P `^ 8;7;0; Disponi#le a
partir de P&P 8;7;3;
mys/l;de(aultZhost N@LL
P&PZ.N.ZAL
L

Nombre Predeterminado Modificable Cambios
mys/l;de(aultZpassEord N@LL
P&PZ.N.ZAL
L

mys/l;de(aultZport N@LL
P&PZ.N.ZAL
L

mys/l;de(aultZsoc"et N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;1;
mys/l;de(aultZuser N@LL
P&PZ.N.ZAL
L

mys/l;maFZlin"s =21=
P&PZ.N.Z%
,+M

mys/l;maFZpersistent =21=
P&PZ.N.Z%
,+M

mys/l;traceZmode =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
mys/li;de(aultZhost N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
mys/li;de(aultZport =773K=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
mys/li;de(aultZpE N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
mys/li;de(aultZsoc"et N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
mys/li;de(aultZuser N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
mys/li;maFZlin"s =21=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
4;3;3;
mys/li;reconnect =3=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
4;3;3;
namazu;de#ugmode =3=
P&PZ.N.ZAL
L

namazu;lang N@LL
P&PZ.N.ZAL
L

namazu;loggingmode =3=
P&PZ.N.ZAL
L

namazu;sortmethod N@LL
P&PZ.N.ZAL
L

namazu;sortorder N@LL
P&PZ.N.ZAL
L

nsapi;readZtimeout =K3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;7;
od#c;alloEZpersistent =1=
P&PZ.N.Z%
,+M

od#c;chec"Zpersistent =1=
P&PZ.N.Z%
,+M

Nombre Predeterminado Modificable Cambios
od#c;de(ault#inmode =1=
P&PZ.N.ZAL
L

od#c;de(aultlrl =839K=
P&PZ.N.ZAL
L

od#c;de(aultZd# N@LL
P&PZ.N.ZAL
L

od#c;de(aultZpE N@LL
P&PZ.N.ZAL
L

od#c;de(aultZuser N@LL
P&PZ.N.ZAL
L

od#c;maFZlin"s =21=
P&PZ.N.Z%
,+M

od#c;maFZpersistent =21=
P&PZ.N.Z%
,+M

opendirectory;maFZre(s =21=
P&PZ.N.ZAL
L

opendirectory;separator =D=
P&PZ.N.ZAL
L

openZ#asedir N@LL
P&PZ.N.Z%
,+M

outputZ#u((ering =3=
P&PZ.N.ZP+
RD.R

outputZhandler N@LL
P&PZ.N.ZP+
RD.R
Disponi#le a partir de P&P
8;3;8;
pdo;glo#alZvalue =80=
P&PZ.N.ZAL
L

p(pro;de(aulthost
=test2
pay(loE;verisign;com=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;0;
p(pro;de(aultport =887=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;0;
p(pro;de(aulttimeout =73=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;0;
p(pro;proFyaddress ==
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;0;
p(pro;proFylogon ==
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;0;
p(pro;proFypassEord ==
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;0;
p(pro;proFyport ==
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;0;
pgs/l;alloEZpersistent =1=
P&PZ.N.Z%
,+M

pgs/l;autoZresetZpersiste
nt
=3=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;0;3;
Nombre Predeterminado Modificable Cambios
pgs/l;ignoreZnotice =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
pgs/l;logZnotice =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
pgs/l;maFZlin"s =21=
P&PZ.N.Z%
,+M

pgs/l;maFZpersistent =21=
P&PZ.N.Z%
,+M

postZmaFZsize =MM=
P&PZ.N.ZP+
RD.R
P&PZ.N.Z%,+M en
P&P `^ 8;0;7; Disponi#le a
partir de P&P 8;3;7;
precision =18=
P&PZ.N.ZAL
L

printer;de(aultZprinter ==
P&PZ.N.ZAL
L

realpathZcacheZsize =1KS=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
42cvs;
realpathZcacheZttl =103=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
42cvs;
registerZargcZargv =1=
P&PZ.N.ZP+
RD.R
P&PZ.N.ZALL en P&P `^
8;0;7;
registerZglo#als =3=
P&PZ.N.ZP+
RD.R
P&PZ.N.ZALL en P&P `^
8;0;7;
registerZlongZarrays =1=
P&PZ.N.ZP+
RD.R
Disponi#le a partir de P&P
4;3;3;
reportZmemlea"s =1=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
reportZzendZde#ug =1=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
sa(eZmode =3=
P&PZ.N.Z%
,+M

sa(eZmodeZalloEedZenv
Zvars
=P&PZ=
P&PZ.N.Z%
,+M

sa(eZmodeZeFecZdir ==
P&PZ.N.Z%
,+M

sa(eZmodeZgid =3=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;1;3;
sa(eZmodeZincludeZdir N@LL
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;1;3;
sa(eZmodeZprotectedZen
vZvars
=LDZL.BRAR%ZPA,&=
P&PZ.N.Z%
,+M

sendmailZ(rom N@LL
P&PZ.N.ZAL
L

Nombre Predeterminado Modificable Cambios
sendmailZpath N@LL
P&PZ.N.Z%
,+M

serializeZprecision =133=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;0;
session;autoZstart =3=
P&PZ.N.ZAL
L

session;#ugZcompatZ80 =1=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
session;#ugZcompatZEar
n
=1=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
session;cacheZeFpire =1M3=
P&PZ.N.ZAL
L

session;cacheZlimiter =nocache=
P&PZ.N.ZAL
L

session;coo"ieZdomain ==
P&PZ.N.ZAL
L

session;coo"ieZli(etime =3=
P&PZ.N.ZAL
L

session;coo"ieZpath =D=
P&PZ.N.ZAL
L

session;coo"ieZsecure ==
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;8;
session;entropyZ(ile ==
P&PZ.N.ZAL
L

session;entropyZlength =3=
P&PZ.N.ZAL
L

session;gcZdivisor =133=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;0;
session;gcZmaFli(etime =1883=
P&PZ.N.ZAL
L

session;gcZpro#a#ility =1=
P&PZ.N.ZAL
L

session;hashZ#itsZperZc
haracter
=8=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
session;hashZ(unction =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
session;name =P&P+.D=
P&PZ.N.ZAL
L

session;re(ererZchec" ==
P&PZ.N.ZAL
L

session;saveZhandler =(iles=
P&PZ.N.ZAL
L

session;saveZpath ==
P&PZ.N.ZAL
L

Nombre Predeterminado Modificable Cambios
session;serializeZhandler =php=
P&PZ.N.ZAL
L

session;useZcoo"ies =1=
P&PZ.N.ZAL
L

session;useZonlyZcoo"ie
s
=3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
session;useZtransZsid =3=
P&PZ.N.ZAL
L
P&PZ.N.ZALL en P&P `^
8;0;7; P&PZ.N.ZP+RD.R
en P&P `^ 82cvs;
Disponi#le a partir de P&P
8;3;7;
sessionZpgs/l;createZta#
le
=1=
P&PZ.N.Z%
,+M

sessionZpgs/l;d#
=host^localhost
d#name^phpZsession
user^no#ody=
P&PZ.N.Z%
,+M

sessionZpgs/l;disa#le =3=
P&PZ.N.Z%
,+M

sessionZpgs/l;(ailoverZ
mode
=3=
P&PZ.N.Z%
,+M

sessionZpgs/l;gcZinterva
l
=7K33=
P&PZ.N.Z%
,+M

sessionZpgs/l;"eepZeFpi
red
=3=
P&PZ.N.Z%
,+M

sessionZpgs/l;semZ(ileZ
name
=DtmpDphpZsessionZpgs/l=
P&PZ.N.Z%
,+M

sessionZpgs/l;serializa#l
e
=3=
P&PZ.N.Z%
,+M

sessionZpgs/l;shortZcirc
uit
=3=
P&PZ.N.Z%
,+M

sessionZpgs/l;useZappZv
ars
=3=
P&PZ.N.Z%
,+M

sessionZpgs/l;vacuumZi
nterval
=01K33=
P&PZ.N.Z%
,+M

shortZopenZtag =1=
P&PZ.N.ZP+
RD.R
P&PZ.N.ZALL en P&P `^
8;3;3;
simpleZcvs;authMethod =3=
P&PZ.N.ZAL
L

simpleZcvs;compression
Level
=3=
P&PZ.N.ZAL
L

simpleZcvs;cvsRoot =3=
P&PZ.N.ZAL
L

simpleZcvs;host =3=
P&PZ.N.ZAL
L

Nombre Predeterminado Modificable Cambios
simpleZcvs;moduleNam
e
=3=
P&PZ.N.ZAL
L

simpleZcvs;userName =3=
P&PZ.N.ZAL
L

simpleZcvs;Eor"ingDir =3=
P&PZ.N.ZAL
L

M,P =localhost=
P&PZ.N.ZAL
L

smtpZport =04=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
soap;EsdlZcacheZdir =Dtmp=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
soap;EsdlZcacheZena#le
d
=1=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
soap;EsdlZcacheZttl =MK833=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
s/l;sa(eZmode =3=
P&PZ.N.Z%
,+M

s/lite;assocZcase =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
sy#ct;alloEZpersistent =1=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;8;
sy#ct;deadloc"ZretryZco
unt
=3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
sy#ct;hostname N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;8;
sy#ct;loginZtimeout =21=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;4;
sy#ct;maFZlin"s =21=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;8;
sy#ct;maFZpersistent =21=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;3;8;
sy#ct;minZclientZseverit
y
=13=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;8;
sy#ct;minZserverZseverit
y
=13=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;8;
tidy;cleanZoutput =3=
P&PZ.N.ZP+
RD.R
Disponi#le a partir de P&P
4;3;3;
tidy;de(aultZcon(ig ==
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
4;3;3;
trac"Zerrors =3=
P&PZ.N.ZAL
L

unserializeZcall#ac"Z(un
c
N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;0;3;
Nombre Predeterminado Modificable Cambios
uploadZmaFZ(ilesize =0M=
P&PZ.N.ZP+
RD.R
P&PZ.N.ZALL en P&P `^
8;0;7;
uploadZtmpZdir N@LL
P&PZ.N.Z%
,+M

urlZreEriter;tags
=a^hre(Aarea^hre(A(rame^sr
cA(orm^A(ieldset^=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;8;
userZagent N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
userZdir N@LL
P&PZ.N.Z%
,+M

val"yrie;autoZvalidate =3=
P&PZ.N.ZAL
L

val"yrie;con(igZpath N@LL
P&PZ.N.ZAL
L

varia#lesZorder =+GP5=
P&PZ.N.ZAL
L

F#ithac" =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;4;
FmlrpcZerrors =3=
P&PZ.N.Z%
,+M
Disponi#le a partir de P&P
8;1;3;
FmlrpcZerrorZnum#er =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;1;3;
Fmms;path =DusrD#inDFmms=
P&PZ.N.ZAL
L

Fmms;session =3=
P&PZ.N.ZAL
L

y0"Zcompliance =1=
P&PZ.N.ZAL
L

yaz;"eepalive =103=
P&PZ.N.ZAL
L

yaz;logZ(ile N@LL
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
yaz;maFZlin"s =133=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
zend;ze1Zcompati#ilityZ
mode
=3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
4;3;3;
zli#;outputZcompression =3=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;3;4;
zli#;outputZcompression
Zlevel
=21=
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
zli#;outputZhandler ==
P&PZ.N.ZAL
L
Disponi#le a partir de P&P
8;7;3;
Tabla H(*. Kefinici"n de constantes PHP>INI>L
Constante Calor ,ignificado
P&PZ.N.Z@+R 1 La entrada puede de(inirse en scripts de usuario
P&PZ.N.ZP+RD.R 0
La entrada puede de(inirse en php.iniA .htaccess o
httpd.con#
P&PZ.N.Z%,+
M
8 La entrada puede de(inirse en php.ini o httpd.con#
P&PZ.N.ZALL : La entrada puede de(inirse en cual/uier parte
Kescripci"n de las directi5as de n4cleo en php.ini
+sta lista incluye las directivas de nBcleo en php.ini /ue puede de(inir para con(igurar su
instalaci-n de P&P; Las directivas gestionadas por eFtensiones son listadas en las p*ginas de
documentaci-n de las eFtensiones respectivamente; Por e'emploA puede encontrarse in(ormaci-n
so#re las directivas de sesiones en la p*gina de sesiones;
Jpciones Httpd
Tabla H(7. Jpciones Httpd
Nombre Predeterminado Modificable
asyncZsen
d
=3= P&PZ.N.ZALL
Jpciones del :engua'e
Tabla H(8. Jpciones del :engua'e y Configuraci"n Cariada
Nombre Predeterminado Modificable
shortZopenZtag On
P&PZ.N.Z%,+Ml
P&PZ.N.ZP+RD.R
aspZtags O((
P&PZ.N.Z%,+Ml
P&PZ.N.ZP+RD.R
precision =18= P&PZ.N.ZALL
y0"Zcompliance O(( P&PZ.N.ZALL
alloEZcallZtimeZpassZre(erenc
e
On
P&PZ.N.Z%,+Ml
P&PZ.N.ZP+RD.R
eFposeZphp On P&PZ.N.Z%,+M
zend;ze1Zcompati#ilityZmode O(( P&PZ.N.ZALL
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
short_open_taE boolean
.ndica si se permite el uso de la (orma corta ><? ?>? de la eti/ueta de apertura de P&P; i
desea usar P&P en con'unto con JMLA puede desha#ilitar esta opci-nA de modo /ue pueda
usar <?xml ?> en (orma directa; De otro modoA puede imprimir esta cadena con P&PA por
e'emploC <?php echo M<?xml =ersion>"6.2"M; ?>; AsimismoA si el par*metro
est* desha#ilitadoA de#e usar la (orma larga de la eti/ueta de apertura de P&P ><?php ?>?;
Nota- +sta directiva a(ecta tam#i<n la contracci-n <?>A la cual es id<ntica a <?
echo; +l uso de este ata'o re/uiere /ue shortZopenZtag se encuentre ha#ilitado;
asp_taEs boolean
&a#ilita el uso de eti/uetas `b b_ tipo2AP adem*s de las eti/uetas convencionales `Nphp N
_; +sto incluye el ata'o para imprimir valores de varia#le `b^ Yvalor b_; Para m*s
in(ormaci-nA vea +scapar desde &,ML;
Nota- +l soporte para eti/uetas tipo2AP (ue agregado en 7;3;8;
prec6s6on integer
+l nBmero de d)gitos signi(icativos desplegados en nBmeros de punto (lotante;
?2>_compl6ance boolean
O#ligar compati#ilidad con el aWo 0333 >causa pro#lemas con navegadores no2compati#les?
allo7_call_t6me_pass_re9erence boolean
.ndica si se permite la ha#ilidad de o#ligar /ue los argumentos sean pasados por re(erencia al
momento de e(ectuar llamados de (unci-n; +ste m<todo es considerado o#soleto y es posi#le
/ue no sea soportado en versiones (uturas de P&PDIend; +l m<todo recomendado de
especi(icar cu*les argumentos de#en ser pasados por re(erencia se encuentra en la declaraci-n
de (unciones; +s recomenda#le /ue proceda a desha#ilitar esta opci-n y asegurarse de /ue sus
scripts tra#a'en correctamente sin ellaA de modo /ue pueda estar seguro de /ue tra#a'ar*n con
versiones (uturas del lengua'e >reci#ir* una advertencia cada vez /ue use esta caracter)sticaA y
el argumento ser* pasado por valorA y no por re(erencia?;
Pasar argumentos por re(erencia al momento de llamar una (unci-n (ue declarado o#soleto por
razones de limpieza del c-digo; La (unci-n puede modi(icar su argumento de una (orma no
documentada si no se declara /ue el argumento es pasado por re(erencia; Para prevenir e(ectos
colateralesA es me'or especi(icar cu*les argumentos son pasados por re(erencia Bnicamente en
la declaraci-n de la (unci-n;
$ea tam#i<n las Re(erencias +Fplicadas;
e8pose_php boolean
Decide si P&P de#e eFponer el hecho de /ue est* instalado en el servidor >p;e'; agregando su
(irma en la ca#ecera del servidor Le#?; No constituye un riesgo de seguridad en ninguna
(ormaA pero hace posi#le determinar si usted usa P&P es su servidor o no;
Den#.De1_compat616l6t?_mo#e boolean
&a#ilita el modo de compati#ilidad con el Motor Iend 1 >P&P 8?; A(ecta el modo de clonarA
moldear y comparar o#'etos;
:mites de Mecursos
Tabla H(9. :mites de Mecursos
Nombre Predeterminado Modificable
memoryZlimi
t
=MM= P&PZ.N.ZALL
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
memor?_l6m6t integer
+ste valor de(ine la cantidad m*Fima de memoria en #ytes /ue un script puede reservar; +sto
ayuda a prevenir /ue scripts po#remente escritos terminen consumiendo toda la memoria
disponi#le en un servidor; Para usar esta directivaA es necesario ha#ilitarla en tiempo de
compilaci-n; De modo /ue la l)nea de llamado a con(igure de#e incluirC ==ena1le=memor?=
l6m6t; Note /ue es necesario de(inir su valor a 21 si no desea imponer un l)mite a su memoria;
A partir de P&P 8;7;0A y siempre /ue memoryZlimit se encuentre ha#ilitadoA la (unci-n de
P&P memory>get>usage./ estar* disponi#le;
5uando se usa un nBmero enteroA el valor del mismo es medido en #ytes; ,am#i<n se puede
usar la notaci-n reducida tal como se descri#e en esta FAO;
$ea tam#i<nC maFZeFecutionZtime;
Mane'o de Katos
Tabla H(<. Jpciones de Configuraci"n de Mane'o de Katos
Nombre Predeterminado Modificable
trac"Zvars =On= P&PZ.N.ZNN
argZseparator;output =i= P&PZ.N.ZALL
argZseparator;input =i=
P&PZ.N.Z%,+Ml
P&PZ.N.ZP+RD.R
varia#lesZorder =+GP5= P&PZ.N.ZALL
registerZglo#als =O((=
P&PZ.N.ZP+RD.Rl
P&PZ.N.Z%,+M
registerZargcZargv =On=
P&PZ.N.ZP+RD.Rl
P&PZ.N.Z%,+M
registerZlongZarrays =On=
P&PZ.N.ZP+RD.Rl
P&PZ.N.Z%,+M
postZmaFZsize =MM=
P&PZ.N.Z%,+Ml
P&PZ.N.ZP+RD.R
gpcZorder =GP5= P&PZ.N.ZALL
autoZprependZ(ile ==
P&PZ.N.Z%,+Ml
P&PZ.N.ZP+RD.R
Nombre Predeterminado Modificable
autoZappendZ(ile ==
P&PZ.N.Z%,+Ml
P&PZ.N.ZP+RD.R
de(aultZmimetype =teFtDhtml= P&PZ.N.ZALL
de(aultZcharset =iso2MM4921= P&PZ.N.ZALL
alEaysZpopulateZraEZpostZdat
a
=3=
P&PZ.N.Z%,+Ml
P&PZ.N.ZP+RD.R
alloEZEe#davZmethods =3=
P&PZ.N.Z%,+Ml
P&PZ.N.ZP+RD.R
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
trac>_ars boolean
i esta opci-n es ha#ilitadaA entonces las varia#les de +ntornoA G+,A PO,A 5oo"ies y
ervidor pueden encontrarse en las matrices asociativas glo#ales '_EN(A '_-ETA '_+OSTA
'_COO20EA y '_SER(ER;
Note /ue a partir de P&P 8;3;7A trac"Zvars se encuentra ha#ilitada siempre;
arE_separator.output string
+l separador usado en @RLs generadas por P&P para separar los argumentos;
arE_separator.6nput string
Lista de separadores usados por P&P para interpretar @RLs de entrada en varia#les;
Nota- f5ada caracter en esta directiva es considerado como separadora
ar6a1les_or#er string
+sta#lece el orden de procesamiento de varia#les +GP5 >+ntornoA G+,A PO,A 5oo"ieA
ervidor?; La con(iguraci-n predeterminada de esta directiva es =+GP5=; Al de(inir este
valor como =GP=A por e'emploA causar* /ue P&P ignore completamente las varia#les de
entornoA coo"ies y servidorA asi como /ue cual/uier varia#le del m<todo G+, sea so#rescrita
con una varia#le del m<todo PO, con el mismo nom#re;
$ea tam#i<n registerZglo#als;
reE6ster_Elo1als boolean
.ndica si las varia#les +GP5 >+ntornoA G+,A PO,A 5oo"ieA ervidor? de#en registrarse
como varia#les glo#ales o no;
A partir de P&P 8;0;3A esta directiva tiene el valor predeterminado o99;
Por (avor lea el cap)tulo de seguridad so#re el @so de registerZglo#als para m*s in(ormaci-n
al respecto;
Por (avor note /ue registerZglo#als no puede ser de(inido en tiempo de e'ecuci-n >ini>set./?;
in em#argoA puede usar .htaccess si su servidor hu<sped lo permite como se descri#e
anteriormente; @n e'emplo de entrada en .htaccessC php%#laE reEister%Elobals
o##;
Nota- +l valor registerZglo#als es a(ectado por la directiva varia#lesZorder;
reE6ster_arEc_arE boolean
Le dice a P&P si declarar las varia#les argv y argc >/ue contendr)an la in(ormaci-n de G+,?;
$ea tam#i<n la documentaci-n so#re la l)nea de comandos; AsimismoA esta directiva se
encuentra disponi#le desde P&P 8;3;3A y su valor siempre (ue =on= anteriormente;
reE6ster_lonE_arra?s boolean
Le dice a P&P si de#e registrar o no las varia#les predeterminadas largas tipo
'!TT+_/_(,RS; 5uando su valor es On >predeterminado?A las varia#les de P&P largas
prede(inidas como '!TT+_-ET_(,RS ser*n de(inidas; i no las usaA se recomienda
desha#litar esta opci-nA por razones de rendimiento; +n su lugarA use las matrices
superglo#alesA como '_-ET;
+sta directiva se encuentra disponi#le a partir de P&P 4;3;3;
post_ma8_s6De integer
De(ine el tamaWo m*Fimo permitido de datos enviados mediante el m<todo post; +ste
par*metro a(ecta tam#i<n la carga de archivos; Para cargar archivos grandesA este valor de#e
ser mayor /ue uploadZmaFZ(ilesize;
i el l)mite de memoria es ha#ilitado mediante su script con(igureA memoryZlimit a(ecta
tam#i<n la carga de archivos; +n generalA memoryZlimit de#er)a ser mayor /ue post_ma8_s6De;
5uando se usa un nBmero enteroA el valor del mismo es medido en #ytes; ,am#i<n se puede
usar la notaci-n reducida tal como se descri#e en esta FAO;
Epc_or#er string
De(ine el orden de procesamiento de varia#les G+,DPO,D5OOS.+; +l valor predeterminado
de esta directiva es =GP5=; Al de(inir este valor como =GP=A por e'emploA se causar* /ue P&P
ignore por completo las coo"ies y so#rescri#a cual/uier varia#les proveniente del m<todo
G+, con varia#les del m<todo PO, /ue tengan el mismo nom#re;
Nota- +sta opci-n no se encuentra disponi#le en P&P 8; @se varia#lesZorder en su
lugar;
auto_prepen#_96le string
+speci(ica el nom#re de un archivo /ue es interpretado autom*ticamente antes del archivo
principal; +l archivo es incluido como si (uera llamado con la (unci-n include./A de modo /ue
se usa el valor de includeZpath;
+l valor especial none desha#ilita el preprocesamiento autom*tico;
auto_appen#_96le string
+speci(ica el nom#re de un archivo /ue es interpretado autom*ticamente despu<s del archivo
principal; +l archivo es incluido como si (uera llamado con la (unci-n include./A as) /ue el
valor de includeZpath es usado;
+l valor especial none desha#ilita el procesamiento posterior autom*tico;
Nota- i el script es terminado con e+it./A el procesamionto posterior no occurir*;
#e9ault_m6met?pe string
#e9ault_charset string
A partir de 8;3#8A P&P siempre imprime de manera predeterminada una codi(icaci-n de
caracteres en la ca#ecera 5ontent2typeC; Para desha#ilitar el env)o del 'uego de caracteresA
simplemente de(ina este valor como vac)o;
al7a?s_populate_ra7_post_#ata boolean
Po#lar siempre la varia#le Y&,,PZRALZPO,ZDA,A;
allo7_7e1#a_metho#s boolean
Permitir el mane'o de peticiones Le#DA$ http al interior de scripts P&P >p;e'; PROPF.NDA
PROPPA,5&A MO$+A 5OP%A etc;?; +sta directiva no eFiste a la altura de P&P 8;7;0; i
desea o#tener los datos enviados desde tales peticionesA tiene /ue de(inir
alEaysZpopulateZraEZpostZdata tam#i<n;
$ea tam#i<nC magicZ/uotesZgpcA magicZ/uotesZruntimeA y magicZ/uotesZsy#ase;
Mutas y Kirectorios
Tabla H(=. Jpciones de Configuraci"n de Mutas y Kirectorios
Nombre Predeterminado Modificable
includeZpath P&PZ.N5L@D+ZPA,& P&PZ.N.ZALL
docZroot P&PZ.N5L@D+ZPA,& P&PZ.N.Z%,+M
userZdir N@LL P&PZ.N.Z%,+M
eFtensionZdir P&PZ+J,+N.ONZD.R P&PZ.N.Z%,+M
cgi;(iFZpathin(o =3= P&PZ.N.Z%,+M
cgi;(orceZredirect =1= P&PZ.N.Z%,+M
cgi;redirectZstatusZen
v
== P&PZ.N.Z%,+M
(astcgi;impersonate =3= P&PZ.N.Z%,+M
cgi;r(c0K1KZheaders =3= P&PZ.N.Z%,+M
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
6nclu#e_path string
+speci(ica una lista de directorios en donde las (unciones re?uire./A include./ y
fopen>3ith>path./ #uscan archivos; +l (ormato es como a/uel de la varia#le de entorno de
sistema +,T!C una lista de directorios separada con dos2puntos en @niF o punto2y2coma en
LindoEs;
E'emplo H(!. include>path en )ni+
include%path>".@/php/includes"
E'emplo H(*. include>path en 2indo3s
include%path>".;c@VphpVincludes"
Mediante el uso de . en la ruta de inclusi-n es posi#le de(inir inclusiones relativasA ya /ue su
valor se traduce como el directorio actual;
#oc_root string
+l =directorio ra)z= de P&P en el servidor; @sado solamente si su valor no es vac)o; i P&P es
con(igurado con sa(e modeA no se servir*n archivos por (uera de este directorio; i P&P no (ue
compilado con FOR5+ZR+D.R+5,A usted #e1er\a de(inir docZroot en caso de estar usando
P&P como 5G. #a'o cual/uier servidor Ee# >di(erente a ..?; La alternativa es usar el
par*metro de con(iguraci-n cgi;(orceZredirect descrito m*s adelante;
user_#6r string
+l nom#re #ase del directorio usado en un directorio de usuario para archivos P&PA por
e'emplo public%html;
e8tens6on_#6r string
+l directorio en donde P&P ha de #uscar por eFtensiones cargadas din*micamente; $ea
tam#i<nC ena#leZdlA y dl./;
e8tens6on string
5u*les eFtensiones de carga din*mica leer cuando P&P inicia;
cE6.968_path6n9o boolean
O(rece un soporte real de PA,&Z.NFODPA,&Z,RANLA,+D para 5G.; +l
comportamiento anterior de P&P era de(inir PA,&Z,RANLA,+D como
5R.P,ZF.L+NAM+A y no producir el valor PA,&Z.NFO; Para m*s in(ormaci-n so#re
PA,&Z.NFOA consulte las especi(icaciones so#re el est*ndar cgi; De(inir este par*metro como
1 causar* /ue el modo 5G. de P&P (i'e su ruta para /ue cumpla con la especi(icaci-n; @n
valor de cero causa /ue P&P se comporte como lo hac)a anteriormente; +l valor
predeterminado es cero; +s recomenda#le /ue arregle sus scripts para /ue usen
5R.P,ZF.L+NAM+ en lugar de PA,&Z,RANLA,+D;
cE6.9orce_re#6rect boolean
cgi;(orceZredirect es necesario para o(recer seguridad cuando P&P es e'ecutado como 5G.
#a'o la mayor)a de servidores Ee#; i no es de(inidoA P&P ha#ilita este par*metro por de(ecto;
+s posi#le desha#ilitarlo 1aUo su prop6o r6esEo;
Nota- @suarios de LindoEsC +s pos61le desha#ilitar esta opci-n para ..A de
hechoA es necesar6o hacerlo; Para lograr /ue Omni&,,PD o Jitami (uncionen es
necesar6o desha#ilitar este par*metro;
cE6.re#6rect_status_en string
i cgi;(orceZredirect se encuentra ha#ilitadoA y no est* usando servidores Ee# Apache o
Netscape >iPlanet?A pue#e /ue necesite de(inir un nom#re de varia#le de entorno /ue P&P use
para sa#er si est* #ien continuar con la e'ecuci-n;
Nota- De(inir esta varia#le pue#e causar pro#lemas de seguridadA aseEdrese #e
sa1er lo @ue hace pr6mero;
9astcE6.6mpersonate string
Fast5G. #a'o .. >en un O #asado en L.NN,? soporta la ha#ilidad de imitar to"ens de
seguridad del cliente /ue hace las peticiones; +sto permite /ue .. de(ina el conteFto de
seguridad #a'o el cual es e'ecutada la petici-n; modZ(astcgi #a'o apache no soporta esta
caracter)stica por el momento >37D1:D0330?; De(ina su valor como 1 si est* usando ..; u
valor predeterminado es cero;
cE6.r9c2X1X_hea#ers int
Le dice a P&P /u< tipo de ca#eceras usar cuando env)e los c-digos de respuesta &,,P; i su
valor es 3A P&P env)a una ca#ecera tatusC /ue es soportada por Apache y otros servidores
Ee#; 5uando esta opci-n tiene el valor de 1A P&P enviar* ca#eceras compati#les con el
documento RF5 0K1K; De'e su valor en 3 a menos /ue sepa lo /ue est* haciendo;
Carga de Archi5os
Tabla H(N. Jpciones de Configuraci"n de Carga de Archi5os
Nombre Predeterminado Modificable
(ileZuploads =1= P&PZ.N.Z%,+M
uploadZtmpZdir N@LL P&PZ.N.Z%,+M
uploadZmaFZ(ilesiz
e
=0M=
P&PZ.N.Z%,+Ml
P&PZ.N.ZP+RD.R
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
96le_uploa#s boolean
.ndica si se permite o no la carga de archivos &,,P; $ea tam#i<n las directivas
uploadZmaFZ(ilesizeA uploadZtmpZdirA y postZmaFZsize;
5uando se usa un nBmero enteroA el valor del mismo es medido en #ytes; ,am#i<n se puede
usar la notaci-n reducida tal como se descri#e en esta FAO;
uploa#_tmp_#6r string
+l directorio temporal usado para almacenar archivos cuando se realiza carga de archivos;
De#e tener permisos de escritura para el usuario #a'o el /ue P&P es e'ecutado; i no se
especi(icaA P&P usar* el valor predeterminado del sistema;
uploa#_ma8_96les6De integer
+l tamaWo m*Fimo de un archivo cargado;
5uando se usa un nBmero enteroA el valor del mismo es medido en #ytes; ,am#i<n se puede
usar la notaci-n reducida tal como se descri#e en esta FAO;
,$: Feneral
Tabla H(O. Jpciones Fenerales de Configuraci"n ,$:
Nombre Predeterminado Modificable
s/l;sa(eZmod
e
=3= P&PZ.N.Z%,+M
A continuaci-n se presenta una corta eFplicaci-n de las directivas de con(iguraci-n;
s@l.sa9e_mo#e boolean
Kirecti5as de Configuraci"n del Kepurador
Atenci"n
olo P&P 7 implementa un depurador predeterminadoA para m*s in(ormaci-n consulte Ap<ndice
+;
#e1uEEer.host string
Nom#re DN o direcci-n .P del host usado por el depurador;
#e1uEEer.port string
NBmero de puerto usado por el depurador;
#e1uEEer.ena1le# boolean
.ndica si el depurador se encuentra ha#ilitado;
Ap%ndice I. :ista de alias de funciones
A/ui teneis la lista de alias de (unciones; ,odos loas alias est*n listados a/ui; en general es una mala
idea usar aliasA ya /ue pueden ser modi(icados o renom#radosA por lo /ue tu c-digo no podra
utilizarse; +sta lista se provee para /ue /uien /uiera actualizar su c-digo antiguo a la sintaFis actual;
De todas manerasA algunas (unciones tienen dos nom#resA sin pre(erencia por uno u otro; >Por
e'emploA is>int./ y is>integer./ som v*lidas indistintamente?
+sta lista es consistente con P&P 8;3;K; Para o#tener una lista actualizada todos los diasA pasaros por
a/ui;
Tabla I(!. Alias
Alias ;unci"n principal E+tensi"n usada
Z gette+t./ GetteFt
add s3fmo5ie>add./ Ming >(lash?
add s3fsprite>add./ Ming >(lash?
addZroot dom+ml>add>root./ DOM JML
addaction s3fbutton>addAction./ Ming >(lash?
addcolor s3fdisplayitem>addColor./ Ming >(lash?
addentry s3fgradient>addEntry./ Ming >(lash?
add(ill s3fshape>addfill./ Ming >(lash?
addshape s3fbutton>add,hape./ Ming >(lash?
addstring s3fte+t>add,tring./ Ming >(lash?
addstring s3fte+tfield>add,tring./ Ming >(lash?
align s3fte+tfield>align./ Ming >(lash?
attri#utes dom+ml>attributes./ DOM JML
children dom+ml>children./ DOM JML
chop rtrim./ Base syntaF
close closedir./ Base syntaF
comZget com>propget./ 5OM
comZpropset com>propput./ 5OM
comZset com>propput./ 5OM
cvZadd cc5s>add./ 55$
cvZauth cc5s>auth./ 55$
cvZcommand cc5s>command./ 55$
cvZcount cc5s>count./ 55$
cvZdelete cc5s>delete./ 55$
cvZdone cc5s>done./ 55$
cvZinit cc5s>init./ 55$
cvZloo"up cc5s>looBup./ 55$
cvZneE cc5s>ne3./ 55$
cvZreport cc5s>report./ 55$
cvZreturn cc5s>return./ 55$
cvZreverse cc5s>re5erse./ 55$
cvZsale cc5s>sale./ 55$
cvZstatus cc5s>status./ 55$
cvZteFtvalue cc5s>te+t5alue./ 55$
cvZvoid cc5s>5oid./ 55$
die e+it./
Miscellaneous
(unctions
Alias ;unci"n principal E+tensi"n usada
dir getdir./ Base syntaF
dis"(reespace disB>free>space./ Filesystem
domFmlZgetattr dom+ml>get>attribute./ DOM JML
domFmlZsetattr dom+ml>set>attribute./ DOM JML
dou#leval float5al./ Base syntaF
draEarc s3fshape>dra3arc./ Ming >(lash?
draEcircle s3fshape>dra3circle./ Ming >(lash?
draEcu#ic s3fshape>dra3cubic./ Ming >(lash?
draEcu#icto s3fshape>dra3cubicto./ Ming >(lash?
draEcurve s3fshape>dra3cur5e./ Ming >(lash?
draEcurveto s3fshape>dra3cur5eto./ Ming >(lash?
draEglyph s3fshape>dra3glyph./ Ming >(lash?
draEline s3fshape>dra3line./ Ming >(lash?
draElineto s3fshape>dra3lineto./ Ming >(lash?
dtd dom+ml>intdtd./ DOM JML
dumpmem dom+ml>dumpmem./ DOM JML
(#s/l fbs?l>db>?uery./ FrontBase
(puts f3rite./ Base syntaF
getZattri#ute dom+ml>get>attribute./ DOM JML
getascent s3ffont>getAscent./ Ming >(lash?
getascent s3fte+t>getAscent./ Ming >(lash?
getattr dom+ml>get>attribute./ DOM JML
getdescent s3ffont>getKescent./ Ming >(lash?
getdescent s3fte+t>getKescent./ Ming >(lash?
getheight s3fbitmap>getHeight./ Ming >(lash?
getleading s3ffont>get:eading./ Ming >(lash?
getleading s3fte+t>get:eading./ Ming >(lash?
getshape1 s3fmorph>get,hape!./ Ming >(lash?
getshape0 s3fmorph>get,hape*./ Ming >(lash?
getEidth s3fbitmap>get2idth./ Ming >(lash?
getEidth s3ffont>get2idth./ Ming >(lash?
getEidth s3fte+t>get2idth./ Ming >(lash?
gzputs g63rite./ Ili#
i1MnZconvert mb>con5ert>encoding./ Multi2#ytes trings
i1MnZdiscoverZencoding mb>detect>encoding./ Multi2#ytes trings
i1MnZhttpZinput mb>http>input./ Multi2#ytes trings
i1MnZhttpZoutput mb>http>output./ Multi2#ytes trings
i1MnZinternalZencoding mb>internal>encoding./ Multi2#ytes trings
Alias ;unci"n principal E+tensi"n usada
i1MnZ'aZ'pZhantozen mb>con5ert>Bana./ Multi2#ytes trings
i1MnZmimeZheaderZdecode mb>decode>mimeheader./ Multi2#ytes trings
i1MnZmimeZheaderZencode mb>encode>mimeheader./ Multi2#ytes trings
imapZcreate imap>createmailbo+./ .MAP
imapZ(etchteFt imap>body./ .MAP
imapZgetmail#oFes imap>list>full./ .MAP
imapZgetsu#scri#ed imap>lsub>full./ .MAP
imapZheader imap>headerinfo./ .MAP
imapZlistmail#oF imap>list./ .MAP
imapZlistsu#scri#ed imap>lsub./ .MAP
imapZrename imap>renamemailbo+./ .MAP
imapZscan imap>listscan./ .MAP
imapZscanmail#oF imap>listscan./ .MAP
iniZalter ini>set./ Base syntaF
isZdou#le is>float./ Base syntaF
isZinteger is>int./ Base syntaF
isZlong is>int./ Base syntaF
isZreal is>float./ Base syntaF
isZEritea#le is>3ritable./ Base syntaF
'oin implode./ Base syntaF
la#el(rame s3fmo5ie>label;rame./ Ming >(lash?
la#el(rame s3fsprite>label;rame./ Ming >(lash?
lastZchild dom+ml>last>child./ DOM JML
lastchild dom+ml>last>child./ DOM JML
ldapZclose ldap>unbind./ LDAP
magicZ/uotesZruntime set>magic>?uotes>runtime./ Base syntaF
m#strcut mb>strcut./ Multi2#ytes trings
m#strlen mb>strlen./ Multi2#ytes trings
m#strpos mb>strpos./ Multi2#ytes trings
m#strrpos mb>strrpos./ Multi2#ytes trings
m#su#str mb>substr./ Multi2#ytes trings
mingZsetcu#icthreshold ming>setCubicThreshold./ Ming >(lash?
mingZsetscale ming>set,cale./ Ming >(lash?
move s3fdisplayitem>mo5e./ Ming >(lash?
movepen s3fshape>mo5epen./ Ming >(lash?
movepento s3fshape>mo5epento./ Ming >(lash?
moveto s3fdisplayitem>mo5eTo./ Ming >(lash?
moveto s3ffill>mo5eTo./ Ming >(lash?
Alias ;unci"n principal E+tensi"n usada
moveto s3fte+t>mo5eTo./ Ming >(lash?
ms/l ms?l>db>?uery./ mOL
ms/lZcreated# ms?l>create>db./ mOL
ms/lZd#name ms?l>result./ mOL
ms/lZdropd# ms?l>drop>db./ mOL
ms/lZ(ield(lags ms?l>field>flags./ mOL
ms/lZ(ieldlen ms?l>field>len./ mOL
ms/lZ(ieldname ms?l>field>name./ mOL
ms/lZ(ieldta#le ms?l>field>table./ mOL
ms/lZ(ieldtype ms?l>field>type./ mOL
ms/lZ(reeresult ms?l>free>result./ mOL
ms/lZlistd#s ms?l>list>dbs./ mOL
ms/lZlist(ields ms?l>list>fields./ mOL
ms/lZlistta#les ms?l>list>tables./ mOL
ms/lZnum(ields ms?l>num>fields./ mOL
ms/lZnumroEs ms?l>num>ro3s./ mOL
ms/lZregcase s?l>regcase./ mOL
ms/lZselectd# ms?l>select>db./ mOL
ms/lZta#lename ms?l>result./ mOL
mss/lZa((ectedZroEs sybase>affected>ro3s./ y#ase
mss/lZa((ectedZroEs sybase>affected>ro3s./ y#ase
mss/lZclose sybase>close./ y#ase
mss/lZclose sybase>close./ y#ase
mss/lZconnect sybase>connect./ y#ase
mss/lZconnect sybase>connect./ y#ase
mss/lZdataZsee" sybase>data>seeB./ y#ase
mss/lZdataZsee" sybase>data>seeB./ y#ase
mss/lZ(etchZarray sybase>fetch>array./ y#ase
mss/lZ(etchZarray sybase>fetch>array./ y#ase
mss/lZ(etchZ(ield sybase>fetch>field./ y#ase
mss/lZ(etchZ(ield sybase>fetch>field./ y#ase
mss/lZ(etchZo#'ect sybase>fetch>ob'ect./ y#ase
mss/lZ(etchZo#'ect sybase>fetch>ob'ect./ y#ase
mss/lZ(etchZroE sybase>fetch>ro3./ y#ase
mss/lZ(etchZroE sybase>fetch>ro3./ y#ase
mss/lZ(ieldZsee" sybase>field>seeB./ y#ase
mss/lZ(ieldZsee" sybase>field>seeB./ y#ase
mss/lZ(reeZresult sybase>free>result./ y#ase
Alias ;unci"n principal E+tensi"n usada
mss/lZ(reeZresult sybase>free>result./ y#ase
mss/lZgetZlastZmessage sybase>get>last>message./ y#ase
mss/lZgetZlastZmessage sybase>get>last>message./ y#ase
mss/lZminZclientZseverity sybase>min>client>se5erity./ y#ase
mss/lZminZerrorZseverity sybase>min>error>se5erity./ y#ase
mss/lZminZmessageZseverit
y
sybase>min>message>se5erity./ y#ase
mss/lZminZserverZseverity sybase>min>ser5er>se5erity./ y#ase
mss/lZnumZ(ields sybase>num>fields./ y#ase
mss/lZnumZ(ields sybase>num>fields./ y#ase
mss/lZnumZroEs sybase>num>ro3s./ y#ase
mss/lZnumZroEs sybase>num>ro3s./ y#ase
mss/lZpconnect sybase>pconnect./ y#ase
mss/lZpconnect sybase>pconnect./ y#ase
mss/lZ/uery sybase>?uery./ y#ase
mss/lZ/uery sybase>?uery./ y#ase
mss/lZresult sybase>result./ y#ase
mss/lZresult sybase>result./ y#ase
mss/lZselectZd# sybase>select>db./ y#ase
mss/lZselectZd# sybase>select>db./ y#ase
multcolor s3fdisplayitem>multColor./ Ming >(lash?
mys/l mys?l>db>?uery./ MyOL
mys/lZcreated# mys?l>create>db./ MyOL
mys/lZd#Zname mys?l>result./ MyOL
mys/lZd#name mys?l>result./ MyOL
mys/lZdropd# mys?l>drop>db./ MyOL
mys/lZ(ield(lags mys?l>field>flags./ MyOL
mys/lZ(ieldlen mys?l>field>len./ MyOL
mys/lZ(ieldname mys?l>field>name./ MyOL
mys/lZ(ieldta#le mys?l>field>table./ MyOL
mys/lZ(ieldtype mys?l>field>type./ MyOL
mys/lZ(reeresult mys?l>free>result./ MyOL
mys/lZlistd#s mys?l>list>dbs./ MyOL
mys/lZlist(ields mys?l>list>fields./ MyOL
mys/lZlistta#les mys?l>list>tables./ MyOL
mys/lZnum(ields mys?l>num>fields./ MyOL
mys/lZnumroEs mys?l>num>ro3s./ MyOL
mys/lZselectd# mys?l>select>db./ MyOL
Alias ;unci"n principal E+tensi"n usada
mys/lZta#lename mys?l>result./ MyOL
name dom+ml>attrname./ DOM JML
neEZchild dom+ml>ne3>child./ DOM JML
neEZFmldoc dom+ml>ne3>+mldoc./ DOM JML
neFt(rame s3fmo5ie>ne+t;rame./ Ming >(lash?
neFt(rame s3fsprite>ne+t;rame./ Ming >(lash?
node dom+ml>node./ DOM JML
ociMappend ocicollappend./ O5.M
ociMassign ocicollassign./ O5.M
ociMassignelem ocicollassignelem./ O5.M
ociMclose ocicloselob./ O5.M
ociM(ree ocifreecoll./ O5.M
ociM(ree ocifreedesc./ O5.M
ociMgetelem ocicollgetelem./ O5.M
ociMload ociloadlob./ O5.M
ociMmaF ocicollma+./ O5.M
ociMoci(reecursor ocifreestatement./ O5.M
ociMsave ocisa5elob./ O5.M
ociMsave(ile ocisa5elobfile./ O5.M
ociMsize ocicollsi6e./ O5.M
ociMtrim ocicolltrim./ O5.M
ociMEritetemporary oci3ritetemporarylob./ O5.M
ociMEriteto(ile oci3ritelobtofile./ O5.M
od#cZdo odbc>e+ec./ O5.M
od#cZ(ieldZprecision odbc>field>len./ O5.M
output s3fmo5ie>output./ Ming >(lash?
parent dom+ml>parent./ DOM JML
pd(ZaddZoutline pdf>add>booBmarB./ PDF
pgZclientencoding pg>client>encoding./ PostgreOL
pgZsetclientencoding pg>set>client>encoding./ PostgreOL
pos current./ Base syntaF
recode recode>string./ Recode
remove s3fmo5ie>remo5e./ Ming >(lash?
remove s3fsprite>remo5e./ Ming >(lash?
reEind re3inddir./ Base syntaF
root dom+ml>root./ DOM JML
rotate s3fdisplayitem>rotate./ Ming >(lash?
rotateto s3fdisplayitem>rotateTo./ Ming >(lash?
Alias ;unci"n principal E+tensi"n usada
rotateto s3ffill>rotateTo./ Ming >(lash?
save s3fmo5ie>sa5e./ Ming >(lash?
saveto(ile s3fmo5ie>sa5eTo;ile./ Ming >(lash?
scale s3fdisplayitem>scale./ Ming >(lash?
scaleto s3fdisplayitem>scaleTo./ Ming >(lash?
scaleto s3ffill>scaleTo./ Ming >(lash?
setZattri#ute dom+ml>set>attribute./ DOM JML
setZcontent dom+ml>set>content./ DOM JML
setaction s3fbutton>setAction./ Ming >(lash?
setattr dom+ml>set>attribute./ DOM JML
set#ac"ground s3fmo5ie>set1acBground./ Ming >(lash?
set#ounds s3fte+tfield>set1ounds./ Ming >(lash?
setcolor s3fte+t>setColor./ Ming >(lash?
setcolor s3fte+tfield>setColor./ Ming >(lash?
setdepth s3fdisplayitem>setKepth./ Ming >(lash?
setdimension s3fmo5ie>setKimension./ Ming >(lash?
setdoEn s3fbutton>setKo3n./ Ming >(lash?
set(ont s3fte+t>set;ont./ Ming >(lash?
set(ont s3fte+tfield>set;ont./ Ming >(lash?
set(rames s3fmo5ie>set;rames./ Ming >(lash?
set(rames s3fsprite>set;rames./ Ming >(lash?
setheight s3fte+t>setHeight./ Ming >(lash?
setheight s3fte+tfield>setHeight./ Ming >(lash?
sethit s3fbutton>setHit./ Ming >(lash?
setindentation s3fte+tfield>setIndentation./ Ming >(lash?
setle(t(ill s3fshape>setleftfill./ Ming >(lash?
setle(tmargin s3fte+tfield>set:eftMargin./ Ming >(lash?
setline s3fshape>setline./ Ming >(lash?
setlinespacing s3fte+tfield>set:ine,pacing./ Ming >(lash?
setmargins s3fte+tfield>setMargins./ Ming >(lash?
setmatriF s3fdisplayitem>setMatri+./ Ming >(lash?
setname s3fdisplayitem>setName./ Ming >(lash?
setname s3fte+tfield>setName./ Ming >(lash?
setover s3fbutton>setJ5er./ Ming >(lash?
setrate s3fmo5ie>setMate./ Ming >(lash?
setratio s3fdisplayitem>setMatio./ Ming >(lash?
setright(ill s3fshape>setrightfill./ Ming >(lash?
setrightmargin s3fte+tfield>setMightMargin./ Ming >(lash?
Alias ;unci"n principal E+tensi"n usada
setspacing s3fte+t>set,pacing./ Ming >(lash?
setup s3fbutton>set)p./ Ming >(lash?
shoEZsource highlight>file ./ Base syntaF
sizeo( count./ Base syntaF
s"eEF s3fdisplayitem>sBe3I./ Ming >(lash?
s"eEFto s3fdisplayitem>sBe3ITo./ Ming >(lash?
s"eEFto s3ffill>sBe3ITo./ Ming >(lash?
s"eEy s3fdisplayitem>sBe3@./ Ming >(lash?
s"eEyto s3fdisplayitem>sBe3@To./ Ming >(lash?
s"eEyto s3ffill>sBe3@To./ Ming >(lash?
snmpEal"oid snmpreal3alB./ NMP
strchr strstr./ Base syntaF
streammp7 s3fmo5ie>streamMp7./ Ming >(lash?
sE(action s3faction>init./ Ming >(lash?
sE(#itmap s3fbitmap>init./ Ming >(lash?
sE(#utton s3fbutton>init./ Ming >(lash?
sE((ill s3ffill>init./ Ming >(lash?
sE((ont s3ffont>init./ Ming >(lash?
sE(gradient s3fgradient>init./ Ming >(lash?
sE(morph s3fmorph>init./ Ming >(lash?
sE(movie s3fmo5ie>init./ Ming >(lash?
sE(shape s3fshape>init./ Ming >(lash?
sE(sprite s3fsprite>init./ Ming >(lash?
sE(teFt s3fte+t>init./ Ming >(lash?
sE(teFt(ield s3fte+tfield>init./ Ming >(lash?
unlin" dom+ml>unlinB>node./ DOM JML
FptrZneEZconteFt +path>ne3>conte+t./ DOM JML
Ap%ndice [. :ista de Palabras Meser5adas
+l siguiente es un listado de identi(icadores prede(inidos en P&P; Ninguno de los identi(icadores
listados a/u) de#e ser usado como identi(icador en alguno de sus scripts; +stas listas incluyen
pala#ras clave y nom#res de varia#leA constantes y clases prede(inidas; +stas listas no son ni
eFhaustivas ni completas;
:ista de Palabras Cla5e
+stas pala#ras tienen un signi(icado especial en P&P; Algunas de ellas representan cosas /ue lucen
como (uncionesA o algunas se ven como constantesA y as) sucesivamente22pero no lo sonA en
realidadC son construcciones del lengua'e; @sted no puede usar ninguna de las siguientes pala#ras
como constantesA nom#res de claseA nom#res de (unciones o m<todos; @sarlas como nom#res de
varia#les est* #ienA generalmenteA pero puede conducir a con(usiones;
Tabla [(!. Palabras Cla5e de PHP
and or For ZZF.L+ZZ
eFception >P&P
4?
ZZL.N+ZZ array./ as #rea" case
class const continue declare de(ault
die./ do echo./ else elsei(
empty./ enddeclare end(or end(oreach endi(
endsEitch endEhile e5al./ e+it./ eFtends
(or (oreach (unction glo#al i(
include./ include>once./ isset./ list./ neE
print./ re?uire./ re?uire>once./ return./ static
sEitch unset./ use var Ehile
ZZF@N5,.ONZ
Z
ZZ5LAZZ ZZM+,&ODZZ (inal >P&P 4?
phpZuserZ(ilter
>P&P 4?
inter(ace >P&P
4?
implements >P&P 4? eFtends
pu#lic >P&P
4?
private >P&P 4?
protected >P&P
4?
a#stract >P&P 4? clone >P&P 4? try >P&P 4? catch >P&P 4?
throE >P&P 4?
c(unction >P&P 8
Bnicamente?
oldZ(unction >P&P 8
Bnicamente?

Cariables Predefinidas
A partir de P&P 8;1;3A el m<todo pre(erido para recuperar varia#les eFternas es mediante las
superglo#ales mencionadas m*s adelante; Antes de este puntoA la gente reca)a en registerZglo#als o
las matrices largas prede(inidas en P&P >'!TT+_/_(,RS?; A partir de P&P 4;3;3A las matrices de
tipo =long= de varia#les prede(inidasA se pueden desactivar con la directiva registerZlongZarrays;
Cariables de ser5idor- $_S*/C*/
Nota- Aparecieron en 8;1;3; +n versiones anterioresA utilice '!TT+_SER(ER_(,RS;
'_SER(ER es una matriz /ue contiene in(ormaci-n tal como ca#ecerasA rutas y u#icaciones de
scripts; Las entradas de esta matriz son creadas por el servidor Ee#; No eFisten garant)as de /ue
cada servidor vaya a proveer alguno de estos valoresX puede /ue los servidores omitan algunosA o
provean otros /ue no se listan a/u); &echa esta aclaraci-nA un gran nBmero de estas varia#les hacen
parte de la especi(icaci-n 5G. 1;1A as) /ue puede esperar /ue sean de(inidas por el servidor;
+sta es una varia#le Hsuperglo#alHA o glo#al autom*tica; +sto simplemente /uiere decir /ue est*
disponi#le en todos los conteFtos a lo largo de un script; No necesita hacer global V>,EMCEMZ
para acceder a ella dentro de (unciones o m<todosA como lo hace con '!TT+_SER(ER_(,RS;
'!TT+_SER(ER_(,RS contiene la misma in(ormaci-n inicialA pero no es autoglo#al; >Note /ue
'!TT+_SER(ER_(,RS y '_SER(ER son varia#les di(erentes y /ue P&P las trata como tal?
i la directiva registerZglo#als est* de(inidaA entonces estas varia#les tam#i<n estar*n disponi#les en
el conteFto glo#al del scriptX esto /uiere decirA por separado de las matrices '_SER(ER y
'!TT+_SER(ER_(,RS; Para in(ormaci-n relacionadaA vea el cap)tulo de seguridad titulado @so de
Registros Glo#ales; +stas varia#les glo#ales individuales no son autoglo#ales;
@sted puede encontrar o no cual/uiera de los siguientes elementos en YZ+R$+R; Note /ue
algunos de <stosA si es /ue los hayA estar*n disponi#les >o tendr*n algBn signi(icado despu<s de todo?
si se e'ecuta P&P en la l)nea de comandos;
H+!+_SE43H
+l nom#re de archivo del script e'ecut*ndose actualmenteA relativo a la ra)z de documentos;
Por e'emploA '_SER(ER)<+!+_SE43<. en un script en la direcci-n
http@//example.com/test.php/#oo.bar ser)a /test.php/#oo.bar; La
constante ZZF.L+ZZ contiene la ruta completa y nom#re del archivo actual >es decirA incluido?;
i P&P est* siendo e'ecutado como un procesador de l)nea de comandosA esta varia#le
contiene el nom#re del script a partir de P&P 8;7;3; Anteriormente no esta#a disponi#le;
HarEH
Matriz de argumentos pasados al script; 5uando el script es e'ecutado en la l)nea de
comandesA <sta entrega acesso al estilo 5 a los par*metros de la l)nea de comandos; 5uando es
llamado mediante el m<todo G+,A <sta contendr* la cadena de consulta >/uery?;
HarEcH
5ontiene el nBmero de par*metros de l)nea de comandos pasados al script >si se e'ecuta en la
l)nea de comandos?;
H-,TEI,B_0NTER3,CEH
Ou< revisi-n de la especi(icaci-n 5G. est* usando el servidorX i;e; HC-0/1.1H;
HSER(ER_N,MEH
+l nom#re del servidor an(itri-n #a'o el /ue est* siendo e'ecutado el script actual; i el script
est* corriendo en un host virtualA <ste ser* el valor de(inido para tal host virtual;
HSER(ER_SO3TI,REH
5adena de identi(icaci-n del servidorA dada en las ca#eceras cuando se responde a peticiones;
HSER(ER_+ROTOCO4H
Nom#re y revisi-n del protocolo de in(ormaci-n mediante el cual (ue solicitada la p*ginaX es
decirA H!TT+/1.0HX
HRE5UEST_MET!ODH
5u*l m<todo de petici-n (ue usado para acceder a la p*ginaX es decirA H-ETHA H!E,DHA H+OSTHA
H+UTH;
HRE5UEST_T0MEH
La marca de tiempo del inicio de la petici-n; Disponi#le desde P&P 4;1;3;
H5UERB_STR0N-H
La cadena de consultaA si eFisteA mediante la cual se accedi- a la p*gina;
HDOCUMENT_ROOTH
+l directorio ra)z de documentos #a'o el /ue est* siendo e'ecutado el script actualA tal y como
se de(ine en el archivo de con(iguraci-n del servidor;
H!TT+_,CCE+TH
5ontenidos de la ca#ecera ,ccept: de la petici-n actualA si eFiste;
H!TT+_,CCE+T_C!,RSETH
5ontenidos de la ca#ecera ,ccept=Charset: de la petici-n actualA si eFiste; +'emploC H6so=PPSO=
1C/Cut9=PH;
H!TT+_,CCE+T_ENCOD0N-H
5ontenidos de la ca#ecera ,ccept=Enco#6nE: de la petici-n actualA si eFiste; +'emploC HED6pH;
H!TT+_,CCE+T_4,N-U,-EH
5ontenidos de la ca#ecera ,ccept=4anEuaEe: de la petici-n actualA si eFiste; +'emploC HenH;
H!TT+_CONNECT0ONH
5ontenidos de la ca#ecera Connect6on: de la petici-n actualA si eFiste; +'emploC H2eep=,l6eH;
H!TT+_!OSTH
5ontenidos de la ca#ecera !ost: de la petici-n actualA si eFiste;
H!TT+_RE3ERERH
La direcci-n de la p*gina >si la hay? la cual re(iri- al agente de usuario a la p*gina actual; +ste
valor es de(inido por el agente de usuario; No todos los agentes de usuario lo de(inenA y
algunos proveen la capacidad de modi(icar !TT+_RE3ERER como una caracter)stica del
so(tEare; +n resumenA no se puede con(iar realmente en este valor;
H!TT+_USER_,-ENTH
5ontenidos de la ca#ecera User=,Eent: de la petici-n actualA si eFiste; +sta es una cadena /ue
denota el agente de usuario /ue est* accediendo a la p*gina; @n e'emplo t)pico esC
"o0illa/1.5 )en/ 3X66; +; Oinux C.C.K i5JG9; +ntre otras cosasA puede
usar este valor con get>bro3ser./ para personalizar la salida de su p*gina a las capacidades
del agente de usuario;
HREMOTE_,DDRH
La direcci-n .P desde donde el usuario est* o#servado la p*gina actual;
HREMOTE_!OSTH
+l nom#re &ost desde donde el usuario est* viendo la p*gina actual; La consulta dns de vuelta
est* #asada en el valor REMOTE_,DDR del usuario;
Nota- u servidor Ee# de#e estar con(igurado para crear esta varia#le; Por
e'emploA en Apache necesitar* !ostname4oo>ups On dentro de httpd.con#
para /ue eFista; $ea tam#i<n gethostbyaddr./;
HREMOTE_+ORTH
+s puerto /ue est* siendo usado en la m*/uina del usuario para comunicarse con el servidor
Ee#;
HSCR0+T_304EN,MEH
La ruta a#soluta del nom#re del script siendo e'ecutado actualmente;
Nota- i un script es e'ecutado en el entorno 5L. usando una ruta relativaA tal
como archi=o.php o ../archi=o.phpA '_SER(ER
)<SCR0+T_304EN,ME<. contendr* la ruta relativa especi(icada por el usuario;
HSER(ER_,DM0NH
+l valor dado a la directiva +R$+RZADM.N >para Apache? en el archivo de con(iguraci-n
del servidor Ee#; i el script est* siendo e'ecutado en un host virtualA <ste ser* el valor
de(inido para ese host virtual;
HSER(ER_+ORTH
+l puerto en el e/uipo servidor /ue est* siendo usado por el servidor Ee# para comunicaci-n;
+n con(iguraciones predeterminadasA ese valor ser* HP0HX usando LA por e'emploA este valor
cam#iar* a cual/uiera /ue sea el puerto /ue est< de(inido para &,,P seguro;
HSER(ER_S0-N,TUREH
5adena /ue contiene la versi-n del servidor y el nom#re de host virtual /ue es agregado a las
p*ginas generadas por el servidorA si est* ha#ilitada esta (uncionalidad;
H+,T!_TR,NS4,TEDH
Ruta so#re el sistema de archivos >no la ra)z de documentos? al script actualA luego de /ue el
servidor haya realizado cual/uier asignaci-n al vuelo virtual2a2real;
Nota- A partir de P&P 8;7;0A +,T!_TR,NS4,TED ya no se de(ine
impl)citamente #a'o la AP. de Apache 0A a di(erencia de lo /ue ocurre en Apache
1A en donde se de(ine con el mismo valor de la varia#le de servidor
SCR0+T_304EN,ME cuando Apache no se encarga de de(inirlo; +ste cam#io (ue
realizado para cumplir con la especi(icaci-n 5G. de /ue +,T!_TR,NS4,TED
de#e eFistir Bnicamente si +,T!_0N3O se de(ine;
Los usuarios de Apache 0 pueden usar ,ccept+ath0n9o : On al interior de
httpd.con# para de(inir +,T!_0N3O;
HSCR0+T_N,MEH
5ontiene la ruta del script actual; [sta es Btil para p*ginas /ue necesitan apuntar a ellas
mismas; La constante ZZF.L+ZZ contiene la ruta completa y nom#re del archivo actual >es
decirA incluido?;
HRE5UEST_UR0H
+l @R. /ue (ue dado para acceder a esta p*ginaX por e'emploA H/6n#e8.htmlH;
H+!+_,UT!_USERH
5uando se corre so#re Apache como m-dulo realizando autenticaci-n &,,PA <sta varia#le es
de(inida con el nom#re de usuario de(inido por el cliente;
H+!+_,UT!_+IH
5uando se corre so#re Apache como m-dulo realizando autenticaci-n &,,PA <sta varia#le es
de(inida con la contraseWa entregada por el usuario;
H,UT!_TB+EH
5uando se corre so#re Apache como m-dulo realizando autenticaci-n &,,PA <sta varia#le es
de(inida con el tipo de autenticaci-n;
Cariables de entorno- $_*4C
Nota- .ntroducidas en 8;1;3; +n versiones anterioresA use '!TT+_EN(_(,RS;
+stas varia#les son importadas en el espacio de nom#res glo#al de P&P desde el entorno #a'o el /ue
est* siendo e'ecutado el int<rprete P&P; Muchas son entregadas por el int<rprete de comandos #a'o
el /ue P&P est* corriendo y di(erentes sistemas suelen tener di(erentes tipos de int<rpretes de
comandosA una lista de(initiva es imposi#le; Por (avor consulte la documentaci-n de su int<rprete de
comandos por una lista de vari#les de entorno /ue resultan de(inidas;
Otras varia#les de entorno incluyen las varia#les 5G.A colocadas all) independientemente de /ue
P&P est< siendo e'ecutado como m-dulo del servidor o procesador 5G.;
+sta es una varia#le Hsuperglo#alHA o glo#al autom*tica; +sto simplemente /uiere decir /ue est*
disponi#le en todos los conteFtos a lo largo del script; No necesita hacer global V>ENCZ para
acceder a ella desde (unciones o m<todosA tal y como lo hace con '!TT+_EN(_(,RS;
'!TT+_EN(_(,RS contiene la misma in(ormaci-n inicialA pero no es autoglo#al; >Note /ue
'!TT+_EN(_(,RS y '_EN( son varia#les di(erentes y /ue P&P las trata como tal?
i la directiva registerZglo#als est* de(inidaA entonces estas varia#les tam#i<n se har*n disponi#les
en el entorno glo#al del scriptX i;e;A por separado de las matrices '_EN( y '!TT+_EN(_(,RS; Para
in(ormaci-n relacionadaA consulte el cap)tulo de seguridad titulado @so de Registros Glo#ales; +stas
glo#ales individuales no son autoglo#ales;
CooBies HTTP- $_COOD"*
Nota- .ntroducidas en 8;1;3; +n versiones anterioresA use '!TT+_COO20E_(,RS;
@na matriz asociativa de varia#les pasadas al script actual a trav<s de coo"ies &,,P; Glo#al
autom*ticamente en cual/uier conteFto;
+sta es una varia#le Hsuperglo#alHA o glo#al autom*tica; +sto simplemente /uiere decir /ue est*
disponi#le en todos los conteFtos a lo largo de un script; No necesita hacer global V>CJJ`IEZ
para acceder a ella dentro de (unciones o m<todosA como lo hace con '!TT+_COO20E_(,RS;
'!TT+_COO20E_(,RS contiene la misma in(ormaci-n inicialA pero no es autoglo#al; >Note /ue
'!TT+_COO20E_(,RS y '_COO20E son varia#les di(erentes y /ue P&P las trata como tal?
i la directiva registerZglo#als est* de(inidaA entonces <stas varia#les tam#i<n estar*n disponi#les en
el conteFto glo#al del scriptX i;e;A por separado de las matrices '_COO20E y
'!TT+_COO20E_(,RS; Para in(ormaci-n relacionadaA consulte el cap)tulo de seguridad titulado
@so de Registros Glo#ales; +stas glo#ales individuales no son autoglo#ales;
Cariables HTTP FET- $_5*
Nota- .ntroducidas en 8;1;3; +n versiones anterioresA use '!TT+_-ET_(,RS;
@na matriz asociativa de varia#les pasadas al script actual a trav<s del m<todo &,,P G+,; Glo#al
autom*ticamente en cual/uier conteFto;
+sta es una varia#le Hsuperglo#alHA o glo#al autom*tica; +sto simplemente /uiere decir /ue est*
disponi#le en todos los conteFtos a lo largo de un script; No necesita hacer global V>FETZ para
acceder a ella dentro de (unciones o m<todosA como lo hace con '!TT+_-ET_(,RS;
'!TT+_-ET_(,RS contiene la misma in(ormaci-n inicialA pero no es autoglo#al; >Note /ue
'!TT+_-ET_(,RS y '_-ET son varia#les di(erentes y /ue P&P las trata como tal?
i la directiva registerZglo#als est* de(inidaA entonces <stas varia#les tam#i<n estar*n disponi#les en
el conteFto glo#al del scriptX i;e;A por separado de las matrices '_-ET y '!TT+_-ET_(,RS; Para
in(ormaci-n relacionadaA consulte el cap)tulo de seguridad titulado @so de Registros Glo#ales; +stas
glo#ales individuales no son autoglo#ales;
Cariables HTTP PJ,T- $_POS
Nota- .ntroducidas en 8;1;3; +n versiones anterioresA use '!TT+_+OST_(,RS;
@na matriz asociativa de varia#les pasadas al script actual a trav<s del m<todo &,,P PO,; Glo#al
autom*ticamente en cual/uier conteFto;
+sta es una varia#le Hsuperglo#alHA o glo#al autom*tica; +sto simplemente /uiere decir /ue est*
disponi#le en todos los conteFtos a lo largo de un script; No necesita hacer global V>PJ,TZ para
acceder a ella dentro de (unciones o m<todosA como lo hace con '!TT+_+OST_(,RS;
'!TT+_+OST_(,RS contiene la misma in(ormaci-n inicialA pero no es autoglo#al; >Note /ue
'!TT+_+OST_(,RS y '_+OST son varia#les di(erentes y /ue P&P las trata como tal?
i la directiva registerZglo#als est* de(inidaA entonces <stas varia#les tam#i<n estar*n disponi#les en
el conteFto glo#al del scriptX i;e;A por separado de las matrices '_+OST y '!TT+_+OST_(,RS;
Para in(ormaci-n relacionadaA consulte el cap)tulo de seguridad titulado @so de Registros Glo#ales;
+stas glo#ales individuales no son autoglo#ales;
Cariables de carga de archi5os HTTP- $_E"!*S
Nota- .ntroducidas en 8;1;3; +n versiones anterioresA use '!TT+_+OST_304ES;
@na matriz asociativa de elementos cargados al script actual a trav<s del m<todo &,,P PO,;
Glo#al autom*ticamente en cual/uier conteFto;
+sta es una varia#le Hsuperglo#alHA o glo#al autom*tica; +sto simplemente /uiere decir /ue est*
disponi#le en todos los conteFtos a lo largo de un script; No necesita hacer global V>;I:E,Z para
acceder a ella dentro de (unciones o m<todosA como lo hace con '!TT+_+OST_304ES;
'!TT+_+OST_304ES contiene la misma in(ormaci-n inicialA pero no es autoglo#al; >Note /ue
'!TT+_+OST_304ES y '_304ES son varia#les di(erentes y /ue P&P las trata como tal?
i la directiva registerZglo#als est* de(inidaA entonces <stas varia#les tam#i<n estar*n disponi#les en
el conteFto glo#al del scriptX i;e;A por separado de las matrices '_304ES y '!TT+_+OST_304ES;
Para in(ormaci-n relacionadaA consulte el cap)tulo de seguridad titulado @so de Registros Glo#ales;
+stas glo#ales individuales no son autoglo#ales;
Cariables de petici"n- $_/*F+*S
Nota- .ntroducidas en 8;1;3; No eFiste una matriz Walente en versiones anteriores;
Nota- Antes de P&P 8;7;3A la in(ormaci-n de '_304ES tam#i<n era incluida en
'_RE5UEST;
@na matriz asociativa /ue consiste en los contenidos de '_-ETA '_+OSTA y '_COO20E;
+sta es una varia#le Hsuperglo#alHA o glo#al autom*tica; +sto simplemente /uiere decir /ue est*
disponi#le en todos los conteFtos a lo largo de un script; No necesita hacer global V>ME$)E,TZ
para acceder a ella dentro de (unciones o m<todos;
i la directiva registerZglo#als est* de(inidaA entonces <stas varia#les tam#i<n estar*n disponi#les en
el conteFto glo#al del scriptX i;e;A por separado de la matriz '_RE5UEST; Para in(ormaci-n
relacionadaA consulte el cap)tulo de seguridad titulado @so de Registros Glo#ales; +stas glo#ales
individuales no son autoglo#ales;
Cariables de sesi"n- $_S*SS"O4
Nota- .ntroducidas en 8;1;3; +n versiones anterioresA use '!TT+_SESS0ON_(,RS;
@na matriz asociativa /ue contiene las varia#les de sesi-n disponi#les en el script actual; 5onsulte
la documentaci-n so#re Funciones de esi-n para m*s in(ormaci-n so#re c-mo es usada <sta
matriz;
+sta es una varia#le Hsuperglo#alHA o glo#al autom*tica; +sto simplemente /uiere decir /ue est*
disponi#le en todos los conteFtos a lo largo de un script; No necesita hacer global V>,E,,IJNZ
para acceder a ella dentro de (unciones o m<todosA como lo hace con '!TT+_SESS0ON_(,RS;
'!TT+_SESS0ON_(,RS contiene la misma in(ormaci-nA pero no es autoglo#al; >Note /ue
'!TT+_SESS0ON_(,RS y '_SESS0ON son varia#le di(erentes y /ue P&P las trata como tal?
i la directiva registerZglo#als est* de(inidaA entonces <stas varia#les tam#i<n estar*n disponi#les en
el conteFto glo#al del scriptX i;e;A por separado de las matrices '_SESS0ON y
'!TT+_SESS0ON_(,RS; Para in(ormaci-n relacionadaA consulte el cap)tulo de seguridad titulado
@so de Registros Glo#ales; +stas glo#ales individuales no son autoglo#ales;
Cariables globales- $5!OG$!S
Nota- '-4OA,4S ha estado disponi#le desde P&P 7;3;3;
@na matriz asociativa /ue contiene re(erencias a todas las varia#les /ue est*n de(inidas actualmente
en el conteFto glo#al del script; Los nom#res de las varia#les son las claves de la matriz;
+sta es una varia#le Hsuperglo#alHA o glo#al autom*tica; +sto simplemente /uiere decir /ue est*
disponi#le en todos los conteFtos a lo largo de un script; No necesita hacer global V>F:J1A:,Z
para acceder a ella dentro de (unciones o m<todos;
El mensa'e de error pre5io- $php_error&sg
'php_errormsE es una varia#le /ue contiene el teFto del Bltimo mensa'e de error generado por P&P;
+sta varia#le solo estar* disponi#les dentro del conteFto en el /ue el error ocurri-A y solo si la
opci-n de con(iguraci-n trac"Zerrors est* ha#ilitada >por de(ecto est* de(inida como o((?;
Clases Predefinidas
Clases Estndar Predefinidas
+stas clases est*n de(inidas en el 'uego de (unciones est*ndar incluidas en la distri#uici-n de P&P;
Kirectory
La clase a partir de la cual dir es instanciada;
stdClass
>>PHP>Incomplete>Class
Clases predefinidas en PHP 9
+stas clases prede(inidas adicionales (ueron introducidas en P&P 4;3;3
e+ception
php>user>filter
Clases Ming Kefinidas
+stas clases est*n de(inidas en la eFtensi-n MingA y solo estar*n disponi#les cuando tal eFtensi-n
haya sido compilada 'unto con P&P o cargada din*micamente en tiempo de e'ecuci-n;
s3fshape
s3ffill
s3fgradient
s3fbitmap
s3fte+t
s3fte+tfield
s3ffont
s3fdisplayitem
s3fmo5ie
s3fbutton
s3faction
s3fmorph
s3fsprite
Clases Jracle N Kefinidas
+stas clases est*n de(inidas en la eFtensi-n Oracle MA y solo estar*n disponi#les cuando tal eFtensi-n
haya sido compilada 'unto con P&P o cargada din*micamente en tiempo de e'ecuci-n;
JCI(:ob
JCI(Collection
Clases ?tdom Kefinidas
+stas clases est*n de(inidas en la eFtensi-n /tdomA y solo estar*n disponi#les cuando tal eFtensi-n
haya sido compilada 'unto con P&P o cargada din*micamente en tiempo de e'ecuci-n;
$KomKocument
$KomNode
Constantes predefinidas
Tabla de contenidos
5onstantes Base Prede(inidas 22 5onstantes de(inidas en el nBcleo de P&PA IendA y m-dulos AP.
5onstantes +st*ndar Prede(inidas 22 5onstantes de(inidas en P&P por de(ecto
Constantes 1ase Predefinidas
5onstantes Base Prede(inidas 22 5onstantes de(inidas en el nBcleo de P&PA IendA y m-dulos AP.
Kescripci"n
+stas constantes son de(inidas por el nBcleo de P&P; +sto incluye P&PA el motor IendA y los
m-dulos AP.;
PHP_$ERSION >string?
PHP_OS >string?
PHP_EOL >string?
Disponi#le a partir de P&P 8;7;13 y P&P 4;3;0
DEFAULT_INCLUDE_PATH >string?
PEAR_INSTALL_DIR >string?
PEAR_E%TENSION_DIR >string?
PHP_E%TENSION_DIR >string?
PHP_(INDIR >string?
PHP_LI(DIR >string?
PHP_DATADIR >string?
PHP_SYSCONFDIR >string?
PHP_LOCALSTATEDIR >string?
PHP_CONFI#_FILE_PATH >string?
PHP_OUTPUT_HANDLER_START >integer?
PHP_OUTPUT_HANDLER_CONT >integer?
PHP_OUTPUT_HANDLER_END >integer?
E_ERROR >integer?
E_"ARNIN# >integer?
E_PARSE >integer?
E_NOTICE >integer?
E_CORE_ERROR >integer?
E_CORE_"ARNIN# >integer?
E_COMPILE_ERROR >integer?
E_COMPILE_"ARNIN# >integer?
E_USER_ERROR >integer?
E_USER_"ARNIN# >integer?
E_USER_NOTICE >integer?
E_ALL >integer?
E_STRICT >integer?
Disponi#le a partir de P&P 4;3;3
$ea tam#i<nC 5onstantes m*gicas;
Constantes Estndar Predefinidas
5onstantes +st*ndar Prede(inidas 22 5onstantes de(inidas en P&P por de(ecto
Kescripci"n
+stas constantes est*n de(inidas en P&P por de(ecto;
E%TR_O$ER"RITE >integer?
E%TR_S&IP >integer?
E%TR_PREFI%_SAME >integer?
E%TR_PREFI%_ALL >integer?
E%TR_PREFI%_IN$ALID >integer?
E%TR_PREFI%_IF_E%ISTS >integer?
E%TR_IF_E%ISTS >integer?
SORT_ASC >integer?
SORT_DESC >integer?
SORT_RE#ULAR >integer?
SORT_NUMERIC >integer?
SORT_STRIN# >integer?
CASE_LO"ER >integer?
CASE_UPPER >integer?
COUNT_NORMAL >integer?
COUNT_RECURSI$E >integer?
ASSERT_ACTI$E >integer?
ASSERT_CALL(AC& >integer?
ASSERT_(AIL >integer?
ASSERT_"ARNIN# >integer?
ASSERT_.UIET_E$AL >integer?
CONNECTION_A(ORTED >integer?
CONNECTION_NORMAL >integer?
CONNECTION_TIMEOUT >integer?
INI_USER >integer?
INI_PERDIR >integer?
INI_SYSTEM >integer?
INI_ALL >integer?
M_E >(loat?
M_LO#*E >(loat?
M_LO#)0E >(loat?
M_LN* >(loat?
M_LN)0 >(loat?
M_PI >(loat?
M_PI_* >(loat?
M_PI_+ >(loat?
M_)_PI >(loat?
M_*_PI >(loat?
M_*_S.RTPI >(loat?
M_S.RT* >(loat?
M_S.RT)_* >(loat?
CRYPT_SALT_LEN#TH >integer?
CRYPT_STD_DES >integer?
CRYPT_E%T_DES >integer?
CRYPT_MD2 >integer?
CRYPT_(LO"FISH >integer?
DIRECTORY_SEPARATOR >string?
SEE&_SET >integer?
SEE&_CUR >integer?
SEE&_END >integer?
LOC&_SH >integer?
LOC&_E% >integer?
LOC&_UN >integer?
LOC&_N( >integer?
HTML_SPECIALCHARS >integer?
HTML_ENTITIES >integer?
ENT_COMPAT >integer?
ENT_.UOTES >integer?
ENT_NO.UOTES >integer?
INFO_#ENERAL >integer?
INFO_CREDITS >integer?
INFO_CONFI#URATION >integer?
INFO_MODULES >integer?
INFO_EN$IRONMENT >integer?
INFO_$ARIA(LES >integer?
INFO_LICENSE >integer?
INFO_ALL >integer?
CREDITS_#ROUP >integer?
CREDITS_#ENERAL >integer?
CREDITS_SAPI >integer?
CREDITS_MODULES >integer?
CREDITS_DOCS >integer?
CREDITS_FULLPA#E >integer?
CREDITS_.A >integer?
CREDITS_ALL >integer?
STR_PAD_LEFT >integer?
STR_PAD_RI#HT >integer?
STR_PAD_(OTH >integer?
PATHINFO_DIRNAME >integer?
PATHINFO_(ASENAME >integer?
PATHINFO_E%TENSION >integer?
PATH_SEPARATOR >string?
CHAR_MA% >integer?
LC_CTYPE >integer?
LC_NUMERIC >integer?
LC_TIME >integer?
LC_COLLATE >integer?
LC_MONETARY >integer?
LC_ALL >integer?
LC_MESSA#ES >integer?
A(DAY_) >integer?
A(DAY_* >integer?
A(DAY_> >integer?
A(DAY_+ >integer?
A(DAY_2 >integer?
A(DAY_1 >integer?
A(DAY_- >integer?
DAY_) >integer?
DAY_* >integer?
DAY_> >integer?
DAY_+ >integer?
DAY_2 >integer?
DAY_1 >integer?
DAY_- >integer?
A(MON_) >integer?
A(MON_* >integer?
A(MON_> >integer?
A(MON_+ >integer?
A(MON_2 >integer?
A(MON_1 >integer?
A(MON_- >integer?
A(MON_, >integer?
A(MON_= >integer?
A(MON_)0 >integer?
A(MON_)) >integer?
A(MON_)* >integer?
MON_) >integer?
MON_* >integer?
MON_> >integer?
MON_+ >integer?
MON_2 >integer?
MON_1 >integer?
MON_- >integer?
MON_, >integer?
MON_= >integer?
MON_)0 >integer?
MON_)) >integer?
MON_)* >integer?
AM_STR >integer?
PM_STR >integer?
D_T_FMT >integer?
D_FMT >integer?
T_FMT >integer?
T_FMT_AMPM >integer?
ERA >integer?
ERA_YEAR >integer?
ERA_D_T_FMT >integer?
ERA_D_FMT >integer?
ERA_T_FMT >integer?
ALT_DI#ITS >integer?
INT_CURR_SYM(OL >integer?
CURRENCY_SYM(OL >integer?
CRNCYSTR >integer?
MON_DECIMAL_POINT >integer?
MON_THOUSANDS_SEP >integer?
MON_#ROUPIN# >integer?
POSITI$E_SI#N >integer?
NE#ATI$E_SI#N >integer?
INT_FRAC_DI#ITS >integer?
FRAC_DI#ITS >integer?
P_CS_PRECEDES >integer?
P_SEP_(Y_SPACE >integer?
N_CS_PRECEDES >integer?
N_SEP_(Y_SPACE >integer?
P_SI#N_POSN >integer?
N_SI#N_POSN >integer?
DECIMAL_POINT >integer?
RADI%CHAR >integer?
THOUSANDS_SEP >integer?
THOUSEP >integer?
#ROUPIN# >integer?
YESE%PR >integer?
NOE%PR >integer?
YESSTR >integer?
NOSTR >integer?
CODESET >integer?
LO#_EMER# >integer?
LO#_ALERT >integer?
LO#_CRIT >integer?
LO#_ERR >integer?
LO#_"ARNIN# >integer?
LO#_NOTICE >integer?
LO#_INFO >integer?
LO#_DE(U# >integer?
LO#_&ERN >integer?
LO#_USER >integer?
LO#_MAIL >integer?
LO#_DAEMON >integer?
LO#_AUTH >integer?
LO#_SYSLO# >integer?
LO#_LPR >integer?
LO#_NE"S >integer?
LO#_UUCP >integer?
LO#_CRON >integer?
LO#_AUTHPRI$ >integer?
LO#_LOCAL0 >integer?
LO#_LOCAL) >integer?
LO#_LOCAL* >integer?
LO#_LOCAL> >integer?
LO#_LOCAL+ >integer?
LO#_LOCAL2 >integer?
LO#_LOCAL1 >integer?
LO#_LOCAL- >integer?
LO#_PID >integer?
LO#_CONS >integer?
LO#_ODELAY >integer?
LO#_NDELAY >integer?
LO#_NO"AIT >integer?
LO#_PERROR >integer?
Ap%ndice `. :ista de Tipos de Mecurso
La siguiente es una lista de las (unciones /ue creanA usan o destruyen recursos P&P; La (unci-n
is>resource./ puede ser usada para determinar si una varia#le es un recurso y get>resource>type./
devolver* el tipo de recurso /ue es;
Tabla `(!. Tipos de Mecurso
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
aspell aspell>ne3./
aspell>checB./A
aspell>checB>ra3./A
aspell>suggest./
Nadie
Diccionario
aspell
#zip0 b6open./
b6errno./A b6error./A
b6errstr./A b6flush./A
b6read./A b63rite./
b6close./
Archivo
#zip0
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
5OM com>load./
com>in5oBe./A
com>propget./A com>get
./A com>propput./A
com>set./A com>propput
./
Nadie
Re(erencia a
o#'eto 5OM
$AR.AN,
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
cpd( cpdf>open./
cpdf>page>init./A
cpdf>finali6e>page./A
cpdf>finali6e./A
cpdf>output>buffer./A
cpdf>sa5e>to>file./A
cpdf>set>current>page./A
cpdf>begin>te+t./A
cpdf>end>te+t./A
cpdf>sho3./A
cpdf>sho3>+y./A
cpdf>te+t./A
cpdf>set>font./A
cpdf>set>leading./A
cpdf>set>te+t>rendering
./A
cpdf>set>hori6>scaling./A
cpdf>set>te+t>rise./A
cpdf>set>te+t>matri+./A
cpdf>set>te+t>pos./A
cpdf>set>te+t>pos./A
cpdf>set>3ord>spacing
./A cpdf>continue>te+t./A
cpdf>string3idth./A
cpdf>sa5e./A
cpdf>translate./A
cpdf>restore./A
cpdf>scale./A cpdf>rotate
./A cpdf>setflat./A
cpdf>setline'oin./A
cpdf>setlinecap./A
cpdf>setmiterlimit./A
cpdf>setline3idth./A
cpdf>setdash./A
cpdf>mo5eto./A
cpdf>rmo5eto./A
cpdf>cur5eto./A
cpdf>lineto./A
cpdf>rlineto./A
cpdf>circle./A cpdf>arc./A
cpdf>rect./A
cpdf>closepath./A
cpdf>stroBe./A
cpdf>closepath>fill>stro
Be./A cpdf>fill>stroBe./A
cpdf>clip./A cpdf>fill./A
cpdf>setgray>fill./A
cpdf>setgray>stroBe./A
cpdf>setgray./A
cpdf>setrgbcolor>fill./A
cpdf>setrgbcolor>stroBe
./A cpdf>setrgbcolor./A
cpdf>close./
Documento
PDF con la
#i#lioteca
5PDF
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
cpd( outline
curl curl>init./ curl>init./A curl>e+ec./ curl>close./ esi-n curl
d#m dbmopen./
dbme+ists./A dbmfetch./A
dbminsert./A dbmreplace
./A dbmdelete./A
dbmfirstBey./A
dbmne+tBey./
dbmclose./
+nlace a #ase
de datos
DBM
d#a dba>open./
dba>delete./A dba>e+ists
./A dba>fetch./A
dba>firstBey./A
dba>insert./A
dba>ne+tBey./A
dba>optimi6e./A
dba>replace./A dba>sync
./
dba>close./
+nlace a #ase
de datos DBA
d#a persistent dba>popen./
dba>delete./A dba>e+ists
./A dba>fetch./A
dba>firstBey./A
dba>insert./A
dba>ne+tBey./A
dba>optimi6e./A
dba>replace./A dba>sync
./
Nadie
+nlace
persistente a
#ase de datos
DBA
d#ase dbase>open./
dbase>pacB./A
dbase>add>record./A
dbase>replace>record./A
dbase>delete>record./A
dbase>get>record./A
dbase>get>record>3ith>
names./A
dbase>numfields./A
dbase>numrecords./
dbase>close./
+nlace a #ase
de datos
D#ase
d#FZlin"Zo#'ect db+>connect./ db+>?uery./ db+>close./
d#F
connection
d#FZresultZo#'ec
t
db+>?uery./ Nadie
Resultado
d#F
domFml
attri#ute

domFml
document

domFml node
Fpath conteFt
Fpath o#'ect
(#s/l data#ase fbs?l>select>db./ Nadie (#s/l data#ase
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
(#s/l lin"
fbs?l>change>user./A
fbs?l>connect./
fbs?l>autocommit./A
fbs?l>change>user./A
fbs?l>create>db./A
fbs?l>data>seeB./A
fbs?l>db>?uery./A
fbs?l>drop>db./A
fbs?l>select>db./A
fbs?l>errno./A
fbs?l>error./A
fbs?l>insert>id./A
fbs?l>list>dbs./
fbs?l>close./
+nlace a #ase
de datos (#s/l
(#s/l plin"
fbs?l>change>user./A
fbs?l>pconnect./
fbs?l>autocommit./A
fbs?l>change>user./A
fbs?l>create>db./A
fbs?l>data>seeB./A
fbs?l>db>?uery./A
fbs?l>drop>db./A
fbs?l>select>db./A
fbs?l>errno./A
fbs?l>error./A
fbs?l>insert>id./A
fbs?l>list>dbs./
Nadie
+nlace
persistente
con #ase de
datos (#s/l
(#s/l result
fbs?l>db>?uery./A
fbs?l>list>dbs./A
fbs?l>?uery./A
fbs?l>list>fields./A
fbs?l>list>tables./A
fbs?l>tablename./
fbs?l>affected>ro3s./A
fbs?l>fetch>array./A
fbs?l>fetch>assoc./A
fbs?l>fetch>field./A
fbs?l>fetch>lengths./A
fbs?l>fetch>ob'ect./A
fbs?l>fetch>ro3./A
fbs?l>field>flags./A
fbs?l>field>name./A
fbs?l>field>len./A
fbs?l>field>seeB./A
fbs?l>field>table./A
fbs?l>field>type./A
fbs?l>ne+t>result./A
fbs?l>num>fields./A
fbs?l>num>ro3s./A
fbs?l>result./A
fbs?l>num>ro3s./
fbs?l>free>resul
t./
(#s/l result
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
(d( fdf>open./
fdf>create./A fdf>sa5e./A
fdf>get>5alue./A
fdf>set>5alue./A
fdf>ne+t>field>name./A
fdf>set>ap./A
fdf>set>status./A
fdf>get>status./A
fdf>set>file./A fdf>get>file
./A fdf>set>flags./A
fdf>set>opt./A
fdf>set>submit>form>act
ion./A
fdf>set>'a5ascript>actio
n./
fdf>close./ Archivo FDF
(tp ftp>connect./
ftp>login./A ftp>p3d./A
ftp>cdup./A ftp>chdir./A
ftp>mBdir./A ftp>rmdir./A
ftp>nlist./A ftp>ra3list./A
ftp>systype./A ftp>pas5./A
ftp>get./A ftp>fget./A
ftp>put./A ftp>fput./A
ftp>si6e./A ftp>mdtm./A
ftp>rename./A ftp>delete
./A ftp>site./
ftp>?uit./
ecuencia
F,P
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
gd
imagecreate./A
imagecreatefromgif./A
imagecreatefrom'peg
./A
imagecreatefrompng./A
imagecreatefrom3bm
p./A
imagecreatefromstring
./A
imagecreatetruecolor./
imagearc./A imagechar./A
imagecharup./A
imagecolorallocate./A
imagecolorat./A
imagecolorclosest./A
imagecolore+act./A
imagecolorresol5e./A
imagegammacorrect./A
imagegammacorrect./A
imagecolorset./A
imagecolorsforinde+./A
imagecolorstotal./A
imagecolortransparent./A
imagecopy./A
imagecopyresi6ed./A
imagedashedline./A
imagefill./A
imagefilledpolygon./A
imagefilledrectangle./A
imagefilltoborder./A
imagegif./A imagepng./A
image'peg./A image3bmp
./A imageinterlace./A
imageline./A
imagepolygon./A
imagepste+t./A
imagerectangle./A
imagesetpi+el./A
imagestring./A
imagestringup./A images+
./A imagesy./A
imagettfte+t./A
imagefilledarc./A
imageellipse./A
imagefilledellipse./A
imagecolorclosestalpha
./A imagecolore+actalpha
./A
imagecolorresol5ealpha
./A imagecopymerge./A
imagecopymergegray./A
imagecopyresampled./A
imagetruecolortopalette
./A imagesetbrush./A
imagesettile./A
imagesetthicBness./
imagedestroy./ .magen GD
gd (ont imageloadfont./
imagechar./A
imagecharup./A
imagefontheight./
Nadie
Fuente para
GD
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
gd P encoding
gd P (ont imagepsloadfont./
imagepste+t./A
imagepsslantfont./A
imagepse+tendfont./A
imagepsencodefont./A
imagepsbbo+./
imagepsfreefont
./
Fuente P
para GD
GMP integer gmp>init./
gmp>int5al./A
gmp>str5al./A gmp>add
./A gmp>sub./A gmp>mul
./A gmp>di5>?./A
gmp>di5>r./A
gmp>di5>?r./A gmp>di5
./A gmp>mod./A
gmp>di5e+act./A
gmp>cmp./A gmp>neg./A
gmp>abs./A gmp>sign./A
gmp>fact./A gmp>s?rt./A
gmp>s?rtrm./A
gmp>perfect>s?uare./A
gmp>po3./A gmp>po3m
./A gmp>prob>prime./A
gmp>gcd./A gmp>gcde+t
./A gmp>in5ert./A
gmp>legendre./A
gmp>'acobi./A
gmp>random./A
gmp>and./A gmp>or./A
gmp>+or./A gmp>setbit./A
gmp>clrbit./A gmp>scanD
./A gmp>scan!./A
gmp>popcount./A
gmp>hamdist./
Nadie NBmero GMP
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
hyperEave
document
h3>cp./A
h3>docbyanchor./A
h3>getremote./A
h3>getremotechildren
./
h3>children./A
h3>childrenob'./A
h3>getparents./A
h3>getparentsob'./A
h3>getchildcoll./A
h3>getchildcollob'./A
h3>getremote./A
h3>getsrcbydestob'./A
h3>getandlocB./A
h3>gette+t./A
h3>getob'ectby?uerycoll
./A
h3>getob'ectby?uerycoll
ob'./A h3>getchilddoccoll
./A h3>getchilddoccollob'
./A h3>getanchors./A
h3>getanchorsob'./A
h3>inscoll./A
h3>pipedocument./A
h3>unlocB./
h3>deleteob'ect
./
O#'eto
hyperEave
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
hyperEave lin" h3>connect./
h3>children./A
h3>childrenob'./A h3>cp
./A h3>deleteob'ect./A
h3>docbyanchor./A
h3>docbyanchorob'./A
h3>errormsg./A
h3>editte+t./A h3>error
./A h3>getparents./A
h3>getparentsob'./A
h3>getchildcoll./A
h3>getchildcollob'./A
h3>getremote./A
h3>getremotechildren./A
h3>getsrcbydestob'./A
h3>getob'ect./A
h3>getandlocB./A
h3>gette+t./A
h3>getob'ectby?uery./A
h3>getob'ectby?ueryob'
./A
h3>getob'ectby?uerycoll
./A
h3>getob'ectby?uerycoll
ob'./A h3>getchilddoccoll
./A h3>getchilddoccollob'
./A h3>getanchors./A
h3>getanchorsob'./A
h3>m5./A
h3>incollections./A
h3>info./A h3>inscoll./A
h3>insdoc./A
h3>insertdocument./A
h3>insertob'ect./A
h3>mapid./A
h3>modifyob'ect./A
h3>pipedocument./A
h3>unlocB./A h3>3ho./A
h3>getusername./
h3>close./A
h3>free>docum
ent./
+nlace con
servidor
&yperEave
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
hyperEave lin"
persistent
h3>pconnect./
h3>children./A
h3>childrenob'./A h3>cp
./A h3>deleteob'ect./A
h3>docbyanchor./A
h3>docbyanchorob'./A
h3>errormsg./A
h3>editte+t./A h3>error
./A h3>getparents./A
h3>getparentsob'./A
h3>getchildcoll./A
h3>getchildcollob'./A
h3>getremote./A
h3>getremotechildren./A
h3>getsrcbydestob'./A
h3>getob'ect./A
h3>getandlocB./A
h3>gette+t./A
h3>getob'ectby?uery./A
h3>getob'ectby?ueryob'
./A
h3>getob'ectby?uerycoll
./A
h3>getob'ectby?uerycoll
ob'./A h3>getchilddoccoll
./A h3>getchilddoccollob'
./A h3>getanchors./A
h3>getanchorsob'./A
h3>m5./A
h3>incollections./A
h3>info./A h3>inscoll./A
h3>insdoc./A
h3>insertdocument./A
h3>insertob'ect./A
h3>mapid./A
h3>modifyob'ect./A
h3>pipedocument./A
h3>unlocB./A h3>3ho./A
h3>getusername./
Nadie
+nlace
persistente
con servidor
&yperEave
icap icap>open./
icap>fetch>e5ent./A
icap>list>e5ents./A
icap>store>e5ent./A
icap>snoo6e./A
icap>list>alarms./A
icap>delete>e5ent./
icap>close./
+nlace con
servidor icap
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
imap imap>open./
imap>append./A
imap>body./A
imap>checB./A
imap>createmailbo+./A
imap>delete./A
imap>deletemailbo+./A
imap>e+punge./A
imap>fetchbody./A
imap>fetchstructure./A
imap>headerinfo./A
imap>header./A
imap>headers./A
imap>listmailbo+./A
imap>getmailbo+es./A
imap>get>?uota./A
imap>status./A
imap>listsubscribed./A
imap>set>?uota./A
imap>set>?uota./A
imap>getsubscribed./A
imap>mail>copy./A
imap>mail>mo5e./A
imap>num>msg./A
imap>num>recent./A
imap>ping./A
imap>renamemailbo+./A
imap>reopen./A
imap>subscribe./A
imap>undelete./A
imap>unsubscribe./A
imap>scanmailbo+./A
imap>mailbo+msginfo./A
imap>fetchheader./A
imap>uid./A imap>msgno
./A imap>search./A
imap>fetch>o5er5ie3./
imap>close./
+nlace con
servidor
.MAPA POP7
imap chain
persistent

imap persistent
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
ingres ingres>connect./
ingres>?uery./A
ingres>num>ro3s./A
ingres>num>fields./A
ingres>field>name./A
ingres>field>type./A
ingres>field>nullable./A
ingres>field>length./A
ingres>field>precision./A
ingres>field>scale./A
ingres>fetch>array./A
ingres>fetch>ro3./A
ingres>fetch>ob'ect./A
ingres>rollbacB./A
ingres>commit./A
ingres>autocommit./
ingres>close./
+nlace con
#ase ingres..
ingres persistent ingres>pconnect./
ingres>?uery./A
ingres>num>ro3s./A
ingres>num>fields./A
ingres>field>name./A
ingres>field>type./A
ingres>field>nullable./A
ingres>field>length./A
ingres>field>precision./A
ingres>field>scale./A
ingres>fetch>array./A
ingres>fetch>ro3./A
ingres>fetch>ob'ect./A
ingres>rollbacB./A
ingres>commit./A
ingres>autocommit./
Nadie
+nlace
persistente
con #ase
ingres..
inter#ase #lo#
inter#ase lin" ibase>connect./
ibase>?uery./A
ibase>prepare./A
ibase>trans./
ibase>close./
+nlace con
#ase de datos
.nter#ase
inter#ase lin"
persistent
ibase>pconnect./
ibase>?uery./A
ibase>prepare./A
ibase>trans./
Nadie
+nlace
persistente
con #ase de
datos
.nter#ase
inter#ase /uery ibase>prepare./ ibase>e+ecute./
ibase>free>?uer
y./
5onsulta
.nter#ase
inter#ase result ibase>?uery./
ibase>fetch>ro3./A
ibase>fetch>ob'ect./A
ibase>field>info./A
ibase>num>fields./
ibase>free>resul
t./
Resultado
.nter#ase
inter#ase
transaction
ibase>trans./ ibase>commit./ ibase>rollbacB./
,ransacci-n
.nter#ase
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
'ava
ldap lin"
ldap>connect./A
ldap>search./
ldap>count>entries./A
ldap>first>attribute./A
ldap>first>entry./A
ldap>get>attributes./A
ldap>get>dn./A
ldap>get>entries./A
ldap>get>5alues./A
ldap>get>5alues>len./A
ldap>ne+t>attribute./A
ldap>ne+t>entry./
ldap>close./
5oneFi-n
ldap
ldap result ldap>read./
ldap>add./A
ldap>compare./A
ldap>bind./A
ldap>count>entries./A
ldap>delete./A
ldap>errno./A ldap>error
./A ldap>first>attribute./A
ldap>first>entry./A
ldap>get>attributes./A
ldap>get>dn./A
ldap>get>entries./A
ldap>get>5alues./A
ldap>get>5alues>len./A
ldap>get>option./A
ldap>list./A ldap>modify
./A ldap>mod>add./A
ldap>mod>replace./A
ldap>ne+t>attribute./A
ldap>ne+t>entry./A
ldap>mod>del./A
ldap>set>option./A
ldap>unbind./
ldap>free>result
./
Resultado de
#Bs/ueda
ldap
ldap result entry
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
mcal
mcal>open./A
mcal>popen./
mcal>create>calendar./A
mcal>rename>calendar
./A
mcal>rename>calendar
./A mcal>delete>calendar
./A mcal>fetch>e5ent./A
mcal>list>e5ents./A
mcal>append>e5ent./A
mcal>store>e5ent./A
mcal>delete>e5ent./A
mcal>list>alarms./A
mcal>e5ent>init./A
mcal>e5ent>set>category
./A mcal>e5ent>set>title./A
mcal>e5ent>set>descripti
on./A
mcal>e5ent>set>start./A
mcal>e5ent>set>end./A
mcal>e5ent>set>alarm./A
mcal>e5ent>set>class./A
mcal>ne+t>recurrence./A
mcal>e5ent>set>recur>n
one./A
mcal>e5ent>set>recur>d
aily./A
mcal>e5ent>set>recur>3
eeBly./A
mcal>e5ent>set>recur>m
onthly>mday./A
mcal>e5ent>set>recur>m
onthly>3day./A
mcal>e5ent>set>recur>ye
arly./A
mcal>fetch>current>stre
am>e5ent./A
mcal>e5ent>add>attribut
e./A mcal>e+punge./
mcal>close./
+nlace a
servidor de
calendario
LFAction
LFBitmap
LFButton
LFDisplay.te
m

LFFill
LFFont
LFGradient
LFMorph
LFMovie
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
LFhape
LFprite
LF,eFt
LF,eFtField
mnogosearch
agent

mnogosearch
result

ms/l lin" ms?l>connect./
ms?l./A ms?l>create>db
./A ms?l>createdb./A
ms?l>drop>db./A
ms?l>drop>db./A
ms?l>select>db./A
ms?l>select>db./
ms?l>close./
+nlace a #ase
de datos
mOL
ms/l lin"
persistent
ms?l>pconnect./
ms?l./A ms?l>create>db
./A ms?l>createdb./A
ms?l>drop>db./A
ms?l>drop>db./A
ms?l>select>db./A
ms?l>select>db./
Nadie
+nlace
persistente
con mOL
ms/l /uery ms?l>?uery./
ms?l./A
ms?l>affected>ro3s./A
ms?l>data>seeB./A
ms?l>dbname./A
ms?l>fetch>array./A
ms?l>fetch>field./A
ms?l>fetch>ob'ect./A
ms?l>fetch>ro3./A
ms?l>fieldname./A
ms?l>field>seeB./A
ms?l>fieldtable./A
ms?l>fieldtype./A
ms?l>fieldflags./A
ms?l>fieldlen./A
ms?l>num>fields./A
ms?l>num>ro3s./A
ms?l>numfields./A
ms?l>numro3s./A
ms?l>result./
ms?l>free>resul
t./A
ms?l>free>resul
t./
Resultado
mOL
mss/l lin" mss?l>connect./
mss?l>?uery./A
mss?l>select>db./
mss?l>close./
+nlace con
#ase de datos
Microso(t
OL erver
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
mss/l lin"
persistent
mss?l>pconnect./
mss?l>?uery./A
mss?l>select>db./
Nadie
+nlace
persistente
con Microso(t
OL erver
mss/l result mss?l>?uery./
mss?l>data>seeB./A
mss?l>fetch>array./A
mss?l>fetch>field./A
mss?l>fetch>ob'ect./A
mss?l>fetch>ro3./A
mss?l>field>length./A
mss?l>field>name./A
mss?l>field>seeB./A
mss?l>field>type./A
mss?l>num>fields./A
mss?l>num>ro3s./A
mss?l>result./
mss?l>free>resu
lt./
Rasultado de
Microso(t
OL erver
mys/l lin" mys?l>connect./
mys?l>affected>ro3s./A
mys?l>change>user./A
mys?l>create>db./A
mys?l>data>seeB./A
mys?l>db>name./A
mys?l>db>?uery./A
mys?l>drop>db./A
mys?l>errno./A
mys?l>error./A
mys?l>insert>id./A
mys?l>list>dbs./A
mys?l>list>fields./A
mys?l>list>tables./A
mys?l>?uery./A
mys?l>result./A
mys?l>select>db./A
mys?l>tablename./A
mys?l>get>host>info./A
mys?l>get>proto>info./A
mys?l>get>ser5er>info./
mys?l>close./
+nlace con
#ase de datos
MyOL
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
mys/l lin"
persistent
mys?l>pconnect./
mys?l>affected>ro3s./A
mys?l>change>user./A
mys?l>create>db./A
mys?l>data>seeB./A
mys?l>db>name./A
mys?l>db>?uery./A
mys?l>drop>db./A
mys?l>errno./A
mys?l>error./A
mys?l>insert>id./A
mys?l>list>dbs./A
mys?l>list>fields./A
mys?l>list>tables./A
mys?l>?uery./A
mys?l>result./A
mys?l>select>db./A
mys?l>tablename./A
mys?l>get>host>info./A
mys?l>get>proto>info./A
mys?l>get>ser5er>info./
Nadie
+nlace
persistente
con #ase de
datos MyOL
mys/l result
mys?l>db>?uery./A
mys?l>list>dbs./A
mys?l>list>fields./A
mys?l>list>tables./A
mys?l>?uery./
mys?l>data>seeB./A
mys?l>db>name./A
mys?l>fetch>array./A
mys?l>fetch>assoc./A
mys?l>fetch>field./A
mys?l>fetch>lengths./A
mys?l>fetch>ob'ect./A
mys?l>fetch>ro3./A
mys?l>fetch>ro3./A
mys?l>field>flags./A
mys?l>field>name./A
mys?l>field>len./A
mys?l>field>seeB./A
mys?l>field>table./A
mys?l>field>type./A
mys?l>num>fields./A
mys?l>num>ro3s./A
mys?l>result./A
mys?l>tablename./
mys?l>free>resu
lt./
Resultado
MyOL
ociM collection
ociM connection
ocilogon./A ociplogon./A
ocinlogon./
ocicommit./A
ociser5er5ersion./A
ocine3cursor./A ociparse
./A ocierror./
ocilogoff./
+nlace con
#ase de datos
Oracle
ociM descriptor
ociM server
ociM session
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
ociM statement ocine3descriptor./
ocirollbacB./A
ocine3descriptor./A
ociro3count./A
ocidefinebyname./A
ocibindbyname./A
ocie+ecute./A ocinumcols
./A ociresult./A ocifetch./A
ocifetchinto./A
ocifetchstatement./A
ocicolumnisnull./A
ocicolumnname./A
ocicolumnsi6e./A
ocicolumntype./A
ocistatementtype./A
ocierror./
ocifreestatement
./
5ursor Oracle
od#c lin" odbc>connect./
odbc>autocommit./A
odbc>commit./A
odbc>error./A
odbc>errormsg./A
odbc>e+ec./A odbc>tables
./A odbc>tablepri5ileges
./A odbc>do./A
odbc>prepare./A
odbc>columns./A
odbc>columnpri5ileges./A
odbc>procedurecolumns
./A odbc>specialcolumns
./A odbc>rollbacB./A
odbc>setoption./A
odbc>gettypeinfo./A
odbc>primaryBeys./A
odbc>foreignBeys./A
odbc>procedures./A
odbc>statistics./
odbc>close./
+nlace con
#ase de datos
ODB5
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
od#c lin"
persistent
odbc>connect./
odbc>autocommit./A
odbc>commit./A
odbc>error./A
odbc>errormsg./A
odbc>e+ec./A odbc>tables
./A odbc>tablepri5ileges
./A odbc>do./A
odbc>prepare./A
odbc>columns./A
odbc>columnpri5ileges./A
odbc>procedurecolumns
./A odbc>specialcolumns
./A odbc>rollbacB./A
odbc>setoption./A
odbc>gettypeinfo./A
odbc>primaryBeys./A
odbc>foreignBeys./A
odbc>procedures./A
odbc>statistics./
Nadie
+nlace
persistente
con #ase de
datos ODB5
od#c result odbc>prepare./
odbc>binmode./A
odbc>cursor./A
odbc>e+ecute./A
odbc>fetch>into./A
odbc>fetch>ro3./A
odbc>field>name./A
odbc>field>num./A
odbc>field>type./A
odbc>field>len./A
odbc>field>precision./A
odbc>field>scale./A
odbc>longreadlen./A
odbc>num>fields./A
odbc>num>ro3s./A
odbc>result./A
odbc>result>all./A
odbc>setoption./
odbc>free>resul
t./
Resultado
ODB5
#irdstep lin"
#irdstep result
OpenL "ey
openssl>get>pri5ateBe
y./A
openssl>get>publicBey
./
openssl>sign./A
openssl>seal./A
openssl>open./A
openssl>5erify./
openssl>free>Be
y./
Llave
OpenL
OpenL J;439 openssl>+9DO>read./
openssl>+9DO>parse./A
openssl>+9DO>checBpurp
ose./
openssl>+9DO>fr
ee./
Llave pB#lica
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
oracle 5ursor ora>open./
ora>bind./A
ora>columnname./A
ora>columnsi6e./A
ora>columntype./A
ora>error./A
ora>errorcode./A
ora>e+ec./A ora>fetch./A
ora>fetch>into./A
ora>getcolumn./A
ora>numcols./A
ora>numro3s./A
ora>parse./
ora>close./ 5ursor Oracle
oracle lin" ora>logon./
ora>do./A ora>error./A
ora>errorcode./A
ora>rollbacB./A
ora>commitoff./A
ora>commiton./A
ora>open./A ora>commit
./
ora>logoff./
+nlace con
#ase de datos
oracle
oracle lin"
persistent
ora>plogon./
ora>do./A ora>error./A
ora>errorcode./A
ora>rollbacB./A
ora>commitoff./A
ora>commiton./A
ora>open./A ora>commit
./
Nadie
+nlace
persistente
con #ase de
datos oracle
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
pd( document pdf>ne3./
pdf>add>booBmarB./A
pdf>add>launchlinB./A
pdf>add>locallinB./A
pdf>add>note./A
pdf>add>pdflinB./A
pdf>add>3eblinB./A
pdf>arc./A
pdf>attach>file./A
pdf>begin>page./A
pdf>circle./A pdf>clip./A
pdf>closepath./A
pdf>closepath>fill>stroB
e./A pdf>closepath>stroBe
./A pdf>concat./A
pdf>continue>te+t./A
pdf>cur5eto./A
pdf>end>page./A
pdf>endpath./A pdf>fill./A
pdf>fill>stroBe./A
pdf>findfont./A
pdf>get>buffer./A
pdf>get>image>height./A
pdf>get>image>3idth./A
pdf>get>parameter./A
pdf>get>5alue./A
pdf>lineto./A pdf>mo5eto
./A pdf>open>ccitt./A
pdf>open>file./A
pdf>open>image>file./A
pdf>place>image./A
pdf>rect./A pdf>restore./A
pdf>rotate./A pdf>sa5e./A
pdf>scale./A pdf>setdash
./A pdf>setflat./A
pdf>setfont./A
pdf>setgray./A
pdf>setgray>fill./A
pdf>setgray>stroBe./A
pdf>setlinecap./A
pdf>setline'oin./A
pdf>setline3idth./A
pdf>setmiterlimit./A
pdf>setpolydash./A
pdf>setrgbcolor./A
pdf>setrgbcolor>fill./A
pdf>setrgbcolor>stroBe
./A pdf>set>border>color
./A pdf>set>border>dash
./A pdf>set>border>style
./A pdf>set>char>spacing
./A pdf>set>duration./A
pdf>close./A
pdf>delete./
Documento
PDF
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
pd( image
pdf>open>image./A
pdf>open>image>file
./A
pdf>open>memory>im
age./
pdf>get>image>height./A
pdf>get>image>3idth./A
pdf>open>CCITT./A
pdf>place>image./
pdf>close>image
./
.magen en
archivo PDF
pd( o#'ect
pd( outline
pgs/l large
o#'ect
pg>lo>open./
pg>lo>open./A
pg>lo>create./A
pg>lo>read./A
pg>lo>read>all./A
pg>lo>seeB./A pg>lo>tell
./A pg>lo>unlinB./A
pg>lo>3rite./
pg>lo>close./
O#'ato Largo
PostgreOL
pgs/l lin" pg>connect./
pg>affected>ro3s./A
pg>?uery./A
pg>send>?uery./A
pg>get>result./A
pg>connection>busy./A
pg>connection>reset./A
pg>connection>status./A
pg>last>error./A
pg>last>notice./A
pg>lo>create./A
pg>lo>e+port./A
pg>lo>import./A
pg>lo>open./A
pg>lo>unlinB./A pg>host
./A pg>port./A pg>dbname
./A pg>options./A
pg>copy>from./A
pg>copy>to./A
pg>end>copy./A
pg>put>line./A pg>tty./A
pg>trace./A pg>untrace./A
pg>set>client>encoding
./A pg>client>encoding./A
pg>metadata./A
pg>con5ert./A pg>insert
./A pg>select./A pg>delete
./A pg>update./
pg>close./
+nlace con
#ase de datos
PostgreOL
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
pgs/l lin"
persistent
pg>pconnect./
pg>affected>ro3s./A
pg>?uery./A
pg>send>?uery./A
pg>get>result./A
pg>connection>busy./A
pg>connection>reset./A
pg>connection>status./A
pg>last>error./A
pg>last>notice./A
pg>lo>create./A
pg>lo>e+port./A
pg>lo>import./A
pg>lo>open./A
pg>lo>unlinB./A pg>host
./A pg>port./A pg>dbname
./A pg>options./A
pg>copy>from./A
pg>copy>to./A
pg>end>copy./A
pg>put>line./A pg>tty./A
pg>trace./A pg>untrace./A
pg>set>client>encoding
./A pg>client>encoding./A
pg>metadata./A
pg>con5ert./A pg>insert
./A pg>select./A pg>delete
./A pg>update./
Nadie
+nlace
persistente
con #ase de
datos
PostgreOL
pgs/l result
pg>?uery./A
pg>get>result./
pg>fetch>array./A
pg>fetch>ob'ect./A
pg>fetch>result./A
pg>fetch>ro3./A
pg>field>is>null./A
pg>field>name./A
pg>field>num./A
pg>field>prtlen./A
pg>field>si6e./A
pg>field>type./A
pg>last>oid./A
pg>num>fields./A
pg>num>ro3s./A
pg>result>error./A
pg>result>status./
pg>free>result./
Resultado
PostgreOL
pgs/l string
printer
printer #rush
printer (ont
printer pen
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
pspell
pspell>ne3./A
pspell>ne3>config./A
pspell>ne3>personal./
pspell>add>to>personal
./A pspell>add>to>session
./A pspell>checB./A
pspell>clear>session./A
pspell>config>ignore./A
pspell>config>mode./A
pspell>config>personal./A
pspell>config>repl./A
pspell>config>runtogeth
er./A
pspell>config>sa5e>repl
./A pspell>sa5e>3ordlist
./A
pspell>store>replacemen
t./A pspell>suggest./
Nadie
Diccionario
pspell
pspell con(ig pspell>config>create./ pspell>ne3>config./ Nadie
5on(iguraci-
n pspell
a#lotron JL, +slt>create./
+slt>closelog./A
+slt>openlog./A +slt>run
./A +slt>set>sa+>handler
./A +slt>errno./A
+slt>error./A
+slt>fetch>result./A
+slt>free./
+slt>free./
Analizador
sint*ctico
JL,
shmop shmop>open./
shmop>read./A
shmop>3rite./A
shmop>si6e./A
shmop>delete./
shmop>close./
soc"ets (ile
descriptor set
socBet./
accept>connect./A bind./A
connect./A listen./A read./A
3rite./
close./ oc"et
soc"ets iDo
vector

dir dir./ readdir./A re3inddir./ closedir./
Gestor de
directorio
stream fopen./
feof./A fflush./A fgetc./A
fgetcs5./A fgets./A fgetss./A
flocB./A fpassthru./A fputs
./A f3rite./A fread./A fseeB
./A ftell./A fstat./A
ftruncate./A
set>file>buffer./A re3ind
./
fclose./
Gestor de
archivo
pipe popen./
feof./A fflush./A fgetc./A
fgetcs5./A fgets./A fgetss./A
fpassthru./A fputs./A
f3rite./A fread./
pclose./
Gestor de
proceso
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
soc"et fsocBopen./
fflush./A fgetc./A fgetcs5./A
fgets./A fgetss./A fpassthru
./A fputs./A f3rite./A fread
./
fclose./
Gestor de
soc"et
sy#ase2d# lin" sybase>connect./
sybase>?uery./A
sybase>select>db./
sybase>close./
+nlace a #ase
de datos
y#ase
usando la
#i#lioteca DB
sy#ase2d# lin"
persistent
sybase>pconnect./
sybase>?uery./A
sybase>select>db./
Nadie
+nlace
persistente
con #ase de
datos y#ase
usando la
#i#lioteca DB
sy#ase2d# result sybase>?uery./
sybase>data>seeB./A
sybase>fetch>array./A
sybase>fetch>field./A
sybase>fetch>ob'ect./A
sybase>fetch>ro3./A
sybase>field>seeB./A
sybase>num>fields./A
sybase>num>ro3s./A
sybase>result./
sybase>free>res
ult./
Resultado
y#ase
usando la
#i#lioteca DB
sy#ase2ct lin" sybase>connect./
sybase>affected>ro3s./A
sybase>?uery./A
sybase>select>db./
sybase>close./
+nlace a #ase
de datos
y#ase
usando la
#i#lioteca 5,
sy#ase2ct lin"
persistent
sybase>pconnect./
sybase>affected>ro3s./A
sybase>?uery./A
sybase>select>db./
Nadie
+nlace
persistente
con #ase de
datos y#ase
usando la
#i#lioteca 5,
sy#ase2ct result sybase>?uery./
sybase>data>seeB./A
sybase>fetch>array./A
sybase>fetch>field./A
sybase>fetch>ob'ect./A
sybase>fetch>ro3./A
sybase>field>seeB./A
sybase>num>fields./A
sybase>num>ro3s./A
sybase>result./
sybase>free>res
ult./
Resultado
y#ase
usando la
#i#lioteca 5,
sysvsem sem>get./ sem>ac?uire./ sem>release./
em*(oro de
istema $
Nombre del
Tipo de
Mecurso
Creado Por )sado Por Kestruido Por Kefinici"n
sysvshm shm>attach./
shm>remo5e./A
shm>put>5ar./A
shm>get>5ar./A
shm>remo5e>5ar./
shm>detach./
Memoria
5ompartida
de istema $
EddF 3dd+>pacBet>start./ 3dd+>add>5ars./
3dd+>pacBet>e
nd./
Pa/uete
LDDJ
Fml +ml>parser>create./
+ml>set>ob'ect./A
+ml>set>element>handle
r./A
+ml>set>character>data>
handler./A
+ml>set>processing>instr
uction>handler./A
+ml>set>default>handler
./A
+ml>set>unparsed>entity
>decl>handler./A
+ml>set>notation>decl>h
andler./A
+ml>set>e+ternal>entity>
ref>handler./A +ml>parse
./A +ml>get>error>code./A
+ml>error>string./A
+ml>get>current>line>nu
mber./A
+ml>get>current>column
>number./A
+ml>get>current>byte>in
de+./A
+ml>parse>into>struct./A
+ml>parser>set>option./A
+ml>parser>get>option./
+ml>parser>free
./
Analizador
sint*ctico
JML
zli# g6open./
g6eof./A g6getc./A g6gets./A
g6getss./A g6passthru./A
g6puts./A g6read./A
g6re3ind./A g6seeB./A
g6tell./A g63rite./
g6close./
Archivo
comprimido
gz
Ap%ndice :. :ista de ProtocolosAEn5olturas
,oportadas
La siguiente es una lista de los varios protocolos estilo @RL /ue P&P tiene integrado para su uso
con las (unciones del sistema de archivosA tales como fopen./ y copy./; Adicionalmente a estas
envolturasA y a partir de P&P 8;7;3A usted puede escri#ir sus propias envolturas usando scripts P&P y
stream>3rapper>register./;
,istema de archi5os
,odas las versiones de P&P; @sada eFpl)citamente mediante #ile@// a partir de P&P 8;7;3
/ruta/hacia/archi=o.ext
ruta/relati=a/hacia/archi=o.ext
archi=oEnLir,ctual.ext
R@/ruta/hacia/archi=o%8in.ext
R@VrutaVhaciaVarchi=o%8in.ext
VVser=idor%smbVrecurso%compartidoVrutaVhaciaVarchi=o%8in.ext
#ile@///ruta/hacia/archi=o.ext
#ile@// es la envoltura predeterminada usada por P&PA y representa el sistema de archivos local;
5uando se especi(ica una ruta relativa >una ruta /ue no comienza con DA hA hhA o una letra de unidad en
EindoEs?A la ruta provista ser* aplicada contra el directorio de tra#a'o actual; +n muchos casos <ste
es el directorio en el cual reside el scriptA a menos /ue haya sido modi(icado; Al usar la sapi 5L.A
<ste esA por de(ectoA el directorio desde donde (ue llamado el script;
5on algunas (uncionesA como fopen./ y file>get>contents./A 6nclu#e_path puede usarse
opcionalmente tam#i<n para las #Bs/uedas de rutas relativas;
Tabla :(!. Mesumen de En5oltura
Atributo ,oporte
Restricci-n por alloEZurlZ(open; No
Permite Lectura i
Permite +scritura i
Permite Adici-n i
Permite Lectura y +scritura
imult*nea
i
oporte stat./ i
oporte unlinB./ i
oporte rename./ i
oporte mBdir./ i
oporte rmdir./ i
HTTP y HTTP,
P&P 7A P&P 8A P&P 4; https@// a partir de P&P 8;7;3
http@//example.com
http@//example.com/archi=o.php?=ar6>=al6&=arC>=alC
http@//usuario@contrasenya^example.com
https@//example.com
https@//example.com/archi=o.php?=ar6>=al6&=arC>=alC
https@//usuario@contrasenya^example.com
Permite acceso de s-lo2lectura a archivosDrecursos a trav<s de &,,P 1;3A usando el m<todo &,,P
G+,; @na ca#ecera !ost: es enviada con la petici-n para gestionar hosts virtuales #asados en
nom#res; i ha con(igurado una cadena userZagent usando su archivo ini o en el conteFto de
secuenciaA tam#i<n <sta ser* usada en la petici-n;
A5iso
5uando se usa LA Microso(t .. violara el protocoloA cerrando la coneFion sin mandar un
indicador closeZnoti(y; P&P avisara de esto con este mensa'e =LC Fatal Protocol +rror=A cuando
llegue al (inal de los datos; @na solucion a este pro#lema es #a'ar el nivel de aviso de errores del
sistema para /ue no incluya advertencias; P&P 8;7;: y versiones posteriores detectan servidores
.. con este pro#lema y suprime la advertencia; i usais la (uncion fsocBopen./ para crear un
soc"et sslCDDA tendreis /ue suprimir la advertencia eFplicitamente;
Las redirecciones han sido soportadas desde P&P 8;3;4X si se encuentra usando una versi-n anteriorA
necesitar* incluir #arras de cierre en sus @RLs; i es importante conocer la @RL del recurso del
cual proviene su documento >luego de /ue todas las redirecciones han sido procesadas?A necesitar*
tra#a'ar con la serie de ca#eceras de respuesta devueltas por la secuencia;
<?php
$url > Mhttp@//888.example.com/paEina%de%redireccion.phpM;
$da > #open3$url, MrM9;
/W ,ntes de H 1.<.2, use $http%response%header
en luEar de stream%Eet%meta%data39 W/
#oreach3stream%Eet%meta%data3$da9 as $respuesta9 :
/W Suimos redireccionados? W/
i# 3substr3strtolo8er3$respuesta9, 2, 629 >> Mlocation@ M9 :
/W actuali0ar $url con la ubicacion desde donde #uimos
redireccionados W/
$url > substr3$respuesta, 629;
;
;
?>
La secuencia permite acceso al cuerpo del recursoX las ca#eceras son almacenadas en la varia#le
'http_response_hea#er; A partir de P&P 8;7;3A las ca#eceras est*n disponi#les mediante el uso de
stream>get>meta>data./;
Las coneFiones &,,P son de s-lo2lecturaX no puede escri#ir datos o copiar archivos hacia un
recurso &,,P;
Nota- &,,P es soportado a partir de P&P 8;7;3A si ha compilado el soporte para
OpenL;
Tabla :(*. Mesumen de En5oltura
Atributo ,oporte
Restricci-n por alloEZurlZ(open; i
Permite Lectura i
Permite +scritura No
Permite Adici-n No
Permite Lectura y +scritura
imult*nea
NDD
oporte stat./ No
oporte unlinB./ No
oporte rename./ No
oporte mBdir./ No
oporte rmdir./ No
Tabla :(7. Jpciones de conte+to .a la altura de PHP 9.D.D/
Nombre )so Predeterminado
metho#
#ETA POSTA u otro m<todo &,,P soportado por el servidor
remoto;
#ET
hea#er
5a#eceras adicionales a ser enviadas durante la petici-n; Los
valores en esta opci-n so#rescri#ir*n otros valores >tales como
User=aEent:A !ost:A y ,uthent6cat6on:?;

user_aEe
nt
$alor a enviar con la ca#ecera @ser2AgentC; +ste valor solo ser*
usado si user2agent no es especi(icado en la opci-n de conteFto
hea#er anterior;
Par*metro
php.iniC
user_aEent
content
Datos adicionales a ser enviados despu<s de las ca#eceras;
,)picamente usados con peticiones PO, o P@,;

pro8?
@R. /ue especi(ica la direcci-n del servidor proFy; >p;e';
tcp://pro8?.e8ample.com:S100 ?;

re@uest_9
ullur6
5uando es de(inido como TRUEA la @R. completa ser* usada a la
hora de construir la petici-n; >+s decirA -ET
http://777.e8ample.com/ruta/hac6a/arch6o.html !TT+/1.0?;
Aun/ue <ste es un (ormato de petici-n no2est*ndarA algunos
servidores proFy lo re/uieren;
FALSE
Jpciones de conte+to de las secuencias de socBet interno- Puede /ue se soporten
opciones de conteFto adicionales por el transporte impl)cito; Para secuencias http://A
re(i<rase a las opciones de conteFto para el transporte tcp://; Para secuencias https://A
re(i<rase a las opciones de conteFto del transporte ssl://;
;TP y ;TP,
P&P 7A P&P 8A P&P 4; #tps@// a partir de P&P 8;7;3
#tp@//example.com/pub/archi=o.txt
#tp@//usuario@contrasenya^example.com/pub/archi=o.txt
#tps@//example.com/pub/archi=o.txt
#tps@//usuario@contrasenya^example.com/pub/archi=o.txt
Permite acceso de lectura a archivos eFsistentes y la creaci-n de nuevos archivos mediante F,P; i
el servidor no soporta el modo pasivo de (tpA la coneFi-n (allar*;
Puede a#rir archivos para lectura o para escrituraA pero no en los dos modos simult*neamente; i el
archivo remoto eFiste previamente en el servidor (tp e intenta a#rirlo para escrituraA pero no tiene
especi(icada la opci-n de conteFto oer7r6teA la coneFi-n (allar*; i necesita so#rescri#ir archivos
eFistentes so#re (tpA especi(i/ue la opci-n oer7r6te en el conteFto y a#ra el archivo para escritura;
AlternativamenteA puede usar la eFtensi-n F,P;
Adici"n- A partir de P&P 4;3;3A los archivos pueden ser eFtendidosA agregando nuevos
datos al (inalA mediante la envoltura de @RL 9tp://; +n versiones anterioresA al intentar
adicionar datos a un archivo mediante 9tp:// se producir* un (allo;
#tps@// se ha introducido en P&P 8;7;3; +s igual a #tp@//A pero intenta negociar una coneFi-n
segura con el servidor (tp; i el servidor no soporta LA entonces la coneFi-n recae so#re el (tp
corrienteA sin encripci-n;
Nota- F,P es soportado desde P&P 8;7;3A si ha compilado el soporte para OpenL;
Tabla :(8. Mesumen de En5oltura
Atributo PHP 8 PHP 9
Restricci-n por
alloEZurlZ(open;
i i
Permite Lectura i i
Permite +scritura
i >archivos
nuevos
Bnicamente?
i >archivos nuevosDarchivos eFistentes con oer7r6te?
Permite Adici-n No i
Permite Lectura y
+scritura imult*nea
No No
oporte stat./ No
A partir de P&P 4;3;3C -lo los elementos filesi6e./A
filetype./A file>e+ists./A is>file./A e is>dir./; A partir de
P&P 4;1;3C filemtime./;
oporte unlinB./ No i
oporte rename./ No i
oporte mBdir./ No i
oporte rmdir./ No i
Tabla :(9. Jpciones de conte+to .a la altura de PHP 9.D.D/
Nombre )so Predeterminado
oer7r6te
Permite la so#rescritura de archivos previamente eFistentes
en el servidor remoto; e aplica al modo de escritura >carga
de archivos? solamente;
FALSE
>Desha#ilitada?
Nombre )so Predeterminado
resume_pos
Desplazamiento de archivo para iniciar la trans(erencia; e
aplica Bnicamente al modo de lectura >descarga de archivos?;
3 >5omienzo del
Archivo?
pro8?>P&P
4;1;3 o
superior?
Petici-n proFy F,P mediante un servidor proFy http; e
aplica Bnicamente a las operaciones de lectura de archivos;
+'C tcp://s@u6#.e8ample.com:P000

Jpciones de conte+to de las secuencias de socBet interno- Puede /ue se soporten
opciones de conteFto adicionales por el transporte impl)cito; Para secuencias 9tp://A
re(i<rase a las opciones de conteFto para el transporte tcp://; Para secuencias 9tps://A
re(i<rase a las opciones de conteFto del transporte ssl://;
,ecuencias de entradaAsalida PHP
P&P 7;3;17 y superiorA php@//output y php@//input a partir de P&P 8;7;3A
php@//#ilter desde P&P 4;3;3
php@//stdin
php@//stdout
php@//stderr
php@//output
php@//input
php@//#ilter
php@//stdinA php@//stdout y php@//stderr le o(recen acceso a las secuencias de
entrada o salida correspondientes del proceso P&P;
php@//output le permite escri#ir so#re el mecanismo de #B(er de salida en la misma manera /ue
lo hacen print./ y echo./;
php@//input le permite leer datos PO, en su (orma primitiva; +s una alternativa /ue consume
menos memoria /ue '!TT+_R,I_+OST_D,T, y no re/uiere de directivas php.ini especiales;
php@//stdin y php@//input son de s-lo2lecturaA mientras /ue php@//stdoutA
php@//stderr y php@//output son de s-lo2escritura;
php@//#ilter es una especie de meta2envoltura diseWada para permitir el uso de (iltros so#re
una secuencia al momento de su apertura; Resulta Btil con a/uellas (unciones de archivos todo2en2
unoA como readfile./A file./A y file>get>contents./ en donde de otro modo no ha#r)a (orma de
aplicar (iltros a la secuencia antes de /ue los contenidos (ueran le)dos;
+l destino php@//#ilter reci#e los siguientes Hpar*metrosH como partes de su HrutaH;
/resource:$secuenc6a a ser 96ltra#a& >re@uer6#o? +ste par*metro de#e estar u#icado el (inal
de su especi(icaci-n php@//#ilter y de#e apuntar a la secuencia /ue desea (iltrar;
<?php
/W Esto es Dalente a simplemente@
read#ile3"http@//888.example.com"9;
ya Que no se aplica #iltro alEuno W/
read#ile3"php@//#ilter/resource>http@//888.example.com"9;
?>
/rea#:$l6sta #e 96ltros a apl6car a la ca#ena #e lectura& >opc6onal? +ste par*metro toma
uno o m*s nom#res de (iltros separados por el caracter V;
<?php
/W Esto produce como salida el contenido de
888.example.com enteramente en mayusculas W/
read#ile3"php@//#ilter/read>strinE.toupper/resource>http@//888.example.com"9;
/W Esto hace lo mismo pero tambien codi#ica la salida con '?*6< W/
read#ile3"php@//#ilter/read>strinE.toupperTstrinE.rot6</resource>http@//888.example.com"9;
?>
/7r6te:$l6sta #e 96ltros a apl6car a la ca#ena #e escr6tura& >opc6onal? +ste par*metro toma
uno o m*s nom#res de (iltro separados por el caracter V;
<?php
/W Esto #iltra la cadena "Hola "undo" a tra=es del #iltro rot6<,
lueEo escribe al archi=o ejemplo.txt en el directorio actual W/
#ile%put%contents3"php@//#ilter/8rite>strinE.rot6</resource>ejemplo.txt","Hola "undo"9;
?>
/$l6sta #e 96ltros a apl6car a am1as ca#enas& >opc6onal? 5ual/uier lista de (iltros /ue no
est< precedida por rea#: o 7r6te: ser* aplicada tanto a la cadena de lectura como a la de
escritura >segBn sea el caso?;
Tabla :(<. Mesumen de En5oltura .Para php:88filterE refi%rase al resumen de la en5oltura
siendo filtrada./
Atributo ,oporte
Restricci-n por alloEZurlZ(open; No
Permite Lectura php://st#6n y php://6nput Bnicamente;
Permite +scritura php://st#outA php://st#errA y php://output Bnicamente;
Permite Adici-n
php://st#outA php://st#errA y php://output Bnicamente; >Walente
a la escritura?
Permite Lectura y +scritura
imult*nea
No; +stas envolturas son unidireccionales;
oporte stat./ No
oporte unlinB./ No
oporte rename./ No
oporte mBdir./ No
oporte rmdir./ No
,ecuencias de Compresi"n
0lib@ P&P 8;3;8 2 P&P 8;0;7 >s-lo sistemas con (opencoo"ie?
compress.0lib@// y compress.b0ipC@// P&P 8;7;3 y superior
0lib@
compress.0lib@//
compress.b0ipC@//
0lib@ (unciona como g6open./A con la eFcepci-n de /ue la secuencia puede ser usada con fread./
y otras (unciones del sistema de archivos; +sto se ha hecho o#soleto en P&P 8;7;3 de#ido a las
am#igjedades presentes con nom#res de archivos /ue contienen caracteres HCHX use
compress.0lib@// en su lugar;
compress.0lib@// y compress.b0ipC@// son Walentes a g6open./ y b6open./
respectivamenteA y operan incluso so#re sistemas /ue no tienen soporte para (opencoo"ie;
Tabla :(=. Mesumen de En5oltura
Atributo ,oporte
Restricci-n por alloEZurlZ(open; No
Permite Lectura i
Permite +scritura i
Permite Adici-n i
Permite Lectura y +scritura
imult*nea
No
oporte stat./
NoA use la envoltura 96le:// normal para realizar stat so#re
archivos comprimidos;
oporte unlinB./
NoA use la envoltura 96le:// normal para eliminar archivos
comprimidos;
oporte rename./ No
oporte mBdir./ No
oporte rmdir./ No
,hell ,eguro *
sshC.shell@// sshC.exec@// sshC.tunnel@// sshC.s#tp@// sshC.scp@//
P&P 8;7;3 y superiores >P+5L?
sshC.shell@//usuario@contrasenya^example.com@CC/xterm
sshC.exec@//usuario@contrasenya^example.com@CC/usr/local/bin/a
lEun%comando
sshC.tunnel@//usuario@contrasenya^example.com@CC/6KC.6GJ.2.6@6
1
sshC.s#tp@//usuario@contrasenya^example.com@CC/ruta/hacia/arch
i=o
Esta en5oltura no se encuentra habilitada por defecto- Para usar las envolturas
sshC.W@//A es necesario instalar la eFtensi-n &0 disponi#le desde P+5L;
Adem*s de aceptar detalles de inicio de sesi-n tradicionales tipo @R.A las envolturas ssh0 reusan
coneFiones a#iertas pasando el recurso de coneFi-n en la porci-n host de la @RL;
E'emplo :(!. Abrir una secuencia desde una cone+i"n acti5a
<?php
$sesion > sshC%connect3Mexample.comM, CC9;
sshC%auth%pubIey%#ile3$sesion, Mnombre%usuarioM,
M/home/usuario/.ssh/id%rsa.pubM,
M/home/usuario/.ssh/id%rsaM, MsecretoM9;
$secuencia > #open3"sshC.tunnel@//$sesion/remote.example.com@6C<1", MrM9;
?>
Tabla :(N. Mesumen de En5oltura
Atributo ssh*.shell ssh*.e+ec ssh*.tunnel ssh*.sftp ssh*.scp
Restringido por
alloEZurlZ(open;
i i i i i
Permite lectura i i i i i
Permite escritura i i i i No
Permite adici-n No No No
i >5uando lo permite
el servidor?
No
Permite Lectura y +scritura
imult*nea
i i i i No
oporta stat./ No No No i No
oporta unlinB./ No No No i No
oporta rename./ No No No i No
oporta mBdir./ No No No i No
oporta rmdir./ No No No i No
Tabla :(O. Jpciones de conte+to
Nombre )so Predeterminado
sess6on Recurso ssh0 preconectado para reusar
s9tp Recurso s(tp prereservado para reusar
metho#s
M<todos de intercam#io de llaveA llave de hostA ci(radoA
compresi-n y MA5 a usar

call1ac>s
username Nom#re de usuario para la coneFi-n
pass7or# 5ontraseWa a usar con autenticaci-n de contraseWas
pu1>e?_96l
e
Nom#re del archivo de llave pB#lica a usar para la
autenticaci-n

pr6>e?_96l
e
Nom#re del archivo de llave privada a usar para la
autenticaci-n

en Matriz asociativa de varia#les de entorno a de(inir
Nombre )so Predeterminado
term
,ipo de emulaci-n de terminal para solicitar cuando se
reserva una pty

term_76#t
h
Ancho de la terminal solicitada cuando se reserva una pty
term_he6E
ht
Altura de la terminal solicitada cuando se reserva una pty
term_un6ts @nidades a usar con termZEidth y termZheight
SSH*_TERM_UNIT_CH
ARS
,ecuencias de Audio
oEE@// P&P 8;7;3 y superior >P+5L?
oEE@//archi=o%sonido.oEE
oEE@///ruta/hacia/archi=o%sonido.oEE
oEE@//http@//888.example.com/ruta/hacia/secuencia%sonido.oEE
Esta en5oltura no est habilitada de manera predeterminada- Para poder usar la
envoltura oEE@//A necesita instalar la eFtensi-n OGGD$or#isA disponi#le desde P+5L;
Los archivos a#iertos para lectura mediante la envoltura oEE@// son tratados como audio
codi(icado a#ierto usando el codec OGGD$or#is; De (orma seme'anteA los archivos a#iertos para
escritura o adici-n a trav<s de la envoltura oEE@// son escritos como datos de audio comprimido;
5uando se usa stream>get>meta>data./ so#re un archivo OGGD$or#is a#ierto para lecturaA
devolver* varios detalles so#re la secuenciaA incluyendo la eti/ueta en#orA cual/uier comentario
incluido en commentsA el nBmero de canales en channelsA la tasa de muestra en rateA y el rango de
codi(icaci-n descrito porC 16trate_lo7erA 16trate_upperA 16trate_nom6nalA y 16trate_76n#o7;
Tabla :(!D. Mesumen de En5oltura
Atributo ,oporte
Restricci-n por alloEZurlZ(open; No
Permite Lectura i
Permite +scritura i
Permite Adici-n i
Permite Lectura y +scritura
imult*nea
No
oporte stat./ No
oporte unlinB./ No
oporte rename./ No
oporte mBdir./ No
oporte rmdir./ No
Tabla :(!!. Jpciones de conte+to
Nombre )so Predeterminado Modo
pcm_mo#
e
5odi(icaci-n P5M a aplicar durante la lecturaA un valor
entreC O##$OR(IS_PCM_U,A
O##$OR(IS_PCM_S,A
O##$OR(IS_PCM_U)1_(EA
O##$OR(IS_PCM_S)1_(EA
O##$OR(IS_PCM_U)1_LEA y
O##$OR(IS_PCM_S)1_LE; >M vs 1K #itA con signo o
sin signoA #ig2endian o little2endian?
OGG$ORB.ZP5
MZ1KZL+
Lectura
rate ,asa de muestra de datos de entradaA eFpresada en &z 88133
+scrituraD
Adici-n
16trate
5uando es un valor enteroA la tasa de #its (i'a para
codi(icar; >1K333 a 1713:0? 5uando se de(ine como
(lotanteA la calidad de tasa de #its varia#le a usar; >21;3
a 1;3?
10M333
+scrituraD
Adici-n
channels
+l nBmero de canales de audio a codi(icarA
normalmente 1 >Mono?A o 0 >tero?; u rango puede
llegar hasta 1K;
0
+scrituraD
Adici-n
comments
@na matriz de valores de cadena para codi(icar en la
ca#ecera del material;

+scrituraD
Adici-n
Ap%ndice M. :ista de ;iltros Kisponibles
La siguiente es una lista de unos cuantos (iltros de secuencia integrados /ue puede usar con
stream>filter>append./; u versi-n de P&P puede tener m*s >o menos? (iltros de los /ue son
listados a/u);
$ale la pena anotar una ligera asimetr)a entre stream>filter>append./ y stream>filter>prepend./;
5ada secuencia en P&P contiene un pe/ueWo 1d9er #e lectura en donde almacena los #lo/ues de
datos reci#idos desde el sistema de archivos u otro recurso para procesar los datos de la (orma m*s
e(iciente; ,an pronto como los datos son tomados del recurso y colocados en el #B(er interno de la
secuenciaA <stos son procesados inmediatamente a trav<s de cual/uier (iltro ad'unto sin importar /ue
la aplicaci-n P&P est< lista para los datos o no; i los datos est*n en el #B(er de lectura cuando un
(iltro es aaa#6#o al 96nalA los datos ser*n procesados inmediatamente a trav<s del (iltro haciendo
parecer /ue el proceso (uera transparente; in em#argoA si los datos est*n en el #B(er de lectura
cuando un (iltro es a#Uunta#o al com6enDoA los datos NO ser*n procesados a trav<s del (iltro; +n su
lugar esperar* a /ue el siguiente #lo/ue de datos sea recuperado del recurso;
Para una lista de (iltros instalados en su versi-n de P&PA use stream>get>filters./;
;iltros de Cadena
5ada uno de estos (iltros hace precisamente lo /ue sus nom#res implican y corresponden al
comportamiento de una (unci-n de manipulaci-n de cadenas /ue hace parte de php; Para m*s
in(ormaci-n so#re un (iltro dadoA re(i<rase a la p*gina del manual de la (unci-n correspondiente;
str6nE.rot1R >a partir de P&P 8;7;3? +l uso de este (iltro es Walente a procesar todos los datos de la
secuencia a trav<s de la (unci-n str>rot!7./;
E'emplo M(!. string.rot!7
<?php
$da > #open3Mphp@//outputM, M8M9;
stream%#ilter%append3$da, MstrinE.rot6<M9;
#8rite3$da, "Esto es una prueba.Vn"9;
/W 4mprime@ '#Eb r# han cehron. W/
?>
str6nE.toupper >a partir de P&P 4;3;3? +l uso de este (iltro es Walente a procesar todos los datos de la
secuencia a trav<s de la (unci-n strtoupper./;
E'emplo M(*. string.toupper
<?php
$da > #open3Mphp@//outputM, M8M9;
stream%#ilter%append3$da, MstrinE.toupperM9;
#8rite3$da, "Esto es una prueba.Vn"9;
/W 4mprime@ E&*? E& +., '+EZ,. W/
?>
str6nE.tolo7er >a partir de P&P 4;3;3? +l uso de este (iltro es Walente a procesar todos los datos de la
secuencia a trav<s de la (unci-n strtolo3er./;
E'emplo M(7. string.tolo3er
<?php
$da > #open3Mphp@//outputM, M8M9;
stream%#ilter%append3$da, MstrinE.tolo8erM9;
#8rite3$da, "Esto es una prueba.Vn"9;
/W 4mprime@ esto es una prueba. W/
?>
str6nE.str6p_taEs >a partir de P&P 4;3;3? +l uso de este (iltro es Walente a procesar todos los datos de
la secuencia a trav<s de la (unci-n strip>tags./; Acepta par*metros en una de dos (ormasC %a sea
como una cadena /ue contiene una lista de eti/uetasA similar al segundo par*metro de la (unci-n
strip>tags./A o como una matriz de nom#res de eti/ueta;
E'emplo M(8. string.strip>tags
<?php
$da > #open3Mphp@//outputM, M8M9;
stream%#ilter%append3$da, MstrinE.strip%taEsM, &*'E,"%S4O*E'%7'4*E, "<b><i><u>"9;
#8rite3$da, "<b>texto en neErilla</b> lle=ado a <h6>ni=el de cabecera 6</h6>Vn"9;
#close3$da9;
/W 4mprime@ <b>texto en neErilla</b> lle=ado a ni=el de cabecera 6 W/
$da > #open3Mphp@//outputM, M8M9;
stream%#ilter%append3$da, MstrinE.strip%taEsM, &*'E,"%S4O*E'%7'4*E, array3MbM,MiM,MuM99;
#8rite3$da, "<b>texto en neErilla</b> lle=ado a <h6>ni=el de cabecera 6</h6>Vn"9;
#close3$da9;
/W 4mprime@ <b>texto en neErilla</b> lle=ado a ni=el de cabecera 6 W/
?>
;iltros de Con5ersi"n
De (orma similar a los (iltros string;VA los (iltros convert;V realizan acciones seme'antes a sus
nom#res; Los (iltros de conversi-n (ueron agregados en P&P 4;3;3; Para m*s in(ormaci-n so#re un
(iltro dadoA re(i<rase a la p*gina del manual so#re la (unci-n correspondiente;
conert.1aseX;=enco#e y conert.1aseX;=#eco#e +l uso de estos (iltros es Walente a procesar todos
los datos de la secuencia a trav<s de las (unciones base<8>encode./ y base<8>decode./
respectivamente; conert.1aseX;=enco#e soporta el uso de par*metros entregados como una matriz
asociativa; i se usa lonE6tu#=l6neaA la salida #aseK8 ser* separada en pa/uetes de lonE6tu#=l6nea
caracteres cada uno; i se usa caracteres=96nal=#e=l6neaA cada pa/uete ser* delimitado por los
caracteres dados; +stos par*metros o(recen el mismo e(ecto /ue usar base<8>encode./ con
chunB>split./;
E'emplo M(9. con5ert.base<8(encode y con5ert.base<8(decode
<?php
$da > #open3Mphp@//outputM, M8M9;
stream%#ilter%append3$da, Mcon=ert.baseG1FencodeM9;
#8rite3$da, "*his is a test.Vn"9;
#close3$da9;
/W 4mprime@ (-hpcyZpcyZh4H'lc<NuRE>> W/
$param > array3MlineFlenEthM >> J, MlineFbreaIFcharsM >> "VrVn"9;
$da > #open3Mphp@//outputM, M8M9;
stream%#ilter%append3$da, Mcon=ert.baseG1FencodeM, &*'E,"%S4O*E'%7'4*E, $param9;
#8rite3$da, "*his is a test.Vn"9;
#close3$da9;
/W 4mprime@ (-hpcyZp
@ cyZh4H'l
@ c<NuRE>> W/
$da > #open3Mphp@//outputM, M8M9;
stream%#ilter%append3$da, Mcon=ert.baseG1FdecodeM9;
#8rite3$da, "(-hpcyZpcyZh4H'lc<NuRE>>"9;
#close3$da9;
/W 4mprime@ *his is a test. W/
?>
conert.@uote#=pr6nta1le=enco#e y conert.@uote#=pr6nta1le=#eco#e +l uso de la versi-n de
docedi(icaci-n de este (iltro es alente a procesar todos los datos de la secuencia a trav<s de la
(unci-n ?uoted>printable>decode./; No eFiste una (unci-n e/uivalente a conert.@uote#=
pr6nta1le=enco#e; conert.@uote#=pr6nta1le=enco#e soporta el uso de par*metros dados como una
matriz asociativa; Adicionalmente a los par*metros soportados por conert.1aseX;=enco#eA
conert.@uote#=pr6nta1le=enco#e soporta tam#i<n los argumentos #ooleanos 16nar? y 9orce=enco#e=
96rst; conert.1aseX;=#eco#e soporta Bnicamente el par*metro l6ne=1rea>=chars como una
sugerencia del tipo para eliminar del material codi(icado;
E'emplo M(<. con5ert.?uoted(printable(encode y con5ert.?uoted(printable(decode
<?php
$da > #open3Mphp@//outputM, M8M9;
stream%#ilter%append3$da, Mcon=ert.QuotedFprintableFencodeM9;
#8rite3$da, "Esto es una prueba.Vn"9;
/W 4mprime@ >Esto es una prueba.>2, W/
?>
;iltros de Compresi"n
Mientras /ue la secci-n de nom#re Secuenc6as #e Compres6`n en Ap<ndice L o(rece una (orma de
crear archivos compati#les con gzip y #z0 en el sistema de archivos localA no o(rece un m<todo de
compresi-n generalizado so#re secuencias de redA ni o(rece la (orma de comenzar con una secuencia
no2comprimida y trasladarse a una comprimida; Para estoA un (iltro de compresi-n puede ser
aplicado so#re cual/uier recurso de secuencia en cual/uier momento;
Nota- Los (iltros de compresi-n no generan ca#eceras ni caracteres (inales usados por
utilidades de la l)nea de comandos como ED6p; -lo comprimen y descomprimen las
porciones signi(icativas de las secuencias de datos comprimidas;
Dl61.#e9late >compresi-n? y Dl61.6n9late >descompresi-n? son implementaciones de los m<todos de
compresi-n descritos en RF5 1941; +l (iltro #e9late reci#e hasta tres par*metros pasados como una
matriz asociativa; leel descri#e la intensidad de compresi-n >129?; NBmeros m*s grandes producenA
por lo generalA resultados m*s pe/ueWosA al costo de tiempo de procesamiento adicional; Dos niveles
de compresi-n especiales eFisten tam#i<nC 3 >para no2compresi-n?A y 21 >el valor predeterminado de
zli# 22 actualmente K?; 76n#o7 es el registro en #ase20 del tamaWo de ventana del circuito cerrado de
compresi-n; $alores m*s altos >de hasta 14 22 70:KM #ytes? producen me'or compresi-n al costo de
m*s memoriaA mientras valores m*s #a'os >alrededor de 9 22 410 #ytes? producen una compresi-n
in(erior en un espacio de memoria m*s pe/ueWo; +l tamaWo de 76n#o7 es actualmente )2; memor?
es una escala /ue indica cu*nta memoria de#er)a ser reservada; Los valores v*lidos est*n en el rango
de 1 >reserva m)nima? a 9 >reserva m*Fima?; +sta reserva de memoria a(ecta Bnicamente la repidez y
no tiene impacto en el tamaWo del resultado generado;
Nota- Dado /ue el nivel de compresi-n es el par*metro usado con mayor (recuenciaA
puede indicarse alternativamente como un valor entero simple >en lugar de un elemento
tipo matriz?;
Los (iltros de compresi-n zli#;V est*n disponi#les con P&P desde la versi-n S.1.0 si el soporte
Re(erencia 5JL.A 3unc6ones #e Compres6`n ^l61 se encuentra ha#ilitado; ,am#i<n est*n
disponi#les como una caracter)stica portada de vuelta en la versi-n S.0.8A instalando el pa/uete
zli#Z(ilter desde P+5L; +stos (iltros no est*n disponi#les para P&P 8;
E'emplo M(=. 2lib.deflate y 2lib.inflate
<?php
$params > array3Mle=elM >> G, M8indo8M >> 65, MmemoryM >> K9;
$texto%oriEinal > "*his is a test.Vn*his is only a test.Vn*his is not an important strinE.Vn";
echo "El texto oriEinal tiene " . strlen3$texto%oriEinal9 . " caracteres.Vn";
$da > #open3Mtest.de#latedM, M8M9;
stream%#ilter%append3$da, M0lib.de#lateM, &*'E,"%S4O*E'%7'4*E, $params9;
#8rite3$da, $texto%oriEinal9;
#close3$da9;
echo "El archi=o comprimido tiene " . #ilesi0e3Mtest.de#latedM9 . " bytes.Vn";
echo "El texto oriEinal era@Vn";
/W +se read#ile y 0lib.in#late para descomprimir al =uelo W/
read#ile3Mphp@//#ilter/0lib.in#late/resource>test.de#latedM9;
/W -enera la salida@
El texto oriEinal tiene H2 caracteres.
El archi=o comprimido tiene 5G bytes.
El texto oriEinal era@
*his is a test.
*his is only a test.
*his is not an important strinE.
W/
?>
E'emplo M(N. 2lib.deflate simple
<?php
$texto%oriEinal > "*his is a test.Vn*his is only a test.Vn*his is not an important strinE.Vn";
echo "El texto oriEinal tiene " . strlen3$texto%oriEinal9 . " caracteres.Vn";
$da > #open3Mtest.de#latedM, M8M9;
/W ,Qui "G" indica el ni=el G de compresion W/
stream%#ilter%append3$da, M0lib.de#lateM, &*'E,"%S4O*E'%7'4*E, G9;
#8rite3$da, $texto%oriEinal9;
#close3$da9;
echo "El archi=o comprimido tiene " . #ilesi0e3Mtest.de#latedM9 . " bytes.Vn";
/W -enerates output@
El texto oriEinal tiene H2 caracteres.
El archi=o comprimido tiene 5G bytes.
W/
?>
1D6p2.compress y 1D6p2.#ecompress (uncionan de la misma (orma /ue los (iltros zli# descritos
anteriormente; +l (iltro 1D6p2.compress acepta hasta dos par*metros dados como elementos de una
matriz asociativaC 1loc>s es un valor entero desde 1 hasta 9 /ue indica el nBmero de #lo/ues de
133"#ytes de memoria a reservar para el espacio de tra#a'o; 7or> es tam#i<n un valor entero /ue va
desde 3 a 043A e indica cu*nto es(uerzo de#e invertirse para eFpandir usando el m<todo de
compresi-n normal antes de caer en un m<todo m*s lento pero m*s con(ia#le; Modi(icar este
par*metro a(ecta Bnicamente la rapidez de compresi<n; Ni el tamaWo de la salida comprimida ni el
uso de memoria se modi(ican por este valor; @n (actor de tra#a'o de 3 le indica a la #i#lioteca #zip
/ue de#e usar el valor interno predeterminado; +l (iltro 1D6p2.#ecompress s-lo acepta un par*metroA
el cual puede ser pasado como un valor #ooleano ordinarioA o como el elemento small de una matriz
asociativa; smallA cuando se de(ine a un valor TRUEA le indica a la #i#lioteca #zip de realice una
descompresi-n con una cantidad de memoria m)nimaA al costo de la repidez;
Las (iltros de compresi-n #zip0;V se encuentran disponi#les con P&P desde la versi-n S.1.0 si el
soporte Re(erencia $..A 3unc6ones #e compres6`n AD6p2 se encuentra ha#ilitado; ,am#i<n se
encuentran disponi#les como una caracter)stica portada hacia atr*s en la versi-n S.0.8A instalando el
pa/uete #z0Z(ilter desde P+5L; +stos (iltros no se encuentran disponi#les para P&P 8;
E'emplo M(O. b2ipH.co&press y b2ipH.deco&press
<?php
$param > array3MblocIsM >> K, M8orIM >> 29;
echo "El archi=o oriEinal tiene " . #ilesi0e3MO4RE.&EM9 . " bytes.Vn";
$da > #open3MO4RE.&E.compressedM, M8M9;
stream%#ilter%append3$da, Mb0ipC.compressM, &*'E,"%S4O*E'%7'4*E, $param9;
#8rite3$da, #ile%Eet%contents3MO4RE.&EM99;
#close3$da9;
echo "El archi=o comprimido tiene " . #ilesi0e3MO4RE.&E.compressedM9 . " bytes.Vn";
/W -enera la salida@
El archi=o oriEinal tiene <CJJ bytes.
El archi=o comprimido tiene 61JJ bytes.
W/
?>
Ap%ndice N. :ista de Transportes de ,ocBets
,oportados
La siguiente es una lista de los varios transportes de soc"et estilo @RL /ue P&P tiene integrados
para su uso con (unciones de soc"ets #asados en secuenciasA tales como fsocBopen./A y
stream>socBet>client./; +stos transportes no se aplican a la +Ftensi-n de oc"ets;
Para una lista de transportes instalados con su versi-n de P&P use stream>get>transports./;
Kominio de Internet- TCPE )KPE ,,:E y T:,
P&P 7A P&P 8A P&P 4; ssl:// y tls:// a partir de P&P 8;7;3A ssl2:// y sslR:// a partir de P&P 4;3;0
Nota- i no se especi(ica un transporteA se asumir* tcp://
127.0.0.1
9eP0::1
777.e8ample.com
tcp://127.0.0.1
tcp://9eP0::1
tcp://777.e8ample.com
u#p://777.e8ample.com
ssl://777.e8ample.com
ssl2://777.e8ample.com
sslR://777.e8ample.com
tls://777.e8ample.com
Los soc"ets del Dominio de .nternet esperan un nBmero de puerto 'unto con una direcci-n de
destino; +n el caso de fsocBopen./A <ste es especi(icado en un segundo par*metro y por lo tanto no
tiene impacto so#re el (ormato de la @RL de transporte; in em#argoA en el caso de
stream>socBet>client./ y (unciones relacionadasA as) como ocurre con @RLs tradicionalesA el
nBmero de puerto se especi(ica como un su(i'o del @RL de transporte delimitado con el signo dos
puntos;
tcp://127.0.0.1:P0
tcp://)9eP0::1.:P0
tcp://777.e8ample.com:P0
Kirecciones IP5< num%ricas con n4meros de puerto- +n el segundo e'emplo anteriorA
mientras /ue los e'emplos .Pv8 y con nom#re de dominio (ueron modi(icados solo
ligeramente con la adici-n de sus dos puntos y nBmero de puertoA la direcci-n .PvK es
rodeada por corchetes cuadradosC )9eP0::1.; +sto es para poder distinguir entre los dos
puntos usados en una direcci-n .PvK y a/uellos usados para delimitar el nBmero de
puerto;
Los transportes ssl:// y tls:// >disponi#les Bnicamente cuando se compila el soporte para openssl con
P&P? son eFtensiones del transporte tcp:// el cual incluye encripci-n L; A partir de P&P 8;7;3 el
soporte OpenL de#e ser compilado est*ticamente con P&PA a partir de P&P 4;3;3 puede ser
compilado como m-dulo o est*ticamente;
ssl:// intentar* negociar una coneFi-n L $0 o L $7 dependiendo de las capacidades y
pre(erencias del host remoto; ssl2:// y sslR:// seleccionar*n el protocolo L $0 o L $7
eFpl)citamente;
Tabla N(!. Jpciones de conte+to para los transportes ssl:88 y tls:88 .a partir de PHP 8.7.*/
Nombre )so Predeterminado
er69?_peer TRUE o FALSE; Re/uerir veri(icaci-n del certi(icado L usado; FALSE
allo7_sel9_s
6Ene#
TRUE o FALSE; Permitir certi(icados (irmados por uno mismo; FALSE
ca96le
@#icaci-n del archivo de Autoridad de 5erti(icado en un sistema
de archivos localA el cual de#e ser usado con la opci-n de
conteFto er69?_peer para veri(icar la identidad del conector
remoto;

capath
i no se especi(ica ca96le o el certi(icado no se encuentra all)A el
directorio apuntado por capath es usado para #uscar un
certi(icado apropiado; capath de#e ser un directorio de
certi(icados correctamente ha#ilitado mediante resumen
criptogr*(ico;

local_cert
Ruta al archivo de certi(icado local en el sistema de archivos;
De#e ser un archivo codi(icado mediante P+MA el cual contenga
su certi(icado y llave privada; OpcionalmenteA puede contener la
cadena de eFpendedores del certi(icado;

passphrase La contraseWa con la /ue el archivo local_cert (ue codi(icado;
CN_match
+l nom#re comBn >5ommon Name? /ue estamos esperando; P&P
realizar* comparaciones limitadas de comodines; i el nom#re
comBn no produce coincidenciasA el intento de coneFi-n (allar*;

Nota- De#ido a /ue ssl:// es el transporte #ase para las envolturas https:// y 9tps://A
cual/uier opci-n de conteFto /ue se apli/ue a ssl:// tam#i<n se aplica a https:// y 9tps://;
Kominio )ni+- )ni+ y )KF
un68:// a partir de P&P 7A u#E:// a partir de P&P 4
un68:///tmp/m6soc>
u#E:///tmp/m6soc>
un68:// provee acceso a una coneFi-n secuencial de soc"ets en el dominio @niF; u#E:// provee un
transporte alternativo a un soc"et del dominio @niFA usando el protocolo de datagramas de usuario;
Los soc"ets de dominio @niFA a di(erencia de los soc"ets del dominio de .nternetA no esperan un
nBmero de puerto; +n el caso de fsocBopen./A el par*metro num_puerto de#e ser de(inido como 3;
Ap%ndice J. Tablas de comparaci"n de tipos
PHP
Las siguientes ta#las demuestran los comportamientos de los tipos en P&P y los operadores de
comparaci-nA tanto para comparaciones (leFi#les como estrictas; +ste suplemento se encuentra
relacionado tam#i<n con la secci-n del manual so#re manipulaci-n de tipos; La inspiraci-n ha
provenido de varios comentarios de usuariosA y del tra#a'o realizado en Bluehoes;
Antes de usar estas ta#lasA es importante entender los tipos y sus signi(icados; Por e'emploA *;2* es
string mientras /ue ;2 es un integer; FALSE es un boolean mientras *9alse* es string;
Nota- Los Formularios &,ML no pasan enterosA realesA o valores #ooleanosX ellos pasan
cadenas; Para sa#er si una cadena es num<ricaA usted puede usar is>numeric./;
Nota- &acer un simple 69 L'8M cuando '8 no est< de(inidoA generar* un error de nivel
E_NOTICE; +n lugar de estoA considere el uso de empty./ o isset./A o inicializar sus
varia#les;
Tabla J(!. Comparaciones de $x con funciones PHP
E+presi"n gettype./ empty./
is>null
./
isset./
boolean - if
'$x(
'8 : **J string
TRUE FALSE TRUE FALSE
'8 : NULL N):: TRUE TRUE FALSE FALSE
ar '8J N)::
TRUE TRUE FALSE FALSE
'8 no se encuentra
de(inida
N):: TRUE TRUE FALSE FALSE
'8 : arra?LMJ array
TRUE FALSE TRUE FALSE
'8 : 9alseJ boolean
TRUE FALSE TRUE FALSE
'8 : trueJ boolean
FALSE FALSE TRUE TRUE
'8 : 1J integer
FALSE FALSE TRUE TRUE
'8 : ;2J integer
FALSE FALSE TRUE TRUE
'8 : 0J integer
TRUE FALSE TRUE FALSE
'8 : =1J integer
FALSE FALSE TRUE TRUE
'8 : *1*J string
FALSE FALSE TRUE TRUE
'8 : *0*J string
TRUE FALSE TRUE FALSE
'8 : *=1*J string
FALSE FALSE TRUE TRUE
'8 : *php*J string
FALSE FALSE TRUE TRUE
E+presi"n gettype./ empty./
is>null
./
isset./
boolean - if
'$x(
'8 : *true*J string
FALSE FALSE TRUE TRUE
'8 : *9alse*J string
FALSE FALSE TRUE TRUE
Tabla J(*. Comparaciones fle+ibles con 99
TRUE FALSE @ = ,@ .@. .=. .,@. NULL arra)'( .php.
TRUE TRUE FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE
FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE
1 TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
0 FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE
=1 TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE
*1* TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
*0* FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
*=1* TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE
NU44 FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE
arra?LM FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE
*php* TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
Tabla J(7. Comparaciones estrictas con 999

TRUE FALSE @ = ,@ .@. .=. .,@. NULL arra)'( .php.
TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
1 FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
0 FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
=1 FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
*1* FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
*0* FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
*=1* FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
NULL FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
arra?LM FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
*php* FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
Nota de PHP 7.D- +l valor de cadena *0* (ue considerado como no2vac)o en P&P 7A
este comportamiento cam#i- en P&P 8 en donde es visto ahora como vac)o;
Ap%ndice P. :ista de Identificadores .toBens/
del Anali6ador
$arias partes del lengua'e P&P est*n representadas internamente por cosas tales como ,ZR; +l
P&P muestra identi(icadores como <ste en los errores durante el an*lisis gramaticalA como por
e'emploC =Parse errorC uneFpected ,ZRA eFpecting HAH or HXH in script;php on line 13;= >=+rror de
an*lisisC ,ZR inesperadoA se espera#a HAH o HXH en la l)nea 13 de script;php;=?;
uponemos /ue sa#eis /ue signi(ica ,ZR; Para /uienes no lo conocenA a/u) hay una ta#la con esos
identi(icadoresA la sintaFis de P&PA y re(erencias a lugares apropiados del manual;
Tabla P(!. Identificadores .ToBens/
Identificador ,inta+is Meferencia
,ZANDZ+O@AL i^ Operadores de Asignaci-n
,ZARRA% array>? array./A intaFis de array
,ZARRA%Z5A, >array? Forzado de ,ipos
,ZA as (oreach
,ZBADZ5&ARA5,+R
cual/uier caracter de#a'o del A5.. 70A
eFcepto ht >3F39?A hn >3F3a? y hr >3F3d?
,ZBOOL+ANZAND ii Operadores L-gicos
,ZBOOL+ANZOR ll Operadores L-gicos
,ZBOOLZ5A, >#ool? o >#oolean? Forzado de ,ipos
,ZBR+AS #rea" #rea"
,Z5A+ case sEitch
,Z5&ARA5,+R
,Z5LA class 5lases y O#'etos
,Z5LO+Z,AG N_ o b_
,Z5OMM+N, DD o n 5omentarios
,Z5ON5A,Z+O@AL ;^ Operadores de Asignaci-n
,Z5ON, const
,Z5ON,AN,Z+N5AP+D
Z,R.NG
=(oo= o H#arH intasis de 5adenas
,Z5ON,.N@+ continue
,Z5@RL%ZOP+N
,ZD+5 22 Operadores de .ncrementoDdecremento
,ZD+5LAR+ declare declare
,ZD+FA@L, de(ault sEitch
,ZD.$Z+O@AL D^ Operadores de Asignaci-n
,ZDN@MB+R 3;10A etc; NBmeros en Punto Flotante
,ZDO do do;;Ehile
,ZDOLLARZOP+NZ5@RL%
ZBRA5+
Y\ intaFis de $aria#les 5omple'as Analizadas
,ZDO@BL+ZARROL ^_ intaFis de Matrices
,ZDO@BL+Z5A,
>real?A >dou#le? or
>(loat?
Forzado de ,ipos
,Z+5&O echo echo./
Identificador ,inta+is Meferencia
,Z+L+ else else
,Z+L+.F elsei( elsei(
,Z+MP,% empty empty./
,Z+N5AP+DZANDZL&.,
+PA5+

,Z+NDD+5LAR+ enddeclare declareA intaFis Alternativa
,Z+NDFOR end(or (orA intaFis Alternativa
,Z+NDFOR+A5& end(oreach (oreachA intaFis Alternativa
,Z+ND.F endi( i(A intaFis Alternativa
,Z+NDL.,5& endsEitch sEitchA intaFis Alternativa
,Z+NDL&.L+ endEhile EhileA intaFis Alternativa
,Z+NDZ&+R+DO5 heredoc
,Z+$AL eval>? e5al./
,Z+J., eFit o die e+it./A die./
,Z+J,+ND eFtends eFtendsA 5lases y O#'etos
,ZF.L+ ZZF.L+ZZ 5onstantes
,ZFOR (or (or
,ZFOR+A5& (oreach (oreach
,ZF@N5,.ON
(unction o
c(unction
Funciones
,ZGLOBAL glo#al Am#ito de $aria#les
,Z.F i( i(
,Z.N5 RR Operadores de .ncrementoDdecremento
,Z.N5L@D+ include>? include./
,Z.N5L@D+ZON5+ includeZonce>? include>once./
,Z.NL.N+Z&,ML
,Z.N,Z5A, >int? o >integer? Forzado de ,ipos
,Z.+, isset>? isset./
,Z.Z+O@AL ^^ Operadores de 5omparaci-n
,Z.ZGR+A,+RZORZ+O@
AL
_^ Operadores de 5omparaci-n
,Z.Z.D+N,.5AL ^^^ Operadores de 5omparaci-n
,Z.ZNO,Z+O@AL a^ o `_ Operadores de 5omparaci-n
,Z.ZNO,Z.D+N,.5AL a^^ Operadores de 5omparaci-n
,ZMALL+RZORZ+O@AL `^ Operadores de 5omparaci-n
,ZL.N+ ZZL.N+ZZ 5onstantes
,ZL., list>? list./
,ZLN@MB+R
107A 310A 3F1acA
etc;
+nteros
Identificador ,inta+is Meferencia
,ZLOG.5ALZAND and Operadores L-gicos
,ZLOG.5ALZOR or Operadores L-gicos
,ZLOG.5ALZJOR For Operadores L-gicos
,ZM.N@Z+O@AL 2^ Operadores de Asignaci-n
,ZMLZ5OMM+N, DV y VD 5omentarios
,ZMODZ+O@AL b^ Operadores de Asignaci-n
,ZM@LZ+O@AL V^ Operadores de Asignaci-n
,ZN+L neE 5lases y O#'etos
,ZN@MZ,R.NG
,ZOB!+5,Z5A, >o#'ect? Forzado de ,ipos
,ZOB!+5,ZOP+RA,OR 2_ 5lases y O#'etos
,ZOLDZF@N5,.ON oldZ(unction oldZ(unction
,ZOP+NZ,AG `NphpA `N o `b aliendo de &,ML
,ZOP+NZ,AGZL.,&Z+5&
O
`N^ o `b^ aliendo de &,ML
,ZORZ+O@AL l^ Operadores de Asignaci-n
,ZPAAMA%.MZN+S@DO,
A%.M
CC CC
,ZPL@Z+O@AL R^ Operadores de Asignaci-n
,ZPR.N, print>? print./
,ZR+O@.R+ re/uire>? re?uire./
,ZR+O@.R+ZON5+ re/uireZonce>? re?uire>once./
,ZR+,@RN return Retorno de $alores
,ZL `` Operadores a Nivel de Bits
,ZLZ+O@AL ``^ Operadores de Asignaci-n
,ZR __ Operadores a Nivel de Bits
,ZRZ+O@AL __^ Operadores de Asignaci-n
,Z,AR,Z&+R+DO5 ``` heredoc
,Z,A,.5 static Am#ito de las $aria#les
,Z,R.NG
,Z,R.NGZ5A, >string? Forzado de $aria#les
,Z,R.NGZ$ARNAM+
,ZL.,5& sEitch sEitch
,Z@N+, unset>? unset./
,Z@N+,Z5A, >unset? >no documentadoX arro'a a NULL?
,Z@+ use >no implementado?
,Z$AR var 5lases y O#'etos
,Z$AR.ABL+ Y(oo $aria#les
,ZL&.L+ Ehile EhileA do;;Ehile
Identificador ,inta+is Meferencia
,ZL&.,+PA5+
,ZJORZ+O@AL k^ Operadores de Asignaci-n
,ZF@N5Z5 ZZF@N5,.ONZZ constantsA desde +!+ 8;7;3
,Z5LAZ5 ZZ5LAZZ constantsA desde +!+ 8;7;3
Ap%ndice $. ,obre el manual
;ormatos
+l manual de P&P se encuentra disponi#le en di(erentes (ormatos; +stos (ormatos se pueden dividir
en dos gruposC (ormatos accesi#le en l)nea >online? y (icheros /ue se pueden #a'ar a tu ordenador;
Nota- Algunos editores han pu#licado versiones impresas de este manual; No podemos
recomendar ninguna de ellasA ya /ue suelen /uedarse o#soletas r*pidamente;
Podeis leer el manual en linea >online? en httpCDDEEE;php;netD y en numerosos servidores espe'o;
Para me'orar la respuestaA de#eriais utilizar el servidor espe'o m*s cercano a vosotros; Podeis
consultar el manual en (ormato &,ML 2impresi-n amiga#le2 - en (ormato &,ML /ue integra el
manual en el diseno de la p*gina Ee# del proyecto P&P;
@na venta'a del manual en l)nea so#re la mayoria de (ormatos (uera de l)nea es la integraci-n de los
comentariosDnotas de usuarios; @na desventa'a es /ue teneis /ue estar conectados para ver consultar
las versiones en l)nea;
+Fisten varios (ormatos (uera de l)nea y el m*s apropiado para cada usuario depende del sistema
operativo /ue se use y de tus pre(erencias a la hora de leer; .n(ormacion so#re como el manual es
generado en tantos (ormatos di(erentes se puede o#tener en la seccion de este apendice titulada
H5omo generamos los dierentes (ormatosH;
Los (ormatos m*s accesi#les desde di(erentes plata(ormas son &,ML y teFto plano; el manual en
&,ML se proporciona como un unico (ichero en &,ML - como un pa/uete con un (ichero &,ML
por secci-n; Los (ormatos &,ML y teFto plano se distri#uyen como (icheros tar y con compresi-n
#z0;
Otro (ormato muy popular y el m*s adecuado para imprimirA es PDF >Ado#e Acro#at?; ,enemos /ue
advertir antes /ue empeceis a imprimir /ue el manual contiene casi 0333 p*ginas y se revisa
constantemente;
Nota- i no teneis un programa capaz de presentar (icheros PDFA podeis #a'aros Ado#e
Acro#at Reader;
Los usuarios de ordenadores de mano compati#les con PalmA tienen los (ormatos Palm doc y iilo;
Podreis utlizar un lector de documentos DO5 - iilo para consultar la documentaci-n de P&P o
como re(erencia r*pida;
Para plata(ormas LindoEsA la versi-n LindoEs &,ML Ayuda proporciona el (ormato &,ML
usado con la aplicacion de ayuda LindoEs &,ML; +sta versi-n proporciona #us/ueda completa de
teFtoA indice completo y marcas >#oo"mar"s?; Muchos entornos de desarrollo para P&P en
LindoEs integran esta versi-n;
,obre las notas de usuarios
Las notas de usuarios 'uegan un importante papael en el desarrollo de este manual; Permitiendo a
los lectores del manual contri#uir con e'emplos y aclaraciones desde su navegadorA podemos
incorporar estas aclaraciones en el manual; &asta /ue las notas son incorporadas en el manualA
pueden ser accedidas desde el manual en l)nea y algunos (ormatos (uera de l)nea;
Nota- Las notas de usuario no son moderadas antes de estar disponi#les en l)neaA asi /ue
la calidad de lo escrito asi como los e'emplos - incluso la veracidad de lo eFpuesto en la
nota no puede ser garantizada;
Nota- Las notas contri#uidas por los usuarios son consideradas parte del manual de
P&P; Por lo tanto estan cu#iertas por la misma licencia /ue se aplica a esta
documentacion >Por el momento GPL?; Para mas detallesA podeis consultar el 5opyright
del manual;
Como interpretar la definici"n de una funci"n .prototipo/
5ada (unci-n est* documentada para una o#tener una re(erencia r*pidaA si sa#emos como interpretar
y entender el manual podremos usar P&P de una manera m*s sencilla; +n vez de con(iar en
e'emplos - cortar y pegarA podeis aprender como interpretar las de(iniciones de (unciones;
+mpecemosC
Prere?uisitos- Comprensi"n bsica de los diferentes tipos- Aun/ue P&P es un
lengua'e de programaci-n rela'ado en lo re(erente a los tipos de varia#lesDvaloresA es
importante entender #*sicamente los di(erentes tiposA ya /ue son importantes;
Las de(iniciones de (unciones nos dicen /ue tipo de valores es retornado; @semos la de(inici-n de la
(unci-n strlen./ en nuestro primer e'emploC
strlen

3H <, H 1 >> 1.2.29
strlen FF ?btiene la lonEitud de una cadena.
Lescripciin
int strlen 3 strinE str 9
'etorna la lonEitud de una cadena.
Tabla $(!. E+plicaci"n de la definici"n de una funci"n
Parte Kescripci"n
strlen +l nom#re de la (unci-n;
>P&P 7A P&P 8 _^
8;3;3?
strlen>? est* disponi#le tanto en P&P 7 como en P&P 8
int
,ipo de valor devuelto por esta (unci-nA en este caso un entero >La longitud
de una cadena es medida en numeros?
> string str ?
+l primer >y en este caso el Bnico? par*metroDargumento de la (unci-n strlen>?
se llama str y es una cadena;
Podriamos escri#ir la de(inicion de esta (unci-n de un modo gen<ricoC
*ipo de =alor retornado F nombre de #unciin 3tipo de parametro F nombre del parametro9
Muchas (unciones tiene multiples parametrosA por e'emplo in>array./; u de(inici-n seriaC
bool in%array 3 mixed needle, array haystacI ), bool strict/9
+sto signi(ica lo siguienteA inZarray>? retorna un valor #ooleanA TRUE si termina con eFito >el
parametro nee#le (ue encontrado en la matriz ha?stac>? - FALSE si (alla >el parametro nee#le no
(ue encontrado en la matriz ha?stac>?; +l primer parametro se llama nee#le y puede tener valores de
di(erente tipoA asi /ue lo llamamos de tipo =m68e#=; +ste parametro nee#le >lo /ue estamos
#uscando? puede ser un valor escalar >cadena >string?A entero >integer? o (lotante>(loat??A - una
matriz; ha?stac>A >la matriz en la /ue estamos #uscando? es el segundo par*metro; +l tercer
parametro opc6onal se llama str6ct; ,odos los par*metros opcionales se encuentran entre ) corchetes
.; +l manual de(ine /ue el parametro str6ct por de(ecto retorna FALSE; 5onsultar el manual para
o#tener detalles de como las di(erentes (unciones (uncionan;
Cersiones de PHP documentadas en este manual
+sta documentaci-n contiene in(ormacion so#re P&P 8A con algunas notas adicionales so#re
migraci-n y compati#ilidad con P&P 7; 5omportamientosA par*metrosA valores retornados y otros
cam#ios entre di(erentes versiones de P&P se encuentran documentados en notas en este manual;
Podeis encontrar trozos de documentaci-n para la versi-n 5$ de P&PA esto signi(ica la Bltima
versi-n de desarrollo disponi#le por el momento; i no eres un desarrollador de P&P - no utilizas la
Bltima versi-n de P&P en el 5$A no tendras disponi#les las caracter)sticas marcadas con
=disponi#le en el 5$=; De todas manerasA estas caracter)sticas estar*n pro#a#lemente disponi#les
en la proFima versi-n esta#le de P&P; i deseais #a'aros la versi-n del 5$A consultar la p*gina
so#re acceso an-nimo al 5$;
,am#i<n podeis encontrar documentaci-n so#re una versi-n de P&P /ue no est< pu#licada todavia
>p;e' P&P 4;3;3 cuando la Bltima versi-n esta#le es 8;7;3?; La mayoria de las veces no es un (allo; La
eFplicaci-n es aWadida para caracter)sticas /ue se sa#e estar*n disponi#les en una versi-n (utura de
P&P;
Como encontrar ms informaci"n sobre PHP
+ste manual no pretende eFplicar practicas generales de programaci-n; i vas a empezar a
programar - eres un programador principianteA seguramente tendras di(icultades para aprender a
programar en P&P usando solamente este manual; ,e ser* de gran ayuda utilizar otros teFtos m*s
orientados a principiantes; @na lista con li#ros so#re P&P puede encontrarse en
httpCDDEEE;php;netD#oo"s;php;
+Fisten una serie de listas de correo en donde se puede discutir so#re di(erentes aspectos
relacionados con la programaci-n en P&P; i tienes un pro#lemaA el cual no puedes solucionarA
puedes usar estas listas para preguntar y o#tener ayuda; @na lista con las listas de correo disponi#les
puede encontrarse en httpCDDEEE;php;netDsupport;phpA asi como enlaces a los archivos historicos de
estas listas y otros recursos de ayuda en l)nea; Adem*s en httpCDDEEE;php;netDlin"s;php puedes
encontrar in(ormaci-n so#re servidores Ee# dedicados a P&PA art)culosA (oros y galerias de c-digo;
Como ayudar a me'orar la documentaci"n
e pueden ayudar de tres maneras a me'orar esta documentci-n;
i encontrais errores en este manualA en cual/uier lengua'eA podeis in(ormar so#re el mismoA usando
el sistema de in(ormes de errores en httpCDD#ugs;php;netD; 5lasi(icar el error como =Documentation
Pro#lem=; Pro#lemas encontrados con los di(erentes (ormatos tam#ien se pueden mandar usando
este sistema;
Nota- Por (avorA no a#usar del sistema de in(ormes de errores mandando peticiones de
ayuda; @tilizar las listas de correos y recursos mencionados anteriormente;
5ontri#uyendo con notasDcomentariosA podeis dar e'emplos adicionales y aclaraciones a otros
lectores; Pero no mandar in(ormes de errores mediante el sistema de notasDcomentarios; Podeis leer
m*s so#re notasDcomentarios en la secci-n Ho#re las notas de usuariosH de este apendice;
i sa#es ingles y otro idiomaA podeis ayudar en las traducciones; i te interesa comenzar una nueva
traducci-n o ayudar una eFistenteA pasate por
httpCDDcvs;php;netDco;phpDphpdocDhoEtoDhoEto;html;tar;gz;
Como generamos los formatos
,his manual is Eritten in JML using the DocBoo" JML D,DA using DL >Document tyle and
emantics peci(ication Language? (or (ormattingA and eFperimentally the JL, >+Ftensi#le
tylesheet Language ,rans(ormations? (or maintenance and (ormatting;
@sando JML como c-digo (uenteA podemos generar di(erentes (ormatosA manteniendo solamente
un solo c-digo (uente para todos los (ormatos; Las herramientas utilizadas para crear las versiones
&,ML y ,eJ son !adeA escrito por !ames 5lar" y ,he Modular DocBoo" tylesheetsA escrito por
Norman Lalsh; @samos Microso(t &,ML &elp Lor"shop para generar el (ormato de ayuda
LindoEs &,ML y por supuesto P&P para algunas conversiones y preprocesado;
Puedes #a'arte el manual en di(erentes idiomas y (ormatosA incluyendo teFto planoA &,MLAPDFA
PalmPilot DO5A PalmPilot iilo y LindoEs &,ML &elpA de httpCDDEEE;php;netDdocs;php; Los
manuales son generados automaticamente a medida /ue el c-digo (uente se va actualizando;
M*s in(ormaci-n so#re como #a'arse el c-digo (uente en JML en httpCDDcvs;php;netD; La
documentaci-n se encuentra en el m-dulo php#oc
Traducciones
+l manual de P&P no est* disponi#le solamente en di(erentes (ormatosA tam#ien se encuentra en
di(erentes idiomas; +l manual es escrito primero en ingles y luego grupos de traductores de todo el
mundo se encargan de mantener la traducci-n a su idioma sincronizada con la versi-n inglesa; i la
traducci-n de algBn apartado del manual no ha sido realizada todavia por el e/uipo de traductoresA
este aparecer* en ingles hasta /ue sea traducido;
Las personas involucradas en las traduccionesA utilizan el c-digo (uente en JML disponi#le en
httpCDDcvs;php;netD y lo traducen a su idioma; No ut6l6Dan la versi-n en &,MLA teFto plano - PDF;
+s el sistema de generaci-n de (ormatos el /ue se encarga de producirlos a partir de JML;
Nota- i te interesa ayudar - participar en la traducci-n de la documentaci-n a tu
idiomaA ponte en contacto con el e/uipo de traducci-nDdocumentaci-n apuntandote la la
lista de correo phpdoc; Manda un mensa'e vacio a phpdoc2su#scri#eGlists;php;net; La
direcci-n de la esta lista de correo es php#ocWl6sts.php.net; +Fplica /ue est*s interesado
en traducir el manual a un idioma y nos pondremos en contacto contigoA te mandaremos
in(ormaci-n para /ue puedas empezar una nueva traducci-n o para /ue pases a (ormar
parte del e/uipo de traducci-n de tu idiomaA si este ya eFiste;
Por el momento eFisten traduccionesA completas o parcialesA en los siguientes idiomasC BrasileWoA
PortuguesA 5hino >simpli(icado?A 5hino >&ong Song 5antonese?A5hino >,radicional?A 5hecoA
&oland<sA Finland<sA FrancesA Alem*nA &e#reoA &ungaroA .talianoA !aponesA SoreanoA PolacoA
RumanoA RusoA +slovacoA +spaWolA ueco y ,urco;
,odas ellas se pueden #a'ar deC httpCDDEEE;php;netDdocs;php;
,obre la traducci"n al espaWol
+l proyecto de traducci-n de la documantaci-n de P&P al espaWol tiene una p*gina Ee# en la /ue
podr*s encontrar in(ormaci-n so#re el mismoA historiaA /ue se necesita para cola#orarA guia para los
cola#oradoresA reglas y convenciones de traducci-nA listas de correosA acceso a la documentaci-n y a
los cola#oradores de la traducci-nA etc; La direcci-n es httpCDDEEE;linuF2es;comDP&PD
La traducci-n del manual de P&P al espaWol ha sido posi#le gracias a la cola#oraci-n de un gran
nBmero de traductoresA /ue desinteresadamente han usado su tiempo para /ue todos podamos tener
una versi-n en nuestra lengua de esta documentaci-n;
+l coordinador de la traducci-n es Ra(ael Martinez podeis contactar con elA para cual/uier duda
relacionada con el proyecto de traducci-n; Los cola#oradores los podeis encontrar en esta listaC
Ap%ndice M. Jpen Publication :icense
v1;3A M !une 1999
I. ME$)IMEMENT, JN 1JTH )NMJKI;IEK ANK
MJKI;IEK CEM,IJN,
,he Open Pu#lication Eor"s may #e reproduced and distri#uted in Ehole or in partA in any medium
physical or electronicA provided that the terms o( this license are adhered toA and that this license or
an incorporation o( it #y re(erence >Eith any options elected #y the author>s? andDor pu#lisher? is
displayed in the reproduction;
Proper (orm (or an incorporation #y re(erence is as (olloEsC
5opyright >c? `year_ #y `authorHs name or designee_; ,his material may #e distri#uted only su#'ect
to the terms and conditions set (orth in the Open Pu#lication LicenseA vJ;% or later >the latest
version is presently availa#le at httpCDDEEE;opencontent;orgDopenpu#D
,he re(erence must #e immediately (olloEed Eith any options elected #y the author>s? andDor
pu#lisher o( the document >see section $.?; 5ommercial redistri#ution o( Open Pu#lication2licensed
material is permitted; Any pu#lication in standard >paper? #oo" (orm shall re/uire the citation o( the
original pu#lisher and author; ,he pu#lisher and authorHs names shall appear on all outer sur(aces o(
the #oo"; On all outer sur(aces o( the #oo" the original pu#lisherHs name shall #e as large as the title
o( the Eor" and cited as possessive Eith respect to the title;
II. CJP@MIFHT
,he copyright to each Open Pu#lication is oEned #y its author>s? or designee;
III. ,CJPE J; :ICEN,E
,he (olloEing license terms apply to all Open Pu#lication Eor"sA unless otherEise eFplicitly stated
in the document;
Mere aggregation o( Open Pu#lication Eor"s or a portion o( an Open Pu#lication Eor" Eith other
Eor"s or programs on the same media shall not cause this license to apply to those other Eor"s; ,he
aggregate Eor" shall contain a notice speci(ying the inclusion o( the Open Pu#lication material and
appropriate copyright notice;
+$+RAB.L.,%; .( any part o( this license is (ound to #e unen(orcea#le in any 'urisdictionA the
remaining portions o( the license remain in (orce;
NO LARRAN,%; Open Pu#lication Eor"s are licensed and provided =as is= Eithout Earranty o(
any "indA eFpress or impliedA includingA #ut not limited toA the implied Earranties o( merchanta#ility
and (itness (or a particular purpose or a Earranty o( non2in(ringement;
IC. ME$)IMEMENT, JN MJKI;IEK 2JM`,
All modi(ied versions o( documents covered #y this licenseA including translationsA anthologiesA
compilations and partial documentsA must meet the (olloEing re/uirementsC
1; ,he modi(ied version must #e la#eled as such;
0; ,he person ma"ing the modi(ications must #e identi(ied and the modi(ications dated;
7; Ac"noEledgement o( the original author and pu#lisher i( applica#le must #e retained according
to normal academic citation practices;
8; ,he location o( the original unmodi(ied document must #e identi(ied;
4; ,he original authorHs >or authorsH? name>s? may not #e used to assert or imply endorsement o( the
resulting document Eithout the original authorHs >or authorsH? permission;
C. FJJK(PMACTICE MECJMMENKATIJN,
.n addition to the re/uirements o( this licenseA it is re/uested (rom and strongly recommended o(
redistri#utors thatC
1; .( you are distri#uting Open Pu#lication Eor"s on hardcopy or 5D2ROMA you provide email
noti(ication to the authors o( your intent to redistri#ute at least thirty days #e(ore your manuscript
or media (reezeA to give the authors time to provide updated documents; ,his noti(ication should
descri#e modi(icationsA i( anyA made to the document;
0; All su#stantive modi(ications >including deletions? #e either clearly mar"ed up in the document
or else descri#ed in an attachment to the document;
7; FinallyA Ehile it is not mandatory under this licenseA it is considered good (orm to o((er a (ree
copy o( any hardcopy and 5D2ROM eFpression o( an Open Pu#lication2licensed Eor" to its
author>s?;
CI. :ICEN,E JPTIJN,
,he author>s? andDor pu#lisher o( an Open Pu#lication2licensed document may elect certain options
#y appending language to the re(erence to or copy o( the license; ,hese options are considered part
o( the license instance and must #e included Eith the license >or its incorporation #y re(erence? in
derived Eor"s;
A; ,o prohi#it distri#ution o( su#stantively modi(ied versions Eithout the eFplicit permission o( the
author>s?; =u#stantive modi(ication= is de(ined as a change to the semantic content o( the
documentA and eFcludes mere changes in (ormat or typographical corrections;
,o accomplish thisA add the phrase mDistri#ution o( su#stantively modi(ied versions o( this
document is prohi#ited Eithout the eFplicit permission o( the copyright holder;H to the license
re(erence or copy;
B; ,o prohi#it any pu#lication o( this Eor" or derivative Eor"s in Ehole or in part in standard
>paper? #oo" (orm (or commercial purposes is prohi#ited unless prior permission is o#tained (rom
the copyright holder;
,o accomplish thisA add the phrase HDistri#ution o( the Eor" or derivative o( the Eor" in any
standard >paper? #oo" (orm is prohi#ited unless prior permission is o#tained (rom the copyright
holder;H to the license re(erence or copy;
Ap%ndice ,. Sndice de funciones
Sndice de funciones
A
abs./
acos./
acosh./
addcslashes./
addslashes./
aggregate./
aggregate>info./
aggregate>methods./
aggregate>methods>by>list./
aggregate>methods>by>rege+p./
aggregate>properties./
aggregate>properties>by>list./
aggregate>properties>by>rege+p./
aggregation>info./
apache>child>terminate./
apache>get>modules./
apache>get>5ersion./
apache>geten5./
apache>looBup>uri./
apache>note./
apache>re?uest>headers./
apache>reset>timeout./
apache>response>headers./
apache>seten5./
apd>breaBpoint./
apd>callstacB./
apd>clunB./
apd>continue./
apd>croaB./
apd>dump>function>table./
apd>dump>persistent>resources./
apd>dump>regular>resources./
apd>echo./
apd>get>acti5e>symbols./
apd>set>pprof>trace./
apd>set>session./
apd>set>session>trace./
apd>set>socBet>session>trace./
array./
array>change>Bey>case./
array>chunB./
array>combine./
array>count>5alues./
array>diff./
array>diff>assoc./
array>diff>Bey./
array>diff>uassoc./
array>diff>uBey./
array>fill./
array>filter./
array>flip./
array>intersect./
array>intersect>assoc./
array>intersect>Bey./
array>intersect>uassoc./
array>intersect>uBey./
array>Bey>e+ists./
array>Beys./
array>map./
array>merge./
array>merge>recursi5e./
array>multisort./
array>pad./
array>pop./
array>push./
array>rand./
array>reduce./
array>re5erse./
array>search./
array>shift./
array>slice./
array>splice./
array>sum./
array>udiff./
array>udiff>assoc./
array>udiff>uassoc./
array>uintersect./
array>uintersect>assoc./
array>uintersect>uassoc./
array>uni?ue./
array>unshift./
array>5alues./
array>3alB./
array>3alB>recursi5e./
ArrayIterator--current./
ArrayIterator--Bey./
ArrayIterator--ne+t./
ArrayIterator--re3ind./
ArrayIterator--seeB./
ArrayIterator--5alid./
ArrayJb'ect-->>construct./
ArrayJb'ect--append./
ArrayJb'ect--count./
ArrayJb'ect--getIterator./
ArrayJb'ect--offsetE+ists./
ArrayJb'ect--offsetFet./
ArrayJb'ect--offset,et./
ArrayJb'ect--offset)nset./
arsort./
ascii*ebcdic./
asin./
asinh./
asort./
aspell>checB./
aspell>checB>ra3./
aspell>ne3./
aspell>suggest./
assert./
assert>options./
atan./
atan*./
atanh./
1
base<8>decode./
base<8>encode./
base>con5ert./
basename./
bcadd./
bccomp./
bcdi5./
bcmod./
bcmul./
bcompile>3rite>file./
bcompiler>load./
bcompiler>load>e+e./
bcompiler>parse>class./
bcompiler>read./
bcompiler>3rite>class./
bcompiler>3rite>constant./
bcompiler>3rite>e+e>footer./
bcompiler>3rite>footer./
bcompiler>3rite>function./
bcompiler>3rite>functions>from>file./
bcompiler>3rite>header./
bcpo3./
bcpo3mod./
bcscale./
bcs?rt./
bcsub./
bin*he+./
bind>te+tdomain>codeset./
bindec./
bindte+tdomain./
b6close./
b6compress./
b6decompress./
b6errno./
b6error./
b6errstr./
b6flush./
b6open./
b6read./
b63rite./
C
CachingIterator-->>to,tring./
CachingIterator--hasNe+t./
CachingIterator--ne+t./
CachingIterator--re3ind./
CachingIterator--5alid./
CachingMecursi5eIterator--getChildren./
CachingMecursi5eIterator--hasChildren./
cal>days>in>month./
cal>from>'d./
cal>info./
cal>to>'d./
call>user>func./
call>user>func>array./
call>user>method./
call>user>method>array./
cc5s>add./
cc5s>auth./
cc5s>command./
cc5s>count./
cc5s>delete./
cc5s>done./
cc5s>init./
cc5s>looBup./
cc5s>ne3./
cc5s>report./
cc5s>return./
cc5s>re5erse./
cc5s>sale./
cc5s>status./
cc5s>te+t5alue./
cc5s>5oid./
ceil./
chdir./
checBdate./
checBdnsrr./
chgrp./
chmod./
chop./
cho3n./
chr./
chroot./
chunB>split./
class>e+ists./
class>implements./
class>parents./
classBit>import./
classBit>method>add./
classBit>method>copy./
classBit>method>redefine./
classBit>method>remo5e./
classBit>method>rename./
clearstatcache./
closedir./
closelog./
com./
com>addref./
com>create>guid./
com>e5ent>sinB./
com>get./
com>get>acti5e>ob'ect./
com>in5oBe./
com>isenum./
com>load./
com>load>typelib./
com>message>pump./
com>print>typeinfo./
com>propget./
com>propput./
com>propset./
com>release./
com>set./
compact./
connection>aborted./
connection>status./
connection>timeout./
constant./
con5ert>cyr>string./
con5ert>uudecode./
con5ert>uuencode./
copy./
cos./
cosh./
count./
count>chars./
cpdf>add>annotation./
cpdf>add>outline./
cpdf>arc./
cpdf>begin>te+t./
cpdf>circle./
cpdf>clip./
cpdf>close./
cpdf>closepath./
cpdf>closepath>fill>stroBe./
cpdf>closepath>stroBe./
cpdf>continue>te+t./
cpdf>cur5eto./
cpdf>end>te+t./
cpdf>fill./
cpdf>fill>stroBe./
cpdf>finali6e./
cpdf>finali6e>page./
cpdf>global>set>document>limits./
cpdf>import>'peg./
cpdf>lineto./
cpdf>mo5eto./
cpdf>ne3path./
cpdf>open./
cpdf>output>buffer./
cpdf>page>init./
cpdf>place>inline>image./
cpdf>rect./
cpdf>restore./
cpdf>rlineto./
cpdf>rmo5eto./
cpdf>rotate./
cpdf>rotate>te+t./
cpdf>sa5e./
cpdf>sa5e>to>file./
cpdf>scale./
cpdf>set>action>url./
cpdf>set>char>spacing./
cpdf>set>creator./
cpdf>set>current>page./
cpdf>set>font./
cpdf>set>font>directories./
cpdf>set>font>map>file./
cpdf>set>hori6>scaling./
cpdf>set>Bey3ords./
cpdf>set>leading./
cpdf>set>page>animation./
cpdf>set>sub'ect./
cpdf>set>te+t>matri+./
cpdf>set>te+t>pos./
cpdf>set>te+t>rendering./
cpdf>set>te+t>rise./
cpdf>set>title./
cpdf>set>5ie3er>preferences./
cpdf>set>3ord>spacing./
cpdf>setdash./
cpdf>setflat./
cpdf>setgray./
cpdf>setgray>fill./
cpdf>setgray>stroBe./
cpdf>setlinecap./
cpdf>setline'oin./
cpdf>setline3idth./
cpdf>setmiterlimit./
cpdf>setrgbcolor./
cpdf>setrgbcolor>fill./
cpdf>setrgbcolor>stroBe./
cpdf>sho3./
cpdf>sho3>+y./
cpdf>string3idth./
cpdf>stroBe./
cpdf>te+t./
cpdf>translate./
cracB>checB./
cracB>closedict./
cracB>getlastmessage./
cracB>opendict./
crc7*./
create>function./
crypt./
ctype>alnum./
ctype>alpha./
ctype>cntrl./
ctype>digit./
ctype>graph./
ctype>lo3er./
ctype>print./
ctype>punct./
ctype>space./
ctype>upper./
ctype>+digit./
curl>close./
curl>copy>handle./
curl>errno./
curl>error./
curl>e+ec./
curl>getinfo./
curl>init./
curl>multi>add>handle./
curl>multi>close./
curl>multi>e+ec./
curl>multi>getcontent./
curl>multi>info>read./
curl>multi>init./
curl>multi>remo5e>handle./
curl>multi>select./
curl>setopt./
curl>5ersion./
current./
cybercash>base<8>decode./
cybercash>base<8>encode./
cybercash>decr./
cybercash>encr./
cyrus>authenticate./
cyrus>bind./
cyrus>close./
cyrus>connect./
cyrus>?uery./
cyrus>unbind./
K
date./
date>sunrise./
date>sunset./
dba>close./
dba>delete./
dba>e+ists./
dba>fetch./
dba>firstBey./
dba>handlers./
dba>insert./
dba>Bey>split./
dba>list./
dba>ne+tBey./
dba>open./
dba>optimi6e./
dba>popen./
dba>replace./
dba>sync./
dbase>add>record./
dbase>close./
dbase>create./
dbase>delete>record./
dbase>get>header>info./
dbase>get>record./
dbase>get>record>3ith>names./
dbase>numfields./
dbase>numrecords./
dbase>open./
dbase>pacB./
dbase>replace>record./
dblist./
dbmclose./
dbmdelete./
dbme+ists./
dbmfetch./
dbmfirstBey./
dbminsert./
dbmne+tBey./
dbmopen./
dbmreplace./
dbplus>add./
dbplus>a?l./
dbplus>chdir./
dbplus>close./
dbplus>curr./
dbplus>errcode./
dbplus>errno./
dbplus>find./
dbplus>first./
dbplus>flush./
dbplus>freealllocBs./
dbplus>freelocB./
dbplus>freerlocBs./
dbplus>getlocB./
dbplus>getuni?ue./
dbplus>info./
dbplus>last./
dbplus>locBrel./
dbplus>ne+t./
dbplus>open./
dbplus>pre5./
dbplus>rchperm./
dbplus>rcreate./
dbplus>rcrte+act./
dbplus>rcrtliBe./
dbplus>resol5e./
dbplus>restorepos./
dbplus>rBeys./
dbplus>ropen./
dbplus>r?uery./
dbplus>rrename./
dbplus>rsecinde+./
dbplus>runlinB./
dbplus>r6ap./
dbplus>sa5epos./
dbplus>setinde+./
dbplus>setinde+bynumber./
dbplus>s?l./
dbplus>tcl./
dbplus>tremo5e./
dbplus>undo./
dbplus>undoprepare./
dbplus>unlocBrel./
dbplus>unselect./
dbplus>update./
dbplus>+locBrel./
dbplus>+unlocBrel./
db+>close./
db+>compare./
db+>connect./
db+>error./
db+>escape>string./
db+>fetch>ro3./
db+>?uery./
db+>sort./
dcgette+t./
dcngette+t./
deaggregate./
debug>bacBtrace./
debug>print>bacBtrace./
debug>65al>dump./
debugger>off./
debugger>on./
decbin./
deche+./
decoct./
define./
define>syslog>5ariables./
defined./
deg*rad./
delete./
descriptor(Gfree./
dgette+t./
die./
dio>close./
dio>fcntl./
dio>open./
dio>read./
dio>seeB./
dio>stat./
dio>tcsetattr./
dio>truncate./
dio>3rite./
dir./
KirectoryIterator-->>construct./
KirectoryIterator--current./
KirectoryIterator--getATime./
KirectoryIterator--getChildren./
KirectoryIterator--getCTime./
KirectoryIterator--get;ilename./
KirectoryIterator--getFroup./
KirectoryIterator--getInode./
KirectoryIterator--getMTime./
KirectoryIterator--getJ3ner./
KirectoryIterator--getPath./
KirectoryIterator--getPathname./
KirectoryIterator--getPerms./
KirectoryIterator--get,i6e./
KirectoryIterator--getType./
KirectoryIterator--isKir./
KirectoryIterator--isKot./
KirectoryIterator--isE+ecutable./
KirectoryIterator--is;ile./
KirectoryIterator--is:inB./
KirectoryIterator--isMeadable./
KirectoryIterator--is2ritable./
KirectoryIterator--Bey./
KirectoryIterator--ne+t./
KirectoryIterator--re3ind./
KirectoryIterator--5alid./
dirname./
disB>free>space./
disB>total>space./
disBfreespace./
dl./
dngette+t./
dns>checB>record./
dns>get>m+./
dns>get>record./
dom>import>simple+ml./
KJMAttr(GisId./
KomAttribute(Gname./
KomAttribute(Gspecified./
KomAttribute(G5alue./
KJMCharacterKata(GappendKata./
KJMCharacterKata(GdeleteKata./
KJMCharacterKata(GinsertKata./
KJMCharacterKata(GreplaceKata./
KJMCharacterKata(GsubstringKata./
KJMKocument(G>>construct./
KomKocument(Gadd>root./
KomKocument(Gcreate>attribute./
KomKocument(Gcreate>cdata>section./
KomKocument(Gcreate>comment./
KomKocument(Gcreate>element./
KomKocument(Gcreate>element>ns./
KomKocument(Gcreate>entity>reference./
KomKocument(Gcreate>processing>instruction./
KomKocument(Gcreate>te+t>node./
KJMKocument(GcreateAttribute./
KJMKocument(GcreateAttributeN,./
KJMKocument(GcreateCKATA,ection./
KJMKocument(GcreateComment./
KJMKocument(GcreateKocument;ragment./
KJMKocument(GcreateElement./
KJMKocument(GcreateElementN,./
KJMKocument(GcreateEntityMeference./
KJMKocument(GcreateProcessingInstruction./
KJMKocument(GcreateTe+tNode./
KomKocument(Gdoctype./
KomKocument(Gdocument>element./
KomKocument(Gdump>file./
KomKocument(Gdump>mem./
KomKocument(Gget>element>by>id./
KomKocument(Gget>elements>by>tagname./
KJMKocument(GgetElement1yId./
KJMKocument(GgetElements1yTagName./
KJMKocument(GgetElements1yTagNameN,././
KomKocument(Ghtml>dump>mem./
KJMKocument(GimportNode./
KJMKocument(Gload./
KJMKocument(GloadHTM:./
KJMKocument(GloadHTM:;ile./
KJMKocument(GloadIM:./
KJMKocument(Gnormali6e./
KJMKocument(Grela+NFCalidate./
KJMKocument(Grela+NFCalidate,ource./
KJMKocument(Gsa5e./
KJMKocument(Gsa5eHTM:././
KJMKocument(Gsa5eHTM:;ile././
KJMKocument(Gsa5eIM:././
KJMKocument(GschemaCalidate./
KJMKocument(GschemaCalidate,ource./
KJMKocument(G5alidate./
KJMKocument(G+include./
KomKocument(G+include./
KomKocumentType(Gentities./
KomKocumentType(Ginternal>subset./
KomKocumentType(Gname./
KomKocumentType(Gnotations./
KomKocumentType(Gpublic>id./
KomKocumentType(Gsystem>id./
KomElement(Gget>attribute./
KomElement(Gget>attribute>node./
KomElement(Gget>elements>by>tagname./
KJMElement(GgetAttribute./
KJMElement(GgetAttributeNode./
KJMElement(GgetAttributeNodeN,./
KJMElement(GgetAttributeN,./
KJMElement(GgetElements1yTagName./
KJMElement(GgetElements1yTagNameN,./
KomElement(Ghas>attribute./
KJMElement(GhasAttribute./
KJMElement(GhasAttributeN,./
KomElement(Gremo5e>attribute./
KJMElement(Gremo5eAttribute./
KJMElement(Gremo5eAttributeNode./
KJMElement(Gremo5eAttributeN,./
KomElement(Gset>attribute./
KJMElement(GsetAttribute./
KJMElement(GsetAttributeNode./
KJMElement(GsetAttributeNodeN,./
KJMElement(GsetAttributeN,./
KomElement(Gtagname./
KJMImplementation(GcreateKocument./
KJMImplementation(GcreateKocumentType./
KJMImplementation(Ghas;eature././
KJMNamedNodeMap(GgetNamedItem./
KJMNamedNodeMap(GgetNamedItemN,./
KJMNamedNodeMap(Gitem./
KomNode(Gadd>namespace./
KomNode(Gappend>child./
KomNode(Gappend>sibling./
KJMNode(GappendChild./
KomNode(Gattributes./
KomNode(Gchild>nodes./
KomNode(Gclone>node./
KJMNode(GcloneNode./
KomNode(Gdump>node./
KomNode(Gfirst>child./
KomNode(Gget>content./
KomNode(Ghas>attributes./
KomNode(Ghas>child>nodes./
KJMNode(GhasAttributes./
KJMNode(GhasChildNodes./
KomNode(Ginsert>before./
KJMNode(Ginsert1efore./
KomNode(Gis>blanB>node./
KJMNode(Gis,ameNode./
KJMNode(Gis,upported./
KomNode(Glast>child./
KJMNode(GlooBupNamespace)MI./
KJMNode(GlooBupPrefi+./
KomNode(Gne+t>sibling./
KomNode(Gnode>name./
KomNode(Gnode>type./
KomNode(Gnode>5alue./
KJMNode(Gnormali6e./
KomNode(Go3ner>document./
KomNode(Gparent>node./
KomNode(Gprefi+./
KomNode(Gpre5ious>sibling./
KomNode(Gremo5e>child./
KJMNode(Gremo5eChild./
KomNode(Greplace>child./
KomNode(Greplace>node./
KJMNode(GreplaceChild./
KomNode(Gset>content./
KomNode(Gset>name./
KomNode(Gset>namespace./
KomNode(GunlinB>node./
KJMNodelist(Gitem./
KomProcessingInstruction(Gdata./
KomProcessingInstruction(Gtarget./
KJM,tring:ist(Gitem./
KJMTe+t(Gis2hitespaceInElementContent./
KJMTe+t(GsplitTe+t./
dom+ml>ne3>doc./
dom+ml>open>file./
dom+ml>open>mem./
dom+ml>5ersion./
dom+ml>+mltree./
dom+ml>+slt>stylesheet./
dom+ml>+slt>stylesheet>doc./
dom+ml>+slt>stylesheet>file./
KJMIPath(G>>construct./
KJMIPath(Ge5aluate././
KJMIPath(G?uery./
KJMIPath(GregisterNamespace./
KomIslt,tylesheet(Gprocess./
KomIslt,tylesheet(Gresult>dump>file./
KomIslt,tylesheet(Gresult>dump>mem./
dotnet./
dotnet>load./
double5al./
E
each./
easter>date./
easter>days./
ebcdic*ascii./
echo./
empty./
end./
ereg./
ereg>replace./
eregi./
eregi>replace./
error>log./
error>reporting./
escapeshellarg./
escapeshellcmd./
e5al./
e+ec./
e+if>imagetype./
e+if>read>data./
e+if>tagname./
e+if>thumbnail./
e+it./
e+p./
e+plode./
e+pm!./
e+tension>loaded./
e+tract./
e6mlm>hash./
;
fam>cancel>monitor./
fam>close./
fam>monitor>collection./
fam>monitor>directory./
fam>monitor>file./
fam>ne+t>e5ent./
fam>open./
fam>pending./
fam>resume>monitor./
fam>suspend>monitor./
fbs?l>affected>ro3s./
fbs?l>autocommit./
fbs?l>blob>si6e./
fbs?l>change>user./
fbs?l>clob>si6e./
fbs?l>close./
fbs?l>commit./
fbs?l>connect./
fbs?l>create>blob./
fbs?l>create>clob./
fbs?l>create>db./
fbs?l>data>seeB./
fbs?l>database./
fbs?l>database>pass3ord./
fbs?l>db>?uery./
fbs?l>db>status./
fbs?l>drop>db./
fbs?l>errno./
fbs?l>error./
fbs?l>fetch>array./
fbs?l>fetch>assoc./
fbs?l>fetch>field./
fbs?l>fetch>lengths./
fbs?l>fetch>ob'ect./
fbs?l>fetch>ro3./
fbs?l>field>flags./
fbs?l>field>len./
fbs?l>field>name./
fbs?l>field>seeB./
fbs?l>field>table./
fbs?l>field>type./
fbs?l>free>result./
fbs?l>get>autostart>info./
fbs?l>hostname./
fbs?l>insert>id./
fbs?l>list>dbs./
fbs?l>list>fields./
fbs?l>list>tables./
fbs?l>ne+t>result./
fbs?l>num>fields./
fbs?l>num>ro3s./
fbs?l>pass3ord./
fbs?l>pconnect./
fbs?l>?uery./
fbs?l>read>blob./
fbs?l>read>clob./
fbs?l>result./
fbs?l>rollbacB./
fbs?l>select>db./
fbs?l>set>lob>mode./
fbs?l>set>pass3ord./
fbs?l>set>transaction./
fbs?l>start>db./
fbs?l>stop>db./
fbs?l>tablename./
fbs?l>username./
fbs?l>3arnings./
fclose./
fdf>add>doc>'a5ascript./
fdf>add>template./
fdf>close./
fdf>create./
fdf>enum>5alues./
fdf>errno./
fdf>error./
fdf>get>ap./
fdf>get>attachment./
fdf>get>encoding./
fdf>get>file./
fdf>get>flags./
fdf>get>opt./
fdf>get>status./
fdf>get>5alue./
fdf>get>5ersion./
fdf>header./
fdf>ne+t>field>name./
fdf>open./
fdf>open>string./
fdf>remo5e>item./
fdf>sa5e./
fdf>sa5e>string./
fdf>set>ap./
fdf>set>encoding./
fdf>set>file./
fdf>set>flags./
fdf>set>'a5ascript>action./
fdf>set>on>import>'a5ascript./
fdf>set>opt./
fdf>set>status./
fdf>set>submit>form>action./
fdf>set>target>frame./
fdf>set>5alue./
fdf>set>5ersion./
feof./
fflush./
fgetc./
fgetcs5./
fgets./
fgetss./
file./
file>e+ists./
file>get>contents./
file>put>contents./
fileatime./
filectime./
filegroup./
fileinode./
filemtime./
fileo3ner./
fileperms./
filepro./
filepro>fieldcount./
filepro>fieldname./
filepro>fieldtype./
filepro>field3idth./
filepro>retrie5e./
filepro>ro3count./
filesi6e./
filetype./
;ilterIterator--current./
;ilterIterator--getInnerIterator./
;ilterIterator--Bey./
;ilterIterator--ne+t./
;ilterIterator--re3ind./
;ilterIterator--5alid./
float5al./
flocB./
floor./
flush./
fmod./
fnmatch./
fopen./
fpassthru./
fprintf./
fputcs5./
fputs./
fread./
frenchto'd./
fribidi>log*5is./
fscanf./
fseeB./
fsocBopen./
fstat./
ftell./
ftoB./
ftp>alloc./
ftp>cdup./
ftp>chdir./
ftp>chmod./
ftp>close./
ftp>connect./
ftp>delete./
ftp>e+ec./
ftp>fget./
ftp>fput./
ftp>get./
ftp>get>option./
ftp>login./
ftp>mdtm./
ftp>mBdir./
ftp>nb>continue./
ftp>nb>fget./
ftp>nb>fput./
ftp>nb>get./
ftp>nb>put./
ftp>nlist./
ftp>pas5./
ftp>put./
ftp>p3d./
ftp>?uit./
ftp>ra3./
ftp>ra3list./
ftp>rename./
ftp>rmdir./
ftp>set>option./
ftp>site./
ftp>si6e./
ftp>ssl>connect./
ftp>systype./
ftruncate./
func>get>arg./
func>get>args./
func>num>args./
function>e+ists./
f3rite./
F
gd>info./
get>bro3ser./
get>cfg>5ar./
get>class./
get>class>methods./
get>class>5ars./
get>current>user./
get>declared>classes./
get>declared>interfaces./
get>defined>constants./
get>defined>functions./
get>defined>5ars./
get>e+tension>funcs./
get>headers./
get>html>translation>table./
get>include>path./
get>included>files./
get>loaded>e+tensions./
get>magic>?uotes>gpc./
get>magic>?uotes>runtime./
get>meta>tags./
get>ob'ect>5ars./
get>parent>class./
get>re?uired>files./
get>resource>type./
getallheaders./
getc3d./
getdate./
geten5./
gethostbyaddr./
gethostbyname./
gethostbynamel./
getimagesi6e./
getlastmod./
getm+rr./
getmygid./
getmyinode./
getmypid./
getmyuid./
getopt./
getprotobyname./
getprotobynumber./
getrandma+./
getrusage./
getser5byname./
getser5byport./
gette+t./
gettimeofday./
gettype./
glob./
gmdate./
gmmBtime./
gmp>abs./
gmp>add./
gmp>and./
gmp>clrbit./
gmp>cmp./
gmp>com./
gmp>di5./
gmp>di5>?./
gmp>di5>?r./
gmp>di5>r./
gmp>di5e+act./
gmp>fact./
gmp>gcd./
gmp>gcde+t./
gmp>hamdist./
gmp>init./
gmp>int5al./
gmp>in5ert./
gmp>'acobi./
gmp>legendre./
gmp>mod./
gmp>mul./
gmp>neg./
gmp>or./
gmp>perfect>s?uare./
gmp>popcount./
gmp>po3./
gmp>po3m./
gmp>prob>prime./
gmp>random./
gmp>scanD./
gmp>scan!./
gmp>setbit./
gmp>sign./
gmp>s?rt./
gmp>s?rtrem./
gmp>str5al./
gmp>sub./
gmp>+or./
gmstrftime./
gregorianto'd./
g6close./
g6compress./
g6deflate./
g6encode./
g6eof./
g6file./
g6getc./
g6gets./
g6getss./
g6inflate./
g6open./
g6passthru./
g6puts./
g6read./
g6re3ind./
g6seeB./
g6tell./
g6uncompress./
g63rite./
H
header./
headers>list./
headers>sent./
hebre5./
hebre5c./
he+dec./
highlight>file./
highlight>string./
html>entity>decode./
htmlentities./
htmlspecialchars./
http>build>?uery./
h3>api(GchecBin./
h3>api(GchecBout./
h3>api(Gchildren./
h3>api(Gcontent./
h3>api(Gcopy./
h3>api(Gdbstat./
h3>api(Gdcstat./
h3>api(Gdstanchors./
h3>api(Gdstofsrcanchor./
h3>api(Gfind./
h3>api(Gftstat./
h3>api(Gh3stat./
h3>api(Gidentify./
h3>api(Ginfo./
h3>api(Ginsert./
h3>api(Ginsertanchor./
h3>api(Ginsertcollection./
h3>api(Ginsertdocument./
h3>api(GlinB./
h3>api(GlocB./
h3>api(Gmo5e./
h3>api(Gob'ect./
h3>api(Gob'ectbyanchor./
h3>api(Gparents./
h3>api(Gremo5e./
h3>api(Greplace./
h3>api(Gsetcommitted5ersion./
h3>api(Gsrcanchors./
h3>api(Gsrcsofdst./
h3>api(GunlocB./
h3>api(Guser./
h3>api(Guserlist./
h3>api>attribute./
h3>api>attribute(GBey./
h3>api>attribute(Glangdep5alue./
h3>api>attribute(G5alue./
h3>api>attribute(G5alues./
h3>api>content./
h3>api>content(Gmimetype./
h3>api>content(Gread./
h3>api>error(Gcount./
h3>api>error(Greason./
h3>api>ob'ect./
h3>api>ob'ect(Gassign./
h3>api>ob'ect(Gattreditable./
h3>api>ob'ect(Gcount./
h3>api>ob'ect(Ginsert./
h3>api>ob'ect(Gremo5e./
h3>api>ob'ect(Gtitle./
h3>api>ob'ect(G5alue./
h3>api>reason(Gdescription./
h3>api>reason(Gtype./
h3>array*ob'rec./
h3>changeob'ect./
h3>children./
h3>childrenob'./
h3>close./
h3>connect./
h3>connection>info./
h3>cp./
h3>deleteob'ect./
h3>docbyanchor./
h3>docbyanchorob'./
h3>document>attributes./
h3>document>bodytag./
h3>document>content./
h3>document>setcontent./
h3>document>si6e./
h3>dummy./
h3>editte+t./
h3>error./
h3>errormsg./
h3>free>document./
h3>getanchors./
h3>getanchorsob'./
h3>getandlocB./
h3>getchildcoll./
h3>getchildcollob'./
h3>getchilddoccoll./
h3>getchilddoccollob'./
h3>getob'ect./
h3>getob'ectby?uery./
h3>getob'ectby?uerycoll./
h3>getob'ectby?uerycollob'./
h3>getob'ectby?ueryob'./
h3>getparents./
h3>getparentsob'./
h3>getrellinB./
h3>getremote./
h3>getremotechildren./
h3>getsrcbydestob'./
h3>gette+t./
h3>getusername./
h3>identify./
h3>incollections./
h3>info./
h3>inscoll./
h3>insdoc./
h3>insertanchors./
h3>insertdocument./
h3>insertob'ect./
h3>mapid./
h3>modifyob'ect./
h3>m5./
h3>ne3>document./
h3>ob'rec*array./
h3>output>document./
h3>pconnect./
h3>pipedocument./
h3>root./
h3>setlinBroot./
h3>stat./
h3>unlocB./
h3>3ho./
h3api>hgcsp./
hypot./
I
ibase>add>user./
ibase>affected>ro3s./
ibase>bacBup./
ibase>blob>add./
ibase>blob>cancel./
ibase>blob>close./
ibase>blob>create./
ibase>blob>echo./
ibase>blob>get./
ibase>blob>import./
ibase>blob>info./
ibase>blob>open./
ibase>close./
ibase>commit./
ibase>commit>ret./
ibase>connect./
ibase>db>info./
ibase>delete>user./
ibase>drop>db./
ibase>errcode./
ibase>errmsg./
ibase>e+ecute./
ibase>fetch>assoc./
ibase>fetch>ob'ect./
ibase>fetch>ro3./
ibase>field>info./
ibase>free>e5ent>handler./
ibase>free>?uery./
ibase>free>result./
ibase>gen>id./
ibase>maintain>db./
ibase>modify>user./
ibase>name>result./
ibase>num>fields./
ibase>num>params./
ibase>param>info./
ibase>pconnect./
ibase>prepare./
ibase>?uery./
ibase>restore./
ibase>rollbacB./
ibase>rollbacB>ret./
ibase>ser5er>info./
ibase>ser5ice>attach./
ibase>ser5ice>detach./
ibase>set>e5ent>handler./
ibase>timefmt./
ibase>trans./
ibase>3ait>e5ent./
icon5./
icon5>get>encoding./
icon5>mime>decode./
icon5>mime>decode>headers./
icon5>mime>encode./
icon5>set>encoding./
icon5>strlen./
icon5>strpos./
icon5>strrpos./
icon5>substr./
id7>get>frame>long>name./
id7>get>frame>short>name./
id7>get>genre>id./
id7>get>genre>list./
id7>get>genre>name./
id7>get>tag./
id7>get>5ersion./
id7>remo5e>tag./
id7>set>tag./
idate./
if+>affected>ro3s./
if+>blobinfile>mode./
if+>byteas5archar./
if+>close./
if+>connect./
if+>copy>blob./
if+>create>blob./
if+>create>char./
if+>do./
if+>error./
if+>errormsg./
if+>fetch>ro3./
if+>fieldproperties./
if+>fieldtypes./
if+>free>blob./
if+>free>char./
if+>free>result./
if+>get>blob./
if+>get>char./
if+>gets?lca./
if+>htmltbl>result./
if+>nullformat./
if+>num>fields./
if+>num>ro3s./
if+>pconnect./
if+>prepare./
if+>?uery./
if+>te+tas5archar./
if+>update>blob./
if+>update>char./
if+us>close>slob./
if+us>create>slob./
if+us>free>slob./
if+us>open>slob./
if+us>read>slob./
if+us>seeB>slob./
if+us>tell>slob./
if+us>3rite>slob./
ignore>user>abort./
image*3bmp./
image>type>to>e+tension./
image>type>to>mime>type./
imagealphablending./
imageantialias./
imagearc./
imagechar./
imagecharup./
imagecolorallocate./
imagecolorallocatealpha./
imagecolorat./
imagecolorclosest./
imagecolorclosestalpha./
imagecolorclosesth3b./
imagecolordeallocate./
imagecolore+act./
imagecolore+actalpha./
imagecolormatch./
imagecolorresol5e./
imagecolorresol5ealpha./
imagecolorset./
imagecolorsforinde+./
imagecolorstotal./
imagecolortransparent./
imagecopy./
imagecopymerge./
imagecopymergegray./
imagecopyresampled./
imagecopyresi6ed./
imagecreate./
imagecreatefromgd./
imagecreatefromgd*./
imagecreatefromgd*part./
imagecreatefromgif./
imagecreatefrom'peg./
imagecreatefrompng./
imagecreatefromstring./
imagecreatefrom3bmp./
imagecreatefrom+bm./
imagecreatefrom+pm./
imagecreatetruecolor./
imagedashedline./
imagedestroy./
imageellipse./
imagefill./
imagefilledarc./
imagefilledellipse./
imagefilledpolygon./
imagefilledrectangle./
imagefilltoborder./
imagefilter./
imagefontheight./
imagefont3idth./
imageftbbo+./
imageftte+t./
imagegammacorrect./
imagegd./
imagegd*./
imagegif./
imageinterlace./
imageistruecolor./
image'peg./
imagelayereffect./
imageline./
imageloadfont./
imagepalettecopy./
imagepng./
imagepolygon./
imagepsbbo+./
imagepscopyfont./
imagepsencodefont./
imagepse+tendfont./
imagepsfreefont./
imagepsloadfont./
imagepsslantfont./
imagepste+t./
imagerectangle./
imagerotate./
imagesa5ealpha./
imagesetbrush./
imagesetpi+el./
imagesetstyle./
imagesetthicBness./
imagesettile./
imagestring./
imagestringup./
images+./
imagesy./
imagetruecolortopalette./
imagettfbbo+./
imagettfte+t./
imagetypes./
image3bmp./
image+bm./
imap>Nbit./
imap>alerts./
imap>append./
imap>base<8./
imap>binary./
imap>body./
imap>bodystruct./
imap>checB./
imap>clearflag>full./
imap>close./
imap>createmailbo+./
imap>delete./
imap>deletemailbo+./
imap>errors./
imap>e+punge./
imap>fetch>o5er5ie3./
imap>fetchbody./
imap>fetchheader./
imap>fetchstructure./
imap>get>?uota./
imap>get>?uotaroot./
imap>getacl./
imap>getmailbo+es./
imap>getsubscribed./
imap>header./
imap>headerinfo./
imap>headers./
imap>last>error./
imap>list./
imap>listmailbo+./
imap>listscan./
imap>listsubscribed./
imap>lsub./
imap>mail./
imap>mail>compose./
imap>mail>copy./
imap>mail>mo5e./
imap>mailbo+msginfo./
imap>mime>header>decode./
imap>msgno./
imap>num>msg./
imap>num>recent./
imap>open./
imap>ping./
imap>?print./
imap>renamemailbo+./
imap>reopen./
imap>rfcN**>parse>adrlist./
imap>rfcN**>parse>headers./
imap>rfcN**>3rite>address./
imap>scanmailbo+./
imap>search./
imap>set>?uota./
imap>setacl./
imap>setflag>full./
imap>sort./
imap>status./
imap>subscribe./
imap>thread./
imap>timeout./
imap>uid./
imap>undelete./
imap>unsubscribe./
imap>utf=>decode./
imap>utf=>encode./
imap>utfN./
implode./
import>re?uest>5ariables./
in>array./
inet>ntop./
inet>pton./
ingres>autocommit./
ingres>close./
ingres>commit./
ingres>connect./
ingres>fetch>array./
ingres>fetch>ob'ect./
ingres>fetch>ro3./
ingres>field>length./
ingres>field>name./
ingres>field>nullable./
ingres>field>precision./
ingres>field>scale./
ingres>field>type./
ingres>num>fields./
ingres>num>ro3s./
ingres>pconnect./
ingres>?uery./
ingres>rollbacB./
ini>alter./
ini>get./
ini>get>all./
ini>restore./
ini>set./
interface>e+ists./
int5al./
ip*long./
iptcembed./
iptcparse./
ircg>channel>mode./
ircg>disconnect./
ircg>e5al>ecmascript>params./
ircg>fetch>error>msg./
ircg>get>username./
ircg>html>encode./
ircg>ignore>add./
ircg>ignore>del./
ircg>in5ite./
ircg>is>conn>ali5e./
ircg>'oin./
ircg>BicB./
ircg>list./
ircg>looBup>format>messages./
ircg>lusers./
ircg>msg./
ircg>names./
ircg>nicB./
ircg>nicBname>escape./
ircg>nicBname>unescape./
ircg>notice./
ircg>oper./
ircg>part./
ircg>pconnect./
ircg>register>format>messages./
ircg>set>current./
ircg>set>file./
ircg>set>on>die./
ircg>topic./
ircg>3ho./
ircg>3hois./
is>a./
is>array./
is>bool./
is>callable./
is>dir./
is>double./
is>e+ecutable./
is>file./
is>finite./
is>float./
is>infinite./
is>int./
is>integer./
is>linB./
is>long./
is>nan./
is>null./
is>numeric./
is>ob'ect./
is>readable./
is>real./
is>resource./
is>scalar./
is>soap>fault./
is>string./
is>subclass>of./
is>uploaded>file./
is>3ritable./
is>3riteable./
isset./
iterator(to(array./
iterator>count./
[
'a5a>last>e+ception>clear./
'a5a>last>e+ception>get./
'ddayof3eeB./
'dmonthname./
'dtofrench./
'dtogregorian./
'dto'e3ish./
'dto'ulian./
'dtouni+./
'e3ishto'd./
'oin./
'peg*3bmp./
'ulianto'd./
`
Bey./
Brsort./
Bsort./
:
lcg>5alue./
ldap>NN9O>to>t<!./
ldap>add./
ldap>bind./
ldap>close./
ldap>compare./
ldap>connect./
ldap>count>entries./
ldap>delete./
ldap>dn*ufn./
ldap>err*str./
ldap>errno./
ldap>error./
ldap>e+plode>dn./
ldap>first>attribute./
ldap>first>entry./
ldap>first>reference./
ldap>free>result./
ldap>get>attributes./
ldap>get>dn./
ldap>get>entries./
ldap>get>option./
ldap>get>5alues./
ldap>get>5alues>len./
ldap>list./
ldap>mod>add./
ldap>mod>del./
ldap>mod>replace./
ldap>modify./
ldap>ne+t>attribute./
ldap>ne+t>entry./
ldap>ne+t>reference./
ldap>parse>reference./
ldap>parse>result./
ldap>read./
ldap>rename./
ldap>sasl>bind./
ldap>search./
ldap>set>option./
ldap>set>rebind>proc./
ldap>sort./
ldap>start>tls./
ldap>t<!>to>NN9O./
ldap>unbind./
le5enshtein./
:imitIterator--getPosition./
:imitIterator--ne+t./
:imitIterator--re3ind./
:imitIterator--seeB./
:imitIterator--5alid./
linB./
linBinfo./
list./
lob(Gappend./
lob(Gclose./
lob(Geof./
lob(Gerase./
lob(Ge+port./
lob(Gflush./
lob(Gget1uffering./
lob(Gimport./
lob(Gload./
lob(Gread./
lob(Gre3ind./
lob(Gsa5e./
lob(GseeB./
lob(Gset1uffering./
lob(Gsi6e./
lob(Gtell./
lob(Gtruncate./
lob(G3rite./
lob(G3riteTemporary./
localecon5./
localtime./
log./
log!D./
log!p./
long*ip./
lstat./
ltrim./
l6f>compress./
l6f>decompress./
l6f>optimi6ed>for./
M
mail./
mailparse>determine>best>+fer>encoding./
mailparse>msg>create./
mailparse>msg>e+tract>part./
mailparse>msg>e+tract>part>file./
mailparse>msg>free./
mailparse>msg>get>part./
mailparse>msg>get>part>data./
mailparse>msg>get>structure./
mailparse>msg>parse./
mailparse>msg>parse>file./
mailparse>rfcN**>parse>addresses./
mailparse>stream>encode./
mailparse>uudecode>all./
main./
ma+./
mb>con5ert>case./
mb>con5ert>encoding./
mb>con5ert>Bana./
mb>con5ert>5ariables./
mb>decode>mimeheader./
mb>decode>numericentity./
mb>detect>encoding./
mb>detect>order./
mb>encode>mimeheader./
mb>encode>numericentity./
mb>ereg./
mb>ereg>match./
mb>ereg>replace./
mb>ereg>search./
mb>ereg>search>getpos./
mb>ereg>search>getregs./
mb>ereg>search>init./
mb>ereg>search>pos./
mb>ereg>search>regs./
mb>ereg>search>setpos./
mb>eregi./
mb>eregi>replace./
mb>get>info./
mb>http>input./
mb>http>output./
mb>internal>encoding./
mb>language./
mb>list>encodings./
mb>output>handler./
mb>parse>str./
mb>preferred>mime>name./
mb>rege+>encoding./
mb>rege+>set>options./
mb>send>mail./
mb>split./
mb>strcut./
mb>strim3idth./
mb>strlen./
mb>strpos./
mb>strrpos./
mb>strtolo3er./
mb>strtoupper./
mb>str3idth./
mb>substitute>character./
mb>substr./
mb>substr>count./
mcal>append>e5ent./
mcal>close./
mcal>create>calendar./
mcal>date>compare./
mcal>date>5alid./
mcal>day>of>3eeB./
mcal>day>of>year./
mcal>days>in>month./
mcal>delete>calendar./
mcal>delete>e5ent./
mcal>e5ent>add>attribute./
mcal>e5ent>init./
mcal>e5ent>set>alarm./
mcal>e5ent>set>category./
mcal>e5ent>set>class./
mcal>e5ent>set>description./
mcal>e5ent>set>end./
mcal>e5ent>set>recur>daily./
mcal>e5ent>set>recur>monthly>mday./
mcal>e5ent>set>recur>monthly>3day./
mcal>e5ent>set>recur>none./
mcal>e5ent>set>recur>3eeBly./
mcal>e5ent>set>recur>yearly./
mcal>e5ent>set>start./
mcal>e5ent>set>title./
mcal>e+punge./
mcal>fetch>current>stream>e5ent./
mcal>fetch>e5ent./
mcal>is>leap>year./
mcal>list>alarms./
mcal>list>e5ents./
mcal>ne+t>recurrence./
mcal>open./
mcal>popen./
mcal>rename>calendar./
mcal>reopen./
mcal>snoo6e./
mcal>store>e5ent./
mcal>time>5alid./
mcal>3eeB>of>year./
mcrypt>cbc./
mcrypt>cfb./
mcrypt>create>i5./
mcrypt>decrypt./
mcrypt>ecb./
mcrypt>enc>get>algorithms>name./
mcrypt>enc>get>blocB>si6e./
mcrypt>enc>get>i5>si6e./
mcrypt>enc>get>Bey>si6e./
mcrypt>enc>get>modes>name./
mcrypt>enc>get>supported>Bey>si6es./
mcrypt>enc>is>blocB>algorithm./
mcrypt>enc>is>blocB>algorithm>mode./
mcrypt>enc>is>blocB>mode./
mcrypt>enc>self>test./
mcrypt>encrypt./
mcrypt>generic./
mcrypt>generic>deinit./
mcrypt>generic>end./
mcrypt>generic>init./
mcrypt>get>blocB>si6e./
mcrypt>get>cipher>name./
mcrypt>get>i5>si6e./
mcrypt>get>Bey>si6e./
mcrypt>list>algorithms./
mcrypt>list>modes./
mcrypt>module>close./
mcrypt>module>get>algo>blocB>si6e./
mcrypt>module>get>algo>Bey>si6e./
mcrypt>module>get>supported>Bey>si6es./
mcrypt>module>is>blocB>algorithm./
mcrypt>module>is>blocB>algorithm>mode./
mcrypt>module>is>blocB>mode./
mcrypt>module>open./
mcrypt>module>self>test./
mcrypt>ofb./
mc5e>adduser./
mc5e>adduserarg./
mc5e>bt./
mc5e>checBstatus./
mc5e>chBp3d./
mc5e>chngp3d./
mc5e>completeauthori6ations./
mc5e>connect./
mc5e>connectionerror./
mc5e>deleteresponse./
mc5e>deletetrans./
mc5e>deleteusersetup./
mc5e>deluser./
mc5e>destroyconn./
mc5e>destroyengine./
mc5e>disableuser./
mc5e>edituser./
mc5e>enableuser./
mc5e>force./
mc5e>getcell./
mc5e>getcellbynum./
mc5e>getcommadelimited./
mc5e>getheader./
mc5e>getuserarg./
mc5e>getuserparam./
mc5e>gft./
mc5e>gl./
mc5e>gut./
mc5e>initconn./
mc5e>initengine./
mc5e>initusersetup./
mc5e>iscommadelimited./
mc5e>liststats./
mc5e>listusers./
mc5e>ma+conntimeout./
mc5e>monitor./
mc5e>numcolumns./
mc5e>numro3s./
mc5e>o5erride./
mc5e>parsecommadelimited./
mc5e>ping./
mc5e>preauth./
mc5e>preauthcompletion./
mc5e>?c./
mc5e>responseparam./
mc5e>return./
mc5e>returncode./
mc5e>returnstatus./
mc5e>sale./
mc5e>setblocBing./
mc5e>setdropfile./
mc5e>setip./
mc5e>setssl./
mc5e>setssl>files./
mc5e>settimeout./
mc5e>settle./
mc5e>te+t>a5s./
mc5e>te+t>code./
mc5e>te+t>c5./
mc5e>transactionauth./
mc5e>transactiona5s./
mc5e>transactionbatch./
mc5e>transactionc5./
mc5e>transactionid./
mc5e>transactionitem./
mc5e>transactionssent./
mc5e>transactionte+t./
mc5e>transin?ueue./
mc5e>transne3./
mc5e>transparam./
mc5e>transsend./
mc5e>ub./
mc5e>u3ait./
mc5e>5erifyconnection./
mc5e>5erifysslcert./
mc5e>5oid./
md9./
md9>file./
mdecrypt>generic./
Memcache--add./
Memcache--close./
Memcache--connect./
Memcache--decrement./
Memcache--delete./
Memcache--flush./
Memcache--get./
Memcache--get,tats./
Memcache--getCersion./
Memcache--increment./
Memcache--pconnect./
Memcache--replace./
Memcache--set./
memcache>debug./
memory>get>usage./
metaphone./
method>e+ists./
mhash./
mhash>count./
mhash>get>blocB>si6e./
mhash>get>hash>name./
mhash>Beygen>s*B./
microtime./
mime>content>type./
min./
ming>setcubicthreshold./
ming>setscale./
ming>uses3f5ersion./
mBdir./
mBtime./
money>format./
mo5e>uploaded>file./
msession>connect./
msession>count./
msession>create./
msession>destroy./
msession>disconnect./
msession>find./
msession>get./
msession>get>array./
msession>get>data./
msession>inc./
msession>list./
msession>list5ar./
msession>locB./
msession>plugin./
msession>randstr./
msession>set./
msession>set>array./
msession>set>data./
msession>timeout./
msession>uni?./
msession>unlocB./
msg>get>?ueue./
msg>recei5e./
msg>remo5e>?ueue./
msg>send./
msg>set>?ueue./
msg>stat>?ueue./
ms?l./
ms?l>affected>ro3s./
ms?l>close./
ms?l>connect./
ms?l>create>db./
ms?l>createdb./
ms?l>data>seeB./
ms?l>db>?uery./
ms?l>dbname./
ms?l>drop>db./
ms?l>error./
ms?l>fetch>array./
ms?l>fetch>field./
ms?l>fetch>ob'ect./
ms?l>fetch>ro3./
ms?l>field>flags./
ms?l>field>len./
ms?l>field>name./
ms?l>field>seeB./
ms?l>field>table./
ms?l>field>type./
ms?l>fieldflags./
ms?l>fieldlen./
ms?l>fieldname./
ms?l>fieldtable./
ms?l>fieldtype./
ms?l>free>result./
ms?l>list>dbs./
ms?l>list>fields./
ms?l>list>tables./
ms?l>num>fields./
ms?l>num>ro3s./
ms?l>numfields./
ms?l>numro3s./
ms?l>pconnect./
ms?l>?uery./
ms?l>regcase./
ms?l>result./
ms?l>select>db./
ms?l>tablename./
mss?l>bind./
mss?l>close./
mss?l>connect./
mss?l>data>seeB./
mss?l>e+ecute./
mss?l>fetch>array./
mss?l>fetch>assoc./
mss?l>fetch>batch./
mss?l>fetch>field./
mss?l>fetch>ob'ect./
mss?l>fetch>ro3./
mss?l>field>length./
mss?l>field>name./
mss?l>field>seeB./
mss?l>field>type./
mss?l>free>result./
mss?l>free>statement./
mss?l>get>last>message./
mss?l>guid>string./
mss?l>init./
mss?l>min>error>se5erity./
mss?l>min>message>se5erity./
mss?l>ne+t>result./
mss?l>num>fields./
mss?l>num>ro3s./
mss?l>pconnect./
mss?l>?uery./
mss?l>result./
mss?l>ro3s>affected./
mss?l>select>db./
mt>getrandma+./
mt>rand./
mt>srand./
muscat>close./
muscat>get./
muscat>gi5e./
muscat>setup./
muscat>setup>net./
mys?l>affected>ro3s./
mys?l>change>user./
mys?l>client>encoding./
mys?l>close./
mys?l>connect./
mys?l>create>db./
mys?l>data>seeB./
mys?l>db>name./
mys?l>db>?uery./
mys?l>drop>db./
mys?l>errno./
mys?l>error./
mys?l>escape>string./
mys?l>fetch>array./
mys?l>fetch>assoc./
mys?l>fetch>field./
mys?l>fetch>lengths./
mys?l>fetch>ob'ect./
mys?l>fetch>ro3./
mys?l>field>flags./
mys?l>field>len./
mys?l>field>name./
mys?l>field>seeB./
mys?l>field>table./
mys?l>field>type./
mys?l>free>result./
mys?l>get>client>info./
mys?l>get>host>info./
mys?l>get>proto>info./
mys?l>get>ser5er>info./
mys?l>info./
mys?l>insert>id./
mys?l>list>dbs./
mys?l>list>fields./
mys?l>list>processes./
mys?l>list>tables./
mys?l>num>fields./
mys?l>num>ro3s./
mys?l>pconnect./
mys?l>ping./
mys?l>?uery./
mys?l>real>escape>string./
mys?l>result./
mys?l>select>db./
mys?l>stat./
mys?l>tablename./
mys?l>thread>id./
mys?l>unbuffered>?uery./
mys?li././
mys?li(Gaffected>ro3s./
mys?li(Gautocommit./
mys?li(Gchange>user./
mys?li(Gcharacter>set>name./
mys?li(Gclose./
mys?li(Gcommit./
mys?li(Gdisable>reads>from>master./
mys?li(Gdump>debug>info./
mys?li(Gerrno./
mys?li(Gfetch>assoc./
mys?li(Gfield>count./
mys?li(Gget>host>info./
mys?li(Ginfo./
mys?li(Ginsert>id./
mys?li(GBill./
mys?li(Gmore>results./
mys?li(Gmulti>?uery./
mys?li(Gne+t>result./
mys?li(Goptions./
mys?li(Gping./
mys?li(Gprepare./
mys?li(Gprotocol>5ersion./
mys?li(G?uery./
mys?li(Greal>connect./
mys?li(Greal>escape>string./
mys?li(Greal>?uery./
mys?li(GrollbacB./
mys?li(Grpl>?uery>type./
mys?li(Gselect>db./
mys?li(Gsend>?uery./
mys?li(Gser5er>info./
mys?li(Gs?lstate./
mys?li(Gssl>set./
mys?li(Gstat./
mys?li(Gstmt>init./
mys?li(Gstore>result./
mys?li(Gthread>id./
mys?li(Guse>result./
mys?li(G3arning>count./
mys?li>affected>ro3s./
mys?li>autocommit./
mys?li>bind>param./
mys?li>bind>result./
mys?li>change>user./
mys?li>character>set>name./
mys?li>client>encoding./
mys?li>close./
mys?li>commit./
mys?li>connect./
mys?li>connect>errno./
mys?li>connect>error./
mys?li>data>seeB./
mys?li>debug./
mys?li>disable>reads>from>master./
mys?li>disable>rpl>parse./
mys?li>dump>debug>info./
mys?li>embedded>connect./
mys?li>enable>reads>from>master./
mys?li>enable>rpl>parse./
mys?li>errno./
mys?li>error./
mys?li>escape>string./
mys?li>e+ecute./
mys?li>fetch./
mys?li>fetch>array./
mys?li>fetch>assoc./
mys?li>fetch>field./
mys?li>fetch>field>direct./
mys?li>fetch>fields./
mys?li>fetch>lengths./
mys?li>fetch>ob'ect./
mys?li>fetch>ro3./
mys?li>field>count./
mys?li>field>seeB./
mys?li>field>tell./
mys?li>free>result./
mys?li>get>client>info./
mys?li>get>client>5ersion./
mys?li>get>host>info./
mys?li>get>metadata./
mys?li>get>proto>info./
mys?li>get>ser5er>info./
mys?li>get>ser5er>5ersion./
mys?li>info./
mys?li>init./
mys?li>insert>id./
mys?li>Bill./
mys?li>master>?uery./
mys?li>more>results./
mys?li>multi>?uery./
mys?li>ne+t>result./
mys?li>num>fields./
mys?li>num>ro3s./
mys?li>options./
mys?li>param>count./
mys?li>ping./
mys?li>prepare./
mys?li>?uery./
mys?li>real>connect./
mys?li>real>escape>string./
mys?li>real>?uery./
mys?li>report./
mys?li>rollbacB./
mys?li>rpl>parse>enabled./
mys?li>rpl>probe./
mys?li>rpl>?uery>type./
mys?li>select>db./
mys?li>send>long>data./
mys?li>send>?uery./
mys?li>ser5er>end./
mys?li>ser5er>init./
mys?li>set>opt./
mys?li>s?lstate./
mys?li>ssl>set./
mys?li>stat./
mys?li>stmt(Gaffected>ro3s./
mys?li>stmt(Gclose./
mys?li>stmt(Gerrno./
mys?li>stmt(Gerror./
mys?li>stmt(Gstore>result./
mys?li>stmt>affected>ro3s./
mys?li>stmt>bind>param./
mys?li>stmt>bind>result./
mys?li>stmt>close./
mys?li>stmt>data>seeB./
mys?li>stmt>errno./
mys?li>stmt>error./
mys?li>stmt>e+ecute./
mys?li>stmt>fetch./
mys?li>stmt>free>result./
mys?li>stmt>init./
mys?li>stmt>num>ro3s./
mys?li>stmt>param>count./
mys?li>stmt>prepare./
mys?li>stmt>reset./
mys?li>stmt>result>metadata./
mys?li>stmt>send>long>data./
mys?li>stmt>s?lstate./
mys?li>stmt>store>result./
mys?li>store>result./
mys?li>thread>id./
mys?li>thread>safe./
mys?li>use>result./
mys?li>3arning>count./
N
natcasesort./
natsort./
ncurses>addch./
ncurses>addchnstr./
ncurses>addchstr./
ncurses>addnstr./
ncurses>addstr./
ncurses>assume>default>colors./
ncurses>attroff./
ncurses>attron./
ncurses>attrset./
ncurses>baudrate./
ncurses>beep./
ncurses>bBgd./
ncurses>bBgdset./
ncurses>border./
ncurses>bottom>panel./
ncurses>can>change>color./
ncurses>cbreaB./
ncurses>clear./
ncurses>clrtobot./
ncurses>clrtoeol./
ncurses>color>content./
ncurses>color>set./
ncurses>curs>set./
ncurses>def>prog>mode./
ncurses>def>shell>mode./
ncurses>define>Bey./
ncurses>del>panel./
ncurses>delay>output./
ncurses>delch./
ncurses>deleteln./
ncurses>del3in./
ncurses>doupdate./
ncurses>echo./
ncurses>echochar./
ncurses>end./
ncurses>erase./
ncurses>erasechar./
ncurses>filter./
ncurses>flash./
ncurses>flushinp./
ncurses>getch./
ncurses>getma+y+./
ncurses>getmouse./
ncurses>gety+./
ncurses>halfdelay./
ncurses>has>colors./
ncurses>has>ic./
ncurses>has>il./
ncurses>has>Bey./
ncurses>hide>panel./
ncurses>hline./
ncurses>inch./
ncurses>init./
ncurses>init>color./
ncurses>init>pair./
ncurses>insch./
ncurses>insdelln./
ncurses>insertln./
ncurses>insstr./
ncurses>instr./
ncurses>isend3in./
ncurses>BeyoB./
ncurses>Beypad./
ncurses>Billchar./
ncurses>longname./
ncurses>meta./
ncurses>mouse>trafo./
ncurses>mouseinter5al./
ncurses>mousemasB./
ncurses>mo5e./
ncurses>mo5e>panel./
ncurses>m5addch./
ncurses>m5addchnstr./
ncurses>m5addchstr./
ncurses>m5addnstr./
ncurses>m5addstr./
ncurses>m5cur./
ncurses>m5delch./
ncurses>m5getch./
ncurses>m5hline./
ncurses>m5inch./
ncurses>m55line./
ncurses>m53addstr./
ncurses>napms./
ncurses>ne3>panel./
ncurses>ne3pad./
ncurses>ne33in./
ncurses>nl./
ncurses>nocbreaB./
ncurses>noecho./
ncurses>nonl./
ncurses>no?iflush./
ncurses>nora3./
ncurses>pair>content./
ncurses>panel>abo5e./
ncurses>panel>belo3./
ncurses>panel>3indo3./
ncurses>pnoutrefresh./
ncurses>prefresh./
ncurses>putp./
ncurses>?iflush./
ncurses>ra3./
ncurses>refresh./
ncurses>replace>panel./
ncurses>reset>prog>mode./
ncurses>reset>shell>mode./
ncurses>resetty./
ncurses>sa5etty./
ncurses>scr>dump./
ncurses>scr>init./
ncurses>scr>restore./
ncurses>scr>set./
ncurses>scrl./
ncurses>sho3>panel./
ncurses>slB>attr./
ncurses>slB>attroff./
ncurses>slB>attron./
ncurses>slB>attrset./
ncurses>slB>clear./
ncurses>slB>color./
ncurses>slB>init./
ncurses>slB>noutrefresh./
ncurses>slB>refresh./
ncurses>slB>restore./
ncurses>slB>set./
ncurses>slB>touch./
ncurses>standend./
ncurses>standout./
ncurses>start>color./
ncurses>termattrs./
ncurses>termname./
ncurses>timeout./
ncurses>top>panel./
ncurses>typeahead./
ncurses>ungetch./
ncurses>ungetmouse./
ncurses>update>panels./
ncurses>use>default>colors./
ncurses>use>en5./
ncurses>use>e+tended>names./
ncurses>5idattr./
ncurses>5line./
ncurses>3addch./
ncurses>3addstr./
ncurses>3attroff./
ncurses>3attron./
ncurses>3attrset./
ncurses>3border./
ncurses>3clear./
ncurses>3color>set./
ncurses>3erase./
ncurses>3getch./
ncurses>3hline./
ncurses>3mouse>trafo./
ncurses>3mo5e./
ncurses>3noutrefresh./
ncurses>3refresh./
ncurses>3standend./
ncurses>3standout./
ncurses>35line./
ne+t./
ngette+t./
nl*br./
nl>langinfo./
notes>body./
notes>copy>db./
notes>create>db./
notes>create>note./
notes>drop>db./
notes>find>note./
notes>header>info./
notes>list>msgs./
notes>marB>read./
notes>marB>unread./
notes>na5>create./
notes>search./
notes>unread./
notes>5ersion./
nsapi>re?uest>headers./
nsapi>response>headers./
nsapi>5irtual./
number>format./
J
ob>clean./
ob>end>clean./
ob>end>flush./
ob>flush./
ob>get>clean./
ob>get>contents./
ob>get>flush./
ob>get>length./
ob>get>le5el./
ob>get>status./
ob>g6handler./
ob>icon5>handler./
ob>implicit>flush./
ob>list>handlers./
ob>start./
ob>tidyhandler./
JCI(Collection(Gappend./
JCI(Collection(Gassign./
JCI(Collection(GassignElem./
JCI(Collection(Gfree./
JCI(Collection(GgetElem./
JCI(Collection(Gma+./
JCI(Collection(Gsi6e./
JCI(Collection(Gtrim./
oci>bind>by>name./
oci>cancel./
oci>close./
oci>commit./
oci>connect./
oci>define>by>name./
oci>error./
oci>e+ecute./
oci>fetch./
oci>fetch>all./
oci>fetch>array./
oci>fetch>assoc./
oci>fetch>ob'ect./
oci>fetch>ro3./
oci>field>is>null./
oci>field>name./
oci>field>precision./
oci>field>scale./
oci>field>si6e./
oci>field>type./
oci>field>type>ra3./
oci>free>statement./
oci>internal>debug./
oci>lob>copy./
oci>lob>is>e?ual./
oci>ne3>collection./
oci>ne3>connect./
oci>ne3>cursor./
oci>ne3>descriptor./
oci>num>fields./
oci>num>ro3s./
oci>parse./
oci>pass3ord>change./
oci>pconnect./
oci>result./
oci>rollbacB./
oci>ser5er>5ersion./
oci>set>prefetch./
oci>statement>type./
ocibindbyname./
ocicancel./
ocicloselob./
ocicollappend./
ocicollassign./
ocicollassignelem./
ocicollgetelem./
ocicollma+./
ocicollsi6e./
ocicolltrim./
ocicolumnisnull./
ocicolumnname./
ocicolumnprecision./
ocicolumnscale./
ocicolumnsi6e./
ocicolumntype./
ocicolumntypera3./
ocicommit./
ocidefinebyname./
ocierror./
ocie+ecute./
ocifetch./
ocifetchinto./
ocifetchstatement./
ocifreecollection./
ocifreecursor./
ocifreedesc./
ocifreestatement./
ociinternaldebug./
ociloadlob./
ocilogoff./
ocilogon./
ocine3collection./
ocine3cursor./
ocine3descriptor./
ocinlogon./
ocinumcols./
ociparse./
ociplogon./
ociresult./
ocirollbacB./
ociro3count./
ocisa5elob./
ocisa5elobfile./
ociser5er5ersion./
ocisetprefetch./
ocistatementtype./
oci3ritelobtofile./
oci3ritetemporarylob./
octdec./
odbc>autocommit./
odbc>binmode./
odbc>close./
odbc>close>all./
odbc>columnpri5ileges./
odbc>columns./
odbc>commit./
odbc>connect./
odbc>cursor./
odbc>data>source./
odbc>do./
odbc>error./
odbc>errormsg./
odbc>e+ec./
odbc>e+ecute./
odbc>fetch>array./
odbc>fetch>into./
odbc>fetch>ob'ect./
odbc>fetch>ro3./
odbc>field>len./
odbc>field>name./
odbc>field>num./
odbc>field>precision./
odbc>field>scale./
odbc>field>type./
odbc>foreignBeys./
odbc>free>result./
odbc>gettypeinfo./
odbc>longreadlen./
odbc>ne+t>result./
odbc>num>fields./
odbc>num>ro3s./
odbc>pconnect./
odbc>prepare./
odbc>primaryBeys./
odbc>procedurecolumns./
odbc>procedures./
odbc>result./
odbc>result>all./
odbc>rollbacB./
odbc>setoption./
odbc>specialcolumns./
odbc>statistics./
odbc>tablepri5ileges./
odbc>tables./
openal>buffer>create./
openal>buffer>data./
openal>buffer>destroy./
openal>buffer>get./
openal>buffer>load3a5./
openal>conte+t>create./
openal>conte+t>current./
openal>conte+t>destroy./
openal>conte+t>process./
openal>conte+t>suspend./
openal>de5ice>close./
openal>de5ice>open./
openal>listener>get./
openal>listener>set./
openal>source>create./
openal>source>destroy./
openal>source>get./
openal>source>pause./
openal>source>play./
openal>source>re3ind./
openal>source>set./
openal>source>stop./
openal>stream./
opendir./
openlog./
openssl>csr>e+port./
openssl>csr>e+port>to>file./
openssl>csr>ne3./
openssl>csr>sign./
openssl>error>string./
openssl>free>Bey./
openssl>get>pri5ateBey./
openssl>get>publicBey./
openssl>open./
openssl>pBcs=>decrypt./
openssl>pBcs=>encrypt./
openssl>pBcs=>sign./
openssl>pBcs=>5erify./
openssl>pBey>e+port./
openssl>pBey>e+port>to>file./
openssl>pBey>get>pri5ate./
openssl>pBey>get>public./
openssl>pBey>ne3./
openssl>pri5ate>decrypt./
openssl>pri5ate>encrypt./
openssl>public>decrypt./
openssl>public>encrypt./
openssl>seal./
openssl>sign./
openssl>5erify./
openssl>+9DO>checB>pri5ate>Bey./
openssl>+9DO>checBpurpose./
openssl>+9DO>e+port./
openssl>+9DO>e+port>to>file./
openssl>+9DO>free./
openssl>+9DO>parse./
openssl>+9DO>read./
ora>bind./
ora>close./
ora>columnname./
ora>columnsi6e./
ora>columntype./
ora>commit./
ora>commitoff./
ora>commiton./
ora>do./
ora>error./
ora>errorcode./
ora>e+ec./
ora>fetch./
ora>fetch>into./
ora>getcolumn./
ora>logoff./
ora>logon./
ora>numcols./
ora>numro3s./
ora>open./
ora>parse./
ora>plogon./
ora>rollbacB./
ord./
output>add>re3rite>5ar./
output>reset>re3rite>5ars./
o5erload./
o5erride>function./
o5rimos>close./
o5rimos>commit./
o5rimos>connect./
o5rimos>cursor./
o5rimos>e+ec./
o5rimos>e+ecute./
o5rimos>fetch>into./
o5rimos>fetch>ro3./
o5rimos>field>len./
o5rimos>field>name./
o5rimos>field>num./
o5rimos>field>type./
o5rimos>free>result./
o5rimos>longreadlen./
o5rimos>num>fields./
o5rimos>num>ro3s./
o5rimos>prepare./
o5rimos>result./
o5rimos>result>all./
o5rimos>rollbacB./
P
pacB./
ParentIterator--getChildren./
ParentIterator--hasChildren./
ParentIterator--ne+t./
ParentIterator--re3ind./
parse>ini>file./
parse>str./
parse>url./
parseBit>compile>file./
parseBit>compile>string./
parseBit>func>arginfo./
passthru./
pathinfo./
pclose./
pcntl>alarm./
pcntl>e+ec./
pcntl>forB./
pcntl>getpriority./
pcntl>setpriority./
pcntl>signal./
pcntl>3ait./
pcntl>3aitpid./
pcntl>3e+itstatus./
pcntl>3ife+ited./
pcntl>3ifsignaled./
pcntl>3ifstopped./
pcntl>3stopsig./
pcntl>3termsig./
pdf>add>annotation./
pdf>add>booBmarB./
pdf>add>launchlinB./
pdf>add>locallinB./
pdf>add>note./
pdf>add>outline./
pdf>add>pdflinB./
pdf>add>thumbnail./
pdf>add>3eblinB./
pdf>arc./
pdf>arcn./
pdf>attach>file./
pdf>begin>page./
pdf>begin>pattern./
pdf>begin>template./
pdf>circle./
pdf>clip./
pdf>close./
pdf>close>image./
pdf>close>pdi./
pdf>close>pdi>page./
pdf>closepath./
pdf>closepath>fill>stroBe./
pdf>closepath>stroBe./
pdf>concat./
pdf>continue>te+t./
pdf>cur5eto./
pdf>delete./
pdf>end>page./
pdf>end>pattern./
pdf>end>template./
pdf>endpath./
pdf>fill./
pdf>fill>stroBe./
pdf>findfont./
pdf>get>buffer./
pdf>get>font./
pdf>get>fontname./
pdf>get>fontsi6e./
pdf>get>image>height./
pdf>get>image>3idth./
pdf>get>ma'or5ersion./
pdf>get>minor5ersion./
pdf>get>parameter./
pdf>get>pdi>parameter./
pdf>get>pdi>5alue./
pdf>get>5alue./
pdf>initgraphics./
pdf>lineto./
pdf>maBespotcolor./
pdf>mo5eto./
pdf>ne3./
pdf>open./
pdf>open>ccitt./
pdf>open>file./
pdf>open>gif./
pdf>open>image./
pdf>open>image>file./
pdf>open>'peg./
pdf>open>memory>image./
pdf>open>pdi./
pdf>open>pdi>page./
pdf>open>png./
pdf>open>tiff./
pdf>place>image./
pdf>place>pdi>page./
pdf>rect./
pdf>restore./
pdf>rotate./
pdf>sa5e./
pdf>scale./
pdf>set>border>color./
pdf>set>border>dash./
pdf>set>border>style./
pdf>set>char>spacing./
pdf>set>duration./
pdf>set>font./
pdf>set>hori6>scaling./
pdf>set>info./
pdf>set>info>author./
pdf>set>info>creator./
pdf>set>info>Bey3ords./
pdf>set>info>sub'ect./
pdf>set>info>title./
pdf>set>leading./
pdf>set>parameter./
pdf>set>te+t>matri+./
pdf>set>te+t>pos./
pdf>set>te+t>rendering./
pdf>set>te+t>rise./
pdf>set>5alue./
pdf>set>3ord>spacing./
pdf>setcolor./
pdf>setdash./
pdf>setflat./
pdf>setfont./
pdf>setgray./
pdf>setgray>fill./
pdf>setgray>stroBe./
pdf>setlinecap./
pdf>setline'oin./
pdf>setline3idth./
pdf>setmatri+./
pdf>setmiterlimit./
pdf>setpolydash./
pdf>setrgbcolor./
pdf>setrgbcolor>fill./
pdf>setrgbcolor>stroBe./
pdf>sho3./
pdf>sho3>bo+ed./
pdf>sho3>+y./
pdf>sBe3./
pdf>string3idth./
pdf>stroBe./
pdf>translate./
PKJ-->>construct./
PKJ--beginTransaction./
PKJ--commit./
PKJ--errorCode./
PKJ--errorInfo./
PKJ--e+ec./
PKJ--lastInsertId./
PKJ--prepare./
PKJ--roll1acB./
PKJ--setAttribute./
PKJ,tatement--bindColumn./
PKJ,tatement--bindParam./
PKJ,tatement--errorCode./
PKJ,tatement--errorInfo./
PKJ,tatement--e+ecute./
PKJ,tatement--fetch./
PKJ,tatement--fetchAll./
PKJ,tatement--fetch,ingle./
PKJ,tatement--ro3Count./
pfpro>cleanup./
pfpro>init./
pfpro>process./
pfpro>process>ra3./
pfpro>5ersion./
pfsocBopen./
pg>affected>ro3s./
pg>cancel>?uery./
pg>client>encoding./
pg>close./
pg>connect./
pg>connection>busy./
pg>connection>reset./
pg>connection>status./
pg>con5ert./
pg>copy>from./
pg>copy>to./
pg>dbname./
pg>delete./
pg>end>copy./
pg>escape>bytea./
pg>escape>string./
pg>fetch>all./
pg>fetch>array./
pg>fetch>assoc./
pg>fetch>ob'ect./
pg>fetch>result./
pg>fetch>ro3./
pg>field>is>null./
pg>field>name./
pg>field>num./
pg>field>prtlen./
pg>field>si6e./
pg>field>type./
pg>free>result./
pg>get>notify./
pg>get>pid./
pg>get>result./
pg>host./
pg>insert./
pg>last>error./
pg>last>notice./
pg>last>oid./
pg>lo>close./
pg>lo>create./
pg>lo>e+port./
pg>lo>import./
pg>lo>open./
pg>lo>read./
pg>lo>read>all./
pg>lo>seeB./
pg>lo>tell./
pg>lo>unlinB./
pg>lo>3rite./
pg>meta>data./
pg>num>fields./
pg>num>ro3s./
pg>options./
pg>parameter>status./
pg>pconnect./
pg>ping./
pg>port./
pg>put>line./
pg>?uery./
pg>result>error./
pg>result>seeB./
pg>result>status./
pg>select./
pg>send>?uery./
pg>set>client>encoding./
pg>trace./
pg>tty./
pg>unescape>bytea./
pg>untrace./
pg>update./
pg>5ersion./
php>checB>synta+./
php>ini>scanned>files./
php>logo>guid./
php>register>url>stream>3rapper./
php>sapi>name./
php>stream>can>cast./
php>stream>cast./
php>stream>close./
php>stream>closedir./
php>stream>copy>to>mem./
php>stream>copy>to>stream./
php>stream>eof./
php>stream>filter>register>factory./
php>stream>filter>unregister>factory./
php>stream>flush./
php>stream>fopen>from>file./
php>stream>fopen>temporary>file./
php>stream>fopen>tmpfile./
php>stream>getc./
php>stream>gets./
php>stream>is./
php>stream>is>persistent./
php>stream>maBe>seeBable./
php>stream>open>3rapper./
php>stream>open>3rapper>as>file./
php>stream>open>3rapper>e+./
php>stream>opendir./
php>stream>passthru./
php>stream>read./
php>stream>readdir./
php>stream>re3inddir./
php>stream>seeB./
php>stream>socB>open>from>socBet./
php>stream>socB>open>host./
php>stream>socB>open>uni+./
php>stream>stat./
php>stream>stat>path./
php>stream>tell./
php>stream>3rite./
php>strip>3hitespace./
php>uname./
php>unregister>url>stream>3rapper./
phpcredits./
phpinfo./
php5ersion./
pi./
png*3bmp./
popen./
pos./
posi+>ctermid./
posi+>get>last>error./
posi+>getc3d./
posi+>getegid./
posi+>geteuid./
posi+>getgid./
posi+>getgrgid./
posi+>getgrnam./
posi+>getgroups./
posi+>getlogin./
posi+>getpgid./
posi+>getpgrp./
posi+>getpid./
posi+>getppid./
posi+>getp3nam./
posi+>getp3uid./
posi+>getrlimit./
posi+>getsid./
posi+>getuid./
posi+>isatty./
posi+>Bill./
posi+>mBfifo./
posi+>setegid./
posi+>seteuid./
posi+>setgid./
posi+>setpgid./
posi+>setsid./
posi+>setuid./
posi+>strerror./
posi+>times./
posi+>ttyname./
posi+>uname./
po3./
preg>grep./
preg>match./
preg>match>all./
preg>?uote./
preg>replace./
preg>replace>callbacB./
preg>split./
pre5./
print./
print>r./
printer>abort./
printer>close./
printer>create>brush./
printer>create>dc./
printer>create>font./
printer>create>pen./
printer>delete>brush./
printer>delete>dc./
printer>delete>font./
printer>delete>pen./
printer>dra3>bmp./
printer>dra3>chord./
printer>dra3>elipse./
printer>dra3>line./
printer>dra3>pie./
printer>dra3>rectangle./
printer>dra3>roundrect./
printer>dra3>te+t./
printer>end>doc./
printer>end>page./
printer>get>option./
printer>list./
printer>logical>fontheight./
printer>open./
printer>select>brush./
printer>select>font./
printer>select>pen./
printer>set>option./
printer>start>doc./
printer>start>page./
printer>3rite./
printf./
proc>close./
proc>get>status./
proc>nice./
proc>open./
proc>terminate./
pspell>add>to>personal./
pspell>add>to>session./
pspell>checB./
pspell>clear>session./
pspell>config>create./
pspell>config>data>dir./
pspell>config>dict>dir./
pspell>config>ignore./
pspell>config>mode./
pspell>config>personal./
pspell>config>repl./
pspell>config>runtogether./
pspell>config>sa5e>repl./
pspell>ne3./
pspell>ne3>config./
pspell>ne3>personal./
pspell>sa5e>3ordlist./
pspell>store>replacement./
pspell>suggest./
puten5./
$
?dom>error./
?dom>tree./
?uoted>printable>decode./
?uotemeta./
M
rad*deg./
rand./
range./
Mar--e+tract./
Mar--getAttr./
Mar--getCrc./
Mar--get;ileTime./
Mar--getHostJs./
Mar--getMethod./
Mar--getName./
Mar--getPacBed,i6e./
Mar--get)npacBed,i6e./
Mar--getCersion./
rar>close./
rar>entry>get./
rar>list./
rar>open./
ra3urldecode./
ra3urlencode./
read>e+if>data./
readdir./
readfile./
readg6file./
readline./
readline>add>history./
readline>callbacB>handler>install./
readline>callbacB>handler>remo5e./
readline>callbacB>read>char./
readline>clear>history./
readline>completion>function./
readline>info./
readline>list>history./
readline>on>ne3>line./
readline>read>history./
readline>redisplay./
readline>3rite>history./
readlinB./
realpath./
recode./
recode>file./
recode>string./
Mecursi5eKirectoryIterator--getChildren./
Mecursi5eKirectoryIterator--hasChildren./
Mecursi5eKirectoryIterator--Bey./
Mecursi5eKirectoryIterator--ne+t./
Mecursi5eKirectoryIterator--re3ind./
Mecursi5eIteratorIterator--current./
Mecursi5eIteratorIterator--getKepth./
Mecursi5eIteratorIterator--get,ubIterator./
Mecursi5eIteratorIterator--Bey./
Mecursi5eIteratorIterator--ne+t./
Mecursi5eIteratorIterator--re3ind./
Mecursi5eIteratorIterator--5alid./
register>shutdo3n>function./
register>ticB>function./
rename./
rename>function./
reset./
restore>error>handler./
restore>e+ception>handler./
restore>include>path./
result(Gcurrent>field./
result(Gdata>seeB./
result(Gfetch>array./
result(Gfetch>field./
result(Gfetch>field>direct./
result(Gfetch>fields./
result(Gfetch>ob'ect./
result(Gfetch>ro3./
result(Gfield>count./
result(Gfield>seeB./
result(Gfree./
result(Glengths./
re3ind./
re3inddir./
rmdir./
round./
rsort./
rtrim./
,
scandir./
sem>ac?uire./
sem>get./
sem>release./
sem>remo5e./
seriali6e./
sesam>affected>ro3s./
sesam>commit./
sesam>connect./
sesam>diagnostic./
sesam>disconnect./
sesam>errormsg./
sesam>e+ecimm./
sesam>fetch>array./
sesam>fetch>result./
sesam>fetch>ro3./
sesam>field>array./
sesam>field>name./
sesam>free>result./
sesam>num>fields./
sesam>?uery./
sesam>rollbacB./
sesam>seeB>ro3./
sesam>settransaction./
session>cache>e+pire./
session>cache>limiter./
session>commit./
session>decode./
session>destroy./
session>encode./
session>get>cooBie>params./
session>id./
session>is>registered./
session>module>name./
session>name./
session>regenerate>id./
session>register./
session>sa5e>path./
session>set>cooBie>params./
session>set>sa5e>handler./
session>start./
session>unregister./
session>unset./
session>3rite>close./
set>error>handler./
set>e+ception>handler./
set>file>buffer./
set>include>path./
set>magic>?uotes>runtime./
set>time>limit./
setcooBie./
setlocale./
setra3cooBie./
settype./
sha!./
sha!>file./
shell>e+ec./
shm>attach./
shm>detach./
shm>get>5ar./
shm>put>5ar./
shm>remo5e./
shm>remo5e>5ar./
shmop>close./
shmop>delete./
shmop>open./
shmop>read./
shmop>si6e./
shmop>3rite./
sho3>source./
shuffle./
similar>te+t./
simple+ml>import>dom./
simple+ml>load>file./
simple+ml>load>string./
,impleIM:Element(GasIM:./
,impleIM:Element(Gattributes./
,impleIM:Element(Gchildren./
,impleIM:Element(G+path./
,impleIM:Iterator--current./
,impleIM:Iterator--getChildren./
,impleIM:Iterator--hasChildren./
,impleIM:Iterator--Bey./
,impleIM:Iterator--ne+t./
,impleIM:Iterator--re3ind./
,impleIM:Iterator--5alid./
sin./
sinh./
si6eof./
sleep./
snmp>get>?uicB>print./
snmp>get>5alueretrie5al./
snmp>read>mib./
snmp>set>enum>print./
snmp>set>oid>numeric>print./
snmp>set>?uicB>print./
snmp>set>5alueretrie5al./
snmpget./
snmpgetne+t./
snmpreal3alB./
snmpset./
snmp3alB./
snmp3alBoid./
,oapClient-->>call./
,oapClient-->>get;unctions./
,oapClient-->>get:astMe?uest./
,oapClient-->>get:astMesponse./
,oapClient-->>getTypes./
,oapClient--,oapClient./
,oap;ault--,oap;ault./
,oapHeader--,oapHeader./
,oapParam--,oapParam./
,oap,er5er--add;unction./
,oap,er5er--get;unctions./
,oap,er5er--handle./
,oap,er5er--setClass./
,oap,er5er--setPersistence./
,oap,er5er--,oap,er5er./
,oapCar--,oapCar./
socBet>accept./
socBet>bind./
socBet>clear>error./
socBet>close./
socBet>connect./
socBet>create./
socBet>create>listen./
socBet>create>pair./
socBet>get>option./
socBet>get>status./
socBet>getpeername./
socBet>getsocBname./
socBet>last>error./
socBet>listen./
socBet>read./
socBet>rec5./
socBet>rec5from./
socBet>select./
socBet>send./
socBet>sendto./
socBet>set>blocB./
socBet>set>blocBing./
socBet>set>nonblocB./
socBet>set>option./
socBet>set>timeout./
socBet>shutdo3n./
socBet>strerror./
socBet>3rite./
sort./
sounde+./
spl>classes./
split./
spliti./
sprintf./
s?l>regcase./
s?lite>array>?uery./
s?lite>busy>timeout./
s?lite>changes./
s?lite>close./
s?lite>column./
s?lite>create>aggregate./
s?lite>create>function./
s?lite>current./
s?lite>error>string./
s?lite>escape>string./
s?lite>e+ec./
s?lite>factory./
s?lite>fetch>all./
s?lite>fetch>array./
s?lite>fetch>column>types./
s?lite>fetch>ob'ect./
s?lite>fetch>single./
s?lite>fetch>string./
s?lite>field>name./
s?lite>has>more./
s?lite>has>pre5./
s?lite>last>error./
s?lite>last>insert>ro3id./
s?lite>libencoding./
s?lite>lib5ersion./
s?lite>ne+t./
s?lite>num>fields./
s?lite>num>ro3s./
s?lite>open./
s?lite>popen./
s?lite>pre5./
s?lite>?uery./
s?lite>re3ind./
s?lite>seeB./
s?lite>single>?uery./
s?lite>udf>decode>binary./
s?lite>udf>encode>binary./
s?lite>unbuffered>?uery./
s?rt./
srand./
sscanf./
ssh*>auth>none./
ssh*>auth>pass3ord./
ssh*>auth>pubBey>file./
ssh*>connect./
ssh*>e+ec./
ssh*>fetch>stream./
ssh*>fingerprint./
ssh*>methods>negotiated./
ssh*>scp>rec5./
ssh*>scp>send./
ssh*>sftp./
ssh*>sftp>lstat./
ssh*>sftp>mBdir./
ssh*>sftp>readlinB./
ssh*>sftp>realpath./
ssh*>sftp>rename./
ssh*>sftp>rmdir./
ssh*>sftp>stat./
ssh*>sftp>symlinB./
ssh*>sftp>unlinB./
ssh*>shell./
ssh*>tunnel./
stat./
stmt(Gbind>param./
stmt(Gbind>result./
stmt(Gdata>seeB./
stmt(Ge+ecute./
stmt(Gfetch./
stmt(Gfree>result./
stmt(Gnum>ro3s./
stmt(Gparam>count./
stmt(Gprepare./
stmt(Greset./
stmt(Gsend>long>data./
str>ireplace./
str>pad./
str>repeat./
str>replace./
str>rot!7./
str>shuffle./
str>split./
str>3ord>count./
strcasecmp./
strchr./
strcmp./
strcoll./
strcspn./
stream>conte+t>create./
stream>conte+t>get>default./
stream>conte+t>get>options./
stream>conte+t>set>option./
stream>conte+t>set>params./
stream>copy>to>stream./
stream>filter>append./
stream>filter>prepend./
stream>filter>register./
stream>filter>remo5e./
stream>get>contents./
stream>get>filters./
stream>get>line./
stream>get>meta>data./
stream>get>transports./
stream>get>3rappers./
stream>register>3rapper./
stream>select./
stream>set>blocBing./
stream>set>timeout./
stream>set>3rite>buffer./
stream>socBet>accept./
stream>socBet>client./
stream>socBet>enable>crypto./
stream>socBet>get>name./
stream>socBet>pair./
stream>socBet>rec5from./
stream>socBet>sendto./
stream>socBet>ser5er./
stream>3rapper>register./
stream>3rapper>restore./
stream>3rapper>unregister./
strftime./
strip>tags./
stripcslashes./
stripos./
stripslashes./
stristr./
strlen./
strnatcasecmp./
strnatcmp./
strncasecmp./
strncmp./
strpbrB./
strpos./
strptime./
strrchr./
strre5./
strripos./
strrpos./
strspn./
strstr./
strtoB./
strtolo3er./
strtotime./
strtoupper./
strtr./
str5al./
substr./
substr>compare./
substr>count./
substr>replace./
s3f>actiongeturl./
s3f>actiongotoframe./
s3f>actiongotolabel./
s3f>actionne+tframe./
s3f>actionplay./
s3f>actionpre5frame./
s3f>actionsettarget./
s3f>actionstop./
s3f>actiontoggle?uality./
s3f>action3aitforframe./
s3f>addbuttonrecord./
s3f>addcolor./
s3f>closefile./
s3f>definebitmap./
s3f>definefont./
s3f>defineline./
s3f>definepoly./
s3f>definerect./
s3f>definete+t./
s3f>endbutton./
s3f>enddoaction./
s3f>endshape./
s3f>endsymbol./
s3f>fontsi6e./
s3f>fontslant./
s3f>fonttracBing./
s3f>getbitmapinfo./
s3f>getfontinfo./
s3f>getframe./
s3f>labelframe./
s3f>looBat./
s3f>modifyob'ect./
s3f>mulcolor./
s3f>ne+tid./
s3f>oncondition./
s3f>openfile./
s3f>ortho./
s3f>ortho*./
s3f>perspecti5e./
s3f>placeob'ect./
s3f>polar5ie3./
s3f>popmatri+./
s3f>posround./
s3f>pushmatri+./
s3f>remo5eob'ect./
s3f>rotate./
s3f>scale./
s3f>setfont./
s3f>setframe./
s3f>shapearc./
s3f>shapecur5eto./
s3f>shapecur5eto7./
s3f>shapefillbitmapclip./
s3f>shapefillbitmaptile./
s3f>shapefilloff./
s3f>shapefillsolid./
s3f>shapelinesolid./
s3f>shapelineto./
s3f>shapemo5eto./
s3f>sho3frame./
s3f>startbutton./
s3f>startdoaction./
s3f>startshape./
s3f>startsymbol./
s3f>te+t3idth./
s3f>translate./
s3f>5ie3port./
s3faction./
s3fbitmap./
,2;1itmap(GgetHeight./
,2;1itmap(Gget2idth./
s3fbutton./
,2;button(GaddAction./
,2;button(Gadd,hape./
,2;button(GsetAction./
,2;button(Gsetdo3n./
,2;button(GsetHit./
,2;button(GsetJ5er./
,2;button(Gset)p./
s3fbutton>Beypress./
s3fdisplayitem./
,2;KisplayItem(GaddColor./
,2;KisplayItem(Gmo5e./
,2;KisplayItem(Gmo5eTo./
,2;KisplayItem(GmultColor./
,2;KisplayItem(Gremo5e./
,2;KisplayItem(GMotate./
,2;KisplayItem(GrotateTo./
,2;KisplayItem(Gscale./
,2;KisplayItem(GscaleTo./
,2;KisplayItem(GsetKepth./
,2;KisplayItem(GsetName./
,2;KisplayItem(GsetMatio./
,2;KisplayItem(GsBe3I./
,2;KisplayItem(GsBe3ITo./
,2;KisplayItem(GsBe3@./
,2;KisplayItem(GsBe3@To./
s3ffill./
,2;;ill(Gmo5eTo./
,2;;ill(GrotateTo./
,2;;ill(GscaleTo./
,2;;ill(GsBe3ITo./
,2;;ill(GsBe3@To./
s3ffont./
s3ffont(Gget3idth./
s3fgradient./
,2;Fradient(GaddEntry./
s3fmorph./
,2;Morph(Ggetshape!./
,2;Morph(Ggetshape*./
s3fmo5ie./
,2;Mo5ie(Gadd./
,2;Mo5ie(Gne+tframe./
,2;Mo5ie(Goutput./
s3fmo5ie(Gremo5e./
,2;Mo5ie(Gsa5e./
,2;Mo5ie(GsetbacBground./
,2;Mo5ie(Gsetdimension./
,2;Mo5ie(Gsetframes./
,2;Mo5ie(Gsetrate./
,2;Mo5ie(Gstreammp7./
s3fshape./
,2;,hape(Gadd;ill./
,2;,hape(Gdra3Cur5e./
,2;,hape(Gdra3Cur5eTo./
,2;,hape(Gdra3:ine./
,2;,hape(Gdra3:ineTo./
,2;,hape(Gmo5ePen./
,2;,hape(Gmo5ePenTo./
,2;,hape(Gset:eft;ill./
,2;,hape(Gset:ine./
,2;,hape(GsetMight;ill./
s3fsprite./
s3fsprite(Gadd./
,2;,prite(Gne+tframe./
,2;,prite(Gremo5e./
,2;,prite(Gsetframes./
s3fte+t./
,2;Te+t(Gadd,tring./
,2;Te+t(Gget2idth./
,2;Te+t(Gmo5eTo./
,2;Te+t(GsetColor./
,2;Te+t(Gset;ont./
,2;Te+t(GsetHeight./
,2;Te+t(Gset,pacing./
s3fte+tfield./
,2;Te+t;ield(Gaddstring./
,2;Te+t;ield(Galign./
,2;Te+t;ield(Gsetbounds./
,2;Te+t;ield(Gsetcolor./
,2;Te+t;ield(Gset;ont./
,2;Te+t;ield(GsetHeight./
,2;Te+t;ield(Gsetindentation./
,2;Te+t;ield(Gset:eftMargin./
,2;Te+t;ield(Gset:ine,pacing./
,2;Te+t;ield(GsetMargins./
,2;Te+t;ield(Gsetname./
,2;Te+t;ield(GsetrightMargin./
sybase>affected>ro3s./
sybase>close./
sybase>connect./
sybase>data>seeB./
sybase>deadlocB>retry>count./
sybase>fetch>array./
sybase>fetch>assoc./
sybase>fetch>field./
sybase>fetch>ob'ect./
sybase>fetch>ro3./
sybase>field>seeB./
sybase>free>result./
sybase>get>last>message./
sybase>min>client>se5erity./
sybase>min>error>se5erity./
sybase>min>message>se5erity./
sybase>min>ser5er>se5erity./
sybase>num>fields./
sybase>num>ro3s./
sybase>pconnect./
sybase>?uery./
sybase>result./
sybase>select>db./
sybase>set>message>handler./
sybase>unbuffered>?uery./
symlinB./
syslog./
system./
T
tan./
tanh./
tcp3rap>checB./
tempnam./
te+tdomain./
tidy-->>construct./
tidy>access>count./
tidy>clean>repair./
tidy>config>count./
tidy>diagnose./
tidy>error>count./
tidy>get>body./
tidy>get>config./
tidy>get>error>buffer./
tidy>get>head./
tidy>get>html./
tidy>get>html>5er./
tidy>get>output./
tidy>get>release./
tidy>get>root./
tidy>get>status./
tidy>getopt./
tidy>is>+html./
tidy>is>+ml./
tidy>load>config./
tidy>node(Gchildren./
tidy>node(Gget>attr./
tidy>node(Gget>nodes./
tidy>node(GhasChildren./
tidy>node(Ghas,iblings./
tidy>node(GisComment./
tidy>node(GisHtml./
tidy>node(Gis[ste./
tidy>node(GisTe+t./
tidy>node(GisIhtml./
tidy>node(GisIml./
tidy>node(Gne+t./
tidy>node(Gpre5./
tidy>parse>file./
tidy>parse>string./
tidy>repair>file./
tidy>repair>string./
tidy>reset>config./
tidy>sa5e>config./
tidy>set>encoding./
tidy>setopt./
tidy>3arning>count./
tidyNode(GisAsp./
tidyNode(GisPhp./
time./
time>nanosleep./
tmpfile./
toBen>get>all./
toBen>name./
touch./
trigger>error./
trim./
)
uasort./
ucfirst./
uc3ords./
udm>add>search>limit./
udm>alloc>agent./
udm>alloc>agent>array./
udm>api>5ersion./
udm>cat>list./
udm>cat>path./
udm>checB>charset./
udm>checB>stored./
udm>clear>search>limits./
udm>close>stored./
udm>crc7*./
udm>errno./
udm>error./
udm>find./
udm>free>agent./
udm>free>ispell>data./
udm>free>res./
udm>get>doc>count./
udm>get>res>field./
udm>get>res>param./
udm>hash7*./
udm>load>ispell>data./
udm>open>stored./
udm>set>agent>param./
uBsort./
umasB./
uni?id./
uni+to'd./
unlinB./
unpacB./
unregister>ticB>function./
unseriali6e./
unset./
urldecode./
urlencode./
user>error./
usleep./
usort./
utfN>decode./
utfN>encode./
C
5ar>dump./
5ar>e+port./
5ariant./
5ariant>abs./
5ariant>add./
5ariant>and./
5ariant>cast./
5ariant>cat./
5ariant>cmp./
5ariant>date>from>timestamp./
5ariant>date>to>timestamp./
5ariant>di5./
5ariant>e?5./
5ariant>fi+./
5ariant>get>type./
5ariant>idi5./
5ariant>imp./
5ariant>int./
5ariant>mod./
5ariant>mul./
5ariant>neg./
5ariant>not./
5ariant>or./
5ariant>po3./
5ariant>round./
5ariant>set./
5ariant>set>type./
5ariant>sub./
5ariant>+or./
5ersion>compare./
5fprintf./
5irtual./
5popmail>add>alias>domain./
5popmail>add>alias>domain>e+./
5popmail>add>domain./
5popmail>add>domain>e+./
5popmail>add>user./
5popmail>alias>add./
5popmail>alias>del./
5popmail>alias>del>domain./
5popmail>alias>get./
5popmail>alias>get>all./
5popmail>auth>user./
5popmail>del>domain./
5popmail>del>domain>e+./
5popmail>del>user./
5popmail>error./
5popmail>pass3d./
5popmail>set>user>?uota./
5printf./
5sprintf./
2
37*api>deftype./
37*api>init>dtype./
37*api>in5oBe>function./
37*api>register>function./
37*api>set>call>method./
3dd+>add>5ars./
3dd+>deseriali6e./
3dd+>pacBet>end./
3dd+>pacBet>start./
3dd+>seriali6e>5alue./
3dd+>seriali6e>5ars./
3ord3rap./
I
+attr>get./
+attr>list./
+attr>remo5e./
+attr>set./
+attr>supported./
+diff>file>diff./
+diff>file>diff>binary./
+diff>file>merge7./
+diff>file>patch./
+diff>file>patch>binary./
+diff>string>diff./
+diff>string>diff>binary./
+diff>string>merge7./
+diff>string>patch./
+diff>string>patch>binary./
+ml>error>string./
+ml>get>current>byte>inde+./
+ml>get>current>column>number./
+ml>get>current>line>number./
+ml>get>error>code./
+ml>parse./
+ml>parse>into>struct./
+ml>parser>create./
+ml>parser>create>ns./
+ml>parser>free./
+ml>parser>get>option./
+ml>parser>set>option./
+ml>set>character>data>handler./
+ml>set>default>handler./
+ml>set>element>handler./
+ml>set>end>namespace>decl>handler./
+ml>set>e+ternal>entity>ref>handler./
+ml>set>notation>decl>handler./
+ml>set>ob'ect./
+ml>set>processing>instruction>handler./
+ml>set>start>namespace>decl>handler./
+ml>set>unparsed>entity>decl>handler./
+mlrpc>decode./
+mlrpc>decode>re?uest./
+mlrpc>encode./
+mlrpc>encode>re?uest./
+mlrpc>get>type./
+mlrpc>is>fault./
+mlrpc>parse>method>descriptions./
+mlrpc>ser5er>add>introspection>data./
+mlrpc>ser5er>call>method./
+mlrpc>ser5er>create./
+mlrpc>ser5er>destroy./
+mlrpc>ser5er>register>introspection>callbacB./
+mlrpc>ser5er>register>method./
+mlrpc>set>type./
+path>e5al./
+path>e5al>e+pression./
+path>ne3>conte+t./
+ptr>e5al./
+ptr>ne3>conte+t./
+sl>+sltprocessor>get>parameter./
+sl>+sltprocessor>has>e+slt>support./
+sl>+sltprocessor>import>stylesheet./
+sl>+sltprocessor>register>php>functions./
+sl>+sltprocessor>remo5e>parameter./
+sl>+sltprocessor>set>parameter./
+sl>+sltprocessor>transform>to>doc./
+sl>+sltprocessor>transform>to>uri./
+sl>+sltprocessor>transform>to>+ml./
+slt>bacBend>info./
+slt>bacBend>name./
+slt>bacBend>5ersion./
+slt>create./
+slt>errno./
+slt>error./
+slt>free./
+slt>getopt./
+slt>process./
+slt>set>base./
+slt>set>encoding./
+slt>set>error>handler./
+slt>set>log./
+slt>set>ob'ect./
+slt>set>sa+>handler./
+slt>set>sa+>handlers./
+slt>set>scheme>handler./
+slt>set>scheme>handlers./
+slt>setopt./
@
ya6>addinfo./
ya6>ccl>conf./
ya6>ccl>parse./
ya6>close./
ya6>connect./
ya6>database./
ya6>element./
ya6>errno./
ya6>error./
ya6>es>result./
ya6>get>option./
ya6>hits./
ya6>itemorder./
ya6>present./
ya6>range./
ya6>record./
ya6>scan./
ya6>scan>result./
ya6>schema./
ya6>search./
ya6>set>option./
ya6>sort./
ya6>synta+./
ya6>3ait./
yp>all./
yp>cat./
yp>err>string./
yp>errno./
yp>first./
yp>get>default>domain./
yp>master./
yp>match./
yp>ne+t./
yp>order./
b
6end>logo>guid./
6end>5ersion./
6ip>close./
6ip>entry>close./
6ip>entry>compressedsi6e./
6ip>entry>compressionmethod./
6ip>entry>filesi6e./
6ip>entry>name./
6ip>entry>open./
6ip>entry>read./
6ip>open./
6ip>read./
6lib>get>coding>type./
Ap%ndice T. Material ?ue falta

También podría gustarte