我心中有一个问题。 我可以通过类方法的参数将变量传递给类:
<?php
$val = 'My name';
include('myClass.php');
newClass = new myClass();
newClass->test($val);
?>
<?php
class myClass{
private $myVal;
public function test($val){
$this->myVal = $val;
$this->showName();
}
private function showName(){
echo $this-> $myVal;
}
}
?>
或者我可以将变量作为类属性发送。
<?php
include('myClass.php');
newClass = new myClass();
newClass->$myVal='My name';
newClass->test();
?>
<?php
class myClass{
public $myVal;
public function test(){
$this->showName();
}
private function showName(){
echo $this-> $myVal;
}
}
?>
虽然在这两种情况下,输出都是相同的,这是一个非常简单的例子,但对于大块代码,哪一个在内存使用,cpu使用,I / O使用等方面更好。大块代码意味着假设一个大的javascript代码作为由heredoc编写的参数或作为该类的公共属性传递。
答案 0 :(得分:0)
最好的方法是使用私有/受保护的属性以及getter和setter。如果要使用类的变量,则将其作为构造函数参数传递
class MyClass
{
private $myVal;
public function __construct($myVal)
{
$this->setMyVal($myVal);
}
public function getMyVal()
{
return $this->myVal;
}
public function setMyVal($myVal)
{
$this->myVal = $myVal;
return $this;
}
}
用法:
$obj = new MyClass(5);
echo $obj->getMyVal();
当使用getter / setter时你可以更多地控制变量被设置/得到你可以为setter添加验证,截断等等,例如格式化getter或添加一些条件(例如,你可能希望将DateTime作为DateTime根据locale格式化的字符串,但是你想要设置DateTime对象);