从一个类到另一个类获取值-PHP

时间:2019-02-15 09:26:18

标签: php oop

我在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类中的商人的值。任何帮助都是非常可取的。

2 个答案:

答案 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) ;
        }

    }

?>