» WAP Мастер Форум https://forum.wapinet.ru/index.php » PHP https://forum.wapinet.ru/viewforum.php?id=3 » Внутреннее кэширование объекта класса https://forum.wapinet.ru/viewtopic.php?id=2255 |
TLENS » 2014.01.14 03:35 | ||||||||
Что то скучно на фаруме. Предлагаю вывести на обсуждение давно волнующую меня тему. Код:
Вроде архитектура данного обьекта и хорошая но есть один минус при оперировании с данными объекта, IDE не понимает что возвращает A::newObject($id) и не работает авто-завершение что сказывается на количестве багов и продуктивности написания кода. Код:
У меня еще есть надежда что можно как то иде научить определять тип переменной и юзать приватный конструктор | ||||||||
Gemorroj » 2014.01.14 07:41 | ||||||||
Ну по первой части. Там явно напрашивается синглтон. | ||||||||
TLENS » 2014.01.14 10:58 | ||||||||
Gemorroj | ||||||||
TLENS » 2014.01.14 11:41 | ||||||||
Ну синглтон как правило используеться для одиночной инициалицазии класса. У меня же обьектовм может быть множетство но основная задача что бы в памяти небыло два одинаковых обьекта | ||||||||
Gemorroj » 2014.01.14 12:15 | ||||||||
а, не совсем правильно понял. ну почти то же самое. в новомодной терминологии это называется мультитон. и реализуется практически так же как у тебя в первом примере. за исключением того, что не понятно зачем там ссылочный метод и static. Код:
| ||||||||
TLENS » 2014.01.14 18:31 | ||||||||
а какая разница static::$listObject[$id] или self::$listObject[$id]? сейчас пересмотрю на self | ||||||||
Gemorroj » 2014.01.14 19:25 | ||||||||
TLENS » 2014.01.14 20:07 | ||||||||
Что то там ничего не понял. Но тесты показывают следующее Код:
На выходе Показать/Скрыть NULL array(1) { [123]=> object(TestVideo1)#1 (2) { ["key"]=> string(10) "TestVideo1" ["id"]=> string(3) "123" } } array(2) { [1234]=> object(TestVideo2)#2 (2) { ["key"]=> string(10) "TestVideo2" ["id"]=> string(4) "1234" } [123]=> object(TestVideo2)#3 (2) { ["key"]=> string(10) "TestVideo2" ["id"]=> string(3) "123" } } Или мои убеждения неверны? А по поводу ссылочного метода. Я так полагал что бы объект не клонировался | ||||||||
TLENS » 2014.01.15 19:38 | ||||||||
Ты прав я что то вообще запамятовал. Объекты же и есть ссылочный тип. передавал я не сам объект а ссылку на ячейку массива. Код:
Показать/Скрыть array(1) { [123]=> &object(A)#1 (2) { ["id":protected]=> int(123) ["val":protected]=> int(598) } } array(1) { [123]=> &NULL } | ||||||||
Nu3oN » 2014.02.06 07:47 | ||||||||
сцка, темный лес! как же я сам себя запустил... |