不能对函数调用的结果使用 isset() - Laravel
Cannot use isset() on the result of a function call - Laravel
我有一个自定义帮助程序和一个配置,我可以获得该值,但是当我尝试 isset() 时它不起作用,它显示如下
这是客服的内容:app\helper\LmsHelper.php
class LmsHelper
{
private static $host;
private static $api_key;
private static $api_version;
private static $use_ssl;
private static $debug;
private static $port;
public function __construct() {
self::$host = Config::get('lms.host');
self::$api_key = Config::get('lms.api_key');
self::$api_version = Config::get('lms.api_version');
self::$use_ssl = Config::get('lms.use_ssl');
self::$debug = isset(Config::get('lms.debug')) ? Config::get('lms.debug') : false;
if (isset(Config::get('lms.port'))) {
self::$port = Config::get('lms.port');
} else {
self::$port = self::$use_ssl ? 443 : 80;
}
}
}
和app\config\lms.php
<?php
return array(
'host' => 'www.themartialarts.university',
'api_key' => '6027-178512-e272b9afac4763199fa8d79e4bc0dcb39a378658',
'api_version' => '1',
'use_ssl' => true,
);
知道我还能做什么其他方法吗?因为这是正常的 PHP 我把它转换成 Laravel.
您只能对 $variables 调用 isset。
将该行更改为 self::$debug = Config::get('lms.debug', false);
以解决问题。 (将默认值设置为 false)
使用 Config::has("name")
方法调用,因为它是您不能使用的方法调用 isset()
。
“isset”只接受变量。您必须在先验变量中设置函数的结果。
public function __construct() {
$config = Config::get('lms.debug');
self::$host = Config::get('lms.host');
self::$api_key = Config::get('lms.api_key');
self::$api_version = Config::get('lms.api_version');
self::$use_ssl = Config::get('lms.use_ssl');
self::$debug = isset($config) ? Config::get('lms.debug') : false;
$configPort = Config::get('lms.port');
if (isset($configPort)) {
self::$port = Config::get('lms.port');
} else {
self::$port = self::$use_ssl ? 443 : 80;
}
}
即使语言结构支持它,测试函数 returns 是否为变量也没有多大意义,因为即使缺少 return
子句也会生成适当的 null
。例如:
function nothing() {
}
var_dump( nothing() );
NULL
使用 if
而不是 isset
,因为 isset
用于检查 变量是否已设置且不为 NULL。
我有一个自定义帮助程序和一个配置,我可以获得该值,但是当我尝试 isset() 时它不起作用,它显示如下
这是客服的内容:app\helper\LmsHelper.php
class LmsHelper
{
private static $host;
private static $api_key;
private static $api_version;
private static $use_ssl;
private static $debug;
private static $port;
public function __construct() {
self::$host = Config::get('lms.host');
self::$api_key = Config::get('lms.api_key');
self::$api_version = Config::get('lms.api_version');
self::$use_ssl = Config::get('lms.use_ssl');
self::$debug = isset(Config::get('lms.debug')) ? Config::get('lms.debug') : false;
if (isset(Config::get('lms.port'))) {
self::$port = Config::get('lms.port');
} else {
self::$port = self::$use_ssl ? 443 : 80;
}
}
}
和app\config\lms.php
<?php
return array(
'host' => 'www.themartialarts.university',
'api_key' => '6027-178512-e272b9afac4763199fa8d79e4bc0dcb39a378658',
'api_version' => '1',
'use_ssl' => true,
);
知道我还能做什么其他方法吗?因为这是正常的 PHP 我把它转换成 Laravel.
您只能对 $variables 调用 isset。
将该行更改为 self::$debug = Config::get('lms.debug', false);
以解决问题。 (将默认值设置为 false)
使用 Config::has("name")
方法调用,因为它是您不能使用的方法调用 isset()
。
“isset”只接受变量。您必须在先验变量中设置函数的结果。
public function __construct() {
$config = Config::get('lms.debug');
self::$host = Config::get('lms.host');
self::$api_key = Config::get('lms.api_key');
self::$api_version = Config::get('lms.api_version');
self::$use_ssl = Config::get('lms.use_ssl');
self::$debug = isset($config) ? Config::get('lms.debug') : false;
$configPort = Config::get('lms.port');
if (isset($configPort)) {
self::$port = Config::get('lms.port');
} else {
self::$port = self::$use_ssl ? 443 : 80;
}
}
即使语言结构支持它,测试函数 returns 是否为变量也没有多大意义,因为即使缺少 return
子句也会生成适当的 null
。例如:
function nothing() {
}
var_dump( nothing() );
NULL
使用 if
而不是 isset
,因为 isset
用于检查 变量是否已设置且不为 NULL。