2012-12-31 49 views
2

我試圖使用php的set_include_path將自定義路徑包含到某個文件中。下面的代碼:set_include_path致命錯誤:在文件中找不到'MyClass'類

file.php

<?php 
    $path = 'classes/'; 
    set_include_path(get_include_path() . PATH_SEPARATOR . $path); 
    $obj = new MyClass(); 
    $obj->methodCall(); 
?> 

這裏是我的根目錄結構

www 
|_webapp 
     |_classes 
       |_MyClass.php 
     |_nbproject 
     |_file.php 

所有當我執行該腳本是此錯誤消息,我得到:Fatal error: Class 'MyClass' not found in C:\wamp\www\webapp\file.php。我曾嘗試使用require包括該文件,它的工作原理是,但我用set_include_path撞牆。有人知道我能做些什麼嗎?

感謝

+0

只是說「試圖包含文件時,查看文件夾A,B和C」不會奇蹟般地說「加載Foo類,包含文件Foo.php」。你需要顯式'包含'''需要'帶有類定義的文件,或者使用自動加載器。 – DCoder

+0

爲了同樣的目的,我使用了'include/require'和'spl_autoload_register',但是我從未遇到任何錯誤。那麼爲什麼'set_include_path'不能用於同一目的? – Tifa

+0

可能是因爲您指定了類目錄的相對路徑而不是絕對路徑?很難說。 – DCoder

回答

2
  1. 你增加了全球的相對路徑包括路徑。這是你的意圖嗎?
  2. 您可能不包括定義類MyClass的文件。 set_include_path()允許省略require_once語句中的路徑,而不是省略語句本身。

我的印象是你想要的工具是class autoloader

+0

你是對的我的印象是'set_include_path()'的行爲像'__autoloader'。我包含了這個文件,它可以工作。上帝,我到底是怎麼想到的?!...這很尷尬! – Tifa

0

您選擇包括這樣的形式方法包括「路徑/ filename.php」

+0

'include'像我之前指出的那樣工作,但'set_include_path'不......我必須缺少一些東西,但我不知道它是什麼 – Tifa

相關問題