Yaf is a PHP framework with high performance, it is written in c and built as a PHP extension
- PHP 7.0+ (master branch))
- PHP 5.2+ (php5 branch)
Yaf is a PECL extension, which means you can simply install it by:
$pecl install yaf
Of course, you could also install it by hand:
$/path/to/phpize
$./configure --with-php-config=/path/to/php-config
$make && make install
Yaf manual could be found at: http://www.php.net/manual/en/book.yaf.php
A documented prototype script could be found at: https://github.com/elad-yosifon/php-yaf-doc
A classic application directory layout is:
- .htaccess // Rewrite rules
+ public
| - index.php // Application entry
| + css
| + js
| + img
+ conf
| - application.ini // Configure
- application/
- Bootstrap.php // Bootstrap
+ controllers
- Index.php // Default controller
+ views
|+ index
- index.phtml // View template for default controller
+ library // libraries
+ models // Models
+ plugins // Plugins
You should set DocumentRoot
to application/public
, by doing this, only the public folder can be accessed by user:
index.php
in the public directory is the only way in of the application, you should rewrite all request to it(you can use .htaccess
in Apache+php mod)
<?php
define("APPLICATION_PATH", dirname(dirname(__FILE__)));
$app = new Yaf_Application(APPLICATION_PATH . "/conf/application.ini");
$app->bootstrap() //call bootstrap methods defined in Bootstrap.php
->run();
#.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php
server {
listen ****;
server_name domain.com;
root document_root;
index index.php index.html index.htm;
if (!-e $request_filename) {
rewrite ^/(.*) /index.php/$1 last;
}
}
$HTTP["host"] =~ "(www.)?domain.com$" {
url.rewrite = (
"^/(.+)/?$" => "/index.php/$1",
)
}
application.ini
is the application config file
[product]
;CONSTANTS is supported
application.directory = APPLICATION_PATH "/application/"
Alternatively, you can use a PHP array instead:
<?php
$config = array(
"application" => array(
"directory" => application_path . "/application/",
),
);
$app = new yaf_application($config);
....
In Yaf, the default controller is named IndexController
:
<?php
class IndexController extends Yaf_Controller_Abstract {
// default action name
public function indexAction() {
$this->getView()->content = "Hello World";
}
}
?>
The view script for default controller and default action is application/views/index/index.phtml, Yaf provides a simple view engine called "Yaf_View_Simple", which support the view template written in PHP:
<html>
<head>
<title>Hello World</title>
</head>
<body>
<?php echo $content; ?>
</body>
</html>
You can generate the example above by using Yaf Code Generator: https://github.com/laruence/php-yaf/tree/master/tools/cg
./yaf_cg -d output_directory [-a application_name] [--namespace]
More infos could be found at Yaf Manual: http://www.php.net/manual/en/book.yaf.php