Вопрос состоит в следующем. Я создал класс. И хочу создать объект класса. Но в конструкторе класса я проверяю наличие трёх стринговых переменных - ключей, которые передаю в конструктор при создании объекта. Если хотя бы одной из переменных нет или она инвалидна - объект класса не создаётся. Создаётся throw exception который пишет в лог что произошла ошибка. И тут возникает самое главное затруднение, т.к. мой класс используется в стороннем коде программистом, то я для показа каких то ошибок использую метод класса get_info_my_error вызвав который программист увидит ошибку, сформированную в виде массива. Но я не могу показать ошибку, которую вызывает создание объекта без необходимых параметров - ведь объект класса не будет создан и соответственно я уже не смогу обратится к методу объекта чтобы показать ошибку. и нужно либо в блоке catch смотреть что выдается ошибка, соотвественно не в том формате что я обычно выдаю своим классом (не ввиде массива). Поэтому стоит вопрос - я сейчас пробую создать потомка класса в нём в блоке констракт создать объект с теми параметрами что переданы потомку и проверить если нормально создался объект потомка класса - то обращаться к методам класса через объект потомка - ведь он же является extends от родителя значит и все методы работают и сообщение об ошибке я смогу запрашивать у объекта потомка если объект класса в потомке в конструкторе не смогу создать. Как то так.... но я не знаю как это правильно реализовать - может вы подскажите - как это корректно сделать - или поделитесь ссылкой или поправите меня. Может это всё делается намного проще или по другому прошу подсказать. Заранее спасибо.
Привожу код класса и то как создаю объект и пытаюсь проверить при создании - но проверка не проходит ((
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- class my_parent_class extends my_class
- {
- public function __construct($host, $kkey, $skey)
- {
- //parent::__construct($host, $kkey, $skey);
- try
- {
- $cnt = new my_class($host,$kkey,$skey);
- }
- catch (ExpayException $e)
- {
- // handle exception
- }
- if ($cnt) {}
- }
- }
- /**
- * Class my_class
- */
- class my_class
- {
- /**
- * @var string
- */
- static $host;
- /**
- * @var
- */
- static $kkey;
- /**
- * @var
- */
- static $skey;
- public function __construct($host, $kkey, $skey) {
- {
- switch($host)
- {
- case 'localhost' :
- self::$host = 'http..';
- break;
- case 'myhost' :
- self::$host ='http..';
- break;
- default:
- self::$host ='Error Host';
- throw new myException('Error: Error Host!',500);
- return null;
- }
- self::$kkey = $kkey;
- self::$skey = $skey;
- }
- else
- {
- throw new myException('Error: One of variables is empty!',401);
- }
- }
- //....
- }
- echo 'Тест Class'.'</br>';
- // создаем объект класса
- $host='localhost';
- $kkey='d7asd876c67f2a53';
- $skey='asdasdasdasdasd';//'';//
- try
- {
- $f = new my_parent_class($host,$kkey,$skey);
- }
- catch (myException $e)
- {
- // handle exception
- $err=$e->getMessage();
- echo $err;
- }
- echo $f->name;
- $post_fields=$f->get_info_my_error();
- // и вот тут не работает проверка на if объекта исходного класса - был ли он создан потомком или нет в констракте
- if ($f->cnt)
- { }
- ?>