【发布时间】:2011-12-31 15:28:30
【问题描述】:
我正在努力成为一名面向对象的编码员,所以我给自己一些简单的任务。
我构建了一个显示给定目录中所有图像的类。效果很好,所以我将该类分为两个类,一个用于读取目录中的文件名并将它们传递给一个数组,另一个用于解析该数组并显示图片。子类中的方法与父类中的方法完全相同(当然除了用 parent:: 代替 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/');
【问题讨论】:
-
你的整个设计都错了。虽然 hakre 确实为您提供了更好的设计,但您仍然可以使用一些改进。有关详细信息,请参阅下面的帖子。
-
您甚至没有考虑其他答案。知道没有一个正确的设计。
标签: php class parent instantiation