php框架

PHP CI框架目录结构及运行机制

99封情书 提交于 2020-01-23 01:02:44
CI目录结构 CI主要组成部分为,application(应用文件夹)、system(系统文件夹)和index.php入口文件。 应用文件夹中主要是存放控制器、模型和视图等,系统文件夹中主要是存放组成CI的核心文件的,index.php入口文件是一个单一入口文件,所谓单一文件是指在一个网站(应用程序)中,所有的请求都是指向的这么一个文件,由它负责接收并处理URL中的控制器和方法。换句话说, 它调用一个 '控制器', 然后返回一个'视图'。 application : cache 第一次安装时为空,如果你打开缓存设置,这个目录存放缓存数据 config 存放配置文件,包含网站的基本配置信息 controllers 存放你项目的控制器目录 core 该目录可以扩展系统的核心文件 errors 包含出错信息页,你不必修改这个目录 hooks 首次安装时为空,用来存放你创建的钩子。钩子是 用来装载其它文件的控制方法 helpers 辅助函数,你可以对系统的辅助函数进行扩展 language 存放你本国语言的文件目录 libraries 类库,你可以创建自己的类库 logs 如果你设置打开了系统的错误日志,日志文件就默认保存在这个目录 models 存放你项目的模型目录 views 存放视图的模板目录 system : core 存放系统核心文件 database

理解 PHP 依赖注入

落爺英雄遲暮 提交于 2020-01-22 22:48:14
Laravel框架的依赖注入确实很强大,并且通过容器实现依赖注入可以有选择性的加载需要的服务,减少初始化框架的开销,下面是我在网上看到的一个帖子,写的很好拿来与大家分享,文章从开始按照传统的类设计数据库连接一直到通过容器加载服务这个高度解耦的设计展示了依赖注入的强大之处,值得我们借鉴和学习。 -----------------------------------------------------------分割线下面是大牛的原文----------------------------------------------------------   首先,我们假设,我们要开发一个组件命名为SomeComponent。这个组件中现在将要注入一个数据库连接。在这个例子中,数据库连接在component中被创建,这种方法是不切实际的,这样做的话,我们将不能改变数据库连接参数及数据库类型等一些参数。 1 <?php 2 3 class SomeComponent 4 { 5 6 /** 7 * The instantiation of the connection is hardcoded inside 8 * the component so is difficult to replace it externally 9 * or change its behavior 10 */ 11

开发者不可不知的PHP框架深度解析

青春壹個敷衍的年華 提交于 2020-01-22 19:16:10
开发者不可不知的PHP框架深度解析 PHP成为世界上最流行的脚本语言有许多原因:灵活性,易用性等等。但通常只用PHP或者其他语言编码就会显得单调、重复,这时候就需要一个PHP框架来代替程序员完成那些重复不变的部分。本文通过回答What, When, Why 以及 Which这些问题,将对PHP框架进行全面解析。 PHP框架是什么? PHP框架提供了一个用以构建web应用的基本框架,从而简化了用PHP编写web应用程序的流程。换言之,PHP框架有助于促进快速应用开发( RAD ),不但节省开发时间、有助于建立更稳定的应用,而且减少了重复编码的开发。通过确保适当的数据库交换和在表现层编码,框架还可以帮助初学者建立更稳定的应用服务。这可以让你花更多的时间去创建实际的Web应用程序,而不是花时间写重复的代码。 通常认为PHP框架的作用相当于模型-视图-控制器(Model View Controller)。MVC是种编程的架构模式,将业务逻辑从UI中分离出来,允许一个一个单独修改(也称为关注点分离)。在MVC中,Model指数据,View指表现层,Controller则指应用程序或业务逻辑。基本上, MVC打破了一个应用的开发进程,这样各组件就可以不受影响地各自工作。从本质上讲,这使得用PHP编码更快更简单。 为什么要使用PHP框架? 开发人员使用PHP框架的好处很多,其中之一是加快开发进程

LAMP环境搭建

橙三吉。 提交于 2020-01-22 01:29:37
一、LAMP简介 LAM(M)P: L: linux A: apache (httpd) M: mysql, mariadb M:memcached P: php, perl, python WEB资源类型: 静态资源:原始形式与响应内容一致,在客户端浏览器执行 动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端 Web相关语言: 客户端技术: html,javascript 服务器端技术:php, jsp,python,asp CGI:Common Gateway Interface 通用网关接口;可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准 二、PHP 1、php简介 php:通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此其也可以在大多数系统上作为一个独立的shell来使用 Zend Engine:PHP脚本语言的解释器,它最早是由以色列理工学院(Technion)的学生Andi Gutmans和Zeev Suraski所开发,Zend也正是此二人名字的合称。后来两人联合创立了Zend Technologies公司。Zend

开发者不可不知的PHP框架深度解析

假如想象 提交于 2020-01-19 08:03:05
开发者不可不知的PHP框架深度解析 PHP成为世界上最流行的脚本语言有许多原因:灵活性,易用性等等。但通常只用PHP或者其他语言编码就会显得单调、重复,这时候就需要一个PHP框架来代替程序员完成那些重复不变的部分。本文通过回答What, When, Why 以及 Which这些问题,将对PHP框架进行全面解析。 PHP框架是什么? PHP框架提供了一个用以构建web应用的基本框架,从而简化了用PHP编写web应用程序的流程。换言之,PHP框架有助于促进快速应用开发( RAD ),不但节省开发时间、有助于建立更稳定的应用,而且减少了重复编码的开发。通过确保适当的数据库交换和在表现层编码,框架还可以帮助初学者建立更稳定的应用服务。这可以让你花更多的时间去创建实际的Web应用程序,而不是花时间写重复的代码。 通常认为PHP框架的作用相当于模型-视图-控制器(Model View Controller)。MVC是种编程的架构模式,将业务逻辑从UI中分离出来,允许一个一个单独修改(也称为关注点分离)。在MVC中,Model指数据,View指表现层,Controller则指应用程序或业务逻辑。基本上, MVC打破了一个应用的开发进程,这样各组件就可以不受影响地各自工作。从本质上讲,这使得用PHP编码更快更简单。 为什么要使用PHP框架? 开发人员使用PHP框架的好处很多,其中之一是加快开发进程

YII WEB程序入口(1)

試著忘記壹切 提交于 2020-01-19 02:16:46
来至:http://luchuan.iteye.com/blog/893783 以下分析基于Yii v1.0.6 Yii_PATH表示framework的路径 通常使用Yii框架的index.php程序如下: Php代码 // change the following paths if necessary $yii = dirname( __FILE__ ). '/protected/lib/Yii/framework/yii.php' ; $config = dirname( __FILE__ ). '/protected/config/main.php' ; // remove the following line when in production mode defined( 'YII_DEBUG' ) or define( 'YII_DEBUG' ,true); require_once $yii ; $app = Yii::CreateWebApplication( $config ); $app ->run(); 我们来看一下Yii::CreateWebApplication的过程: Yii其实是YiiBase的helper,因此我们实际查看的是YiiBase::CreateWebApplication Yii_PATH/YiiBase.php: Php代码

Yii PHP 框架分析 (一)

為{幸葍}努か 提交于 2020-01-19 02:13:48
Yii PHP 框架分析 (一) 作者:wdy http://hi.baidu.com/delphiss/blog/item/f7da86d787adb72506088b4b.html 基于yii1.0.8的代码分析的。用了一个下午整理的,流水账,感兴趣的凑合着先看,国庆期间推出个整理修改版,然后再完成后两个部分(MVC和Yii的整体结构分析)。 1. 启动 网站的唯一入口程序 index.php : $yii=dirname(__FILE__).'/../framework/yii.php'; $config=dirname(__FILE__).'/protected/config/main.php'; // remove the following line when in production mode defined('YII_DEBUG') or define('YII_DEBUG',true); require_once($yii); Yii::createWebApplication($config)->run(); 上面的require_once($yii) 引用出了后面要用到的全局类Yii,Yii类是YiiBase类的完全继承: class Yii extends YiiBase { } 系统的全局访问都是通过Yii类(即YiiBase类)来实现的

PHP大文件分片上传的实现方法

旧街凉风 提交于 2020-01-19 00:58:50
一、前言 在网站开发中,经常会有上传文件的需求,有的文件size太大直接上传,经常会导致上传过程中耗时太久,大量占用带宽资源,因此有了分片上传。 分片上传主要是前端将一个较大的文件分成等分的几片,标识当前分片是第几片和总共几片,待所有的分片均上传成功的时候,在后台进行合成文件即可。 二、开发过程中遇到的问题 分片的时候每片该分多大size?太大会出现“413 request entity too large” 分片上传的时候并不是严格按照分片的序号顺序上传,如何判断所有的分片均上传成功? 合成文件的时候如何判断保证合成一个完整的文件而不出错?多个分片同时上传的时候,读写文件没有独占锁的时候会导致合成错误。 三、问题解决 当出现413的时候,修改了 nginx.conf 和php.ini (1)nginx中添加client_max_body_size和client_body_buffer_size (2)php.ini添加post_max_size 和 upload_max_filesize 重启nginx和php-fpm 代码逻辑梳理和分享 (1)先获取当前分片是第几片以及总共几片 (2)创建一个文件夹用来存储所有的分片以及合成的文件 (3)变量$done初始为true,用来判断是否所有的分片都上传完成,每个分片保存的时候使用分片序号作为文件名,然后判断所有的分片文件是否存在 (4

开发者不可不知的PHP框架深度解析

↘锁芯ラ 提交于 2020-01-18 09:25:32
开发者不可不知的PHP框架深度解析 PHP成为世界上最流行的脚本语言有许多原因:灵活性,易用性等等。但通常只用PHP或者其他语言编码就会显得单调、重复,这时候就需要一个PHP框架来代替程序员完成那些重复不变的部分。本文通过回答What, When, Why 以及 Which这些问题,将对PHP框架进行全面解析。 PHP框架是什么? PHP框架提供了一个用以构建web应用的基本框架,从而简化了用PHP编写web应用程序的流程。换言之,PHP框架有助于促进快速应用开发( RAD ),不但节省开发时间、有助于建立更稳定的应用,而且减少了重复编码的开发。通过确保适当的数据库交换和在表现层编码,框架还可以帮助初学者建立更稳定的应用服务。这可以让你花更多的时间去创建实际的Web应用程序,而不是花时间写重复的代码。 通常认为PHP框架的作用相当于模型-视图-控制器(Model View Controller)。MVC是种编程的架构模式,将业务逻辑从UI中分离出来,允许一个一个单独修改(也称为关注点分离)。在MVC中,Model指数据,View指表现层,Controller则指应用程序或业务逻辑。基本上, MVC打破了一个应用的开发进程,这样各组件就可以不受影响地各自工作。从本质上讲,这使得用PHP编码更快更简单。 为什么要使用PHP框架? 开发人员使用PHP框架的好处很多,其中之一是加快开发进程

程序写日志文件时该不该加锁

时间秒杀一切 提交于 2020-01-18 08:15:07
程序写日志文件时该不该加锁 小说搜索 https://shupu.org/ 日志(log) 为了让自己的思路更加清晰,下面我都会称日志为 log。因为日志这个词有两种含义,详情见百度百科释义或者维基百科释义。 日记的另一种说法。“志”字本身为“记录”的意思,日志就为每日的记录(通常是跟作者有关的)。 服务器日志( server log),记录服务器等电脑设备或软件的运作。 我们这里说的当然是服务器日志,也就是 server log 。 写入 log 一般写入 log 都会遵循以下步骤: int fd = open(path) write(fd, sign_append) fclose(fd) 解释一下上面的代码: 1. int fd = open(path) 会通过系统调用打开一个文件描述符,或者在其他语言中也可以称作资源描述符,资源类型,或句柄。 2. write(fd, append = 1) write 系统调用,并加上 append 标志,会执行 seek 和 write 两个系统调用,但是这种系统调用是原子性的。 原子性意味着 seek 和 write 会同时执行,不会有两个线程产生交叉,必须 a 线程执行完 seek 和 write ,b 线程才能继续执行(这里说线程,是因为线程才是 cpu 调度的基本单位)。 所以在 nginx 中,我们加上 append 标志