Я понимаю, что 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'); […]
При доступе к константе класса я вижу, что я могу использовать переменную для имени класса, например $classname::CONST_VALUE . Что делать, если я хочу использовать переменную для имени константы, например self::$constant . Кажется, это не работает. Есть ли обходной путь?
У меня довольно большой сайт, и каждая страница построена из нескольких включенных файлов, мой сайт на 100% в процедурном формате, и я пытаюсь научиться использовать классы и более подход ООП в PHP. В настоящее время мой сайт имеет заголовочный файл, который включен в каждую страницу, в этом заголовке создается соединение mysql и длится длительность страницы, […]
Я работаю над разработкой пользовательской структуры. И я столкнулся с проблемой, когда попытался динамизировать вызов моих классов. Это изображение моих файлов: Поэтому я решил создать другую функцию для каждой папки (libs, controllers et modelses): function autoloadLibs($class) { //require the general classes require 'libs/' . $class . '.php'; } function autoloadModels($class) { //require the models classes […]
Почему некоторые люди создают один метод, который возвращает новый статический элемент вместо того, чтобы сделать все методы статическими? В чем причина того, что этот метод возвращает новый статический ? Я не спрашиваю, в чем разница между статикой и самостью, или тем, что статично и само по себе. Например, вот один простой класс: <?php class Expression […]
Я хотел бы сделать что-то вроде этого: 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; } } Но я не могу создать константу класса из такого выражения: Значение должно быть […]
Допустим, у меня есть массив, который я хочу преобразовать в объект значения. Класс объекта 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( […]
Я новичок в ООП. Первоначально я определял переменные и присваивал им значения внутри класса и вне конструктора, но после урока ООП в Java сегодня мне сказали, что это плохой стиль, и его следует избегать. Вот мой оригинальный класс подключения к базе данных PHP, который я издевался: class DatabaseConnection { private $dbHost = "localhost"; private $dbUser […]
Согласно руководству PHP , класс вроде этого: abstract class Example {} не может быть создан. Если мне нужен класс без экземпляра, например, для шаблона реестра: class Registry {} // and later: echo Registry::$someValue; считалось бы хорошим стилем просто объявить класс абстрактным? Если нет, то каковы преимущества скрытия конструктора в качестве защищенного метода по сравнению с […]