不能在函数调用的结果上使用isset() - Laravel

时间:2016-07-04 08:26:57

标签: php laravel-4 helper

我有一个自定义帮助器和一个配置,我可以得到值,但是当我尝试使用isset()时它不起作用,它显示我这样

enter image description here

这是客户帮助者的内容: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。

5 个答案:

答案 0 :(得分:2)

使用<all_urls>方法调用,因为这是一个无法使用Config::has("name")的方法调用。

答案 1 :(得分:1)

您只能在$ variables上调用isset

将该行更改为self::$debug = Config::get('lms.debug', false);以解决问题。 (将默认值设置为false)

答案 2 :(得分:0)

“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;
    }
}

答案 3 :(得分:0)

即使语言结构支持它,测试函数是否返回变量也没有多大意义,因为即使缺少return子句也会产生正确的null。 E.g:

function nothing() {
}

var_dump( nothing() );
NULL

我怀疑你想使用is_null()而不是isset()

答案 4 :(得分:0)

使用if代替isset因为isset用于检查变量是否设置且不是NULL。