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

Форум PHP

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

 

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

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

тема: наследование в php
 
 автор: Lelik   (11.04.2008 в 15:36)   письмо автору
 
 

друзья, подскажите, а возможно ли в php наследование одним классом нескольких.

я хочу узнать не о таком наследовании:
class1=>class2=>class3=>megaclass

а о таком
class1=>megaclass
class2=>megaclass
class3=>megaclass

   
 
 автор: mechanic   (11.04.2008 в 15:59)   письмо автору
 
   для: Lelik   (11.04.2008 в 15:36)
 

это называется множественное наследование..
нет, не возможно

   
 
 автор: Zmej   (11.04.2008 в 16:16)   письмо автору
 
   для: Lelik   (11.04.2008 в 15:36)
 

наследование от нескольких классов - это множественное наследование, а в РНР оно невозможно. У класса наследника может быть только один предковый (базовый) класс

   
 
 автор: Lelik   (11.04.2008 в 18:36)   письмо автору
 
   для: Zmej   (11.04.2008 в 16:16)
 

а как в пхп6 с этим дела обстоят?

   
 
 автор: cheops   (12.04.2008 в 15:24)   письмо автору
 
   для: Lelik   (11.04.2008 в 18:36)
 

Точно также - в этом плане всё останется без изменений, по-моему только C++ поддерживает множественное наследование, в таких языках, как PHP используют интерфейсы.

   
 
 автор: Lelik   (12.04.2008 в 23:17)   письмо автору
 
   для: cheops   (12.04.2008 в 15:24)
 

а можно про интерфейсы подробней?

   
 
 автор: cheops   (13.04.2008 в 12:25)   письмо автору
 
   для: Lelik   (12.04.2008 в 23:17)
 

Интерфейсы суть "полностью абстрактные классы" в терминологии C++, т.е. они содержат абстрактные методы. Классы, реализующие интерфейсы в обязательном порядке должны их реализовывать, это позволяет более безошибочно решать задачи полиморфизма. Главной особенностью интерфейсов является то, что один класс может реализовывать сразу несколько интерфейсов. Правда мне кажется это не совсем то, что вам требуется...

   
 
 автор: Lelik   (13.04.2008 в 13:24)   письмо автору
 
   для: cheops   (13.04.2008 в 12:25)
 

Правда мне кажется это не совсем то, что вам требуется...
так, тут вы правы. мне надо, чтоб в одном классе могли использоваться методы из других классов (не собираю всё в один класс, так как разбиваю всё по логике вещей, для работы с MySQL отдельный класс, для аутентификации отдельный и т. д.), в данной ситуации и одиночное наследование не то, что хотелось бы.

   
 
 автор: cheops   (14.04.2008 в 12:22)   письмо автору
 
   для: Lelik   (13.04.2008 в 13:24)
 

Хм... а почему нельзя просто создать объект и вызывать метод объекта?

   
 
 автор: Lelik   (14.04.2008 в 12:33)   письмо автору
 
   для: cheops   (14.04.2008 в 12:22)
 

а потому, что все основное действие описывается в классе :)

   
 
 автор: Lelik   (13.04.2008 в 13:30)   письмо автору
 
   для: cheops   (13.04.2008 в 12:25)
 

и ещё. хотелось вот, что узнать: а возможно при объявлении класса, передать ему как аргумент объект другого класса, и использовать его в методах текущего класса. чтоб меня лучше поняли:

<?php
$clss1 
= new Class1();

$clss2 = new Class2($clss1);
?>

   
 
 автор: Lstasss   (13.04.2008 в 13:39)   письмо автору
 
   для: Lelik   (13.04.2008 в 13:30)
 

<?php
Class2{
private $otherClassObj=null;
__construct($obj)
{
$this->otherClassObj($obj);
}
}
$clss1 = new Class1();

$clss2 = new Class2($clss1);
?>

   
 
 автор: Lelik   (13.04.2008 в 13:42)   письмо автору
 
   для: Lstasss   (13.04.2008 в 13:39)
 

я вот что-то не пойму с какой радости переменная как метод применяется?

<?php
Class2
{
    private 
$otherClassObj=null;
    
__construct($obj) {
        
$this->otherClassObj($obj);
    }
}
?>


UPD
при ошибке в коде, я понял, что применять можно. спасибо :)

   
 
 автор: cheops   (14.04.2008 в 12:23)   письмо автору
 
   для: Lelik   (13.04.2008 в 13:30)
 

>и ещё. хотелось вот, что узнать: а возможно при объявлении класса, передать ему как аргумент
>объект другого класса, и использовать его в методах текущего класса. чтоб меня лучше поняли:
Можно.

   
Rambler's Top100
вверх

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