在我看来,我需要所有必要的文件,但我一直收到错误,找不到一个文件。所有文件都在同一个文件夹中。
这是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;
}
}
?>
这是我的bd2.php代码:
require_once('zConfig.php');
/*
* Write settings to the config
*/
zConfig::write('hostname', 'XXXX');
zConfig::write('database', 'XXXX');
zConfig::write('username', 'XXXX');
zConfig::write('password', 'XXXX');
zConfig::write('drivers', array(PDO::ATTR_PERSISTENT => true));
最后,这是我在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'));
答案 0 :(得分:1)
让我向您展示PHP中自动加载的强大功能。
如果您关注PSR-1,那将非常简单。
假设您有这样的结构:
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);
}
在index.php
中,您只需:
require 'conf/NAME_OF_THE_FILE';
和voilá,你将加载所有类。
例如,您的班级db2
应该放在您的类目录中。
答案 1 :(得分:0)
我认为你想要做的是
$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
方法设置数据库配置的文件。
答案 2 :(得分:0)
为了最终在这里寻找“未找到课程”问题答案的任何人的利益。我需要我在网上找到的PHP邮件脚本。我自己编写需求的脚本是很久以前编写的,当时它的工作完美。
我正在移动服务器(使用更高版本的PHP的新服务器)。我也遇到了这个问题,并且搜索得很高。低解决方案。最后,问题变得非常微不足道。事实证明,PHP邮件程序脚本正在使用
&LT ;? ... ?&GT;
这显然足以混淆我的新服务器。我将起始标签更改为&lt;?php,所有内容都是hunkry dory。