簡體   English   中英

PHP文件位置因Ajax調用而異。 初始負荷

[英]PHP File Location Different for Ajax Calls Vs. Inital Load

我有一個名為fileCabinet.php的文件可以在所有類中加載,等等。當通過以下方式從index.php加載我的網站時,它的工作原理非常好:

require_once('../includes/fileCabinet.php');

我的問題是當我進行Ajax調用時,我想使用相同的類,並且希望使用相同的文件來加載它們,但是ajax處理腳本的位置與index.php的位置不同,所以我最終看起來像這樣:

if($admin){
    $path = '../';
}else if($ajax){
    $path = '../../';
}

@require_once($path . 'admin/includes/generalFunctions.php');
@require_once($path . 'admin/corModules/PageAdmin.php');
@require_once($path . 'admin/corModules/SEOManager.php');

我有兩條不同的路徑,具體取決於我從哪里打電話(admin或ajax)。 我想知道是否有頑固的方法來查找文件,無論調用來自何處。

有什么想法嗎?

這些文件是否仍位於同一位置? 還是您有兩套這些文件?

如果它們全都位於1個位置,請使用一些常數來設置這些位置。

define('ROOT_PATH', '/path/to/root/folder');

另外,您應該設置一些可能有用的常量:Web根目錄,根目錄路徑,映像目錄,以及一遍又一遍地使用的內容。 同樣,您可以使用$ _SERVER變量來設置這些常量,這樣就不必在每次執行新項目時都手動定義這些常量並將其放入配置文件中。

那你可以做

require_once(ROOT_PATH . '/admin/blah/file.php');

要繼續這條路,您應該使用require而不是require_once(更好的性能),並且應該研究SPL庫並使用自動加載。 這是簡化事情和提高性能的一條好途徑。

內部fileCabinate.php包含相對於該文件的內容:

require_once(__DIR__.'admin/includes/generalFunctions.php');
require_once(__DIR__.'admin/corModules/PageAdmin.php');
require_once(__DIR__.'admin/corModules/SEOManager.php');

魔術常量__DIR__是當前文件的目錄,因此在這種情況下,假定三個子文件位於admin子文件夾中。

/ 
/ fileCabinate.php
/ admin / includes /
                   / generalFunctions.php
/ admin / corModules /
                     / PageAdmin.php
                     / SEOManager.php

根據操作要點-在5.3之前,您需要使用:

require_once(dirname(__FILE__).'admin/includes/generalFunctions.php');

……哦,我們很快忘記了它在美好的日子里是如何運作的!

將您需要包括的所有文件定期放在一個目錄中,例如includes 將該目錄添加到包含路徑。 理想情況下,您可以從Apache配置文件(例如.htaccess文件)執行此操作。

php_value include_path ".:/foo/bar/includes"

確保編寫完整的包含路徑(它可能包含其他目錄,例如PEAR)。 如果您無法執行此操作,請在每個文件中更改PHP的包含路徑:

set_include_path(get_include_path().PATH_SEPARATOR.'/foo/bar/includes');

如果您選擇了其中一個,則文件現在位於include路徑中,這意味着您只require 'foo.php'編寫require 'foo.php' ,無論您includes/foo.php在何處,它都將加載includes/foo.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM