В PHP может быть доступен статический член или функция, если имя класса является допустимым объектом или строкой. Это в основном верно. Когда строка имени класса является свойством объекта, его нельзя использовать напрямую. Он должен быть скопирован в простую переменную, прежде чем ее можно будет использовать для доступа к статическому члену. Вот пример: class Foo { […]
Как использовать $this->var1 внутри метода, который вызывается из статического метода? У меня есть этот метод: static public function getModuleConfigInputfields(array $data) { $fields = new InputfieldWrapper(); $modules = Wire::getFuel('modules'); $field = $modules->get("InputfieldText"); $field->attr('name+id', 'apiKey'); $field->attr('value', $data['apiKey']); $field->label = "API Key (Developer Key)"; $field->description = 'Enter the API key'; $fields->append($field); $field = $modules->get("InputfieldSelect"); $field->attr('name+id', 'list_id'); $mailing_lists = […]
Я наткнулся на что-то вроде этого, и я не уверен, что это сделать. Есть ли веские основания для этого или избежать этого? class Foo { static public function bar() {} } someMethod() { $instanceOfFoo->bar(); }
Я заметил, что ключевое слово static в PHP не совсем static . Допустим, Elmo – мой синглтон: class Elmo { private static $instance; private function __construct() { echo 'Elmo says constructor\n'; } public static function getInstance() { if (!isset(self::$instance)) self::$instance = new Elmo(); return self::$instance; } public function boo() { echo 'Elmo says boo!\n'; } […]
Я натолкнулся на очень странное поведение на PHP5.4 (также присутствует в 5.5). В принципе, я вызываю нестатический метод статически, и я не получаю ошибку E_STRICT, где я определенно должен ее получить. <?php error_reporting(E_ALL); class A { public function iAmNotStatic() {} } Теперь, если я это сделаю: A::iAmNotStatic(); Затем я получаю ошибку, как ожидалось. Strict standards: […]
Если у меня есть базовый класс, содержащий статический var, тогда я устанавливаю этот статический var, а затем должен иметь класс, который расширяет базовый класс, будет ли расширенный класс сохранять значение статического var, которое я уже установил в базовом классе ?
Например: <?php function get_current_user_id(){ static $id; if(!$id){ $id = 5; echo "Id set."; } return $id; } $id = get_current_user_id(); $id2 = get_current_user_id(); $id3 = get_current_user_id(); echo "IDs: ".$id." ".$id2." ".$id3; ?> // Выход: Id set.IDs: 5 5 5 http://codepad.org/jg2FR5ky Таким образом, предположительно повторяющиеся вызовы для получения идентификатора пользователя просто выполняют простой возврат идентификатора, все […]
Почему мы должны использовать статические переменные или статические вызовы для статических методов в PHP5? Может быть, улучшить производительность?
Я как раз собираюсь написать метод преобразования некоторых биллинговых данных в счет-фактуру. Так что скажите, что у меня есть и массив объектов, содержащих данные, необходимые для создания элементов invocie. В контроллере биллинга Какой из следующих способов правильный $invoice = new Invoice(); $invoice->createInvoiceFromBilling($billingItems); Затем в классе счетов Public Function createInvoiceFromBilling($billingItems) { $this->data = $billingItems; ИЛИ Invoice::createInvoiceFromBilling($billingItems) […]
У меня есть приватная переменная в моем классе private $noms = array( "HANNY", "SYS", "NALINE" ); Я хочу получить доступ к нему из статического метода: public static function howManyNom($searchValue){ $ar = $this->noms; foreach($ar as $key => $value) { … Но, как обычно, я не могу получить его с помощью $ this, потому что нет никакого […]