Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не переопределяется статический метод родительского класса

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
razorg1991
Отправлено: 30 Августа, 2014 - 13:44:28
Post Id


Частый гость


Покинул форум
Сообщений всего: 131
Дата рег-ции: Сент. 2013  


Помог: 0 раз(а)




Базовый класс

PHP:
скопировать код в буфер обмена
  1.  
  2. class BaseClass {
  3.            
  4.            static function loadHtml() {
  5.                echo '<!DOCTYPE html>
  6.                 <html lang="ru">';
  7.            }
  8.        
  9.        static function loadHead() {
  10.             require_once PATH_INCLUDES.'head.php';
  11.        }
  12.        
  13.        static function loadBody() {
  14.             echo '<body>
  15.                    <div id="wrapper">
  16.                        <!-- Navigation -->
  17.                            <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">';
  18.        }
  19.        
  20.        static function loadNavigation() {
  21.             require_once PATH_INCLUDES.'navigation.php';
  22.        }
  23.        
  24.        static function loadSidebar() {
  25.             require_once PATH_INCLUDES.'sidebar.php';
  26.        }
  27.        
  28.        static function loadPage() {
  29.             echo '</nav>
  30.                    <div id="page-wrapper">
  31.                        <div class="container-fluid">';
  32.        }
  33.        
  34.        static function display() {
  35.             //require_once PATH_INCLUDES.'page.php';
  36.        }
  37.        
  38.        static function loadEndPage() {
  39.                     echo '</div>
  40.                    <!-- /.container-fluid -->
  41.        
  42.                </div>
  43.                <!-- /#page-wrapper -->
  44.        
  45.            </div>
  46.            <!-- /#wrapper -->';
  47.        }
  48.        static function loadScripts() {
  49.             require_once PATH_INCLUDES.'scripts.php';
  50.        }
  51.        
  52.        static function loadEndBody() {
  53.             echo '</body>';
  54.        }
  55.        
  56.        static function loadEndHtml() {
  57.             echo '</html>';
  58.        }
  59.        
  60.        static function loadContent() {
  61.             self::loadHtml();
  62.             self::loadHead();
  63.             self::loadBody();
  64.             self::loadNavigation();
  65.             self::loadSidebar();
  66.             self::loadPage();
  67.             self::display();
  68.             self::loadEndPage();
  69.             self::loadScripts();
  70.             self::loadEndBody();
  71.             self::loadEndHtml();
  72.        }
  73.         }
  74.  


Соответственно класс потомок

PHP:
скопировать код в буфер обмена
  1.  
  2.         class SearchList extends BaseClass {
  3.         static function display() {
  4.             require_once PATH_PAGES.'searchlist.php';
  5.         }
  6.         }
  7.  


Ну и соответственно вызов

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.     require_once 'settings/config.php';
  4.     require_once 'settings/Autoloader.php';
  5.     SearchList::loadContent();
  6. ?>
  7.  


Не переопределяет! Всегда вызывается родительский метод display(). Почему так?
PHP Version 5.3.13
 
 Top
OrmaJever Модератор
Отправлено: 30 Августа, 2014 - 13:54:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




место self::display() напишите static::display()


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DelphinPRO
Отправлено: 30 Августа, 2014 - 13:54:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




В SearchList нет метода loadContent.
Вызывается метода класса BaseClass.
Внутри вызов self::display();
Слово self указывает на тот класс в котором оно написано.
Вызывает метод BaseClass::display()

Всё правильно.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
razorg1991
Отправлено: 30 Августа, 2014 - 13:58:20
Post Id


Частый гость


Покинул форум
Сообщений всего: 131
Дата рег-ции: Сент. 2013  


Помог: 0 раз(а)




Всем спасибо static помогло! Радость
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB