Articles of oop

PHP: array_map на объекте?

Я пытаюсь написать функцию, которая форматирует каждый (строковый) элемент / переменную в объекте, например, с функцией обратного вызова. Имена переменных мне неизвестны, поэтому они должны работать с объектами всех классов. Как я могу достичь чего-то похожего на array_map или array_walk с объектами?

получение предупреждения «Заголовок может содержать не более одного заголовка, обнаружена новая строка»

Я делаю кодирование в oops для загрузки изображения в PHP. Но после отправки изображения, оно дает предупреждение «Заголовок может содержать не более одного заголовка, обнаружена новая строка» Ниже приведена моя функция, при которой ее ошибка public function ft_redirect($query = '') { if (REQUEST_URI) { $_SERVER['REQUEST_URI'] = REQUEST_URI; } $protocol = 'http://'; if (HTTPS) { $protocol […]

Как вызвать конструктор родительских классов с его исходными параметрами в PHP

У меня есть этот код: class A { var $arr = array(); function __construct($para) { echo 'Not called'; } } class B extends A { function __construct() { $arr[] = 'new Item'; } } И так как B имеет свою конструкцию конструктора ($ para) A, никогда не будет вызвана. Теперь я мог бы вызвать parent […]

Глобальная переменная внутри конструктора с PHP

Это должно быть очевидно, но я немного запутался в области переменных PHP. У меня есть переменная внутри конструктора, которую я хочу использовать позже в функции в том же классе. Мой текущий метод: <?php class Log(){ function Log(){ $_ENV['access'] = true; } function test(){ $access = $ENV['access']; } } ?> Есть ли лучший способ сделать это, […]

PHP-конструктор, не вызываемый при инстанцировании

Кажется, что мой конструктор класса PHP не вызывает вызов при запуске класса. Вот как выглядит мой конструктор: public function __contruct() { $GLOBALS['page_content'] .= "<p>Constructor entered.</p>\r\n"; try { $this->ConstructorBase(); } catch ( Exception $e ) { throw new Exception( "Error in ".__FILE__."(".__LINE__."): Constructor failed.", CLoginError::ERROR_CANNOT_INSTANTIATE, $e ); } } Позже в том же файле, в глобальной […]

PHP Частный доступ переменной от ребенка

поэтому я пытаюсь решить проблему, которая у меня возникает при разработке классов PHP. Я создал базовый класс и назначил частные переменные. У меня есть дочерние классы, расширяющие этот базовый класс, которые делают ссылку и изменяются этими частными переменными через функции базового класса. Вот пример, имейте в виду, я все еще смущен различием между private и […]

Лучший способ реализовать шаблон декоратора для кэширования результатов метода в PHP

У меня есть набор классов, которые имеют привычку многократно вызываться с теми же аргументами. Эти методы обычно запускают запросы к базе данных и строят массивы объектов и т. Д., И поэтому, чтобы вырезать это дублирование, я разработал несколько методов кэширования для оптимизации. Они используются так: Перед применением кеширования: public function method($arg1, $arg2) { $result = […]

Можете ли вы объявить атрибут private в абстрактном классе?

Допустим, у вас есть абстрактный класс: abstract class PersonAbstract { private $name = "Stack Overflow"; } Является ли законным объявлять атрибут как частный в абстрактном классе? Или тот факт, что этот класс должен быть расширен, минимальная видимость защищена ?

сделать переменную доступной для всех классов, методов, функций и включает в себя, как $ _POST

Этот вопрос кажется достаточно простым, но я не могу найти ответ нигде … В начале моего php-скрипта / файла я хочу создать переменную. $variable = 'this is my variable'; Я хочу, чтобы эта переменная была доступна в пределах всего скрипта, так что все классы, методы, функции, включая скрипты и т. Д., Могут просто вызвать эту […]

Получить статическое свойство экземпляра

Если у меня есть экземпляр в PHP, то какой самый простой способ получить статическое свойство («переменная класса») этого экземпляра? Эта $classvars=get_class_vars(get_class($thing)); $property=$classvars['property']; Звук действительно преувеличен. Я бы ожидал $thing::property или $thing->property