重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
模板只用smarty。大小皆宜。
我们提供的服务有:成都网站设计、做网站、微信公众号开发、网站优化、网站认证、新北ssl等。为数千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的新北网站制作公司
虽然目前模板也有不少种,但只有smarty最接近MVC。
另外,就如你说,小站不太适合smarty,有点大炮打鸟的感觉。
没听说国内有什么好的模板引擎。不过有些不错的开发框架 。PHP的开发框架多如牛毛。楼上的PHPLIB也是国外的。
smarty也有中文手册,当然,是国内翻译的,smarty网站上是找不到的。PHPLIB虽然小,但是如果使用了它,对于网站的访问速度上远不如smarty好。因为smarty有一个编译缓存机制,PHPLIB只有一个编译机制,没有缓存。
所以还是直接就上手smarty吧。
其实smarty很容易的,就那么几条命令,还没有PHP的一组字符串操作函数多。
一是设置那三目录用
$smarty-template_dir = './templates/';
$smarty-compile_dir = './templates_c/';
$smarty-cache_dir = './cache/'; 并确保这三目录存在并且路径正确.
二是你模板写法有误
应改为
新闻编号:{$newsID.newsID}br
新闻内容:{$newsID.newsTitle}brhr
三开发期间最好别启用SMARTY CACHE 将 $smarty-caching = false;
把 {foreach from $articlelist item=articlelist} 改成 {foreach from=$articlelist item="articleitem"}
把{$articlelist.article_title} 改成 {$articleitem.article_title}
改成这样的试试看,你这里 {foreach from $articlelist item=articlelist} 写法就有问题了
from 要等于 $articlelist from=$articlelist
item 值名不能与 输入多维数据名一样
最后 {foreach from=$articlelist item="articleitem"} 是 Smarty 2 的写法
Smarty 3 的写法是 {foreach $articlelist as $articleitem}
PHP 是一种流行的开放源代码的脚本语言。PHP早期的缩写是“Personal HomePage”,现在官方正式名称为“PHP: Hypertext Preprocessor”的递归缩写。
PHP主要用于服务器端应用程序及动态网页上,但是也可以用在命令列上执行,或是开发独立的窗口程序接口(GUI)
开发历史
1994年,加拿大籍的程序设计师Rasmus Lerdorf开发了一组以C语言为基础的CGI程序,目的是要取代一些用来维护他个人网站的Perl程序,不久之后,他把这些CGI程序公布并取名为"Personal Home Page Tools",这也是PHP名称的由来。Rasmus Lerdorf一直维护PHP语言直到PHP第二版,使用的解析引擎为PHP/FI。
[编辑] PHP 3
1997年,Tel Aviv 公司的Zeev Suraski 和 Andi Gutmans 改写了原本的解析引擎PHP/FI,并把PHP重新命名为"PHP: Hypertext Preprocessor"。在1998年公布了PHP 3提供大众下载测试,1999年两人在以色列成立了Zend Technologies公司来投入PHP的开发工作,并且开始制作下一代的解析引擎 - Zend引擎。
[编辑] PHP 4
2000年5月22日,以Zend引擎 1.0为解析引擎的PHP 4.0 发布。这也是PHP开始大受欢迎的版本,目前PHP 4还有在做安全性的更新,最新的版本是2006年九月发布的PHP 4.4.4版。
[编辑] PHP 5
2004年7月13日,以Zend引擎II为基础的PHP 5.0 发布,同时也加入了许多新特性:
更完整的面向对象支持:基本上到PHP 5之后PHP才算是比较完整的面向对象语言。
透过新的Zend引擎,提升了PHP执行的速度。
对MySQL数据库有更完整的支持。
更佳的XML支持。
内建SQLite数据库(但在PHP 5.1取消了内建,改用扩展函数库的方式)。
整合了SOAP的支持。
提供许多程序语言有的例外处理功能。
实验性的介绍新的数据库存取接口PDO(PHP Data Objects),在PHP5.1则开始缺省安装PDO。
最新的版本是2006年11月发布的5.2.0
[编辑] 应用
PHP主要应用在网页服务器,处理使用者的输入来产生网页。但是命令列脚本或是视窗程序接口(GUI)的开发也是PHP的主要应用范围
[编辑] 服务器端脚本语言
PHP最初就是设计成服务器端脚本语言,因此这也是PHP应用最广的部份。在此领域有许多其他的竞争者,例如ASP.NET、ColdFusion、JSP、Perl、Ruby on Rails等等。
在网络工业领域,PHP是LAMP架构的其中一部分,所谓的LAMP是指Linux、Apache、MySQL、以及PHP所组成的网络环境,提供了许多安全、可靠的网页应用程序。PHP目前已经是全世界最受欢迎的服务器端脚本语言,跨平台的特性更是让PHP广为流传,目前共有1800万台服务器安装有PHP。
[编辑] 命令列脚本
PHP也可以用命令列上执行来使用,例如分析纪录档、系统管理工作等。这些工作过去都是由一些其他的脚本语言例如Perl, Python, awk等来执行,PHP的在命令列上的使用则逐渐增加。
[编辑] 视窗程序接口(GUI)
透过和GUI函式库GTK+的结合,PHP也可以应用在视窗程序接口(GUI)的开发上,目前的应用还不普遍。
[编辑] 语法
Hello World程序
下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序:
?php
echo 'Hello World!';
?
或
?
print 'Hello World!';
?
从中我们可以看出,PHP语言是嵌入在“?php...?”或“?...?” 之间的部分。而这个程序最终结果将是:
Hello World!
但建议您使用 ?php ... ? 此种方式撰写您的程序,因为在XML中使用? ?作为标签,在php缺省的设定档php.ini中,通常此设定值为Off,若您有打开此设定的需要,您可以参见 php.ini 中关于 “short_open_tag = Off ”这部份的设定。
[编辑] PHP相关资源
[编辑] 函式库
主条目:PHP函式库列表
内建多样化的函数是PHP主要的特点之一,这些开放程序码的函数提供了各种不同的功能,例如档案处理、FTP、字串处理、等等。这些函数的使用方法和C语言相近(例如printf),这也是PHP广为流行的原因之一。
除了内建的函数之外,PHP也提供了很多延伸函式库(extension),像是各种数据库连接函数、资料压缩函数、图形处理等等。有些延伸函式库需要从PECL(PHP Extension Community Library)取得。
[编辑] 原始码编码和加速
PHP原始码是可以直接读取的,即使放到服务器上执行也是一样。虽然让PHP多了弹性,但相对的会造成安全危机和性能下降的问题。
因此透过PHP编码器,可以保护PHP的原始码不被读取(对商业软件来说特别有需求),也可以提升执行的效能。有许多公司或团体开发PHP的编码器,将PHP程序编译成字节码,再透过服务器上安装对应的程序来执行PHP脚本。
除了透过编码器加速之外,PHP还可以透过动态的快取机制来提升速度,加速工具有商业版的(例如Zend Platform),也有开放原始码的(例如eAccelerator, APC)。
[编辑] 样板引擎
Smarty
Smarty是一个php模板引擎.
更准确的说,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法,可以描述为应用程序员和美工扮演了不同的角色,因为在大多数情况下 ,他们不可能是同一个人.例如,你正在创建一个用于浏览新闻的网页,新闻标题,标签栏,作者和内容等都是内容要素,他们并不包含应该怎样去呈现.在Smarty的程序里,这些被忽略了.模板设计者们编辑模板,组合使用html标签和模板标签去格式化这些要素的输出(html表格,背景色,字体大小,样式表,等等).有一天程序员想要改变文章检索的方式(也就是程序逻辑的改变).这个改变不影响模板设计者,内容仍将准确的输出到模板.同样的,哪天美工吃多了想要完全重做界面,也不会影响到程序逻辑.
程序员可以改变逻辑而不需要重新构建模板,模板设计者可以改变模板而不影响到逻辑
[编辑] PEAR
[编辑] PECL
[编辑] 对PHP的批评
PHP没有原生支援Unicode或是多位元字集(例如中文、日文、韩文等需要用两个以上为原来表示的字集),导致用PHP写的软件在国际语言化上遇到相当多的困难。
PHP没有名称空间(Namespace)的设计,降低了PHP语言设计上的弹性。预计在PHP 6会加入名称空间的特性。
PHP的函数命名规则非常的混乱,而且许多函数往往作用类似,只是传递的参数不同就要分成不同的函数,导致编写PHP程序时需要做相当多的手册查询工作,降低开发的效率。
PHP的魔术引号(magic quotes)功能可以自动处理使用者输入字串中的跳脱字符,有效避免SQL隐码攻击(SQL injection),但是因为不是每个使用者的输入都会写入到数据库,处理这些没有写入数据库的字串便浪费了效能。此外不是每个PHP环境都会开启魔术引号,程序设计时需要便需要对不同的服务器环境做因应,造成程序设计上的麻烦。魔术引号功能预计将会于PHP 6时取消。
有些PHP延伸函式库不是执行绪安全(threadsafe),导致PHP安装在多执行绪的服务器例如Apache 2上会发生不稳定的状况。