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

Форум PHP

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

 

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

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

тема: Наследование. Выбор атрибута у наследников
 
 автор: roma67   (25.04.2012 в 00:19)   письмо автору
 
 

Необходимо что-бы при обращении к наследнику вызывались методы родителя и родитель сам определял значения свойств для наследников.

<?php
/****************************************/
class parent {
    var 
$parent="parent.dat";
function 
OpenFile()  {
    
$fread fopen($foo"r" );   
}
/****************************************/
class ext_parent extends parent{

}
/****************************************/
 
$ext_parent = new ext_parent;  
 
$ext_parent->OpenFileRead();
?>


класс parent предоставляет доступ к файлу parent.dat
класс ext_parent - наследник, доступ к файлу ext_parent.dat должен предоставить

Как правильно прописать для наследника открытие другого файла через родителя ext_parent.dat?

(Надо в теле родительского класса прописать)
без установки параметра в методе класса наследника при вызове
без установки в конструкторе наследника

  Ответить  
 
 автор: cheops   (25.04.2012 в 10:23)   письмо автору
 
   для: roma67   (25.04.2012 в 00:19)
 

Так в конструкторе ext_parent переопределите название файла в переменной $this->parent

  Ответить  
 
 автор: roma67   (25.04.2012 в 21:13)   письмо автору
 
   для: cheops   (25.04.2012 в 10:23)
 

А никак не узнать из какого производного класса был вызов?

  Ответить  
 
 автор: cheops   (26.04.2012 в 10:10)   письмо автору
 
   для: roma67   (25.04.2012 в 21:13)
 

В базовом? Создавайте абстрактный метод, который будет перегружаться в каждом производного классе и возвращать имя класса, используйте этот абстрактный метод для получения нужного имени в базовом классе.

  Ответить  
 
 автор: roma67   (26.04.2012 в 15:34)   письмо автору
 
   для: cheops   (26.04.2012 в 10:10)
 

Можно ли назвать такой способ Виртуальным методом?

  Ответить  
 
 автор: cheops   (26.04.2012 в 16:20)   письмо автору
 
   для: roma67   (26.04.2012 в 15:34)
 

Традиционно это называется полиморфизмом.

  Ответить  
 
 автор: roma67   (27.04.2012 в 14:14)   письмо автору
 
   для: cheops   (26.04.2012 в 16:20)
 

Полиморфизмом - это я понимаю, это самое общее понятие к которому можно все отнести наверное
Можно ли ваше предложение назвать виртуальным методом?
Но вопрос в том еще, что например, в СИ виртуальные методы прописываются со словом virtual.
а в PHP есть виртуальные методы подобного типа.

  Ответить  
 
 автор: cheops   (27.04.2012 в 17:29)   письмо автору
 
   для: roma67   (27.04.2012 в 14:14)
 

В PHP "виртуальные" функции объявляются при помощи ключевого слова abstract и принято говорить об абстрактных функциях и классах. В PHP ООП больше похож на Java, чем на С++.

  Ответить  
 
 автор: roma67   (14.06.2012 в 17:40)   письмо автору
 
   для: cheops   (27.04.2012 в 17:29)
 

Правильная ли формулировка( в понятиях):
Вызов метода родительского класса возможно через оператор расширения видимости(::)?
<?php 
//....объявление классов в начале в темы
$ext_parent = new ext_parent
$ext_parent::OpenFileRead();    // родительский метод
$ext_parent->OpenFileRead();  // переопределенный метод(перегрузка)
?>

Какие еще способы возможны?

  Ответить  
 
 автор: speedsoft   (18.06.2012 в 02:09)   письмо автору
 
   для: roma67   (14.06.2012 в 17:40)
 

:: используется только для
1) вызова родительского метода внутри существующего с использованием parent
2) для вызова статических методов.

в Вашем примере первый и второй вариант вызывают переопределенный метод (родительский если он не переопределен), НО
они взаимоисключают друг друга, т.к. метод или статический или нет. и такой и такой быть не могут.

class parClass{
  [static] public OpenFileRead(){
    echo 'PARENT';
  }
}
A::OpenFileRead;



class A extended parClass{
 static public function OpenFileRead(){echo 'потомок';}
}
A::OpenFileRead; //потомок



class A extended parClass{
 public function OpenFileRead(){echo 'потомок';}
}
$a = new A();
$a->OpenFileRead; //потомок

  Ответить  
 
 автор: roma67   (19.06.2012 в 04:51)   письмо автору
 
   для: speedsoft   (18.06.2012 в 02:09)
 

Привет speedsoft Быстрый софт, спасибо за подсказку.
Кажется я въехал во вкус после 1с
Тоже хочу стать быстрым софтом.
На классах очень легко и быстро пишется

с NetBeans не поможешь
http://softtime.ru/forum/read.php?id_forum=2&id_theme=86865&page=1
Хочу понять, что хорошего в Zend Framework.
В PhpED я не вижу ничего нужного, вот хочу попробовать
http://instanceof.org/nastroika-netbeans-dlya-raboty-s-zend-framework-v-ubuntu/
http://instanceof.org/nastroika-netbeans-dlya-raboty-s-zend-framework-v-windows/
..... внизу там ссылки на 20 страниц до создания админки и регистрации пользователей и поиска по сайту.
Может чего интересного подскажешь?

Как получить прямой доступ к MySQL на удаленном сервере
http://softtime.ru/forum/read.php?id_forum=3&id_theme=86849&page=1

Как сделать шлюз для сайта на хостинге и домашнего компа
http://softtime.ru/forum/read.php?id_forum=2&id_theme=86773&page=1

  Ответить  
 
 автор: speedsoft   (19.06.2012 в 08:15)   письмо автору
 
   для: roma67   (19.06.2012 в 04:51)
 

Привет. по хостингу и MySQL прокомментировал. по бобам смогу только вечером. сейчас уезжаю и буду вечером

  Ответить  
 
 автор: Рулсан12ц   (15.06.2012 в 14:10)
 
   для: cheops   (26.04.2012 в 16:20)
 

Перегрузка функций это не полиморфизм

  Ответить  
 
 автор: roma67   (15.06.2012 в 22:24)   письмо автору
 
   для: Рулсан12ц   (15.06.2012 в 14:10)
 

Молодой человек. Вы отрицаете, но не приводите своего доказательства. Это пустые звуки в воде.

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

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