此时看起来还不太明显
下面会更好:
$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处理不同类型的图片使用的函数不同,我们在这里不得不知道文件类型是多少。oop思想以决定用哪个函数 设计类的时候,才是思考“怎么做”的时候,要在实例化之后,马上知道宽高。一定是在构造函数里完成的,只有构造函数会在类实例化的时候执行,这里我们可以使用 getimagesize 函数,取得文件的宽度,高度,类型 ,宽度和高度,我们可以在这里,赋值给属性。这样一来,实例化图片,就得到属性的问题就解决了,那改变大小的过程呢?
<?PHP
class simg {
public $width = 0;
public $height = 0;
public function __construct($img) {
$var = getimagesize($img);
$this->width = $var[0];
$this->height = $var[1];
}
public function size($width, $height) {
}
public function save($path) {
}
}
由于网络上常用的图片类型有gif jpg png 三种,其他的类型暂时不做考虑,调整大小的方法。在输出之前是什么也不做的。可以说,我们的代码,只要知道要输出的图片是多大就可以了 但是,不同的方法,内部变量不通用。怎么办注册全局变量容易被外部变量干扰和污染,那我们就利用类的属性来保存。新加两个属性这里暂定为w和h,这两个属性,严格来说不是属性,只是我们利用属性来在方法之间传递变量而已,为了避免它们在类的外部被访问和修改我们在定义的时候使用关键字私有来进行访问限制,private $w = 0;private $h = 0;
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-31068-2.html
虫子是绿色的标志
列黑名单
喝了睡觉好