小编Sud*_*dhi的帖子

php函数如何设置默认值为对象?

函数(实际上是另一个类的构造函数)需要一个class tempas参数的对象.所以我定义interface itemp并包含itemp $obj为函数参数.这很好,我必须将class temp对象传递给我的函数.但是现在我想为这个itemp $obj参数设置默认值.怎么做到这一点?还是不可能?
我将把测试代码弄清楚:

interface itemp { public function get(); }

class temp implements itemp
{
    private $_var;
    public function __construct($var = NULL) { $this->_var = $var; }
    public function get() { return $this->_var ; }
}
$defaultTempObj = new temp('Default');

function func1(itemp $obj)
{
    print "Got : " . $obj->get() . " as argument.\n";
}

function func2(itemp $obj = $defaultTempObj) //error : unexpected T_VARIABLE
{
    print …
Run Code Online (Sandbox Code Playgroud)

php object default-arguments

16
推荐指数
1
解决办法
1万
查看次数

"&&"和"和"之间的区别:运算符优先级和短路

我正想通过php.net的运算符优先级部分,碰上了这个例子,其称

$a = 1;
$b = null;
$c = isset($a) && isset($b);
$d = ( isset($a) and isset($b) );
$e = isset($a) and isset($b);
var_dump($a, $b, $c, $d, $e);
//Result:
int(1)
NULL
bool(false)
bool(false) <== I get this
bool(true)  <== I do not get this
Run Code Online (Sandbox Code Playgroud)

我在代码中使用了大量的调试和详细的print(_r)语句来跟踪我在代码中的位置.所以我在代码之间使用$debug and print_r($dataArray)$verbose and print "Updating dataArray\n"作为单独的语句,允许我控制这些print(_r)语句.这来自我以前写过很多的BASH经验[[ $condition ]] && { #Do if true } || { #Do if false }.在BASH,我知道它们被短路并用这个事实来编写很多简单的一个衬里.
现在我观察到这种(写作$verbose and print)的这种做法正在慢慢渗入我的if …

php operator-precedence short-circuiting

6
推荐指数
1
解决办法
2496
查看次数

绝对参数在DateTime :: diff(DateTime [,bool absolute = false])中做了什么

这是示例代码

$c = new DateTime();
$o = clone $c;
$o->modify('-60 days');
$diff = $c->diff($o);
$diff2 = $c->diff($o, TRUE);
var_dump($diff, $diff2);
Run Code Online (Sandbox Code Playgroud)

哪个输出

object(DateInterval)#3 (8) {
  ["y"]=> int(0), ["m"]=> int(1), ["d"]=> int(29), ["h"]=> int(0), ["i"]=> int(0),
  ["s"]=> int(0), ["invert"]=> int(1), ["days"]=> int(60)
}
object(DateInterval)#4 (8) {
  ["y"]=> int(0), ["m"]=> int(1), ["d"]=> int(29), ["h"]=> int(0), ["i"]=> int(0),
  ["s"]=> int(0), ["invert"]=> int(0), ["days"]=> int(60)
}
Run Code Online (Sandbox Code Playgroud)

正如我所看到的,只有"反转"属性发生了变化.这是什么意思?

php datetime datediff

4
推荐指数
1
解决办法
3261
查看次数

php就像功能一样

我对bash shell上的sed非常熟悉,所以我这样做

cat $myfile | egrep $pattern | sed -e 's/$pattern/$replace/g'
Run Code Online (Sandbox Code Playgroud)

很多.很多次,我发现我需要在PHP中进行类似的"字符串解析".

所以我的问题很简单,sed -e 's/$pattern/$replace/g'PHP中的等价物是什么?

我知道preg_match,preg_replace,但我没有使用它们/根本不熟悉它们.我非常感谢PHP中的示例代码.(将a转换$var = '_myString'$newVar = 'getMyString')

php regex sed equivalent

2
推荐指数
1
解决办法
2万
查看次数