如何将PHP类定义放在包含文件中

时间:2010-11-05 01:51:44

标签: php

我是PHP的新手,当我将一个类定义从我的“主”页面移到一个包含文件时遇到了麻烦。

假设我有main.php,内容如下。它工作正常:

<?php
class SimpleClass
{
    public $var = 'a def value';

    public function displayVar() {
        echo $this->var;
    }
}
?>
<html>
<h1>blah blah blah</h1>
</html>

但现在假设我尝试删除类定义并将其放在单独的文件中,以便main.htm现在看起来像:

<?php
include("classdef.php");
?>
<html>
<h1>blah blah blah</h1>
</html>

和classdef.php是:

<?php
class SimpleClass
{
    public $var = 'a def value';

    public function displayVar() {
    echo $this->var;
}
?>

然后当我查看我的main.php时,它显示为

var; } } ?>
blah blah blah

好像>中的$this->var字符被解释为关闭PHP。我在搜索时遇到了麻烦,因为我不知道调用了->运算符。

这是关于Windows上Apache 2.2的PHP 5.3.3。

5 个答案:

答案 0 :(得分:6)

您的PHP没有被解释(如果它是一个解析错误问题,那么,你会得到一个解析错误)。我注意到的第一件事是你说你把PHP放在main。 htm 。除非您明确地将服务器设置为使用PHP解释.htm / .html文件,否则您的服务器将不知道您在此文件中有PHP。

编辑:正如我在评论中所说,问题是Apache没有被PHP解释。以下是常见问题:

  • 您没有正确调用脚本,例如您正在调用C:\ wamp \ www \ yourfile.php而不是http://localhost/yourfile.php
  • 正如Wrikken所说,你使用的是短标签(&lt;?而不是&lt;?php)
  • 您对文件名的扩展名错误

我不认为这是一个引用问题,否则你很可能会得到一个解析错误。我会跟其他人说的一样,并要求你提供PHP脚本生成的HTML代码(通过浏览器访问脚本并按Ctrl + U)

答案 1 :(得分:3)

你的classdef.php上似乎有拼写错误,请尝试以下内容:

<?php
class SimpleClass
{
    public $var = 'a def value';

    public function displayVar() {
      echo $this->var;
    }
}

答案 2 :(得分:2)

不应该是

<?php
class SimpleClass
{
    public $var = 'a def value';

    public function displayVar() {
    echo $this->var;
}
}
?>

您缺少}函数displayVar()

答案 3 :(得分:2)

您很可能不会使用<?php启动您的类文件,但会禁用讨厌的<?short_open_tags。修复此问题(将其设为<?php,关闭short_open_tags),这样就可以了。现在,开始<?和第一个>之间的任何内容都会发送给用户并解释为HTML标记(如果查看源代码,您可能会看到整个类的定义)。

答案 4 :(得分:0)

使用RobC的最新更新,我的猜测是缺少或未转义的引号字符。除非我们看到实际的来源,否则这是我最好的猜测。

我建议你使用带有语法高亮的IDE或编辑器,问题就会变得很明显。