2011-08-24 19 views
12

Pregunta tonta que sé,

De todos los tutoriales no explican por qué usan $ this.

¿Es $ esto como un objeto de una clase base en Codeigniter?

¡Cualquier explicación sería bienvenida! :)

Gracias

+3

http://www.php.net/manual/en/language.oop5.basic.php para una introducción sobre '$ this' en sí. – mario

Respuesta

1

acabo de leer un gran post sobre esto y $ clases en general: http://query7.com/using-this-in-php

En PHP, la palabra clave “$ this” se utiliza como una referencia propia de una clase y puede usarlo para llamar y usar estas propiedades y métodos como que se muestran en el siguiente ejemplo.

7

$this en PHP es el objeto actual. En una definición de clase, usa $this para trabajar con el objeto actual. Tomar esta clase como un ejemplo:

class Hello { 
    public $data = 'hello'; 
    function hi() { 
    $this->data = 'hi'; 
    } 
} 

Usted puede crear una instancia de esta clase varias veces, pero $data solamente se cambiará a hi en esos objetos en los que ha llamado a la función:

$one = new Hello; 
$two = new Hello; 
$two->hi(); 

echo $one->data, "\n", $two->data; 
+2

Claro que este es un buen tutorial sobre el significado genérico de '$ this', pero no aborda específicamente codeigniter, que es de lo que se trata la pregunta. – jondavidjohn

6

$this no es algo de CodeIgniter, pero de PHP. $this se refiere al objeto actual.

Siempre que se crea una instancia de esta manera:

$something = new SomeClass(); 

Entonces $this se refiere a la instancia que se crea a partir de SomeClass, en este caso $something. Siempre que esté en la clase, puede usar $this para referirse a esta instancia. Así :

class SomeClass { 

    public $stuff = 'Some stuff'; 

    public function doStuff() 
    { 
    $this->stuff; 
    } 

} 
+0

Gracias, básicamente es similar a C++ en el sentido de que this.stuff() – sqlmole

+0

No tengo experiencia con C++, pero sí, probablemente implemente 'this' de la misma manera. – Luwe

4

En términos de CodeIgniter:
Se dará cuenta de que cada controlador en CodeIgniter extiende la clase base del controlador. El uso de $this en un controlador le da acceso a todo lo que está definido en su controlador, así como a lo que se hereda del controlador base.

La mayor parte del uso que vamos a salir de $this implica llamar a métodos que la clase base se ha cargado para usted - $this->load, $this->uri, etc.

Si no recuerdo mal, el código PHP en una vista se ejecuta en el contexto del controlador, por lo que tendrá acceso al objeto controlador con $this desde allí también.

+0

¿Qué pasa si no escribimos '$ this' ¿Funcionará en PHP? Como su trabajo en C++? podemos escribir cualquier miembro de datos con 'this' o sin' this' también en C++ ¿podemos hacerlo en PHP ???? –

+0

@BilalMaqsood - no, PHP no es compatible con esa sintaxis. –

17

Para realmente respuesta su pregunta, $this en realidad representa la instancia singleton Codeigniter (que en realidad es el objeto controlador).

Por ejemplo, al cargar bibliotecas/modelos, los adjunta a esta instancia para que pueda hacer referencia a ellos como una propiedad de esta instancia.

Otra forma de obtener esta instancia en codeigniter es la función get_instance() que utiliza al compilar bibliotecas portátiles.

0

Es la forma de referenciar una instancia de una clase desde su interior, al igual que muchos otros lenguajes orientados a objetos. Desde los documentos PHP: la pseudovariable $ this está disponible cuando se llama un método desde un contexto de objeto. ... $ esto se usa principalmente para referirse a las propiedades de una clase

+0

Esto no agrega nada a las muchas respuestas que recibió esta pregunta hace 6 años ... –

Cuestiones relacionadas