2010-08-16 2 views

ответ

7

Они не являются статическими по умолчанию:

public function method() { 

} 

Вы получите E_STRICT, если вы звоните статически, но я не думаю, что вы можете легко применять, что его можно назвать только на экземпляре - если вы попытаетесь проверить $this Я думаю, вы получите сообщение об ошибке. Вы можете сделать isset($this), так как Artefacto говорит и генерирует исключение, если оно не установлено.

+6

Вы можете создать исключение, если 'isset ($ this)' is 'false'. – Artefacto

+0

Это все еще можно назвать статической функцией. –

+1

@Artefacto Вы видели какой-либо код, делающий это явно во всех нестатических методах? Это выглядит громоздким. Надеюсь, вы получите какую-то ошибку внутри метода, если $ this не задано. –

1
<?php 
class abc() { 

public function foo() { 
    ... 
} 
} 

$c = new abc(); 
$c->foo(); 
?> 
+0

foo() все равно будет доступен через abc :: foo(). –

+0

да, это правда. Я не знаю другого способа сделать это. Функция является общедоступной и объектно-ориентированной (это метод) – Aziz

0
<?php 
class abc() { 

public function foo() { 
    if (!isset($this)) { 
     throw new Exception('Method is non-static.'); 
     exit(); 
    } 
} 
} 

$c = new abc(); 
$c->foo(); 
?> 

Не тестировалось.

Смежные вопросы