php面对对象教程之自定义类_

上传人:一** 文档编号:24916701 上传时间:2021-07-16 格式:DOCX 页数:9 大小:15.17KB
返回 下载 相关 举报
php面对对象教程之自定义类__第1页
第1页 / 共9页
php面对对象教程之自定义类__第2页
第2页 / 共9页
php面对对象教程之自定义类__第3页
第3页 / 共9页
点击查看更多>>
资源描述
php面对对象教程之自定义类_ 那怎么开头设计一个合格的类呢,一开头就写class的都错了,正确的是什么都不写,而是假设这个类已经存在,这个对象已经存在,各种属性方法都已经有了,在这个完全的假设下想象下这个对象应当怎么用,例如我们制作一个缩略图的类,我们盼望封装成一个类,便利下次用法,我们首先需要明确对象是什么它会做什么,要制作缩略图本质操作是缩小图片并输出,这里被操作的是图片,那么对象就是图片,由于网站上的图片不是唯一的我们得告诉这是那张图片,这就可以假设下这个类已经存在,一开头就得声明是那张图片,例如$simg = new simg(1.jpg);那么,一张图片应当有哪些属性? 在制作缩略图的时候,我们最关怀的应当是 宽,高,类型,而且这三项对一张图片而言是确定的,这意味着这个对象肯定有这些属性,$simg-width,$simg-height,$simg-type,并且这些属性一开头就可以读取的到的, 代码如下: 1 $simg = new simg(1.jpg); 2 echo $simg-width; 3 echo $simg-height; 4 echo $simg-type; 5 /这个对象,应当可以这样操作。 依据oop的思想的原则,假如对象的属性被转变,对象应当也会发生相应的转变,这就意味着我们可以给它赋值,取得对象的宽度,高度,计算后(比如按比例缩小),重新赋值回去。我们本质是要制作一张图片的缩略图,也就是生成一张新的图片,转变它之后,接下来要做的事情就应当是把这个转变过的图片存起来了,存起来是一个过程,所以它会是一个方法。 例如 $simg-save(),考虑到要换一个地方存。至少要改一个名字吧, 也就是说在用法的时候,这个对象应当是这样描述的,图片 保存到 这意味着,这个方法,有一个参数,就是保存到哪。 代码如下: $simg = new simg(1.jpg);/实例化 $simg-width = 200;/设置宽度 $simg-height = 200;/设置高度 $simg-save(2.jpg);/保存到2.jpg 在用法这个类的时候思维描述和写出来的代码应当完全全都,这里的思维描述消失了一个小问题,可能会产生不符合oop思维原则的误导,这里不符合面对对象的是:对象属性重新赋值 原图的大小为什么没有发生改变,改变的是另存出来的,也就是说这个对象其实是php内存中源对象的复制品,我们转变了复制品的大小并保存了下来,所以图片被真正转变之前图片的属性应当是只读的,改写是无效的, 所以,假如以原图做为对象来描述的话。这样描述应当更精准:图片 转变大小后 另存为 。而原图的大小是没有发生转变的,转变大小是一个过程,这意味着这也是一个方法, 代码如下: /这个类,用起来应当是这样的。 /实例化一张图片 $simg = new simg(1.jpg); /读取图片宽高计算比例 $simg-width $simg-height /图片用法指定的宽高另存为 $simg-size(200,200)-save(2.jpg); 这是以原图做为对象的角度来描述的,尽管是不存在的一个类,但它的用法必需事先存在,并且符合oop的思想原则,即这是个什么东西,它可以做些什么。假如从另外的角度来思索呢,以即将被输出的图片作为对象呢,那么这个对象创建出来的时候它应当是空的,然后它必需以某张原图为基准,然后调整它的大小,再把它保存下来, 代码如下: /按这个思路描述。代码应当是这个样子 $simg = new simg(); /一开头是空的 echo $simg-width; /确定是 0 $simg-load(1.jpg); /以一张图为基准 echo $simg-width; /没改过,是原图大小 /转变大小 $simg-width = 200; $simg-height = 200; $simg-save(2.jpg); /保存起来 此时看起来还不太明显 下面会更好: 代码如下: $simg = new simg(2.jpg); /一开头是空的,指定一个文件名 $simg-load(1.jpg); /以一张图为基准 /转变大小 $simg-width = 200; $simg-height = 200; $simg-save(); /保存起来 这样会更明显一些,实例化一个缩略图,但它还不存在,直到保存以后它才存在于硬盘中 。 在此我们先根据第一种方式以原图为对象的角度创建这个类,依据上面的分析如下: 代码如下: ?php class simg public $width = 0; public $height = 0; public function _construct($img) public function size($width, $height) public function save($path) 之后再依据对每个方法每个属性的要求,填上里面的代码,一开头就必需知道文件的高度,宽度,由于php处理不同类型的图片用法的函数不同,我们在这里不得不知道文件类型是多少。以决定用哪个函数 设计类的时候,才是思索“怎么做”的时候,要在实例化之后,马上知道宽高。肯定是在构造函数里完成的,只有构造函数会在类实例化的时候执行,这里我们可以用法 getimagesize 函数,取得文件的宽度,高度,类型 ,宽度和高度,我们可以在这里,赋值给属性。这样一来,实例化图片,就得到属性的问题就解决了,那转变大小的过程呢? 代码如下: ?php class simg public $width = 0; public $height = 0; public function _construct($img) $var = getimagesize($img); $this-width = $var0; $this-height = $var1; public function size($width, $height) public function save($path) 由于网络上常用的图片类型有gif jpg png 三种,其他的类型临时不做考虑,调整大小的方法。在输出之前是什么也不做的。可以说,我们的代码,只要知道要输出的图片是多大就可以了 但是,不同的方法,内部变量不通用。怎么办注册全局变量简单被外部变量干扰和污染,那我们就利用类的属性来保存。新加两个属性这里暂定为w和h,这两个属性,严格来说不是属性,只是我们利用属性来在方法之间传递变量而已,为了避开它们在类的外部被访问和修改我们在定义的时候用法关键字私有来进行访问限制,private $w = 0;private $h = 0; 代码如下: public function size($width, $height) $this-w = $width; $this-h = $height; 转变大小的方法,只要临时把要输出的宽度和高度登记来就可以了。 下面就是保存了,要保存之前,得先把图片弄小了才行,所以,缩略图的计算过程,主要在这里完成,需要载入原图才能缩小,而且,也要知道文件类型才行 ,由于不同类型的图片载入方式是不同的,文件名和文件类型。在构造函数才知道,此时我们再加入两个公共属性, 代码如下: public $width = 0; public $height = 0; public $path = ; public $type = 0; private $w = 0; private $h = 0; public function _construct($img) $var = getimagesize($img); $this-width = $var0; $this-height = $var1; $this-path = $img; $this-type = $var2; 之后,我们可以在保存的方法里,载入原图,转变大小,并保存到指定的位置上,至于保存方法的书写不同的类型调用的函数时不同的可以选择用法switch ($var2)进行推断 在进行新建一个缩略图然后保存。 代码如下: /按这个类的编写方式。用法方法应当是这样 $simg = new simg(1.jpg); /读取宽高并计算 $simg-width /设置大小 $simg-size(200, 200); /保存到 $simg-save(2.jpg); 和描述有点不一样 ,由于描述是:用法(这个)大小,另存为(这里)这个描述有点绕口,假如可以这样写就没问题了$simg-size(200, 200)-save(2.jpg);对象的用法必需是这样的对象-方法()这就要求前面的量里的值必需是一个对象,save前面是size这就要求size的返回值必需是一个对象,但是这个方法没有什么东西需要返回,而且这个对象确定是当前对象,才会有save方法,没有对象没关系我们自己添加一个, 代码如下: public function size($width, $height) $this-w = $width; $this-h = $height; return $this; 返回当前的对象,这样就可以用图片 用法(这个)大小,另存为(这里)$simg-size(200, 200)-save(2.jpg);这样一个符合oop思想的类封装完成了。 更多信息请查看IT技术专栏 .
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!