函数(实际上是另一个类的构造函数)需要一个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.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 …
这是示例代码
$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)
正如我所看到的,只有"反转"属性发生了变化.这是什么意思?
我对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')