代码之家  ›  专栏  ›  技术社区  ›  niggles

MVC作为专业级编程的最佳实践?

  •  9
  • niggles  · 技术社区  · 15 年前

    长期潜伏者,第一次海报。。。

    或者当我需要编码的灵活性时,我会遇到问题吗。

    • 使用类似PHPthumb的东西作为我想要不同输出的库 不同页面上的大小和当前在头部设置的参数 页面的

    请不要告诉我不要建立我自己的框架-我宁愿知道每一点如何工作,而不是使用一块我一无所知的代码-我真的很有兴趣的人谁走这条路线,每天建立网站的意见。与1相比,这种简单(但结构良好)的面向对象编程(OOP)和一个站点的一堆页面的真正优点和缺点是什么索引.php页面和单独的文件。

    干杯,

    5 回复  |  直到 15 年前
        1
  •  15
  •   user229044    8 年前

    我知道你说你不想要这个建议,但不要自己写。在我从事的每一项工作中,我做的第一件事就是拿起一些现有的代码或框架,通常是商业化的,但经过高度修改,并开始维护它。你很少有机会自己写,这样做是个坏主意。这很难,很昂贵,而且其他人已经编写了比您可能编写的更好的MVC-PHP框架。

    mature PHP frameworks ,其中大部分已经存在了十多年。选一个。不管是哪一个,它们都是由十几个人维护的,至少和你一样聪明,他们编写MVC框架的时间更长,花了数月或数年的时间来完善他们的框架并倾听用户的输入。

    所有这些都表明,如果你想在自己的时间写自己的东西,作为一种爱好,这样你就不会浪费老板的钱,那就千方百计吧。MVC有各种各样的解释。一些框架将视图视为基本模板。我个人认为,只要它的目的是显示,并且您可以做一些通常的聪明的事情,比如将共享代码提取到函数中,您就可以在那里随意地抛出许多原始PHP。一些框架在模型中几乎没有业务逻辑(它属于IMO),但是有非常重的控制器。你能做的最好的事情就是尝试其他框架,看看它们是如何工作的,你最喜欢哪一个,然后决定你希望看到什么改变。然后,开始改变它在你自己。

    你说你几乎准备好把自己当成专业人士了?我学到的最难的一课是,专业人士不会自己编写低级库。他们不会在公司的责任上重新设计轮子。他们使用现成的组件,并在今天完成工作,而不是从现在起一个月。你不想用一大堆不熟悉的代码吗?作为一个程序员,这是你生活中最重要的部分——习惯它。

        2
  •  3
  •   user229044    12 年前

    写你自己的框架对于你自己的教化和真正理解语言是很好的。

    我个人觉得使用第三方框架和编写自己的框架一样耗时。然而,我完全可以控制自己的代码,这不是任何第三方框架都能做到的。

    我还认为许多MVC框架都是资源密集型的。对于高容量站点,您需要准备好向它们扔硬件,以使它们运行良好。对于低容量站点(大多数)来说,快速开发第三方MVC框架是一个巨大的好处。

        3
  •  1
  •   denver_citizen    15 年前

    这完全取决于项目需求是什么以及如何设计应用程序对象。MVC不会强迫您使用特定的类或视图设计,它只会为您提供一个体系结构,帮助您将业务逻辑与表示层和数据层隔离开来,从而使您的应用程序更具可扩展性和易于测试。

    在MVC中,您不必为每个控制器绑定一个视图,您可以为每个控制器使用任意多个视图,因为每个公开的方法都可以调用视图本身,并根据您定义的业务逻辑控制视图的外观和行为。也就是说,您可以有两种方法返回一个完整大小的图像和缩略图,而不必创建两个页面。您可以从控制器、头元数据、脚本、链接、主题、内容等设置视图上的所有内容。。。

    关于模型,这同样取决于您的项目要求,但在任何情况下,如果您有多个具有不同目的的页面,并且它们需要修改不同的数据源,那么每个页面都应该有一个模型,之后您可以做的是创建一个类,通过调用该模型来封装表单功能,以获取要创建表单、获取和保存数据的字段。这只是一个想法,你可以用很多不同的方法来实现,这就是OOP的美妙之处。

    如果你想获得更多关于设计模式的想法,你可以使用googlemvp设计模式和/或MVVM设计模式。

        4
  •  1
  •   Vipul    11 年前

    我已经写了自己的框架。创建体系结构和原始代码不需要时间。如果有人在那里写自己的框架就好了。但如果文件不合适的话,肯定会很痛苦。完全取决于你自己。我也写了我的。几乎花了7天时间才准备好框架QA:)。但是主要的问题是对在框架中编写的代码感到满意。你总是想即兴发挥你的框架,并希望它是最好的。废话!废话!如果你想写你自己的,你有足够的信心维持。去吧。

        5
  •  0
  •   gabrielk    15 年前

    ob\u start()/ob\u*调用没有问题,它们进入您的模型并从您的模板调用,例如:

    Hello <?php echo $this->getFormattedName(); ?>
    

    你的模特在哪里

    function getFormattedName() {
        ob_start();
        echo '<a href="/profile/' . $this->getName() . '">' . $this->getName() . '</a>';
        $return = ob_end_clean();
        return $return;
    }