2014-12-11 5 views
0

У меня есть 3 файлов в корневой папкеКак включить файлы для использования класса в другие включенные файлы?

main.php:

require_once 'function.php'; 
load_layout($template="header"); // load header.php -- there are echo $session->user_id; code in header.php that not work 
echo $session->user_id; //work 

function.php:

require_once 'ses.php'; 
function load_layout($template="") { 
    include ('header.php'); 
} 

ses.php:

class Session { 
    public $user_id = "1"; 
    public function userinfoss() { 
     return $this->user_id; 
    } 
} 

$session = new Session(); 

и header.php

require_once 'function.php'; 
echo $session->user_id; //not work in main.php loading but work if header.php run seprate 

echo $session->user_id; работа, если header.php запустить seprately, но он входит в main.php и echo $session->user_id; не работает в main.php загрузке

Как я могу изменить свои коды для отображения echo $session->user_id; в включаемых файлах?

обновление:

создать функцию в ses.php:

class Session { 
     public $user_id = "1"; 
     public function userinfoss() { 
      return $this->user_id; 
     } 
    } 

    $session = new Session(); 

    function testfun() { 
    global $session; 
    echo $session->user_id; 
} 

Так называют эту функцию в header.php и работал , но почему $session->user_id не работает?

+0

Где делает 'функция load_layout' родом? – user3409662

+0

from function.php –

+0

Можете ли вы опубликовать код функции 'load_layout'? – user3409662

ответ

1

При вызове main.php, первый require_once 'function.php'; будет работать, и это будет вызывать require_once 'ses.php';, что сделает $session переменная доступна в function.php и в main.php;

Когда header.php получает включены, однако, require_once 'function.php'; он содержит не будет ничего делать (потому что function.php уже включен), а переменная $session не будет доступна в header.php.


В идеале, вы должны реорганизовать свой код так, что вы не имеете 2 файла (main.php и header.php), которые зависят от того же файла (function.php).

Так, может быть, вы можете заменить:

require_once 'function.php' 
load_layout($template="header"); 

в main.php по:

require_once 'header.php'; 

Если вы не можете реорганизовать свой код, то вы можете использовать глобальную переменную для $session , Добавить:

global $session; 

перед тем

$session = new Session(); 

в ses.php.

Кроме того, необходимо добавить

global $session; 

перед тем

echo $session->user_id; 

в header.php

Смежные вопросы