1、首先下载FLEAPHP和Smarty的源码,解压即是安装。

2、建立开发根目录:jccode

其结构如下:

docs/  flea/  logs/  smarty/

其中docs是web的根目录。

flea下是与flea相关的代码,其中flea/lib就是flea的安装目录。而flea/app下包含了我们的网站逻辑:controller,以及配置(config)、函数及类(helper)、数据库相关文件(table)。

[flykobe@localhost jccode]$ ls flea/
app  lib
[flykobe@localhost jccode]$ ls flea/app/
config  Controller  helper  table

[flykobe@localhost jccode]$ ls flea/lib/
3rd  _Cache  FLEA  FLEA.php  LICENSE.txt  RELEASE-PACK.TXT

为了把flea和smarty结合起来,关键是flea/app/config/config.php文件:

<?php
return array(
    'defaultController' => 'Default',

'defaultLanguage' => 'utf-8',
    'urlMode' => 'URL_PATHINFO',
    'autoLoad' => array(), // 自动载入的文件
    'dbDSN' => array(
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'login'     => 'root',
        'password'  => '123456',
        'database'  => 'GUESTBOOK',

'charset'   => 'utf-8',
    ),
    'logFileDir' => "../logs",
    'displayErrors' => true,
    'friendlyErrorsMessage' => true,
    'view' => 'FLEA_View_Smarty',
    'viewConfig' => array(
        'smartyDir'         => "/usr/lib/php/smarty/",
        'template_dir'      => '/var/www/html/jccode/smarty/templates/',
        'compile_dir'       => '/var/www/html/jccode/smarty/templates_c/',
        'left_delimiter'    => '{{',
        'right_delimiter'   => '}}',
    ),
);

其中的view和viewConfig是与smarty相关的部分。

为了能够在生成smarty对象的时候加载这些配置,需要让controller继承FLEA_Controller_Action:

class Controller_Default extends FLEA_Controller_Action
{
    var $smarty;        
    function __construct(){  
        $this->smarty =& $this->_getView();
        parent::__construct('Controller_Default');
    }
   
    function actionIndex() {
        $this->smarty->assign('name', 'Ned');
        $this->smarty->display('index.tpl');
    }                   
}

同时,flea中有一个bug,需要在FLEA/View/Smarty.php的构造函数中,修改如下:

function FLEA_View_Smarty() {
        // cy:  change smarty to construct
        // parent::Smarty();    
        parent::__construct();

。。。。

}

这样,jccode/docs/index.php的内容如下即可:

<?php
require("../flea/lib/FLEA.php");

define("APP_DIR", "../flea/app/");
FLEA::import(APP_DIR); 
 
FLEA::loadAppInf(APP_DIR . "config/config.php");
 
FLEA::runMVC();

另外,附上index.tpl的内容:

<html>
<head>
<title>Smarty</title>
</head>
<body>
Hello, {{$name}}!      
</body>                
</html>

另外,不知道是不是因为我下载过程中的编码问题,下面打印出的日期总是乱码:

<td align="right"><?php echo $_smarty_tpl->smarty->plugin_handler->executeModifier('date_format',array($_smarty_tpl->get
Variable('entry')->value['EntryDate'],"%e %b, %Y %H:%M:%S"),true);?>

查看smarty源码: plugins/modifier.date_format.php的smarty_modifier_date_format函数,最后是使用了strftime来格式化时间的,所以在我的index.php中添加了以下环境变量的设置就好了:

setlocale(LC_TIME, 'zh_CN.UTF8');

附上FLEAPHP的global变量,这样如果需要修改其中的某些值的话,直接在config文件中赋值就可以了:

array(6) {
["APP_INF"]=>
array(74) {
["defaultTimezone"]=>
NULL
["MVCPackageFilename"]=>
string(56) "/var/www/html/jccode/flea/lib/FLEA/Controller/Action.php"
["controllerAccessor"]=>
string(10) "controller"
["defaultController"]=>
string(7) "Default"
["actionAccessor"]=>
string(6) "action"
["defaultAction"]=>
string(5) "index"
["urlMode"]=>
string(12) "URL_PATHINFO"
["urlBootstrap"]=>
string(9) "index.php"
["urlAlwaysUseBootstrap"]=>
bool(true)
["urlAlwaysUseAccessor"]=>
bool(true)
["urlParameterPairStyle"]=>
string(1) "/"
["urlLowerChar"]=>
bool(false)
["urlCallback"]=>
NULL
["controllerClassPrefix"]=>
string(11) "Controller_"
["actionMethodPrefix"]=>
string(6) "action"
["actionMethodSuffix"]=>
string(0) ""
["dispatcher"]=>
string(22) "FLEA_Dispatcher_Simple"
["dispatcherFailedCallback"]=>
NULL
["internalCacheDir"]=>
NULL
["autoLoad"]=>
array(0) {
}
["sessionProvider"]=>
NULL
["autoSessionStart"]=>
bool(true)
["requestFilters"]=>
array(0) {
}
["dbDSN"]=>
array(6) {
["driver"]=>
string(5) "mysql"
["host"]=>
string(9) "localhost"
["login"]=>
string(4) "root"
["password"]=>
string(6) "123456"
["database"]=>
string(9) "GUESTBOOK"
["charset"]=>
string(5) "utf-8"
}
["dbTDGAutoInit"]=>
bool(true)
["dbTablePrefix"]=>
string(0) ""
["dbMetaLifetime"]=>
int(10)
["dbMetaCached"]=>
bool(true)
["view"]=>
string(16) "FLEA_View_Smarty"
["viewConfig"]=>
array(5) {
["smartyDir"]=>
string(20) "/usr/lib/php/smarty/"
["template_dir"]=>
string(38) "/var/www/html/jccode/smarty/templates/"
["compile_dir"]=>
string(40) "/var/www/html/jccode/smarty/templates_c/"
["left_delimiter"]=>
string(2) "{{"
["right_delimiter"]=>
string(2) "}}"
}
["ajaxClassName"]=>
string(9) "FLEA_Ajax"
["webControlsClassName"]=>
string(16) "FLEA_WebControls"
["webControlsExtendsDir"]=>
NULL
["responseCharset"]=>
string(5) "utf-8"
["databaseCharset"]=>
string(4) "utf8"
["autoResponseHeader"]=>
bool(true)
["multiLanguageSupport"]=>
bool(false)
["languageSupportProvider"]=>
string(13) "FLEA_Language"
["languageFilesDir"]=>
NULL
["defaultLanguage"]=>
string(5) "utf-8"
["autoLoadLanguage"]=>
NULL
["dispatcherAuthProvider"]=>
string(9) "FLEA_Rbac"
["defaultControllerACTFile"]=>
string(0) ""
["autoQueryDefaultACTFile"]=>
bool(false)
["controllerACTLoadWarning"]=>
bool(true)
["defaultControllerACT"]=>
NULL
["globalACT"]=>
NULL
["dispatcherAuthFailedCallback"]=>
NULL
["RBACSessionKey"]=>
string(13) "RBAC_USERDATA"
["logEnabled"]=>
bool(true)
["logProvider"]=>
string(8) "FLEA_Log"
["logFileDir"]=>
string(7) "../logs"
["logFilename"]=>
string(10) "access.log"
["logFileMaxSize"]=>
int(4096)
["logErrorLevel"]=>
string(45) "notice, debug, warning, error, exception, log"
["exceptionHandler"]=>
string(24) "__FLEA_EXCEPTION_HANDLER"
["displayErrors"]=>
bool(true)
["friendlyErrorsMessage"]=>
bool(true)
["displaySource"]=>
bool(true)
["helper.verifier"]=>
string(20) "FLEA_Helper_Verifier"
["helper.encryption"]=>
string(22) "FLEA_Helper_Encryption"
["helper.array"]=>
string(17) "FLEA_Helper_Array"
["helper.file"]=>
string(22) "FLEA_Helper_FileSystem"
["helper.image"]=>
string(17) "FLEA_Helper_Image"
["helper.pager"]=>
string(17) "FLEA_Helper_Pager"
["helper.uploader"]=>
string(24) "FLEA_Helper_FileUploader"
["helper.yaml"]=>
string(16) "FLEA_Helper_Yaml"
["helper.html"]=>
string(16) "FLEA_Helper_Html"
["sessionDbDSN"]=>
string(5) "dbDSN"
["sessionDbTableName"]=>
string(8) "sessions"
["sessionDbFieldId"]=>
string(7) "sess_id"
["sessionDbFieldData"]=>
string(9) "sess_data"
["sessionDbFieldActivity"]=>
string(8) "activity"
["sessionDbLifeTime"]=>
int(1440)
}
["OBJECTS"]=>
array(0) {
}
["DBO"]=>
array(0) {
}
["CLASS_PATH"]=>
array(2) {
[0]=>
string(29) "/var/www/html/jccode/flea/lib"
[1]=>
string(29) "/var/www/html/jccode/flea/app"
}
["FLEA_EXCEPTION_STACK"]=>
array(0) {
}
["FLEA_EXCEPTION_HANDLER"]=>
string(24) "__FLEA_EXCEPTION_HANDLER"
}

FlEAPHP + Smarty 进行php开发相关推荐

  1. php smarty模板配置,Smarty模板简单配置与使用方法示例

    这篇文章主要介绍了Smarty模板简单配置与使用方法,涉及Smarty模板的基本配置与缓存文件的相关使用技巧,需要的朋友可以参考下 本文实例讲述了Smarty模板简单配置与使用方法.分享给大家供大家参 ...

  2. php基于thinkphp、smarty\CodeIgniter构建的开源的淘宝客cms程序下载

    现在有很多开源的淘宝客软件cms,很多人不知道,所以,提供该服务,完全开源,比市面上的加密的好很多, 这些开源的淘宝客程序代码写的都非常简约,适合学习观摩,所以,收集了一些优秀的开源源码,整理成下载地 ...

  3. 30个优秀的开源CMS建站系统,采用PHP开发

    本文汇集了30个优秀的开源CMS建站系统,采用PHP开发.以下列表不分先后顺序. 1. AdaptCMS AdaptCMS Lite是一个开源的CMS系统,主要特点是易用,而且可以轻松和其他系统接驳, ...

  4. Smarty Uninstaller v4.10.0 智能卸载工具,可以用来卸载Matlab 2019b

    前言 Smarty Uninstaller 是一款与windows标准添加/卸载程序相似的工具,但其功能更为强大,windows程序往往不能完全卸载应用程序,会遗留损坏的注册表键值和一些无用文件,而这 ...

  5. php开发工程师学费,青岛PHPWEB开发工程师班

    一.PHP WEB开发数据库基础 PHP WEB开发数据库基础 SQL Server 数据库速成及MYSQL常用数据库操作实现 1.创建数据库和数据库文件创建数据库:创建文件组:创建架构:创建数据库快 ...

  6. smarty模板引擎的整理

    常用PHP模板引擎介绍 smarty,是所有PHP模板引擎的老祖宗,其它PHP模板引擎都是基于Smarty进行的二次开发. Template Lite TinyButStrong XTemplate ...

  7. php smarty模板遍历,smarty模板中for循环的扩展插件_PHP教程

    smarty是php开发中非常流行的一个模板,以前曾发过一篇文章php smarty中文截取插件开发示例是说明如何开发smarty插件的,这篇文章将分享一下如何为smarty模板做一个for循环的扩展 ...

  8. smarty 模板 for循环 php,smarty模板中for循环的扩展插件

    smarty是php开发中非常流行的一个模板,以前曾发过一篇文章php smarty中文截取插件开发示例是说明如何开发smarty插件的,这篇文章将分享一下如何为smarty模板做一个for循环的扩展 ...

  9. 30 个很棒的 PHP 开源 CMS 内容管理系统

    本文汇集了30个优秀的开源CMS建站系统,采用PHP开发.以下列表不分先后顺序. 1. AdaptCMS AdaptCMS Lite 是一个开源的CMS系统,主要特点是易用,而且可以轻松和其他系统接驳 ...

最新文章

  1. 外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站
  2. Ntop性能提升方案
  3. EOS Dawn 1.0
  4. 用ASP.NET Core 2.1 建立规范的 REST API -- 缓存和并发
  5. SQL Server 2005新特性之使用with关键字解决递归父子关系
  6. 【转】微信开发出现“该公众号暂时无法提供服务,请稍后再试”的坑
  7. MySQL-5.7.22-winx64安装
  8. 拉普拉斯算子属于卷积方法吗_二维图像中的Laplace算子和图论中的Laplacian矩阵...
  9. Linux下shell命令——处理目录的常用命令
  10. 人工智能专业就业有哪些岗位方向
  11. 前端Js处理百度地图和腾讯/高德地图经纬度不同的转换问题
  12. 【读书笔记】期权交易策略(2)—— 差价策略
  13. win7官方原版iso镜像
  14. 大疆遭遇“口袋无人机”革命?
  15. i78700k配什么显卡好_i78700配什么显卡
  16. RK3568 Android11 去除长按power键弹框的emergency按键
  17. 邮件营销群发6大技巧!怎么群发邮件效果好?
  18. RDkit二:利用RDkit筛选进行化学小分子2D药效团筛选
  19. PMP是不是要考第七版了?
  20. Linux下查找归档的内容

热门文章

  1. display:inline-bock的注意
  2. 转:Chrome浏览器查看网站登录 Cookie 信息的方法
  3. 最小二乘解(Least-squares Minimization )
  4. JS事件绑定的几种方式
  5. 关于MediaCode播放H265/hevc的总结
  6. 四川大学2014年数学分析考研试题
  7. 【学习笔记】Android基础知识回顾
  8. ArcGIS 地图切图系列之(一)切片原理解析
  9. 笔记二:php去除空格
  10. 让docsify-katex支持化学公式mhchem扩展