0

このコードの目的は、構成データを分離することです。$configexample.php で配列を直接使用すると、すべて正常に動作します。ただし、以下のコードでは、異なる値が得られます。

facebook.php

 <?php
    class Facebook extends AppController{
        public  function __construct() {
            $config = array();
            $config['appId'] = '400xxx6'; //YOUR_APP_ID
            $config['secret'] = 'f70f01e76xxx7e'; //YOUR_APP_SECRET
            $config['cookie'] = false;
            return $config;
        }
    }
    ?>

example.php

<?php 
App::import('Config', 'Facebook');

$a = new Facebook();
var_dump($a);
?>

なぜ$var_dump($a);このようなものを返すのですか?

object(Facebook)[50]
  protected 'appId' => null
  protected 'apiSecret' => null
  protected 'user' => null
  protected 'signedRequest' => null
  protected 'state' => string 'e4ac55f1xxx87a88' (length=32)
  protected 'accessToken' => null
  protected 'fileUploadSupport' => boolean false

私が欲しいのは元の配列です。間違いは何ですか?

array
  'appId' => string '400xxx6' (length=15)
  'secret' => string 'f70f01e76xxx7e' (length=32)
  'cookie' => boolean false
4

1 に答える 1

2

あなたがそうするとき、私はかなり確信しています:

$a = new Facebook();

インスタンス化されるクラスは、作成したクラスではありません。Facebook PHP SDKを使用していると思いますが、そのクラス名もFacebookです。クラス名が競合しています。

クラス名を他のようなものに変更FacebookConfigすれば大丈夫です。

また、次のように、配列をクラスインスタンスに格納する方が理にかなっています。

class FacebookConfig extends AppController{

    public $config = array();

    public function __construct() {
        $this->config = array();
        $this->config['appId'] = '400xxx6'; //YOUR_APP_ID
        $this->config['secret'] = 'f70f01e76xxx7e'; //YOUR_APP_SECRET
        $this->config['cookie'] = false;
    }
}
于 2012-08-09T18:25:05.473 に答える