PhpStorm Live Template加PHP短语法Short Open Tags打造原生模板

关于Php要不要使用模板一直被大家讨论,支持的说使用模板更简洁,易与前端project师交流。反对的说Php本身就支持内嵌语法,不是必需再用个模板,减少性能。

事实上使用Php的短语法。直接嵌入也不是非常难看,该支持的循环啥的都支持,再配合PhpStorm神器的Live Template,连Shift都不用按了,非常省事。(其他IDE也应该有对应的代码片段功能)

先看看效果:

//输出 [stv]
<?

= $x ?>

//if-else [stif]
<? if ($x > $y): ?

>
    <h4>x is greater than y</h4>
//[stelif]
<? elseif ($x == $y): ?>
    <h4>x is equal to y</h4>
<? else: ?>
    <h4>x is less than y</h4>
<? endif ?>

//for [stfor]
<? for ($i = 0; $i < 10; $i++): ?

>
    <h7><?= $i ?></h7>
<? endfor ?>

//foreach [stfore]
<? $list = array('a', 'b', 'c', 'd', 'e') ?

>
<?

foreach($list as $val): ?>
a=<?= $val ?>
<? endforeach ?>

//foreach key=>value [stforek]
<? foreach(array('a'=>1,'b' => 2) as $key => $var): ?>
<?= $$key ?>=><?= $var ?

>
<? endforeach ?

>

//while [stw]
<? while ($i < 10): ?>
    <h7><?= $i ?></h7>
    <? $i++ ?>
<? endwhile ?>

//switch(这个比較讨厌,由于后面要跟break)[stsw]
<? switch($i):
    case 0:
        echo '0'; break;
    case 1:
        echo '1'; break;
    case 2:
        echo '2'; break;
    default:
        echo 'N/A';
endswitch ?>

当中switch由于后面要跟break,所以就没有分行,而是用一个php块。只是由于短语法中的if-else也非常直观,能够取代switch。我在phpstorm中还特地添加了<? elseif($x == 1): ?>的片段,方便添加推断逻辑。

前提是要在php.ini中打开支持,short_open_tag = On。在SAE也支持。其他云站点还没试过。

另外。PHP5.4以后,不用设置short_open_tag=on,<?= ?>总是可用,(但<?

?>仍然须要设置php.ini来开启)。说明大家对它的需求还是挺多的。实在操心兼容性的能够手动改动live template,将<? ?>改为<?php ?

>。

以下就是在phpstrom中增加live template,这个就相当于语法提示,你输入前几个字母(keyword)。按tab。它就自己主动把自己定义的补上。

keyword我都写在上面代码中方括号里了。

phpstorm的配置我就不一一贴了,后面给须要的下载地址,以下是while [stw] 的演示样例:

<? while($$$VAR$ $COND$ $COMP$): ?>
$END$
<? $$$VAR$++ ?>
<? endwhile ?

>

setting.jar的下载地址:setting.jar(当中仅仅包含了Live Template设置。并且放在了一个自建的文件夹下。不用操心覆盖自己的设置。

时间: 2024-10-13 09:09:00

PhpStorm Live Template加PHP短语法Short Open Tags打造原生模板的相关文章

golang 模板(template)的常用基本语法

在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成动态网页,golang提供了html/template包来支持模板渲染. 这篇文章不讨论golang后端的模板读取及渲染方法,只讨论模板中嵌入变量,渲染变量.循环等一些基本用法. 变量 在golang渲染template的时候,可以接受一个interface{}类型的变量,我们在模板文件中可以读取变量内的值并渲染到模板里. 有两个常用的传入参数的类型.一个是struct,在模板内可以读取该struct域的

短信列表如何让同一个号码的短信只显示一条,刚刚加载短信列表会加载所有的数据列。求指教

============问题描述============ 加载短信列表的话,不做处理.每条数据表的记录都会显示在界面上.现在要把同号码的只显示最新的一条.怎么弄.在线等 ============解决方案1============ 分组来处理 一个号码的所有信息放在一个list里面,显示第一条即可

Django Template模板层 (下) ----------- 过滤器、人性化过滤器、模板继承、模板加载

---恢复内容开始--- 过滤器 除了模板标签可以帮助我们对数据或者进行逻辑处理.django 中还提供了一款工具叫做过滤器,过滤器也可以实现一些模板变量的运算,判断或是其他逻辑处理. add 语法: {{ var1|add:var2 }} add 过滤器可以实现 var1 与 var2 的相加,并且在遇到其他相同数据类型的,比如列表时,加号还可以重载为拼接功能 过滤器首先会将数据转换成Int类型,进行相加,如果转换失败,则会尝试使用 Python 中的数据类型 列表.元祖等这样的数据类型来进行

php基础语法(文件加载和错误)

文件加载 有4个文件加载的语法形式(注意,不是函数): include,  include_once,  require, require_once; 他们的本质是一样的,都是用于加载/引入/包含/载入一个外部文件到当前php代码中来. 他们只在2个方面有细微区别: 1,如果加载文件失败,则有不同的处理规则:include和require不同 2,如果加载文件重复,则有不同的处理规则:XXX和XXX_once不同: 3,他们都是语法结构,而非函数,使用形式可以有两种: 3.1  include

Flask 的 template模板 与 jinja2语法

Flask 的 template模板 与 jinja2语法 Flask使用的是Jinja2模板,所以其语法和Django基本无差别 1.模板基本数据的渲染 变量 {{..}} 列表 {% for item in List %}<li>{{item}}</li>{% endfor %} 字典 {% for k,v in Dict.items() %}<li>{{k}}{{v}}</li>{% endfor %} 2 注意:Markup等价django的mark

基于j2ee的信箱与短信系统设计与实现

摘    要 当前,信箱与短信系统己经成为对外信息公开.受理公众投诉.咨询和政民互动的主要渠道之一.传统的信箱与短信系统受理时间长.效率低.渠道单一,同时受人为影响较大,督促较为困难. 随着科学技术的发展,计算机网络技术在行业应用的普及,应用现代信息技术在市长信箱与短信系统展现出了越来越多的优势.木文基于贵州某市的实际需求,完成了市长信箱与短信系统的分析和设计. 本文完成了一个基于B/S架构.以J2EE技术和SQLServer后台数据库为基础的.具备多渠道受理.后台统一管理.标准化.流程化.大量

PHP数据压缩、加解密(pack, unpack)

PHP数据压缩.加解密(pack, unpack) 网络通信.文件存储中经常需要交换数据,为了减少网络通信流量.文件存储大小以及加密通信规则,经常需要对数据进行双向加解密以保证数据的安全. PHP中实现此功能主要需要使用的函数主要是pack及unpack函数   pack 压缩资料到位字符串之中. 语法: string pack(string format, mixed [args]...); 返回值: 字符串 本函数用来将资料压缩打包到位的字符串之中. a - NUL- 字符串填满[padde

Go标准库:Go template用法详解

本文只介绍template的语法和用法,关于template包的函数.方法.template的结构和原理,见:深入剖析Go template. 入门示例 以下为test.html文件的内容,里面使用了一个template语法{{.}}. <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"

Velocity魔法堂系列二:VTL语法详解

一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不同的平台上,如.Net的NVelocity和js的Velocity.js,虽然各平台在使用和实现上略有差别,但大部分语法和引擎核心的实现是一致的,因此学习成本降低不少哦. 最好的学习资源——官网:http://velocity.apache.org/ 本系列打算采用如下结构对Velocity进行较为