说明: Flight官网 & 原文
<span><span>require</span><span><span>'</span>flight/Flight.php<span>'</span></span>;</span><span></span><span><span>Flight</span><span>::</span>route(<span><span>'</span>/<span>'</span></span>, <span>function</span>(){</span><span><span>echo</span><span><span>'</span>hello world!<span>'</span></span>;</span><span>});</span><span></span><span><span>Flight</span><span>::</span>start();</span><codeLiberation Mono',Menlo,Courier,monospace; padding:0px; margin:0px; word-break:normal; border:0px; display:inline; line-height:inherit; word-wrap:normal; background:transparent">RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</code><codeLiberation Mono',Menlo,Courier,monospace; padding:0px; margin:0px; word-break:normal; border:0px; display:inline; line-height:inherit; word-wrap:normal; background:transparent">server {
location / {
try_files $uri $uri/ /index.php;
}
}
</code><span><span>require</span><span><span>'</span>flight/Flight.php<span>'</span></span>;</span>
<span><span>Flight</span><span>::</span>route(<span><span>'</span>/<span>'</span></span>, <span>function</span>(){</span><span><span>echo</span><span><span>'</span>hello world!<span>'</span></span>;</span><span>});</span><span><span>Flight</span><span>::</span>start();</span>
<span><span>Flight</span><span>::</span>route(<span><span>'</span>/<span>'</span></span>, <span>function</span>(){</span><span><span>echo</span><span><span>'</span>hello world!<span>'</span></span>;</span><span>});</span><span><span>function</span><span>hello</span>(){</span><span><span>echo</span><span><span>'</span>hello world!<span>'</span></span>;</span><span>}</span><span></span><span><span>Flight</span><span>::</span>route(<span><span>'</span>/<span>'</span></span>, <span><span>'</span>hello<span>'</span></span>);</span><span><span>class</span><span>Greeting</span> {</span><span><span>public</span><span>static</span><span>function</span><span>hello</span>() {</span><span><span>echo</span><span><span>'</span>hello world!<span>'</span></span>;</span><span> }</span><span>}</span><span></span><span><span>Flight</span><span>::</span>route(<span><span>'</span>/<span>'</span></span>, <span>array</span>(<span><span>'</span>Greeting<span>'</span></span>,<span><span>'</span>hello<span>'</span></span>));</span><span><span>Flight</span><span>::</span>route(<span><span>'</span>GET /<span>'</span></span>, <span>function</span>(){</span><span><span>echo</span><span><span>'</span>I received a GET request.<span>'</span></span>;</span><span>});</span><span></span><span><span>Flight</span><span>::</span>route(<span><span>'</span>POST /<span>'</span></span>, <span>function</span>(){</span><span><span>echo</span><span><span>'</span>I received a POST request.<span>'</span></span>;</span><span>});</span><span><span>Flight</span><span>::</span>route(<span><span>'</span>GET|POST /<span>'</span></span>, <span>function</span>(){</span><span><span>echo</span><span><span>'</span>I received either a GET or a POST request.<span>'</span></span>;</span><span>});</span><span><span>Flight</span><span>::</span>route(<span><span>'</span>/user/[0-9]+<span>'</span></span>, <span>function</span>(){</span><span><span>// 这个将匹配到 /user/1234</span></span><span>});</span><span><span>Flight</span><span>::</span>route(<span><span>'</span>/@name/@id<span>'</span></span>, <span>function</span>(<span>$name</span>, <span>$id</span>){</span><span><span>echo</span><span><span>"</span>hello, <span>$name</span> (<span>$id</span>)!<span>"</span></span>;</span><span>});</span><span><span>Flight</span><span>::</span>route(<span><span>'</span>/@name/@id:[0-9]{3}<span>'</span></span>, <span>function</span>(<span>$name</span>, <span>$id</span>){</span><span><span>// 这个将匹配到 /bob/123</span></span><span><span>// 但是不会匹配到 /bob/12345</span></span><span>});</span><span><span>Flight</span><span>::</span>route(<span><span>'</span>/blog(/@year(/@month(/@day)))<span>'</span></span>, <span>function</span>(<span>$year</span>, <span>$month</span>, <span>$day</span>){</span><span><span>// 它将匹配如下URLS:</span></span><span><span>// /blog/2012/12/10</span></span><span><span>// /blog/2012/12</span></span><span><span>// /blog/2012</span></span><span><span>// /blog</span></span><span>});</span><span><span>Flight</span><span>::</span>route(<span><span>'</span>/blog/*<span>'</span></span>, <span>function</span>(){</span><span><span>// 这个将匹配到 /blog/2000/02/01</span></span><span>});</span><span><span>Flight</span><span>::</span>route(<span><span>'</span>*<span>'</span></span>, <span>function</span>(){</span><span><span>// Do something</span></span><span>});</span><span><span>Flight</span><span>::</span>route(<span><span>'</span>/user/@name<span>'</span></span>, <span>function</span>(<span>$name</span>){</span><span><span>// 检查某些条件</span></span><span><span>if</span> (<span>$name</span><span>!</span><span>=</span><span><span>"</span>Bob<span>"</span></span>) {</span><span><span>// 延续到下一个路由</span></span><span><span>return</span><span>true</span>;</span><span> }</span><span>});</span><span></span><span><span>Flight</span><span>::</span>route(<span><span>'</span>/user/*<span>'</span></span>, <span>function</span>(){</span><span><span>// 这里会被调用到</span></span><span>});</span><span><span>Flight</span><span>::</span>route(<span><span>'</span>/<span>'</span></span>, <span>function</span>(<span>$route</span>){</span><span><span>// 匹配到的HTTP方法的数组</span></span><span><span>$route</span><span>-></span><span>methods</span>;</span><span></span><span><span>// 命名参数数组</span></span><span><span>$route</span><span>-></span><span>params</span>;</span><span></span><span><span>// 匹配的正则表达式</span></span><span><span>$route</span><span>-></span><span>regex</span>;</span><span></span><span><span>// Contains the contents of any '*' used in the URL pattern</span></span><span><span>$route</span><span>-></span><span>splat</span>;</span><span>}, <span>true</span>);</span><span><span>// 映射你自己的方法</span></span><span><span>Flight</span><span>::</span>map(<span><span>'</span>hello<span>'</span></span>, <span>function</span>(<span>$name</span>){</span><span><span>echo</span><span><span>"</span>hello <span>$name</span>!<span>"</span></span>;</span><span>});</span><span></span><span><span>// 调用你的自定义方法</span></span><span><span>Flight</span><span>::</span>hello(<span><span>'</span>Bob<span>'</span></span>);</span><span><span>// 注册你定义的类</span></span><span><span>Flight</span><span>::</span>register(<span><span>'</span>user<span>'</span></span>, <span><span>'</span>User<span>'</span></span>);</span><span></span><span><span>// 得到你定义的类的一个实例</span></span><span><span>$user</span><span>=</span><span>Flight</span><span>::</span>user();</span>
<span><span>// 注册一个带有构造函数参数的类</span></span><span><span>Flight</span><span>::</span>register(<span><span>'</span>db<span>'</span></span>, <span><span>'</span>PDO<span>'</span></span>, <span>array</span>(<span><span>'</span>mysql:host=localhost;dbname=test<span>'</span></span>,<span><span>'</span>user<span>'</span></span>,<span><span>'</span>pass<span>'</span></span>));</span><span></span><span><span>// 得到你定义的类的一个实例</span></span><span><span>// 这里将创建一个带有你定义的参数的对象</span></span><span><span>//</span></span><span><span>// new PDO('mysql:host=localhost;dbname=test','user','pass');</span></span><span><span>//</span></span><span><span>$db</span><span>=</span><span>Flight</span><span>::</span>db();</span><span><span>// 这个回调函数将会传递到这个被构造的对象中</span></span><span><span>Flight</span><span>::</span>register(<span><span>'</span>db<span>'</span></span>, <span><span>'</span>PDO<span>'</span></span>, <span>array</span>(<span><span>'</span>mysql:host=localhost;dbname=test<span>'</span></span>,<span><span>'</span>user<span>'</span></span>,<span><span>'</span>pass<span>'</span></span>), <span>function</span>(<span>$db</span>){</span><span><span>$db</span><span>-></span>setAttribute(<span>PDO</span><span>::</span><span>ATTR_ERRMODE</span>, <span>PDO</span><span>::</span><span>ERRMODE_EXCEPTION</span>);</span><span>});</span><span><span>// 类的共享实例</span></span><span><span>$shared</span><span>=</span><span>Flight</span><span>::</span>db();</span><span></span><span><span>// 类的新实例</span></span><span><span>$new</span><span>=</span><span>Flight</span><span>::</span>db(<span>false</span>);</span>
<span><span>Flight</span><span>::</span>map(<span><span>'</span>notFound<span>'</span></span>, <span>function</span>(){</span><span><span>// 显示自定义的404页面</span></span><span><span>include</span><span><span>'</span>errors/404.html<span>'</span></span>;</span><span>});</span><span><span>// 注册成你自定义的类</span></span><span><span>Flight</span><span>::</span>register(<span><span>'</span>router<span>'</span></span>, <span><span>'</span>MyRouter<span>'</span></span>);</span><span></span><span><span>// When Flight loads the Router instance, it will load your class</span></span><span><span>// 当Flight加载Router实例时,将会加载到你自定义的类</span></span><span><span>$myrouter</span><span>=</span><span>Flight</span><span>::</span>router();</span>
<span><span>function</span>(<span>&</span><span>$params</span>, <span>&</span><span>$output</span>) {</span><span><span>// Filter code</span></span><span>}</span><span><span>Flight</span><span>::</span>before(<span><span>'</span>start<span>'</span></span>, <span>function</span>(<span>&</span><span>$params</span>, <span>&</span><span>$output</span>){</span><span><span>// Do something</span></span><span>});</span><span><span>Flight</span><span>::</span>after(<span><span>'</span>start<span>'</span></span>, <span>function</span>(<span>&</span><span>$params</span>, <span>&</span><span>$output</span>){</span><span><span>// Do something</span></span><span>});</span><span><span>// 映射一个自定义的方法</span></span><span><span>Flight</span><span>::</span>map(<span><span>'</span>hello<span>'</span></span>, <span>function</span>(<span>$name</span>){</span><span><span>return</span><span><span>"</span>Hello, <span>$name</span>!<span>"</span></span>;</span><span>});</span><span></span><span><span>// 添加一个前置的过滤器</span></span><span><span>Flight</span><span>::</span>before(<span><span>'</span>hello<span>'</span></span>, <span>function</span>(<span>&</span><span>$params</span>, <span>&</span><span>$output</span>){</span><span><span>// 操作这里的params</span></span><span><span>$params</span>[<span>0</span>] <span>=</span><span><span>'</span>Fred<span>'</span></span>;</span><span>});</span><span></span><span><span>// 添加一个后置的过滤器</span></span><span><span>Flight</span><span>::</span>after(<span><span>'</span>hello<span>'</span></span>, <span>function</span>(<span>&</span><span>$params</span>, <span>&</span><span>$output</span>){</span><span><span>// 操作这里的output</span></span><span><span>$output</span><span>.=</span><span><span>"</span> Have a nice day!<span>"</span></span>;</span><span>});</span><span></span><span><span>// 调用这个自定义方法</span></span><span><span>echo</span><span>Flight</span><span>::</span>hello(<span><span>'</span>Bob<span>'</span></span>);</span><codeLiberation Mono',Menlo,Courier,monospace; padding:0px; margin:0px; word-break:normal; border:0px; display:inline; line-height:inherit; word-wrap:normal; background:transparent">Hello Fred! Have a nice day! </code>
<span><span>Flight</span><span>::</span>before(<span><span>'</span>start<span>'</span></span>, <span>function</span>(<span>&</span><span>$params</span>, <span>&</span><span>$output</span>){</span><span><span>echo</span><span><span>'</span>one<span>'</span></span>;</span><span>});</span><span></span><span><span>Flight</span><span>::</span>before(<span><span>'</span>start<span>'</span></span>, <span>function</span>(<span>&</span><span>$params</span>, <span>&</span><span>$output</span>){</span><span><span>echo</span><span><span>'</span>two<span>'</span></span>;</span><span></span><span><span>// 如下将会终止这个过滤器链</span></span><span><span>return</span><span>false</span>;</span><span>});</span><span></span><span><span>// 这里将不会得到调用</span></span><span><span>Flight</span><span>::</span>before(<span><span>'</span>start<span>'</span></span>, <span>function</span>(<span>&</span><span>$params</span>, <span>&</span><span>$output</span>){</span><span><span>echo</span><span><span>'</span>three<span>'</span></span>;</span><span>});</span><span><span>// 保存你定义的变量</span></span><span><span>Flight</span><span>::</span>set(<span><span>'</span>id<span>'</span></span>, <span>123</span>);</span><span></span><span><span>// 在应用的其他地方使用</span></span><span><span>$id</span><span>=</span><span>Flight</span><span>::</span>get(<span><span>'</span>id<span>'</span></span>);</span>
<span><span>if</span> (<span>Flight</span><span>::</span>has(<span><span>'</span>id<span>'</span></span>)) {</span><span><span>// Do something</span></span><span>}</span><span><span>// 清除这个id变量</span></span><span><span>Flight</span><span>::</span>clear(<span><span>'</span>id<span>'</span></span>);</span><span></span><span><span>// 清除所有的变量</span></span><span><span>Flight</span><span>::</span>clear();</span>
<span><span>Flight</span><span>::</span>set(<span><span>'</span>flight.log_errors<span>'</span></span>, <span>true</span>);</span>
<span><span>Flight</span><span>::</span>render(<span><span>'</span>hello.php<span>'</span></span>, <span>array</span>(<span><span>'</span>name<span>'</span></span><span>=></span><span><span>'</span>Bob<span>'</span></span>));</span>
<span><span>Hello</span>, <span><span>'</span><?php echo $name; ?><span>'</span></span><span>!</span></span>
<codeLiberation Mono',Menlo,Courier,monospace; padding:0px; margin:0px; word-break:normal; border:0px; display:inline; line-height:inherit; word-wrap:normal; background:transparent">Hello, Bob! </code>
<span><span>Flight</span><span>::</span>view()<span>-></span>set(<span><span>'</span>name<span>'</span></span>, <span><span>'</span>Bob<span>'</span></span>);</span>
<span><span>Flight</span><span>::</span>render(<span><span>'</span>hello<span>'</span></span>);</span>
<span><span>Flight</span><span>::</span>set(<span><span>'</span>flight.views.path<span>'</span></span>, <span><span>'</span>/path/to/views<span>'</span></span>);</span>
<span><span>Flight</span><span>::</span>render(<span><span>'</span>header<span>'</span></span>, <span>array</span>(<span><span>'</span>heading<span>'</span></span><span>=></span><span><span>'</span>Hello<span>'</span></span>), <span><span>'</span>header_content<span>'</span></span>);</span><span><span>Flight</span><span>::</span>render(<span><span>'</span>body<span>'</span></span>, <span>array</span>(<span><span>'</span>body<span>'</span></span><span>=></span><span><span>'</span>World<span>'</span></span>), <span><span>'</span>body_content<span>'</span></span>);</span>
<span><span>Flight</span><span>::</span>render(<span><span>'</span>layout<span>'</span></span>, <span>array</span>(<span><span>'</span>title<span>'</span></span><span>=></span><span><span>'</span>Home Page<span>'</span></span>));</span>
<span><span><</span><span>h1</span><span>><</span>?<span>php</span><span>echo</span><span>$heading</span>; </span><span><span>?</span>></span></<span>h1</span>>
<span><span><</span><span>div</span><span>><</span>?<span>php</span><span>echo</span><span>$body</span>; </span><span><span>?</span>></span></<span>div</span>>
<span><span><</span><span>html</span><span>></span></span><span><span><</span><span>head</span><span>></span></span><span><span><</span><span>title</span><span>><</span>?<span>php</span><span>echo</span><span>$title</span>; </span><span><span>?</span>></span></<span>title</span>> </<span>head</span>> <<span>body</span>> <span><?php</span><span><span>echo</span><span>$header_content</span>; </span><span><span>?</span>></span><span><?php</span><span><span>echo</span><span>$body_content</span>; </span><span><span>?</span>></span> </<span>body</span>> </<span>html</span>>
<<span>html</span>> <<span>head</span>> <<span>title</span>>Home Page</<span>title</span>> </<span>head</span>> <<span>body</span>> <<span>h1</span>>Hello</<span>h1</span>> <<span>div</span>>World</<span>div</span>> </<span>body</span>> </<span>html</span>>
<span><span>// 加载Smarty类库</span></span><span><span>require</span><span><span>'</span>./Smarty/libs/Smarty.class.php<span>'</span></span>;</span><span></span><span><span>// 将Smarty注册成视图类</span></span><span><span>// 同时传递一个回调函数,在加载过程中配置Smarty</span></span><span><span>Flight</span><span>::</span>register(<span><span>'</span>view<span>'</span></span>, <span><span>'</span>Smarty<span>'</span></span>, <span>array</span>(), <span>function</span>(<span>$smarty</span>){</span><span><span>$smarty</span><span>-></span><span>template_dir</span><span>=</span><span><span>'</span>./templates/<span>'</span></span>;</span><span><span>$smarty</span><span>-></span><span>compile_dir</span><span>=</span><span><span>'</span>./templates_c/<span>'</span></span>;</span><span><span>$smarty</span><span>-></span><span>config_dir</span><span>=</span><span><span>'</span>./config/<span>'</span></span>;</span><span><span>$smarty</span><span>-></span><span>cache_dir</span><span>=</span><span><span>'</span>./cache/<span>'</span></span>;</span><span>});</span><span></span><span><span>// 模板中数据的赋值</span></span><span><span>Flight</span><span>::</span>view()<span>-></span>assign(<span><span>'</span>name<span>'</span></span>, <span><span>'</span>Bob<span>'</span></span>);</span><span></span><span><span>// 显示这个模板</span></span><span><span>Flight</span><span>::</span>view()<span>-></span>display(<span><span>'</span>hello.tpl<span>'</span></span>);</span><span><span>Flight</span><span>::</span>map(<span><span>'</span>render<span>'</span></span>, <span>function</span>(<span>$template</span>, <span>$data</span>){</span><span><span>Flight</span><span>::</span>view()<span>-></span>assign(<span>$data</span>);</span><span><span>Flight</span><span>::</span>view()<span>-></span>display(<span>$template</span>);</span><span>});</span><span><span>Flight</span><span>::</span>map(<span><span>'</span>error<span>'</span></span>, <span>function</span>(<span>Exception</span><span>$ex</span>){</span><span><span>// 错误处理</span></span><span><span>echo</span><span>$ex</span><span>-></span>getTraceAsString();</span><span>});</span><span><span>Flight</span><span>::</span>set(<span><span>'</span>flight.log_errors<span>'</span></span>, <span>true</span>);</span>
<span><span>Flight</span><span>::</span>map(<span><span>'</span>notFound<span>'</span></span>, <span>function</span>(){</span><span><span>// 处理not found</span></span><span>});</span><span><span>Flight</span><span>::</span>redirect(<span><span>'</span>/new/location<span>'</span></span>);</span>
<span><span>Flight</span><span>::</span>redirect(<span><span>'</span>/new/location<span>'</span></span>, <span>401</span>);</span>
<span><span>$request</span><span>=</span><span>Flight</span><span>::</span>request();</span>
<codeLiberation Mono',Menlo,Courier,monospace; padding:0px; margin:0px; word-break:normal; border:0px; display:inline; line-height:inherit; word-wrap:normal; background:transparent">url - The URL being requested base - The parent subdirectory of the URL method - The request method (GET, POST, PUT, DELETE) referrer - The referrer URL ip - IP address of the client ajax - Whether the request is an AJAX request scheme - The server protocol (http, https) user_agent - Browser information type - The content type length - The content length query - Query string parameters data - Post data or JSON data cookies - Cookie data files - Uploaded files secure - Whether the connection is secure accept - HTTP accept parameters proxy_ip - Proxy IP address of the client </code>
<span><span>$id</span><span>=</span><span>Flight</span><span>::</span>request()<span>-></span><span>query</span>[<span><span>'</span>id<span>'</span></span>];</span>
<span><span>$id</span><span>=</span><span>Flight</span><span>::</span>request()<span>-></span><span>query</span><span>-></span><span>id</span>;</span>
<span><span>$body</span><span>=</span><span>Flight</span><span>::</span>request()<span>-></span>getBody();</span>
<span><span>$id</span><span>=</span><span>Flight</span><span>::</span>request()<span>-></span><span>data</span><span>-></span><span>id</span>;</span>
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号