¿Cuáles son los usos de las clases en php? ¿Cuál es la diferencia entre función personalizada y función personalizada?
¿El primero? ¿Capítulo 18? Clases y objetos (PHP? 4)
Directorio
Tipos
Herencia
Constructor
Tasa de resolución de distancia operador (::)
Padre
¿Serializar objeto? -?Objetos en conversación
¿Función mágica? _ _¿Dormir? Entonces qué. _ _Despierta
Referencias en constructores
Comparación de objetos
Tipos
Las clases son variables y se reúnen funciones que actúan sobre ellas. Las clases se definen utilizando la siguiente sintaxis: ?
¿Es? Lenguaje de programación del lado del servidor (abreviatura de Preprocesador de Hipertexto Profesional)
¿Clase? ¿Carro? {
var? $ artículos//?Artículos en el carrito de compras
//?Will. $numero? ¿respuesta? $artnr? Añadir artículo al carrito
¿Función? add_item($artnr,$num)? {
$ este-gt;proyecto[$artnr]? =?$ num
}
//?Will. $numero? ¿respuesta? $artnr? Eliminar artículos del carrito de compras
¿Función? remove_item($artnr,$num)? {
¿Y si? ($this- gt; artículos[$artnr]? gt? $num)? {
$ este-gt;proyecto[$artnr]? -=?$ num
¿Regresión? Real;
}?Elsef? ($this-gt;item[$artnr]?==?$num)? {
Desarmar($this-gt;items[$artnr]);
¿Volver? ¿Real;
}? {
¿Volver? Falso;
}
}
}
¿gt?
El ejemplo anterior define un? ¿Carro? Clase que consta de una serie de artículos en el carrito de compras y dos funciones para agregar y quitar artículos del carrito de compras. ?
Advertencia
No puedes dividir una definición de clase en varios archivos. ¿No se puede dividir una definición de clase en más de una? PHP? bloque, a menos que la partición esté en una declaración de método. El siguiente uso no es válido:?
¿Es? Lenguaje de programación del lado del servidor (abreviatura de Preprocesador de Hipertexto Profesional)
¿Clase? ¿prueba? {
gt
lt? Lenguaje de programación del lado del servidor (abreviatura de Preprocesador de hipertexto profesional)
¿Función? prueba()? {
¿Imprimir? OK ';
}
}
¿gt?
Pero todavía es posible el siguiente uso:?
¿Es? Lenguaje de programación del lado del servidor (abreviatura de Preprocesador de Hipertexto Profesional)
¿Clase? ¿prueba? {
¿Función? prueba()? {
gt
lt? Lenguaje de programación del lado del servidor (abreviatura de Preprocesador de hipertexto profesional)
¿Imprimir? OK ';
}
}
¿gt?
La siguiente advertencia es sólo para? PHP? 4.
?
Cuidado
¿Nombre? clase estándar? ¿Siempre? ¿Zend? Usar y guardar. ¿No puedes estar allí? PHP? ¿Código definido en el nombre? clase estándar? clase. ?
Cuidado
¿Nombre de función? _ _¿Dormir? Entonces qué. _ _¿Despertar? ¿Estás en línea? PHP? Una clase es una función mágica. No puedes nombrar una función con este nombre en ninguna clase a menos que quieras asociarla con una función mágica. ?
Cuidado
¿PHP? se construirá. ¿Los nombres de funciones que comienzan con __? están reservados como funciones mágicas. A menos que desee utilizar algunas de las funciones mágicas que se encuentran en la documentación, se recomienda no utilizar ? PHP? Utilice funciones con nombre. __?¿comenzar?
¿Estás en línea? PHP? 4?En,var? El valor de una variable sólo se puede inicializar a una constante. Inicializar una variable con un valor no constante requiere una función de inicialización, que se llama automáticamente cuando se crea el objeto. Estas funciones se denominan constructores (ver más abajo). ?
¿Es? Lenguaje de programación del lado del servidor (abreviatura de Preprocesador de hipertexto profesional)
/*?PHP? 4? ¿No se puede utilizar así? */
¿Clase? ¿Carro? {
var? $fecha_de_hoy? =?Fecha(" A-m-d ");
var? $nombre? =?$ nombre
var? $propietario? =?Fred,"?.?Jones;
/*?Pero, ¿está bien una matriz que contenga constantes?*/
var?$items?=?array(" VCR ", "TV");
}
/*?¿Se debe hacer esto?*/
¿Clase? ¿Carrito?{
var ?$todays_date
var?$owner;
$items?=?array , "TV");
Función? >$ this- gt; =? fecha (" Y-m-d ");
$ this-gt;=?$ GLOBALS[' nombre ']; p>
}
gt?
Las clases también son planos de variables reales. El tipo correspondiente debe crearse con el servidor ? Lenguaje de programación lateral (abreviatura de Preprocesador de hipertexto profesional)
$cart
$ cart- gt;add_item("10",1);
$ another_cart? =?new? cart;
$ another_cart-gt;add_item ("0815", 3);
El código anterior crea dos objetos de la clase Cart? ?$cart?método add_item() cuando ?10?se agrega el número de artículo al carrito?
¿Qué pasa con $cart?add_item(), remove_item().
¿En un sistema de archivos puedes tener dos diferentes? Archivo Léame. ¿TXT? archivos siempre que no estén en el mismo directorio. Del mismo modo que necesita ingresar la ruta completa de cada archivo para el directorio raíz, debe especificar el nombre completo de la función que desea llamar: ¿en? PHP? En terminología, el directorio raíz será el espacio de nombres global y la notación de la ruta será ? -gt;. Entonces, ¿qué pasa con el nombre? $ carrito-gt;artículos? Entonces qué. $another_cart-gt;artículo? Se nombran dos variables diferentes. Tenga en cuenta que el nombre de la variable es ? $carrito-gt;artículo,¿no? $carrito->$TERM, ¿por eso? PHP? Los nombres de las variables tienen solo un signo de dólar. ?
¿Es? Lenguaje de programación del lado del servidor (abreviatura de Preprocesador de hipertexto profesional)
//?Correcto. ¿Sólo uno? $
$ cart-gt;¿Artículo? =?Array(" 10 "?= gt?1);
//?Incorrecto porque? $carrito->$artículos? ¿Convertirse? $ carrito-gt;""
$ carrito-gt;$artículos? =?Array(" 10 "?= gt? 1);
//?Correcto, pero puede que no sea el resultado deseado:
//?$ cart- gt;$ mivar? ¿Convertirse? $ cart-gt;item
$myvar? =?proyecto';
$cart-gt;$myvar? =?Array(" 10 "?= gt?1);
gt?
Al definir una clase, es imposible saber con qué nombre se accederá al objeto: ¿por escrito? ¿Carro? Clase, ¿no sé cómo se llamará el objeto? $carro? ¿aún? Otro carrito de compras. ¿Entonces no se puede usar en clase? $cart-gt;project. Pero para el acceso interno de una definición de clase a sus propias funciones y variables, ¿se pueden utilizar pseudovariables? $esto? Para lograr este objetivo. $esto? Las variables pueden entenderse como "propias" o "el objeto actual". ¿Así que lo que? $this-gt;artículo[$artnr]? =?$núm? Se puede leer como "¿Mi propia matriz de elementos? $artnr? ¿contador más? $num en la matriz de elementos del objeto actual" o "?$artnr? ¿Contador más? $núm.?
Nota:? ¿Pseudovariables? $esto? Si el método en el que se encuentra se llama estáticamente, normalmente no está definido. Pero esta no es una regla estricta: si un método se llama estáticamente desde otro objeto, ¿entonces? $esto? quedará definido. ¿En este momento? $esto? El valor de es el objeto sobre el que se realiza la llamada. Utilice el siguiente ejemplo para demostrar:?
¿Es? Lenguaje de programación del lado del servidor (abreviatura de Preprocesador de Hipertexto Profesional)
¿Clase? ¿Una
{
Función? foo()
{
¿Si? (isset($esto))? {
¿Eco? $esto? ¿Sí? ¿definición? (';
Echo? get_class($this);
Echo?")\n";
}? {
¿Eco? "¿\$ esto? ¿Lo es? ¿No es así? Definido.
\n ";
}
}
}
¿Clase? B
{
Función?bar()
{
a::foo();
}
}
$a?=?new?a();
$a- gt;foo();
a::foo();
$b?=?new?b();
$ b- gt;bar();
b::bar();
gt
El ejemplo anterior generará:
¿Lo es? (1) ¿Lo es?
¿Lo es? p>
Sí. Algunas buenas funciones para tratar con clases y objetos. ¿A qué debes prestar atención?