2014-10-07 50 views
0

您好我怎样才能使一个类的对象有这样的可能性:PHP续功能

<?php 
    $someClass = new SomeClass; 
    $sum = $someClass->addValues(1,22)->sumValues(); 
    echo $sum; // to give me 23 
?> 

对不起,问!这就是我的意思,我刚刚得到了这个想法,所以 - 抱歉。

<?php 
    class SomeClass { 
     private $values = array(); 
     public function addValue(){ 
      $this->values = func_get_args(); 
      return $this; 
     } 

     public function getSum(){ 
      $sum = array_sum($this->values); 
      return $sum; 
     } 

    } 

    $SomeClass = new SomeClass; 
    $result = $SomeClass->addValue(1,22,44,51)->getSum(); 
    echo $result; 
?> 

而对于所有那些谁回答的 - 对不起,这只是一个例子,所以我问怎么办呢帮我并不是说我是矫枉过正与否。我需要这样做。不像我会使用相同的代码。

+4

如果你更关心学习如何编写类,而不是仅仅将这些数字放在一起,你可以检查出[文件](http://php.net/manual/en/language启动.oop5.php)和PHP中的类和面向对象编程。否则,如其他人所提到的那样,以另一种方式实现这一点会更好。 – JCOC611 2014-10-07 03:41:31

+0

如果和值增加值,那么addValues的含义是什么?大声笑 – 2014-10-07 03:41:34

+0

你为什么要用这个课程呢?你可以这样做:'array_sum([1,22]);'。这是使用一个类的矫枉过正。 – 2014-10-07 03:42:36

回答

0

如果你只是想总结的数字,然后它可以很容易这样做的列表:如果你正在努力学习如何使用类/对象,那么你可以实现这样的

$sum = array_sum(array(1, 22)); 

class SomeClass { 
    protected $values = array(); 
    public function addValues() { 
     $this->values = array_merge($this->values, func_get_args()); 
     return $this; 
    } 
    public function sum() { 
     return array_sum($this->values); 
    } 
} 
$someClass = new SomeClass; 
echo $someClass->addValues(1, 22)->sum(); // 23 
+0

Omg远离我想要的东西。即使它不是..我不是“试图学习”如何使用类大声笑xD我已经知道我必须知道的一切关于PHP [毕竟我在PHP编程8年; D]。所以下次请仔细阅读用户想要输入任何答案之前是什么意思。 – Mevkok 2014-10-07 04:24:15

+0

是啊,现在当你编辑它的确定;]但我很久以前;] – Mevkok 2014-10-09 18:05:41

1

您发现该术语是“方法链”,见wikipedia

这个环节基本上你需要写一个返回的方法

<?php 
    class Foo{ 
     protected $message; 
     function a($foo){ 
      $this->message .= $foo; 
      return $this; 
     } 
     function b($foo){ 
      $this->message .= $foo; 
      return $this; 
     } 
     function print_message(){ 
      echo $this->message; 
     } 
    } 

    $foo = new Foo() 
    $foo->a("Hello")->b("World"); 
    $foo->print_message(); 
    //output: 'HelloWorld' 

?> 
+0

是的,我对它的愚蠢问题得到它。我已经发布了它,并且在我的网站上做了完全相同的事情:D在我发布后大约2分钟:X – Mevkok 2014-10-07 04:26:09