|
| |
|
|
| |
для: 1999
(23.04.2007 в 18:07)
| | | а есть ли смысл создавать такие методы?
А какой литературой по ООП вы пользуетесь?
"Если вы не имеете достаточного опыта в ООП, то для вас может остаться неясным предназначение частных элементов. Частные элементы позволяют инкапсулировать данные внутри обьекта. Они остаются скрытыми и недоступными для внешнего кода и способствуют свободному сцеплению. Если код вне структуры данных не имеет возможности осуществить доступ к данным непосредственно, он не может реализовать скрытую зависимость.
Конечно, большая часть частных свойств по-прежнему представляет ирформацию, которая будет разделена с кодом, находящимся вне объекта. Решение заключается в наличии пары общедоступных методов (конструкторов), предназначенных для передачи и установки. Обычно этот конструктор также принимает первоначальные значения для свойств. Это позволяет осуществлять взаимодействие с элементами через узкий, хорошо определённый интерфейс..."
____
Леон Аткинсон Зеев Сураски "РНР5" | |
| |
|
|
| |
|
|
| |
для: 1999
(23.04.2007 в 18:07)
| | | Впечатление такое, что Вы мешаете в один винегрет две разные концепции защиты: защиту доступа к членам класса элементами ООП-кода, и защиту доступа к сайту его посетителями.
Это две совершенно непересекающиеся плоскости.
Если Вы не хотите пользоваться ООП-средствами (или только ООП-защитой) - не пользуйтесь. Никто ведь не настаивает. Безопасность сайта всяко определяться будет не этим. | |
| |
|
|
| |
|
|
| |
для: Trianon
(23.04.2007 в 17:43)
| | | а есть ли смысл создавать такие методы? все равно же их надо будет делать public-типа... может проще сразу сделать поле settings таким? (public) | |
| |
|
|
| |
|
|
| |
для: Andre
(23.04.2007 в 17:51)
| | | кхм... вы вобще читали мой первый пост?
есть класс cms
есть класс news
в news класс cms передается по ссылке (ну это так к слову...) | |
| |
|
|
| |
|
|
| |
для: 1999
(23.04.2007 в 17:35)
| | | Обращаться к элементам класса указанным образом ($this->cms->settings) внутри класса недопустимао. Правильно : $this->settings;. Советую почитать информацию об использовании возможностей ООП в php. | |
| |
|
|
| |
|
|
| |
для: Trianon
(23.04.2007 в 17:43)
| | | либо
<?php
function setting ($name=false)
{
return (!$name)
? $this->settings
: (in_array($name, $this->settings))
? $this->settings[$name] : false;
}
$settings = $cls->setting();
$name = $cls->setting ('name');
?>
|
| |
| |
|
|
| |
|
|
| |
для: 1999
(23.04.2007 в 16:51)
| | | Трогать поле settings может лишь метод этого класса. А уВас его пытается трогать внешняя функция.
Создавайте методы, которые позволяли бы рабоать с приватными полями. | |
| |
|
|
| |
|
|
| |
для: bronenos
(23.04.2007 в 17:31)
| | | потому что я не хочу чтобы параметры системы были public-типа | |
| |
|
|
| |
|
|
| |
для: 1999
(23.04.2007 в 16:51)
| | | выставить public религия не позволяет?
зачем оно такое вам | |
| |
|
|
| |
|
|
| | есть основной класс системы с именем cms, в нем есть переменные типа private:
<?php
class cms
{
private $settings = array();
}
...
|
в модуль основной класс передается по ссылке, но когда я пытаюсь в нем брать значение переменной $this->cms->settings, то выскакивает это:
Fatal error: Cannot access private property cms::$settings
но почему так? я же передаю цмску в модуль по ссылке и переменные основного класса (цмс) должны быть видны... или нет? и как сделать их видными, не ставя settings в состояние public | |
| |
|
|
|