it-swarm.dev

استدعاء وظيفة أخرى في وحدة تحكم نفسه؟

أنا أستخدم 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 ()

أفترض ذلك لأنني أشير إلى الوظيفة بطريقة خاطئة ، لكن لا يمكنني العثور على أي تفسيرات لكيفية القيام بذلك.

51
Himmators

محاولة:

return $this->sendRequest($uri);

نظرًا لأن PHP ليست لغة كائن Orieneted خالصة ، فهي تفسر sendRequest() كمحاولة لاستدعاء دالة محددة عالميًا (مثل nl2br() على سبيل المثال) ، ولكن نظرًا لأن وظيفتك جزء من فئة ("InstagramController" ) ، تحتاج إلى استخدام $this لتوجيه المترجم الفوري في الاتجاه الصحيح.

115
haim770

نعم فعلا. المشكلة في تدوين خاطئ. استعمال:

$this->sendRequest($uri)

في حين أن. أو

self::staticMethod()

لطرق ثابتة. اقرأ أيضًا هذا للحصول على فكرة عن OOP - http://www.php.net/manual/ar/language.oop5.basic.php

6
QArea