Я просматриваю некоторый php-код, и я вижу эту нотацию «::», о которой я понятия не имею, что это значит … также, что & the the the the the the the call of call
$mainframe =& JFactory::getApplication('site'); $sql="SELECT rt.member_id ,rt.commission,rt.sales,kt.store_id,kt.user_id FROM jos_report rt JOIN jos_kingdom_tickets kt WHERE rt.member_id=kt.ticket_id"; $db =& JFactory::getDBO();
заранее спасибо
::
, оператор разрешения области , используется для ссылки на статические члены и константы класса. Он также используется для ссылки на конструктор суперкласса. Вот несколько кодов, иллюстрирующих несколько разных применений оператора разрешения области видимости:
<?php class A { const BAR = 1; public static $foo = 2; private $silly; public function __construct() { $this->silly = self::BAR; } } class B extends A { public function __construct() { parent::__construct(); } public static function getStuff() { return 'this is tiring stuff.'; } } echo A::BAR; echo A::$foo; echo B::getStuff(); ?>
Немного мелочей: оператор разрешения области также называется «паамаим некудотаим», что означает «две точки дважды» на иврите.
&
в контексте вашего примера не делает ничего полезного, если вы используете php 5 или больше и должны быть удалены. В php 4 это было необходимо, чтобы убедиться, что копия возвращаемого объекта не используется. В php 5 копии объектов не создаются, если не вызывается клонирование . И так &
не нужно. Существует еще один случай, когда &
все еще полезно в php 5: когда вы выполняете итерацию по элементам массива и изменяете значения, вы должны использовать оператор &
для воздействия на элементы массива.
::
является оператором области видимости в PHP, c ++, но не в Java. В этом случае он используется для вызова статического метода класса. Статический метод – это метод, который можно вызвать извне класса, даже если у вас нет его экземпляра.
&
указывает, что вместо того, чтобы делать копию того, что возвращает функция, она берет ссылку на возвращаемый объект. В этом случае они, похоже, возвращают одноэлементные объекты, которые используются в приложении, например, для взаимодействия с базой данных (во втором случае)
Вы можете использовать его для ссылки на статические методы из класса без необходимости его создания.
Например:
class myClass { public static function staticFunction(){ //... } public function otherFunction(){ //... } }
Здесь вы можете использовать myClass::staticFunction()
вне класса, но вам нужно будет создать новый объект myClass, прежде чем использовать otherFunction()
таким же образом.
Это оператор области, используемый для ссылки на константы или статические методы под классами. Так:
class C { const D = 2; } echo C::D; // 2
В вашем случае он вызывает метод класса, не связанный с конкретным экземпляром.