Tôi đang cố gắng thực hiện một số loại hàm tải và khởi tạo một lớp từ một biến nhất định. Một cái gì đó như thế này:Làm thế nào tôi có thể gọi một phương thức tĩnh trên một lớp biến?
<?php
function loadClass($class) {
$sClassPath = SYSPATH."/classes/{$class}.php";
if (file_exists($sClassPath)) {
require_once($sClassPath);
$class = $class::getInstance();
}
}
?>
Nếu tôi sử dụng nó như thế này:
<?php
loadClass('session');
?>
Nó nên bao gồm và nhanh chóng lớp phiên.
BTW: chức năng getInstance tĩnh đến từ mã này:
<?php
function getCallingClass() {
$backtrace = debug_backtrace();
$method = $backtrace[1]['function'];
$file = file($backtrace[1]['file']);
$line = $file[($backtrace[1]['line'] - 1)];
$class = trim(preg_replace("/^.+?([A-Za-z0-9_]*)::{$method}\(.*$/s", "\\1\\2", $line));
if(! class_exists($class)) {
return false;
} return $class;
}
class Core {
protected static $instances = array();
public static function getInstance() {
$class = getCallingClass();
if (!isset(self::$instances[$class])) {
self::$instances[$class] = new $class();
} return self::$instances[$class];
}
}
?>
Cái này là ngay bây giờ các cách để sử dụng các chức năng trong một lớp học là thế này:
<?php
$session = session::getInstance();
?>
Nhưng bây giờ tôi muốn xây dựng nó thành một hàm để tôi không bao giờ phải sử dụng dòng mã đó nữa. Tôi chỉ nói loadClass ('phiên'); và tôi có thể sử dụng $ session-> blablablafunction();