Tuyên bố từ chối trách nhiệm: Có, tôi bị buộc phải hỗ trợ PHP 4.3.0. Tôi biết nó đã chết. Không, tôi không thể nâng cấp nó, bởi vì tôi đang giao dịch với nhiều máy chủ mà một số máy chủ không truy cập được.Sử dụng các thuộc tính tĩnh trong PHP> = 4.3.0?
Vâng, vì tôi không thể sử dụng self::
vì nó là PHP5 cụ thể, tôi nên thực hiện các thống kê trong lớp PHP4 như thế nào? Cho đến nay từ nghiên cứu của tôi có vẻ như tôi ít nhất có thể sử dụng từ khóa static
ngoại trừ trong ngữ cảnh chức năng, tôi đã thấy một phương pháp khác sử dụng $ _GLOBALS nhưng tôi không nghĩ mình sẽ sử dụng nó.
Để chúng tôi đang ở trên cùng một trang tôi cần phải truy cập vào các tĩnh học PHP5 trong 4:
public static $_monthTable = array(
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
public static $_yearTable = array(
1970 => 0, 1960 => -315619200);
Cho đến nay, tôi đã đi lên với chức năng của riêng tôi mà về cơ bản đặt ra một biến tĩnh nếu một không tìm thấy, và tôi mã hóa tất cả các thuộc tính tĩnh của tôi vào nó. Tuy nhiên, tôi không hoàn toàn chắc chắn làm thế nào tôi có thể tham khảo những thống kê trong phương pháp anther trong cùng một lớp, giả sử nó không được instantiated và không có constructor được bắn, có nghĩa là tôi không thể sử dụng $this
.
class DateClass {
function statics($name = null) {
static $statics = array();
if (count($statics) == 0) {
$statics['months'] = array(
'Jan', 'Feb'
);
}
if ($name != null && array_key_exists($name, $statics)) {
return $statics[$name];
}
}
};
var_dump(DateClass::statics('months'));
Câu hỏi # 1: Điều này có khả thi không? Tôi có nên thử sử dụng một phương pháp khác không?
Câu hỏi # 2: Tôi làm cách nào để tham khảo các thống kê từ một phương thức trong cùng một lớp? Tôi đã cố gắng __CLASS__::statics
nhưng tôi nghĩ rằng __CLASS__
chỉ là một chuỗi vì vậy tôi không thực sự gọi một phương pháp.
Lưu ý: Tôi sẽ triển khai tính năng này thành một khung sẽ được sử dụng trên Apache2 +/IIS6 +, PHP4.3.0 đến PHP 5.2, OSX/Linux/Windows.
Tôi cảm thấy nỗi đau của bạn :(Có lần tôi đã phải làm việc ở một nơi mà sử dụng mà cùng một phiên bản php và tôi không thể làm bất cứ điều gì về nó tôi. Tôi rất vui vì tôi không còn ở đó nữa :) Chúc bạn may mắn !! – AntonioCS