<?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. 应用安全 - 工具 - Adobe - Adobe Flash Player - 漏洞 - 汇总

    CVE-2018-4878 Date 类型软件漏洞可被用于钓鱼 影响范围Flash Player版本28.0.0.137以及之前的所有版本 复现 分析

  2. DOM练习(邓邓版)

    先来图片: 今天直接粘代码: 下面是html: <h4>01.图片切换</h4> <img width = "100" src = "../ ...

  3. MySQL-快速入门(6)连接查询、子查询、正则表达式查询、数据的插入删除更新

    1.内连接查询:inner join ... on 只有满足条件的记录才能够出现在结果关系中,即完全相等.自连接查询是一种特殊的内连接查询. 2.外连接查询: 1>左外连接 / 左连接:返回包括 ...

  4. K8S工作原理

    kubernetes(k8s)是docker容器用来编排和管理的工具 我们通过kubectl向k8s Master发出指令.kubernetes Master主要是提供API Server.Sched ...

  5. Paper Reading_Database

    最近(以及预感接下来的一年)会读很多很多的paper......不如开个帖子记录一下读paper心得 AI+DB A. Pavlo et al., Self-Driving Database Engi ...

  6. MFC- socket 编程

    一.CAsyncSocket类 CAsyncSocket属于异步非阻塞类. CAsyncSocket类采用了windows socket中的WSAAsyncSelect模型.CAsyncSocket ...

  7. scala学习笔记(8)

    1.trait ------------------------------- 如果只有一个trait就使用extends进行扩展,如果是多个,就使用with对生于trait进行扩展 trait lo ...

  8. PHP至Document类操作 xml 文件

    今天将项目上传到服务器后,打开项目发现报错 Error:undefined function appendChild()......, 根据提示查看源代码,发现 new Document()-> ...

  9. Kali Linux安装及中文指南

    Kali Linux安装及中文指南 Kali Linux安装教程:https://blog.csdn.net/u012318074/article/details/71601382 Kali Linu ...

  10. Uva 10635 - Prince and Princess LCS/LIS

    两个长度分别为p+1和q+1的由1到n2之前的整数组成的序列,每个序列的元素各不相等,两个序列第一个元素均为1.求两个序列的最长公共子序列 https://uva.onlinejudge.org/in ...