Platformsh\Cli\Api::getProjects PHP Method

getProjects() public method

Return the user's projects.
public getProjects ( boolean | null $refresh = null ) : Platformsh\Client\Model\Project[]
$refresh boolean | null Whether to refresh the list of projects.
return Platformsh\Client\Model\Project[] The user's projects, keyed by project ID.
    public function getProjects($refresh = null)
    {
        $cacheKey = sprintf('%s:projects', self::$sessionId);
        /** @var Project[] $projects */
        $projects = [];
        $cached = self::$cache->fetch($cacheKey);
        if ($refresh === false && !$cached) {
            return [];
        } elseif ($refresh || !$cached) {
            foreach ($this->getClient()->getProjects() as $project) {
                $projects[$project->id] = $project;
            }
            $cachedProjects = [];
            foreach ($projects as $id => $project) {
                $cachedProjects[$id] = $project->getData();
                $cachedProjects[$id]['_endpoint'] = $project->getUri(true);
            }
            self::$cache->save($cacheKey, $cachedProjects, $this->config->get('api.projects_ttl'));
        } else {
            $guzzleClient = $this->getClient()->getConnector()->getClient();
            foreach ((array) $cached as $id => $data) {
                $projects[$id] = new Project($data, $data['_endpoint'], $guzzleClient);
            }
        }
        return $projects;
    }

Usage Example

 /**
  * {@inheritdoc}
  */
 protected function setUp()
 {
     $this->api = new Api();
     $this->projects = $this->api->isLoggedIn() ? $this->api->getProjects(false) : [];
     $this->welcomeCommand = new WelcomeCommand('welcome');
     $this->welcomeCommand->setApplication(new Application());
 }