2
return array(
    'client_id' => $client[0]->getId(),
    'client secret' =>  $client[0]->getSecret(),
    'redirect_uri' =>  ($client[0]->GetClientEndpoints())[0]->getRedirectUri(),
    'name' =>  $client[0]->getName());

具体的にはスニペット:

($client[0]->GetClientEndpoints())[0]->getRedirectUri()

これをしなくてもこれを行う方法はありますか?

 $endpoints = $client[0]->GetClientEndpoints();
 return array(
    'client_id' => $client[0]->getId(),
    'client secret' =>  $client[0]->getSecret(),
    'redirect_uri' =>  $endpoints[0]->getRedirectUri(),
    'name' =>  $client[0]->getName());
4

2 に答える 2

2

$client[0]->GetClientEndpoints()[0]->getRedirectUri()PHP5.4で動作するはずです。まだ5.4を持っていませんか?更新する必要があります。

しかし、それは非常に醜く、より読みやすくはありません。私は...するだろう:

$client = $client[0];
$endpoint = $client->GetClientEndpoints()[0];
return array(....
于 2013-03-25T20:11:50.470 に答える
1

うまくいくかどうかはわかりませんが、試してみることができます

http://www.php.net/manual/en/function.array-shift.php

return array(
    'client_id' => $client[0]->getId(),
    'client secret' =>  $client[0]->getSecret(),
    'redirect_uri' =>  array_shift($client[0]->GetClientEndpoints())->getRedirectUri(),
    'name' =>  $client[0]->getName());

少なくともこのスニペットはエラーなしで機能します。

<?php
error_reporting(E_ALL);

class class1{
    public function getRedirectUri()
    {
        return 'something';
    }
}

$arr1 = array(new class1(), new class1());

$arr = array(
    'client_id' => 'something',
    'client secret' =>  'something',
    'redirect_uri' =>  array_shift($arr1)->getRedirectUri(),
    'name' =>  'something');

更新( Rudieに感謝)

結局のところ、上記のサンプルは作成者の場合と同じではないため、より良い例(E_STRICTをスローするため、私の答えは考慮されるべきではありません)は次のとおりです。

<?php
error_reporting(E_ALL);

class class2{
    public function getRedirectUri()
    {
        return 'something';
    }
}

class class1 {
    public function getArrays() {
        return array(new class2(), new class2());
    }
}
$var = new class1 ();

$arr = array(
    'client_id' => 'something',
    'client secret' =>  'something',
    'redirect_uri' =>  array_shift($var->getArrays())->getRedirectUri(),
    'name' =>  'something');
于 2013-03-25T20:13:32.630 に答える