我的PhP文件包含一些长字符串常量,我试图将它们排除在外。所以我创建了“my_string_constants.php”并在include
中使用了header.php
。到目前为止工作正常。
现在另一个文件page.php
也需要字符串常量和 header.php
。下面的方案试图澄清这些依赖。
字符串常量现在似乎只在我的标题中可用,而不是我页面的其余部分。我尝试通过向global ...
中的每个字符串常量添加string_constants.php
来解决此问题。这解决了“未知变量”的错误,但我的字符串常量似乎仍然无法用于大多数页面内容。
让这项工作成功的正确方法是什么?
更新
问题已解决。我应该使用define(myString
代替$myString = ...
。通过这样做,我只需要include
中的一个header.php
,并且page.php
也可以使用常量。
万分感谢,你们很棒。
答案 0 :(得分:3)
您要做的一件事是将常量与变量区分开来。特别是如果其他开发人员最终解决这个问题,他们会对你的术语感到困惑。
对于常量,您不需要将它们声明为全局,并且它们的定义如下:
define('MY_CONSTANT', 'Value');
在我看来,常量文件充当您的站点范围的配置文件,因此对我而言,无论是否使用标头,都可以在每个页面上使用它。我通常会为此创建一个bootstrap文件。
bootstrap.php中:
<?php
require_once(__DIR__ . '/constants.php');
require_once(__DIR__ . '/database.php');
require_once(__DIR__ . '/session.php');
您明白了,然后每个可访问的页面都需要包含此引导程序文件,然后可能包含标题。
page.php文件:
<?php
require_once(__DIR__ . '/bootstrap/bootstrap.php');
require_once(__DIR__ . '/header.php');
?>
<h1>Page Title</h1>
在header.php中,由于它需要这些常量,你可以通过两种方式处理它,或者检查是否定义了常量(意思是,首先包含bootstrap),或者只使用另一个require_once来确保加载了文件。
if (!defined('MY_CONSTANT')) exit('Bootstrap failure');
或
require_once(__DIR__ . '/bootstrap/constants.php');
答案 1 :(得分:0)
去许多目录或&#34;文件&#34;关于包含的深度可能会在您尝试调试时导致问题。作为一项规则,我尝试只涉及包含文件的一个级别。即创建一个名为includes的文件夹并将所有内容放在那里。如果有一个文件需要多个变量,函数等,那么在那个时候将它们包含在所需的页面中,做几个包含如下:
<?php
include("includes/header.php");
includes("includes/functions.php");
?>
还有其他问题涉及多个包含,例如,如果您有会话或cookie,某些LAMP堆栈将要求您声明
session_start();
位于每个页面的顶部,包括可能需要访问该会话或cookie的所有包含的php文件。
因此,为了回答您的问题,我认为最简单的解决方案是重新组织您的网站或脚本。
答案 2 :(得分:0)
在标题页面上你写了 包括&#39; header.php&#39;;
并在header.php中写道 包括&#39; my_string_constants.php&#39;;
所以在这种情况下,page.php调用头文件,在头文件中调用my_string_constants ......这就是你的意思吗?