apache — PHP Vars из включенной начальной загрузки не отображается в поле зрения

Я создал свой собственный небольшой фреймворк PHP для удовольствия, однако у меня возникают проблемы с передачей переменных из начальной загрузки в представления ….

если я добавлю echo, print_r, var_dump моей целевой переменной в начальный загрузчик, вывод отобразится в браузере перед тегом … однако целевой var в bootstrap.php недоступен в представлении, он отображается как » «хотя в верхней части страницы выводится правильно ….

Кое-что я заметил из похожих вопросов:

- The target variable is not being over written
- The include target path is correct and the file exists
- The file is only being included one time (include_once is only fired once)

Любые идеи очень ценятся, я дергаю себя за волосы, лол …

Source Code

https://gist.github.com/jeffreyroberts/f330ad4a164adda221aa

0

Решение

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

define('SITE_NAME', "Jeff's Site");

А затем отобразите это в вашем index.tpl:

<?php echo SITE_NAME; ?>

Или вы можете отправить свои переменные в представление, немного расширив JLR_Core_Views :

class JLR_Core_Views
{
private $data;

public function loadView($templatePath, $data = array())
{
$this->data = $data;
$templatePath = JLR_ROOT . '/webroot/' . $templateName . '.tpl';
if(file_exists($templatePath)) {
// Yes, I know about the vuln here, this is just an example;
ob_start();
include_once $templatePath;
return ob_get_clean();
}
}

function __get($name)
{
return (isset($this->data[$name]))
? $this->data[$name]
: null;
}
}

Затем вы можете назвать свой шаблон так:

$view = new JLR_Core_Views();
$view->loadView("index", array("sitename" => "Jeff's Site"));

А вот ваш index.tpl:

<?php echo $this->siteName; ?>

Ниже приведен еще один пример того, что вы можете сделать.

Сначала вы создаете этот класс для хранения всех переменных, которые вы хотите:

<?php
class JLR_Repository {

private static $data = array();

public function set($name, $value) {
self::$data[$name] = $value;
}

public function get($name) {
return (isset(self::$data[$name]))
? self::$data[$name]
: null;
}
}
?>

Затем, когда вы хотите сохранить что-то в нем:

JLR_Repository::set("sitename", "Jeff's Site");

И в вашем index.tpl:

<?php echo JLR_Repository::get("sitename"); ?>
1

Другие решения

попробуйте использовать ключевое слово global http://php.net/manual/en/language.variables.scope.php

0

По вопросам рекламы [email protected]