Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ООП и PHP
 
 автор: dios™   (30.04.2010 в 14:25)   письмо автору
 
 

Здравствуйте, возникло пару вопросов насчет 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;
}

  Ответить  
 
 автор: Саня   (30.04.2010 в 14:27)   письмо автору
 
   для: dios™   (30.04.2010 в 14:25)
 

> можно ли сделать перегрузку операций, как в С++ вида:
Какую задачу вы хотите решить? Оператор сложения в РНР нельзя перегрузить.

> Можно ли на РНР разделить объявление класса от его реализации, как на С++:
Нет. Но есть интерфейсы.

  Ответить  
 
 автор: dios™   (30.04.2010 в 17:25)   письмо автору
 
   для: Саня   (30.04.2010 в 14:27)
 

Например мне нужно создать какой-то новый тип данных и сложить его с другим таким же типом данных, а я хочу, что бы я мог это сделать естественным путем, а не вызывать что-то вроде a->plus( b );

В общем, как я понял в РНР ООП сделали сразу обрезанным по сравнения с С++ :)

  Ответить  
 
 автор: /|\';..;'/|\   (30.04.2010 в 18:19)   письмо автору
 
   для: dios™   (30.04.2010 в 17:25)
 

Посмотрим. Может и появится реализация чего-то похожего. Сейчас можно имплементировать ArrayAccess, Countable, Iterator и работать с объектом как с обычным массивом.

  Ответить  
 
 автор: cheops   (01.05.2010 в 08:06)   письмо автору
 
   для: dios™   (30.04.2010 в 17:25)
 

>Например мне нужно создать какой-то новый тип данных и сложить его с другим таким же
>типом данных
Так ведь PHP язык слаботипизированный - он не требует от вас сохранения даже базовых типов, а вы свой решили ввести :) Но вы правы, это не реализовано и с точки зрения ООП-программ вносит множество неудобств. Однако, ООП программы можно создавать и не на ООП-языков (требуется лишь больше дисциплины, ООП-возможности языка её просто навязывают её сверху).

>В общем, как я понял в РНР ООП сделали сразу обрезанным по сравнения с С++ :)
В PHP используется вообще другая ООП-модель - Java, но вы правы, она урезана - это же интерпреатор, он и так не очень шустро работает. Это в C++ только время компиляции увеличивается, использование ООП не приводит к замедлению конечной программы, по сравнению с чистым C. Да и многие ООП-патерны в PHP не нужны, так как сдесь реализованы ассоциативные и смешанные массивы.

  Ответить  
 
 автор: Тень*   (01.05.2010 в 11:10)   письмо автору
 
   для: cheops   (01.05.2010 в 08:06)
 

С учетом появления type hinting'a реализация перегрузки операторов для объектов, в принципе, решаема. То есть теоретически ввести это вполне могут.

Опять же неясно причём тут ООП.

  Ответить  
 
 автор: dios™   (02.05.2010 в 01:26)   письмо автору
 
   для: cheops   (01.05.2010 в 08:06)
 

Я начинал своё познание программирования с языка РНР. Когда я стал только начинать программировать на С мне казалось, что неудобно, когда нужно явно задавать тип переменной. Попрограммировав некоторое время на С/С++ я пришел к выводу, что явное объявление типов уменьшает головную боль.
Безусловно, писать простенький скриптик для себя я буду без использования ООП, но писать что-то среднее/крупное уже более удобно с использованием ООП... Хотя всё относительно :)

  Ответить  
 
 автор: Commander   (03.05.2010 в 09:52)   письмо автору
 
   для: cheops   (01.05.2010 в 08:06)
 

Однако, ООП программы можно создавать и не на ООП-языков

Cheops, иногда Вас так трудно понять из-за ошибок... Если бы я не слышал об ООП в Асме, то не понял бы.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования