随着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. 017PHP基础知识——流程控制语句(五)

    <?php /** * break;退出循环: * 语法结构:break int;可以指定跳过几级循环: * while do_while for foreach switch */ /*$i= ...

  2. bzoj1074

    题意: 给你n次折叠 m个询问 每次询问折叠后,xi,yi有几层 题解: 计算几何 模拟 #include<cstdio> #include<cstdlib> #include ...

  3. [CSS布局]3列布局:左右两列固定宽度、中间列自适应满宽

    一种常见的3列布局,左右两列固定宽度.中间列自适应满宽.整个网页不出现横向滚动条 纯CSS实现 效果图: 代码: <!DOCTYPE html> <html lang="e ...

  4. SQL Server2008 R2开启远程连接总结

    ============================== SQL Server2008 R2开启远程连接(最全总结) ============================== 安装过程:适用W ...

  5. 【liunx】telnet命令

    telnet命令用于登录远程主机,对远程主机进行管理.telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了.但仍然有很多别的系统可能采 ...

  6. SEO -- WP如何建立SiteMap

    站点地图对网站的seo优化有着相当重要的作用,而WordPress的优势就是插件特别的多,也特别符合蜘蛛的口味,在wp上建立站点地图是相当简单的事情,只需要一款插件和几步简单的配置 Google XM ...

  7. git回滚分支版本到指定版本

    昨天提交代码时Eclipse凌乱了,本来拉了dev-20190201分支的,结果提交时竟然跑到dev分支了.为了把dev分支回滚,可以有两种方式:Eclipse和命令行. 先说简单的命令行方式,先用g ...

  8. Mysql向存储过程中传递中文参数变成乱码的解决方案

    今天做程序需要用到一个存储过程,然后用php程序调用.  存储过程如下: delimiter $$ CREATE PROCEDURE disagree_upgrade_detail(a int,b t ...

  9. 【python】 使用 setuptools

    不会安装python的egg文件,在网上搜索了一下,被“蟒蛇蛋”这个词雷到了,记录下. 随着对python的逐渐使用,发现一些python组件是用一个包管理器发布的,今天搞了快一个小时,终于搞定了,这 ...

  10. codeforce1029B B. Creating the Contest(简单dp,简单版单调栈)

    B. Creating the Contest time limit per test 1 second memory limit per test 256 megabytes input stand ...