PHP实例化子类
发布时间:2020-12-13 17:39:45 所属栏目:PHP教程 来源:网络整理
导读:我想在这里成为一个面向对象的编码器,所以我给自己一些简单的任务. 我构建了一个显示给定目录中所有图像的类.这很好,所以我将该类分成两个类,一个用于读取目录中的文件名并将它们传递给一个数组,另一个用于解析该数组并显示图片.子类中的方法与父类中的方法
我想在这里成为一个面向对象的编码器,所以我给自己一些简单的任务.
我构建了一个显示给定目录中所有图像的类.这很好,所以我将该类分成两个类,一个用于读取目录中的文件名并将它们传递给一个数组,另一个用于解析该数组并显示图片.子类中的方法与父类中的方法完全相同(当然除了parent :: for this->). 现在看来,当我实例化子类并调用它的方法时,根本没有任何事情发生. 类别: class Picfind { public function findPics($dir){ $files = array(); $i=0; $handle = opendir($dir); while (false !== ($file = readdir($handle))){ $extension = strtolower(substr(strrchr($file,'.'),1)); if($extension == 'jpg' || $extension == 'gif' || $extension == 'png'){ // now use $file as you like $i++; $files['file' . $i] = $file; } } return $files; } } class DisplayPics extends Picfind { function diplayPics($dir) { echo 'displayPics method called'; foreach(parent::findPics($dir) as $key => $val) { echo '<img src="' . $dir . $val . '" img><br/>'; } } } 实例: include("class.picFind.php"); $Myclass = new DisplayPics(); $Myclass->displayPics('./images/'); 解决方法
你写道,你想学习面向对象的编程.以下内容如何:
class PicFinder { /** * @return array */ public function inDirectory($directory) { return // array of files } } class PicPresentation { public function present(array $pictures) { // your presentation code } } $path = '/your/path'; $datasource = new PicFinder(); $presentation = new PicPresentation(); $pictures = $datasource->inDirectory($path); $presentation->present($pictures); 保持分离和松散耦合.一个对象应该对一件事负责,例如一个对象从目录中获取图片列表,另一个对象用于演示.祝好运! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |