【发布时间】:2011-12-06 23:22:54
【问题描述】:
我遇到了一个空白页面,尽管我已经告诉 PHP 报告所有错误,但我仍然没有得到任何信息,这让我相信这一定是语法错误。我找不到它是什么。
这是我正在编写的脚本:
test.php
<?php
ini_set('display_errors', '1');
require('database.php');
print("hello");
$config = new Config("lessons.db","data/");
$db = new Database($config, array('first', 'second', 'third', 'fourth'), true);
print_r($db->dumpToArray());
?>
database.php
<?php
class Config {
private
$_db
$_file,
$_directory,
$_delimiter,
$_columns;
public function __construct(string $file, string $directory = null, string $delimiter = "|") {
$_db = $directory.$file;
$_directory = $directory;
$_delimiter = $delimiter;
}
public function db() {
return $_db;
}
public function delimiter() {
return $_delimiter;
}
}
class Database {
private
$_config,
$_columns,
$_rows,
$_pointer;
public function __construct(Config $config, array $constants = null, boolean $caseInsensitive = false) {
$_config = $config;
is_readable ($_config->db())
or exit ("The database cannot be read");
if(!is_null($constants))
$this->defineColumns($constants, $caseInsensitive);
return;
}
private function connect(string $method) {
if (!($_pointer = @fopen($_config->db(), $method)) or printf("Unable to connect to database");
}
private function disconnect() {
fclose($_pointer);
}
private function defineColumns($constants, $caseInsensitive) {
for (var $i=0;$i<count($constants);$i++)
define($constants[i], $i, $caseInsensitive);
}
public function dumpToArray() {
$arrayDump = explode($_config->delimiter(), file($_config->db(), FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES));
return $arrayDump;
}
public function getRowByValue($column, $value) {
$this->connect('r');
$rowNumber = 0;
while (!feof($_Pointer)) {
$row = explode($_config->delimiter(), fgets($dbPointer, 1024));
if ($row[$column] == $value) {
$this->disconnect();
return $row;
}
$rowNumber++;
}
$this->disconnect();
return false;
}
}
?>
谁能看出是什么原因造成的?
【问题讨论】:
-
我会先尝试
php -l <filename>,以确保它不是语法问题。 -
@Flukey 无法访问它们,我在一个奇怪的公司设置中。
-
@hafichuk 我需要修改该代码吗?从来没有遇到过。
-
当我无法访问错误日志(或者当问题是意外行为而不是实际错误时)并且我无法访问调试器时,我分而治之。只需注释掉您认为导致问题的主要代码部分。一旦您将问题大致定位,然后开始取消注释代码块,直到问题再次出现。
-
投票结束这个问题,因为这个问题过于本地化。要求人们为您查找语法错误超出了限制。
标签: php error-handling