статическую функцию в PHP
у меня есть вопрос относительно статической функции в php.
предположим, что у меня класс
class test {
public function sayHi() {
echo 'hi';
}
}
если я это сделаю test::sayHi();
он работает без проблем.
class test {
public static function sayHi() {
echo 'hi';
}
}
test::sayHi();
работает так же.
каковы различия между первым классом и вторым классом?
что особенного в статической функции?
6 ответов:
в первом классе,
sayHi()
на самом деле является методом экземпляра, который вы вызываете статический метод и вам это сходит с рук, потому чтоsayHi()
не относится к$this
.статические функции связаны с классом, а не с экземпляром класса. Как таковой,
$this
недоступно из статического контекста ($this
не указывает ни на какой объект).
просто статические функции функционируют независимо от класса, к которому они принадлежат.
$это означает, что это объект данного класса. Это не относится к статическим функциям.
class test { public function sayHi($hi = "Hi") { $this->hi = $hi; return $this->hi; } } class test1 { public static function sayHi($hi) { $hi = "Hi"; return $hi; } } // Test $mytest = new test(); print $mytest->sayHi('hello'); // returns 'hello' print test1::sayHi('hello'); // returns 'hello'