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

Форум PHP

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

 

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

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

тема: ООП: доступ к свойствам
 
 автор: not detected   (28.07.2008 в 04:50)   письмо автору
 
 

Здрасте... Помогите пожалуйста разобраться.
Вот есть некий класс Main, в нем происходить инициализация основных свойств/методов. На основе его свойств в нем же создается объект другого класса. И мне нужно чтоб объект класса Main содержал в себе не только свои, но и новые свойства и методы. Вот примерный код ->
<?php
class Main{
protected 
$var=array();
protected 
$error;
function 
__construct($mode){
$this->var['index1']='value1';
$this->var['index2']='value2';
switch((int)
$mode){
case 
1:
return new 
Class1();
break;
case 
2:
return new 
Class2();
break;
default: die(
'параметры неверны');
}
}
public function 
get_error(){
return 
$this->error;
}
protected function 
set_error($err_msg){
return 
$this->error=$err_msg;
}
}
class 
Class2 extends Main{
private 
$param;
function 
__construct(){
}
public function 
get_param(){
echo 
$this->var['index2']);
}
}
...
...
$obj=new Main('2');
$obj->get_param(); // В итоге ошибка, неопределеный метод.
?>

  Ответить  
 
 автор: Axxil   (28.07.2008 в 10:45)   письмо автору
 
   для: not detected   (28.07.2008 в 04:50)
 

Класс main - родитель. Он не может содержать свойства и методы потомка.
Непонятно, зачем вам это надо? Обычно в родителя выносят общие свойства и методы группы объектов, которые потом переопределяют и дополняют в потомках, для получения уникальных свойств.

  Ответить  
 
 автор: GeorgeIV   (28.07.2008 в 10:52)   письмо автору
 
   для: not detected   (28.07.2008 в 04:50)
 

Если честно, фигню написали. Это не ООП, никаким наследованием тут и не пахнет.

  Ответить  
 
 автор: not detected   (28.07.2008 в 12:25)   письмо автору
 
   для: GeorgeIV   (28.07.2008 в 10:52)
 

Не спорю, фигня... Учусь пока, пытаюсь понять ООП. // Для чего надо? Хотел автоматизировать создание скринов к файлам. Класс Main должен был содержать основные/необходимые свойства и методы. В зависимости от того что указали при создании объекта класса Main ($obj=new или Main(1); $obj=new Main(2);) , внутри этого класса создавался бы объект необходимого класса который и создаст нужное изображение.

  Ответить  
 
 автор: GeorgeIV   (28.07.2008 в 13:27)   письмо автору
 
   для: not detected   (28.07.2008 в 12:25)
 

а что мешает писать $obj = new Class2(); $obj = new Class1();
только сами классы переписать надо, родитель не должен знать о потомках, кроме того, что они могут унаследовать его свойства и методы.

  Ответить  
 
 автор: not detected   (28.07.2008 в 13:57)   письмо автору
 
   для: GeorgeIV   (28.07.2008 в 13:27)
 

Да. Так и сделаю. Я не правильно понял принцип наследования. Пасиба...

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

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