Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Проблема со статичными методами/свойствами класс.
Покинул форум
Сообщений всего: 8
Дата рег-ции: Апр. 2017
Помог: 0 раз(а)
Доброго времени суток.
В общем есть код-шаблонизатора, написан в процедурном стиле. Хочу переписать его на ООП, но возникает множество вопросов, а точнее проблем. (весь код представленный ниже лишь легкий аналог, тк оригинал большой)
Пытаюсь перевести все в ООП. Создаю статичные свойства, которые через self:: вызывают статичный метод, статичный метод в свою очередь вызывает статичное свойство (только сейчас подумал что какая то путоница, но в процедурке работает как часы)
Fatal error: Uncaught Error: Access to undeclared static property: Render::$variables
Ведь если я вызываю свойства/методы статчно то __construct не запускается..
Строитель
Отправлено: 07 Апреля, 2017 - 13:11:38
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
Вадим Васильев, точно - это я не учёл. Тогда почему именно статические свойства и методы? Напишите обычный класс. В чем проблема? Вы не хотите создавать экземпляр класса вне класса?
Вадим Васильев
Отправлено: 07 Апреля, 2017 - 14:03:57
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Апр. 2017
Помог: 0 раз(а)
Строитель пишет:
Вадим Васильев, точно - это я не учёл. Тогда почему именно статические свойства и методы? Напишите обычный класс. В чем проблема? Вы не хотите создавать экземпляр класса вне класса?
Не то что бы не хочу .. Просто, думал, вдруг, есть статичный способ
Скорее для общего развития, нежели из-за какого-то принципа.
Строитель
Отправлено: 08 Апреля, 2017 - 10:41:29
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
Вадим Васильев пишет:
Строитель пишет:
Вадим Васильев, точно - это я не учёл. Тогда почему именно статические свойства и методы? Напишите обычный класс. В чем проблема? Вы не хотите создавать экземпляр класса вне класса?
Не то что бы не хочу .. Просто, думал, вдруг, есть статичный способ
Скорее для общего развития, нежели из-за какого-то принципа.
Покинул форум
Сообщений всего: 8
Дата рег-ции: Апр. 2017
Помог: 0 раз(а)
Строитель, спасибо) Это гениально!) Просто и гениально, я даже не подумал что достаточно создать статичный метод конструктора) Не могу сказать "спасибо", недостаточно комментариев (Добавление)
Пораскинув мозгами пришел к выводу переделать слегка функционал. Теперь свойство $variables используется а-ля кэш. Вместо него есть метод variablesInit($key) который через свитч либо ищет в $variables данные либо генерит их, сохраняет в $variales и возвращает.
Строитель
Отправлено: 10 Апреля, 2017 - 14:16:53
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
Вадим Васильев пишет:
Это гениально!) Просто и гениально
На самом деле это обычный принцип работы ооп В этом конкретном примере идёт обращение из публичного статического метода к приватному статическому свойству.
Вадим Васильев
Отправлено: 10 Апреля, 2017 - 16:50:49
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Апр. 2017
Помог: 0 раз(а)
Строитель, Фишка в том что это статичный псевдоконструктор
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.