随着web的发展,仅一门语言或者一种技术已经不能满足需求,分层架构显得越来越重要。在大型架构中,从来不会简单地应用php从头到尾实现一个完整的mvc架构。可能底层是c/java的支撑,负责密集运算和yu与数据库的交互。表现层用javascript+PHP完成,js负责前端大部分业务逻辑he和数据发送,数据经由PHP送达后端。比如淘宝,使用PHP作为前端,java是主要的后端语言,实现密集运算和数据中心。再如百度,主要逻辑和数学运算由C完成,PHP只是前端语言,并且在代码中大量使用C完成PHP扩展.

越是大型应用,PHP扮演的角色越接近于前端,越来越向前端靠近。PHP仅仅负责数据de的传输和简单业务判断,配合javascrit完成表现层的工作,此时PHP的金额色是视图层。PHP本身是一套C函数的抽象,可以理解为C写成的模板语言,此时再使用PHP实现一个模板引擎已经不那么必要了。PHP代码和HTML代码的混写也是可以接受的,况且PHP强项就是字符串和数组处理,作为前端模板语言非常合适。

从另一个角度来说,模板引擎真的对前端友好吗?其实模板引擎的语法不比PHP原生语言简单,况且很多情况下,这部分代码是由程序员自己完成,美工只是负责切图和CSS。对于程序员而言,每个模板引擎的语言并不一样。每一种模板语言都需要一定的学习成本。而原生PHP在任何地方都能通用,没有学习成本,只要把缓存做好就可以了。

随着ajax,jquery的流行,使用javascript负责部分前端数据展示变得流行,特别是jQuery的推波助澜,一些javascritp引擎耶引发了开发者的兴趣。这样依赖PHP只需要负责生成数据,至于数据的占时和逻辑判断等则由javascript处理

在多层架构体系中,PHP扮演的较色越来越少,所以PHP也就用不到太多道具了。我们编程的时候应做多语言协作,前后端协作,百花争鸣,让每一种语言和工具都扮演好自己的角色,做自己擅长的事情,合理分配负载。

模板引擎 引自 《PHP核心技术与最佳实践》的更多相关文章

  1. 温习《PHP 核心技术与最佳实践》这本书

    再次看这本书,顺手提炼了一下大致目录,以便后续看见目录就知道大概讲的些什么内容 PHP 核心技术与最佳实践 1.面向对象思想的核心概念 1.1 面向对象的『形』与『本』 1.2 魔术方法的应用 1.2 ...

  2. PHP核心技术与最佳实践——全局浏览

    难得买到并喜欢一本好书,‘PHP核心技术与最佳实践’. 几天时间,先看了个大概,总结一下整体是什么样子的,怎么看怎么学. 1.总共14章: 2.第1.2章讲PHP的OOP: 其中第一章侧重于PHP的O ...

  3. php核心技术与最佳实践知识点(上)

    一.基础 1.serialize:序列化一个类,只是保存了类的属性,所以还需要反序列化unserialize的时候包含该类. 2.对于将array转为object,这个转换因为没有具体的类,所以称为了 ...

  4. java7:核心技术与最佳实践读书笔记——类加载

    流程:class -> 加载 ->  jvm虚拟机 -> 链接 . 一.类加载器概述 1.引出      类加载器也是一个java类,java.lang.ClassLoader类是所 ...

  5. php核心技术与最佳实践--- oop

    <?php /** * Created by PhpStorm. * User: cl * Date: 2019/8/12 * Time: 7:08 */ /*oop*/ class Perso ...

  6. PHP核心技术与最佳实践--笔记

    <?php error_reporting(E_ALL); /* php 5.3引入 延迟静态绑定 */ /* php5.4引入trait,用来实现多层继承 trait Hello{} trai ...

  7. 《Java核心技术与最佳实践》读书笔记

    第一章 Java7新语法 1.switch中使用字符串 2.增加二进制表示0b10101010:数字字面量允许直径使用下划线12_34_90 3.一个catch字句捕获多个异常,多个异常之间用|分隔 ...

  8. php核心技术与最佳实践(笔记一)

    1.1面向对象的型与本 类是对象的抽象组织,对象是类的具体存在. 1.1.1对象的形 <?php class Person{ public $name; public $gender; publ ...

  9. PHP-PHP核心技术与最佳实践阅读

    1.对象的实质: 对象就是数据, 对象本身不包含方法, 但是对象有一个"指针"指向一个类, 这个类里可以有方法 2.反射是指在PHP运行状态中, 扩展分析PHP程序, 导出或者提取 ...

随机推荐

  1. C语言中的可变参数函数

    C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为: int printf( const char* format, ...); 它除了有一个参数format固定以外 ...

  2. 理解HTTP之Content-Type

    http://homeway.me/2015/07/19/understand-http-about-content-type/

  3. pyqt5事件与鼠标事件

    一,每个事件都被封装成相应的类: pyqt中,每个事件类型都被封装成相应的事件类,如鼠标事件为QMouseEvent,键盘事件为QKeyEvent等.而它们的基类是QEvent. 二,基类QEvent ...

  4. 5.5修改xadmin的头部底部和导航栏名称

    1.修改xadmin的头部标题和底部信息: 在users模块中的adminx.py中添加修改函数: from xadmin import views class GlobalSettings(obje ...

  5. Tomcat启动 Unable to process Jar entry [javassist/XXXXXX.class]

    例如: 03-Mar-2017 17:01:45.864 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.startup.Co ...

  6. streamsets mongodb destinations 使用

    测试集成了directory(excel) 以及redis && field splitter 组件 pipeline flow docker-compose 配置 redis 服务& ...

  7. WiFi密码破解详细图文教程

    每天都能看到有不少网友在回复论坛之前发布的一篇破解WiFi密码的帖子,并伴随各种疑问.今天流云就为大家准备一篇实战型的文章吧,详细图文从思维CDlinux U盘启动到中文设置,如何进行路由SSID扫描 ...

  8. apache伪静态设置

    在网站根目录下新建一个.htaccess文件即可,编辑如下 RewriteEngine On #游戏列表详细介绍 RewriteRule ^g-([0-9]+).html$ game.php?acti ...

  9. prefix sums--codility

    lesson 5: prefix sums 1. PassingCars 2. CountDiv 3. GenomicRangeQuery 4. MinAvgTwoSlice lesson 5: pr ...

  10. 正则,以“this.Name”开头,以“;”结尾

    string regex="this\\.Name(.*?);"; string regex="this\\.Name(.*?);"; 以size开头,以数字结 ...