<?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. Visdom可视化

    Visdom是基于Pytorch的可视化工具 安装方式: pip install visdom 因为Visdom本质上是一个Web服务器,把数据渲染到网页上,因此首先需要运行这个 服务器,如下: py ...

  2. Hive-生成一个大文件(小文件合并)

    set hive.execution.engine=mr; --在 map-reduce 作业结束时合并小文件.如启用,将创建 map-only 作业以合并目标表/分区中的文件. set hive.m ...

  3. servlet3.0文件上传与下载

    描述:文件上传与下载是在JavaEE中常见的功能,实现文件上传与下载的方式有多种,其中文件上传的方式有: (1)commons-fileupload: (2)Servlet 3.0 实现文件上传 (3 ...

  4. es6 js数组常用方法

    一:会改变自身的方法 1.array.push(element1, ...elementN) 添加一个或多个元素到数组的末尾,并返回数组新的长度 2.array.unshift(element1, . ...

  5. ubuntu 配置 tftp 服务器

    一. 安装 tftp 1.1. 安装 tftp 所需的软件. a. 安装 tftp-hpa,tftpd-hpa,前者是客户端,后者是服务程序, 在终端下输入 sudo apt-get install ...

  6. ThinkPHP5 与 composer

    我是通过安装composer来获取tp5安装的,也是学习一下 在 Windows 中,你需要下载并运行 Composer-Setup.exe. 安装时,要选择本地环境中php.exe作为跟目录,这个可 ...

  7. 源码看React 事件机制

    对React熟悉的同学都知道,React中的事件机制并不是原生的那一套,事件没有绑定在原生DOM上,发出的事件也是对原生事件的包装.那么这一切是怎么实现的呢? 事件注册 首先还是看我们熟悉的代码 &l ...

  8. HDU 1594 find the max

    数序问题. 题意是说 一个数列 a1,a2,--ai,--an;  x=i , y = ai:找两个点斜率绝对值.!最大. 第一次没找绝对值,--认真读题. .. x 每次加1 . 仅仅须要找 相邻的 ...

  9. 计算机系统结构总结_Memory Hierarchy and Memory Performance

    Textbook: <计算机组成与设计——硬件/软件接口>  HI <计算机体系结构——量化研究方法>       QR 这是youtube上一个非常好的memory syst ...

  10. SpringBoot自定义配置步骤

    1. 在yml中填写自定义配置 ly: sms: accessKeyId: # 短信配置 accessKeySecret: signName: xx商城 # 签名名称 verifyCodeTempla ...