PHP vs OO PHP - 使用哪一个?

时间:2010-07-12 22:29:56

标签: php oop

我正在使用常规PHP开发一个Web系统。这是我第一次使用PHP,因此代码不易读,也不干净。它将一些HTML代码与PHP混合在一起。 我说我已经完成了一半的代码。

面向对象PHP的真正优势是什么? 该网站是关于书籍和书籍作者,使用MySQL和Apache。所以这不是一个非常复杂的网站。

4 个答案:

答案 0 :(得分:16)

面向对象的真正优势:您的代码组织更好,更易于维护,更模块化(因此更易于重用),并且可能不那么脆弱(因为封装了状态和实现,并且希望更好的安全性)。 (我的愤世嫉俗者也说,如果你学习面向对象的PHP,你迈出了迈出PHP ghetto的第一步。嘿。为我工作!)

已经有很多问题来自PHP人员在Stack Overflow上进入OO:

更不用说有数以万计的PHP面向对象教程了。我的看法:基本上,是的,如果你正在编写PHP,你可能应该编写面向对象的PHP,用于除了最简单的应用程序之外的任何东西。 PHP有许多类似Rails的框架,可以让您的生活更轻松,并可以帮助您成为更好的程序员。

答案 1 :(得分:2)

面向对象的PHP与您与PHP代码混合的HTML代码量的程序样式没有区别。因此,如果您唯一关注的是混合,那么您应该寻找其他方法来清理代码。例如,您可以使用动态内容的占位符创建html模板文件,并使用file_get_contents和str_replace在运行时注入动态内容。

答案 2 :(得分:0)

在我看来,我们PHPers可以彻底抛弃Object(类实例)的概念,我们只需要Array和Mode Class:

初始模式下的所有数组都支持任何数组函数作为其方法:

<?php
$array1->array_flip(this);
?>

使用“ - &gt; mode()”验证最小数据集,然后切换模式类:

<?php
$array1->mode('class1', $success);
?>

任何模式类中都没有“ - &gt; construct()”,但有“ - &gt; validate()”来验证最小数据集。

模式中的数组仍然可以使用数组函数作为其方法,但在使用其中任何一个数组后,数组将切换回基本数组模式, 我们需要使用“ - &gt;模式('class1',$ success);”切换模式。

这里的激进思想是以数据为中心的编程;我们需要分离数据(数组)和活动(类方法)。

我们可以修改PHP引擎,摆脱部分OO(面向对象),并支持Mode Class。我们可以称之为MyPHP。

例如: $ array_man1可以设置为两种模式:cls_normal_man和cls_crazy_man:

<?php
$array_man1->mode('cls_normal_man')->normal_method1()->mode('cls_crazy_man')->crazy_method1();
?>

答案 3 :(得分:-5)

如果您真的想使用oo编程,请转到Ruby。

对我来说,OO PHP是假的。如果你已经在结构php中完成了一半的代码,请不要改变主意。

只需记住使用大量注释使代码清晰,以便将来轻松改变