2014-02-09 114 views
1

所以我的登录检查我分成了两个部分,我试图把两个不同的文件,包括他们。首先,我将显示原始代码,然后显示拆分代码。我认为我的问题是与包含的链接。我尝试使用绝对路径。但它似乎失败了。我的整个应用程序都是模块化的,因此我在应用程序结构的其余部分设置了全局文件,并根据需要调用这些文件。我也想通过_autoload()加载函数,但我不知道这会解决我的问题。php包含里面其他包括

<? 
//Inventory index.php 
include$_SERVER['DOCUMENT_ROOT'].'/Globals/db_connect.php'; 
include$_SERVER['DOCUMENT_ROOT'].'/Globals/functions.php'; 
sec_session_start();if(login_check($mysqli)==true){?> 

/////Html and or more php code to be executed. Usualy a mix of both. 

<?}else{ 
echo ("You are not authorized to access this page, please <a href=\"http://website.com/AUTH/login.html\">login</a>. <br/>");}?> 

这里就是我试图做的.... P.S。我知道我的代码有点难以阅读我正在尝试对它进行格式化以便于阅读,但是我可以比我可以分隔的代码更好地处理丛集。不知道为什么。

<? 
//Inventory index.php 
include$_SERVER['DOCUMENT_ROOT'].'/Globals/auth1.php';?> 

/////Html and or more php code to be executed. Usualy a mix of both. 

<?}else{include$_SERVER['DOCUMENT_ROOT'].'/Globals/auth2.php';?> 

我认为发生的事情是包含在Auth1中失败。我的绝对路径失败了吗?我最好使用_autoload()。

+0

为什么不使用'include('Globals/auth1.php');'? – malta

+1

你总是会更好地使用'__autoload()',但为此你需要使用类。 –

+1

你最好是缩进,并为初学者正确设置代码格式,而且最好不要使用短开标签。 –

回答

0

您应该始终选择“自动加载”,以支持手动包含,原因有很多。

  1. 可读结构 - 一类为每个文件和每个命名空间段一个文件夹,您可以非常快速的找到你的项目的目录结构什么。

  2. 易于维护 - 如果您更改了文件的文件夹结构/位置(以及它们的名称空间),则无法重写和验证路径。

  3. 与其他项目的兼容性,例如使用PSR-0PSR-4。 PSR-0用于覆盖遗留代码,PSR-4应将用于新库。

  4. 与软件包管理软件的兼容性 - 期望某种可预测的约定得到尊重。例如Composer需要PSR-0或PSR-4,它可以为您自动加载。

在编码标准和格式相同的主题适用于:

  1. 熟悉结构更容易识别。

  2. 该决定完全是任意的;它总是你的(或你的团队的)选择。要么会工作正常 - 你会习惯任何一个。

  3. 一致性是非常重要的,PSR-1PSR-2是双方的Symfony &朋友用得上,以及其使用的作曲家为他们的包管理(及其他)许多其他项目。

0

我可以建议使用作曲家,它的autoloader它支持不同类型的文件加载。对于制作,您可以使用--optimize option来更好地自动加载作品(因为我记得作曲家扫描所有文件夹并构建现有文件的阵列)