2014-10-07 49 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