|
|
|
| Здравствуйте, возникло пару вопросов насчет PHP, а именно, можно ли сделать перегрузку операций, как в С++ вида:
class A {
public:
void operation+(const int &g) {
...
}
};
|
Можно ли на РНР разделить объявление класса от его реализации, как на С++:
class B {
public:
B();
int getData( void );
void setData( int d );
private:
int data;
};
B::B() {
this->data = 0;
}
int B::getData( void ) {
return this->data;
}
void B::setData( int d ) {
this->data = d;
}
|
| |
|
|
|
|
|
|
|
для: dios™
(30.04.2010 в 14:25)
| | > можно ли сделать перегрузку операций, как в С++ вида:
Какую задачу вы хотите решить? Оператор сложения в РНР нельзя перегрузить.
> Можно ли на РНР разделить объявление класса от его реализации, как на С++:
Нет. Но есть интерфейсы. | |
|
|
|
|
|
|
|
для: Саня
(30.04.2010 в 14:27)
| | Например мне нужно создать какой-то новый тип данных и сложить его с другим таким же типом данных, а я хочу, что бы я мог это сделать естественным путем, а не вызывать что-то вроде a->plus( b );
В общем, как я понял в РНР ООП сделали сразу обрезанным по сравнения с С++ :) | |
|
|
|
|
|
|
|
для: dios™
(30.04.2010 в 17:25)
| | Посмотрим. Может и появится реализация чего-то похожего. Сейчас можно имплементировать ArrayAccess, Countable, Iterator и работать с объектом как с обычным массивом. | |
|
|
|
|
|
|
|
для: dios™
(30.04.2010 в 17:25)
| | >Например мне нужно создать какой-то новый тип данных и сложить его с другим таким же
>типом данных
Так ведь PHP язык слаботипизированный - он не требует от вас сохранения даже базовых типов, а вы свой решили ввести :) Но вы правы, это не реализовано и с точки зрения ООП-программ вносит множество неудобств. Однако, ООП программы можно создавать и не на ООП-языков (требуется лишь больше дисциплины, ООП-возможности языка её просто навязывают её сверху).
>В общем, как я понял в РНР ООП сделали сразу обрезанным по сравнения с С++ :)
В PHP используется вообще другая ООП-модель - Java, но вы правы, она урезана - это же интерпреатор, он и так не очень шустро работает. Это в C++ только время компиляции увеличивается, использование ООП не приводит к замедлению конечной программы, по сравнению с чистым C. Да и многие ООП-патерны в PHP не нужны, так как сдесь реализованы ассоциативные и смешанные массивы. | |
|
|
|
|
|
|
|
для: cheops
(01.05.2010 в 08:06)
| | С учетом появления type hinting'a реализация перегрузки операторов для объектов, в принципе, решаема. То есть теоретически ввести это вполне могут.
Опять же неясно причём тут ООП. | |
|
|
|
|
|
|
|
для: cheops
(01.05.2010 в 08:06)
| | Я начинал своё познание программирования с языка РНР. Когда я стал только начинать программировать на С мне казалось, что неудобно, когда нужно явно задавать тип переменной. Попрограммировав некоторое время на С/С++ я пришел к выводу, что явное объявление типов уменьшает головную боль.
Безусловно, писать простенький скриптик для себя я буду без использования ООП, но писать что-то среднее/крупное уже более удобно с использованием ООП... Хотя всё относительно :) | |
|
|
|
|
|
|
|
для: cheops
(01.05.2010 в 08:06)
| | Однако, ООП программы можно создавать и не на ООП-языков
Cheops, иногда Вас так трудно понять из-за ошибок... Если бы я не слышал об ООП в Асме, то не понял бы. | |
|
|
|