2015-06-20 48 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語句。

相關問題