あなたの質問は少し曖昧ですが、あなたが話していることはFluent Interfaceだと思います。それらの背後にあるアイデアは、各メソッドにインスタンスを返すことによって、単一のインスタンスに対して複数のメソッドを呼び出すことができるようにすることです。これは、一般的にクラスのセッターのために使用され、あなたのようなコードを書くことができます:あなたはこの良くも悪くもは好みの問題です見つけるかどうか
$foo = new Foo();
$foo
->setThisThing()
->setAnotherThing()
->setThingToParameter($parameter)
...;
ではなく
$foo->setThisThing();
$foo->setAnotherThing();
...
、but Fluent interfaces do come some drawbacks
あなたの場合、ショップクラスは次のようになります:
<?php
class shop
{
private $couponText;
public function cart($function) {
// Do something with $function here
return $this;
}
public function coupon($couponText) {
$this->couponText = $couponText;
return $this;
}
public function getCoupon() {
return $this->couponText;
}
}
キーパーツreturn $this;
行です。これは、例のように、後続のメソッド呼び出しを互いに連鎖させることを可能にします。
例としてhttps://eval.in/851708を参照してください。
[クラスメソッド内で関数を呼び出すのは可能ですか?](https://stackoverflow.com/questions/1725165/calling-a-function-within-a-class-method) –
いいえ私はいません。関数の最後にtihs - > coupon( 'hello world!')がある場合、$ shop-> cart(function($ data){ // $ data }を介してデータを取得する方法を理解できません。 – PizzaSpam
あなたのコードは意味をなさないので、あなたがリンクしている質問の例とほとんど似ていません。あなたが意図した効果は全く分かりませんが、 " - >クーポン"と " - > getCoupon"という非常に基本的なレベルです。名前は少なくとも一致しなければならない、確かに?また、「ショップ」クラスはどのように見えますか? 「カート」、「クーポン」、「getCoupon」というメソッドがあるかどうか、そしてそれらが何をしているのか、そしてそれらが何を返すのかを知る必要があります。 – ADyson