分类: PHPCMS |
  • 1

php闭包绑定

在PHP5.3中引入了匿名函数,当在PHP中定义一个匿名函数的时候会产生一个Closure对象,也就是闭包。在PHP5.4起这个对象加入了一些方法,用来对这个闭包对象进行更多的控制。主要是Closure的bind静态方法(Closure也有一个bindTo非静态方法,但功能基本上和bind方法一样)。

网上对PHP闭包的绑定的介绍比较少,我之前也没有怎么用过,只是自己查了一下手册,写了一些测试性质的代码,大致知道了闭包的绑定是怎么用的。

函数原型

public static Closure Closure::bind ( Closure $closure , object $newthis [, mixed $newscope = "static' ] )

第一个参数$closure就是一个闭包对象,第二个参数是这个闭包绑定的$this指针,第三个是闭包的新的作用域。

查看更多...

Tags: php 闭包

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 8747

phpcmsv9 如何实现用户登录

因为有时候我们需要自己实现用户登录,比如我们用phpcms做一个微信Oauth2.0授权,授权之后直接登录,这过程中不需要用户输入账户和密码。所以我们就要搞清楚,phpcmsv9它是怎么实现用户登录的。换名话说,phpcms的php代码在什么情况下会认定这个用户已经登录了。

首先,我们肯定要去看phpcms它原生的登录程序是怎么写的,然后我们要去看它是怎么判断这个用户已经登录了。

登录程序是怎么写的?

查看更多...

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 5884

phpcmsv9 phpsso无法同步退出

phpcmsv9自带了一个phpsso_server用于多站点同步登录,还可以整合ucenter。为了不改动太多的代码,今天整合ECSHOP和PHPCMS的时候还是用了这个phpsso。ECSHOP很方便,简单配置了一下就可以和ucenter通信了。这个phpsso搞了半天没有成功和ucenter通信。经过几个小时的琢磨,最终还是成功让他们通信了。注册,登录,都可以同步,唯独在phpcms中退出登录时ECSHOP没有退出,反之确可以。

问题出现的原因: 

 首页看到了PHPCMS的登出的代码里面有一句同步登出的语句:

$synlogoutstr = $this->client->ps_member_synlogout();

 这个同步登出的代码是这样的

	/**
	 * 同步退出
	 * @param string $uid
	 * @return string javascript用户同步退出js
	 */
	public function ps_member_synlogout() {
		return $this->_ps_send("synlogout', array());
	}

查看更多...

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 6324

为什么phpcms的缓存不能失效

 用过sae的同学应该知道sae上面是不能写本地文件的,但PHPCMS默认的缓存就是文件缓存,并且缓存在phpcms又相当重要,如果想在sae上运行phpcms首先要解决的就是把文件缓存换掉。

查看更多...

Tags: phpcms 缓存

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 5459

PHPCMS留言板模块

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 4785

PHPCMS乱解读之 PHPCMS如何生成模型表单

 PHPCMS有模型管理,定义好一个模型之后PHPCMS会自动生成一个编辑这个模型的内容的表单。看看PHPCMS是怎么做到这一点的。

首先找到表单页面的地址大致是这样的

/index.php?m=content&c=content&a=add&menuid=&catid=6&pc_hash=dVlnS2&pc_hash=dVlnS2

根据PHPCMSV9 乱解读 之 PHPCMS V9的MVC的介绍, 可以很方便的找到代码所在文件位于modules/content/content.php文件中。再从此文件中找到add方法,就可以看到生成表单和处理表单的代码。

这里我们不看处理表单的代码,直接看如何生成表单。

查看更多...

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 11766

Phpcms V9 网站迁移更换域名方法

网站在发展的过程中,很可能多次的修改域名。那么在Phpcms V9中我们要怎么进行设置呢?

请进行以下步骤的修改:

  1. 1. 修改/caches/configs/system.php里面所有和域名有关的,把以前的老域名修改为新域名就可以了。
  2. 2. 进行后台设置-》站点管理 对相应的站点的域名进行修改。
  3. 3. 更新系统缓存。点击后台右上角的“更新缓存”按钮。
  4. 4. 进入内容-》附件管理-》附件地址替换。把附件地址批量的替换为新的地址。
  5. 5. 内容-》批量更新URL 。把所有的文章的地址都更新一下。
  6. 6. 下面就是把全站都生成一次了。

再进一步,怎么转移空间,并且更换域名呢?

这种情况比更换域名更加复杂一点,涉及到数据库的迁移。

查看更多...

Tags: phpcms

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 4953

PHPCMS添加自定义设置

懒得看文字的同学,可以直接这里观看视频教程。 

 

在使用PHPCMS的时候有时候可能会需要用到添加自定义的设置,比如每个页面底部的版权信息等,而这些在后台是找不到地方来设置的。本文提出了一种可以添加自定义配置的方法如下。

1. 进入后台,来到“设置”-> “站点设置” -> "选择一个站点"->"修改",弹出站点修改页面。

2. 找到phpcms的根目录,编辑phpcms/modules/admin/templates/site_edit.tpl.php

查看更多...

Tags: phpcms

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 6901

 phpcms v9 根据栏目id( catid ) 获取栏目名称、url等等 

调用方法:

{$CATEGORYS[栏目ID][catname]}

注意别掉了“S”。

以此类推,调用url:

{$CATEGORYS[栏目ID][url]}

 

除了url外,还有一些其它的属性也可以参考:

 

  array (
    "catid' => '26',
    'siteid' => '2',
    'type' => '0',
    'modelid' => '18',
    'parentid' => '24',
    'arrparentid' => '0,24',
    'child' => '0',
    'arrchildid' => '26',
    'catname' => '网络营销案例',
    'style' => '',
    'image' => '',
    'description' => '',
    'parentdir' => '/',
    'catdir' => 'wangluoyingxiao',
    'url' => 'http://www.zeroplace.cn/cms/index.php?m=content&c=index&a=lists&catid=26',
    'items' => '0',
    'hits' => '0',
    'setting' => 'array (
  \'workflowid\' => \'\',
  \'ishtml\' => \'0\',
  \'content_ishtml\' => \'0\',
  \'create_to_html_root\' => \'0\',
  \'template_list\' => \'site\',
  \'category_template\' => \'category\',
  \'list_template\' => \'list\',
  \'show_template\' => \'show\',
  \'meta_title\' => \'\',
  \'meta_keywords\' => \'\',
  \'meta_description\' => \'\',
  \'presentpoint\' => \'1\',
  \'defaultchargepoint\' => \'0\',
  \'paytype\' => \'0\',
  \'repeatchargedays\' => \'1\',
  \'category_ruleid\' => \'6\',
  \'show_ruleid\' => \'16\',
)',
    'listorder' => '26',
    'ismenu' => '1',
    'sethtml' => '0',
    'letter' => 'wangluoyingxiaoanli',
    'usable_type' => ',56,57,',
    'additional' => '',
    'commenttypeid' => '0',
    'create_to_html_root' => '0',
    'ishtml' => '0',
    'content_ishtml' => '0',
    'category_ruleid' => '6',
    'show_ruleid' => '16',
    'workflowid' => '',
    'isdomain' => '0',
  ),

查看更多...

Tags: phpcms

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 6313

PHPCMS乱解读之 pc标签的实现

标 题: PHPCMS乱解读之 pc标签的实现
作 者: web开发网[http://www.zeroplace.cn]
时 间: 2013/07/31 12:15:00
链 接: http://www.zeroplace.cn/article.asp?id=855
说 明: 转载请保留本段文字 

最近电脑硬件出了点问题,现正在修理中呀,敢问各位有没有会修主板那种电路的...

 前面在写 PHPCMSV9 乱解读 之 PHPCMS V9的MVC 的时候有写到phpcms模板解析引擎的部分,但只是解释了一下模板是怎么编译的,没有具体讲其中的每个标签的实现细节。实际上多数的标签都很常规,并没有什么好说的。这里我来写写PC这个标签的实现方法。

 首先还是看到libs/classes/template_cache.class.php这个文件中template_parse这个方法,发现里面有一句代码是用来编译pc这个标签的

$str = preg_replace("/\{pc:(\w+)\s+([^}]+)\}/ie", "self::pc_tag("$1','$2', '$0')", $str);

查看更多...

Tags: phpcms

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 9927

PHPCMS乱解读之phpcmsv9中的缓存

 在 PHPCMSV9 乱解读 之 PHPCMS V9的MVC 这篇文章中有看到一组global.func.php中的函数,但是那时候没有细讲。

/**
 * 写入缓存,默认为文件缓存,不加载缓存配置。
 * @param $name 缓存名称
 * @param $data 缓存数据
 * @param $filepath 数据路径(模块名称) caches/cache_$filepath/
 * @param $type 缓存类型[file,memcache,apc]
 * @param $config 配置名称
 * @param $timeout 过期时间
 */
function setcache($name, $data, $filepath="', $type='file', $config='', $timeout=0) {
	pc_base::load_sys_class('cache_factory','',0);
	if($config) {
		$cacheconfig = pc_base::load_config('cache');
		$cache = cache_factory::get_instance($cacheconfig)->get_cache($config);
	} else {
		$cache = cache_factory::get_instance()->get_cache($type);
	}

	return $cache->set($name, $data, $timeout, '', $filepath);
}

/**
 * 读取缓存,默认为文件缓存,不加载缓存配置。
 * @param string $name 缓存名称
 * @param $filepath 数据路径(模块名称) caches/cache_$filepath/
 * @param string $config 配置名称
 */
function getcache($name, $filepath='', $type='file', $config='') {
	pc_base::load_sys_class('cache_factory','',0);
	if($config) {
		$cacheconfig = pc_base::load_config('cache');
		$cache = cache_factory::get_instance($cacheconfig)->get_cache($config);
	} else {
		$cache = cache_factory::get_instance()->get_cache($type);
	}
	return $cache->get($name, '', '', $filepath);
}

 

查看更多...

Tags: v9 phpcms 缓存

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 14825

PHPCMSV9 乱解读 之 PHPCMS V9的MVC

现在的程序设计基本上都讲求MVC,数据与模板分离,单一入口。

这篇文章准先写一写PHPCMSV9的运行和它的MVC是怎么实现的!
 
(习惯问题我喜欢将所有的方法称之为函数,所以下面我如果提到函数的话很可能就是某个类的一个方法)
 

查看更多...

Tags: phpcms v9 php mvc

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 11642
  • 1