phalcon框架入口文件公共函数文件怎么设置

下次自动登录
现在的位置:
& 综合 & 正文
Phalcon 扩展安装,测试
Phalcon是基于C写的一个MVC框架
可以安装官网提供的步骤去下载php_phalcon.dll文件
下载的版本必须对应php的版本,版本查看phpinfo();里的 Architecture 来确定需要下载的版本
php_phalcon.dll扩展完成后,就可直接使用了!
可安装这个去查找,这是个部分中文的手册!
我在使用时遇到.htaccess不起作用,需要把apache里的:LoadModule rewrite_module modules/mod_rewrite.so开启,然后重启服务就可以了!
&&&&推荐文章:
【上篇】【下篇】1578人阅读
Phalcon(1)
接触Phalcon,自己整理的一些文档
1、controllers向views传值
$this-&view-&setVar(&val&, &123&);
2、Phalcon\Tag 一般都是在views层使用
1)linkTo:输出带有链接的 a 标签
echo Tag::linkTo(array('products/edit/10', 'Edit', 'class' =& 'edit-btn', 'target'=&'_blank')); //参数1、a标签的URL 参数2:链接的名称 参数3:a标签的calss 参数4:是否在当前页面打开,也可以在后面继续添加。类似'sytle'=&'text-align:' 在views层文件里面直接输出
输出的结果为:&a class=&edit-btn& href=&/public/products/edit/10& sytle=&text-align:& target=&_blank&&Edit&/a&
2)setDefault:input框的默认值,在controllers文件里面运行,自己测试的只能与textField搭配使用 有哪里不对的欢迎大牛们指点
Phalcon\Tag::setDefault(&name1&, &peter&);//controllers层
echo Phalcon\Tag::textField(&name1&);//views层内容
输出结果:&input id=&name1& type=&text& value=&peter& name=&name1&&
3)***Field:form表单里一些常用的文本框等 input[type=&text&]、password.....
echo Phalcon\Tag::textField(array(&name1&, &size& =& 30));//输出input文本框,array可以在里面添加文本框对应的属性,如果没有属性可以直接textField(&name1&);
echo Phalcon\Tag::passwordField(array(&pw1&, &size& =& 30));//输出密码框
echo Phalcon\Tag::radioField(array(&radio&, &size& =& 30));//输出单选框
echo Phalcon\Tag::checkField(array(&check&, &size& =& 30));//输入多选框
echo Phalcon\Tag::hiddenField(array(&id&, &class&=&&sub&));//输出隐藏文本框
4)其它一些常用的
echo Phalcon\Tag::submitButton(array(&Save&, &class&=&&sub&));//输出提交按钮
echo Phalcon\Tag::selectStatic(&status&, array(&A& =& &Active&, &I& =& &Inactive&));//输出下拉框 参数1、name名称和id 参数2、属性值 A为下拉框的value值
echo Phalcon\Tag::textArea(array(&comments&, &cols& =& 10, &rows& =& 4));//输出textarea类型的文本框
echo Phalcon\Tag::stylesheetLink(&css/style.css&);//输出加载的css文件 stylesheetLink(&/css?family=Rosario&, false);
echo Phalcon\Tag::javascriptInclude(&javascript/jquery.js&)//输出加载的js文件 javascriptInclude(&/ajax/libs/jquery/1.7.1/jquery.min.js&, false);
echo Phalcon\Tag::form(&signup/register&);//输出form表单 默认是post提交,修改form(array(&posts/save&, &method& =& &get&)); 输出结果为&form action=&/public/posts/save& method=&post&&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:32910次
排名:千里之外
原创:49篇
转载:15篇
(2)(1)(3)(2)(1)(3)(1)(1)(1)(1)(2)(1)(2)(4)(2)(3)(2)(3)(1)(3)(2)(1)(10)(4)(7)1516人阅读
phalcon(28)
使用Phalcon框架开发者可以创建微框架应用。 这样开发者只需要书写极少的代码即可创建一个PHP应用。 微应用适用于书写小的应用, API或原型等
$app = new Phalcon\Mvc\Micro();
$app-&get('/say/welcome/{name}', function ($name) {
echo &&h1&Welcome $name!&/h1&&;
$app-&handle();
创建微应用(Creating a Micro Application)
Phalcon中 使用&&来实现微应用。
$app = new Phalcon\Mvc\Micro();
定义路由(Defining routes)
实例化后, 开发者需要添加一些路由规则。 Phalcon内部使用&&来管理路由。
路由必须以 / 开头。 定义路由时通常会书写http方法约束, 这样路由规则只适用于那些和规则及htttp方法相匹配的路由。 下面的方法展示了如何定义了HTTP get方法路由:
$app-&get('/say/hello/{name}', function ($name) {
echo &&h1&Hello! $name&/h1&&;
get 方法指定了要匹配的请求方法。 路由规则 /say/hello/{name} 中含有一个参数 {$name}, 此参数会直接传递给路由的处理器(此处为匿名函数)。 路由规则匹配时处理器即会执行。 处理器是PHP中任何可以被调用的项。 下面的示例中展示了如何定义不同种类的处理器:
function say_hello($name) {
echo &&h1&Hello! $name&/h1&&;
$app-&get('/say/hello/{name}', &say_hello&);
$app-&get('/say/hello/{name}', &SomeClass::someSayMethod&);
对象内的方法
$myController = new MyController();
$app-&get('/say/hello/{name}', array($myController, &someAction&));
// 匿名函数
$app-&get('/say/hello/{name}', function ($name) {
echo &&h1&Hello! $name&/h1&&;
&提供了一系列的用于定义http方法的限定方法:
// 匹配http get 方法:
$app-&get('/api/products', &get_products&);
//匹配HTTP post方法
$app-&post('/api/products/add', &add_product&);
// 匹配http put 方法
$app-&put('/api/products/update/{id}', &update_product&);
// 匹配http delete方法
$app-&delete('/api/products/remove/{id}', &delete_product&);
// 匹配http options方法
$app-&options('/api/products/info/{id}', &info_product&);
// 匹配http patch方法
$app-&patch('/api/products/update/{id}', &info_product&);
// 匹配http get 或 post方法
$app-&map('/repos/store/refs',&action_product&)-&via(array('GET', 'POST'));
路由参数(Routes with Parameters)
如上面的例子中展示的那样在路由中定义参数是非常容易的。 参数名需要放在花括号内。 参数格式亦可使用正则表达式以确保数据一致性。 例子如下:
// 此路由有两个参数每个参数有一格式
$app-&get('/posts/{year:[0-9]+}/{title:[a-zA-Z\-]+}', function ($year, $title) {
echo &&h1&Title: $title&/h1&&;
echo &&h2&Year: $year&/h2&&;
起始路由(Starting Route)
通常情况下, 应用一般由 / 路径开始访问, 当然此访问多为 GET方法。 这种情况代码如下:
// 超始路由
$app-&get('/', function () {
echo &&h1&Welcome!&/h1&&;
重写规则(Rewrite Rules)
下面的规则用来实现apache重写:
&IfModule mod_rewrite.c&
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
&/IfModule&
处理响应(Working with Responses)
开发者可以在路由处理器中设置任务种类的响应:直接输出, 使用模板引擎, 包含视图, 返回json数据等。
// 直接输出
$app-&get('/say/hello', function () {
echo &&h1&Hello! $name&/h1&&;
// 包含其它文件
$app-&get('/show/results', function () {
require 'views/results.php';
// 返回JSON
$app-&get('/get/some-json', function () {
echo json_encode(array(&some&, &important&, &data&));
另外开发者还可以使用&&, 这样开发者可以更好的处理结果:
$app-&get('/show/data', function () use ($app) {
// 设置返回头部内容格式
$app-&response-&setContentType('text/plain')-&sendHeaders();
// 输出文件内容
readfile(&data.txt&);
或回复response对象:
$app-&get('/show/data', function () {
// 创建Response类实例
$response = new Phalcon\Http\Response();
//Set the Content-Type header 设置返回内容的类型
$response-&setContentType('text/plain');
// 设置文件内容参数
$response-&setContent(file_get_contents(&data.txt&));
//返回response实例对象
return $response;
重定向(Making redirections)
重定向用来在当前的处理中跳转到其它的处理流:
// 此路由重定向到其它的路由
$app-&post('/old/welcome', function () use ($app) {
$app-&response-&redirect(&new/welcome&)-&sendHeaders();
$app-&post('/new/welcome', function () use ($app) {
echo 'This is the new Welcome';
根据路由生成 URL(Generating URLs for Routes)
Phalcon中使用&&来生成其它的基于路由的URL。
开发者可以为路由设置名字, 通过这种方式 “url” 服务可以产生相关的路由:
// 设置名为 &show-post&的路由
$app-&get('/blog/{year}/{title}', function ($year, $title) use ($app) {
//.. show the post here
})-&setName('show-post');
// 产生url
$app-&get('/', function() use ($app) {
echo '&a href=&', $app-&url-&get(array(
'for' =& 'show-post',
'title' =& 'php-is-a-great-framework',
'year' =& 2012
)), '&&Show the post&/a&';
与依赖注入的交互(Interacting with the Dependency Injector)
微应用中,&&是隐含生成的, 不过开发者可以明确的生成此类的实例以用来管理相关的服务:
use Phalcon\DI\FactoryDefault,
Phalcon\Mvc\Micro,
Phalcon\Config\Adapter\Ini as IniConfig;
$di = new FactoryDefault();
$di-&set('config', function() {
return new IniConfig(&config.ini&);
$app = new Micro();
$app-&setDI($di);
$app-&get('/', function () use ($app) {
//Read a setting from the config
echo $app-&config-&app_name;
$app-&post('/contact', function () use ($app) {
$app-&flash-&success('Yes!, the contact was made!');
服务容器中可以使用数据类的语法来设置或取服务实例:
use Phalcon\Mvc\Micro,
Phalcon\Db\Adapter\Pdo\Mysql as MysqlAdapter;
$app = new Micro();
// 设置数据库服务实例
$app['db'] = function() {
return new MysqlAdapter(array(
&host& =& &localhost&,
&username& =& &root&,
&password& =& &secret&,
&dbname& =& &test_db&
$app-&get('/blog', function () use ($app) {
$news = $app['db']-&query('SELECT * FROM news');
foreach ($news as $new) {
echo $new-&title;
处理Not-Found(Not-Found Handler)
当用户访问未定义的路由时, 微应用会试着执行 “Not-Found”处理器。 示例如下:
$app-&notFound(function () use ($app) {
$app-&response-&setStatusCode(404, &Not Found&)-&sendHeaders();
echo 'This is crazy, but this page was not found!';
微应用中的模型(Models in Micro Applications)
Phalcon中开发者可以直接使用&&, 开发者只需要一个类自动加载器来加载模型:
$loader = new \Phalcon\Loader();
$loader-&registerDirs(array(
__DIR__ . '/models/'
))-&register();
$app = new \Phalcon\Mvc\Micro();
$app-&get('/products/find', function(){
foreach (Products::find() as $product) {
echo $product-&name, '&br&';
$app-&handle();
微应用中的事件(Micro Application Events)
当有事件发生时&&会发送事件到&&。
这里使用 “micro” 来绑定处理事件。 支持如下事件:
beforeHandleRoute
处理方法调用之前执行, 此时应用程序还不知道是否存在匹配的路由
beforeExecuteRoute
存在匹配的路由及相关的处理器, 不过处理器还未被执行
afterExecuteRoute
处理器执行之后触发
beforeNotFound
NotFound触发之前执行
afterHandleRoute
处理器执行之后执行
下面的例子中, 我们阐述了如何使用事件来控制应用的安全性:
use Phalcon\Mvc\Micro,
Phalcon\Events\Manager as EventsManager;
// 创建事件监听器
$eventManager = new EventsManager();
// 监听应用的所有事件
$eventManager-&attach('micro', function($event, $app) {
if ($event-&getType() == 'beforeExecuteRoute') {
if ($app-&session-&get('auth') == false) {
$app-&flashSession-&error(&The user isn't authenticated&);
$app-&response-&redirect(&/&)-&sendHeaders();
// 返回false来中止操作
return false;
$app = new Micro();
// 绑定事件管理器到应用
$app-&setEventsManager($eventManager);
中间件事件(Middleware events)
此外, 应用事件亦可使用 ‘before’, ‘after’, ‘finish’等来绑定:
$app = new Phalcon\Mvc\Micro();
// 每个路由匹配之前执行
// 返回false来中止程序执行
$app-&before(function() use ($app) {
if ($app['session']-&get('auth') == false) {
return false;
return true;
$app-&map('/api/robots', function(){
return array(
'status' =& 'OK'
$app-&after(function() use ($app) {
// 路由处理器执行后执行
echo json_encode($app-&getReturnedValue());
$app-&finish(function() use ($app) {
// 路由处理器执行后执行
开发者可以对同一事件注册多个处理器:
$app-&finish(function() use ($app) {
// 第一个结束处理器
$app-&finish(function() use ($app) {
// 第二个结束处理器
把这些代码放在另外的文件中以达到重用的目的:
use Phalcon\Mvc\Micro\MiddlewareInterface;
* CacheMiddleware
* 使用缓存来提升性能
class CacheMiddleware implements MiddlewareInterface
public function call($application)
$cache = $application['cache'];
$router = $application['router'];
$key = preg_replace('/^[a-zA-Z0-9]/', '', $router-&getRewriteUri());
// 检查请示是否被处理了
if ($cache-&exists($key)) {
echo $cache-&get($key);
return false;
return true;
添加实例到应用:
$app-&before(new CacheMiddleware());
支持如下的中间件事件:
应用请求处理之前执行,常用来控制应用的访问权限
请求处理后执行,可以用来准备回复内容
发送回复内容后执行, 可以用来执行清理工作
使用控制器处理(Using Controllers as Handlers)
中型的应用可以使用 Micro\Mvc 来组织控制器中的处理器。 开发者也可以使用&&来对控制器中的处理器进行归组:
use Phalcon\Mvc\Micro\Collection as MicroCollection;
$posts = new MicroCollection();
// 设置主处理器,这里是控制器的实例
$posts-&setHandler(new PostsController());
// 对所有路由设置前缀
$posts-&setPrefix('/posts');
使用PostsController中的index action
$posts-&get('/', 'index');
// 使用PostController中的show action
$posts-&get('/show/{slug}', 'show');
$app-&mount($posts);
PostsController形如下:
class PostsController extends Phalcon\Mvc\Controller
public function index()
public function show($slug)
上面的例子中,我们直接对控制器进行了实例化, 使用集合时Phalcon会提供了迟加载的能力, 这样程序只有在匹配路由时才加载控制器:
$posts-&setHandler('PostsController', true);
$posts-&setHandler('Blog\Controllers\PostsController', true);
返回响应(Returning Responses)
处理器可能会返回原生的&&实例或实现了相关接口的组件。
当返回Response对象时, 应用会自动的把处理结果返回到客户端。
use Phalcon\Mvc\Micro,
Phalcon\Http\Response;
$app = new Micro();
// 返回Response实例
$app-&get('/welcome/index', function() {
$response = new Response();
$response-&setStatusCode(401, &Unauthorized&);
$response-&setContent(&Access is not authorized&);
return $response;
渲染视图(Rendering Views)
&可用来渲染视图, 示例如下:
$app = new Phalcon\Mvc\Micro();
$app['view'] = function() {
$view = new \Phalcon\Mvc\View();
$view-&setViewsDir('app/views/');
return $view;
// 返回渲染过的视图
$app-&get('/products/show', function() use ($app) {
// 渲染视图时传递参数
echo $app['view']-&render('products/show', array(
'id' =& 100,
'name' =& 'Artichoke'
相关资源(Related Sources)
&例子中讲解了如何使用微应用来创建Restfull服务:&也是一个简单的使用微应用的例子 [].
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:59334次
积分:1333
积分:1333
排名:千里之外
原创:58篇
译文:20篇
(1)(1)(2)(2)(1)(1)(1)(1)(1)(12)(15)(3)(1)(2)(3)(3)(5)(23)}

我要回帖

更多关于 thinkphp 公共函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信