博客调整注册用户的权限为投稿者,欢迎大家可以踊跃的为PHP iask投稿提问,战地会不遗余力的作出尽量完美的解答。争取把PHPiask.com做成一个受众多人欢迎的PHP站点,希望能够帮助更多的PHP爱好者。
苹果与Openbiz的重UI主义: 视觉决定成败
2012年4月4日
Openbiz 关于PHP开源框架新理念
2012年4月4日
Openbiz 的PHP元数据编程概论
2012年4月4日
引言
元数据(Metadata)编程思想源于Java这种高级语言,简单的说就是将业务逻辑与实现代码进行分离,仅用XML这类的描述性语言描述业务之间的映射关系,不需要写实现代码即完成编程。
源于Java的元数据编程特性
原数据是软件架构方面的先进技术之一,让你可以编写更少的代码实现更多的事情,将业务逻辑的重用性发挥到了极致。也许听起来有些抽象,让我们来看一个实际的例子来帮你理解我主张的元数据编程理念。
Openbiz架构让 PHP的元数据编程变为可能
对于脚本级的PHP语言,现在已经成为web开发的主流语言之一。但由于他的出身是一个面向过程的编程语言(我说的是php3,有铁锹那年的事儿了),并不像Python或者Ruby这样的语言,上来就是为了对象而生的极致对象化语言。
阅读全文…
Openbiz框架 实现PHP极致业务逻辑重用
2012年4月4日
引言
本文继续介绍“免费开源”的Openbiz框架,它是一个基于Zend框架基础之上的应用层PHP框架。前文《Openbiz 实现 PHP的元数据编程》曾提及过通过元数据(Metadata)来描述极致化描述业务逻辑,其精髓在于高内聚、低耦合的极致抽象思想。本文我们将讲解如何通过这种思路实现极致的业务逻辑重用。
构建于Zend之上的 Openbiz 中间层
这种架构方式类似于Java提出的中间层概念,在Openbiz系统中 除了数据逻辑,会话内存管理,对像工厂这些高级特性外,从它的源代码结构中我们看到大多数外部业务逻辑的实现还是依靠 Zend底层来完成的,而对于这些逻辑Openbiz本身所做的工作相当于介于调用逻辑和实现逻辑只见的中间层。(结构如图所)
基于jquery的图片懒加载:LazyLoad插件参数详解
2011年9月14日
mysql随机查询数据
2011年5月7日
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 获得用户的真实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对象转成数组的函数
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; }



最近评论