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

Форум PHP

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

 

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

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

тема: Использование методов одного класса в другом
 
 автор: levsha   (30.09.2007 в 13:56)   письмо автору
 
 

Такой вопрос появился.
У меня два класса Class1 и Class2.
В Class2 существует метод, в котором создается объект типа Class1 и вызываются его методы.
Как лучше сделать, функциональность методов Class1 которые вызываю в методе Class2 переписать
в сам класс Class2 или же вызывать их. Это связано с быстродействием?
Суть:
Class Class1
{
method1() {}
method2() {}
}


Class Class2
{
method1()
{
$obj_1 = new Class1;
$obj_1 -> method1();
$obj_1 -> method2();
}
}

   
 
 автор: Саня   (30.09.2007 в 14:18)   письмо автору
 
   для: levsha   (30.09.2007 в 13:56)
 

Лучше наследовать классы:
<?php
Class Class1 {
  function 
method1() {echo "вызван method1 класса Class1<br/>";}
  function 
method2() {echo "вызван method2 класса Class1<br/>";}
}

class 
Class2 extends Class1 {
}
$test = new Class2;
$test->method1();

   
 
 автор: cheops   (30.09.2007 в 14:25)   письмо автору
 
   для: levsha   (30.09.2007 в 13:56)
 

>Как лучше сделать, функциональность методов Class1 которые вызываю в методе Class2
>переписать в сам класс Class2 или же вызывать их.
Не следует дублировать методы одного класса в другом - это нарушение принципов объектно-ориентированного программирования - если их нарушать - рано или поздно получится каша, которую проще выкинуть, чем сопровождать и поддерживать. Следует поступить именно так, как вы написали.

PS Если хотите, чтобы два класса обладали одинаковыми методами - создайте базовый класс с этими методами и унаследуйте от него оба класса.
>Это связано с быстродействием?
PPS С быстродействием это никак не связано, ООП не предназначен для увеличения скорости приложения - объектно-ориентированная методология предназначена для организации кода: человек не может держать в голове миллионы деталей сложного приложения (обязательно, что-нибудь забудет, ошибётся...) - ООП позволяет разрабатывать огромные приложения эволюционным путём - развивая иерархию классов и построенных на их основе блоков. Разработчики классов не думают об конечных приложениях, разработчики приложений не задумываются как работают классы - каждый сосредотачивается на своей задаче. Простые и мелкие задачи решаются быстрее, чем сложные и объёмные.

   
Rambler's Top100
вверх

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