【发布时间】:2012-12-31 12:21:54
【问题描述】:
我正在尝试使用 php 的 set_include_path 包含指向某个文件的自定义路径。代码如下:
文件.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 碰壁了。有人知道我能做些什么吗?
谢谢
【问题讨论】:
-
只是说“当试图包含文件时,查看文件夹 A、B 和 C”并不会神奇地说“加载类 Foo,包含文件 Foo.php”。您需要使用类定义明确地
include/require文件,或者使用自动加载器。 -
我同时使用了
include/require和spl_autoload_register用于相同的目的,但我从未遇到任何错误。那么为什么set_include_path不能达到同样的目的呢? -
可能是因为您指定了类目录的相对路径而不是绝对路径?很难说。
-
我想我误解了
set_include_path的行为。我的印象是它的行为类似于__autoload。所以我明确地包含了该文件并且它可以工作。这太尴尬了……我怎么错过了?!
标签: php set-include-path