【问题标题】:set_include_path() Can someone set me straightset_include_path() 谁能让我直截了当
【发布时间】:2011-12-19 10:22:51
【问题描述】:

我已经浏览过有关此主题的网站,但我仍然感到困惑。我已经解决了我的问题,但我内心深处知道我有点被骗了,这是一个可能导致我进一步出现问题的修复程序。让我解释一下我在哪里:

这里是这样的目录结构文件夹>> [文件夹名称]:

/site root
[ajax-loads]
   showorder.php

[bcls] << For bespoke classes
   class.order.php

[cls] << For classes
   class.main.php
   class.db.php
   class.sql.php
   ...
   ...

dashboard.php
index.php
config.php

...
.. etc etc

所以上面我展示了我有 2 个文件夹,其中包含供我使用的类,其中大多数是通过 class.main.php 中的 __autoload 调用的。我遇到的问题是当我使用 jQuery 将新内容“加载()”到 div 中时;行为发生变化,自动加载的路径是相对于 ajax-load 文件而不是相对于 class.main.php。目前我有以下代码,我觉得我可以说是作弊了。

//PATHS & AUTOLOAD
set_include_path("./cls");
set_include_path("../cls");
set_include_path("./bcls");
set_include_path("../bcls");
//INVESTIGATE THIS NONESENSE ABOVE!

function __autoload($class_name)
{
    require_once 'class' . '.' . $class_name . '.' . 'php';
}

在文件的前面,我的 config.php 文件遇到了同样的问题,我已经用它临时修复了:

set_include_path("./");
set_include_path("../");

现在让我指出这是我决定摆脱程序编码的第一个大型项目,这是我第一次真正体验自动加载。我真的需要更好地理解这一点,而不是成为复制粘贴编码器;我在这里的理解中遇到了一个空白。除了更正代码之外,有人请解释一下正确的代码在做什么,因为我尝试了一些“解决方案”,但在模仿其他人的示例后我仍然得到奇怪的结果。

爱与亲吻 安迪

【问题讨论】:

  • 我试图移动一些东西,所以我调用了 config.php,然后一切都从那里发生。我认为从根目录中的文件初始化可能会更好,但我仍然遇到同样的问题; ajax 加载不会查找相对于根目录的文件,它是相对于 ajax-load 文件夹的文件,即使 require_once 命令位于位于根目录下且适用于所有其他情况的 config.php 文件中

标签: php jquery autoload set-include-path


【解决方案1】:

如果你真的想修改包含路径,那么你应该像这样使用它:

define('BASE_PATH', $_SERVER['DOCUMENT_ROOT']);

// ...

set_include_path(
    BASE_PATH . '/bcls' .
    PATH_SEPARATOR . BASE_PATH . '/cls' .
    PATH_SEPARATOR . get_include_path() .
    PATH_SEPARATOR . '.'
);

不过,我建议您重命名文件夹。强烈建议不要使用这样的缩写变量、类、函数、文件夹等。您是否考虑过使用某种 PHP 框架?这样做可能会对您的工作有所帮助,并且您可以避免重新发明轮子。

如果您想要轻量级,请考虑使用 Kohana 或 CodeIgniter。否则我推荐 Zend 框架。

【讨论】:

  • 这更像是一个学习的东西,我以前玩过 CodeIgniter,但我想进入一个阶段,我可以建立自己的框架(理论上)以便更好地理解。跨度>
  • 我真的不明白你在那里发布的内容,我仍然无法在根目录中调用我的配置文件并显示以下消息:警告:require_once(config.php) [function.require -once]:无法打开流:第 14 行的 G:\www\MiX\cls\class.main.php 中没有这样的文件或目录致命错误:require_once() [function.require]:无法打开所需的 'config. php' (include_path='G:/www/G:/www//bcls;G:/www//cls;.;C:\php5\pear;.') 在 G:\www\MiX\cls\class .main.php 在第 14 行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-06
相关资源
最近更新 更多