Я разработал PHP Class
с Static
Свойства и я получаю пустую страницу без каких-либо error log
, Пожалуйста, помогите мне, что не так в моем коде PHP?
<?php
ini_set("display_startup_errors", 1);
ini_set("display_errors", 1);
error_reporting(-1);
class Response
{
public $Status;
public $Message;
function __construct() {
$this->Status = FALSE;
$this->Message = "";
}
}
$response = new Response();
class Connection
{
static private $server = "localhost"static private $database = "Student";
static private $user = "ram";
static private $password = "ram12345!";
static public $link;
public static function Trigger() {
try
{
if (!isset(self::$link)) {
self::$link = mysql_connect("localhost", "bbminfoc_bbm", "Princess4BBM.>") or die("Couldn't make connection.");
if(!self::$link)
{
$response->Status = FALSE;
$response->Message = "Database Connection Failed !";
}
else
{
if(!mysql_select_db(self::$database, self::$link))
{
$response->Status = FALSE;
$response->Message = "Couldn't select database Main !";
}
}
}
}
catch(Exception $e) {
$response->Status = FALSE;
$response->Message = "Exception: " . $e->getMessage();
}
if(!$response->Status)
{
unset(self::$link);
}
}
}
if(!isset(Connection::link))
{
Connection::Trigger();
}
$outp = json_encode($response);
if(isset($outp))
{
echo($outp);
}
else
{
echo("No Data");
}
?>
Пожалуйста, помогите мне в этом коде, я не знаю, что я сделал неправильно в вставленном выше коде, потому что я не могу увидеть информацию журнала в файле error_log.
Как уже упоминалось в комментарии @Yolo, в списке отсутствует точка с запятой Connection::Trigger();
и в static private $server = "localhost"
, Поскольку это приведет к ошибке синтаксического анализа, перед выполнением сценария произойдет сбой, и вы не увидите никаких ошибок.
Чтобы увидеть эти ошибки, вам нужно найти файл конфигурации php.ini и установить
display_errors = on
, Также вы должны рассмотреть возможность использования IDE с автоматическим выравниванием кода, которое покажет вам возможные ошибки синтаксического анализа при наборе кода.
Как взято из этот ответ.
Полностью исправленный код выглядит так:
<?php
ini_set("display_startup_errors", 1);
ini_set("display_errors", 1);
error_reporting(-1);
class Response
{
public $Status;
public $Message;
function __construct() {
$this->Status = FALSE;
$this->Message = "";
}
}
$response = new Response();
class Connection
{
static private $server = "localhost";
static private $database = "Student";
static private $user = "ram";
static private $password = "ram12345!";
static public $link = null;
public static function Trigger() {
global $response;
try
{
if (self::$link !== null) {
self::$link = mysql_connect("localhost", "bbminfoc_bbm", "Princess4BBM.>") or die("Couldn't make connection.");
if(!self::$link)
{
$response->Status = FALSE;
$response->Message = "Database Connection Failed !";
}
else
{
if(!mysql_select_db(self::$database, self::$link))
{
$response->Status = FALSE;
$response->Message = "Couldn't select database Main !";
}
}
}
}
catch(Exception $e) {
$response->Status = FALSE;
$response->Message = "Exception: " . $e->getMessage();
}
if(!$response->Status)
{
self::$link = null;
}
}
}
if(Connection::$link !== null)
{
Connection::Trigger();
}
$outp = json_encode($response);
if(isset($outp))
{
echo($outp);
}
else
{
echo("No Data");
}
?>
В static private $server = "localhost"
ты пропустил последнее ;
Кроме того, я получаю эту ошибку:
Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in ... on line 61
Итак, измени if(!isset(Connection::link))
в if (Connection::$link !== null)
Это должно решить вашу проблему.
НОТА
Пожалуйста, не используйте mysql_*
расширение. Это устарело. Если вы хотите продолжить использовать mysql
изменить на PDO
или же mysqli
Вам не нужно сбрасывать соединение, оно будет автоматически сброшено .. после занятий,
вы пропустили точку с запятой после localhost, вы не вызвали ответ внутри триггера функции …
<?phpini_set("display_startup_errors", 1);
ini_set("display_errors", 1);
error_reporting(-1);
class Response
{
public $Status;
public $Message;
function __construct() {
$this->Status = FALSE;
$this->Message = "";
}
}
$response = new Response();
class Connection
{
static private $server = "localhost";
static private $database = "listings";
static private $user = "root";
static private $password = "";
static public $link;
public static function Trigger() {
global $response;
try
{
if (!isset(self::$link)) {
self::$link = mysql_connect("localhost", "root", "") or die("Couldn't make connection.");
if(!self::$link)
{
$response->Status = FALSE;
$response->Message = "Database Connection Failed !";
}
else
{
if(!mysql_select_db(self::$database, self::$link))
{
$response->Status = FALSE;
$response->Message = "Couldn't select database Main !";
}
}
}
}
catch(Exception $e) {
$response->Status = FALSE;
$response->Message = "Exception: " . $e->getMessage();
}
}
}
if(!isset(Connection::$link))
{
Connection::Trigger();
}
$outp = json_encode($response);
if(isset($outp))
{
echo "hello";
echo($outp);
}
else
{
echo "hello";
echo("No Data");
}
Измените это на:
if(!isset(Connection::link))
{
Connection::Trigger();
}
Это:
if(!isset(Connection::$link))
{
Connection::Trigger();
}