Я хотел бы знать, является ли приемлемым/предпочтительным использование self:: method() и parent:: method() при работе в php-классах.
Вы можете использовать $this- > method(), но $this- > также может ссылаться на переменную класса, родительскую переменную класса или метод из родительского класса. В себе нет двусмысленности:
Является ли self:: обесцененным и/или существуют ли какие-либо оговорки или недостатки в использовании этого стиля?
Я понимаю, что self:: и parent:: ссылаются на статический экземпляр класса, но в kohana, если вы специально не определяете метод как статический, нет никакой разницы.
Спасибо.
Добавлен пример: Предполагая, что это приложение хранит форумы с нескольких веб-сайтов...
class Forum_Controller extends Controller {
function __construct()
{
parent::__construct();
}
function index()
{
echo self::categories();
}
/*
* get a list of categories from a specific site.
*/
private function categories()
{
$db = new Database;
$categories = $db->query("
SELECT * FROM
forum_categories
WHERE fk_site = '$this->site_id'
");
$view = new View('categories_view');
$view->categories = $categories;
return $view;
}
}
Эти примеры работают в kohana с сообщением об ошибках, установленным в: error_reporting (E_ALL и ~ E_STRICT);
$this- > site_id определяется в основном классе Controller_Core (библиотека в кохане).
Насколько я знаю, $это не должно быть доступно, поскольку я вызываю self:: categories() статическим образом, но только тогда, когда я определяю категории() как статические, это вызывает ошибку.
Но, как я уже сказал, я предпочитаю использовать self:: потому что с точки зрения удобочитаемости я точно знаю, где эта функция должна быть, а не использовать $this, которая вызывает неоднозначность, для меня.