estoy acostumbrado a trabajar en lenguajes como C#
/Java
/Python
donde cada clase tendría su propio archivo, y para una clasepara ver otras clases, lo haría importación el paquete que contiene esas clases. ¿Cómo funciona esto en php
? La documentación muestra cómo crear clases, pero no entiendo cómo encaja todo en un contexto php
. Sé de la declaración de inclusión, que simplemente une básicamente los archivos.php oop - cada archivo de clase diferente? importar paquete? etc
Respuesta
Puede utilizar __autoload
function __autoload($class_name) {
include 'classes/'.$class_name . '.php';
}
Por tanto, coloca cada clase única en su propio archivo en la carpeta de clases. Cuando quiera usar esa clase, la incluirá. Más información: http://php.net/manual/en/language.oop5.autoload.php
Actualización: Cuando respondí esto, era completamente válido. Ahora que todavía funciona, pero hay que tener en cuenta PHP.net ya dice entonces esto:
spl_autoload_register() proporciona una alternativa más flexible para clases de carga automática. Por esta razón, el uso de __autoload() es desaconsejado y puede ser obsoleto o eliminado en el futuro.
1 por incluir el enlace de referencia –
También tomar una mira: http://www.php.net/manual/en/function.spl-autoload-register.php – Mchl
Imagínese que usted ha estado haciendo su objeto en PHP en un archivo llamado myObject.php
<?php
class myObject
{
public function __construct()
{
echo "Hello, World";
}
}
?>
Y en otro archivo, que le gustaría utilizar el objeto (Llamemos a este myfile.php). Usted tendría que incluir su objeto - como esto:
<?php
include("myObject.php");
$intance = new myObject();
?>
bastante simple.
En PHP puede hacerlo de varias formas, el compilador no lo limita.
Usted puede tener 1 clase 1 en el archivo, 5 clases en 1 archivo, 1 clase en varios archivos usando incluye ...
pero por lo general sigue siendo la clase 1 de 1 archivos, y si tiene muchos diminutos pequeños - También puedes tenerlos en 1 carpeta.
Al hacer 1 clase en 1 archivo con el mismo nombre, puede configurar la carga automática de la clase para que no tenga que escribir sus inclusiones.
NO puede tener una clase dividida en varios archivos. Vea aquí por ejemplo: http://stackoverflow.com/questions/1957732/can-i-include-code-into-a-php-class/1957830#1957830 – yokmp
La forma más sencilla:
- definir sus clases en "clases" de directorio de aplicaciones
- init como se muestra a continuación
- nombres de archivo Nombre de clase como su nombre de la clase minúscula con .php sufijo (= MiClase > clases/myclass.php) código
Init:
set_include_path ("./classes");
spl_autoload_register();
//class is automatically loaded from ./classes/myclass.php
$object_instance = new MyClass();
A partir de PHP 5.3.0, se recomienda que utilice la función spl_autoload_register() porque se dice que __autoload() está en desuso en algún momento en el futuro.
Una manera fácil de utilizar esta función:
1) Coloque cada archivo de clase en la carpeta 'clases'
2) Ejecutar una función anónima dentro spl_autoload_register() que especifica la carpeta de clase:
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.php';
});
Ahora cuando intenta utilizar una clase que no está definido en el código, sin embargo, se comprobará que la carpeta de clase por última vez antes de darle un error.
Esto es genial, pero esto se usa mejor cuando quieres tu propio autocargador con su propio nombre como se describe en el Ejemplo # 1 aquí: http://php.net/manual/en/function.spl-autoload-register.php En este caso __autoload es suficiente. –
- 1. Python OOP - Relaciones de clase
- 2. Nombre de clase de conflictos importar nuevo paquete (Java)
- 3. Importar paquete. * Vs paquete de importación.Tipoespecífico
- 4. Cómo importar una clase de paquete por defecto
- 5. PHP OOP Programación MySQL
- 6. Importar una clase personalizada en Java
- 7. PHP [OOP] - ¿Cómo llamar al constructor de clase manualmente?
- 8. OOP: buen diseño de clase
- 9. Cómo importar el paquete java.nio.file
- 10. PHP OOP muchos setters, getters
- 11. Método cadenas PHP OOP
- 12. PHP OOP: objetos encadenables?
- 13. ¿Cómo importar un paquete de Eclipse?
- 14. PHP: OOP del mundo real ejemplo
- 15. Cargar imagen de Java dentro del paquete de una clase en un paquete diferente
- 16. ¿Debo importar UIKit en cada archivo que código?
- 17. ¿Vale la pena usar OOP en PHP?
- 18. ¿Cómo se compara Python OOP con PHP OOP?
- 19. Crear una clase de propiedades extensibles (OOP)
- 20. PHP OOP - ¿Cómo se maneja la autorización?
- 21. Heredando un método protegido por paquete por una clase en un paquete diferente
- 22. phpMyAdmin Importar archivo error
- 23. Esto es OOP o como OOP
- 24. Exportar cada hoja a un archivo csv diferente
- 25. Eclipse Package Explorer tiene diferentes iconos para cada tipo de archivo: interfaces, clases abstractas, etc.
- 26. ¿Utiliza un archivo setParameters.xml diferente?
- 27. Python: importar el paquete que contiene
- 28. javascript oop, instanceof y clase base
- 29. Cómo evitar la redefinición de VERSIÓN, PAQUETE, etc.
- 30. PHP cURL no ve el archivo/etc/hosts
posible duplicado de [¿Importar paquete o cargar automáticamente para PHP?] (Http://stackoverflow.com/questions/616231/package-importar-or-autoloading-for-php) – Gordon
* (tipp) * buscar autocarga y convenciones de código en PHP – Gordon
Personalmente, me parece muy sensato tener cada clase en su propio archivo ... pero use un autocargador en lugar de la importación de Java –