Когда вы будете использовать $this
ключевое слово $this
в PHP? Из того, что я понимаю, $this
относится к объекту, созданному без знания имени объекта.
Также ключевое слово $this
может использоваться только в методе?
Примером было бы хорошо показать, когда вы можете использовать $this
.
Класс может содержать свои собственные константы, переменные (называемые «свойствами») и функции (называемые «методы»).
<?php class SimpleClass { // property declaration public $var = 'a default value'; // method declaration public function displayVar() { echo $this->var; } } ?>
Некоторые примеры $ this псевдопеременной:
<?php class A { function foo() { if (isset($this)) { echo '$this is defined ('; echo get_class($this); echo ")\n"; } else { echo "\$this is not defined.\n"; } } } class B { function bar() { // Note: the next line will issue a warning if E_STRICT is enabled. A::foo(); } } $a = new A(); $a->foo(); // Note: the next line will issue a warning if E_STRICT is enabled. A::foo(); $b = new B(); $b->bar(); // Note: the next line will issue a warning if E_STRICT is enabled. B::bar(); ?>
Вышеприведенный пример выводит:
Наиболее распространенный вариант использования – в объектно-ориентированном программировании, определяя или работая внутри класса. Например:
class Horse { var $running = false; function run() { $this->running = true; } }
Как вы можете видеть, в функции run
мы можем использовать переменную $this
чтобы ссылаться на экземпляр класса Horse, в котором мы находимся. Поэтому нужно иметь в виду, что если вы создадите 2 класса лошадей, $this
переменная внутри каждой будет относиться к этому конкретному экземпляру класса Horse, а не к ним обоим.
Вы бы использовали только $ this, если вы делаете объектно-ориентированное программирование на PHP. Значение, если вы создаете классы. Вот пример:
class Item { protected $name, $price, $qty, $total; public function __construct($iName, $iPrice, $iQty) { $this->name = $iName; $this->price = $iPrice; $this->qty = $iQty; $this->calculate(); } }
Он используется в объектно-ориентированном программировании (ООП):
<?php class Example { public function foo() { //code } public function bar() { $this->foo(); } }
Псевдопеременная $ this доступна, когда метод вызывается из контекста объекта. $ это ссылка на вызывающий объект (обычно объект, к которому принадлежит этот метод, но, возможно, другой объект, если метод вызван статически из контекста вторичного объекта).
Используется, когда вы хотите работать с локальными переменными.
Вы также можете прочитать об этом здесь .
function bark() { print "{$this->Name} says Woof!\n"; }
Однажды я знаю, что в конечном итоге использование this
эквивалента на других языках – это реализовать интерфейс «Свободный»; каждый метод класса, который в противном случае возвращал бы void
вместо этого возвращает this
, так что вызовы метода могут быть легко скованы вместе.
public function DoThis(){ //Do stuff here... return $this; } public function DoThat(){ //do other stuff here... return $this; }
Вышеупомянутое можно назвать так:
myObject->DoThis()->DoThat();
Что может быть полезно для некоторых вещей.
$ используется для создания ссылки на текущий экземпляр объекта. Таким образом, вы можете делать такие вещи, как:
class MyClass { private $name; public function setName($name) { $this->name = $name; } //vs public function setName($pName) { $name = $pName; } }
Кроме того, еще одно интересное использование заключается в том, что вы можете использовать методы:
class MyClass2 { private $firstName; private $lastName; public function setFirstName($name) { $this->firstName = $name; return $this; } public function setLastName($name) { $this->lastName = $name; return $this; } public function sayHello() { print "Hello {$this->firstName} {$this->lastName}"; } } //And now you can do: $newInstance = new MyClass2; $newInstance->setFirstName("John")->setLastName("Doe")->sayHello();
$ this используется, когда вы создали новый экземпляр объекта.
Например, представьте себе следующее:
class Test { private $_hello = "hello"; public function getHello () { echo $this->_hello; // note that I removed the $ from _hello ! } public function setHello ($hello) { $this->_hello = $hello; } }
Чтобы получить доступ к методу getHello, я должен создать новый экземпляр класса Test, например:
$obj = new Test (); // Then, I can access to the getHello method : echo $obj->getHello (); // will output "hello" $obj->setHello("lala"); echo $obj->getHello (); // will output "lala"
На самом деле, $ this используется внутри класса, когда это невозможно. Это называется областью .
Внутри вашего класса вы используете $ this (для доступа к * $ _ hello *, например), но вне класса, $ this НЕ относится к элементам внутри вашего класса (например, * $ _ hello *), это делает $ obj .
Теперь основное отличие между $ obj и $ заключается в том, что $ obj доступа к вашему классу извне , некоторые ограничения происходят: если вы определяете что-то личное или защищенное в своем классе, например моя переменная * $ _ hello *, $ obj CAN NOT доступ к нему (это частный!), но $ это может , из-за этого оставить этот класс внутри класса.
нет, я думаю, идея ур неправильная .. $this
используется, когда относится к объекту того же класса .. как это
думаю, что у нас есть переменное значение $ var и в THAT экземпляре этого объекта должно быть установлено значение 5
$ This-> вар = 5;
Использование $ this относится к методам ссылки или переменным экземпляра, принадлежащим текущему объекту
$ this-> name = $ name или $ this-> callSomeMethod ()
который будет использовать переменную или метод, реализованные в текущем объекте подклассом или нет.
Если вы хотите специально вызвать реализацию родительского класса, вы бы сделали что-то вроде
Родитель :: callSomeMethod ()
<?php class identity { public $name; public $age; public function display() { return $this->name . 'is'. $this->age . 'years old'; } } ?>