PHP基础之类

来源:互联网 发布:python smtplib 编辑:程序博客网 时间:2024/05/21 23:01

面向对象编程就是要把需要解决的问题抽象为类。关于面向对象的思想我想大家都应该在其他语言中或多或少了解过。简单来说就是将事物具有的共性抽出来作为类的属性,

与属性相关的操作作为类方法。


在php中申明一个类需要使用关键字class来实现。这于其他语言是相同的。比如我们声明一个学生的类,例如:

class student{    private $name;    private $sex;    private $age;    private $classes;        public function setName($values)    {        $this->name = $values;    }        public function setSex($param) {        $this->sex = $param;    }        public function setAge($param) {        $this->age = $param;    }    public function setClasses($param) {        $this->classes = $param;    }}

上面代码声明了一个包含学生姓名,性别,年龄和班级的类。其中姓名,性别,年龄和班级是作为student类的私有变量(属性),其中的set方法作为类的公有方法。

关键字public和private定义的是属性和方法的访问权限。private定义的属性只能在类内部使用,public定义的属性或者方法则可以在类的外部被调用。


构造函数和析构函数

构造函数是在对象实例创建的时候自动调用的方法,相反析构函数是在对象销毁的时候自动调用的方法。

构造函数通过__construct定义,析构函数通过__destruct定义。

其中构造函数主要用于创建对象时候初始化成员变量.

class ClassName {    public $name;    public $age;    function __construct($name, $age) {        $this->name = $name;        $this->age = $age;        echo "construct excute by auto";    }    function getValue() {        echo "<br/>";        echo "姓名:" . $this->name;        echo "<br/>";        echo "年龄:" . $this->age;    }    function __destruct() {        echo "destruct excute by auto";    }}$obj = new ClassName("莉莉", 25);$obj->getValue();--->construct excute by auto姓名:莉莉年龄:25destruct excute by auto


访问类中的成员:

如果是在类内部访问成员上面的例子就可以看出来,使用->操作符可以访问类成员。另外在对象的方法执行的时候会自动定义一个特殊变量,那就是上面例子的$this变量,

这个变量表示的是对象本身的引用,它的作用就是完成对象内部成员之间的访问。

另外访问对象成员有时还可以实用“::"符号,使用该符号一般来说可以在以下情况下出现:

1.parent::父类成员---调用父类的成员变量常量的方法

2.self::自身成员---调用当前类的静态成员和常量

3.类名::成员 ---访问类的变量常量


在上面的例子里面我们加一个const变量和一个方法:

const COUNTRY = 'China'; public function getCountry() {        echo self::COUNTRY;        echo "<br/>";        echo $this->COUNTRY;        echo "<br/>";    }

然后我们实例化student类,调用该方法:
$obj = new student();$obj->getCountry();

输出:
ChinaNotice: Undefined property: student::$COUNTRY in E:\PHP\PHP_Class\PHP_Class.php on line 37
可见在类中访问const常量应该通过self来访问。


静态方法和属性

在php中,通过static关键字来修饰的成员属性和方法称为静态方法或者静态属性。它的特性就是可以在不实例化类的情况下直接使用。

静态方法和静态属性也被称为类方法,类属性。它与对象的属性的区别就是静态方法或者静态属性是属于类的,而不是被限定在任何一个特定的对象实例。

在类外部可以通过类名::静态属性名/静态方法名的形式来使用,在类内部可以通过self::静态方法名/静态属性名使用。

示例代码如下:

class staticClass {    static $staticVal = 0;    public $val = 0;    static function getStaticVal() {        echo self::$staticVal;        echo "<br/>";    }    static function setStaticVal($param) {        self::$staticVal = $param;        echo self::getStaticVal();        echo "<br/>";    }    function change($param) {        $this->setStaticVal($param);    }}staticClass::getStaticVal();staticClass::setStaticVal(100);$obj = new staticClass();$obj->change(1000);-->01001000



原创粉丝点击