Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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 我想知道什么时候应该通过类&x27;s构造参数_Php_Class_Oop_Parameters_Getter Setter - Fatal编程技术网

Php 我想知道什么时候应该通过类&x27;s构造参数

Php 我想知道什么时候应该通过类&x27;s构造参数,php,class,oop,parameters,getter-setter,Php,Class,Oop,Parameters,Getter Setter,我想知道,什么时候应该在类中使用getter setter方法,什么时候应该使用类的construct参数 我将用PHP解释它。例如,我在下面编写了一个类: class-foo{ public$a;//必需参数 public$b;//可选参数 公共函数构造(){ //一些代码 } 公共功能setA($a){ $this->a=$a; } 公共函数getA(){ 返回$this->a; } 公共职能挫折(a美元){ $this->a=$a; } 公共函数getB(){ 返回$this->a; }

我想知道,什么时候应该在类中使用getter setter方法,什么时候应该使用类的construct参数

我将用PHP解释它。例如,我在下面编写了一个类:

class-foo{
public$a;//必需参数
public$b;//可选参数
公共函数构造(){
//一些代码
}
公共功能setA($a){
$this->a=$a;
}
公共函数getA(){
返回$this->a;
}
公共职能挫折(a美元){
$this->a=$a;
}
公共函数getB(){
返回$this->a;
}
公共功能条(){
//使用getter-setter方法处理类属性。
}
}
$foo=新foo();
$foo->setA('something');
$foo->setB('something2');
$foo->bar();
我完全可以用这种方式写一个类。但是,我可以使用构造参数以另一种方式编写类。示例如下:

class-foo{
public$a;//必需参数
public$b;//可选参数
公共功能构造($a,$b){
$this->setA($a);
$this->setB$b;
//一些代码
}
受保护函数集($a){
$this->a=$a;
}
公共函数getA(){
返回$this->a;
}
受保护功能设置($a){
$this->a=$a;
}
公共函数getB(){
返回$this->a;
}
公共功能条(){
//使用getter-setter方法处理类属性。
}
}
$foo=新foo('something','something2');
$foo->bar();
我认为,若我有一个必需的参数,我想在构造方法上使用它。但是,如果我有可选参数,我希望setter类使用它。例如:

class-foo{
public$a;//必需参数
public$b;//可选参数
公共功能结构($a){
$this->setA($a);
//一些代码
}
受保护函数集($a){
$this->a=$a;
}
公共函数getA(){
返回$this->a;
}
公共职能挫折(a美元){
$this->a=$a;
}
公共函数getB(){
返回$this->a;
}
公共功能条(){
//使用getter-setter方法处理类属性。
}
}
$foo=新foo(“某物”);
//如果我将使用可选参数,我可以通过setter方法设置它
$foo->setB('something2');
$foo->bar();
嗯,我想学习stg关于代码编写方法的知识。哪一个受欢迎?哪一个是有用的,哪一个是正确的?当我应该使用其中一个时? 非常感谢。

编写方法和构造函数的“正确”方式取决于实例化时需要什么

在构造函数中必须有所有必需的参数才能让类正常工作,正如您所说的非可选参数


您还可以在构造函数中插入可选参数以简化代码,如果在此阶段您已经知道这些值,则以后无需调用其setter。

可能重复,无需在类
上使用setter/getter,因为setter和getter主要用于将类属性封装到外部,以避免直接访问类属性。谢谢@StoYan,您可能是对的。我们非常相似。@biyro2你看到我的答案了吗?是的,我现在在看,谢谢