仓酷云 发表于 2015-2-4 00:28:02

PHP编程:让你的Smarty更伶俐

刚开始写页面程序,调试完书中的例子。然后就可以尝试编写留言板了,   1、扩大你的Smarty
1、筹办工夫

PHP代码:--------------------------------------------------------------------------------
function Smarty_function_page ( $params, &$Smarty )
{
$href = '#';
$space = ' ';

$frist = NULL;
$last = NULL;

$page = 5;

extract($params);

if ( !$row || $row <= 1 ) return ' ';

$pages = $row;
$curr_page = $now ? $now : 1;
$offset = 2;
$from = $curr_page - $offset;
$to = $curr_page + $page - $offset - 1;

if ( $page > $pages )
{
$from = 1;
$to = $pages;
}
else
{
if ( $from < 1)
{
$to = $curr_page + 1 - $from;
$from = 1;
if ( ( $to - $from ) < $page && ( $to - $from ) < $pages )
{
$to = $page;
}
}
elseif ( $to > $pages )
{
$from = $curr_page - $pages + $to;
$to = $pages;
if ( ( $to - $from ) < $page && ( $to - $from) < $pages )
{
$from = $pages - $page + 1;
}
}
}

if ( $frist && ( $curr_page - 1 ) >= 1 ) $p['frist'] = '<a href="' . $href . '1">' . $frist . '</a>';
if ( $prev && ( $i = $curr_page - 1 ) >= 1 ) $p['prev'] = '<a href="' . $href . $i . '">' . $prev . '</a>';
for( $i = $from; $i <= $to; $i ++ )
{
if ( $i == $curr_page )
{
$p[$i] = '<a href="' . $href . $i . '" class="nowpage" target="_self">[' . $i . ']</a>';
}
else
{
$p[$i] = '<a href="' . $href . $i . '" target="_self">' . $i . '</a>';
}
}
if ( $next && ( $i = $curr_page + 1 ) <= $pages ) $p['next'] = '<a href="' . $href . $i . '" target="_self">' . $next . '</a>';
if ( $last && ( $curr_page + 1 ) <= $pages ) $p['last'] = '<a href="' . $href . $pages . '" target="_self">' . $last . '</a>';

return implode( $space, $p );
} // end func

--------------------------------------------------------------------------------


将下面的代码定名为"function.page.php"保留到Smarty的plugins目次里


代码:--------------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
{page row=10}
{page row=10 now=5}
{page row=10 now=5 href="plugins.php?a=1&b=2&page=" frist="第一页" prev="上一页" next="下一页" last="最初页"}
{page row=10 now=5 href="plugins.php?a=1&b=2&page=" frist="第一页" prev="上一页" next="下一页" last="最初页"}
{page row=10 now=1 href="plugins.php?a=1&b=2&page=" frist="第一页" prev="上一页" next="下一页" last="最初页"}
{page row=10 now=10 href="plugins.php?a=1&b=2&page=" frist="第一页" prev="上一页" next="下一页" last="最初页"}
</BODY>
</HTML>
--------------------------------------------------------------------------------


将下面的代码定名为"plugins.html"保留到Smarty的template目次里

2、测试法式

PHP代码:--------------------------------------------------------------------------------
$Smarty->display( 'plugins.html' );

--------------------------------------------------------------------------------


3、利用申明
我懒得打了,对照一下"plugins.html"的5个{page}用法,和看看显示出来的后果就分明是甚么了

4、插件申明
“《Smarty手册》第十六章.以插件扩大Smarty ”的使用。像中文字符截取之类的都可以以plugins扩大Smarty,Smarty自带的截取不撑持中文。


__________________

2、Smarty主动生成静态页面
假如你的文件扩大名为".html"~~~~~嘿嘿,这不就是静态页面了吗?-_-!

至于怎样获得静态的文件名呢?


PHP代码:--------------------------------------------------------------------------------
/**
*
*/
class template extends Smarty
{

/**
*
*/
function template ()
{
$this->Smarty();
} // end func

/**
*
*/
function name ( $tpl_file, $cache_id = null, $compile_id = null )
{

if (!isset($compile_id)) $compile_id = $this->compile_id;

$_auto_id = $this->_get_auto_id( $cache_id, $compile_id );
$_cache_file = $this->_get_auto_filename( $this->cache_dir, $tpl_file, $_auto_id );

return basename( $_cache_file );
} // end func
} // end class

$Smarty = new template;
$file_name = $Smarty->name( 'plugins.html', 'cache_name' );#html文件的名字(不包括途径)

$Smarty->cache_lifetime = -1;#静态文件永不外期
$Smarty->fetch( 'plugins.html', 'cache_name' );#生成静态html文件
这是村里翻译的,实践上Smarty的使用还远不止于此。

One of the unique aspects about Smarty is the template compling. This means Smarty reads the template files and creates PHP scripts from them. Once they are created, they are executed from then on. Therefore there is no costly template file parsing for each request, and each template can take full advantage of PHP compiler cache solutions such as Zend Accelerator (http://www.zend.com) or PHP Accelerator (http://www.php-accelerator.co.uk).

Smarty的特色之一是"模板编译"。意思是Smarty读取模板文件然后用他们创立php剧本。这些剧本创立今后将被履行。因而并没有消费模板文件的语法解析,同时每一个模板可以享用到诸如Zend减速器(http://www.zend.com) 或PHP减速器(http://www.php-accelerator.co.uk)。如许的php编译器高速缓存处理计划。

Some of Smarty's features:
Smaty的一些特色:

It is extremely fast.
十分十分的快!

It is efficient since the PHP parser does the dirty work.
用php剖析器干这个苦差事是无效的

No template parsing overhead, only compiles once.
不需求过剩的模板语法解析,仅仅是编译一次

It is smart about recompiling only the template files that have changed.
仅对修正过的模板文件停止从头编译

You can make custom functions and custom variable modifiers, so the template language is extremely extensible.
可以编纂'自界说函数'和自界说'变量',因而这类模板言语完整可以扩大

Configurable template delimiter tag syntax, so you can use {}, {{}}, <!--{}-->, etc.
可以自行设置模板定界符,所以你可使用{}, {{}}, <!--{}-->, 等等


The if/elseif/else/endif constructs are passed to the PHP parser, so the {if ...} expression syntax can be as simple or as complex as you like.
诸如 if/elseif/else/endif 语句可以被传递到php语法解析器,所以 {if ...} 表达式是复杂的或是复合的,随你喜好啦

Unlimited nesting of sections, ifs, etc. allowed.
假如答应的话,section之间可以无穷嵌套

It is possible to embed PHP code right in your template files, although this may not be needed (nor recommended) since the engine is so customizable.
引擎是可以定制的.可之内嵌php代码到你的模板文件中,固然这能够其实不需求(不保举)

Built-in caching support
内建缓存撑持

Arbitrary template sources
自力模板文件

Custom cache handling functions
可自界说缓存处置函数

Plugin architecture
插件系统布局

因为函数实在是太多了,慢慢的你就会知道,知道有这个函数就可以。

冷月葬花魂 发表于 2015-2-4 13:10:26

遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。

兰色精灵 发表于 2015-2-6 23:49:48

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

再现理想 发表于 2015-2-19 03:34:50

有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。

金色的骷髅 发表于 2015-3-6 12:28:18

遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。

变相怪杰 发表于 2015-3-11 01:58:36

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

愤怒的大鸟 发表于 2015-3-13 02:07:16

首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。

小魔女 发表于 2015-3-17 05:10:29

真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,

不帅 发表于 2015-3-19 13:57:05

在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、

深爱那片海 发表于 2015-3-28 02:09:28

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

小妖女 发表于 2015-3-31 01:56:37

找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。

admin 发表于 2015-4-6 02:08:40

实践是检验自己会不会的真理。

因胸联盟 发表于 2015-4-6 17:03:08

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

精灵巫婆 发表于 2015-4-12 10:49:22

找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。

分手快乐 发表于 2015-4-16 05:47:55

php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。

海妖 发表于 2015-4-16 13:00:38

个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。

仓酷云 发表于 2015-4-24 16:17:18

作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。

灵魂腐蚀 发表于 2015-4-28 09:41:45

因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax

若天明 发表于 2015-4-30 17:54:51

写的比较杂,因为我也是个新手,不当至于大家多多指正。

只想知道 发表于 2015-5-10 09:49:00

开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
页: [1]
查看完整版本: PHP编程:让你的Smarty更伶俐