Zend Framework 1上的Facebook PHP SDK
我花了很多时间试图将Facebook PHP SDK(v4)集成到我在ZF1上的站点,但没有结果,我也尝试了很多在互联网上找到的东西,所以这是我最后的资源(我不喜欢打扰任何人)。在我对ZF1(我正在学习)理解不足的情况下,我将Facebook PHP SDK(v4)中的'src'文件夹复制到library/zend/文件夹中,结果是,现在在FacebookSession.PHP文件中我更改了这一点Zend Framework 1上的Facebook PHP SDK,php,facebook,facebook-graph-api,zend-framework,sdk,Php,Facebook,Facebook Graph Api,Zend Framework,Sdk,我花了很多时间试图将Facebook PHP SDK(v4)集成到我在ZF1上的站点,但没有结果,我也尝试了很多在互联网上找到的东西,所以这是我最后的资源(我不喜欢打扰任何人)。在我对ZF1(我正在学习)理解不足的情况下,我将Facebook PHP SDK(v4)中的'src'文件夹复制到library/zend/文件夹中,结果是,现在在FacebookSession.PHP文件中我更改了这一点 class FacebookSession{ 为此: class Zend_Facebook_F
class FacebookSession{
为此:
class Zend_Facebook_Facebook{
在我的控制器/索引中,我这样调用
Zend_Facebook_Facebook::setDefaultApplication('YOUR_APP_ID', 'YOUR_APP_SECRET');
这就是我得到的:
警告:include_once(Zend/Facebook/Facebook.php):无法打开流:第141行的/Applications/MAMP/htdocs/www/testfb/library/Zend/Loader.php中没有此类文件或目录
警告:include_once():打开“Zend/Facebook/Facebook.php”失败
包括
(包括_path='/Applications/MAMP/htdocs/www/testfb/application/。/library:/Applications/MAMP/htdocs/www/testfb/library:.:/Applications/MAMP/bin/php/php5.5.10/lib/php')
在上的/Applications/MAMP/htdocs/www/testfb/library/Zend/Loader.php中
第141行
致命错误:在中找不到类“Zend_Facebook_Facebook”
/Applications/MAMP/htdocs/www/testfb/application/controllers/IndexController.php
第15行
我不知道我该怎么办!我尝试了很多东西,但都不管用!我找了很多指南,只使用了Facebook SDK的previos版本(只有3个文件,Facebook.php、base_Facebook.php和一个cert)
有什么建议吗?有人正在运行此sdk吗?怎么做
非常感谢您的来信!(和sry关于我的英语)打开你的班级档案
Zend_Facebook\u Facebook
,在下面一行留言,然后尝试:
//namespace Facebook;
还要记住,如果您将
FacebookSession
的类名编辑为Zend\u Facebook\u Facebook
,那么文件名也应该是Facebook.php
,而不是FacebookSession.php
,因此我遇到了相同的问题,但原因不同。我将指出这是最后一步
autoload.php
,您可以将其添加到引导程序中,如下所示:
protected function _initAutoload ()
{
$this->getApplication()
->getAutoloader()
->pushAutoloader(array('Doctrine', 'autoload'))
->pushAutoloader(array('Doctrine_Core', 'modelsAutoload'));
require_once '/facebook-php-sdk-v4-4.0-dev/autoload.php';
}
include\u路径
的lib上有FB SDK,则需要同时删除文件_exist()
。在我的情况下,我是这样做的,然后它就这样结束了:
protected function _initAutoload ()
{
define('FACEBOOK_SDK_V4_SRC_DIR', 'facebook-php-sdk-v4-4.0-dev/src/Facebook/');
$this->getApplication()
->getAutoloader()
->pushAutoloader(function ($class)
{
// project-specific namespace prefix
$prefix = 'Facebook\\';
// base directory for the namespace prefix
$base_dir = defined('FACEBOOK_SDK_V4_SRC_DIR') ? FACEBOOK_SDK_V4_SRC_DIR : __DIR__ . '/src/Facebook/';
// does the class use the namespace prefix?
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
// no, move to the next registered autoloader
return false;
}
// get the relative class name
$relative_class = substr($class, $len);
// replace the namespace prefix with the base directory, replace namespace
// separators with directory separators in the relative class name, append
// with .php
$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
require $file;
return true;
})
->pushAutoloader(array('Doctrine', 'autoload'))
->pushAutoloader(array('Doctrine_Core', 'modelsAutoload'));
}
由于您必须为这种方法提供一个自定义自动加载程序,我认为最好创建一个类MyNamespace\u Facebook\u autoloader
,以更干净的方式承载这种丑陋。我的观点是,必须把它搞得一团糟,让它工作到底。您可以使用Zend\u Loader\u Autoloader\u接口来实现它
Facebook\FacebookSession::setDefaultApplication()
NOTFacebookSession::setDefaultApplication()
这样你就有了它,不需要编辑任何Facebook文件和工作。希望它能让你编写得更好。快乐编码 伙计!我没有意识到名称空间!我爱你,伙计!这很有效!多谢各位!有时会发生:)不客气:我在使用代码时有这样一个“警告:call_user_func()希望参数1是有效的回调,在/usr/share/php/Zend/Loader/Autoloader.php的第124行中找不到类'doctor'?如果不是,则不应将其包含在自动加载器上<代码>->pushAutoloader(数组(“条令”、“自动加载”)和
->pushAutoloader(数组(“条令核心”、“模型自动加载”))
CesarScur,我没有使用条令,但为什么会出现在您的示例中?因为这不仅仅是一个示例。这是我的Bootstrap.php code=D,只是其中的一部分,尽管……极好的调查;)