加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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);

保持分离和松散耦合.一个对象应该对一件事负责,例如一个对象从目录中获取图片列表,另一个对象用于演示.祝好运!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读