<?php namespace Phpcmf;
use \Phpcmf\View;
class Service
{
static private $instances = [];
static private $help = [];
static private $init = [];
static private $view;
static private $model;
public static function C() {
return class_exists('\Phpcmf\Common') ? \Phpcmf\Common::get_instance() : null;
}
public static function IS_PC() {
return !static::C()->is_mobile;
}
public static function IS_MOBILE() {
return static::C()->is_mobile;
}
public static function _is_mobile() {
return static::C()->_is_mobile();
}
public static function IS_MOBILE2() {
return static::C()->_is_mobile();
}
public static function V() {
if (!is_object(static::$view)) {
static::$view = new \Phpcmf\View();
}
return static::$view;
}
public static function model() {
if (!is_object(static::$model)) {
static::$model = new \Phpcmf\Model();
}
return static::$model;
}
public static function L( $name, $namespace = '') {
list($classFile, $extendFile) = self::_get_class_file($name, $namespace, 'Library');
$_cname = md5($classFile.$extendFile);
$className = ucfirst($name);
if (!isset(static::$instances[$_cname]) or !is_object(static::$instances[$_cname])) {
require_once $classFile;
if ($extendFile && is_file($extendFile)) {
require $extendFile;
$newClassName = $namespace ? '\\Phpcmf\\Library\\'.ucfirst($namespace).'\\'.$className : '\\My\\Library\\'.$className;
} else {
$newClassName = '\\Phpcmf\\Library\\'.$className;
if ($namespace) {
$newClassName2 = '\\Phpcmf\\Library\\'.ucfirst($namespace).'\\'.$className;
if (class_exists($newClassName2)) {
static::$instances[$_cname] = new $newClassName2();
return static::$instances[$_cname];
}
}
}
static::$instances[$_cname] = new $newClassName();
}
return static::$instances[$_cname];
}
public static function M( $name = '', $namespace = '') {
if (!$name) {
return static::model();
}
list($classFile, $extendFile) = self::_get_class_file($name, $namespace, 'Model');
$_cname = md5($classFile.$extendFile);
$className = ucfirst($name);
if (!isset(static::$instances[$_cname]) or !is_object(static::$instances[$_cname])) {
require_once $classFile;
if ($extendFile && is_file($extendFile)) {
require $extendFile;
$newClassName = $namespace ? '\\Phpcmf\\Model\\'.ucfirst($namespace).'\\'.$className : '\\My\\Model\\'.$className;
} else {
$newClassName = '\\Phpcmf\\Model\\'.$className;
if ($namespace) {
$newClassName2 = '\\Phpcmf\\Model\\'.ucfirst($namespace).'\\'.$className;
if (class_exists($newClassName2)) {
static::$instances[$_cname] = new $newClassName2();
return static::$instances[$_cname];
}
}
}
static::$instances[$_cname] = new $newClassName();
}
return static::$instances[$_cname];
}
public static function H($name, $namespace) {
$file = dr_get_app_dir($namespace).'Helpers/'.ucfirst($name).'.php';
$_cname = md5($file);
if (isset(static::$help[$_cname])) {
return;
}
if (!is_file($file)) {
defined('IS_API_HTTP') && IS_API_HTTP ? \Phpcmf\Common::json(0, '函数文件:'.str_replace(FCPATH, '', $file).'不存在') : exit('函数文件:'.str_replace(FCPATH, '', $file).'不存在');
}
static::$help[$_cname] = 1;
require $file;
}
private static function _get_class_file($name, $namespace, $class) {
$className = ucfirst($name);
$classFile = CMSPATH.$class.'/'.$className.'.php';
$extendFile = MYPATH.$class.'/'.$className.'.php';
if (!is_file($extendFile) && $namespace) {
$extendFile = dr_get_app_dir($namespace).($class == 'Library' ? 'Librarie' : $class ).'s/'.$className.'.php';
}
if (!is_file($classFile)) {
if ($namespace) {
$classFile = dr_get_app_dir($namespace).($class == 'Library' ? 'Librarie' : $class ).'s/'.$className.'.php';
$extendFile = '';
} else if (is_file($extendFile)) {
$classFile = $extendFile;
$extendFile = '';
}
if (!$classFile || !is_file($classFile)) {
defined('IS_API_HTTP') && IS_API_HTTP ? \Phpcmf\Common::json(0, '类文件:'.str_replace(FCPATH, '', $classFile).'不存在') : exit('类文件:'.str_replace(FCPATH, '', $classFile).'不存在');
}
}
return [$classFile, $extendFile];
}
}