Articles of oop

PHP Доступ к частной собственности дочернего объекта в родительском

У меня есть родительский объект, который я использую для общего CRUD в моих приложениях – он имеет базовые методы сохранения и извлечения, поэтому мне не нужно их повторно включать во все мои объекты. Большинство моих дочерних объектов расширяют этот базовый объект. Это отлично работает, но я обнаружил проблему с получением сериализованного дочернего объекта. Я использую […]

Использование простых примеров абстрактного класса в реальном мире

Любые реальные простые образцы использования абстрактного класса? Я пытаюсь войти в ООП PHP, но я все еще не могу понять – зачем использовать абстрактный класс и когда (Да, я знаю, что невозможно создать экземпляр абстрактного класса, только экземпляр класса, наследующий его).

PHP – MVC – выбор вида

Приветствую всех! Поиск некоторой помощи с MVC в контексте PHP. В настоящее время я создаю небольшую легковесную структуру MVC для ускорения разработки приложений на работе. Это длинное жесткое разделение, исключающее встроенный код – по крайней мере, с многочисленными проектами, нависшими над головой и соблазном использовать его постоянно. Я понимаю большинство основных требований MVC, и я […]

Почему переменные-члены обычно являются частными?

Я только начал изучать объектно-ориентированное программирование сегодня, и только по наблюдению заметили, что во всех примерах переменные-члены являются частными. Почему так обычно бывает? // Class class Building { // Object variables/properties private $number_of_floors = 5; // These buildings have 5 floors private $color; // Class constructor public function __construct($paint) { $this->color = $paint; } public […]

Как выполнить единичный тест наследующих объектов?

Когда вы используете композицию, вы можете высмеивать другие объекты, из которых зависит ваш класс под тестом, но когда вы используете наследование, вы не можете издеваться над базовым классом. (Или вы можете?) Обычно я стараюсь отдать предпочтение композиции над наследованием , но иногда наследование действительно кажется лучшим инструментом для работы – ну, по крайней мере, до […]

PHP: использование метода в качестве обратного вызова

Я пытался использовать array_walk_recursive для чего-то и хотел использовать один из методов класса в качестве обратного вызова, поэтому попробуйте: array_walk_recursive($TAINTED, "$this->encode()"); и их вариации не удались. В конце концов я решил: array_walk_recursive($TAINTED, 'className::encode'); который работает, но я читал здесь, что методы вызова класса в статическом стиле, подобные этому, часто считаются плохой практикой. Или это одна […]

PHP-OOP расширяет два класса?

Я очень новичок в ООП, и теперь я пытаюсь написать некоторый PHP-класс для подключения к FTP-серверу. class ftpConnect { private $server; private $user; private $password; private $connection_id; private $connection_correct = false; public function __construct($server, $user = "anonymous", $password = "anonymous@mail.com") { $this->server = $server; $this->user = $user; $this->password = $password; $this->connection_id = ftp_connect($this->server); $this->connection_correct = […]

Лучший вариант для вызова функциональности модели в контроллере PHP

Я создаю пользовательскую структуру MVC с помощью PHP. Моя проблема в том, когда я хочу получить доступ к любому классу модели через класс контроллера. Один из способов, который я видел, это сделать через шаблон дизайна реестра, используя магические методы, такие как get и set, хотя PHP get и set считаются плохой практикой для некоторых. Я […]

Как слить два объекта?

Возможный дубликат: Каков наилучший способ слияния двух объектов PHP? У меня есть объект $ foo, у которого есть некоторые методы и свойства, которые уже определены, а другой объект – $ bar, который является всего лишь набором свойств. Я хочу объединить все $ bar в $ foo, так что все свойства $ bar становятся свойствами $ […]

PHP-ориентированное веб-приложение

У меня есть класс под названием «Макет» для макета страницы, другой класс, называемый «Пользователь» для пользователя. Каждая страница, которую я создаю, создаю новый макет. Когда пользователь входит в систему, создается новый Пользователь. Как получить экземпляр класса макета, чтобы узнать об инстанцированном пользователе? Я мог бы также сохранить весь экземпляр пользователя в переменной сеанса. Я предполагаю, […]