我是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。
答案 0 :(得分:6)
您的PHP没有被解释(如果它是一个解析错误问题,那么,你会得到一个解析错误)。我注意到的第一件事是你说你把PHP放在main。 htm 。除非您明确地将服务器设置为使用PHP解释.htm / .html文件,否则您的服务器将不知道您在此文件中有PHP。
编辑:正如我在评论中所说,问题是Apache没有被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或编辑器,问题就会变得很明显。