Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将方法设置为未设置变量的默认值_Php - Fatal编程技术网

Php 将方法设置为未设置变量的默认值

Php 将方法设置为未设置变量的默认值,php,Php,注意:未定义变量:第9行[…]中的var 我希望能够将未设置的变量作为参数传递,并将其设置为not set 但这似乎是不可能的。。。有人有什么想法吗?正如@JonathanKhun所说,“真的没有什么好办法可以做到这一点”。我能推荐的最好的方法是一个helper函数,它提供默认的if-not-set行为,并将其用作您想要此行为的函数的包装器 class Test { public function test1($var = 'not set'){ echo $var;

注意:未定义变量:第9行[…]中的var

我希望能够将未设置的变量作为参数传递,并将其设置为not set

但这似乎是不可能的。。。有人有什么想法吗?

正如@JonathanKhun所说,“真的没有什么好办法可以做到这一点”。我能推荐的最好的方法是一个helper函数,它提供默认的if-not-set行为,并将其用作您想要此行为的函数的包装器

class Test {
    public function test1($var = 'not set'){
        echo $var;
    }
}

$test_ob = new Test();

$test_ob->test1($var); // echo not set

$var = "Hello world";
$test_ob->test1($var); // echo Hello world

以防万一其他人有这个问题,我就是这样用@bishop-answer解决的

<?php
isset($baz) && test($baz);
test(isset($baz) ? $baz : ($baz = 'default'));

其实没有什么好办法。您可以将参数更改为引用,如果该引用不存在,则将使用空值创建它,但这通常被认为是不好的做法。或者你只需要在使用变量之前检查变量是否存在。
if(!$test_ob->test1($var)){$var=“Hello world”;}
@Fred ii-如果未设置
$var
,不会因为它在if表达式中使用而仍然引发一个通知错误。@JonathanKuhn否。它(我的测试)回显了“Hello world”,在
default\u if\u not\u set
函数中,如果未设置变量,您可能希望包含第二个参数设置为默认值。此外,如果未设置变量,则其值将为null,而不是空字符串。因此,您应该测试is_null($var)并设置一个默认值。还有,就像我上面说的。这真是糟糕的做法。如果我调用了
default\u if\u not\u set($\u GET['foo'])
它将实际创建一个
$\u GET['foo']
值。现在foreach在
$\u GET
上的循环将在这个意外的键上循环。
<?php
isset($baz) && test($baz);
test(isset($baz) ? $baz : ($baz = 'default'));
class Test {
    public function test1($var){
        echo $var;
    }
}

$test_ob = new Test();

$test_ob->test1( (isset($var)?$var:'not set') ); // echo not set

$var = "Hello world";
$test_ob->test1($var); // echo Hello world