需要php配置类,但找不到文件

需要php配置类,但找不到文件,php,include,config,require,Php,Include,Config,Require,在我看来,我需要所有必要的文件,但我不断得到的错误,一个文件没有找到。所有文件都在同一文件夹中 这是我的zConfig.php代码: <?php class zConfig { static $confArray; public static function read($name) { return self::$confArray[$name]; } public static function write($name, $value)

在我看来,我需要所有必要的文件,但我不断得到的错误,一个文件没有找到。所有文件都在同一文件夹中

这是我的zConfig.php代码:

<?php
class zConfig {
    static $confArray;
    public static function read($name) {
        return self::$confArray[$name];
    }
    public static function write($name, $value) {
        self::$confArray[$name] = $value;
    }
}
?>
最后,这是我为Product.php中的函数编写的代码:

public function pdo_updateTip($which, $tiptext)
{
  require_once("bd2.php");
  try {
  $pdo = new PDO("mysql:host=".bd2::read('hostname').";dbname=".bd2::read('database')."", bd2::read('username'), bd2::read('password'), bd2::read('drivers'));
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $stmt = $pdo->prepare("UPDATE tip SET tip_text = :tiptext WHERE product_id='0' AND item LIKE :which");
  $stmt->execute(array(
    ':tiptext'   => $tiptext,
    ':which' => $which
  ));

echo $stmt->rowCount(); // 1
} catch(PDOException $e) {
  echo 'Error: ' . $e->getMessage();
}
    return true;
}
加载Product.php时出现的错误如下:

Fatal error: Class 'bd2' not found in /home/xxxxx/Product.php on line 45
第45行是我第一次提到的
bd2
,这里:

$pdo = new PDO("mysql:host=".bd2::read('hostname').";dbname=".bd2::read('database')."", bd2::read('username'), bd2::read('password'), bd2::read('drivers'));

我想你想做的是

$pdo = new PDO("mysql:host=".zConfig::read('hostname').";dbname=".zConfig::read('database')."", zConfig::read('username'), zConfig::read('password'), zConfig::read('drivers'));

bd2
不是一个类,因此它不包含任何静态方法
read
。似乎它只是一个文件,通过使用
zConfig::write
方法设置数据库的配置。

让我向您展示PHP中自动加载的功能

如果你遵循,这将是非常简单的

假设您有这样一个结构:

Project/
--conf/
--classes/
--index.php
因此,您可以将其放在
conf
目录中,并使用您喜欢的名称:

<?php
/**
* @author Henrique Barcelos <rick.hjpbarcelos@gmail.com>
* @copiright (c) 2013, Henrique Barcelos
*/

ini_set('display_errors', true);
error_reporting(E_ALL | E_STRICT);

setlocale(LC_ALL, array('es_ES', 'es_ES.iso-8859-1', 'es_ES.utf-8', 'spanish'));
ini_set('date.timezone', 'Europe/Madrid');

define('APP_ROOT', dirname(__DIR__) . DIRECTORY_SEPARATOR);

set_include_path(
    implode(PATH_SEPARATOR,
        array_unique(
            array_merge(
                array(
                    APP_ROOT . 'YOUR_CLASS_DIRECTORY', 
                ),
                explode(PATH_SEPARATOR, get_include_path())
            )
        )
    )
);

{
    function autoload($class) {
        $file = sprintf("%s.php", str_replace('_', DIRECTORY_SEPARATOR, $class));
        if (($classPath = stream_resolve_include_path($file)) != false) {
            require $classPath;
        }
    }

    spl_autoload_register('autoload', true);
}
瞧,你们将加载所有的类。
例如,您的类
db2
应该放在您的类目录中。

对于那些在这里寻找“未找到类”问题答案的人来说。我需要一个PHP邮件脚本,我在网上找到的地方。我自己编写的脚本很早以前就完成了,当时它工作得很好

我正在移动服务器(新服务器使用更高版本的PHP)。我也遇到了这个问题,到处寻找解决方案。最后,这个问题变成了一个非常琐碎的问题。事实证明,PHP mailer脚本正在使用


这显然足以让我的新服务器感到困惑。我将起始标记改为在bd2.php中包含一个类,但实际上bd2不是一个类。您应该使用classname->zConfig::read('hostname');我找不到bd2类,它在哪里?PHP也找不到。伙计,使用自动加载。。。
<?php
/**
* @author Henrique Barcelos <rick.hjpbarcelos@gmail.com>
* @copiright (c) 2013, Henrique Barcelos
*/

ini_set('display_errors', true);
error_reporting(E_ALL | E_STRICT);

setlocale(LC_ALL, array('es_ES', 'es_ES.iso-8859-1', 'es_ES.utf-8', 'spanish'));
ini_set('date.timezone', 'Europe/Madrid');

define('APP_ROOT', dirname(__DIR__) . DIRECTORY_SEPARATOR);

set_include_path(
    implode(PATH_SEPARATOR,
        array_unique(
            array_merge(
                array(
                    APP_ROOT . 'YOUR_CLASS_DIRECTORY', 
                ),
                explode(PATH_SEPARATOR, get_include_path())
            )
        )
    )
);

{
    function autoload($class) {
        $file = sprintf("%s.php", str_replace('_', DIRECTORY_SEPARATOR, $class));
        if (($classPath = stream_resolve_include_path($file)) != false) {
            require $classPath;
        }
    }

    spl_autoload_register('autoload', true);
}
require 'conf/NAME_OF_THE_FILE';