Articles of oop

Как сделать глобально доступный объект

Привет, у меня есть небольшая коллекция классов, некоторые из которых должны быть доступны по всему миру. Я нашел что-то подобное в Zend_Registry, но, читая его код, я не могу понять, как вызов статической функции может вернуть инициализированный экземпляр класса … мне нужно сделать что-то вроде: <?php //index.php $obj = new myUsefulObject(); $obj->loadCfg("myFile.xml"); $req = new […]

Изменения в объекте __destruct () не сохранены PHP

Возможный дубликат: Передать ссылку на $ this в конструкторе PHP Я работаю над простой PHP-инфраструктурой в качестве учебного проекта. У меня есть объект запроса с методом _execute() . В этом методе я (между прочим) создаю объект, называемый pageController, вызываю метод на нем и удаляю объект, используя следующий код: $controller = new $this->_controllerName($this); call_user_func(array($controller, $this->_methodName)); unset($controller); […]

Расширить 2 класса PHP

У меня 3 класса (3 файла): a.class.php b.class.php c.class.php Я хочу расширить классы a и b в классе c (файл 3): Как я мог это сделать? Я хочу использовать обе функции класса a + b в моем новом классе C

Как проверить поле формы в PHP с помощью объектно-ориентированной техники

Я создал класс «validate» для проверки двух полей, т.е. «firstname» и «lastname». Он не работает нормально, он показывает ошибку, когда поле пуст, но когда я отправляю форму с непустыми полями, ошибка все еще существует. Как это выполнить при отправке формы? <?php class validation { public $firstName, $lastName, $errorFirstName = '', $errorLastName = ''; function __constructor($fName, […]

Как использовать одно соединение MySql с несколькими объектами PHP.

На этом я много разбираюсь, но чем больше я читаю, тем больше меня путают (извините!). Мой приоритет – держать его простым и эффективным. Создайте одно соединение MySql и поделитесь им несколькими объектами PHP. // open a db connection $dbc = new PDO(…….); // allow multiple objects to use the same connection $object_1 = new class_1($dbc); […]

Расширение пользовательского класса валидации

Недавно я экспериментировал с Laravel 4 и стараюсь, чтобы пользовательский класс проверки работал. Проверка-класс <?php class CountdownEventValidator extends Validator { public function validateNotFalse($attribute, $value, $parameters) { return $value != false; } public function validateTimezone($attribute, $value, $parameters) { return !empty(Timezones::$timezones[$value]); } } Мои правила настроены следующим образом: protected $rules = [ 'title' => 'required', 'timezone' => […]

Неустранимая ошибка при расширении включенного класса

Я пробую здесь очень просто, но, похоже, это не работает. Взгляните на этот код: include 'custom/mainclass.php'; $child = new childClass(); class childClass extends mainClass { } По-видимому, childClass () не может быть найден (согласно php). Я на 100% уверен, что делаю что-то очень глупое, чтобы заказать мой код. Я уже искал в Интернете, но из […]

Переопределить классы классов Yii 1.1.14 без их замены

У меня есть специальная логика, которую мне нужно вставить в классы CDbCommand, CDbTransaction и CActiveRecord, которые поставляются с фреймворком Yii. Я не могу их заменить, потому что я использую те же файлы фреймворка для других проектов. Большинство моих моделей уже созданы и расширены из CActiveRecord. Я знаю, что могу легко переключить их на собственный собственный […]

Обработчик ошибок libxml с OOP

Мне нужно ловить ошибки libxml. Но я хочу использовать свой класс для этого. Я знаю о libxml_get_errors и других функциях. Но мне нужно что-то вроде libxml_set_erroc_class("myclass") и во всех случаях ошибка вызовет мой класс. Я не хочу в каждом случае после использования $dom->load(…) создавать некоторую конструкцию, например foreach(libxml_get_errors as $error) {….} . Вы можете мне […]

Как включить php-класс, который расширяет интерфейс

Я разрабатываю прослушиватель сокетов, который должен обрабатывать данные с помощью класса CommandService. CommandService.php <?php namespace Application\Service; use Zend\ServiceManager\ServiceLocatorAwareInterface; use Zend\ServiceManager\ServiceLocatorAwareTrait; class CommandService implements ServiceLocatorAwareInterface { use ServiceLocatorAwareTrait; } custom.php <?php include('../module/Application/src/Application/Service/CommandService.php'); ?> И когда я бегу на консоли php custom.php Я получаю сообщение об ошибке: Неустранимая ошибка: интерфейс «Zend \ ServiceManager \ ServiceLocatorAwareInterface» не найден […]