F3-fatfree小型php框架课程(五)
F3-fatfree小型php框架教程(五)
看到这里我想再写一个helloworld的程序,不过这次的程序需要调用htm来实现,首先我们知道fatfree主要是以php为引擎的,我们定义一个template.htm文件:
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span>Hello, <?php echo $name; ?>!<span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span></code>
然后在主函数里面:
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span>=<span class="require" style="color:rgb(255,20,147)">require</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'lib/base.php'</span>);<span class="whitespace"></span><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">route</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'GET /'</span>,<span class="whitespace"> </span><span class="function" style="color:rgb(255,20,147)">function</span>(<span class="variable" style="color:rgb(58,135,173)">$f3</span>)<span class="whitespace"> </span>{<span class="whitespace"> </span><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'name'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'world'</span>);<span class="whitespace"> </span><span class="variable" style="color:rgb(58,135,173)">$view</span>=<span class="new" style="color:rgb(255,20,147)">new</span><span class="whitespace"> </span><span class="string" style="color:black">View</span>;<span class="whitespace"> </span><span class="echo" style="color:rgb(255,20,147)">echo</span><span class="whitespace"> </span><span class="variable" style="color:rgb(58,135,173)">$view</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">render</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'template.htm'</span>);<span class="whitespace"> </span><span class="comment" style="color:rgb(184,134,11)">// Previous two lines can be shortened to:</span><span class="whitespace"> </span><span class="comment" style="color:rgb(184,134,11)">// echo View::instance()->render('template.htm');</span><span class="whitespace"> </span>}<span class="whitespace"></span>);<span class="whitespace"></span><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">run</span>();</code>
这里面的view是内置对象,用于调用htm文件,然后这里给name初始化了然后调用template,输出helloworld,应该没什么问题。
这里也有另外一种fatfree本身的模板,格式是:
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span>Hello, {{ @name }}!<span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span></code>
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span>=<span class="require" style="color:rgb(255,20,147)">require</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'lib/base.php'</span>);<span class="whitespace"></span><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">route</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'GET /'</span>,<span class="whitespace"> </span><span class="function" style="color:rgb(255,20,147)">function</span>(<span class="variable" style="color:rgb(58,135,173)">$f3</span>)<span class="whitespace"> </span>{<span class="whitespace"> </span><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'name'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'world'</span>);<span class="whitespace"> </span><span class="variable" style="color:rgb(58,135,173)">$template</span>=<span class="new" style="color:rgb(255,20,147)">new</span><span class="whitespace"> </span><span class="string" style="color:black">Template</span>;<span class="whitespace"> </span><span class="echo" style="color:rgb(255,20,147)">echo</span><span class="whitespace"> </span><span class="variable" style="color:rgb(58,135,173)">$template</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">render</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'template.htm'</span>);<span class="whitespace"> </span><span class="comment" style="color:rgb(184,134,11)">// Above lines can be written as:</span><span class="whitespace"> </span><span class="comment" style="color:rgb(184,134,11)">// echo Template::instance()->render('template.htm');</span><span class="whitespace"> </span>}<span class="whitespace"></span>);<span class="whitespace"></span><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">run</span>();</code>
[email protected],而且框架会自动产生跟跟文件名一样的类,在这里是template,也就是文件的名字。
再举个例子,如果你定义了:
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'buddy'</span>,<span class="array" style="color:rgb(255,20,147)">array</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'Tom'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'Dick'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'Harry'</span>));</code>
然后再在template里面写下:
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span>{{ @buddy[0] }}, {{ @buddy[1] }}, and {{ @buddy[2] }}<span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span></code>
{{ @buddy }}
的话,那么因为传输进来的是一个数组,所以输出的是‘Array’这个字符串。
文件里面的调用还支持一系列的操作:
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word">{{ 2*(@page-1) }}{{ (int)765.29+1.2e3 }}<span class="xml_tag" style="color:rgb(30,144,255)"><option> <span class="xml_attr" style="color:rgb(138,43,226)">value</span>=<span class="xml_data" style="color:red">"F"</span> <span class="xml_tag" style="color:rgb(30,144,255)">{{ @active?'selected="selected"':'' }}</span><span class="xml_tag" style="color:rgb(30,144,255)">></span>Female<span class="xml_tag" style="color:rgb(30,144,255)"></span> </option></span><span class="xml_tag" style="color:rgb(30,144,255)">></span>{{ var_dump(@xyz) }}<span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span>That is {{ preg_match('/Yes/i',@response)?'correct':'wrong' }}!<span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span>{{ @obj->property }}</code>
还有fatfree里面给函数定义是这样的:
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'func'</span>,<span class="whitespace"> </span><span class="function" style="color:rgb(255,20,147)">function</span>(<span class="variable" style="color:rgb(58,135,173)">$a</span>,<span class="variable" style="color:rgb(58,135,173)">$b</span>)<span class="whitespace"> </span>{<span class="whitespace"> </span><span class="return" style="color:rgb(255,20,147)">return</span><span class="whitespace"> </span><span class="variable" style="color:rgb(58,135,173)">$a</span>.<span class="constant_encapsed_string" style="color:rgb(178,34,34)">', '</span>.<span class="variable" style="color:rgb(58,135,173)">$b</span>;<span class="whitespace"> </span>}<span class="whitespace"></span>);</code>
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word">{{ @func('hello','world') }}</code>
还有一招在文件里面调用另外一个文件:
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="xml_tag" style="color:rgb(30,144,255)"><include> <span class="xml_attr" style="color:rgb(138,43,226)">href</span>=<span class="xml_data" style="color:red">"header.htm"</span> <span class="xml_tag" style="color:rgb(30,144,255)">/</span><span class="xml_tag" style="color:rgb(30,144,255)">></span></include></span></code>
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="comment" style="color:rgb(184,134,11)">// switch content to your blog sub-template</span><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'content'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'blog.htm'</span>);<span class="whitespace"></span><span class="comment" style="color:rgb(184,134,11)">// in another route, switch content to the wiki sub-template</span><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'content'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'wiki.htm'</span>);</code>
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="xml_tag" style="color:rgb(30,144,255)"><include> <span class="xml_attr" style="color:rgb(138,43,226)">href</span>=<span class="xml_data" style="color:red">"{{ @content }}"</span> <span class="xml_tag" style="color:rgb(30,144,255)">/</span><span class="xml_tag" style="color:rgb(30,144,255)">></span></include></span></code>
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="xml_tag" style="color:rgb(30,144,255)"><include> <span class="xml_attr" style="color:rgb(138,43,226)">if</span>=<span class="xml_data" style="color:red">"{{ count(@items) >= 2 }}"</span> <span class="xml_attr" style="color:rgb(138,43,226)">href</span>=<span class="xml_data" style="color:red">"items.htm"</span> <span class="xml_tag" style="color:rgb(30,144,255)">/</span><span class="xml_tag" style="color:rgb(30,144,255)">></span></include></span></code>
注释:
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="xml_tag" style="color:rgb(30,144,255)"><exclude><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span>A chunk of HTML we don't want displayed at the moment<span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></exclude></span><span class="xml_tag" style="color:rgb(30,144,255)">></span></code>
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word">{* <span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span>A chunk of HTML we don't want displayed at the moment<span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> *}</code>
条件语句:
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="xml_tag" style="color:rgb(30,144,255)"><check> <span class="xml_attr" style="color:rgb(138,43,226)">if</span>=<span class="xml_data" style="color:red">"{{ @page=='Home' }}"</span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><false><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"><span><span class="xml_tag" style="color:rgb(30,144,255)">></span>Inserted if condition is false<span class="xml_tag" style="color:rgb(30,144,255)"></span></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></span></false></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></check></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"><check> <span class="xml_attr" style="color:rgb(138,43,226)">if</span>=<span class="xml_data" style="color:red">"{{ @gender=='M' }}"</span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><true><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><div> <span class="xml_tag" style="color:rgb(30,144,255)">></span>Appears when condition is true<span class="xml_tag" style="color:rgb(30,144,255)"></span> </div></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"></span></true></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><false><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><div> <span class="xml_tag" style="color:rgb(30,144,255)">></span>Appears when condition is false<span class="xml_tag" style="color:rgb(30,144,255)"></span> </div></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"></span></false></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></check></span><span class="xml_tag" style="color:rgb(30,144,255)">></span></code>
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="xml_tag" style="color:rgb(30,144,255)"><check> <span class="xml_attr" style="color:rgb(138,43,226)">if</span>=<span class="xml_data" style="color:red">"{{ @loggedin }}"</span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span>HTML chunk to be included if condition is true<span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></check></span><span class="xml_tag" style="color:rgb(30,144,255)">></span></code>
然后说一个数组输出的方法:
首先定义:
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'fruits'</span>,<span class="array" style="color:rgb(255,20,147)">array</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'apple'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'orange '</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">' banana'</span>));</code>
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="xml_tag" style="color:rgb(30,144,255)"><repeat> <span class="xml_attr" style="color:rgb(138,43,226)">group</span>=<span class="xml_data" style="color:red">"{{ @fruits }}"</span> <span class="xml_attr" style="color:rgb(138,43,226)">value</span>=<span class="xml_data" style="color:red">"{{ @ifruit }}"</span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span>{{ trim(@ifruit) }}<span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></repeat></span><span class="xml_tag" style="color:rgb(30,144,255)">></span></code>
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span>apple<span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span>orange<span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span>banana<span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span></code>
然后我们来个复杂的例子:
定义:
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'div'</span>,<span class="whitespace"> </span><span class="array" style="color:rgb(255,20,147)">array</span>(<span class="whitespace"> </span><span class="constant_encapsed_string" style="color:rgb(178,34,34)">'coffee'</span><span class="double_arrow">=></span><span class="array" style="color:rgb(255,20,147)">array</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'arabica'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'barako'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'liberica'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'kopiluwak'</span>),<span class="whitespace"> </span><span class="constant_encapsed_string" style="color:rgb(178,34,34)">'tea'</span><span class="double_arrow">=></span><span class="array" style="color:rgb(255,20,147)">array</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'darjeeling'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'pekoe'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'samovar'</span>)<span class="whitespace"> </span>)<span class="whitespace"></span>);</code>
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="xml_tag" style="color:rgb(30,144,255)"><repeat> <span class="xml_attr" style="color:rgb(138,43,226)">group</span>=<span class="xml_data" style="color:red">"{{ @div }}"</span> <span class="xml_attr" style="color:rgb(138,43,226)">key</span>=<span class="xml_data" style="color:red">"{{ @ikey }}"</span> <span class="xml_attr" style="color:rgb(138,43,226)">value</span>=<span class="xml_data" style="color:red">"{{ @idiv }}"</span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><div> <span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"><span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"><b><span class="xml_tag" style="color:rgb(30,144,255)">></span>{{ @ikey }}<span class="xml_tag" style="color:rgb(30,144,255)"></span></b></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><repeat> <span class="xml_attr" style="color:rgb(138,43,226)">group</span>=<span class="xml_data" style="color:red">"{{ @idiv }}"</span> <span class="xml_attr" style="color:rgb(138,43,226)">value</span>=<span class="xml_data" style="color:red">"{{ @ispan }}"</span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><span><span class="xml_tag" style="color:rgb(30,144,255)">></span>{{ @ispan }}<span class="xml_tag" style="color:rgb(30,144,255)"></span></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"></span></span></repeat></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"></span> </div></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></repeat></span><span class="xml_tag" style="color:rgb(30,144,255)">></span></code>
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="xml_tag" style="color:rgb(30,144,255)"><div> <span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"><span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"><b><span class="xml_tag" style="color:rgb(30,144,255)">></span>coffee<span class="xml_tag" style="color:rgb(30,144,255)"></span></b></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><span><span class="xml_tag" style="color:rgb(30,144,255)">></span>arabica<span class="xml_tag" style="color:rgb(30,144,255)"></span></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><span><span class="xml_tag" style="color:rgb(30,144,255)">></span>barako<span class="xml_tag" style="color:rgb(30,144,255)"></span></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><span><span class="xml_tag" style="color:rgb(30,144,255)">></span>liberica<span class="xml_tag" style="color:rgb(30,144,255)"></span></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><span><span class="xml_tag" style="color:rgb(30,144,255)">></span>kopiluwak<span class="xml_tag" style="color:rgb(30,144,255)"></span></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span></span></span></span></span></p></span> </div></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"><div> <span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"><span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"><b><span class="xml_tag" style="color:rgb(30,144,255)">></span>tea<span class="xml_tag" style="color:rgb(30,144,255)"></span></b></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><span><span class="xml_tag" style="color:rgb(30,144,255)">></span>darjeeling<span class="xml_tag" style="color:rgb(30,144,255)"></span></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><span><span class="xml_tag" style="color:rgb(30,144,255)">></span>pekoe<span class="xml_tag" style="color:rgb(30,144,255)"></span></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><span><span class="xml_tag" style="color:rgb(30,144,255)">></span>samovar<span class="xml_tag" style="color:rgb(30,144,255)"></span></span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"></span></span></span></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span> </div></span><span class="xml_tag" style="color:rgb(30,144,255)">></span></code>
当然也可以像之前那样判断类别:
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="xml_tag" style="color:rgb(30,144,255)"><repeat> <span class="xml_attr" style="color:rgb(138,43,226)">group</span>=<span class="xml_data" style="color:red">"{{ @fruits }}"</span> <span class="xml_attr" style="color:rgb(138,43,226)">value</span>=<span class="xml_data" style="color:red">"{{ @fruit }}"</span> <span class="xml_attr" style="color:rgb(138,43,226)">counter</span>=<span class="xml_data" style="color:red">"{{ @ctr }}"</span><span class="xml_tag" style="color:rgb(30,144,255)">></span> <span class="xml_tag" style="color:rgb(30,144,255)"><p> <span class="xml_attr" style="color:rgb(138,43,226)">class</span>=<span class="xml_data" style="color:red">"{{ @ctr%2?'odd':'even' }}"</span><span class="xml_tag" style="color:rgb(30,144,255)">></span>{{ trim(@fruit) }}<span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span><span class="xml_tag" style="color:rgb(30,144,255)"></span></repeat></span><span class="xml_tag" style="color:rgb(30,144,255)">></span></code>
字符编码:
UTF-8:
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'ENCODING'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'ISO-8859-1'</span>);</code>
email模板:
首先下面先说一下email的逻辑定义:
welcome.txt文件里面是这样的
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word">MIME-Version: 1.0Content-type: text/html; charset={{ @ENCODING }}From: {{ @from }}To: {{ @to }}Subject: {{ @subject }}<span class="xml_tag" style="color:rgb(30,144,255)"><p><span class="xml_tag" style="color:rgb(30,144,255)">></span>Welcome, and thanks for joining {{ @site }}!<span class="xml_tag" style="color:rgb(30,144,255)"></span></p></span><span class="xml_tag" style="color:rgb(30,144,255)">></span></code>
<code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'from'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">''</span>);<span class="whitespace"></span><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'to'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">''</span>);<span class="whitespace"></span><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'subject'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'Welcome'</span>);<span class="whitespace"></span><span class="string" style="color:black">ini_set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'sendmail_from'</span>,<span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">get</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'from'</span>));<span class="whitespace"></span><span class="string" style="color:black">mail</span>(<span class="whitespace"> </span><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">get</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'to'</span>),<span class="whitespace"> </span><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">get</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'subject'</span>),<span class="whitespace"> </span><span class="string" style="color:black">Template</span><span class="double_colon">::</span><span class="string" style="color:black">instance</span>()<span class="object_operator" style="color:black">-></span><span class="string" style="color:black">render</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'email.txt'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'text/html'</span>)<span class="whitespace"></span>);</code>
当然,上面这个代码只是给单一用户发送邮件的代码,但是我们经常要给一系列的用户发送邮件。所以就不能用这种简单的代码了。
我们可以用smtp的类来发送:教程
$mail=new SMTP('smtp.gmail.com',465,'SSL',[email protected]','secret');$mail->set('from','');$mail->set('to','"Slasher" ');$mail->set('subject','Welcome');$mail->send(Template::instance()->render('email.txt'));

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

许多用户在选择智能手表的时候都会选择的华为的品牌,其中华为GT3pro和GT4都是非常热门的选择,不少用户都很好奇华为GT3pro和GT4有什么区别,下面就就给大家介绍一下二者。华为GT3pro和GT4有什么区别一、外观GT4:46mm和41mm,材质是玻璃表镜+不锈钢机身+高分纤维后壳。GT3pro:46.6mm和42.9mm,材质是蓝宝石玻璃表镜+钛金属机身/陶瓷机身+陶瓷后壳二、健康GT4:采用最新的华为Truseen5.5+算法,结果会更加的精准。GT3pro:多了ECG心电图和血管及安

为什么截图工具在Windows11上不起作用了解问题的根本原因有助于找到正确的解决方案。以下是截图工具可能无法正常工作的主要原因:对焦助手已打开:这可以防止截图工具打开。应用程序损坏:如果截图工具在启动时崩溃,则可能已损坏。过时的图形驱动程序:不兼容的驱动程序可能会干扰截图工具。来自其他应用程序的干扰:其他正在运行的应用程序可能与截图工具冲突。证书已过期:升级过程中的错误可能会导致此issu简单的解决方案这些适合大多数用户,不需要任何特殊的技术知识。1.更新窗口和Microsoft应用商店应用程

第1部分:初始故障排除步骤检查苹果的系统状态:在深入研究复杂的解决方案之前,让我们从基础知识开始。问题可能不在于您的设备;苹果的服务器可能会关闭。访问Apple的系统状态页面,查看AppStore是否正常工作。如果有问题,您所能做的就是等待Apple修复它。检查您的互联网连接:确保您拥有稳定的互联网连接,因为“无法连接到AppStore”问题有时可归因于连接不良。尝试在Wi-Fi和移动数据之间切换或重置网络设置(“常规”>“重置”>“重置网络设置”>设置)。更新您的iOS版本:

Go语言是一种越来越受欢迎的编程语言,它的语法简洁,性能高效,易于开发。Go语言中提供了强大的模板引擎——"text/template",但是在使用时,有些人可能会遇到"undefined:template.Must"的错误,下面是解决该错误的方法。导入正确的包在使用"text/template"模板引擎时,需要导入"text/templat

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Golang和Template包:创建个性化的用户界面在现代的软件开发中,用户界面往往是用户与软件进行互动的最直接的途径。为了提供一个好用、美观的用户界面,开发者需要灵活的工具来创建和定制用户界面。而在Golang中,开发者可以使用Template包来实现这一目标。本文将介绍Golang和Template包的基本用法,并通过代码示例展示如何创建个性化的用户界

区别有:1、div是一个块级元素,span是一个行内元素;2、div会自动占据一行,span则不会自动换行;3、div用于包裹比较大的结构和布局,span用于包裹文本或者其他行内元素;4、div可以包含其他块级元素和行内元素,span可以包含其他行内元素。

通过Golang的Template包实现数据可视化随着大数据时代的到来,数据可视化成为了信息处理和分析的重要手段之一。数据可视化能够以简洁直观的方式展现数据,帮助人们更好地理解和分析数据。在Golang中,我们可以使用Template包来实现数据可视化功能。本文将介绍如何利用Golang的Template包实现数据可视化,并提供代码示例。Golang的Tem
