php 单示例编程
<?php defined('SYSPATH') or die('No direct script access.'); class Kohana_BOTA
{
//私有构造方法,防止再次实例化对象
private function __construct(){}
//私有克隆函数防止克隆
private function __clone(){} private static $_instance = null;
//private $_url;
private $_maps = array(); //全库编号字段的值对应的文字翻译
private static $_url = null; //各个系统URL值
private static $_language = null; //全库编号字段的值对应的文字翻译
private static $_config = null; //系统配置 /**
* 系统启动时候的全局类
* 该全局类是 单例设计模式
* @return BOTA_Core
*/
public static function app()
{
if (self::$_instance instanceof self){
return self::$_instance;
}
self::$_instance = new self();
return self::$_instance;
} private function _init()
{
} /**
* 获取全库编号字段的值对应的文字翻译
* @param null $type 编号所属类型
* @author zengmeilong
* @since 20180111
* BOTA::app()->maps();
* BOTA::app()->maps('card_type');
*/
public function maps($type=null)
{
if (!$this->_maps)
{
$result = ORM::factory('Language')->find_all(); $data = array();
foreach($result as $k=>$v) {
$data[$v->type][$v->key] = $v->as_array();
} $this->_maps = $data;
} if ($type !== null) {
return Arr::get($this->_maps,$type,array());
} return $this->_maps;
} /**
* 返回当前项目当前环境的URL前缀
* 若指定包名,则返回包同级环境的URL前缀
* BOTA::url();
* BOTA::url('com.bota.mock');
* BOTA::url('com.bota.mock', 5);
* @param string $platform
*/
public static function url($platform=CFG_ENAME, $plate=CFG_PLATE)
{
if (self::$_url === null){
$pf = ORM::factory('Platform')->find_all();
foreach ($pf as $v){
self::$_url[$v->package] = $v->as_array();
}
}
return isset(self::$_url[$platform]) ? self::$_url[$platform]['p'.$plate] : '';
//return ORM::factory('Platform',array('package'=>$platform))->cached(3600)->get('p'.$plate);
} /**
* 获取全库编号字段的值对应的文字翻译
* @param string $type 编号所属类型
* @param string $key false返回数组|true返回键值对|int返回值
* @param string $default 缺省值
* @author bsykc
* @since 20180927
* BOTA::language();
* BOTA::language('pay_status');
* BOTA::language('pay_status', false);
* BOTA::language('pay_status', 3, '');
*/
public static function language($type=null, $key=false, $default=null)
{
if (self::$_language === null)
{
$orm = ORM::factory('Language')->find_all();
foreach($orm as $k=>$v)
{
self::$_language[$v->type][$v->key] = $v->as_array();
}
}
if ($type !== null and $key === false and isset(self::$_language[$type])) {
$onlyvalue = array();
foreach (self::$_language[$type] as $v){
$onlyvalue[] = array('value'=>$v['key'], 'text'=>$v['value']);
}
return $onlyvalue;
}
if ($type !== null and $key === true and isset(self::$_language[$type])) {
$result = array();
foreach (self::$_language[$type] as $v){
$result[$v['key']] = $v['value'];
}
return $result;
}
if ($type !== null and isset(self::$_language[$type][$key]['value'])) {
return self::$_language[$type][$key]['value'];
}
return $default;
} /**
* 获取配置
* @param string $key 键值对的键
* @param mix $default 缺省值
* @author bsykc
* @since 20180917
* BOTA::config('cfg_name');
* BOTA::config('cfg_name', '');
*/
public static function config($key, $default=null)
{
if (self::$_config === null){
$result = ORM::factory('Config')->where('status','=',1)->find_all();
foreach($result as $k=>$v) {
self::$_config[$v->key] = $v->value;
}
}
/*
$cfg = Arr::get(self::$_config, $key, $default);
//根据环境和包名替换配置里面的URL
if (preg_match('/(^\{#com\.bota\.[a-z0-9]+#\})(.*)/', $cfg, $matchs) === 1){
return self::url(trim($matchs[1], '{#}')) . $matchs[2];
}
return $cfg;
*/
return Arr::get(self::$_config, $key, $default);
} }
调用:
BOTA::app()->maps('order_writeoff_status'); Arr::path(BOTA::app()->maps('order_writeoff_status'), '1.value');
php 单示例编程的更多相关文章
- jquery 通过submit()方法 提交表单示例
jquery 通过submit()方法 提交表单示例: 本示例:以用户注册作为例子.使用jquery中的submit()方法实现表单提交. 注:本示例仅提供了对表单的验证,本例只用选用了三个字段作为测 ...
- Html注册表单示例
注册表单示例,出自<网页开发手记:Html,CSS,JavaScript实战详解>. <html> <head> <title>注册表单&l ...
- PySe-002-Py-简单示例及编码设定
非常简单而又国际化的例子 Hello World!在控制台依次输入命令:python, print "This is first program %s" % "Hello ...
- Java复习11. 单例编程
Java复习11. 单例编程 1.最简单的写法,那个方式是线程不安全的 public class Singleton { private static Singleton instance; ...
- js验证form表单示例
js验证form表单示例 检测测试了js表单验证,无jQuery(简单的功能有时无需jQuery版本) js代码如下: <script type="text/javascript& ...
- C#多线程的用法1-简单示例
写在前面:阅读本系列文章即表示你已经知道什么是线程等理论知识,现在正想了解如何正确的使用线程进行编程工作. /// <summary> /// 单线程工作示例 /// </summa ...
- jQuery使用ajaxSubmit()提交表单示例
ajaxSubmit(obj)方法是jQuery的一个插件jquery.form.js里面的方法,所以使用此方法需要先引入这个插件.如下所示: 代码如下: <script src=" ...
- MVC中ajax提交表单示例
页面中: @using (Ajax.BeginForm("Login", "User", new AjaxOptions() { HttpMethod = &q ...
- FreeMarker-简单示例
以下是简单的FreeMarker示例,直接采用模板 + 数据模型 = 输出的方式.示例中是Application的项目,主要用于展示模板输出HTML文件的功能. 示例: 1.引入POM依赖 <! ...
随机推荐
- 浅谈JVM及原理
前言 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则JVM则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解JVM必要的知识点. 运行流程 我们都 ...
- 浅谈CSS的模块化
一.简介 Web前端模块化:HTML模块化.CSS模块化以及JS模块化三个部分: 二.CSS模块化背景 对于小型项目来说,css的量还不至于庞大,问题没有凸显,而如果要开发和持续维护一个较为大型的项目 ...
- 【6.10校内test】T2 医院设置
医院设置[题目链接] 感觉我超废 我是一个连floyd都不会写了的灵魂OI选手qwq(考场上写了半天spfa然后写炸了(微笑)) floyd的暴力: 1.先建树:用邻接矩阵存.存之前记得先初始化为IN ...
- 又是图论.jpg
BZOJ 2200 道路和航线重讲ww: FJ 正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到 T 个城镇 (1 ≤ T ≤ 25000),编号为 1 到 T.这些城镇之间通过 R 条 ...
- 小z的洞穴之旅 QDUOJ 并查集+连通块
小z的洞穴之旅 QDUOJ 并查集+连通块 原题链接 题意 小 z 同学在某个闲暇的周末决定去野外探险一波,结果在丛林深处中误打误撞进入了一个神秘的洞穴,虽然洞穴中光线昏暗,但小 z 凭借其敏锐的眼力 ...
- logstash启动时找不到自定义的JAVA_HOME环境变量
logstash java 版本问题 配置logstash收集应用日志时出现报错,说是找不到JAVA_HOME环境变量,但是明明已经设置了 logstash要求java 1.8以上,查看生产环境: [ ...
- 剑指offer-二叉搜索树与双向链表-python
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向.. # -*- coding:utf-8 -*- # class TreeN ...
- 剑指offer-序列化和反序列化二叉树-树-python
题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存.序列化可以基于先 ...
- SpringCloud入门(二)
ribbon实现负载均衡 上文只是将服务注册到eureka上,但是consumer还是硬编码调用,前文也有提到这种硬编码方式肯定是不合理的,一来服务上线之后,IP地址肯定是变动的, 再则,采用硬编码的 ...
- Vue 创建多页面应用模式
一.多页和单页 应用模式对比 多页应用模式 单页应用模式 应用组成 由多个完整页面组成 由一个外壳页面和多个页面片段组成 跳转方式 页面间跳转 在外壳页面里面,进行页面片段的跳转 加载方式 重新加 ...