【问题标题】:PHP class root directoryPHP类根目录
【发布时间】:2011-06-05 18:49:36
【问题描述】:

有人知道如何像 wordpress 一样创建 php 类根目录吗? 它不必像 wordpress。
我有一些文件夹

*include:
 -header.php
 -footer.php
*images
*forms
 -index.php

问题是当我使用 php header 时,图像没有正确链接,有没有办法解决它。
我读了一些文章来使用$_SERVER['DOCUMENT_ROOT'].,我如何在全球范围内应用它?

【问题讨论】:

  • 你能澄清一下你要的是什么吗?您是否正在尝试复制 WordPress 的类加载策略?
  • @Rob 是的。使用$_SERVER['DOCUMENT_ROOT'] 会在全球范围内使用吗?

标签: php class directory root


【解决方案1】:

您必须定义一个include_pathinclude_path 在 Windows 和 UNIX 上的工作方式类似于 $PATH。当你请求一个文件时(使用 require 或 include),PHP 将尝试在当前目录中找到它。如果没有找到,则开始尝试include_path 中定义的目录。

include_path 是一个 PHP.ini 环境变量,因此您可以在 php.ini 主文件、.htaccess 使用 php_value 或运行时使用 set_inclue_path 修改它。

当您添加了class 文件夹后,您可以在项目的任何文件中运行require('class/foo.php');,它会找到您的全局类文件夹,前提是您不要' t 那里有另一个类文件夹。

祝你好运!

【讨论】:

    【解决方案2】:

    不确定它与您要查找的内容有多大关系,但以防万一:在我从头开始的大多数网站中,我将必要的 php 文件包含在不同的文件夹中(取决于语言、部分等)一个简单的代码。从 URL 中,我得到语言以及部分和页面变量:

    $root = $_SERVER['DOCUMENT_ROOT'];
    $include_string = ":/$root:/$root/$lang:/$root/$lang/$section:/$root/$lang/$section/$page";
    ini_set("include_path", ".:../:$include_string");
    

    我的代码有点复杂,因为有更多的变量和共享文件夹,但它与一些循环和条件是一样的。

    【讨论】:

      【解决方案3】:

      我设法做到的最不奇怪的方式:

      1. 将您的应用根目录(通常为 $_SERVER[DOCUMENT_ROOT])添加到 include_path(在 php.ini、apache 配置中或在运行时使用 set_include_path 轻松完成)
      2. 定义一个__autoload函数到require "classes/{$classname}.class.php"

      您可能需要将文件名设为小写;我忘记了 __autoload 是否以小写形式传递了类名,但我似乎记得这个问题。

      【讨论】:

        【解决方案4】:

        $_SERVER['DOCUMENT_ROOT'] 将在全球范围内工作。

        $_SERVER 是 PHP 的 superglobals 之一。

        【讨论】:

          猜你喜欢
          • 2013-07-26
          • 2018-04-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-22
          • 1970-01-01
          • 2015-02-25
          • 1970-01-01
          相关资源
          最近更新 更多