Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Один вопрос по поводу ООП, вопрос внутри 
:(
    Опции темы
mark2011
Дата 10.3.2013, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 28.6.2011

Репутация: 2
Всего: 2



Всем добрый день!

Я сразу к сути.

Есть следующий код:
Код

class Base
{
            protected function baseFunction()
           {
                 //что-то делает
           }
}

class BaseExtendFirst extends Base
{
          protected function baseFirstFunction()
          {
                //тоже что-то делает
           }
}


Тут вроде понятно, что код типа:
Код

$a = new BaseExtendFirst();
$a->baseFunction();

должен сработать.

А теперь представьте, что есть набор классов. Возьмём жизненный пример:
Код

class Object
{
public function version_php()
{
        return PHP_VERSION
}
}

class Database extends Object
{
public function hasMySQL()
{
         return function_exists('mysql_connect');
}

public function test()
{

}
}

class MySQL extends Database
{
  public function connect()
  {

   }
}


И есть инициализированный класс MySQL. Вопрос: как из инициализированного класса MySQL обратиться к методу класса Object version_php() ?
PM WWW ICQ Skype   Вверх
Чучмек
Дата 10.3.2013, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



Код

$this->version_php()

не ?


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Fortop
Дата 10.3.2013, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(mark2011 @  10.3.2013,  13:33 Найти цитируемый пост)
Вопрос: как из инициализированного класса MySQL обратиться к методу класса Object version_php() ? 

Очевидно же - создать объект класса Object и вызывать у него нужный метод.

Добавлено через 52 секунды
Цитата(Чучмек @  10.3.2013,  17:24 Найти цитируемый пост)
не ? 

кстати вариант. Не посмотрел что там все унаследовано друг от друга


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
baldina
Дата 14.3.2013, 18:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



mark2011,
php.net:
Цитата

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

из определения понятно, что это транзитивно

Значит, в интерфейс MySQL входят функции, определенные в нем, в Database и в Object.

кстати
Цитата(mark2011 @  10.3.2013,  13:33 Найти цитируемый пост)
$a->baseFunction();

не сработает потому что метод недоступен (protected)
http://liveworkspace.org/code/dudCm$1

Добавлено через 4 минуты и 55 секунд
http://liveworkspace.org/code/62lPN$0
PM MAIL   Вверх
Aliance
Дата 15.3.2013, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



А нормально разве называть класс class Object, это не служебное слово?
PM MAIL WWW ICQ Skype   Вверх
baldina
Дата 15.3.2013, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



Цитата(Aliance @  15.3.2013,  10:05 Найти цитируемый пост)
class Object, это не служебное слово

нормально, не служебное. http://www.php.net/manual/ru/reserved.keywords.php
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.