当前位置:  编程技术>php
本页文章导读:
    ▪开始yaf之旅 - 李少宏      目录结构+ public //网站根目录 - index.php //入口文件 - .htaccess //重写规则 + conf |- application.ini //配置文件 application/ + controllers - Index.php //默认控制器 + views |+ index //控制器 .........
    ▪PHP基础 - hww836967373      1 向浏览器输出数据:print()、echo()、printf()、sprintf()、print()和echo()语句都是把传入它的数据输出到浏览器  pintf()输出静态文本和一个或多个变量中存储的动态信息组成的混合语句sprintf(.........
    ▪最好最实用的PHP二次开发教程 - huidaoli      ◆二次开发  1、什么是二次开发? 二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核。  2、为.........

[1]开始yaf之旅 - 李少宏
    来源:    发布时间: 2013-11-07

目录结构

+ public //网站根目录
- index.php //入口文件
- .htaccess //重写规则
+ conf
|- application.ini //配置文件
application/
+ controllers
- Index.php //默认控制器
+ views
|+ index //控制器
- index.phtml //默认视图
+ modules //其他模块
- library //组件目录
- models //model目录
- plugins //插件目录
入口文件

入口文件是所有请求的入口, 一般都借助于rewrite规则, 把所有的请求都重定向到这个入口文件.

一个经典的入口文件public/index.php

<?php
define("APP_PATH", realpath(dirname(__FILE__) . '/../')); /* 指向public的上一级 */
$app = new Yaf_Application(APP_PATH . "/conf/application.ini");
$app->run();
重写规则

除非我们使用基于query string的路由协议(Yaf_Route_Simple, Yaf_Route_Supervar), 否则我们就需要使用WebServer提供的Rewrite规则, 把所有这个应用的请求, 都定向到上面提到的入口文件.

修改.htaccess文件

Nginx的Rewrite (nginx.conf)

server {
listen 80;
server_name yaf.demo.com;
root document_root;
index index.php index.html index.htm;

if (!-e $request_filename) {
rewrite ^/(.*) /index.php/$1 last;
}
}
配置文件

在Yaf中, 配置文件支持继承, 支持分节. 并对PHP的常量进行支持. 你不用担心配置文件太大造成解析性能问题, 因为Yaf会在第一个运行的时候载入配置文件, 把格式化后的内容保持在内存中. 直到配置文件有了修改, 才会再次载入.

一个简单的配置文件application/conf/application.ini

[common]
application.directory = APP_PATH "/application"
application.dispatcher.catchException = 0
application.dispatcher.throwException = 0
application.view.ext = 'phtml'
[product : common]
;enable the error controller
application.dispatcher.catchException=1
控制器

在Yaf中, 默认的模块/控制器/动作, 都是以Index命名的, 当然,这是可通过配置文件修改的.

对于默认模块, 控制器的目录是在application目录下的controllers目录下, Action的命名规则是"名字+Action"

默认控制器application/controllers/Index.php

 
<?php
class IndexController extends Yaf_Controller_Abstract {
public function indexAction() {//默认Action
$this->getView()->assign("content", "Hello World");
}
}
?>
视图文件

Yaf支持简单的视图引擎, 并且支持用户自定义自己的视图引擎, 比如Smarty.

对于默认模块, 视图文件的路径是在application目录下的views目录中以小写的action名的目录中.

一个默认Action的视图application/views/index/index.phtml

 
<html>
<head>
<title>Hello yaf</title>
</head>
<body>
<?php echo $content;?>
</body>
</html>

然后在浏览器输入nginx.conf设置的servername,yaf.demo.com。是不是出来了??

 

表 4.2. Yaf可选配置项

名称值类型默认值说明application.extStringphpPHP脚本的扩展名application.bootstrapStringBootstrapplication.phpBootstrap路径(绝对路径)application.libraryStringapplication.directory + "/library"本地(自身)类库的绝对目录地址application.baseUriStringNULL在路由中, 需要忽略的路径前缀, 一般不需要设置, Yaf会自动判断.application.dispatcher.defaultModuleStringindex默认的模块application.dispatcher.throwExceptionBoolTrue在出错的时候, 是否抛出异常application.dispatcher.catchExceptionBoolFalse是否使用默认的异常捕获Controller, 如果开启, 在有未捕获的异常的时候, 控制权会交给ErrorController的errorAction方法, 可以通过$request->getException()获得此异常对象application.dispatcher.defaultControllerStringindex默认的控制器application.dispatcher.defaultActionStringindex默认的动作application.view.extStringphtml视图模板扩展名application.modulesStringIndex声明存在的模块名, 请注意, 如果你要定义这个值, 一定要定义Index Moduleapplication.system.*String*通过这个属性, 可以修改yaf的runtime configure, 比如application.system.lowcase_path, 但是请注意只有PHP_INI_ALL的配置项才可以在这里被修改, 此选项从2.2.0开始引入

 




本文链接:http://www.cnblogs.com/descusr/p/3210599.html,转载请注明。


    
[2]PHP基础 - hww836967373
    来源:    发布时间: 2013-11-07

1 向浏览器输出数据:print()、echo()、printf()、sprintf()、

  • print()和echo()语句都是把传入它的数据输出到浏览器  
  • pintf()输出静态文本和一个或多个变量中存储的动态信息组成的混合语句
  • sprintf()相比于print(),其函数的功能一样,但它将输出赋给一个字符串而不是直接呈现给浏览器

2 与类型有关的函数:

  • 获取类型gettype()   string gettype(mixed var)
  • 转换类型settype()   boolean settype(mixed var,string type)

3  变量声明:变量总是以美元符$开头,然后是变量名。

4  heredoc语法为输出大量文本提供了一种便利的方式。采用两个相同的标示符,两个相同标识符之间就是文本

 

<?php
$website = https://www.romatermini.it,
echo <<<EXCERPT     //标识符
......//文本
excerpt;            //标识符
?>

 

5   foreach语句:遍历元素(例如数组)其有两种形式

 

  • foreach (array_expr as $value){
           statement
    }
  •  
    foreach (array_expr as $key=>$value){
    statement
    }

两种语法形式的例子为:

<?php
$links = array("www.apress.com","www.php.net",www.apache.org);
echo "<b>Online Resources</b>:<br />";
foreach ($links as $link) {
echo "<a href=/index.html"http://$link\">$link</a><br />";
}
?>
<?php
$links = array("The Apache Web Server" =>"www.apress.com",
               "Apress" => "www.php.net",
               "The PHP Scripting Language" => "www.apache.org);
echo "<b>Online Resources</b>:<br />";
foreach ($links as $title=> $link) {
echo "<a href=/index.html"http://$link\">$title</a><br />";
}
?>

6  文件包含语句:让代码具有重用性和模块性,提高效率、拒绝加班,珍惜程序员生命。

include()、 include_once()、require()      ***require()和include()的区别是无论require()的位置如何,指定文件一定包含在require()的脚本中。

 

 

7  从函数返回多个值:假设要创建一个从数据库中获取用户数据的函数(姓名、邮箱、住址、电话号码),然后用户的全部个人信息返回给调用者。实现返回多值,语言构造list()可以满足你的愿望。

<?php
function retrieveUserProfile(){
$user[] = "Jason Gilmore";
$user[] = jason@example.com;
$user[] = "English";
return $user;
}
list ($name, $email, $language) = retrieveUserProfile();
echo "Name: $name, email: $email, language: $language";
?>

8  数组

创建数组:PHP与其他计算机语言在创建数组时有许多不同的地方,不需要指定其大小、使用数字时不需要先声明。

    

相关联的函数有

    • explode(separator,string,limit)    //把字符串分割为数组,前两个参数是必须要有的。
    • range(fist, secend,step)                  //创建并返回一个包含指定范围的元素的数组,前两个参数必须要有。
    • is_array(mixed variable)                  //判断变量类型是否为数组类型。

本文链接:http://www.cnblogs.com/hww836967373/p/3213195.html,转载请注明。


    
[3]最好最实用的PHP二次开发教程 - huidaoli
    来源:    发布时间: 2013-11-07

◆二次开发

  1、什么是二次开发?

二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核。

  2、为什么要二次开发?

随着信息化技术的不断发展,IT行业涌现出了一系列优秀的开源作品,其作者或是个人,或是项目小组,或是软件公司。选择和应用这些优秀的开源软件,并在此基础上进行符合业务需求的二次开发,将给企业节省信息化成本(时间成本及开发成本)的同时,更能带来技术上的保障。这就是我们常听的:站在巨人的肩膀上,你将看的更远。所以国内很多公司需要二次开发的人才。

  3、怎么做二次开发?

第一,你要有这个开源产品的所用语言的语言基础,能看懂代码是最基本的。

第二,你要对这个开源产品的功能和使用要有比较熟悉,因为你熟悉了,你才知道一个需求下来,你要改什么,什么是系统自带的,大概要怎么改。

第三,你要熟悉这个开源产品的数据结构,代码结构,系统的框架结构,核心是哪里,附属功能是在哪里。简单点说,就是数据库,代码逻辑,文件目录的熟悉。

第四,根据你的需求,然后利用开源产品的内核,进行系统的扩展和修改,以达到你的需求

  4、介绍PHP的开源产品的二次开发的基本要求:

第一, 基本要求:HTML(必须要非常熟悉),PHP(能看懂代码,能写一些小系统,如:留言板,小型CMS),Mysql(至少会一种数据库),Javascript(能看懂,能改现成的一些代码),Div+Css(能进行界面的调整,明白CSS是怎么使用的)

第二, 熟悉开源产品的使用,比如 Dedecms,你要知道怎么登录,怎么新建栏目,怎么添加文章,模板标签的使用方法,模型的概念和使用方法等等一些功能

第三, 要熟悉这个开源产品的数据库结构,还要理解里面核心文件的内容,比如:数据库类怎么使用,常用的安全过滤是怎么做的,模板引擎又是怎么使用的等等一些核心内容。还要知道这个开源产品的目录结构,就是说,你要知道哪是放模板的,哪里是做控制的,哪里是放样式的,等等

第四, 熟悉你的需求,对需求进行解读,然后确定如何对这个开源产品进行修改和扩展 经过二次开发后,你能获取到的是什么呢? 你能完成你的需求,你能积累经验,这里的经验有你自己的,也有别人的。所谓别人的,就是在你做这个二次开发的时候,你能吸收到这个系统的精华,然后融入到你自己的思想里,你还能总结项目架构的经验。有句话说的好,就是:聪明的人会把别人的失败的经验当作自己的经验,而傻的人就是自己无数次体验失败后才作为自己的经验。

  二次开发不仅仅是开发,而更重要的是吸取精华,总结经验,理顺思路,少走弯路,提升自己。

站在巨人的肩膀上,你将看的更远!!! 

◆DedeCMS二次开发

  1、DedeCMS的二次开发

  为了让更多人了解二次开发,并更方便的了解DedeCMS的二次开发,下面将会简单的介绍关于DedeCMS二次开发的一些基础和大纲

  2、DedeCMS二次开发必备基础:

· 非常熟悉HTML 

· 熟悉DIV+CSS的布局 

· 扎实的PHP基础,熟悉结构化编程,了解OOP,并能看懂和使用 

· 熟悉MYSQL,掌握SQL语言 

  3、DedeCMS二次开发学习过程

· 理解CMS是什么 

· 熟悉DedeCMS的功能(如:栏目的分类,文档管理,模型的使用,系统的设置等常用的功能) 

· 掌握DedeCMS的模板标签使用及原理 

· DedeCMS目录结构分析 熟悉每个文件夹里面主要装什么文件,这样在二次开发的时候知道在哪个文件夹下的什么文件修改

目录结构摘要:

./a 生成文件存放路径 .

/data 缓存文件及数据中心

/admin 管理后台数据

/backupdata 备份数据

/cache 缓存文件

/enums 级别联动数据,JS,枚举类型的缓存文件

/js 常用的JS

/mark 水印相关文件

/module 模块安装文件

/rss Rss相关

/sessions Session 存放路径

/textdata 文本数据

/tplcache 模板缓存

/uploadtmp 上传文件缓存位置

/ziptmp zip包解压缓存位置 …… 

· DedeCMS文件结构分析 熟悉每个文件的基本功能,方便做修改,知道每个文件的大概作用之后,可以方便的对文件进行修改

文件结构摘要:

common.inc.php 数据库配置文件

config.cache.bak.php 后台系统配置备份

config.cache.inc.php 后台系统配置文件缓存

downmix.data.php 采集混淆缓存文件

mysql_error_track.inc MYSQL错误志

safequestions.php 安全问题

sitemap.html 站点地图

sys_pay.cache.php 支付网关配置

template.rand.php 随机模板设置 ……

· DedeCMS数据库结构分析,至少要熟悉每个表的作用 熟悉每个表的作用,了解几个核心表的设计及字段的含义,方便拿到新的需求之后,能快速的判断是否加字段,还是新建表来处理。同时也能理解DedeCMS的数据库设计思想,把有用的设计思路加到自己的系统中。 

· DedeCMS的流程控制,及一些核心文件的解析 熟悉一些登陆,注册,文档管理,权限控制,分类管理,模型设置等一些常用流程控制。对几个核心文件进行解剖,了解其编程技巧及安全机制 

· DedeCMS插件的开发(****式插件和内嵌式插件) 熟悉两种插件的编写,插件的导入导出,插件搭配模型的使用

◆Ecshop二次开发

  1、EcShop二次开发学习

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3