我在php类中有这个:
$this->ID = $user_id;
public function getUserFiles($id = $this->ID) { } // error here
但显然我不允许以这种方式使用财产。那么我该如何宣布方法参数的默认值应该是ID属性的值?
必须有一个比这更好的方法:
$this->ID = $user_id;
public function getUserFiles($id = '') {
$id = ($id == '') ? $this->ID : $id;
}
答案 0 :(得分:10)
在这种情况下我通常使用null:
public function getUserFiles($id = null)
{
if ($id === null) {
$id = $this->id;
}
// ...
}
答案 1 :(得分:0)
假设(出于某种原因和设计),在方法中,在参数默认情况下,我们只想使用一个属性,而不是像Alex那样做:
public function methodABC($param = NULL) {
if ( $param === NULL ) {
$param = $this->attributeUVW;
}
...$param...
}
...这是要使用的完整代码(我的2美分):
<?php
class MyClass
{
public $attributeUVW;
function __construct() {
$this->attributeUVW = 1234;
}
public function methodABC($param = NULL) {
if ( $param === NULL ) {
$param = $this->attributeUVW;
}
echo '<p>"'.$param.'"</p>'."\n";
}
}
echo '<html>'."\n";
echo '<body>'."\n";
echo '<h1>class X</h1>'."\n";
$x = new MyClass;
$x->methodABC();
$x->methodABC(5678);
echo '</body>'."\n";
echo '</html>'."\n";
?>
...打印:
<html>
<body>
<h1>class X</h1>
<p>"1234"</p>
<p>"5678"</p>
</body>
</html>