php - 包含的布局 PHP 中变量的可见性问题
问题描述
编辑:根据问题:参考:什么是变量范围,哪些变量可以从哪里访问,什么是“未定义变量”错误? 应该对我有用,但事实并非如此。我可能不明白一些东西,但我看不出错误在哪里。
我是 PHP 的新手,所以这个问题可能很简单而且很愚蠢。我有 3 个文件index.php
:View.php
和layout.php
. 在View php
我有一个 View 类定义和一个render()
方法。其中,此方法包括来自文件的 HTML 模板layout.php
。
但是:在<main>
标签中的 PHP 文件中,我有一段 php 代码(if
语句),根据$page
变量的值(在 PHP 文件中定义),它包含一个不同的文件
问题是这个变量在layout.php
文件中显示为未定义。我不明白为什么,最后所有代码都在执行index.php
:包含视图类和渲染函数包含layout.php
。
请帮助我理解这一点,因为我做不到。提前致谢。
注意:未定义变量:第 17 行 C:\xampp\htdocs\notes\templates\layout.php 中的操作
索引.php
<?php
declare(strict_types=1);
namespace App;
require_once("src/utils/debug.php");
require_once("src/View.php");
$action = $_GET['action'] ?? null;
$view = new View();
$view -> render($action );
查看.php
<?php
declare(strict_types=1);
namespace App;
class View
{
public function render(?string $page): void
{
include_once("templates/layout.php");
}
}
布局.php
<html>
<head>
</head>
<body>
<header>
<h1>Nagłówek</h1>
</header>
<nav>
<ul>
<li><a href="index.php/?action=list">Lista notatek</li>
<li><a href="index.php/?action=create">Nowa notatka</li>
</ul>
</nav>
<main>
<?php
if ($page === 'create') {
include_once("templates/pages/list.php");
} else {
include_once("templates/pages/create.php");
}
?>
</main>
<footer>
</footer>
</body>
</html>
解决方案
推荐阅读
- java - 如何使用firebase中的值沿折线实时移动标记
- reactjs - 如何使用 redux 和 redux - Saga 在事件 onClick 上等待来自 API 的 reducer 更新数据?
- android - 当用户手动更改时间时 System.currentTimeMillis() 会受到干扰
- html - 如何在悬停时显示滚动条?
- swift - 如何使用 NSRect 或 NSView 绘制 NSImage
- ios - 如何知道变量的值是否迅速改变?
- android - 将 android jetpack workmanager 升级到 1.0.1 版后未解决的参考“有效负载”
- server - 如果没有 SSH 访问,如何关闭 Openstack 中的计算节点
- firebase - Firebase 403 上的 Firebase 安装
- angularjs - Angularjs:使用 ng-class 的性能