<?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 单示例编程的更多相关文章

  1. jquery 通过submit()方法 提交表单示例

    jquery 通过submit()方法 提交表单示例: 本示例:以用户注册作为例子.使用jquery中的submit()方法实现表单提交. 注:本示例仅提供了对表单的验证,本例只用选用了三个字段作为测 ...

  2. Html注册表单示例

    注册表单示例,出自<网页开发手记:Html,CSS,JavaScript实战详解>.   <html>   <head>   <title>注册表单&l ...

  3. PySe-002-Py-简单示例及编码设定

    非常简单而又国际化的例子 Hello World!在控制台依次输入命令:python, print "This is first program %s" % "Hello ...

  4. Java复习11. 单例编程

    Java复习11. 单例编程 1.最简单的写法,那个方式是线程不安全的 public class Singleton {     private static Singleton instance; ...

  5. js验证form表单示例

    js验证form表单示例 检测测试了js表单验证,无jQuery(简单的功能有时无需jQuery版本) js代码如下:   <script type="text/javascript& ...

  6. C#多线程的用法1-简单示例

    写在前面:阅读本系列文章即表示你已经知道什么是线程等理论知识,现在正想了解如何正确的使用线程进行编程工作. /// <summary> /// 单线程工作示例 /// </summa ...

  7. jQuery使用ajaxSubmit()提交表单示例

    ajaxSubmit(obj)方法是jQuery的一个插件jquery.form.js里面的方法,所以使用此方法需要先引入这个插件.如下所示:   代码如下: <script src=" ...

  8. MVC中ajax提交表单示例

    页面中: @using (Ajax.BeginForm("Login", "User", new AjaxOptions() { HttpMethod = &q ...

  9. FreeMarker-简单示例

    以下是简单的FreeMarker示例,直接采用模板 + 数据模型 = 输出的方式.示例中是Application的项目,主要用于展示模板输出HTML文件的功能. 示例: 1.引入POM依赖 <! ...

随机推荐

  1. 【Linux开发】【Qt开发】Qt界面键盘、触摸屏、鼠标的响应设置

    USB键盘 经过一番搜索,发现对Qt键盘的支持主要关系到两个方面: 1. 键盘类型确定: 4.7以前的Qt版本,如果是PS2圆孔键盘,Qt编译时需加上选项:-qt-kbd-vr41xx(未测试):如果 ...

  2. linux/work

    0.切换用户 //默认root用户是无固定密码的,并且是被锁定的,如果想给root设置一个密码 sudo passwd root //输入密码 & 确认密码 //切换root用户 su roo ...

  3. python+selenium下载文件——firefox

    修改Firefox的相关配置. 1.profile.set_preference('browser.download.folderList',2) 设置成0代表桌面,1代表下载到浏览器默认下载路径:2 ...

  4. 2019CSP-S游记(?)

    认识我的人都知道,我懒得写算法和模拟赛的博客,但是游记就不一样了,它比较好玩. Day0 中午随便收拾了下就坐高铁出发了,一个小时左右就到南昌了,随后坐公交,再步行到宾馆安置(也没多远). 宾馆离学校 ...

  5. pyhton之解析html的表格

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = 'jiangwenwen' from bs4 import BeautifulS ...

  6. JProfiler监控

    原文: https://blog.csdn.net/jijilan/article/details/83022715

  7. org.apache.httpcomponents:httpclient 工具类

    基于httpclient 版本4.4.1 因为http连接需要三次握手,在需要频繁调用时浪费资源和时间 故采用连接池的方式连接 根据实际需要更改  连接池最大连接数.路由最大连接数 另一个需要注意的是 ...

  8. 【转】海量数据解决思路之BitMap

    转载(http://zengzhaozheng.blog.51cto.com/8219051/1404108) 一.概述 本文将讲述Bit-Map算法的相关原理,Bit-Map算法的一些利用场景,例如 ...

  9. 分布式理论: CAP、BASE (转)

    分布式系统的CAP理论是由Eric Brewer于1999年首先提出的,又被称作布鲁尔定理(Brewer's theorem),CAP是对Consistency(一致性).Availability(可 ...

  10. SCUT - 486 - 无向图上的点 - Dijkstra

    好像原题是这个?https://www.cnblogs.com/kanchuang/p/11120052.html 这个有解释:https://blog.csdn.net/wddwjlss/artic ...