Каталог админки - в константу

Тема в разделе "Как сделать...", создана пользователем HEPB, 3 янв 2012.

  1. HEPB

    HEPB Постоялец

    Регистр.:
    24 июн 2009
    Сообщения:
    111
    Симпатии:
    8
    Добрый день. Меню навигации в админке сделанотаким образом:

    Код:
    class Navigation {
     
        protected static $admin_navi = array(
            "/admincatalog/index.php"                    => "index",
            "/admincatalog/users.php"                    => "users",
            "/admincatalog/mailer.php"                    => "mailer",
         
     
    ....
            "/logout.php"                        => "logout"
        );
    где admincatalog - папка для администратора, который юзер не должен знать, то есть www\admincatalog
    Вот хотелось бы admincatalog заменить константой, и прописать константу в конфиг-файле. Но не получается, не хочет переменную воспринимать. Подскажите, как реализовать?
     
  2. isok

    isok Создатель

    Регистр.:
    2 июл 2010
    Сообщения:
    28
    Симпатии:
    4
    А на что именно ругается? Может попробовать как "global" её определить?
     
  3. HEPB

    HEPB Постоялец

    Регистр.:
    24 июн 2009
    Сообщения:
    111
    Симпатии:
    8
    Ругается:
    Parse error: syntax error, unexpected '.', expecting ')' in /var/www/includes/Nav.php on line 8
    <-------------- добавлено через 54 сек. -------------->
    писал как:
    "/" . $admincatalog ."/users.php" => "users",
     
  4. DemanZ

    DemanZ Постоялец

    Регистр.:
    16 мар 2007
    Сообщения:
    144
    Симпатии:
    113
    попробуй написать:
    "/{$admincatalog}/index.php" => "index",
     
  5. HEPB

    HEPB Постоялец

    Регистр.:
    24 июн 2009
    Сообщения:
    111
    Симпатии:
    8
    пробовал, то же самое:
    Parse error: syntax error, unexpected '"', expecting ')' in /var/www/includes/Nav.php on line 9
     
  6. Viodele

    Viodele Механик

    Administrator
    Регистр.:
    17 дек 2011
    Сообщения:
    117
    Симпатии:
    495
    Во-первых, проверить класс на наличие конструктора: функция __construct(). Если такова отсутствует, то попробовать ее добавить. Присвоение массива переменной перенести в конструктор. В итоге, код должен выглядеть примерно так:
    PHP:
    class Navigation {
     
        protected static 
    $admin_navi = array ( );
     
        const 
    ADMIN_CATALOG '';  // --- путь
     
        
    public function __construct ( ) {
     
            
    self::$admin_navi = array(
                
    '/' self::ADMIN_CATALOG '/index.php'    => 'index',
                
    '/' self::ADMIN_CATALOG '/users.php'    => 'users',
                
    '/' self::ADMIN_CATALOG '/mailer.php'  => 'mailer',
            ....
                
    '/logout.php'                              => 'logout'
            
    );
         
        }
    Хотя, возможно получение массива навигации осуществляется абстрактным методом. В таком случае это решение не спасет.
     
  7. HEPB

    HEPB Постоялец

    Регистр.:
    24 июн 2009
    Сообщения:
    111
    Симпатии:
    8
    там ниже по тексту:

    PHP:
    public static function adminNavi($active "")
        {
            
    self::navi(self::$admin_navi$active);
        }