我在php中有两个类。 A类和B类。在A类中,我有多个功能,我想在B类中调用A类的功能,并获取B类中的值。这是这些类:
A级:
<?php
require_once './vendor/autoload.php';
use GuzzleHttp\Client;
class A {
/**
* Undocumented variable
*
* @var Client
*/
protected $client;
public function __construct()
{
$apikey = '000000000000000';
$this->client = new Client([
'base_uri'=>'https://api.omnivore.io/',
'headers' => [
'Api-Key'=>$apikey,
'Content-Type' => 'application/json',
]
]);
}
public function getMerchant(){
$response = $this->client->request('GET','locations');
$output = $response->getBody()->getContents();
$merchants = json_decode($output, true);
}
public function getMenu(){
$response = $this->client->request('GET','locations/iE7EBzbT/menu');
$output = $response->getBody()->getContents();
$menu = json_decode($output, true);
}
}
B级:
<?php
class B
{
protected $client;
public function index() {
$apiClient = new A();
$app = $apiClient->getMerchant();
print_r($app) ;
}
}
?>
所以,问题是我如何才能在索引函数中获得B类中的商人的值。任何帮助都是非常可取的。
答案 0 :(得分:2)
return
中没有getMerchant()
。那么,$app = $apiClient->getMerchant();
是没有意义的。
您可能想做
A类
public function getMerchant(){
$response = $this->client->request('GET','locations');
$output = $response->getBody()->getContents();
$merchants = json_decode($output, true);
return $merchants; // <---- this
}
答案 1 :(得分:0)
您不能直接从一个类到另一个类使用函数。 您必须使用继承概念。
这一原理将影响许多类和对象之间相互联系的方式。例如,当您扩展类时,子类将从父类继承所有公共和受保护的方法。
请参考链接:-https://php5-tutorial.com/classes/inheritance/
B级:
<?php
class B extends A
{
protected $client;
public function index() {
$apiClient = new A();
$app = $apiClient->getMerchant();
print_r($app) ;
}
}
?>