类PHP方法get和set


Class PHP methods get and set

我有这个类:

<?php
    class Test {
        private $_ID;
        private $_NAME;
        private $_AGE;
        public function setID() { $this->_ID++; }
        public function getID() { return $this->_ID; }
        public function setNAME($element) { $this->_NAME = $element; }
        public function getNAME() { return $this->_NAME; }
        public function setAGE($element) { $this->_AGE = $element; }
        public function getAGE() { return $this->_AGE; }
        public function addUser($name, $age) {
            Test::setID();
            Test::setNAME($name);
            Test::setAGE($age);
            echo "OK";
        }
    }
?>

我想创建这个类的对象,并用函数addUser分配数据,如下所示:

$test = new Test();
$test:: addUser("Peter", "12"); but I have errors.

我有这个错误:

严格标准:非静态方法Test::addUser()不应为在第13行上的/var/www/public/testManu.php中静态调用

严格标准:不应调用非静态方法Test::setID()在第18行上的/var/www/public/class/Test.php中静态

致命错误:在中不在对象上下文中时使用$this/第8行上的var/www/public/class/Test.php

我在可变范围方面有问题。有人能告诉我我的问题是什么吗????

更改此项:

 ...
 public function addUser($name, $age) {
        $this->setID();
        $this->setNAME($name);
        $this->setAGE($age);
        echo "OK";
    }
 ...

Classname::function()这样的调用只对静态方法有效。您有一个专用实例,需要使用构造$this->function()对其进行寻址。

因此:

   ...
  $test->addUser("Peter", "12"); but I have errors.
$test = new Test();
$test -> addUser("Peter", "12"); #now no errors

这应该适用于您:

<?php
    class Test {
        private static $_ID = 1;
        private static $_NAME;
        private static $_AGE;
        public static function setID() { self::$_ID++; }
        public static function getID() { return self::$_ID; }
        public static function setNAME($element) { self::$_NAME = $element; }
        public static function getNAME() { return self::$_NAME; }
        public static function setAGE($element) { self::$_AGE = $element; }
        public static function getAGE() { return self::$_AGE; }
        public static function addUser($name, $age) {
            self::setID();
            self::setNAME($name);
            self::setAGE($age);
            echo "OK";
        }
    }
$test = new Test(); /*You don't need to instantiate the class 
                      because you're calling a static function*/
$test:: addUser("Peter", "12"); but I have errors.
?>