本文整理汇总了PHP中Q::singleton方法的典型用法代码示例。如果您正苦于以下问题:PHP Q::singleton方法的具体用法?PHP Q::singleton怎么用?PHP Q::singleton使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Q
的用法示例。
在下文中一共展示了Q::singleton方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: loadCached
/**
* 载入缓存的 YAML 解析结果,如果缓存失效,则重新解析并生成缓存
*
* 用法:
* @code php
* $arr = Helper_YAML::loadCached($filename);
* @endcode
*
* $replace 参数的用法参考 load() 方法。
*
* @param string $filename 要解析的 yaml 文件名
* @param array $replace 对于 YAML 内容要进行自动替换的字符串对
* @param string $cache_backend 要使用的缓存后端
*
* @return array 解析结果
* @throw Q_FileNotFoundException
*/
static function loadCached($filename, array $replace = null, $cache_backend = null)
{
static $cache_obj = null;
if (!is_file($filename)) {
throw new Q_FileNotFoundException($filename);
}
$policy = array('lifetime' => 86400, 'serialize' => true);
$mtime = filemtime($filename);
$id = 'yaml_cache_' . md5($filename);
if (is_null($cache_backend)) {
if (is_null($cache_obj)) {
$cache_obj = Q::singleton(Q::ini('runtime_cache_backend'));
}
$cache = $cache_obj;
} else {
$cache = Q::singleton($cache_backend);
}
/* @var $cache QCache_File */
$data = $cache->get($id, $policy);
if (!isset($data['yaml']) || empty($data['mtime']) || $data['mtime'] < $mtime) {
// 缓存失效
$data = array('mtime' => $mtime, 'yaml' => self::load($filename, $replace));
$cache->set($id, $data, $policy);
}
return $data['yaml'];
}
示例2: authorizedUDI
/**
* 检查指定角色是否有权限访问特定的控制器和动作
*
* @param array $roles
* @param string|array $udi
*
* @return boolean
*/
function authorizedUDI($roles, $udi)
{
/**
* 将 UDI 封装为一个资源
* 读取控制器的 ACL(访问控制列表)
* 通过 QACL 组件进行权限检查
*/
$roles = Q::normalize($roles);
$udi = QContext::instance()->normalizeUDI($udi);
$controller_acl = $this->controllerACL($udi);
// 首先检查动作 ACT
$acl = Q::singleton('QACL');
$action_name = strtolower($udi[QContext::UDI_ACTION]);
if (isset($controller_acl['actions'][$action_name])) {
// 如果动作的 ACT 检验通过,则忽略控制器的 ACT
return $acl->rolesBasedCheck($roles, $controller_acl['actions'][$action_name]);
}
if (isset($controller_acl['actions'][QACL::ALL_ACTIONS])) {
// 如果为所有动作指定了默认 ACT,则使用该 ACT 进行检查
return $acl->rolesBasedCheck($roles, $controller_acl['actions'][QACL::ALL_ACTIONS]);
}
// 否则检查是否可以访问指定控制器
return $acl->rolesBasedCheck($roles, $controller_acl);
}
示例3: dump
/**
* 将 PHP 数组(或者实现了 ArrayAccess 接口的对象)输出为字符串
*
* @param array $data 要输出的数组
* @param int $indent 缩进空格数
*
* @return string 输出结果
*/
static function dump($data, $indent = 2)
{
$dumper = Q::singleton('sfYamlDumper');
return "# <?php die(); ?>\n\n" . $dumper->dump($data, 1) . "\n";
}
示例4: log
/**
* 追加日志到日志缓存
*
* @param string $msg
* @param int $type
*/
static function log($msg, $type = self::DEBUG)
{
static $instance;
if (is_null($instance)) {
$instance = Q::singleton('QLog');
}
/* @var $instance QLog */
$instance->append($msg, $type);
}
示例5: insertBooks
/**
* 创建书籍记录
*
* @param array $authors
* @param int $nums
*
* @return array
*/
protected function insertBooks(array $authors, $nums = 10)
{
$tableBooks = Q::singleton('Table_Books');
/* @var $tableBooks Table_Books */
$authors = array_values($authors);
$authors_count = count($authors);
$books = array();
for ($i = 0; $i < $nums; $i++) {
$c = mt_rand(1, $authors_count);
$rand_authors = array();
for ($j = 0; $j < $c; $j++) {
$rand_authors[] = $authors[mt_rand(0, $j * $j) % $authors_count];
}
$book = array('title' => 'BOOK ' . mt_rand(), 'intro' => 'INTRO ' . mt_rand(), 'authors' => $rand_authors);
$books[] = $tableBooks->create($book);
}
return $books;
}
示例6: testSingleton
function testSingleton()
{
$obj1 = Q::singleton('Class2');
$obj2 = Q::singleton('Class2');
$this->assertSame($obj1, $obj2);
}