我在 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/