Используемые файлы в php используют информацию из файлов, которые их включали? - PullRequest
1 голос
/ 09 декабря 2011

Скажите, у меня есть следующие файлы

Пример 1

functions.php

<?php
     session_start();
     function getSessionData(){
         ...
         // returns array
     }
?>

index.php

<?php
    session_start();
    include("functions.php");
    $sessionData = getSessionData();
?>
<html>
    <head>
        <title>test</title>
    </head>
    <body>
        <?php print_r($sessionData); ?>
    </body>
</html>

Теперь index.php включает functions.php. Поскольку у меня есть session_start() в index.php, означает ли это, что он автоматически добавляется в functions.php (учитывая, что функции включены в index?)

Я не уверен, разъясняю ли я это или нет.

Пример 2

config.php

<?php
    $url = "www.example.com";
?>

functions.php

<?php
     include("config.php");
     function getSomething(){
         ...
         return $url
     }
?>

index.php

<?php
    include("config.php");
    include("functions.php");
    $some_var = getSomething();
?>
<html>
    <head>
        <title>test</title>
    </head>
    <body>
        <?=$some_var;?>
    </body>
</html>

Теперь оба functions.php И index.php включают config.php ...

Но поскольку конфиг уже включен в index.php ...

означает ли это, что должны быть включены функции aswel?

Думаю, я просто запутался, тбх :)

1 Ответ

6 голосов
/ 09 декабря 2011

Да. Вы можете думать о включениях как о простом вставке кода в файл, где находится оператор включения.

В примере 2 вам не нужно снова включать config в индекс, так как он уже включен в функции (или наоборот) - то, что вы на самом деле делаете, - это дважды запускаете код в config.php ( что можно предотвратить, используя, например, include_once).

То же самое относится к session_start() в примере 1. При загрузке индекса происходит следующее:

  1. session_start
  2. include functions.php
    1. session_start (сейчас не нужно)
    2. function getSessionData() {..}
  3. (вернуться к указателю) - звонить getSessionData()

Кроме того, во втором примере вы не сможете получить доступ к $url в этой функции без вызова global $url перед ней (внутри функции).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...