Перехожу на ООП. Проследите ход рассужений при его использовании

Фанат

oncle terrible
Команда форума
я думаю, не стоит сразу делать объектным весь код.
стоит пробовать использовать объекты постепенно, в каких-то локальных задачах.
к примеру, сделать класс для работы с базой данных.
 

Solid

Drosera anglica
Leonid
Есть статические методы, доступ к ним может осуществляться из любой точки скрипта, через ClassName::methodName();
 

Leonid

PHP? нет, не слышал...
Еще теоретический вопрос. Допустим у класса есть конструктор, в нем подключение к БД, авторизация....
А если у класса есть дочерний класс, не имеющий своего конструктора, то этот конструктор родительского класса не выполняется... Как с этим быть?
 

Solid

Drosera anglica
Правильно проектировать классы или parent::__construct(). Вопрос вообще не понятен... всё зависит от конкретной ситуации.

PS. Самое лучшее изучение ОО, да и вообще всего программирования -- это чтение хороших сорцов. Но без основ, которые даются в книгах (к примеру, приведённых выше), знания будут накапливаться несколько медленнее.
 

Alexandre

PHPПенсионер
Допустим у класса есть конструктор, в нем подключение к БД, авторизация....
А если у класса есть дочерний класс, не имеющий своего конструктора, то этот конструктор родительского класса не выполняется... Как с этим быть?
изменить структуру классов. Для этого тебе советовали прочитать про "Шаблоны проектирования"
Например в твоем случае
PHP:
class myClass{
  var $db=null;
  function __constructor(){
      $this->db = new db("localhost", "user", "ImLoh");
  }
   function showTable(){
     $this->db->query("select * from localTable") ; 
     .......
  }
}
 

akxxiv

Новичок
Кстати о базах данных. Есть ряд независимых друг от друга классов, которые объеденяет лишь одно - они работают с классом базы данных. Если их наследовать от класса БД, то при создании нового объекта буде создаваться новое соединение с БД. Или я что-то не допонимаю?
 

Leonid

PHP? нет, не слышал...
Про шаблоны я пока не очень понял... Надо купить книжку и почитать...
 

StUV

Rotaredom
Leonid
нельзя учить ооп на примере пхп
это вредно
пхп изначально не объекный яп

купи книжку по программированию на c++ или java
почитай
поэкспериментируй
потом примени знания в пхп
иначе потом задолбаешься переучиваться
 

Alexandre

PHPПенсионер
купи книжку по программированию на c++ или java
ему дали ссылку на "базовую книгу" отца всех детей и народов ООП.
нельзя учить ооп на примере пхп - это вредно
пхп изначально не объекный яп
+1 (был мною затеян флейм на эту тему)
 

kirill538

Новичок
пхп изначально не объекный яп
Можете объяснить, почему PHP5 не является объектно-ориентированным языком ? Не путайте человека, уточняйте, что вы о PHP4 говорите.
 

Vallar_ultra

Любитель выпить :)
2kirill538

ИМХО. Сорри конечно, но даже РНР5 не полностью ООЯП. Сравни например его с C# или Java.
 

StUV

Rotaredom
kirill538
не является
так как не включает возможностей перегрузки и нормального полиморфизма... да и много чего еще =)))

-~{}~ 22.12.06 18:52:

whirlwind
в каком это плане ?

-~{}~ 22.12.06 18:55:

я как-то своему бывшему шефу (с С++ работы) запостил прикол

>> If you have a problem to which Perl is the best solution, you have at least two problems.

тут же получил ответ

>> правильно сказано. Я бы сюда же PHP отнес :)

и я не могу с ним не согласиться =)
 

hermit_refined

Отшельник
почему PHP5 не является объектно-ориентированным языком
и никогда не будет в этом плане полноценным, кстати. в частности потому, что во многих случаях, там, где мы бы в Java или C++ использовали бы объект, - в PHP с точки зрения скорости-кодирования/гибкости/эффективности лучше использовать ассоциативный массив. В итоге - вопреки классическому ООП - получаем смесь объектов, перегруженных функциональностью, и "недообъектов" - массивов.
 

whirlwind

TDD infected, paranoid
StUV в плане изучения ООП. C++ не является ООЯП в полном смысле.
 

itprog

Cruftsman
hermit_refined
и никогда не будет в этом плане полноценным, кстати. в частности потому, что во многих случаях, там, где мы бы в Java или C++ использовали бы объект, - в PHP с точки зрения скорости-кодирования/гибкости/эффективности лучше использовать ассоциативный массив. В итоге - вопреки классическому ООП - получаем смесь объектов, перегруженных функциональностью, и "недообъектов" - массивов.
такую фигню и на c++ можно сделать :)
Сам учил ООП на PHP, и ничего, нормально
 

Vallar_ultra

Любитель выпить :)
2itprog

И как долго ты после этого привыкал к использованию перегрузок операторов, полиморфизму и вообще контролю типов в языках подобных C++? :)
 

kirill538

Новичок
2StUV
так как не включает возможностей перегрузки и нормального полиморфизма... да и много чего еще
Первый раз слышу, что возможность перегрузить оператор '+' есть основной признак ООЯП. А чего еще много такого Вы имели в виду ?
 

Leonid

PHP? нет, не слышал...
Обсуждение мне кажется вышло за рамки моего вопроса.... Хотя всегда интересно выслушать мнение специалистов. Но я занимаюсь разработкой сайтов на PHP, и мне интересно полностью использовать ОО-возможности именно этого языка, а не java или c++
 
Сверху