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+APACHE实现用户论证的方法
Oct 09 PHP
帖几个PHP的无限分类实现想法~
Jan 02 PHP
php桌面中心(二) 数据库写入
Mar 11 PHP
理解php原理的opcodes(操作码)
Oct 26 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
Jun 27 PHP
php中判断文件空目录是否有读写权限的函数代码
Aug 07 PHP
PHP转换文件夹下所有文件编码的实现代码
Jun 06 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
Jun 18 PHP
2个比较经典的PHP加密解密函数分享
Jul 01 PHP
php禁用函数设置及查看方法详解
Jul 25 PHP
php使用PDO执行SQL语句的方法分析
Feb 16 PHP
浅谈Laravel中使用Slack进行异常通知
May 29 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
Php中文件下载功能实现超详细流程分析
2012/06/13 PHP
PHP基础知识回顾
2012/08/16 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
Laravel 4 初级教程之安装及入门
2014/10/30 PHP
PHP MYSQL简易交互式站点开发
2016/12/27 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
Python之列表实现栈的工作功能
2019/01/28 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
python如何输出反斜杠
2020/06/18 Python
专科应届生求职信
2013/11/24 职场文书
社区活动邀请函范文
2014/01/29 职场文书
西门豹教学反思
2014/02/04 职场文书
物流管理专业毕业生求职信
2014/03/23 职场文书
感谢信格式范文
2015/01/22 职场文书
个人党性分析总结
2015/03/05 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server