我买了一堆代码来将Facebook事件添加到我正在创建的网站上。总体目标是为不同的场地设置不同的页面。每个场地都有自己的Facebook页面/活动,我希望展示这些活动。
除了一个小问题,我已经把一切都搞定了。我可以从使用基本php发送到页面的url参数中获取数据(见下文),但代码中的类不允许我这样做。
$access_token= $_GET['access_token'];
$fb_page_id= $_GET['fb_page_id'];
// this works fine in a basic php file
我已经谷歌搜索了几个小时,我找不到解决方案。
下面是我认为在将相同的代码添加到类中时可以工作的内容。
class DsmFacebookEvents{
public $access_token= $_GET['access_token'];
public $fb_page_id= $_GET['fb_page_id'];
请注意,我不是PHP的专业人士,我认为添加'public'可以解决问题(因为类中的所有其他变量都有这个)
我在页面上收到错误说...
Parse error: syntax error, unexpected '$_GET' (T_VARIABLE) in (location)
如果我使用自定义数据调用变量(见下文),它可以正常工作。我想要做的就是从网址或另一个php文件中提取数据。但我不确定我是否可以屁股这是所有内部课程。
public $access_token= "access_token_here";
您可以通过两种方法将运行时参数移动到构造函数中。 https://www.php.net/manual/en/language.oop5.decon.php
选项A)
class DsmFacebookEvents
{
public $access_token;
public $fb_page_id;
public function __construct()
{
if( !empty( $_GET['access_token'] ) )
{
$this->access_token = $_GET['access_token'];
}
if( !empty( $_GET['fb_page_id'] ) )
{
$this->fb_page_id = $_GET['fb_page_id'];
}
}
}
选项B)
class DsmFacebookEvents
{
public $access_token;
public $fb_page_id;
public function __construct( $access_token, $fb_page_id )
{
$this->access_token = $access_token;
$this->fb_page_id = $fb_page_id;
}
}
$foo = new DsmFacebookEvents( $_GET['access_token'], $_GET['fb_page_id'] );
我觉得第二个选项更好,因为它将值的源与类定义断开连接。您仍然可以通过修改构造函数或创建setter函数或仅将参数保留为public来选择使它们成为可选项。
每次创建类的对象实例时都会调用__construct()
。