php对象的调用方法有什么区别

陈李洁
陈李洁 原创
2023-06-20 14:25:31 883浏览

php对象的调用方法的区别在于:1、使用“->”调用对象的成员属性和方法,需要先实例化对象,然后通过对象变量来进行访问,而使用“::”调用类的静态属性和方法,不需要先实例化对象,而是直接使用类名和静态属性/方法名来访问;2、使用“->”可以访问到非静态属性和方法,同时也可以动态改变属性和调用方法,而使用“::”无法访问非静态属性和方法,也不能改变属性值但相对于动态调用更快一些。

本教程操作系统:Windows10系统、php8.1.3版本、Dell G3电脑。

在 PHP 中,常见的对象调用方法有 `->` 和 `::` 两种。

其中,`->` 用于调用对象的成员属性和方法,`::` 则用于调用类的静态属性和方法。

一、 `->` 调用对象的成员属性和方法

使用 `->` 调用对象的成员属性和方法,需要先实例化对象,然后通过对象变量来进行访问。这种方式的优点是可以访问到非静态属性和方法,同时也可以动态改变属性和调用方法。缺点是相对于静态调用稍微慢一些,因为需要先实例化对象。

示例代码:

```php
class Person {
    public $name;
    
    public function sayHello() {
        echo "Hello, my name is {$this->name}!";
    }
}
$person = new Person();
$person->name = 'Alice';
$person->sayHello(); // 输出:Hello, my name is Alice!
```

在上面的例子中,我们创建了一个 `Person` 类,并实例化了一个 `$person` 对象。通过 `$person->name` 来设置了 `name` 属性,然后通过 `$person->sayHello()` 来调用了 `sayHello()` 方法,从而输出了问候语。

二、 `::` 调用类的静态属性和方法

使用 `::` 调用类的静态属性和方法,不需要先实例化对象,而是直接使用类名和静态属性/方法名来访问。这种方式的优点是相对于动态调用更快一些,因为不需要先实例化对象。缺点是无法访问非静态属性和方法,也不能改变属性值。

以下是一个简单的 PHP 代码示例,其中演示了如何调用类的静态属性和方法:

```php
<?php
class MyClass {
  public static $myStaticProperty = "Hello World!";
  public static function myStaticMethod() {
    echo "This is a static method.";
  }
}
echo MyClass::$myStaticProperty; // 输出 "Hello World!"
MyClass::myStaticMethod(); // 输出 "This is a static method."
?>
```

首先声明了一个名为 `MyClass` 的类。在该类中,定义了一个名为 `$myStaticProperty` 的公共(public)静态属性,并将其设置为字符串 `"Hello World!"`。接着,还定义了一个名为 `myStaticMethod()` 的公共静态方法,该方法仅打印一条消息。

要访问这些静态属性和方法,可以使用类名加上作用域解析运算符 `::` 来调用它们。例如,可以使用 `MyClass::$myStaticProperty` 来访问 `$myStaticProperty` 属性并输出其值,或者使用 `MyClass::myStaticMethod()` 来调用 `myStaticMethod()` 方法并执行其中的代码。

以上就是php对象的调用方法有什么区别的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。