2015-06-20 46 views
1

你好,所以我最近学习了PHP,并想知道我应该如何链接不同的页面,以始终良好地工作,并创建尽可能少的不一致。什么是链接php页面的正确方法?

在我的代码我使用这两种:

include 'newcomment.php'; 
include 'menu.php'; 

或我使用此类型:

include '../MiniPost/database.php'; 
include '../MiniPost/newtopic.php'; 

我相信他们俩不是最佳的。随着第一个更糟糕,因为它使我把我所有的PHP在一个文件夹。我不记得我是如何开始使用第二个它认为我看到它在Stackoverflow的某个地方..意味着根权?有几次我遇到了问题,例如../MiniPost/Forum/Forum.php,它一直给我提供错误,它是否有任何事情可以参考页面? 你用什么来引用页面,你觉得是一个很好的练习?

回答

0

两种方式都是正确的。第一个文件处于同一级别(文件夹),第二个选项是升级并从那里开始。

例如,你有这个结构。

class/ 
class/myClass.php 
category/ 
category/index.php 

如果您需要从index.php文件包括myClass.php,你需要去上一级,转到类文件夹并将该文件。

在这种情况下,

Include('../class/myClass.php'); 
3

..意味着从当前文件夹的文件夹起来。 .表示当前文件夹。

您可以在一个子目录中的文件工作...

$file = "lib/test.php";

...或者上一级目录...

$file = "../test.php";

...或全部其中:

$file = "../lib/test.php";

在某些情况下,从当前文件制作绝对路径可能很有用。我会推荐它,因为在某些情况下可能会遇到问题。

$file = dirname(__FILE__) . "/lib/test.php";

- 或,更短 -

$file = __DIR__ . "/lib/test.php";

+0

应该始终使用'__FILE__'或'__DIR__'来确定路径与当前文件的相对位置,以确保它们将被解析到相同的文件,而不管include/require链的起始位置。 –

+0

@ogondza:是的,这个链是问题:-)是的,'__DIR__'是简单的。我会添加它。 – Richard

1

我建议定义常量作为site_root

您可以将此到您的index.php

define('SITE_ROOT', realpath(dirname(__FILE__))); 

,然后也许增加一个非常基本的自动加载磁带机:

<?php 
function __autoload($class_name) { 
    include SITE_ROOT . '/src/' . $class_name . '.php'; 
} 
?> 

自动加载机允许在没有在你的代码include报表工作。

只是实例化一个类:<?php $object = new Test;?>

加载该文件,然后SITE_ROOT.'/src/Test.php'

这会停止在您的代码中传播include/require语句。

相关问题