PHP开发入门教程之面向对象


Posted in PHP onDecember 05, 2006

PHP是弱变量的脚本语言,也就是说你无需先定义,这一点很灵活。也可以给予很大的自由度,但对于程序来说,自由并非好事。

因为给予后期维护人员阅读带来很大的麻烦。

下面来进入我们第一个程序:

1.php

////////////////////
<?class helloWorld{
 var $hellow_str = "Hello World!";
 function helloWorld(){

echo $this->hellow_str;
 }
}
$p = new helloWorld;
?>
////////////////////


很明显,这是一个类,很简单的类,只有一个构造函数。目的就是输出"Hello World";首先我们定义了一个类成员变量,通过一个特殊的$this对象,输出该变量,oop思想我不是很精,仅仅在于php开发方面用到,其他的也只是借鉴,但是我想对于php开发者已经足够了。

接下来,解释下什么是$this对象,从这点我们先要知道什么是类。

类,可以解释为一群相同的群体,在类中的成员变量,如上面的$hellow_str可以看作是这个群体的独特的特征,比如,桌子群体是一个
类,桌子都有桌面,桌脚,这些“都有”的东西,就是桌子全体的共有特征,在程序类里面我们就可以定义其为 桌子类的一个成员变量。

////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
}
///////////

同样,在桌子世界里,他们也有共同的动作,比如移动[也许你现在就在推桌子^^],也可能我们要把桌子的面子放大点,一样,这个就是桌子群提的共有方法了,[和特征近似哦,不过这是动作罢了]。让我们把这个共同特征加到类中去吧。

////////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function move(){

#....
 }
 function largen(){

#...
 }
}///////////////


知道了上面的,那么接下来就很好理解什么是$this对象了,没有错,他就是桌子群中的一个特定的对象,如果阁下还不能理解,那么,
我们接着解释。

如果,我们现在要对一张桌子进行整改,比如,我们想把桌子面积做的更大,那么,我们针对的就不是一群桌子,而是这个要整改的特定的桌子,这是个个体!所以,我们要把这个类进行“实例化”进行精确定位。因为,其他桌子我们不需要整改。

////////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function move(){

#....
 }
 function largen(){

$this->desktop++;#放大桌子面
 }
}
$d = new desktop;#“实例化,这个时候我们就是针对一个特定的桌子拉!
$d->largen();#哈哈,把这个特定桌子面放大点。其实$d = $this;明白吗,$d就是那个特定的桌子,$d->largen就是用那个特定桌子[桌子群大家都有的变大方法]把特定桌子面放大了点。
///////////////

原来,$this就是指一个特定桌子呀,哈哈,明白了,原来类是大家都有的属性,方法的集合,而一个特定的对象,就是这个群体中的一个个体,既然是他们当中的个体,当然拥有群体所拥有的共同特征和方法拉。

成员变量,成员方法[成员函数],实例化,大家都知道了。

但是我桌子虽然想变大,可是我还不知道桌子开始有多大啊,这可能吗,怎么办呢?

接下来,我们隆重推出 构造函数 来拉。要说到构造函数啊,话多啊,就不多说了,他就是给我们桌子面和桌子腿确定大小的。

////////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function desktop(){

$this->desktop = 100;

$this->baluster = 100;
 }
 function move(){

#....
 }
 function largen(){

$this->desktop++;#放大桌子面
 }
}
////////////
看到了吧,我把桌子定义了大小和长度哦
//////////


聪明的你,一定想立即实例化了吧,如果我开始在定义成员变量里就给值了,那不是说所有桌子都一样大吗?

//////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function desktop(){

$this->desktop = 100;

$this->baluster = 100;
 }
 function move(){

#....
 }
 function largen(){

$this->desktop++;#放大桌子面
 }
}
$d = new desktop;
$d->desktop();
////////////////////


可是结果却是:Call to a member function desktop() on a non-object in

倒霉,肯定是作者在骗点击,bs这小样,TT.

其实是我错了,我知道错了。原来 我们刚才添加的函数

function desktop(){
 $this->desktop = 100;
 $this->baluster = 100;
}

是个构造函数,什么是构造函数呢,哎呀,原来构造函数是类特有的函数,在类被实例化后,类会第一步自动执行构造函数,它在为类开辟内存单元嘛。

为了验证是不是它一开始就执行,大家请把目光放到本教程第一个代码上去,嘎嘎,您看到了把,一个和类名一样的方法,一个构造函数,在我们实例化后就已经输出代码了吧,这就证明我还没有说错呢。

好了,回到我们的桌子世界里,你发现了,我们这个时候所有桌子面和腿都是100了。

2.php

执行代码

//////////////
<?
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function desktop(){

$this->desktop = 100;

$this->baluster = 100;

echo "我们桌子家族命令大家把桌子面子都给我统一在".$this->desktop."大小!<br />";
 }
 function move(){

#....
 }
 function largen(){

$this->desktop++;#放大桌子面

echo "7~,小桌子我今天改造了,不鸟你们拉,哈哈, 我现在面子可比你们大,我有".$this->desktop."嘎嘎";
 }
}
$d = new desktop;
$d->largen();
?>


小桌子,逃离了桌子家族,因为,我们的面子没小桌子这nb大了。桌子老长老看不下去了,小样,看我的。

//////////////
<?
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function desktop($desktop){

$this->desktop = $desktop;

$this->baluster = 100;

echo "我们桌子家族命令大家把桌子面子都给我统一在".$this->desktop."大小!<br />";
 }
 function move(){

#....
 }
 function largen(){

$this->desktop++;#放大桌子面

echo "7~,小桌子我今天改造了,不鸟你们拉,哈哈, 我现在面子可比你们大,我有".$this->desktop."嘎嘎";
 }
}
$d = new desktop;
$d->largen();
?>


小桌子,左转转,右转转 看了半天,逛累了,觉得自己现在也进化了,该看看新同类了 于是;桌子变身执行后,发现......

/////
$d = new desktop(101);
////

我tmd还是一张小桌子。

PHP 相关文章推荐
一段php加密解密的代码
Jul 16 PHP
Discuz 模板引擎的封装类代码
Jul 18 PHP
PHP学习笔记 (1) 环境配置与代码调试
Jun 19 PHP
深入解析php中的foreach问题
Jun 30 PHP
解析PHP中的unset究竟会不会释放内存
Jul 18 PHP
php使用websocket示例详解
Mar 12 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 PHP
php的laravel框架快速集成微信登录的方法
Dec 12 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
php数值计算num类简单操作示例
May 15 PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 PHP
特转载一高手总结PHP学习资源和链接.
Dec 05 #PHP
扩展你的 PHP 之入门篇
Dec 04 #PHP
用 PHP5 轻松解析 XML
Dec 04 #PHP
PHP 已经成熟
Dec 04 #PHP
PHP 选项及相关信息函数库
Dec 04 #PHP
PHP 中的面向对象编程:通向大型 PHP 工程的办法
Dec 03 #PHP
windows xp下安装pear
Dec 02 #PHP
You might like
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
SSI指令
2006/11/25 PHP
php比较相似字符串的方法
2015/06/05 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
Smarty环境配置与使用入门教程
2016/05/11 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
Vue.js实现列表清单的操作方法
2017/11/15 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
Python实现查找系统盘中需要找的字符
2015/07/14 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
python实现发送邮件功能代码
2017/12/14 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
python3.6中@property装饰器的使用方法示例
2019/08/17 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
2012/06/11 面试题
白鹤梁导游词
2015/02/06 职场文书
护林员个人总结
2015/03/04 职场文书