0

我有 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()

感谢您的帮助,我确定这很愚蠢。

4

4 回答 4

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。每当您调用非静态类方法时,您总是需要引用该实例。

于 2013-01-11T12:20:22.737 回答
1

在行中

$adrian = set_name('adrian de cleir');
$jimmy = set_name('jimmy darmady');

您需要调用对象的方法:

$adrian->set_name('adrian de cleir');
$jimmy->set_name('jimmy darmady');
于 2013-01-11T12:20:06.293 回答
0

对于吉米,你有 $jimmy = new person; 你应该有

$jimmy = new person();

然后调用你做的类方法

$jimmy->set_name('bla');
于 2013-01-11T12:21:36.540 回答
0

尝试在功能之前设置公共。还将 var 替换为私有。到目前为止我知道, var 在 php 中不存在;)

于 2013-01-11T12:23:09.477 回答