PHP 类问题

标签 php class notifications

我在 PHP 中使用此类时遇到问题...

我想要的是在我的整个网站上有一个“通知”系统 - 但是这个脚本仅在所有内容都在一个文件中时才有效。我该如何解决这个问题。

class Message  {

    var $message; // A variable to store a list of messages

    // Return a string containing a list of messages found,
    function listMessages($delim = ' '){
        if (count($this->message) > 0){
            echo implode($delim,$this->message);
        }else{
            return false;
        }
    }

    // Manually add Message
    function addMessage($description){
        $this->message[] = $description;
    }       
}
$message = new Message();

$message->addMessage('Article Title 1');
$message->addMessage('Article Title 2');

$message->listMessages();

最佳答案

我认为您正在寻找 include_once功能。本质上,您希望将每个类放在自己单独的文件中,然后当您想要使用它们时,您可以调用 include_once("thatfile.php"); 以使您可以访问该类应用程序。

我应该澄清,您应该使用 include_once (或 require_once 如果您愿意的话)而不是 include 因为如果您包含类文件两次,您将得到错误表明您正在尝试定义一个已经存在的类。

使用您的示例,您的程序将如下所示:

MessageClass.php

<?php
class Message  {

  public $message;

  // Return a string containing a list of messages found
  public function listMessages($delim = ' '){
      if (count($this->message) > 0){
          echo implode($delim,$this->message);
      }else{
          return false;
      }
  }

  // Manually add Message
  public function addMessage($description){
      $this->message[] = $description;
  } 
}

index.php

<?php

include_once("MessageClass.php");

$message = new Message();
$message->addMessage('Article Title 1'); $message->addMessage('Article Title 2');
$message->listMessages(); 

另请注意,我更改了您的类变量(成员)和函数(方法)以包含 public 修饰符。我不是 100% 确定它在 PHP 中是如何工作的,但在大多数语言中,默认情况下这些东西往往是私有(private)的,这意味着它们不能从类外部访问。为了清楚起见,最好将它们包括在内。

您可能还想查看 __autoload()函数,每当您尝试使用尚未定义的类时都会调用该函数。在您自己定义的这个函数中,您可以找出给定类驻留在哪个文件中,并在需要时自动 include_once 它。更一般地说,您应该查看 spl_autoload_register函数,这是同样的事情,但具有更多的灵活性。

关于PHP 类问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4384513/

相关文章:

php - 可以访问数据库的基于网络的电子表格

php - 通过php搜索进行MYSQL数据检索

php - 输出数据中心位置

c++ - Visual Studio Intellisense 无法识别括号初始化中的类成员

php - PHP 中的 while 和 file_exists

perl - 为什么perl对象实例会互相覆盖

C++ 类指针不保存任何内容。

android - 有没有办法在用户展开通知时更改通知标题?

ios - 从通知中心iOS删除单个通知

ios - 当应用程序处于后台时向用户发送通知