包含包含另一个php文件的php文件?
我的PhP文件包含一些长字符串常量,我试图将它们分解出来。所以我创建了“my_string_constants.php”并在header.php
中使用include
。到目前为止,这工作正常。包含包含另一个php文件的php文件?
现在另一个文件page.php
也需要字符串常量和header.php
。下面的方案试图澄清这些依赖关系。现在
的字符串常量在我的头只,而不是我的网页的其余部分似乎可用。我试图通过在string_constants.php
中为每个字符串常量添加global ...
来解决此问题。这解决了“未知变量”的错误,但我的字符串常量对大部分页面内容仍然不可用。
什么是正确的方式来得到这个工作?
UPDATE
的问题一直解决。我应该使用define(myString
而不是$myString = ...
。通过这样做,我需要header.php
中的一个include
,常数也可以用于page.php
。
非常感谢,你们都很棒。
你想要做的一件事是区分常量和变量。特别是如果其他开发人员最终在这方面工作,他们会被您的术语混淆。
常量,你并不需要他们宣告全球和他们像这样定义:
define('MY_CONSTANT', 'Value');
在我看来,该常数文件充当站点范围的配置文件,所以对我来说,无论是否使用标题,在每个页面上都有这个意义。我通常会为此创建一个引导文件。
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中,因为它需要这些常量,您可以通过两种方式解决这个问题,无论是检查常量的定义(意义,引导被列入优先)或只需使用另一个require_once来确保文件已加载。
if (!defined('MY_CONSTANT')) exit('Bootstrap failure');
或
require_once(__DIR__ . '/bootstrap/constants.php');
谢谢!我需要在几分钟内查阅这本手册。 – RubenGeert
从评论中可以看出他也在使用wordpress ......如果这对于已经组织好的东西有什么影响。 –
@mister martin:是的,这确实是Wordpress。 – RubenGeert
对于包含很多关于包含的深度目录或“文件”,在尝试调试时可能会在以后真正导致问题。作为一项规则,我试图只考虑包括文件在内的一个层次。即创建一个名为includes的文件夹,并将所有内容放在那里如果有需要多个变量,函数等文件,然后将它们包括在这一点上需要的页面做一些包括像这样:
<?php
include("includes/header.php");
includes("includes/functions.php");
?>
也有关于其他问题有多个包括,就像如果你有会话或饼干一些LAMP堆栈会要求你在每一个页面的顶部,包括可能需要访问会话或饼干都包含PHP文件声明
session_start();
。
所以要回答你的问题,我相信最简单的解决方案是重新组织你的网站或脚本。
在标题页上ontop u写
include'header.php';
和在header.php中你写的 include'my_string_constants.php';
所以在这种情况下,page.php调用标题,并在标题中调用my_string_constants ...这是你的意思吗?
这是一个答案?它不觉得像一个,感觉就像一个评论.... –
你的设置还不清楚。如果您必须以明确的方式进行操作,您可以在最上面的文件中包含或要求一次文件。 'page.php'和'header.php'不能成为请求中调用的最顶层文件。如果你真的需要在两个文件中都包含一个文件,那么使用''nclude_once()'或'require_once()'。 – arkascha
如果'page.php'需要'header'和'constants',但'header'已经有'constants' ...然后'page.php'只需要'header' –
@mistermartin我试过了,但是它触发了一个错误:'注意:未定义的变量:re_afornone_ov in C:\ xampp \ htdocs \ t \ wp-content \ themes \ c \ home_page.php'字符串常量可用于'header.php'而不是'homepage.php',但它们都需要它们。 – RubenGeert