用于php的"::"表示法是什么?

Mat*_*iby 12 php

我正在浏览一些PHP代码,我看到这个"::"表示法,我不知道这意味着什么......还有什么是&在前面的呼叫

$mainframe =& JFactory::getApplication('site');
$sql="SELECT rt.member_id ,rt.commission,rt.sales,kt.store_id,kt.user_id FROM jos_report
rt JOIN jos_kingdom_tickets kt WHERE rt.member_id=kt.ticket_id";
$db =& JFactory::getDBO();
Run Code Online (Sandbox Code Playgroud)

提前致谢

Asa*_*aph 24

::,作用域解析运算符,用于引用类的静态成员和常量.它还用于引用超类的构造函数.以下是一些代码,说明了范围解析运算符的几种不同用法:

<?php
class A {
    const BAR = 1;
    public static $foo = 2;
    private $silly;

    public function __construct() {
         $this->silly = self::BAR;
    }
}

class B extends A {
    public function __construct() {
        parent::__construct();
    }

    public static function getStuff() {
         return 'this is tiring stuff.';
    }
}

echo A::BAR;
echo A::$foo;
echo B::getStuff();
?>
Run Code Online (Sandbox Code Playgroud)

一个小琐事:范围分辨率算子也被称为"paamayim nekudotayim",这意味着希伯来语中的"两个点两次".

&在您的示例的上下文中,如果您使用的是PHP 5或更高版本,则不会执行任何有用的操作,应将其删除.在php 4中,这是必要的,以确保没有使用返回对象的副本.在php 5中,除非调用clone,否则不会创建对象副本.所以&不需要.还有一种情况&在php 5中仍然有用:当您迭代数组的元素并修改值时,必须使用&运算符来影响数组的元素.