【问题标题】:How to get url parameters in a class PHP如何在 PHP 类中获取 url 参数
【发布时间】:2019-04-17 02:44:00
【问题描述】:

我购买了一堆代码来将 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)

如果我用自定义数据调用变量(见下文),它可以正常工作。我想做的就是从 url 或另一个 php 文件中提取数据。但我不确定我是否可以把这一切都放在课堂上。

 public $access_token= "access_token_here";

【问题讨论】:

    标签: php class get public


    【解决方案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 函数或仅将参数公开。

    每次创建类的对象实例时都会调用__construct()

    【讨论】:

    • 嘿伙计,谢谢你的解决方案。然而,他们都没有工作(但最后一个可能有希望)。第一个似乎没有任何效果(我尝试了类似于 this 的 isset 解决方案,但它没有做任何事情)第二个出现了一条错误消息,指出变量未定义。然后,我查看了与该文件链接的其他 php 文件,并找到了调用 DsmFacebookEvents 的位置。我发现我的问题从哪里开始。在下一条评论中继续。
    • 另一个文件是一个基本的 php 文件,它的工作方式与我正确的第一个文件一样。但是,如果我使用 ''' $fb_page_id= $_GET['fb_page_id']; $access_token= $_GET['access_token']; ''' 我遇到的错误与我在课堂上遇到的错误相同。谢谢你的时间伙伴。我真的很想修改这段代码来为我工作。让你了解正在发生的事情。我得到了代码的前半部分。它将向我显示每个场地的活动列表。但它不会显示事件的详细信息。现在我们正在研究事件的细节。如果我理解起来有点复杂,请道歉。
    • ?access_token=whatever&fb_page_id=whatever 必须在当前脚本的 URL 行上,这是否存在于您正在运行的页面上?除了抱歉,我看不到其他任何内容。
    猜你喜欢
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    相关资源
    最近更新 更多