什么是“:";php中用于的注释


what is the "::" notation in php used for?

我正在浏览一些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();

提前感谢

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

<?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();
?>

一个小细节:作用域分辨率操作符也被称为"paamayim-nekudotayim",在希伯来语中的意思是"两个点两次"。

如果您使用的是php5或更高版本,那么您的示例中的&没有做任何有用的事情,应该删除它。在php4中,为了确保没有使用返回对象的副本,这曾经是必要的。在php5中,除非调用clone,否则不会创建对象副本。因此不需要CCD_ 3。还有一种情况是&在php5中仍然有用:当您迭代数组的元素并修改值时,必须使用&运算符来影响数组的元素。

您可以使用它引用类中的静态方法,而不必实例化它。

例如:

class myClass {
    public static function staticFunction(){
        //...
    }
    public function otherFunction(){
        //...
    }
}

在这里,您可以在类之外使用myClass::staticFunction(),但在使用otherFunction()之前,您必须创建一个新的myClass对象。

::是PHP、c++中的作用域运算符,但在Java中不是。在这种情况下,它用于调用类的静态方法。静态方法是一种可以从类外调用的方法,即使你没有它的实例

&表示,它不是复制函数返回的内容,而是引用返回的对象。在这种情况下,它们似乎返回应用程序中使用的单例对象,例如与数据库接口(在第二种情况下)

它是作用域运算符,用于引用类下的常量或静态方法。因此:

class C {
    const D = 2;
}
echo C::D; // 2

在您的情况下,它调用一个不绑定到特定实例的类的方法。