php中类的属性和方法如何使用

<?php
Class Person{
    public static $country = "中国";// 定义静态成员属性
    public $countries = "zhongguo";  //非静态类成员
    public $mingzi = array();//非静态类成员
    // 定义静态成员方法
    public static function myCountry() {
        // 内部访问静态成员属性
        echo "我是".self::$country."人<br />";
    }
}
class Student extends Person {
    function study() {
        echo "我是". parent::$country."人<br />";
    }
}
echo Person::$country."<br />";         // 输出:中国
$p1 = new Person();                    // 实例化类
echo $p1->countries. "<br>";            //调用输出静态成员变量
$p1->mingzi = array("liming");          //调用静态成员数组
echo $p1->mingzi[0];                    //输出静态成员数组中的元素
Person::myCountry();                    // 输出:我是中国人
$p1->myCountry();                        //调用静态成员方法
echo Student::$country."<br />";        // 调用子类 输出:中国
$t1 = new Student();                    // 实例化子类
$t1->study();                           // 调用子类中的方法输出:我是中国人
?>
<html>
<head>
<meta Content-Type="content-type:text/plain" charset="utf-8">
</head>
</html>

输出结果:

中国
zhongguo
liming我是中国人
我是中国人
中国
我是中国人


public的变量可以如果没有static是可以实例化调用的调用,如果有static,就不能实例化调用。如:


正确的写法:

<?php
class myclass{
public static $name="amos";
}
class myclass1{
public $mingzi="amos";
}
echo myclass::$name;
$p2=new myclass1();
echo $p2->mingzi;
?>
<html>
<head>
<meta Content-Type="content-type:text/plain" charset="utf-8">
</head>
</html>

错误的写法:

<?php
class myclass{
public static $name="amos";
}
class myclass1{
public $mingzi="amos";
}
$p1=new myclass();
echo $p1->name;
echo myclass1::$mingzi;
?>
<html>
<head>
<meta Content-Type="content-type:text/plain" charset="utf-8">
</head>
</html>

为什么要声明static类型的成员和方法?

声明类成员或方法为static,就可以不实例化类而直接访问。

如何实例化?

$var= new classname();