如何在PHP类中获取url参数

问题描述 投票:0回答:1

我买了一堆代码来将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";
php class get public
1个回答
1
投票

您可以通过两种方法将运行时参数移动到构造函数中。 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()

© www.soinside.com 2019 - 2024. All rights reserved.