当前位置:  编程技术>php

PHP面向对象之自定义类实例教程

    来源: 互联网  发布时间:2014-08-30

    本文导语:  PHP面向对象之自定义类实例教程 所谓面向对象就是什么时候什么东西做什么,设计类时需要想的就是怎么做的内容,那么怎么样的一个类才算是符合OOP的思想呢,答案是: 这个类写好之后,在使用的过程中,能准确的代表一...

PHP面向对象之自定义类实例教程

所谓面向对象就是什么时候什么东西做什么,设计类时需要想的就是怎么做的内容,那么怎么样的一个类才算是符合OOP的思想呢,答案是:
这个类写好之后,在使用的过程中,能准确的代表一个事物,在书写时代码要和思维描述一致,即这个东西做什么。

那怎么开始设计一个合格的类呢,一开始就写class{}的都错了,正确的是什么都不写,而是假设这个类已经存在,这个对象已经存在,各种属性方法都已经有了,在这个完全的假设下想象下这个对象应该怎么用,例如制作一个缩略图的类,希望封装成一个类,方便下次使用。

首先,需要明确对象是什么它会做什么,要制作缩略图本质操作是缩小图片并输出,这里被操作的是图片,那么对象就是图片,由于网站上的图片不是唯一的我们得告诉这是那张图片,这就可以假设下这个类已经存在,一开始就得声明是那张图片,例如$simg = new simg("1.jpg");那么,一张图片应该有哪些属性? 在制作缩略图时,最关心的应该是 宽,高,类型,而且这三项对一张图片而言是肯定的,这意味着这个对象一定有这些属性,$simg->width,$simg->height,$simg->type,并且这些属性一开始就可以读取的到的。

例子:
 

代码示例:
$simg = new simg("1.jpg");
echo $simg->width;
echo $simg->height;
echo $simg->type;
//这个对象,应该可以这样操作。

根据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 session_id()函数介绍及代码实例
  • php 小数点取法实例总结
  • php生成透明背景图片实例
  • php防止sql注入代码实例
  • php逐字拆分字符串 php字符串拆分实例
  • php解析json数据实例
  • php定界符<<<使用技巧和实例
  • php读取sqlite数据库入门实例
  • PHP文件锁定写入实例解析
  • php读取mysql数据库入门实例
  • php生成excel列序号代码实例
  • PHP三元运算的2种写法代码实例
  • PHP接收二进制流并生成文件(实例)
  • php读取mysql入门实例
  • php根据身份证号码计算年龄的实例代码
  • PHP递归函数返回值使用实例
  • php实例分享之html转为rtf格式
  • php文件锁定写入实例教程
  • PHP创建桌面快捷方式的实例代码
  • php 强制下载文件实例代码
  • php mailto配置实例
  • PHP 面向对象框架 onPHP
  • PHP面向对象程序设计之类常量用法实例
  • php面向对象中的魔术方法中文说明
  • PHP面向对象程序设计之接口用法
  • 实例讲解PHP面向对象之多态
  • PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
  • PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
  • PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
  • PHP面向对象程序设计之类常量用法实例 iis7站长之家
  • PHP面向对象教程之自定义类
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php 5.5.14数据对象(PDO)介绍及PDO的预定义常量介绍
  • php定义数组和使用示例(php数组的定义方法)
  • PHP生成自定义长度随机字符串的函数分享
  • PHP html标签正则替换并可自定义正则规则
  • php生成随机密码自定义函数代码(简单快速)
  • PHP函数microtime()时间戳的定义与用法
  • php中自定义函数dump查看数组信息类似var_dump
  • 计算剩余时间的php自定义函数一例
  • php实现的太平洋时间和北京时间互转的自定义函数分享
  • php自定义函数实现美国时间转为北京时间
  • php中把美国时间转为北京时间的自定义函数分享
  • PHP中使用json数据格式定义字面量对象的方法
  • PHP采用自定义函数实现遍历目录下所有文件的方法
  • PHP获取指定函数定义在哪个文件中以及其所在的行号实例
  • php生成随机字符串(自定义纯数字、纯字母或数字字母混合)
  • php trim函数定义与语法教程
  • php强制文件下载的自定义函数代码
  • php自定义函数截取汉字长度
  • php强制文件下载而非在浏览器打开的自定义函数分享
  • PHP开发框架kohana3 自定义路由设置示例
  • PHP中配置文件的定义与使用
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
  • PHP 5.4.19 和 PHP 5.5.3 发布及下载地址
  • php输入流php://input使用示例(php发送图片流到服务器)
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • PHP转换器 HipHop for PHP
  • PHP去除html标签,php标记及css样式代码参考
  • PHP 框架 Pop php
  • PHP 'ext/soap/php_xml.c'不完整修复存在多个任意文件泄露漏洞
  • PHP的JavaScript框架 PHP.JS




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3