php中的oop,在现有PHP中加入OOP
DISCLAIMER: since question obviously has been already answered, this is a long form comment on provided code.
编写类时,应尽量避免在构造函数中进行计算。这使得难以调试代码。
我实际上会像这样构造代码:
class ImageData {
protected $count = 0;
protected $dir = null;
protected $dirArray = null;
public function __construct( $dir = 'panos/thumbs') {
$this->dir = $dir;
}
public function getCount(){
if ( is_array($this->dirArray) ){
$this->initialize();
}
return $this->count;
}
public function getArray(){
if ( is_array($this->dirArray) ){
$this->initialize();
}
return $this->dirArray;
}
protected function initialize(){
$this->dirArray = $this->findImages();
sort($this->dirArray);
$this->count = count($dirArray);
}
protected function findImages( $extensions = array('jpg') ){
$files = array();
$dirCon = opendir($this->dir);
while ($name = readdir($dirCon)){
$current = strtolower(substr($foo, strrpos($foo, '.')+1));
if ( in_array( $current, $extensions ) ){
$files[] = $name;
}
}
closedir($dirCon);
return $files
}
}首先,我建议使用protected而不是private,如果你现在不需要它们private。因为类的private成员不是“可见的”,所以在扩展类时。
另一件事是将对象的初始化移动到实际需要的位置。通过微小的修改,这个类可以让你重复搜索文件夹,甚至可以在不同的文件夹中搜索。
如果您想学习如何在PHP的上下文中使用OOP,请首先阅读http://php.net/manual/en/language.oop5.php。你可能会发现PHP Object-Oriented Solutions书是一个很大的帮助。
php中的oop,在现有PHP中加入OOP相关推荐
- 将查询结果插入到现有表中
在数据库日常维护工作中,我们可能经常需要把某个查询结果插入到现有的表中.如需要把两张表进行合并.需要把另外一张报纸能够符合条件的的记录插入到现有的表中.需要把另外一张表中的某些字段重新整理后插入到现有 ...
- Spark SQL来读取现有Hive中的数据
Spark SQL主要目的是使得用户可以在Spark上使用SQL,其数据源既可以是RDD,也可以是外部的数据源(比如Parquet.Hive.Json等). Spark SQL的其中一个分支就是Spa ...
- office自定义安装选项_如何自定义Office 2013中功能区上的现有选项卡
office自定义安装选项 The Ribbon in Microsoft Office 2013 provides quick access to many features and options ...
- 在Microsoft System Center中利用您的现有投资管理VMware--Veeam MP v6.5
在 Microsoft System Center 中利用您的现有投资管理 VMware VeeamManagement Pack (MP) v6.5 适用于物理.虚拟和备份基础架构的单一的虚拟管理平 ...
- 圣诞节PNG免扣素材|轻松向现有项目中添加节日元素!
制作任何东西,从定制的圣诞卡,图标,可以用于网站设计或包装,甚至图形,照片和插图,PNG免扣格式图片素材,无疑可以帮助你有效的完成项目. 节日的装饰不仅仅包括挂一棵圣诞树和添加金属箔.装饰也可以延伸到 ...
- ffmpeg 从现有视频中截取一段
ffmpeg 从现有视频中截取一段 1. ffmpeg -i ./input.mp4 -vcodec copy -acodec copy -ss 00:00:10 -to 00:00:25 ./out ...
- 在现有dataframe中凭空添加一层索引
在现有dataframe中凭空添加一层索引 dff = pd.concat((df, DataFrame([])), keys=['我是新索引', ''], axis=1)
- mysql 指定位置添加列,如何在MySQL现有表中的特定位置添加列?
要在现有表中的特定位置添加列,请使用after命令.语法如下-ALTER TABLE yourTableName ADD COLUMN yourColumnName data type AFTER y ...
- 实际案例:在现有代码中通过async/await实现并行
实际案例:在现有代码中通过async/await实现并行 一项新技术或者一个新特性,只有你用它解决实际问题后,才能真正体会到它的魅力,真正理解它.也期待大家能够多分享解一些解决实际问题的内容. 在我们 ...
最新文章
- 属于窄带噪声的是热噪声_时钟201系列: 非相位噪声的情况 (第一篇)
- assignment makes pointer from integer without a...
- LeetCode 1 两数之和
- cacti中监控squid的方法
- 计算机存储的大小端模式解析
- 将来,你会成为这三种程序员之一
- vue+webpack+npm dev环境下内存溢出解决办法
- javascript实例——鼠标特效篇(包含2个实例)
- [错误记录] --- rocketmq批量消费设置参数的问题
- Apache Spark Jobs 性能调优(二)
- ubuntu mysql 操作_Ubuntu系统下MySQL数据库基本操作
- php中的三元运算符
- android6.0/7.0禁掉Selinux
- 无碳小车 matlab,无碳小车的创新设计及MATLAB,SOLIDWORKS,CATIA仿真
- POI 导出Excel文件 设置指定列格式为文本格式
- 宽松委托转换(Relaxed delegate conversion)
- Androidx介绍及迁移
- 串口服务器与协议转换器的区别,串口服务器和串口转以太网模块区别
- 网上哪里打印资料便宜?
- Unity 一起看+弹幕 Socket通信
热门文章
- zabbix客户端掉线查看进程time_wait过多
- mysql 实例名_不为人知的MySQL高可用复制管理工具——Orchestrator简介
- java安装找不到uri,【找不到与请求 URI匹配的 HTTP 资源】(转)
- 1.无重复字符的最长子串
- zookeeper的安装与配置(单机和集群)
- Cocos2d-x中使用第三方so库
- input type=checkbox 前面有个可供打钩的小方框 HTML DOM Checkbox 对象
- Sqlserver2008相关配置问题
- javascript实现的一个信息提示的小功能/
- python学习笔记12-类代码编写细节