2017-02-23 10 views
1
で別の関数から関数

は、私は次のような構造を持つPHPコードを実装するために苦労しています:コールPHP

public function hookActionValidateOrder($params) 
{ 
    $invoice = new Address((int)$order->id_address_invoice); 
    $myStreet = $invoice->address1; 
    $myCity = $invoice->city; 
    $myPostcode = $invoice->postcode; 

    // ... SOME IRRELEVANT CODE HERE ... 

    $Tid = send($myStreet, $myCity, $myPostcode); /* Calling function send($a, $b, $c) */ 
} 

public function send($a, $b, $c) /* function send($a, $b, $c) */ 
{ 
    // ... CODE TO DO SOMETHING USING VARIABLES $a, $b, $c ... 
} 

問題は、このコードdoesn'tが動作するように見える、です。 コードバリデーターに入れると、"関数 'send()'が存在しません"。私に教えてくださいなぜそれがそうであり、それをどうやって修正するのですか?

+0

どのフレームワークを使用していますか? –

+0

はクラス内にカプセル化されたこれら2つの関数ですか? –

答えて

1

の原因となります。

0

はこれを試してみてください。

class test 
{ 
public function hookActionValidateOrder($params) 
    { 
     $invoice = new Address((int)$order->id_address_invoice); 
     $myStreet = $invoice->address1; 
     $myCity = $invoice->city; 
     $myPostcode = $invoice->postcode; 

     // ... SOME IRRELEVANT CODE HERE ... 

     $Tid = send($myStreet, $myCity, $myPostcode); /* Calling function send($a, $b, $c) */ 
    } 
    } 
class test1 extends test 
{ 
    public function send($a, $b, $c) /* function send($a, $b, $c) */ 
    { 
     // ... CODE TO DO SOMETHING USING VARIABLES $a, $b, $c ... 
    } 
} 

あなたは別のクラスに1つのクラスを拡張してこの問題を解決することができます。

+0

それは拡張ではありません –

+0

申し訳ありません私の間違い..私はちょうど更新しました。あなたの提案に感謝:) – Gulshan

0

あなたはそれを含めず二次ページに元のページ
から関数または任意のコードを使用しようとする場合、通常、それはあなたにこのエラー

(.... 'という文字列名を表示、機能名、.......など「)


存在しない溶液は、にあるそれ最初に二ページ内および使用が含まれます。

include("yourpage.php"); 

ない場合はその後、
"@Gulshan" は、約コメント参照クラスを "拡張"。 それはあなたが使用クロージャよりも、あなたが正常な機能を使用している場合、機能

class Test { 

    public function say($a) { 
     return $a ; 

    } 

    public function tell() { 
     $c = "Hello World" ; 
     $a = $this->say($c) ; 
     return $a ; 
    } 
} 

$b= new Test() ;  
echo $b->tell() ; 

を呼び出すための

function tell(){ 
    $a = "Hello" ; 
    return function($b) use ($a){ 
     retrun $a." ".$b ; 
    } ; 
} 

$s = tell() ; 
echo $s("World") 

$thisを使用することができるよりもクラスを使用しているあなたには、同じ問題