博客调整注册用户的权限为投稿者,欢迎大家可以踊跃的为PHP iask投稿提问,战地会不遗余力的作出尽量完美的解答。争取把PHPiask.com做成一个受众多人欢迎的PHP站点,希望能够帮助更多的PHP爱好者。

苹果与Openbiz的重UI主义: 视觉决定成败

2012年4月4日

面向读者范围:
软件项目经理 及 创业者

引文
2012年初苹果公司在发布IOS5后的应用开发人员中心的官方演讲视频中提出这样一个概念“决定一个App是否流行,60%以上的因素是UI(外观),20%是业务逻辑。”,结合笔者自身从开源UNIX开发到WebApp开发,在行业内摸爬十余载的经验,本文我们将通过移动应用开发的趋势来透析企业应用软件的发展。


阅读全文…

jixian Openbiz, 五花八门 , , , ,

Openbiz 关于PHP开源框架新理念

2012年4月4日

Openbiz 关于PHP开源框架新理念

面向读者范围:
软件行业经理 及 创业者

笔者自述
我从事软件开发行业至今已经将近十二年,经历了从Windows 3.2第一次登陆中国 到苹果 安卓统一移动应用市场的一场场变革。着这场商战中,把握住未来发展的方向才是确保再竞争中生存的硬道理。由此发起本文。

引文
多年来一直在探寻企业级应用的未来发展方向,发现对于技术的积累与重用是这个行业的提高竞争力的重要因素之一。
(当然这并不只是成功的唯一条件)让我以技术的重用性为视角来看一下这个行业的发展兴衰。

阅读全文…

jixian Openbiz, 高级编程 , ,

Openbiz 的PHP元数据编程概论

2012年4月4日

引言
元数据(Metadata)编程思想源于Java这种高级语言,简单的说就是将业务逻辑与实现代码进行分离,仅用XML这类的描述性语言描述业务之间的映射关系,不需要写实现代码即完成编程。

源于Java的元数据编程特性
原数据是软件架构方面的先进技术之一,让你可以编写更少的代码实现更多的事情,将业务逻辑的重用性发挥到了极致。也许听起来有些抽象,让我们来看一个实际的例子来帮你理解我主张的元数据编程理念。

Openbiz架构让 PHP的元数据编程变为可能
对于脚本级的PHP语言,现在已经成为web开发的主流语言之一。但由于他的出身是一个面向过程的编程语言(我说的是php3,有铁锹那年的事儿了),并不像Python或者Ruby这样的语言,上来就是为了对象而生的极致对象化语言。
阅读全文…

jixian Openbiz, 高级编程 , , ,

Openbiz框架 实现PHP极致业务逻辑重用

2012年4月4日

引言

本文继续介绍“免费开源”的Openbiz框架,它是一个基于Zend框架基础之上的应用层PHP框架。前文《Openbiz 实现 PHP的元数据编程》曾提及过通过元数据(Metadata)来描述极致化描述业务逻辑,其精髓在于高内聚、低耦合的极致抽象思想。本文我们将讲解如何通过这种思路实现极致的业务逻辑重用。

构建于Zend之上的 Openbiz 中间层

这种架构方式类似于Java提出的中间层概念,在Openbiz系统中 除了数据逻辑,会话内存管理,对像工厂这些高级特性外,从它的源代码结构中我们看到大多数外部业务逻辑的实现还是依靠 Zend底层来完成的,而对于这些逻辑Openbiz本身所做的工作相当于介于调用逻辑和实现逻辑只见的中间层。(结构如图所)


阅读全文…

jixian Openbiz, PHP案例教程 , , ,

QQ共享登录API错误代码说明

2012年3月8日

【QQ登录】公共返回码说明

公共返回码-for OAuth2.0协议 阅读全文…

战地音乐 五花八门

基于jquery的图片懒加载:LazyLoad插件参数详解

2011年9月14日

Jquery.LazyLoad.js插件参数详解:
下面对LazyLoad插件的一些参数进行说明,供使用者做出更贴切的效果。 阅读全文…

战地音乐 Openbiz, js代码库

mysql随机查询数据

2011年5月7日

MySQL是开放源代码,MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。 那么如何在MySQL实现中取出随机数据呢?

阅读全文…

战地音乐 五花八门

PHP 获得用户操作系统的换行符

2011年4月27日
/**
 * 获得用户操作系统的换行符
 *
 * @access  public
 * @return  string
 */
function get_crlf(){
    if (stristr($_SERVER['HTTP_USER_AGENT'], 'Win')){
        $the_crlf = '\r\n';
    }
    elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Mac')){
        $the_crlf = '\r'; // for old MAC OS
    }
    else{
        $the_crlf = '\n';
    }
 
    return $the_crlf;
}

战地音乐 PHP常用代码, 代码库

PHP 获得用户的真实IP地址

2011年4月27日
 
/**
 * 获得用户的真实IP地址
 *
 * @return  string
 */
function real_ip(){
    static $realip = NULL;
 
    if ($realip !== NULL){
        return $realip;
    }
 
    if (isset($_SERVER)){
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
            $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
            /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
            foreach ($arr AS $ip){
                $ip = trim($ip);
 
                if ($ip != 'unknown'){
                    $realip = $ip;
 
                    break;
                }
            }
        }
        elseif (isset($_SERVER['HTTP_CLIENT_IP'])){
            $realip = $_SERVER['HTTP_CLIENT_IP'];
        }
        else{
            if (isset($_SERVER['REMOTE_ADDR'])){
                $realip = $_SERVER['REMOTE_ADDR'];
            }
            else{
                $realip = '0.0.0.0';
            }
        }
    }
    else{
        if (getenv('HTTP_X_FORWARDED_FOR')){
            $realip = getenv('HTTP_X_FORWARDED_FOR');
        }
        elseif (getenv('HTTP_CLIENT_IP')){
            $realip = getenv('HTTP_CLIENT_IP');
        }
        else{
            $realip = getenv('REMOTE_ADDR');
        }
    }
 
    preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
    $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
 
    return $realip;
}

战地音乐 PHP常用代码, 代码库

PHP对象转成数组的函数

2011年4月26日
/**
 * 对象转数组
 * @author 佚名
 * @param object $obj
 * @return array
 */
function object_to_array($obj){
	$_arr = is_object($obj) ? get_object_vars($obj) : $obj;
	foreach ($_arr as $key => $val){
		$val = (is_array($val) || is_object($val)) ? $this->object_to_array($val) : $val;
		$arr[$key] = $val;
	}
	return $arr;
}

战地音乐 PHP常用代码, 代码库