У меня есть несколько классов, которые используют статические методы . Эти функции подключаются к базе данных, используя $mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME); где константы DB_SERVER, DB_USER, DB_PASS, DB_NAME являются переменными базы данных, определенными в глобально доступном файле. В последнее время мой сайт начал медленно, и после профилирования скрипта я понял, что вызов создания […]
Я хотел бы знать, есть ли способ связать методы на вновь созданном объекте в PHP? Что-то вроде: class Foo { public function xyz() { … return $this; } } $my_foo = new Foo()->xyz(); Кто-нибудь знает, как это достичь?
Я замечаю __construct много с классами. Я немного читал и занимался серфингом в Интернете, но я не мог найти объяснения, которые я мог понять. Я только начинаю с ООП. Мне было интересно, может ли кто-нибудь дать мне общее представление о том, что это такое, а затем простой пример того, как он используется с PHP?
Есть ли какое-либо преимущество в использовании __construct() вместо имени класса для конструктора в PHP? пример: class Foo { function __construct(){ //do stuff } } ИЛИ class Foo { function Foo(){ //do stuff } }
Как я могу вызвать конструктор класса с помощью call_user_func_array Это невозможно сделать: $obj = new $class(); call_user_func_array(array($obj, '__construct'), $args); потому что, если конструктор имеет параметры, новый будет терпеть неудачу. Ограничение: я не контролирую классы, которые я должен создать, и не могу их изменять. Не спрашивайте меня, почему я хочу сделать эту сумасшедшую вещь, это сумасшедший […]
Я смущен, у меня есть класс PHP с конструктором: class Test { public function __construct() { return "some text"; } } Затем я создаю объект: $t = new Test(); Я ожидаю, что содержимое $ t будет «некоторым текстом»: print_r($t); Но это: Test Object ( ) Как получить возвращаемое значение "some text" из конструктора?
Я пытался вызвать Entity Manager в конструкторе: function __construct() { $this->getDoctrine()->getEntityManager(); … но, как я видел в этом ответе: вопрос о Stackoverflow , это невозможно. Поэтому я задаюсь вопросом, есть ли способ достичь этого, поскольку я должен часто его называть, и хочу сделать некоторые вещи в конструкторе после получения репозитория. Редактировать: Я пробовал ответить @MKhalidJunaid: […]
В последнее время мне стало интересно, есть ли разница между инициализацией переменных, которые имеют значение по умолчанию для Constructor VS в определении класса. Какой из них лучше, учитывая оптимизацию: class TestClass { private $test_var = 'Default Value'; function __construct() { } } class TestClass2 { private $test_var; function __construct() { $this->test_var = 'Default Value'; } […]
Я пытаюсь создать новый экземпляр объекта Setting вызывающего __construct() с PHP PDO и ограничить PDO :: FETCH_PROPS_LATE . К несчастью, я получаю это предупреждение (и привязка не работает). Как передать значения столбца методу конструктора? Предупреждение: Отсутствует аргумент 1 для параметра :: __ construct () в pdo.php. Примечание. Неопределенная переменная: ключ в pdo.php. class Setting { […]
Я отказался от всякой надежды на то, что когда-либо смогу перегрузить мои конструкторы в PHP, так что я действительно хотел бы знать, почему . Есть ли причина для этого? Создает ли он по своей сути плохой код? Широко признанный дизайн языка не позволяет ему, или другие языки лучше, чем PHP?