Автор оригинала: гоша
Писать программы с инкапсуляцией на пхп никто вам не запрещает (на это, кстати, уже намекнули выше).
Вот простой класс на Java, в котором используется инкапсуляция атрибутов x и y, благодаря чему снаружи ничего не известно об их использовании и нет риска, что кто-то напишет "foo.x = 10", которое перестанет работать после изменения внутренней структуры класса.
Код:
public class Foo {
private int x;
private int y;
public Foo() {
x = 1;
y = 2;
}
public int getZ() {
return x+y;
}
}
Вот как это пишется на PHP без инкапсуляции:
Код:
class Foo {
var $x;
var $y;
function Foo() {
$this->x = 1;
$this->y = 2;
}
function getZ() {
return $this->x+$this->y;
}
}
Нетрудно видеть, что в этом случае мы не имеем технической возможности ограничить доступ к $x и $y. Ты утверждаешь, что инкапсуляция в PHP есть. Прекрасно. Покажи, как переписать этот исходник, чтобы инкспсуляция была.
-~{}~ 12.02.04 18:05:
Автор оригинала: Alexos
и ещё насчёт полиморфизма.. плиз..
есть ли он в PHP?
Говорить о полиморфизме в языках без строгой типизации несколько некорректно. Но если закрыть на это глаза, то ответ будет таким: "более чем есть".
-~{}~ 12.02.04 18:07:
Автор оригинала: PhpGuest
классы в php 4 сплошное недоразумение
Тем не менее, PHP4 есть объективная реальность, данная нам в ощущении. И я всерьез полагаю, что при открытии треда имелась в виду именно четвертая версия.
а инкапсуляция это вроде как обьединение полей и методов просто вроде было а не сокрытие?
Объединение называется умным словом "агрегация".