2013-07-25 6 views
36

私はLaravelを使用しています。ここで私が働いているクラスです。同じコントローラで他の機能を呼び出していますか?

<?php 

class InstagramController extends BaseController { 

/* 
|-------------------------------------------------------------------------- 
| Default Home Controller 
|-------------------------------------------------------------------------- 
| 
| You may wish to use controllers instead of, or in addition to, Closure 
| based routes. That's great! Here is an example controller method to 
| get you started. To route to this controller, just add the route: 
| 
| Route::get('/', '[email protected]'); 
| 
*/ 

public function read($q) 
{ 
    $client_id = 'ea7bee895ef34ed08eacad639f515897'; 

    $uri = 'https://api.instagram.com/v1/tags/'.$q.'/media/recent?client_id='.$client_id; 
    return sendRequest($uri); 
} 

public function sendRequest($uri){ 
    $curl = curl_init($uri); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); 
    $response = curl_exec($curl); 
    curl_close($curl); 
    return $response; 
} 

} 

ライン:

return sendRequest($uri); 

はエラーをレンダリングします:未定義の関数のsendRequestに コール()

は、私は私からだと仮定しています間違った方法で関数を参照していますが、どうやって説明するのか分かりません。

+0

あなたはおそらくsendRequestを保護したいと思っています。 –

答えて

77

試してみてください。

return $this->sendRequest($uri); 

PHPは、純粋なオブジェクトOrieneted言語ではないので、それが(ちょうど例えばnl2br()のように)グローバルに定義された関数を呼び出すための試みとしてsendRequest()解釈しますが、あなたの関数がその一部であるため、 (InstagramController)の場合は、$thisを使用してインタプリタを正しい方向に向ける必要があります。

+0

@KristofferNolgren OOPについてもっと読むことをお勧めします。 $ thisは、現在のInstagramControllerオブジェクトを参照します。このオブジェクトには、sendRequest()メソッドがあります。 –

+0

Becous 'sendRequest()'はクラス内の関数です。これはPHPの基本的な使い方です。 'class'についてもっと読む。 –

+7

PHPは 'sendRequest'を(' nl2br() 'と同様に)グローバルに定義された関数を呼び出す試みとして解釈しますが、' class'( 'InstagramController')の内部で 'function'を定義しているので、インタプリタを正しい方向に向けるために '$ this'を使います。 – haim770

2

はい。問題は間違った表記法にあります。使用:

$this->sendRequest($uri) 

代わりに。または

self::staticMethod() 

静的メソッドの場合。また、OOPのアイデアを得るためにこれを読む - http://www.php.net/manual/en/language.oop5.basic.php

関連する問題