论坛首页 编程语言技术论坛

搞不懂php中的面向对象

浏览 20987 次
精华帖 (0) :: 良好帖 (3) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2009-06-19  
dualface 写道

php 没有线程,运行模式也和 java 完全不同,还是多多补充基础知识吧

你开玩笑吧,php没多线程?pcntl_fork
0 请登录后投票
   发表时间:2009-06-19  
记得PHP作者不建议使用框架和过度包装,PHP本身就是嵌入在HTML里的标签语言,感觉用PHP开发WEB程序继承都不需要用,函数+模板都可以处理大多数事情。
0 请登录后投票
   发表时间:2009-06-19  
luolonghao 写道

记得PHP作者不建议使用框架和过度包装,PHP本身就是嵌入在HTML里的标签语言,感觉用PHP开发WEB程序继承都不需要用,函数+模板都可以处理大多数事情。

我开始也是你这么想的,但是现在觉得框架不是不需要,要看什么场合。简单的项目就无所谓了,但中型项目用框架还是可以减少很多重复工作。而且维护性,扩展性比较强!
0 请登录后投票
   发表时间:2009-06-19  
怎么忽然觉得PHP的语法这么BT啊..

return $this->x;

像火星文一样.-_-!
0 请登录后投票
   发表时间:2009-06-19  
only_java 写道
dualface 写道

php 没有线程,运行模式也和 java 完全不同,还是多多补充基础知识吧

你开玩笑吧,php没多线程?pcntl_fork


pcntl_fork — Forks the currently running process
0 请登录后投票
   发表时间:2009-06-19   最后修改:2009-06-19
lyhapple 写道
怎么忽然觉得PHP的语法这么BT啊..

return $this->x;

像火星文一样.-_-!


用Java思路写PHP简直是没事找麻烦。从PHP手册的例子看出PHP不是这么用的。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Example</title>
    </head>
    <body>

        <?php
            echo "Hi, I'm a PHP script!";
        ?>

    </body>
</html> 

0 请登录后投票
   发表时间:2009-06-20  
luolonghao 写道
记得PHP作者不建议使用框架和过度包装,PHP本身就是嵌入在HTML里的标签语言,感觉用PHP开发WEB程序继承都不需要用,函数+模板都可以处理大多数事情。


恐怕不是这样的吧,对任何语言来说,能重用代码都是一件好事情。
0 请登录后投票
   发表时间:2009-06-20  
luolonghao 写道

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Example</title>
    </head>
    <body>

        <?php
            echo "Hi, I'm a PHP script!";
        ?>

    </body>
</html> 



实际项目的页面怎么可能这么简单呢。。

所以,模板是肯定用到的。
0 请登录后投票
   发表时间:2009-06-20  
only_java 写道
dualface 写道

php 没有线程,运行模式也和 java 完全不同,还是多多补充基础知识吧

你开玩笑吧,php没多线程?pcntl_fork

兄台,你开玩笑吧,pcntl_fork 是线程?
0 请登录后投票
   发表时间:2009-06-20  
only_java 写道
diogin 写道
PHP是一门解释型语言,类的定义都是在运行时完成的,所以 static function 里使用了 $this,在编译时是无法捕获的,只有运行时才会碰到问题。你这么用是违反基本的面向对象原则的,只是因为PHP的动态特性,你可以这么写,但这是没意义的。

PHP跟Java还是有相当多的区别的,不要把Java那些运行原理拿来套PHP。

继承下来的子类,如果有构造函数,在实例化时PHP是不会主动调用父类的构造函数的,除非你在子类的构造函数里显式调用父类的构造函数。

是否面向对象不是看你有没有用 static。
面向对象与否是看你如何看待某个事物,而不是形式化的 class、static。

这位貌似是个高手,static function 里使用了 $this,在编译时是无法捕获的
但在实际执行时是正确的

是否面向对象不是看你有没有用 static。

我没说面向对象一定要用static,我只是好奇一个项目中的大部分类文件都是用static方法,甚至连个成员也没有。感觉起来有点当成函数使用一样,只不过这些函数在某个类下才能用。

面向对象与否是看你如何看待某个事物,而不是形式化的 class、static。
这句话感觉有点在讲哲学的味道,我觉得php中的面向对象最大的好处就是维护起来更好


如果只是拿个 class 套一下代码,所谓的“面向对象”“更好维护”基本是自我安慰。
面向对象编程受程序运行环境的影响是非常大的。在PHP解释器的运行环境上,很多传统的面向对象观念都需要转变,比如 static,比如什么是对象,什么是类,比如是否可以把类当成对象用,然后基于“类对象”使用原型继承,等等。

还是那句话,看一个设计是否优秀,不是看用没用上形式化的 class 之类,而是看开发者如何看待某事物。
没有成员的“类”就是不好的设计?不见得,只要你给它分配了很明确的职责,它就是一个良好的对象。

推荐一本OO经典,《对象设计:角色、责任与协作》。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics