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相关推荐

  1. 将查询结果插入到现有表中

    在数据库日常维护工作中,我们可能经常需要把某个查询结果插入到现有的表中.如需要把两张表进行合并.需要把另外一张报纸能够符合条件的的记录插入到现有的表中.需要把另外一张表中的某些字段重新整理后插入到现有 ...

  2. Spark SQL来读取现有Hive中的数据

    Spark SQL主要目的是使得用户可以在Spark上使用SQL,其数据源既可以是RDD,也可以是外部的数据源(比如Parquet.Hive.Json等). Spark SQL的其中一个分支就是Spa ...

  3. office自定义安装选项_如何自定义Office 2013中功能区上的现有选项卡

    office自定义安装选项 The Ribbon in Microsoft Office 2013 provides quick access to many features and options ...

  4. 在Microsoft System Center中利用您的现有投资管理VMware--Veeam MP v6.5

    在 Microsoft System Center 中利用您的现有投资管理 VMware VeeamManagement Pack (MP) v6.5 适用于物理.虚拟和备份基础架构的单一的虚拟管理平 ...

  5. 圣诞节PNG免扣素材|轻松向现有项目中添加节日元素!

    制作任何东西,从定制的圣诞卡,图标,可以用于网站设计或包装,甚至图形,照片和插图,PNG免扣格式图片素材,无疑可以帮助你有效的完成项目. 节日的装饰不仅仅包括挂一棵圣诞树和添加金属箔.装饰也可以延伸到 ...

  6. ffmpeg 从现有视频中截取一段

    ffmpeg 从现有视频中截取一段 1. ffmpeg -i ./input.mp4 -vcodec copy -acodec copy -ss 00:00:10 -to 00:00:25 ./out ...

  7. 在现有dataframe中凭空添加一层索引

    在现有dataframe中凭空添加一层索引 dff = pd.concat((df, DataFrame([])), keys=['我是新索引', ''], axis=1)

  8. mysql 指定位置添加列,如何在MySQL现有表中的特定位置添加列?

    要在现有表中的特定位置添加列,请使用after命令.语法如下-ALTER TABLE yourTableName ADD COLUMN yourColumnName data type AFTER y ...

  9. 实际案例:在现有代码中通过async/await实现并行

    实际案例:在现有代码中通过async/await实现并行 一项新技术或者一个新特性,只有你用它解决实际问题后,才能真正体会到它的魅力,真正理解它.也期待大家能够多分享解一些解决实际问题的内容. 在我们 ...

最新文章

  1. 属于窄带噪声的是热噪声_时钟201系列: 非相位噪声的情况 (第一篇)
  2. assignment makes pointer from integer without a...
  3. LeetCode 1 两数之和
  4. cacti中监控squid的方法
  5. 计算机存储的大小端模式解析
  6. 将来,你会成为这三种程序员之一
  7. vue+webpack+npm dev环境下内存溢出解决办法
  8. javascript实例——鼠标特效篇(包含2个实例)
  9. [错误记录] --- rocketmq批量消费设置参数的问题
  10. Apache Spark Jobs 性能调优(二)
  11. ubuntu mysql 操作_Ubuntu系统下MySQL数据库基本操作
  12. php中的三元运算符
  13. android6.0/7.0禁掉Selinux
  14. 无碳小车 matlab,无碳小车的创新设计及MATLAB,SOLIDWORKS,CATIA仿真
  15. POI 导出Excel文件 设置指定列格式为文本格式
  16. 宽松委托转换(Relaxed delegate conversion)
  17. Androidx介绍及迁移
  18. 串口服务器与协议转换器的区别,串口服务器和串口转以太网模块区别
  19. 网上哪里打印资料便宜?
  20. Unity 一起看+弹幕 Socket通信

热门文章

  1. zabbix客户端掉线查看进程time_wait过多
  2. mysql 实例名_不为人知的MySQL高可用复制管理工具——Orchestrator简介
  3. java安装找不到uri,【找不到与请求 URI匹配的 HTTP 资源】(转)
  4. 1.无重复字符的最长子串
  5. zookeeper的安装与配置(单机和集群)
  6. Cocos2d-x中使用第三方so库
  7. input type=checkbox 前面有个可供打钩的小方框 HTML DOM Checkbox 对象
  8. Sqlserver2008相关配置问题
  9. javascript实现的一个信息提示的小功能/
  10. python学习笔记12-类代码编写细节