Комментарии

Волшебные методы РНР
( 0 Голосов )

В состав языка РНР входит целый ряд так называемых "волшебных" методов, автоматически вызываемых в предопределенных местах программ. Имена всех этих методов начинаются с двойного знака подчеркивания ( ). Характерным тому примером служит метод construct (). Этот метод автоматически вызывается всякий раз, когда с помощью оператора new создается новый объект:

$r = new JRegistry();

Еще одним характерным примером служит метод call (). Если этот метод определен в функции, то он выполняется в любой момент, когда вызывается недоступный метод. Недоступным может оказаться такой метод, который не определен в классе (или его родительских классах), или же такой метод, модификатор доступа которого (например,
private или protected) не допускает его вызов. Метод call () используется, в частности, для создания псевдонимов существующих методов. Например, в классе JDatabase
имеются два метода, называемых quote () и quoteName (). Но для вызова этих методов можно было бы воспользоваться альтернативными именами q () и qn () или nq () соответственно. И такую возможность можно реализовать в классе JDatabase с помощью метода call (), как показано ниже.

public function call($method, $args)
{
if (empty($args) ) { return;
switch ($method)
return $this->quote($args[0], isset($args[1]) ? $args[l] : true); break;
return $this->quoteName($args[0]); break;

Этот метод вызывается всякий раз, когда предпринимается попытка вызвать метод, несуществующий в данном классе. Имя этого метода указывается в качестве первого аргумента ($method) метода call (), а остальные его аргументы указываются в массиве $args.

Сначала в данном методе проверяется наличие аргументов. У обоих методов, quote () и quoteName (), должны быть непременно аргументы, а следовательно, их вызов без аргументов недопустим. И если массив $args оказывается пустым, то происходит немедленный возврат из метода, и ничего другого в нем больше не делается. Затем выполняется оператор switch для выбора вызываемого метода по имени. Так, если указано имя ' q', то вызывается метод quote (), которому передается первый аргумент, а также логическое значение true, если имеется и второй аргумент. А если указано имя 'qn' или "nq', то вызывается метод quoteName (), которому передается первый аргумент.

Таким образом, вместо имени метода quote () можно воспользоваться псевдонимом q (), а вместо имени метода quoteName () — псевдонимом qn () или nq (). Например, метод q () можно определить следующим образом:

public function q($text, $escape = true) {
return $this->quote($text, $escape); }


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости
Добавить комментарий


Защитный код