我有2个文件index.php和class_lib.php。
这是index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
<title>OOP in PHP</title>
<?php include("class_lib.php"); ?>
</head>
<body>
<?php
$adrian = new person();
$jimmy = new person;
$adrian = set_name('adrian de cleir');
$jimmy = set_name('jimmy darmady');
echo $adrian->get_name();
?>
</body>
</html>
和类
的文件<?php
class person {
var $name;
function set_name($new_name) {
$this->name = $new_name;
}
function get_name() {
return $this->name;
}
}
?>
当我加载页面时,我得到了 致命错误:在第15行的/var/www/php_learning_testing/index.php中调用未定义的函数set_name()
感谢您的帮助,这是愚蠢的确定。
答案 0 :(得分:6)
set_name
在全局范围内不存在,但仅在对象之外,您使用get_name
正确执行。
$adrian = new person();
$jimmy = new person;
$adrian->set_name('adrian de cleir');
$jimmy->set_name('jimmy darmady');
echo $adrian->get_name();
您现有的代码(set_name
实际存在且返回值)只会使用返回值person
覆盖对象set_name
。每当你调用非静态类方法时,总是需要引用实例。
答案 1 :(得分:1)
在行
$adrian = set_name('adrian de cleir');
$jimmy = set_name('jimmy darmady');
你需要调用对象上的方法:
$adrian->set_name('adrian de cleir');
$jimmy->set_name('jimmy darmady');
答案 2 :(得分:0)
对于吉米,你有$ jimmy =新人; 你应该
$jimmy = new person();
然后调用你做的类方法
$jimmy->set_name('bla');
答案 3 :(得分:0)
尝试在功能之前设置公共。也将var替换为private。到目前为止我知道,php中不存在var;)