2012-09-28 30 views
0

我折腾了在类中的方法中使用变量的两种方法。有些方法最多可以使用20个变量。该实例为满足OOP预设电台结构的最好的,为什么PHP面向对象的函数 - 传递变量

**Example 1:** 

$sampleclass->variable1 = 100; 
$sampleclass->variable2 = 200; 
$sampleclass->variable3 = 300; 

$row = $sampleclass->Method(); 

-------------------------- 

class sampleclass { 

    public function Method(){ 
    if ($this->variable1) { 
     // do something 
    } 
    if ($this->variable2) { 
     // do something 
    } 
    if ($this->variable3) { 
     // do something 
    } 

    } 
} 



============================================ 

**Example 2:** 

$row = $sampleclass->Method(100,200.300); 


class sampleclass { 

    public function Method($variable1, $variable2, $variable3){ 

    } 
} 

回答

0

TL; DR:都没有。


如果您有一个基于3个不同条件3级不同的执行,那么应该为他们每个人不同的方法。由此产生的API应该是类似的东西:

$instance->someMethod(100); 
$instance->differntMethod(200); 
$instance->thirdMethod(300); 
$result = $instance->produceResult(); 

该对象应该保持状态。你有3种不同的方法,改变了这种状态。还有一种返回数据的方法。否需要if声明。

要了解更多的有关问题,我建议你手表thisthis讲座

+0

我喜欢它...在类中声明变量private并使用不同的方法设置它们,所以数据不会转义到下一个使用的方法 – danchar

0

也许你应该考虑为每一个方法变量?那就是如果你需要对所有三个值做不同的事情,你可以封装每个变量赋值。

例如:

class sampleclass 
{ 

    public function doSomethingWithA($value) 
    { 
    $this->valueA = $value * 2; 
    } 

    public function doSomethingWithB($value) 
    { 
    $this->valueB = $value * 3; 
    } 

    public function doSomethingWithC($value) 
    { 
    $this->valueC = $value * 2; 
    } 

} 
0

如果你需要存储在对象这些变量的一些愿望,为他们设立(私有)数据成员。您还应该定义“getters”或mutator函数,或者至少是一个构造函数,它为这些数据成员提供所需的值。这些函数将阻止直接设置数据,从而使您有机会强制执行有关数据值的规则,并防止将它们更改为不适当或不一致的值。