- 浏览: 112395 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
Mr_F陽:
想问一下phpmailer可以用来接收邮件么
phpmailer发邮件常见的一些问题总结 -
苏叶晚晚:
zzxiaoben 写道楼主可以把 归档版的tomcat得地 ...
解决初次使用Netbeans时出现tomcat找不到catalina.bat问题 -
Technoboy:
引用
public boolean equals(Object ...
关于hashset中hashcode 及 equals 的测试 -
Technoboy:
daemon
Deamon线程的测试 -
zzxiaoben:
楼主可以把 归档版的tomcat得地址贴出来么,那链接不正确 ...
解决初次使用Netbeans时出现tomcat找不到catalina.bat问题
php5的面向对象虽然加强了很多,但还有很多东西比起java的面向对象弱了很多。有些东西甚至让人费解,就比如下面的代码,b extends a ,实例化b时a的构造函数却没执行?不知道实例化b时,php到底是则么执行的,高手来帮忙解惑!还有php的static成员竟然能在非static方法中使用,还好反过来会报错。好了,先贴代码
class a { function __construct() { echo "a"; } } class b extends a{ function __construct(){ echo "b"; } private $x=100; public static function getx(){ return $this->x; } } $x=new b(); echo $x->getx();
结果是:
b100
“a”竟然没有输出,真不知到php里类初始化的顺序
补充:
刚刚发现,原来是b的构造函数覆盖了a的构造函数,把b的构造函数去掉,就能输出a。真奇怪构造函数也能被覆盖?
评论
63 楼
wxwswjws
2009-08-31
c++和java调用构造函数时会自动调用父类的,php不会
62 楼
syre
2009-08-18
父类如果有构造函数,子类没覆盖的话当然也会调用。
lz 的例子是子类覆盖了父类的构造函数。。。。
lz 的例子是子类覆盖了父类的构造函数。。。。
61 楼
yanglei922
2009-07-17
(接上)
子类可以继承超类的任何方法,可构造器是不能被继承的。
为了弥补这个问题现在的java编译器(javac.exe)会自动处理,
例如public class Example {}
会自动编译public class Example { Example() {super();} }
而PHP编译器不会自动处理,这是产生现象的根本原因
子类可以继承超类的任何方法,可构造器是不能被继承的。
为了弥补这个问题现在的java编译器(javac.exe)会自动处理,
例如public class Example {}
会自动编译public class Example { Example() {super();} }
而PHP编译器不会自动处理,这是产生现象的根本原因
60 楼
yanglei922
2009-07-17
离题远了,java里如果构造器没有
super()方法也不会调用父类的构造器,呵呵
super()方法也不会调用父类的构造器,呵呵
59 楼
zhuchanglin
2009-07-10
没必要计较,语言让你怎么用你就怎么用,没什么习惯不习惯的,用多了就好了。能得到正确结果就行。
58 楼
java_struts
2009-07-02
不要拿java来说事
57 楼
kingheaven
2009-07-01
diogin 写道
kingheaven 写道
比较本身的性能意义已经不大了, 因为在实际的使用过程当中, 缓存等优化手段都会加进来, 那个时候, 谁优化的好和优化的空间大, 才是性能的关键了
实际上根本没必要在性能这个点上抠,python、ruby、php、perl 在 web 上的性能都差不多。
对于开发来说,最重要的是开发效率如何,以及架构设计得如何。单机再牛也有跑到瓶颈的时候,这时候能否扩展出去就是架构方面的问题,跟语言根本没关系。性能再好,开发效率却很低,也没人会用,看看有多少人用 C 写 web 程序?
看看全球排名前几的网站,分享的资料都是他们的架构如何如何,基本没看到他们吹嘘使用的是什么语言,该语言性能如何。所以比较语言性能基本没意义。对于框架设计者来说,不如多花些时间思考如何能让自己的框架适应分布式的大型网站。
同意diogin.
OO带来的是开发的便捷和维护的方便, 而不是性能的提升, 函数式的编程肯定要比OO性能好, 但是开发和维护并不一定就容易.
架构永远要高于语言.
56 楼
xieye
2009-07-01
diogin 写道
实际上根本没必要在性能这个点上抠,python、ruby、php、perl 在 web 上的性能都差不多。
对于开发来说,最重要的是开发效率如何,以及架构设计得如何。单机再牛也有跑到瓶颈的时候,这时候能否扩展出去就是架构方面的问题,跟语言根本没关系。性能再好,开发效率却很低,也没人会用,看看有多少人用 C 写 web 程序?
看看全球排名前几的网站,分享的资料都是他们的架构如何如何,基本没看到他们吹嘘使用的是什么语言,该语言性能如何。所以比较语言性能基本没意义。对于框架设计者来说,不如多花些时间思考如何能让自己的框架适应分布式的大型网站。
面向对象的思想我感觉能更好的适应大型系统,不是指性能,而是指开发速度快,代码易读易维护等。也能并应该更好的利用各种设计模式
55 楼
chenlixun
2009-06-30
讨论的话题越来越偏了,汗~
注意素质
注意素质
54 楼
diogin
2009-06-30
kingheaven 写道
比较本身的性能意义已经不大了, 因为在实际的使用过程当中, 缓存等优化手段都会加进来, 那个时候, 谁优化的好和优化的空间大, 才是性能的关键了
实际上根本没必要在性能这个点上抠,python、ruby、php、perl 在 web 上的性能都差不多。
对于开发来说,最重要的是开发效率如何,以及架构设计得如何。单机再牛也有跑到瓶颈的时候,这时候能否扩展出去就是架构方面的问题,跟语言根本没关系。性能再好,开发效率却很低,也没人会用,看看有多少人用 C 写 web 程序?
看看全球排名前几的网站,分享的资料都是他们的架构如何如何,基本没看到他们吹嘘使用的是什么语言,该语言性能如何。所以比较语言性能基本没意义。对于框架设计者来说,不如多花些时间思考如何能让自己的框架适应分布式的大型网站。
53 楼
Julien
2009-06-30
总之xcache就是php的预读机制……
别强迫没有xcache的php跟ruby比较……
别强迫没有xcache的php跟ruby比较……
52 楼
kingheaven
2009-06-30
比较本身的性能意义已经不大了, 因为在实际的使用过程当中, 缓存等优化手段都会加进来, 那个时候, 谁优化的好和优化的空间大, 才是性能的关键了
51 楼
dualface
2009-06-27
php 虽然是解释执行的,但是比 ruby 之类的快了一个数量级。
至于说 php 框架性能不如 rails,原因主要有两个:
1、用了 cakephp、zf 这些本来就很慢的框架来和 rails 比较;
2、没有最优化 php 的运行环境。
而且 php 本身的运行环境是 C 写的,启动后就包括了 web 应用需要的一切基础功能。而 ruby、python 这样的通用脚本语言,都需要单独的编写 web 基础功能库。
至于说 php 框架性能不如 rails,原因主要有两个:
1、用了 cakephp、zf 这些本来就很慢的框架来和 rails 比较;
2、没有最优化 php 的运行环境。
而且 php 本身的运行环境是 C 写的,启动后就包括了 web 应用需要的一切基础功能。而 ruby、python 这样的通用脚本语言,都需要单独的编写 web 基础功能库。
50 楼
imhades
2009-06-26
别把JAVA作为标准来跟PHP来比,PHP这样的设计是为了高效率,不信的话可以查资料.
49 楼
diogin
2009-06-26
gordonAtJava 写道
diogin 写道
gordonAtJava 写道
我没用过php,不过貌似oo的基本概念应该是一样的撒?
static不static主要还是看有没有对状态的依赖,如果没有的话,每次调用的所有变量都是本地的话,肯定就static咯,方便嘛,当然不用static,用单例也可以,但是static的时候就是classloader给做了单例了,一个loader里面就一个class的对象。
其实java的constructor里面一般都建议使用super(xxx)跟parent::__construct()应该是一个意思撒。
对象存在在运行时候的内存里面,每个对象都有到数据的引用和到非static的方法的引用。对象存在的意义主要是保持状态,然后非static的方法运行时候可以通过this这个bt的关键字作为上下文。
类是元素据啦,就是描述了结构(数据类型)和行为(方法的签名)的集合。运行时候类自己也会被加载,成为一个对象。static的属性和方法其实是这个 类对象 自己的东西,而不是 类实例化的对象 的东西。当然我比较不喜欢java的关于static的实现方式,但是鉴于是静态的,也没办法。
所有对象都有类,对象在运行时存在,运行时每个对象对应的类也是个对象,这个 类对象 本身也有个类, 所有 类对象 的类在java里面就是Class.class,运行时候这个Class本身也是一个对象..有点绕口撒
简单例子一个
Class A
运行时候如果某方法里面是
A a=....
这个时候
a.getClass()就是A,这个A是对象哦
a.getClass().getClass()就是Class,这个也是对象啦,运行时候啥都是对象嘛
只不过每个对象都能找到对应的class,里面描述了 这种对象的 元数据啦
很绕,自己看都糊涂
static不static主要还是看有没有对状态的依赖,如果没有的话,每次调用的所有变量都是本地的话,肯定就static咯,方便嘛,当然不用static,用单例也可以,但是static的时候就是classloader给做了单例了,一个loader里面就一个class的对象。
其实java的constructor里面一般都建议使用super(xxx)跟parent::__construct()应该是一个意思撒。
对象存在在运行时候的内存里面,每个对象都有到数据的引用和到非static的方法的引用。对象存在的意义主要是保持状态,然后非static的方法运行时候可以通过this这个bt的关键字作为上下文。
类是元素据啦,就是描述了结构(数据类型)和行为(方法的签名)的集合。运行时候类自己也会被加载,成为一个对象。static的属性和方法其实是这个 类对象 自己的东西,而不是 类实例化的对象 的东西。当然我比较不喜欢java的关于static的实现方式,但是鉴于是静态的,也没办法。
所有对象都有类,对象在运行时存在,运行时每个对象对应的类也是个对象,这个 类对象 本身也有个类, 所有 类对象 的类在java里面就是Class.class,运行时候这个Class本身也是一个对象..有点绕口撒
简单例子一个
Class A
运行时候如果某方法里面是
A a=....
这个时候
a.getClass()就是A,这个A是对象哦
a.getClass().getClass()就是Class,这个也是对象啦,运行时候啥都是对象嘛
只不过每个对象都能找到对应的class,里面描述了 这种对象的 元数据啦
很绕,自己看都糊涂
不要拿 Java 的 OO 环境来套其它环境。
基于类的面向对象编程语言中,static 存在的意义是什么? static 成员挂在 class 上,它就应该是 class 的状态,它的生命期跟 class 的生命期是一样的。把 class 当成“对象”使用,static 就是这个“对象”的属性。
在 Java 里面,class 被虚拟机加载,生命期跟虚拟机进程一样的,不受 HTTP 请求的影响。
在 PHP 里面,class 是在请求过来后编译生成的,请求完成后 class 销毁,它的生命期是“瞬态”的,它受 HTTP 请求影响,虽然 PHP 解释器是持久的。因此严格地说,PHP 的 class 只是 Java 里面的对象。如果在 PHP 里面封装 HTTP 请求类,那么这个类就没必要再实例化,因为这个“类”本身就已经是对象,它在请求到来时生成,在请求结束时完蛋。而在 Java 虚拟机上,就应该每收到一个请求就实例化出该请求类的实例,结束时销毁该实例,因为在 JVM 上类是持久的,而 PHP 不是。PHP 根本没必要去实例化 HTTP 请求类,类本身就已经是 HTTP 请求对象。
面向对象不是只有基于类这一种范型的,还有基于原型这种范型,而后者根本没有“类”的概念,一切都是对象,真正的对象,不属于任何类。继承也是直接继承对象。
我一直以为基于prototype叫做object-based,不叫object-oriented~~~
请问php的一个对象是否包对应含类的信息? 如果包含的话每次http request都重新构造的话,开销是否会比较大?会不会有基于token或者timestamp之类的cache的机制?这样是为了动态部署么?
object-based 的意思是说没有多态和继承。prototype-based 是一种正宗的 OO 范型,而不是 OB 范型,详见:
http://en.wikipedia.org/wiki/Prototype-based_programming
PHP 解释器运行时,碰到 HTTP 请求就读入请求里指定的 php 文件,编译它,运行生成的 opcode,碰到 require/include 之类的指令时,就再读入对应的 php 文件,编译它,运行生成的 opcode,如此反复,直到该次请求执行完成,再销毁所有的 opcode,释放该次请求中脚本申请的所有资源。因此脚本里的一切东西,生命期都只限于一次请求(除非显式告诉解释器,某个变量在内部实现上应该是持久的,比如 mysql_pconnect 对应的资源,或者自己编写扩展实现跨请求共享的变量,这很容易,但在无状态 HTTP 的光辉指引下基本没人这么做)。
如果你加载了 opcode cache,比如 APC、eAccelerator、XCache,那么可以缓存 opcode,这样每次请求过来时可以选择不用重复编译 php 文件和不再 stat 调用 php 文件。如果是后者,opcode 的原理就跟 Python 的 pyc 差不多了,不过运行环境上还是有本质的不同,除了 opcode 不用再反复生成外,PHP 的运行环境还是请求到来就重建,请求结束就销毁。
这种运行方式的好处已经说了好多次了,方便部署方便修改,即时生效,程序员无需关注资源泄露,无需关注线程同步。但坏处也有,比如说对性能有影响,不过随着摩尔定律的持续生效,这不是问题。
48 楼
gordonAtJava
2009-06-26
diogin 写道
gordonAtJava 写道
我没用过php,不过貌似oo的基本概念应该是一样的撒?
static不static主要还是看有没有对状态的依赖,如果没有的话,每次调用的所有变量都是本地的话,肯定就static咯,方便嘛,当然不用static,用单例也可以,但是static的时候就是classloader给做了单例了,一个loader里面就一个class的对象。
其实java的constructor里面一般都建议使用super(xxx)跟parent::__construct()应该是一个意思撒。
对象存在在运行时候的内存里面,每个对象都有到数据的引用和到非static的方法的引用。对象存在的意义主要是保持状态,然后非static的方法运行时候可以通过this这个bt的关键字作为上下文。
类是元素据啦,就是描述了结构(数据类型)和行为(方法的签名)的集合。运行时候类自己也会被加载,成为一个对象。static的属性和方法其实是这个 类对象 自己的东西,而不是 类实例化的对象 的东西。当然我比较不喜欢java的关于static的实现方式,但是鉴于是静态的,也没办法。
所有对象都有类,对象在运行时存在,运行时每个对象对应的类也是个对象,这个 类对象 本身也有个类, 所有 类对象 的类在java里面就是Class.class,运行时候这个Class本身也是一个对象..有点绕口撒
简单例子一个
Class A
运行时候如果某方法里面是
A a=....
这个时候
a.getClass()就是A,这个A是对象哦
a.getClass().getClass()就是Class,这个也是对象啦,运行时候啥都是对象嘛
只不过每个对象都能找到对应的class,里面描述了 这种对象的 元数据啦
很绕,自己看都糊涂
static不static主要还是看有没有对状态的依赖,如果没有的话,每次调用的所有变量都是本地的话,肯定就static咯,方便嘛,当然不用static,用单例也可以,但是static的时候就是classloader给做了单例了,一个loader里面就一个class的对象。
其实java的constructor里面一般都建议使用super(xxx)跟parent::__construct()应该是一个意思撒。
对象存在在运行时候的内存里面,每个对象都有到数据的引用和到非static的方法的引用。对象存在的意义主要是保持状态,然后非static的方法运行时候可以通过this这个bt的关键字作为上下文。
类是元素据啦,就是描述了结构(数据类型)和行为(方法的签名)的集合。运行时候类自己也会被加载,成为一个对象。static的属性和方法其实是这个 类对象 自己的东西,而不是 类实例化的对象 的东西。当然我比较不喜欢java的关于static的实现方式,但是鉴于是静态的,也没办法。
所有对象都有类,对象在运行时存在,运行时每个对象对应的类也是个对象,这个 类对象 本身也有个类, 所有 类对象 的类在java里面就是Class.class,运行时候这个Class本身也是一个对象..有点绕口撒
简单例子一个
Class A
运行时候如果某方法里面是
A a=....
这个时候
a.getClass()就是A,这个A是对象哦
a.getClass().getClass()就是Class,这个也是对象啦,运行时候啥都是对象嘛
只不过每个对象都能找到对应的class,里面描述了 这种对象的 元数据啦
很绕,自己看都糊涂
不要拿 Java 的 OO 环境来套其它环境。
基于类的面向对象编程语言中,static 存在的意义是什么? static 成员挂在 class 上,它就应该是 class 的状态,它的生命期跟 class 的生命期是一样的。把 class 当成“对象”使用,static 就是这个“对象”的属性。
在 Java 里面,class 被虚拟机加载,生命期跟虚拟机进程一样的,不受 HTTP 请求的影响。
在 PHP 里面,class 是在请求过来后编译生成的,请求完成后 class 销毁,它的生命期是“瞬态”的,它受 HTTP 请求影响,虽然 PHP 解释器是持久的。因此严格地说,PHP 的 class 只是 Java 里面的对象。如果在 PHP 里面封装 HTTP 请求类,那么这个类就没必要再实例化,因为这个“类”本身就已经是对象,它在请求到来时生成,在请求结束时完蛋。而在 Java 虚拟机上,就应该每收到一个请求就实例化出该请求类的实例,结束时销毁该实例,因为在 JVM 上类是持久的,而 PHP 不是。PHP 根本没必要去实例化 HTTP 请求类,类本身就已经是 HTTP 请求对象。
面向对象不是只有基于类这一种范型的,还有基于原型这种范型,而后者根本没有“类”的概念,一切都是对象,真正的对象,不属于任何类。继承也是直接继承对象。
我一直以为基于prototype叫做object-based,不叫object-oriented~~~
请问php的一个对象是否包对应含类的信息? 如果包含的话每次http request都重新构造的话,开销是否会比较大?会不会有基于token或者timestamp之类的cache的机制?这样是为了动态部署么?
47 楼
only_java
2009-06-24
<div class="quote_title">diogin 写道</div>
<div class="quote_div">
<div class="quote_title">xgene 写道</div>
<div class="quote_div">
<div class="quote_title">only_java 写道</div>
<div class="quote_div">是回收了,但是下次调用的时候又得分配内存,来回的分配会不会降低性能呢? <br>多线程的话用静态成员的话应该会造成变量共享造成的问题。但php很少用多线程吧?apache处理每次请求的时候都是不同的线程吧?</div>
<br><br>由于php是每次请求,就会根据脚本重新分配内存,所以php框架的效率都很低,因为框架中有很多基础类是每次都需要用初始化,这不像tomcat,启动时有初始化过程,以后每次调用就不需要重新初始化.php每次请求完成以后就会释放所有内存,不会有内存泄漏,就算你程序写的很烂,也没问题.</div>
<br><br>不仅没有内存泄漏问题,也没有 static 变量的多线程同步问题,因为 PHP 脚本里根本没有线程。 <br><br>总之,PHP 解释器已经帮你屏蔽掉了烦人的一切技术细节,你只需要专注于解决问题即可。</div>
<p><br>高人,谢谢指点!<a href="/topic/319039"><span style="color: #006699;">PHP] PHP框架的繁荣是正确的发展方向吗?</span> </a>这个帖子让我受益匪浅啊!</p>
<p> </p>
<div class="quote_div">
<div class="quote_title">xgene 写道</div>
<div class="quote_div">
<div class="quote_title">only_java 写道</div>
<div class="quote_div">是回收了,但是下次调用的时候又得分配内存,来回的分配会不会降低性能呢? <br>多线程的话用静态成员的话应该会造成变量共享造成的问题。但php很少用多线程吧?apache处理每次请求的时候都是不同的线程吧?</div>
<br><br>由于php是每次请求,就会根据脚本重新分配内存,所以php框架的效率都很低,因为框架中有很多基础类是每次都需要用初始化,这不像tomcat,启动时有初始化过程,以后每次调用就不需要重新初始化.php每次请求完成以后就会释放所有内存,不会有内存泄漏,就算你程序写的很烂,也没问题.</div>
<br><br>不仅没有内存泄漏问题,也没有 static 变量的多线程同步问题,因为 PHP 脚本里根本没有线程。 <br><br>总之,PHP 解释器已经帮你屏蔽掉了烦人的一切技术细节,你只需要专注于解决问题即可。</div>
<p><br>高人,谢谢指点!<a href="/topic/319039"><span style="color: #006699;">PHP] PHP框架的繁荣是正确的发展方向吗?</span> </a>这个帖子让我受益匪浅啊!</p>
<p> </p>
46 楼
diogin
2009-06-24
xgene 写道
only_java 写道
是回收了,但是下次调用的时候又得分配内存,来回的分配会不会降低性能呢?
多线程的话用静态成员的话应该会造成变量共享造成的问题。但php很少用多线程吧?apache处理每次请求的时候都是不同的线程吧?
多线程的话用静态成员的话应该会造成变量共享造成的问题。但php很少用多线程吧?apache处理每次请求的时候都是不同的线程吧?
由于php是每次请求,就会根据脚本重新分配内存,所以php框架的效率都很低,因为框架中有很多基础类是每次都需要用初始化,这不像tomcat,启动时有初始化过程,以后每次调用就不需要重新初始化.php每次请求完成以后就会释放所有内存,不会有内存泄漏,就算你程序写的很烂,也没问题.
不仅没有内存泄漏问题,也没有 static 变量的多线程同步问题,因为 PHP 脚本里根本没有线程。
总之,PHP 解释器已经帮你屏蔽掉了烦人的一切技术细节,你只需要专注于解决问题即可。
45 楼
xgene
2009-06-24
only_java 写道
是回收了,但是下次调用的时候又得分配内存,来回的分配会不会降低性能呢?
多线程的话用静态成员的话应该会造成变量共享造成的问题。但php很少用多线程吧?apache处理每次请求的时候都是不同的线程吧?
多线程的话用静态成员的话应该会造成变量共享造成的问题。但php很少用多线程吧?apache处理每次请求的时候都是不同的线程吧?
由于php是每次请求,就会根据脚本重新分配内存,所以php框架的效率都很低,因为框架中有很多基础类是每次都需要用初始化,这不像tomcat,启动时有初始化过程,以后每次调用就不需要重新初始化.php每次请求完成以后就会释放所有内存,不会有内存泄漏,就算你程序写的很烂,也没问题.
44 楼
diogin
2009-06-24
gordonAtJava 写道
我没用过php,不过貌似oo的基本概念应该是一样的撒?
static不static主要还是看有没有对状态的依赖,如果没有的话,每次调用的所有变量都是本地的话,肯定就static咯,方便嘛,当然不用static,用单例也可以,但是static的时候就是classloader给做了单例了,一个loader里面就一个class的对象。
其实java的constructor里面一般都建议使用super(xxx)跟parent::__construct()应该是一个意思撒。
对象存在在运行时候的内存里面,每个对象都有到数据的引用和到非static的方法的引用。对象存在的意义主要是保持状态,然后非static的方法运行时候可以通过this这个bt的关键字作为上下文。
类是元素据啦,就是描述了结构(数据类型)和行为(方法的签名)的集合。运行时候类自己也会被加载,成为一个对象。static的属性和方法其实是这个 类对象 自己的东西,而不是 类实例化的对象 的东西。当然我比较不喜欢java的关于static的实现方式,但是鉴于是静态的,也没办法。
所有对象都有类,对象在运行时存在,运行时每个对象对应的类也是个对象,这个 类对象 本身也有个类, 所有 类对象 的类在java里面就是Class.class,运行时候这个Class本身也是一个对象..有点绕口撒
简单例子一个
Class A
运行时候如果某方法里面是
A a=....
这个时候
a.getClass()就是A,这个A是对象哦
a.getClass().getClass()就是Class,这个也是对象啦,运行时候啥都是对象嘛
只不过每个对象都能找到对应的class,里面描述了 这种对象的 元数据啦
很绕,自己看都糊涂
static不static主要还是看有没有对状态的依赖,如果没有的话,每次调用的所有变量都是本地的话,肯定就static咯,方便嘛,当然不用static,用单例也可以,但是static的时候就是classloader给做了单例了,一个loader里面就一个class的对象。
其实java的constructor里面一般都建议使用super(xxx)跟parent::__construct()应该是一个意思撒。
对象存在在运行时候的内存里面,每个对象都有到数据的引用和到非static的方法的引用。对象存在的意义主要是保持状态,然后非static的方法运行时候可以通过this这个bt的关键字作为上下文。
类是元素据啦,就是描述了结构(数据类型)和行为(方法的签名)的集合。运行时候类自己也会被加载,成为一个对象。static的属性和方法其实是这个 类对象 自己的东西,而不是 类实例化的对象 的东西。当然我比较不喜欢java的关于static的实现方式,但是鉴于是静态的,也没办法。
所有对象都有类,对象在运行时存在,运行时每个对象对应的类也是个对象,这个 类对象 本身也有个类, 所有 类对象 的类在java里面就是Class.class,运行时候这个Class本身也是一个对象..有点绕口撒
简单例子一个
Class A
运行时候如果某方法里面是
A a=....
这个时候
a.getClass()就是A,这个A是对象哦
a.getClass().getClass()就是Class,这个也是对象啦,运行时候啥都是对象嘛
只不过每个对象都能找到对应的class,里面描述了 这种对象的 元数据啦
很绕,自己看都糊涂
不要拿 Java 的 OO 环境来套其它环境。
基于类的面向对象编程语言中,static 存在的意义是什么? static 成员挂在 class 上,它就应该是 class 的状态,它的生命期跟 class 的生命期是一样的。把 class 当成“对象”使用,static 就是这个“对象”的属性。
在 Java 里面,class 被虚拟机加载,生命期跟虚拟机进程一样的,不受 HTTP 请求的影响。
在 PHP 里面,class 是在请求过来后编译生成的,请求完成后 class 销毁,它的生命期是“瞬态”的,它受 HTTP 请求影响,虽然 PHP 解释器是持久的。因此严格地说,PHP 的 class 只是 Java 里面的对象。如果在 PHP 里面封装 HTTP 请求类,那么这个类就没必要再实例化,因为这个“类”本身就已经是对象,它在请求到来时生成,在请求结束时完蛋。而在 Java 虚拟机上,就应该每收到一个请求就实例化出该请求类的实例,结束时销毁该实例,因为在 JVM 上类是持久的,而 PHP 不是。PHP 根本没必要去实例化 HTTP 请求类,类本身就已经是 HTTP 请求对象。
面向对象不是只有基于类这一种范型的,还有基于原型这种范型,而后者根本没有“类”的概念,一切都是对象,真正的对象,不属于任何类。继承也是直接继承对象。
发表评论
-
关于php中session和cookie
2010-02-22 09:40 1939创建cookie: 1.如果不指明cookie路 ... -
phpmailer发邮件常见的一些问题总结
2009-04-14 16:29 5391这几天做mail群发,碰到不少问题。一些常见的错误网上 ... -
php中curl扩展的安装及post简单使用
2009-04-10 16:32 1718以前也知道curl函数的功能极其强大,但一直未研究!这几次的面 ... -
php安全方面的要点-绝对有很多人不是很清楚
2009-04-09 17:10 28451. 输入输出安全 (1)关 ... -
Zend5.2-6.0激活码
2009-04-09 16:28 1814zend6.0 下载地址http://www.crsk ... -
php中用fsockopen来跨站点请求
2009-03-12 10:26 1182Php最让我感觉不错的地方是这个函数fsockopen,记得以 ... -
以下指命令的作用域都是.htaccess
2009-03-02 16:37 1178转自:http://www.cccspace.net/b/ht ... -
实例:Apache 利用 URL Rewrite 静态化地址(.htaccess)
2009-03-02 16:32 2743以下我们说明一下如何让APACHE服务器支持".ht ... -
伪静态(Rewrite).htaccess教程
2009-03-02 16:28 3788转自:http://www.zhj100.cn/post/23 ... -
php中定界符的使用
2008-12-24 11:00 4286其实定界符在php中的应 ...
相关推荐
13. **面向对象编程**:深入理解类、对象、继承、封装和多态,提升代码复用性和可维护性。 14. **模板引擎**:了解如何使用模板引擎(如Smarty)分离业务逻辑和视图展示。 **实践项目** 本教程还包含了多个实际...
适合php初学者看,也适合不懂php的网站站长,因为这段百度贴吧内容采集php代码稍微修改就可以使用,可以初步满足个人站长的需求。其实百度贴吧内容的采集只要做好正则匹配,采集起来很容易。由于残冰也是初学php,...
描述中列举了几个具体的文档,包括“PHP+4[1].0入门与提高(PDG)”、“PHP4 中文参考手册.chm”、“PHP_MySQL教程.chm”、“php面向对象初步入门教程pdf版”以及“PHP入门教程”和“PHP之Smarty入门.pdf”。...
刚接触javascript的时候,觉得这语言有点儿摸不着门道,感觉这玩意儿太难学了,没什么规范,没什么像样的手册,而且还跟html,dom,css打交道,更觉得一团糟,代码可读性也很差,面向过程的勉强能看懂,看面向对象的...
2. **面向对象编程(OOP)**:介绍类与对象的概念,如何设计类和实现继承、封装、多态等特性。 3. **数据库操作**:教授如何通过PHP连接MySQL等数据库,并执行增删改查等基本操作。 4. **Web开发框架**:如Laravel、...
"PHP从入门到精通(第2版)"是一本关于PHP编程语言的教材,旨在帮助读者从完全不懂PHP到能够熟练使用PHP进行网页开发。 本书作为第二版,相较于第一版,应当在内容上进行了更新和扩充,以更好地适应PHP技术的发展和...
《PHP从入门到精通3th》这本书是一本专门为PHP编程语言的初学者设计的教程,目的是帮助他们从完全不懂PHP开始,逐步学习并最终达到精通PHP编程的水平。这本书详细介绍了PHP的基础知识、核心概念、常用函数、数据库...
了解PHP的基础语法、面向对象编程、函数库以及与MySQL等数据库的整合是理解此项目的关键。 【压缩包子文件的文件名称列表】包括"使用须知.txt"和"132698577226185049"。"使用须知.txt"很可能是对项目如何安装、配置...
2. **自我提升**:程序员在工作中严格要求自己,遇到不懂的问题主动向同事请教,不断提升自己的技术能力,显示出自我学习和持续进步的精神。 3. **项目经验**:经过一段时间的工作,程序员能够独立负责模块的开发,...
- **面向对象编程**:深入了解PHP中的类和对象,包括继承、封装和多态等概念。 - **数据库操作**:学习如何使用PHP连接MySQL等数据库,并进行增删改查等操作。 - **文件操作**:掌握文件读写、目录操作等技能。 - **...
而且对面向对象有很深的认识。 介绍了symfony这个领先的PHP开发框架,展示如何利用symfony的众多功能更快更有效率地开发Web应用程序,即使你只懂一点PHP也没有关系。在《Symfony》里,你将了解如何使用symfony建立...
- **查阅文档**:遇到不懂的地方可以查阅官方文档或相关资料加深理解。 - **参与社区**:加入PHP开发者社区(如Stack Overflow、GitHub等),与其他程序员交流经验,解决问题。 通过以上内容的学习,初学者将能够...
Yovae后台管理程序,程序大部分采用面向对象思想编写,MVC没有做到,有涉及Ajax技术,不过不多,这个程序我写了3天左右。 这个管理程序对于php的新手或想有进一步提升的朋友还是有蛮大的启发的,注释很少,我都用...
PHP 5.x提供了更稳定、更安全的执行环境,同时支持更多的特性,如面向对象编程、错误处理机制等,这些对于一个复杂的CMS系统至关重要。 **文件列表:【资料整理】** 虽然具体的文件列表未给出,但可以推测"【资料...
面向对象;留言系统 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。
有人问:为什么只有PHP后端,没有JAVA和NET,很遗含告诉你,本人不懂JAVA和NET,但是以后的升级我会加上去的,当然你JAVA和NET玩得牛B,你可以在我的JS基础上编写。 目前shearphoto只支持PHP,如果你把JAVA或NET写了...
签到数据库用Mysqli扩展库以面向对象的方式保存用户签到信息 目前功能和页面效果还在不断完善中,如有问题欢迎Issues中讨论 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok...
有人问:为什么只有PHP后端,没有JAVA和NET,很遗含告诉你,本人不懂JAVA和NET,但是以后的升级我会加上去的,当然你JAVA和NET玩得牛B,你可以在我的JS基础上编写。 目前shearphoto只支持PHP,如果你把JAVA或NET写了...
对PHP的掌握不精(很多PHP手册都没有看完,库除外) 知识面比较窄(面对需求,除开使用PHP和mysql ,不知道其它的解决办法) PHP代码以过程为主,认为面向对象的实现太绕,看不懂 这些PHPer 在遇到需要高性能,处理...