【问题标题】:Property Scope in PHP ClassesPHP 类中的属性范围
【发布时间】:2018-08-13 18:44:49
【问题描述】:

我需要什么

能够访问 prop $result,在方法 fill_default_values 内部,在方法 html 内部定义。

总结

我有两个方法,fill_default_valueshtml 在类 Admin 内。在fill_default_values 内部调用道具$result 时,我无法在html 内部访问它。

代码

fill_default_values

  // grabs values from DB and fills inputs on ADMIN PAGE
  protected static function fill_default_values() {
    global $wpdb;

    $table_name = $wpdb->prefix.'bb_slidersettings';
    $result = $wpdb->get_results(
      "SELECT
       id
       FROM
       $table_name;"
    );

    if (!$result) {
    ?>

      <small class="text-red">Something went wrong</small>

    <?php
    } // endif

    return $result;
  }// fill_default_values()

html

  // Outputs HTML to main admin page
  public static function html() {
    self::fill_default_values();

    ?>

    <!-- BEGIN HTML -->
    <form id="bb-carousel-form" action="" method="POST">
      <input name="carousel_id" type="hidden" value="<?php echo $result[0]->id; ?>">
  }

您可以看到我创建了fill_default_values 方法并从html 内部调用它,我希望$result 可用。相反,我收到此错误消息。

error

<br />
<b>Notice</b>:  Undefined variable: result in <b>[FILE PATH]</b> on line <b>120</b><br />
<br />
<b>Notice</b>:  Trying to get property 'id' of non-object in <b>[FILE PATH]</b> on line <b>120</b><br />

奇怪的是,如果我将整个 fill_default_values 移动到 html 中,一切都会像魅力一样。

【问题讨论】:

  • 那么你认为$result 会从哪里变魔术呢
  • 也许是你做了$result = self::fill_default_values();
  • 我想如果我把它退回来,我就可以访问它了。
  • @RiggsFolly $result = self::fill_default_values(); 成功了。如果您想要一些功劳,请继续回答。谢谢。

标签: php class methods properties scope


【解决方案1】:

你需要像这样捕获返回的值

$result = self::fill_default_values();

那么$result应该有一个值

【讨论】:

    猜你喜欢
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 2017-09-15
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多