<?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. Powershell 脚本输出前十条消耗内存的进程到excel

    # create new excel instance $objExcel = New-Object -comobject Excel.Application $objExcel.Visible = ...

  2. python下对文件的操作(非目录)

    总文件夹 子文件夹01 文档01.txt-------------------------------------------------------------------------------- ...

  3. Redis-集群操作

    一.查看集群状态 1.查看集群状态 /opt/redis/src/redis-cli -h 本机IP -p redsi实例端口 -c #连接redis实例 /opt/redis/src/redis-c ...

  4. python函数-内置函数

    官方文档[http://www.cnblogs.com/dingkailinux/p/7954484.html] 1.int()函数,表示整形,如 1,2,-1,-2. 2.float()函数,表示浮 ...

  5. Java - Java Mail邮件开发(3)spring +Java Mail + Velocity

    1.spring + Java Mail + Velocity 项目结构: 注意:用户包中引入各包的顺序问题.如velocity-2.1. beans.xml <?xml version=&qu ...

  6. roslyn\csc.exe

    vs2019调试运行时提示roslyn\csc.exe错误时在nuget包管理器控制台里输入:  Update-Package Microsoft.CodeDom.Providers.DotNetCo ...

  7. linux 进程2

    一. exec族函数 1.1. 为什么需要exec函数 a. fork子进程是为了执行新程序(fork创建了子进程后,子进程和父进程同时被OS调度执行,因此子进程可以单独的执行一个程序,这个程序宏观上 ...

  8. uboot 主Makefile分析

    一. Makefile 配置 1.1. make xxx_config 1.1.1. 笔者实验时是make x210_sd_config a. x210_sd_config是Makefile下的一个目 ...

  9. [ERROR] Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Cannot access nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public) in off

    这个错误是将work offline打勾引起的. 这个是离线工作模式,相当于断网,远程的jar会拉不下来.

  10. scrollIntoView 与平滑滚动

    经常有这样的需求:点击一个链接(内链)跳转到当前页面中间某个部分.对于这样的需求,很容易想到使用锚点实现.但有一个问题:滚动一步到位,太生硬了. 我还是比较喜欢平滑滚动.HTML5 中提供了 CSS ...