php静态类与非静态类,属性、方法详解

静态类:类中含有static定义的静态属性或方法的类

静态类访问方法:

1、,静态方法不需要实例化对象,可以通过类名直接调用,操作符为双冒号::

Car::getName();

2、外部访问公共属性或方法:

$car->speed;
$car->speedUp();

3、内部访问公共属性和方法:

$this->speed;
$this->speedUp(; if(empty($articleclass_id)) $this->showapp(array('msg'=>'错误的操作'));

4、外部访问静态属性或方法:

Car::getName();
Car::$price;
$articleclass_id = SUtil::getStr($_GET['id'], 'int');

5、内部访问静态属性:

self::$price;

6、继承类时,子类内部调用父类静态属性:

parent::$price;

class Controller_article extends Controller_basepage {
  function __construct(){
    parent::__construct();
  }
}

7、 如果是非静态方法,需要改方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题。

8、使用$object->… 和使用class::… 都有什么区别:

1. 使用$object->… ,需要执行构造函数创建对象;

2. 使用class::… 调用静态方法/变量,不需要执行构造函数创建对象;

3. 使用class::… 调用非静态方法/变量,也不需要执行构造函数创建对象。

为什么要有静态类????????

--------静态的变量或者是函数是保存的静态内存中的,只有到程序结束时才会被释放,那他是什么时候赋值的呢

是在编译的时候,动态类是在程序运行的时候动态分配的。

如果类中调用一次,静态类在编译的时候需要多做工作,动态类在执行的时候需要多做工作,然而php是动态语言,每一次这两步都不掉,所以对于只运行一次的类,无所谓谁快谁慢。

但是如果一个类在程序当中要多次调用就不一样了,静态类是编译的时候就赋值了,程序之后的运行都可以直接调用过来,而不用动态的分配内存了,就节约了时间,这就是为什么静态类比动态类快的原因(前提是调用多次记得)。

 

以下是示例代码:

Class Person{
    // 定义静态成员属性
    public static $country = "中国";

    // 定义静态成员方法
    public static function myCountry() {
        // 内部访问静态成员属性
        echo "我是".self::$country."人";
    }

}

class Student extends Person {
    function study(){
        echo "我是". parent::$country."人";
    }
}

// 输出成员属性值
echo Person::$country.""; // 输出:中国

$p1 = new Person();
//echo $p1->country; // 错误写法

// 访问静态成员方法
Person::myCountry(); // 输出:我是中国人

// 静态方法也可通过对象访问:
$p1->myCountry();

// 子类中输出成员属性值
echo Student::$country.""; // 输出:中国

$t1 = new Student();

$t1->study(); // 输出:我是中国人

 

 

转载于:https://www.cnblogs.com/yangye88/p/6400300.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值