随着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. 002——数组(二)each() list() implode() explode() in_array()

    <?php /** * 数组(二)each() list() implode() explode() in_array() */ /*implode() 把数组拆分成字符串 * explode( ...

  2. PHP7.2.12-Configuration-Option

    # PHP7.2.12 <pre style="background-color: rgb(255,250,233);"> `configure' configures ...

  3. NodeJS反序列化漏洞利用

    原文来自:http://www.4hou.com/web/13024.html node.js是一个服务器端的运行环境,封装了Google V8引擎,V8引擎执行JavaScript速度非常快,性能非 ...

  4. 右键添加git bush here

    由于sourcetree自动安装的git,导致右键没有git bush here,那么我们就自己添加一下. 运行regedit.exe进入注册表,在HKEY_CLASSES_ROOT\Director ...

  5. OPENCV Linux安装

    https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html

  6. HBase查询优化——持续更新

    Scan:setBatch,setCaching,setCacheBlocks public void setBatch(int batch) public void setCaching(int c ...

  7. Winform开发常用控件之ComboBox、ListBox

    ComboBox就是我们常见的下拉框,对于此类控件,我们最关心的当然是数据的绑定和选择值得获取. 首先介绍个属性DropDownStyle,如果不允许ComboBox输入值,只能选择,就选DropDo ...

  8. BZOJ4886: [Lydsy1705月赛]叠塔游戏(环套树森林&贪心)

    4886: [Lydsy1705月赛]叠塔游戏 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 198  Solved: 76[Submit][Stat ...

  9. Js 实战3(实现全选)

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs ...

  10. JS 实战1(添加、删除)

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs ...