Articles of class

Php: singleton VS полный статический класс? Когда используете что?

Я понимаю, что singleton применяет класс, который будет создан один раз. Но почему экземпляр существует, если я не получаю его напрямую? Почему этот шаблон для, не проще ли просто использовать полный статический класс со статическими методами и данными?

Каков наилучший подход к инициализации переменных класса?

Вот два способа инициализации переменных класса. 1-й метод class Test { private $var1; private $var2; public function Test($var1,$var1) { $this->var1 = $var1; $this->var2 = $var2; } } $objTest = new Test("value1","value2"); Второй метод class Test { private $var1; private $var2; public function _set($var, $value) { $this->$$var = $value } } $objTest = new Test(); $objTest->_set('var1','value1'); […]

Могу ли я получить доступ к константе класса PHP, используя переменную для имени константы?

При доступе к константе класса я вижу, что я могу использовать переменную для имени класса, например $classname::CONST_VALUE . Что делать, если я хочу использовать переменную для имени константы, например self::$constant . Кажется, это не работает. Есть ли обходной путь?

Должен ли я продолжать переподключение к mysql в PHP?

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

множественная проблема spl_autoload_register

Я работаю над разработкой пользовательской структуры. И я столкнулся с проблемой, когда попытался динамизировать вызов моих классов. Это изображение моих файлов: Поэтому я решил создать другую функцию для каждой папки (libs, controllers et modelses): function autoloadLibs($class) { //require the general classes require 'libs/' . $class . '.php'; } function autoloadModels($class) { //require the models classes […]

Зачем возвращать новый статический? (PHP)

Почему некоторые люди создают один метод, который возвращает новый статический элемент вместо того, чтобы сделать все методы статическими? В чем причина того, что этот метод возвращает новый статический ? Я не спрашиваю, в чем разница между статикой и самостью, или тем, что статично и само по себе. Например, вот один простой класс: <?php class Expression […]

Лучшее решение для создания константы класса PHP из выражения?

Я хотел бы сделать что-то вроде этого: class Circle { const RADIUS_TO_CIRCUMFERENCE = M_PI * 2; // Not allowed private $radius; public function __construct( $radius ) { $this->radius = $radius; } … public function getCircumference() { return $this->radius * self::RADIUS_TO_CIRCUMFERENCE; } } Но я не могу создать константу класса из такого выражения: Значение должно быть […]

Загрузка динамического класса PHP

Допустим, у меня есть массив, который я хочу преобразовать в объект значения. Класс объекта value имеет следующий вид: /* file UserVO.php*/ class UserVO { public $id; public $email; public function __construct($data) { $this->id = (int)$data['id']; $this->email = $data['email']; } } И я создаю свой массив объектов значений следующим образом: /* file UserService.php*/ $array = array( […]

PHP: метод конструктора классов подключения к базе данных

Я новичок в ООП. Первоначально я определял переменные и присваивал им значения внутри класса и вне конструктора, но после урока ООП в Java сегодня мне сказали, что это плохой стиль, и его следует избегать. Вот мой оригинальный класс подключения к базе данных PHP, который я издевался: class DatabaseConnection { private $dbHost = "localhost"; private $dbUser […]

Статические классы в PHP через абстрактное ключевое слово?

Согласно руководству PHP , класс вроде этого: abstract class Example {} не может быть создан. Если мне нужен класс без экземпляра, например, для шаблона реестра: class Registry {} // and later: echo Registry::$someValue; считалось бы хорошим стилем просто объявить класс абстрактным? Если нет, то каковы преимущества скрытия конструктора в качестве защищенного метода по сравнению с […]