设为首页 收藏本站
查看: 595|回复: 0

[经验分享] PHP高级程序设计:模式、框架与测试 学习笔记

[复制链接]

尚未签到

发表于 2017-4-9 13:33:37 | 显示全部楼层 |阅读模式
  

  静态成员,作用域为自身。
使用静态,效率会高。是因为避免了实例化(会占用一小部分系统资源)

在使用::$变量 时,变量前要加“$”。是因为php当前不支持动态的静态变量的使用,也就是说,不支持可变的静态变量。
不用$时,访问的是类中的某个常量
class MyObject {public static $myVariable = 10;}echo MyObject::$myVariable;  在PHP中使用作用域限定操作符时,用变量作为类的名称是不允许的。eg: $classnameinvar::somemethod()

单列模式和工厂模式
单列模式被当作职责模式,(是因为它将创建对象的控制权委托到一个单一的访问点上。)它用来在应用程序中创建一个单一的功能访问点。在任何时候,应用程序中都只会有这个类仅有的一个实例存在。
必须拥有:
1. 一个构造函数,且必须被标记为private
2. 一个保存类的实例的静态成员变量
3. 一个访问这个实例的公共的静态方法
单列类不能在其他类中直接实例化。只能被其自身实例化。
class Database {private $_db;static $_instance;private function __construct() {$this->_db = pg_connect('dbname=example_db');}private __clone() {};public static function getInstance() {if( ! (self::$_instance instanceof self) ) {self::$_instance = new self();}return self::$_instance;}public function query($sql) {//Run a query using $this->_dbreturn pg_query($this->_db,$sql);}}
工厂模式在多态性设计中非常重要。是指包含了一个专门用来创建其他对象的方法的类。
它允许动态地替换类、修改配置,并且

异常
表示由try、catch和throw等语句和Exception类组成的整个处理机制
try 用来定义检测异常的代码块
catch 处理异常时的处理方法 catch ( Exception $e) { }
throw 语句是用来触发异常发生并且在这点上中断处理过程的。必须给它传递一个Exception

  #debug_backtrace()
  

  SPL序列化
  <?phperror_reporting(E_ALL);class Base implements Serializable {private $baseVar;public function __construct() {$this->baseVar = 'foo';}public function serialize() {return serialize($this->baseVar);}public function unserialize($serialized) {$this->baseVar = unserialize($serialized);}public function printMe() {echo $this->baseVar . "\n";}public function ctest($test){echo $test;}}class Extender extends Base {private $extenderVar;public function __construct() {parent::__construct();$this->extenderVar = 'bar';}public function serialize() {$baseSerialized = parent::serialize();return serialize(array($this->extenderVar, $baseSerialized));}public function unserialize( $serialized ) {$temp = unserialize($serialized);$this->extenderVar = $temp[0];parent::unserialize($temp[1]);}}$instance = new Extender();$serialized = serialize($instance);echo $serialized . "\n";$restored = unserialize($serialized);echo '<hr/>';$restored->printMe();$restored->ctest('xxoo');

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-362464-1-1.html 上篇帖子: php文件下载IE文件名乱码问题 下篇帖子: PHP表单提交错误后返回内容消失问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表