导航:首页 > 编程语言 > phpoop实例

phpoop实例

发布时间:2022-07-08 14:09:02

⑴ 我一直觉得php不适合oop,不知道各位怎么看

没做过大型的j2ee开发,不过jsp我以前用过一阵.
从理论上来说,jsp+java bean的确有点像php+smarty.

其实我觉得php跟jsp的根本差别是,php本属解释性语言,java属于编译型语言.这才是最根本的区别.至于java的那一套ejb之类的.php一样可以模拟.

但是加上zend,php这一点就可以跟jsp差不多了.

理论上都说jsp的效率高,可实际看一些大型项目,jsp的效率根本没想象的那么好.

⑵ 怎么才能学好PHP面向对象OOP

面向对象是什么?你可以说出这个答案吗(相信没有正确答案)?我觉得面向对象只是软件工程中的一种工具而已。那软件工程的目的是什么?目的是编写出可靠、高效、灵活、易扩展、可复用的软件产品。既然面向对象是软件工程当中的一种工具,那我们使用面向对象的目的也应该是这些。就是说我们用面向对象的目的是编写出可靠、高效、灵活、易扩展、可复用的软件产品。我们一定要以这个目的为中心来学习和使用面向对象,不然你会失去方向。大多时候讲面向对象,多是讲面向对象本身,而不讲怎么利用面向对象去解决实际的问题,这样很容易误导初学者。再加上华丽的文字,很多人觉得只要面向对象了,什么事都可以OK了。举个例子,给你一把最好的枪,教你如何使用它,过了一段时间你对这把枪了如指掌。现在让你去打靶,结果100发子弹,一发都没有打中。咦,我不是用了最好的枪了吗?为什么一发都打不中?因为你不知道射击要领,不知道如何瞄准靶心,结果当然可想而知了。我们要OOP(Object-Oriented Programming),不要POO(Programming Object-Oriented)。 面向对象有3大特征(一般讲面向对象都会提到这三个),继承、封装、多态。按字面上理解,对我们来说是全新的概念,但只要你分析一下,就会发现这些都是我们在编程中,常常用到的概念。 封装是什么?只有在面向对象里才有封装的概念吗?不是的,只要是程序就有封装。大家常常用的变量、函数就是封装。举个例子,你写了取用户状态的函数,对调用这个函数的程序来说,取用户状态逻辑是封闭的,所以逻辑发生变化时,不会对调用的程序造成影响。变量也是封装,你定义了一个int变量,无论你给它赋什么值,对调用这个变量的程序来说,就是一个整数型类型的值。提到封装不得不提接口,因为封装是做接口的过程。接口是什么?只有用了interface这个关键字才是接口吗?词典里的解释是物体的接触面、界面。世界是由物体组成的,所以我们的生活当中到处是接口。你看到一个球,它是圆的,圆就是接口。我们的程序也都是由接口组成的,数据类型、关键字、函数、变量等等。比如说看到int这个词,你就知道它是整数型数据类型,我们可以说:int是整数型数据类型的接口。所以封装和接口不是面向对象特有的概念,只不过在面向对象里它们的范围扩大了而已。我们在网上常常能看到面向对象和面向过程之间的讨论,说哪一个好。其实,这些都是不重要的,因为用哪一个方法,都是做接口的过程。关键在于使用这些方法的程序员,看你的抽象能力怎么样了。 多态可能是我们最难理解的一个概念,polymorphism这个词,因为大家没有学习过面向对象的话,是很难碰到的。其实这个也是我们常常用到的一个概念,只不过没有给它命名而已(至少没用多态来命名它)。看下面的例子, double a = 0,b=5,c=0; a = 1; c = a + b; cout << c << endl; a = 3.5f; c = a + b; cout << c endl; 输出结果是 6 8.5 我们先定义了三个变量,a、b、c,先后给A赋值1,3.5,然后输出a+b的结果,可以看到,同样的逻辑随着a值的变化,输出的结果也是不一样的(多态的效果)。在这里double是高类型(相当于父类),1、3.5(int,float)是低类型(相当于子类)。这个例子是变量的多态,那有没有函数多态的例子,当然有,写过C的人都知道函数指针,它就是函数的多态。 终于要说说对象了,重点就在这里~ 第一,类是一个模块。以前我们的模块是一个文件,比如一个.c、.cpp等等。一个模块文件里写什么功能函数没有限制(理论上没有明确定义该怎么写),按开发人员的经验来部署这些功能函数。所以很容易写出超级模块(一个文件里有几十个、几百个函数),代码维护起来很不方便。面向对象就很好的解决了这个问题,只要看过面向对象基础理论的程序员都知道,先定义类,然后把相关的函数放到类里。面向对象里有一个原则,类单一职责原则,遵循这个原则的话,你可以写出很好的模块出来。更重要的是我们沟通维护起来也很方便,比如以前沟通可能是这样的,修改customer.cpp文件里的某一个函数,面向对象里呢,可以这样说修改客户类的某一个方法。这个非常重要,因为这个跟人的思维有密切关系。比如我们到餐厅去吃饭,你对服务员说我要一瓶啤酒,我确信服务员会再问你一句:先生,你要什么牌子的啤酒?但如果你说:我要一瓶百威啤酒,服务员肯定不会再问你。要是把一个系统看成生产线的话,类就是工人。一个工人只负责一个操作,A负责打孔,B负责装螺丝钉,C负责包装。这样做非常有效率,而且出了问题,很好确定问题出现在哪个工人。第二,类是一个自定义数据类型。理解了这点,你的思路会清晰起来,也不会对面向对象感到陌生。看下面的简单例子, //计算两个数的合 double sum(double a,double b); int _tmain(int argc, _TCHAR* argv[]) { double a=0,b=0; a = 1; b = 2; cout << sum(a,b) << endl; a = 1.2f; b = 2.3f; cout << sum(a,b) << endl; return 0; } //计算两个数的合 double sum(double a,double b) { return a+b; } 例子里,低类型的int和float赋值给了高类型的double,然后用sum函数它们的合。如果编程语言不支持这种转换的话,我们只好写两个函数了, //处理int的计算 int sum(int a,int b); //处理float的计算 float sum(float a,float b); 所以我们可以确定-同类型当中,只有提供从低到高类型的转换,才可以实现多态的效果(不知道,没有面向对象以前是什么概念)。当然,类作为数据类型,也需要这种转换了。但类是自定义类型,所以,哪个是高类型,哪个是低类型,必须要由我们来定义:父类是高类型、子类是低类型(继承是这么诞生的吗:))。继承让我们可以复用父类的代码,但在这个例子中我们可以看出,它的主要目的是在多态。 上面我们讨论了面向对象和它的三个特征,我们可以看到,这些都是编程当中常常用到的概念。我觉得最大的突破是给我们提供了新的思维模式、新的代码组织结构、定义了以前软件设计中比较模糊的概念(比如多态)。那我们怎么转换我们的思维呢?把你想象成公司的经理就可以了。你现在是一家公司的经理了,部门就是子系统,员工就是对象。你需要做的就是这些, -每天会有很多事需要你处理,做好心里准备。 -公司做什么业务? -要建立几个部门?,规定部门之间的沟通规则。 -需要什么样的职位?每个职位要做的事是什么? -规定业务流程,业务流程中,需要哪个部门参与?需要哪个员工参与?他们之间怎么沟通? -借鉴成功的管理模式,但要符合公司的情况,不要盲目地使用,因为代价太大了。 -不要设置太多的沟通环节,能简单就简单,只要完成目标就可以。 -准备应对变化。世界上没有对于错,永远是前进中不断修正。 就这些啦?恩,道理很简单,但要做一个好公司就非常困难了,因为变数太大了。面向对象也是一样的,需要付出努力,才可以做好。

⑶ 急需php oop综合项目切合网站建设的示例程序

给你推介一个世界排名第一的网站模板品牌----TemplateMonster(怪兽模板),中文官网也已建成,设计确实非常漂亮,选择的余地也很大,总共有30000款供你挑选。最后选定,购买模板之后,好像他们还提供模板修改,从而制作出网站

⑷ 下面的PHP的OOP代码哪里错了呀

classSpider{
var$host,$file,$port;
function__construct($host,$file,$res){
$this->host=$host;$this->file=$file;
}
functionfpconn(){
$fp=fsockopen($this->host,$this->port,$errno,$errstr,30);
if(!$fp){die("连接失败$errno-$errstr");}
return$fp;
}
}

⑸ php oop的作用

oop是面向对象编程(设计) 面向对象程序设计(英语:Object Oriented Programming,缩写:OOP),指一种程序设计范型,同时也是一种程序开发的方法论。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。基本理论

一项由 Deborah J. Armstrong 进行的长达40年之久的计算机着作调查显示出了一系列面向对象程序设计的基本理论。它们是:



类(Class)定义了一件事物的抽象特点。通常来说,类定义了事物的属性和它可以做到的(它的行为)。举例来说,"狗"这个类会包含狗的一切基础特征,例如它的孕育、毛皮颜色和吠叫的能力。类可以为程序提供模版和结构。一个类的方法和属性被称为"成员"。 我们来看一段伪代码:

类狗 开始 私有成员: 孕育 毛皮颜色 公有成员: 吠叫() 结束

在这串代码中,我们声明了一个类,这个类具有一些狗的基本特征。关于公有成员和私有成员,请参见下面的继承性一节。

对象

对象(Object)是类的实例。例如,"狗"这个类列举狗的特点,从而使这个类定义了世界上所有的狗。而莱丝这个对象则是一条具体的狗,它的属性也是具体的。狗有皮毛颜色,而莱丝的皮毛颜色是棕白色的。因此,莱丝就是狗这个类的一个实例。一个具体对象属性的值被称作它的"状态"。

假设我们已经在上面定义了狗这个类,我们就可以用这个类来定义对象:

定义莱丝是狗 莱丝.毛皮颜色:=棕白色 莱丝.吠叫()

我们无法让狗这个类去吠叫,但是我们可以让对象"莱丝"去吠叫,正如狗可以吠叫,但没有具体的狗就无法吠叫。

方法

方法(Method)是一个类能做的事情,但方法并没有去做这件事。作为一条狗,莱丝是会吠叫的,因此"吠叫()"就是它的一个方法。与此同时,它可能还会有其它方法,例如"坐下()",或者"吃()"。 对一个具体对象的方法进行调用并不影响其它对象,正如所有的狗都会叫,但是你让一条狗叫不代表所有的狗都叫。 如下例:

定义莱丝是狗 定义泰尔是狗 莱丝.吠叫()

则泰尔是不会吠叫的,因为这里的吠叫只是对对象"莱丝"进行的。

消息传递机制

一个对象通过接受消息、处理消息、传出消息或使用其他类的方法来实现一定功能,这叫做消息传递机制(Message Passing)。

继承性

继承性(Inheritance)是指,在某种情况下,一个类会有"子类"。子类比原本的类(称为父类)要更加具体化,例如,"狗"这个类可能会有它的子类"牧羊犬"和"奇瓦瓦犬"。在这种情况下,"莱丝"可能就是牧羊犬的一个实例。子类会继承父类的属性和行为,并且也可包含它们自己的。我们假设"狗"这个类有一个方法叫做"吠叫()"和一个属性叫做"毛皮颜色"。它的子类(前例中的牧羊犬和奇瓦瓦犬)会继承这些成员。这意味着程序员只需要将相同的代码写一次。 在伪代码中我们可以这样写:

类牧羊犬:继承狗 定义莱丝是牧羊犬 莱丝.吠叫() /* 注意这里调用的是狗这个类的吠叫属性。 */

回到前面的例子,"牧羊犬"这个类可以继承"毛皮颜色"这个属性,并指定其为棕白色。而"奇瓦瓦犬"则可以继承"吠叫()"这个方法,并指定它的音调高于平常。子类也可以加入新的成员,例如,"奇瓦瓦犬"这个类可以加入一个方法叫做"颤抖()"。设若用"牧羊犬"这个类定义了一个实例"莱丝",那么莱丝就不会颤抖,因为这个方法是属于奇瓦瓦犬的,而非牧羊犬。事实上,我们可以把继承理解为"是"。例如,莱丝"是"牧羊犬,牧羊犬"是"狗。因此,莱丝既继承了牧羊犬的属性,又继承了狗的属性。 我们来看伪代码:

类奇瓦瓦犬:继承狗 开始 公有成员: 颤抖() 结束 类牧羊犬:继承狗 定义莱丝是牧羊犬 莱丝.颤抖() /* 错误:颤抖是奇瓦瓦犬的成员方法。 */

当一个类从多个父类继承时,我们称之为"多重继承"。多重继承并不总是被支持的,因为它很难理解,又很难被好好使用。

封装性

具备封装性(Encapsulation)的面向对象程序设计隐藏了某一方法的具体执行步骤,取而代之的是通过消息传递机制传送消息给它。因此,举例来说,"狗"这个类有"吠叫()"的方法,这一方法定义了狗具体该通过什么方法吠叫。但是,莱丝的朋友蒂米并不需要知道它到底如何吠叫。 从实例来看:

/* 一个面向过程的程序会这样写: */

定义莱丝 莱丝.设置音调(5) 莱丝.吸气() 莱丝.吐气() /* 而当狗的吠叫被封装到类中,任何人都可以简单地使用: */ 定义莱丝是狗 莱丝.吠叫()

封装是通过限制只有特定类的实例可以访问这一特定类的成员,而它们通常利用接口实现消息的传入传出。举个例子,接口能确保幼犬这一特征只能被赋予狗这一类。通常来说,成员会依它们的访问权限被分为3种:公有成员、私有成员以及保护成员。有些语言更进一步:Java可以限制同一包内不同类的访问;C#和VB.NET保留了为类的成员聚集准备的关键字:internal(C#)和Friend(VB.NET);Eiffel语言则可以让用户指定哪个类可以访问所有成员。

多态性

多态性(Polymorphism)指方法在不同的类中调用可以实现的不同结果。因此,2个甚至更多的类可以对同一消息作出不同的反应。举例来说,狗和鸡都有"叫()"这一方法,但是调用狗的"叫()",狗会吠叫;调用鸡的"叫()",鸡则会啼叫。 我们将它体现在伪代码上:

类狗 开始 公有成员: 叫() 开始 吠叫() 结束 结束 类鸡 开始 公有成员: 叫() 开始 啼叫() 结束 结束 定义莱丝是狗 定义鲁斯特是鸡 莱丝.叫() 鲁斯特.叫()

这样,同样是叫,莱丝和鲁斯特做出的反应将大不相同。多态性的概念可以用在运算符重载上,本文不再赘述。

抽象性

抽象(Abstraction)是简化复杂的现实问题的途径,它可以为具体问题找到最恰当的类定义,并且可以在最恰当的继承级别解释问题。举例说明,莱丝在大多数时候都被当作一条狗,但是如果想要让它做牧羊犬做的事,你完全可以调用牧羊犬的方法。如果狗这个类还有动物的父类,那么你完全可以视莱丝为一个动物。

OOP名词释意

编程范型 对于OOP的准确定义及其本意存在着不少争论。

通常,OOP被理解为一种将程序分解为封装数据及相关操作的模块而进行的编程方式。有别于其它编程方式,OOP中的与某数据类型相关的一系列操作都被有机地封装到该数据类型当中,而非散放于其外,因而OOP中的数据类型不仅有着状态,还有着相关的行为。OOP理论,及与之同名的OOP实践相结合创造出了新的一个编程架构;OOP思想被广泛认为是非常有用的,以致一套新的编程范型被创造了出来。(其它的编程范型例如函数式编程或过程序编程专注于程序运行的过程,而逻辑编程专注于引发程序代码执行的断言)

对面向模拟系统的语言(如:SIMULA 67)的研究及对高可靠性系统架构(如:高性能操作系统和CPU的架构)的研究最终导致了OOP的诞生。

一些专家认为Object-Orientation中的Object的本意来自于其在语法领域的意义,即应将其理解为"宾语"或"操作对象",而非一般的"对象"或"对象"。我们所见到的软件的运行请求通常都是Subject-Oriented的,即"面向主语的"或"面向操作者的",然而这样将使得对操作者对象的设计变得困难而复杂。有鉴于此,部分研究人员开始了对"面向操作对象"的思考。这又一次产生了新的编程范型,这是前边提到的"面向操作者"的思考模式的一项革新。

依照"面向操作对象"的原则,在程序语句中的动词应该被划分到操作对象的类型之中,而与该动词请求相关的逻辑关系也就因此将在操作对象中处理。以下是采用"面向操作对象"的方式翻译"面向操作者"的一些例子:

面向操作者:销售系统保存交易记录。
面向操作对象:交易记录在接受到销售系统的一条请求消息后将自身保存。
面向操作者:销售系统打印收据。
面向操作对象:收据在接收到销售系统的一条请求消息后将自身打印。

面向对象的语言

支持部分或绝大部分面向对象特性的语言即可称为基于对象的或面向对象的语言。早期,完全面向对象的语言主要包括Smalltalk等语言,目前较为流行的语言中有Java、C#、Eiffel等。随着软件工业的发展,比较早的面向过程的语言在近些年的发展中也纷纷吸收了许多面向对象的概念,比如C->C++,BASIC->Visual Basic->Visual Basic .NET,Pascal->Object Pascal,Ada->Ada95。

历史

对象和实例的最早概念出自麻省理工大学的PDP-1系统。这一系统大概是capability based architecture的最早示例。另一个早期的事例是1963年Ivan Sutherland开发的Sketchpad;但是,这并非是一种编程思想,而只是一个程序。

对象最早在20世纪60年代的Simula 67中被引入程序设计中。Simula这一语言是Ole-Johan Dahl和Kristen Nygaard在奥斯陆计算机中心为模拟环境而设计的。(据说,他们是为了模拟船只而设计的这种语言,并且对不同船只间属性的相互影响感兴趣。他们将不同的船只归纳为不同的类,而每一个对象,基于它的类,可以定义它自己的属性和行为。)这种办法是分析式程序的最早概念体现。在分析式程序中,我们将真实世界的对象映射到抽象的对象,这叫做"模拟"。Simula不仅引入了"类"的概念,还应用了实例这一思想--这可能是这些概念的最早应用。20世纪70年代施乐PARC研究所发明的Smalltalk语言将面向对象程序设计的概念定义为,在基础运算中,对对象和消息的广泛应用。Smalltalk的创建者深受Simula 67的主要思想影响,但Smalltalk中的对象是完全动态的--它们可以被创建、修改并销毁,这与Simula中的静态对象有所区别。此外,Smalltalk还引入了继承性的思想,它因此一举超越了不可创建实例的程序设计模型和不具备继承性的Simula。

此外,Simula 67的思想亦被应用在许多不同的语言,如Lisp、Pascal。

面向对象程序设计在80年代成为了一种主导思想,这主要应归功于C++--C语言的扩充版。在图形用户界面(GUI)日渐崛起的情况下,面向对象程序设计很好地适应了潮流。GUI和面向对象程序设计的紧密关联在Mac OS X中可见一斑。Mac OS X是由面向对象C语言写成的,这一语言是一个仿Smalltalk的C语言扩充版。面向对象程序设计的思想也使事件处理式的程序设计更加广泛被应用(虽然这一概念并非仅存在于面向对象程序设计)。一种说法是,GUI的引入极大地推动了面向对象程序设计的发展。

在ETH Zürich(英文),Niklaus Wirth 和他的同事们对抽象数据和模块化程序设计进行了调查。Mula-2将这些都包括了进去,而Oberon则包括了一种特殊的面向对象方法--不同于Smalltalk与C++。

面向对象的特性也被加入了当时较为流行的语言:Ada、BASIC、Lisp、Fortran、Pascal以及种种。由于这些语言最初并没有面向对象的设计,故而这种糅合常常会导致兼容性和维护性的问题。与之相反的是,"纯正的"面向对象语言却缺乏一些程序员们赖以生存的特性。在这一大环境下,开发新的语言成为了当务之急。作为先行者,Eiffel成功地解决了这些问题,并成为了当时较受欢迎的语言。在过去的几年中,Java语言成为了广为应用的语言,除了它与C和C++语法上的近似性。Java的可移植性是它的成功中不可磨灭的一步,因为这一特性,已吸引了庞大的程序员群的投入。

近日,一些既支持面向对象程序设计,又支持面向过程程序设计的语言悄然浮出水面。它们中的佼佼者有Python、Ruby等等.

正如面向过程程序设计使得结构化程序设计的技术得以提升,现代的面向对象程序设计方法使得对设计模式的用途、契约式设计和建模语言(如UML)技术也得到了一定提升。

脚本中的OOP

近年来,面向过程程序设计越发流行于脚本语言。Python和Ruby是建立在OOP原理的脚本语言,Perl和PHP亦分别在Perl 5和PHP 4时加入面向过程特性。

⑹ php oop私有变量赋值

提供一个方法给他。例如
class apple {
private $name;

public function setName($name){
$this->name = $name;
}
}

至于文本框什么的,就是$_GET变量可以获取到的啦

⑺ php面向对象面试题

其实这个问题很简单啦,两分钟就可以请清楚啦,我在这里先说一下思想;
首先你得写一个类表示人,如:person类;
小刘、小张、MrJosnon、MrJohn等都是这个person类的一个实例;

并且人力资源部问问题这是这个person类当中的一个方法,然后每个人都可以继承自person类,然后又有各自己相关方法等;

然后你得写一个国家类,如:Country类,然后中国是这个国家的一个具体实例;

然后你得写一个城市类,如:City类;然后上海是City类的一个实例;

同样,你得写一个公司类,如:Company类,然后那两个公司又是Company类的两个实例,并且你还得写一个部门类,如:Depart类,然后人力资源部是部门的一个实例;

上面只是这个问题的中文描述,你可以参考一下;

阅读全文

与phpoop实例相关的资料

热点内容
自己购买云主服务器推荐 浏览:419
个人所得税java 浏览:760
多余的服务器滑道还有什么用 浏览:189
pdf劈开合并 浏览:26
不能修改的pdf 浏览:750
同城公众源码 浏览:488
一个服务器2个端口怎么映射 浏览:297
java字符串ascii码 浏览:78
台湾云服务器怎么租服务器 浏览:475
旅游手机网站源码 浏览:332
android关联表 浏览:945
安卓导航无声音怎么维修 浏览:332
app怎么装视频 浏览:430
安卓系统下的软件怎么移到桌面 浏览:96
windows拷贝到linux 浏览:772
mdr软件解压和别人不一样 浏览:904
单片机串行通信有什么好处 浏览:340
游戏开发程序员书籍 浏览:860
pdf中图片修改 浏览:288
汇编编译后 浏览:491