::
используется для доступа к статическому свойству класса. И ->
используется для доступа к свойству экземпляра класса (Object's).
Рассмотрим этот класс Product, который имеет две функции для получения сведений о продукте. Одна функция getProductDetails
принадлежит экземпляру класса, а другая getProductDetailsStatic
принадлежит только классу.
class Product {
protected $product_id;
public function __construct($product_id) {
$this->product_id = $product_id;
}
public function getProductDetails() {
$sql = "select * from products where product_id= $this->product_id ";
return Database::execute($sql);
}
public static function getProductDetailsStatic($product_id) {
$sql = "select * from products where product_id= $product_id ";
return Database::execute($sql);
}
}
Давайте получим продукты:
$product = new Product('129033'); // passing product id to constructor
var_dump( $product->getProductDetails() ); // would get me product details
var_dump( Product::getProductDetailsStatic('129033') ); // would also get me product details
Когда вам использовать Static properties
?
Рассмотрим этот класс, который может не требовать создания экземпляра:
class Helper {
static function bin2hex($string = '') {
}
static function encryptData($data = '') {
}
static function string2Url($string = '') {
}
static function generateRandomString() {
}
}