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

Форум PHP

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

 

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

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

тема: Как загрузить массив из внешнего файла?
 
 автор: Boris   (26.04.2005 в 15:19)   письмо автору
 
 

Всем привет!

Буду краток как В.В. Путин.

Имеется проблема:
Есть файл WebPage.inc в котором создан класс WebPage, описывающий поведение страници моего сайта (на намом деле до этого еще далеко, но я решил идти до конца).
Создаю страницу, например index.php на основе этого класса:
все наследуется без изменений, кроме функции DisplayMenu(), создающей разметку под меню:


<?php
 
require('WebPage.inc');
 require(
'menu_26_04.inc');
  
 class 
IndexPage extends WebPage
  
{
   var 
$main_buttons 
            array( 
'Главная'      => 'index',
                      
'О компании' => 'o_komp',
                      
'Продукция'  => 'prod_main',
                      
'Производство' => 'proiz_main',
                      
'Испытания' => 'isp_main',
              
'Система качества' => 'sq_main',
              
'Контакты' => 'kontakt',
              
'Новости, статьи' => 'news_main',
              
'Сертификаты, лицензии' => 'sert_main');
/// Выдергиваем из класса WebPage ф-ю, которая строит разметку под
/// меню и изменяем ее:
/// Не обращайте внимание на теги HTML и BODY, потом, когда этот
/// модуль отладится,
/// он будет существовать ввиде отдельной таблицы.  
   
function DisplayMenu()
    { 
?>
     <html>
      <HEAD>
       <body>
        <TABLE>
         <TR>
          <TD> <!-- Сюда может встать второстепенное меню 
                          (из отдельного файла,
                           как ниже вставляется главное меню). --> </TD>
          <TD><?php 
                    $a 
= new Menu;
                    
                    
/// Эта функция задае тип страницы, чтобы отличать ее
                    /// от остальных, и подсветить именно эту ссылку в меню.
                    
$a -> SetPageKind_1('index');
                    
                    
/// Эта ф-я строит главное меню.
                    
$a -> DisplayMainMenu($this -> main_buttons);
                    
?></TD>
          </TR>
        </TABLE>
       </body>
      </HEAD>
     </html>
<?php     
    
}
  } 
 
$b = new IndexPage;
 
$b -> DisplayMenu();
?>


Т.к. главное меню присутствует на всех страницах сайта, то на каждой создаваемой странице мне придется заново объявлять массив
$main_buttons, помещать его в родительский класс я не хочу, т.к. кроме него есть еше другие массивы различных подменю, которые будут бестолку грузиться когда они не нужны (например на главной странице). Можно ли как-нибудь этот массив выделить в виде отдельного файла и подключить в расположенный выше код?

Привожу код файла menu_26_04.inc из которого берется ф-я DisplayMainMenu():


<?php
 
class Menu
  
{
   function 
DisplayMainMenu($main_buttons)
    { 
?>
     <TABLE width="130">
       <TR>
        <TD width="10" height="40" bgcolor="#666666"></TD>
       <TD width="110" height="40" bgcolor="#cccccc"></TD>
      </TR>
<?php while (list($name$url) = each($main_buttons))
       {
        echo 
'<tr><td width="10" height="20" ';
         echo 
$this -> getmenuimage_1("$url");
         echo 
'>';
         echo 
'<td width="110" height="20" bgcolor="#cccccc"><p class="nav1"><a class=';
         echo 
$this -> getmenuclass_1("$url");
         echo 
' href="http://www.fenix88.nsk.su/';
         echo 
"$url";
         echo 
'.php">';
         echo 
"$name";
         echo 
'</p></a></td></tr>';
?>
<TR>
        <TD width="10" height="1" bgcolor="#e6e6e6"></TD>
        <TD width="10" height="1" bgcolor="#e6e6e6"></TD>
       </TR>
<?php  ?>
        <TR>
         <TD width="10" height="40" bgcolor="#666666"></TD>
       <TD width="110" height="40" bgcolor="#cccccc"></TD>
      </TR>
     </TABLE>
<?php
    
}
   function 
SetPageKind_1($new_pagekind_1)
      {
       
$this -> pagekind_1 $new_pagekind_1;
      }
   function 
getmenuimage_1($kind)
    {
     if (
$this -> pagekind_1==$kind)
      {
       return 
'bgcolor="#000000"';
      }           
     else
      {
       return 
'bgcolor="#666666"';
      }
    }
   function 
getmenuclass_1($kind)
    {
     if (
$this -> pagekind_1==$kind)
      {
       return 
'"nav1_sel"';
      }           
     else
      {
       return 
"nav1";
      }
    }
  }
?>


P.S. Moby, когда я постигну это, я обязательно напишу тебе (и всем
остальным) как я это сделал.
Вот уже на протяжении нескольких дней я пытаюсь перевести
этот сайт http://www.fenix88.nsk.su на PHP.
Может кто что посоветует, а то напоминает игру в пятнашки,
где всегда нехватает чегото одного для того,
чтобы сложилась полная картина.

   
 
 автор: cheops   (26.04.2005 в 22:17)   письмо автору
 
   для: Boris   (26.04.2005 в 15:19)
 

Да вы можете выделить меню в отдельный файл menu.php
<?php
// Если я правильно понял, то вот этот
var $main_buttons 
            array( 
'Главная'      => 'index'
                      
'О компании' => 'o_komp'
                      
'Продукция'  => 'prod_main'
                      
'Производство' => 'proiz_main'
                      
'Испытания' => 'isp_main'
              
'Система качества' => 'sq_main'
              
'Контакты' => 'kontakt'
              
'Новости, статьи' => 'news_main'
              
'Сертификаты, лицензии' => 'sert_main');
?>

и включать его при помощи инструкции include
<?php
class IndexPage extends WebPage 
  

  include 
"menu.php";
/// Выдергиваем из класса WebPage ф-ю, которая строит разметку под 
/// меню и изменяем ее: 
/// Не обращайте внимание на теги HTML и BODY, потом, когда этот 
/// модуль отладится, 
/// он будет существовать ввиде отдельной таблицы.  
?>

   
Rambler's Top100
вверх

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