ссылка — Ошибка времени выполнения в статических свойствах PHP и доступ к глобальному экземпляру в классе

Я разработал 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.

-2

Решение

Как уже упоминалось в комментарии @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");
}

?>
1

Другие решения

В 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

1

Вам не нужно сбрасывать соединение, оно будет автоматически сброшено .. после занятий,

вы пропустили точку с запятой после 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");
}
1

Измените это на:

if(!isset(Connection::link))
{
Connection::Trigger();
}

Это:

if(!isset(Connection::$link))
{
Connection::Trigger();
}
0
По вопросам рекламы [email protected]