【问题标题】:Facebook PHP SDK 5: Extending classesFacebook PHP SDK 5:扩展类
【发布时间】:2015-09-29 20:44:26
【问题描述】:

我是类的新手(更糟糕的是命名空间等),所以我知道必须创建主要类所在的 FacebookMyClass.php 类(autoload.php、Facebook.php、FacebookApp.php 等),然后我的原型:

<?php
// I guess
namespace Facebook;

// Do I must 'use' or extending other class(es)?
// use ;

class FacebookMyClass extends Facebook {

   // Do I have to "re-declare" parent's vars?
  private $my_private_var;
  public $my_public_var;
  private $access_token;

  // The main thing, I think, is how class is constructed

  // public function __construct(array $config = []) {
  public function __construct($id, $secret) {
    // This will work? Need parameters?
      parent::__construct();
  }

  public function accessParentProtectedVars($idfanpage) {
    // How can I call/link to Facebook object/request/response?
    $object = $this->get('/' . $idfanpage . '/albums?fields=name,id', $this->access_token);
  }

  private function getTokens($params = []) {
    // code...
    $this->access_token = '...';
  }

}
?>

问题是:如何扩展 Facebook\Facebook 类?

【问题讨论】:

  • 为什么不使用 FacebookResponses getBody() 方法?它返回 body 属性。 $body = $datos-&gt;getBody();
  • @lordthorzonus 你成就了我的一周!虽然它没有回答我关于扩展类的问题,但它为我解决了一个大问题,但 Facebook 文档却没有(我希望可以像 CodeIgniter 用户指南那样)。
  • 希望下面的答案能够为您提供所需的解释。不过 lordthorzonus 是正确的,如果可能,最好使用类的现有方法,并且仅在需要超出可用范围的自定义时进行扩展或实现。
  • 我认为这个问题是错误的。您需要获取 Facebook 响应的正文。 @lordthorzonus 告诉你如何获得它。现在类继承完全是另一回事。 Sean 提供的示例很好,但与 Facebook 无关。现在,只是为了添加对您有用的其他内容,新文档非常精确且易于阅读:developers.facebook.com/docs/php/gettingstarted/5.0.0。你应该尝试只阅读那里的文档,因为它们会定期更新,其他教程可能已经过时了。
  • 当我说“他们定期更新”时,我指的是 SDK。如果您在 google 上找到一些旧教程,您可能找不到您期望的代码。现在,execute 方法应该在 FacebookRequest 类中。但是,我刚刚检查过,该方法仅存在于 v4.0 上!! github.com/facebook/facebook-php-sdk-v4/blob/4.0-dev/src/…。现在官方文档也已经过时了!!

标签: php facebook class facebook-php-sdk


【解决方案1】:

命名空间表示一个类或一组类在给定项目中的位置。

扩展一个类意味着在你的类范围内继承(获得访问权)它的方法。

举个例子,请记住,您可能需要对此进行调整:

<?php
// Imports the class Facebook from the Facebook namespace eg /Facebook/Facebook.php
use Facebook\Facebook;

class MyFacebookExtension extends Facebook {

    function __construct(array $config = []) {
        // The base class requires an array parameter, so we accept that and forward it, and then call the parent constructor
        parent::__construct($config);
    }

    // .. whatever methods you want to add .. You can also now access facebook() methods like $this->getclient() etc within this class.
}

【讨论】:

    猜你喜欢
    • 2013-07-13
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 2012-07-31
    • 2013-02-06
    • 2017-01-09
    相关资源
    最近更新 更多