2009-06-09 7 views

Respuesta

8

Su include_once lee en un archivo fuente, que en este caso presumiblemente tiene una definición de clase para B en él. Su extends configura la clase A como inheriting clase B, es decir, A obtiene todo en B y luego puede definir sus propias modificaciones a esa estructura básica. No existe realmente ninguna relación entre las dos operaciones, y sus operaciones $a = new B son absurdas (sin mencionar los errores de sintaxis).

6

En caso de que usted está buscando una respuesta de nivel superior ...

Usando extiende une la A a hacer las cosas de manera similar a B, mientras que la creación de una instancia de B dentro A no impone ninguna restricción en A.

El segundo enfoque se llama Composición y generalmente es el enfoque preferido para crear sistemas de OO, ya que no produce jerarquías de Clase altas y es más flexible a largo plazo. Sin embargo, produce un código ligeramente más lento, y más que el uso simple de extiende.

mis 2 centavos

+0

lo que es más lenta extender o incluyendo Acabo de hacer una pequeña referencia, y me encontré con que la ampliación hace que el código ligeramente más lento es esto lo que quería decir..?.? – daniel

+1

Digamos que quiero invocar foo en A y delega foo en B, luego habrá tiempo para dos llamadas a método en el enfoque de composición. Si A se extiende B, entonces la invocación de foo en A se considera 1 llamada a un método y no hay necesidad de una búsqueda, excepto cuando las clases están definidas (lo que ocurre una vez). –

1

En primer lugar, incluir un comando que es leer un archivo fuente PHP y lo trata como estaba escrito en lugar de la directiva include. Puede usarlo en cualquier archivo fuente php y no está relacionado con la herencia de clase.

Por cierto, si no incluye el archivo que contiene el código fuente de clase A, no puede extender esa clase.

Extender una clase con la palabra clave extiende implica el concepto de herencia que es un concepto clave en la programación orientada a objetos.

Obtiene una clase (A) con algunos métodos y necesita una clase similar (B) con un comportamiento ligeramente diferente, puede derivar la nueva clase ampliando la clase A y modificando solo los métodos que tienen que cambiar (es llamado anulando) o agregando nuevos.

En opuesta a la herencia existe la composición. Con la composición no se extiende una clase para cambiar su comportamiento sino que se debe hacer un mosaico de clases para obtener el comportamiento deseado.

en la Wikipedia se puede encontrar una mejor explicación de object composition y [la herencia de clases] (http://en.wikipedia.org/wiki/Inheritance_(computer_science))

Parece que hay un poco de confusione en estos conceptos, mientras extiende la clase A y, al mismo tiempo, intente componerlo (por cierto, la sintaxis correcta es $ a = new B();).

Una referencia útil que, obviamente, [Gof, patrones de diseño] (http://en.wikipedia.org/wiki/Design_Patterns_(book))

2

En segundo lugar, es decir, que se extiende, - es operación de clase En primer lugar, es decir, incluyen -. Es operación de archivo, (antes de compilación)

.

Por lo tanto - en segundo lugar, no es posible jamás sin antes

Cuestiones relacionadas