E企盈营销工具技术服务商 热线:4006-838-530

常见的PHP问题

E企盈直播平台营销卖货系统

* Apache, nginx区别1.Nginx比Apache更轻量级,使用更少的内存及资源2.Nginx有更好的抗并发能力,apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程3.Nginx除了可以提供web服务还可以提供反向代理服务和邮件服务4.Nginx 静态处理性能比 Apache 高 3倍以上5.apache适合处理动态请求,所以现在一般前端用nginx作为反向代理抗住压力,apache作为后端处理动态请求。6.Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端来使用 ,Apache 的组件比 Nginx 多7.Apache比Nginx运行更加稳定* Linux任务计划如何实现答:1.一次性任务计划: at    2.周期性任务计划: crontab  -e分 时 日 月 星期* 16 * * * www php /usr/ET/project/zktCrm/artisan approval* 关系型数据库设计三范式第一范式(确保每列保持原子性)第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说 明该数据库表满足了第一范式。第二范式(确保表中的每列都和主键相关,解决部分依赖)第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言),实际开发中一    般都会创建一个自增长的id字段作为主键,也就不会出现部分依赖的问题了第三范式(确保每列都和主键列直接相关,而不是间接相关,解决传递依赖)满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要 求一个数据库表中不包含已在其它表中已包含的非主关键字信息。* 什么是索引,索引的作用,什么时候需要使用索引,什么时候不需要使用索引答:索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,相 当于图书上的目录,可以加快查询速度,但会使修改、插入、删除操作变慢,同时还会 占用较大的磁盘空间可以通过explain语句对SQL语句进行分析,来决定哪些字段需要创建索引,一般情 况下,可得出以下结论:必须创建索引的情况:where子句、group子句中出现的字段,要创建索引order by子句的字段,要创建索引统计聚合函数中的字段,要创建索引。比如count(字段)  、max(字段) 不需要创建索引的情况:如果需要取到表中所有记录,则没必要创建索引对非唯一有大量重复值的字段,没必要创建索引,如性别经常进行修改、删除等操作的字段,没必要创建索引记录比较少的表,没必要创建索引三、MyISAM和InnoDB存储引擎的区别答: 数据表的类型由存储引擎来决定     MyIsam类型的数据表不支持事务、不支持外键,访问速度快、支持全文索引     InnoDB类型的数据表支持事务、支持外键、不支持数据压缩、写入速度慢、会占用更多内存和磁盘空间四、什么是事务处理答:事务处理有四个特性:ACID    A是原子性(Atomic):事务处理中所有的SQL操作都被看一个最小逻辑单元,这个逻辑单元中的操作要么全部执行成功,要么全部不执行 C是一致性(Consistency):只有合法的数据才能被写入数据库,否则事务将回滚到最初状态  I是隔离性(Isolation):事务允许多个用户对同一数据进行并发操作。但一个事务的处理结果如果影响到其他事务,则其它事务会回滚。D是可靠性(Durability): 事务处理完成后,对数据的影响是永久的,即使出现系统故障也不会丢失五、SQL注入漏洞产生的原因?如何防止?答:SQL注入的根本原因就是通过拼接SQL语句进行攻击。觉见的预防措施有:   1.预处理   2.字符串过滤,对提交的数据进行SQL关键字的过滤 update delete insert …..   3.通过正则过滤传入的数据进行特殊字符和关键字的过滤   4.在前端通过js进行过滤 六、什么是预处理、预处理有哪些好处答:预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高。工作原理:预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 “?” 标记 。数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出。执行:最后,将应用绑定的值传递给参数(”?” 标记),数据库执行语句。优点:预处理语句大大减少了执行时间,因为只需要了一次编译(虽然语句多次执行)。绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句。预处理语句可以有效防止SQL注入攻击七、MySQ数据库的备份和还原答::1.备份 :mysqldump -h服务器 –port 端口  -u用户名 -p密码 数据库名称 备份文件路径2.还原 :方法一、mysql -h服务器 –port 端口  -u用户名 -p密码 数据库名称 备份文件路径方法二、mysql -h服务器 –port 端口  -u用户名 -p密码use 数据库名称source 备份文件路径九、用一条SQL查询出下列记录中每个用户最近一次登录的记录建表并插入数据:CREATE TABLE `login_record` (   `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT ‘自增序号’ ,   `name` VARCHAR(16) NOT NULL DEFAULT ” COMMENT ‘用户名’ ,  `lastLogin` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘上次登录时间’ ,  PRIMARY KEY (`id`)) ENGINE = MyISAM;  insert into `login_record`(`id`,`name`,`lastLogin`) values(100,’test4′, ‘2007-11-25 16:31:26’);insert into `login_record`(`id`,`name`,`lastLogin`) values(13, ‘test1’, ‘2007-03-22 16:27:07’);insert into `login_record`(`id`,`name`,`lastLogin`) values(19, ‘test1’, ‘2007-10-25 14:13:46’);insert into `login_record`(`id`,`name`,`lastLogin`) values(42, ‘test1’, ‘2007-11-20 14:20:10’);insert into `login_record`(`id`,`name`,`lastLogin`) values(45, ‘test2’, ‘2007-04-25 14:17:39’);insert into `login_record`(`id`,`name`,`lastLogin`) values(49, ‘test2’, ‘2007-05-25 14:22:36′);得到原数据:这个有错误select * from (SELECT * FROM `login_record` order by lastLogin desc) as a group by a.name;用max聚合函数:SELECT `id`, `name`, MAX(lastLogin) AS `lastLogin` FROM `login_record` GROUP BY `name` ;id还是对不上 select * from (SELECT * FROM `login_record` order by lastLogin desc limit 99999) as a group by a.name;ok了  十、一个6亿条记录的表a,一个3亿条记录的表b,通过外键tid关联,你如何最快的查询出满足条件的第50000到第50200中的这200条数据记录。答:1、如果A表TID是自增长,并且是连续的,B表的ID为索引select * from a,b where a.tid = b.id and a.tid50000 limit 200;2、如果A表的TID不是连续的,B表ID也需要有索引。select * from b , (select tid from a limit 50000,200) a where b.id = a .tid;PHP基础知识方向:一、写出30个PHP函数  二、GET和POST方式的区别 访问速度、应用HTTP有哪几种请求方式,各有什么作用答:1、Options   返回服务器针对特定资源所支持的HTTP请求方法。也可以利 用向Web服务器发送’*’的请求来测试服务器的功能性Get    从指定的资源请求数据Post   向指定的资源提交要被处理的数据(提交表单、上传文件)4、Put    向指定资源位置上上传其最新内容5、Head  与 GET 相同,但只返回 HTTP 报头,不返回文档主体6、Delete   删除指定资源7、Trace   回显服务器收到的请求,用于测试和诊断8、Connect   HTTP/1.1协议中能够将连接改为管道方式的代理服务器 HTTP服务器至少能实现get、head、post方法,其他都是可选的 什么是HTTP状态码?常见的有哪些答:HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码,所有状态码的第一个数字代表了响应的五种状态之一1xx:表示普通消息。代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束100 Continue客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分2xx:表示成功。代表请求已成功被服务器接收、理解、并接受。200 OK请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。3xx:表示重定向301 (永久移动) 请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。4xx:表示客户端错误400 (错误请求) 服务器不理解请求的语法。401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。403 (禁止) 服务器拒绝请求。404 (未找到) 服务器找不到请求的网页。405 (方法禁用) 禁用请求中指定的方法。 5xx:服务器错误 五、什么是递归函数答:函数直接或间接调用函数本身,则该函数称为递归函数函数递归调用最大的好处在于可以精简程序中繁杂重复调用程序递归函数必须具备判断是否执行递归调用的条件终止函数的递归调用时,需把目前流程的主控权交回上一层函数执行在PHP中实现目录的遍历、复制、删除操作,无限级分类操作时都会用到递归函数    六、已知$a=100,$b=200,如何在不使用第三方变量的情况下交换$a和$b的值答://方法一:$a=array($a,$b);$b=$a[0];$a=$a[1];echo $a.’-‘.$b; // 方法二:$a = $a . ‘-‘ . $b;$a = explode(‘-‘,$a);$b = $a[0];$a = $a[1];echo $a.’-‘.$b; // 方法三:$a = $a.$b;$b = strlen($b);$b = substr($a,0,strlen($a)-$b);$a = substr($a,strlen($b));echo $a . ‘-‘ . $b; // 方法四:list($a,$b) = array($b,$a);echo $a.’-‘.$b; // 方法五:当两个变量都是数字的时候$a = $a + $b;$b = $a-$b;$a = $a-$b;echo $a . ‘-‘ . $b; 七、用PHP打印出上周的时间。格式如:”2019-01-15 14:42:09″答:echo date(“Y-m-d H:i:s”,strtotime(“-1 week”));    八、PHP中包含文件的方式有哪些,区别是什么?答:include、require、include_once和require_once都可以用来引入文件    include如果引入文件不存在,则报警告级别的错误,不会影响后面代码的继续执行    require如果引入文件不存在,则报致命级别的错误,后面程序不再继续执行    如果要引入的文件对于后码的程序是不可缺少的建议用require,反之用include    include_once和require_once在引入之前会自动判断该文件是否已被引入,如果已被引入则不再重复引入 九、简述session和cookie的工作原理,以及两者之间的关系答:由于http协议是无状态协议,无法对用户进行会话跟踪,session和cookie都是一种用于会话跟踪的技术    Cookie工作原理:    1.浏览器第一次访问服务器时,服务器给浏览器分配一个session_id,然后将session_id以响应给浏览器    2.浏览器将以session_id作为名称在客户机上创建cookie文件,用来保存会话信息    3.浏览器以后每次访问服务器都需要携带session_id    4.服务器根据session_id来判断是哪个用户来访问    Session工作原理     1.浏览器第一次访问服务器时,服务器给浏览器分配一个session_id,并以session_id作为名称在服务器上创建session文件,用来保存会话信息     2.再将session_id以cookie的方式响应给浏览器,浏览器保存session_id     3.浏览器以后每次访问服务器都需要携带session_id     4.服务器根据session_id来判断是哪个用户来访问      区别:session信息存在服务器端,安全性高,但是会占用服务器存储空间,主要应用于用户登录、购物车等功能           cookie信息存在客户端,安全性低,但是不会占用服务器存储空间,主要应于浏览历史记录等功能     关系 :Session默认是要借助cookie来在浏览器中保存Session_id,但是如果客户端的cookie被禁用,还可以通过url地址来传替session_id   十、PHP7有哪些特性答:1.PHP7使用新的 Zend Engine 3.0, 比PHP5.6性能提高两倍, 降低了 50% 的内存   消耗。 它可以服务于更多的并发用户,无需任何额外的硬件2.PHP7减少了内存分配次数,更多的使用栈内存,缓存数组hash值,使用大块连续   内存代替小块碎片内存3.PHP7新增了如下新特性:新增加了标量类型声明新增加了函数的返回类型声明新增了空接合操作符 ??新增加了结合比较运算符 =新增加匿名类 new class致命错误,现在改成抛出异常  Error类全面一致的64位支持4.PHP7弃用了如下功能:PHP4风格的构造函数静态调用非静态方法password_hash() – salt 选项capture_session_meta SSL上下文选项移除了一些老的不在支持的SAPI(服务器端应用编程端口)和扩展 十一、OOP和POP的区别答:面向过程(POP)以事件为中心,分析出解决问题的步骤,然后用代码将这些代码一步步实现   优点:性能比较高,执行速度比较快   缺点:不易维护,不易复用,不易扩展   应用:主要针对性能要求很高的情况,比如单片机、嵌入式开发、操作系统驱动    面向对象(OOP)以事物为中心,一切都看作对象,由实体引发事件   优点:易维护、易复用、易扩展   缺点:性能底,开销大   应用:软件开发的主流 十二、谈谈OOP的三大特征答:封装:简单来说就是对某一类事物的属性和行为的抽象,并且通过访问控制修饰符对访问进行控制。    继承:通过继承子类可以获取父类的属性和方法,并且可以进行重写和扩展    多态:同一个类的同一方法在作用不同的对象时可能表现出不同的形态,比如说人这个类实现化出的对象都会唱歌,但是有的人唱的好听,有的五音不全 十三、如何解决PHP单继承的问题答: 1) 通过接口来解决,一个类可以同时实现多个接口 implements通过trait来解决,一个类可以能过use来获取多个trait的属性和方法还可以使用__call()魔术方法来解决,但不推荐使用 将各个父类实例化,然后作为子类的属性。这些父类提供一些公有的方法。当子类拥有某方法时,__call()函数不会被调用。这相当于“覆盖”了父类的方法。当调用了不存在的方法时,通过__call()方法依次从父类中寻找可以调用的方法 十四、静态属性和静态方法分别什么特点答:静态属性:使用static关键字声明的属性为静态属性。静态属性保存在内存的静态代码段中静态属性是共享的,一般将所有对象都相同的属性设为静态静态属性可以通过类直接调用静态方法:使用static关键字声明的方法为静态方法。静态方法可以通过类直接调用静态方法中不能使用this关键字,也就是不可以使用非静态的属性和方法 十五、什么是抽象方法、什么是抽象类答: 抽象方法:没有方法体,也没有花括号的方法,即为抽象方法。抽象方法访问修饰符不能是private抽象类:使用关键字abstract 修饰的类为抽象类抽象类不能被实例化含有抽象方法的类肯定是抽象类,但是不是所有的抽象类都必须包含抽象方法子类继承一个抽象类,则子类必须实现父类中的所有抽象方法 十六、简要说明什么是面向对象接口答:  接口就是把不同类的共同行为进行了定义,然后在不同的类里实现不同的功能。接口中的成员属性只能是常量,不能够是变量接口中的所有方法必须是抽象方法,不能是非抽象的方法接口成员的权限只能为public接口可以继承其它接口接口不能被实例化,通过interface关键来声明接口可以被同时继承多个,所以可以用来解决PHP的单继承问题 十七、什么是模板引擎,你用过哪些模板引擎答:模板引擎是为了使用户界面与业务数据分离而产生的使用模板引擎的好处是可以使用前后端开发各司其职,互不干扰、更有利于开发中的分工、更有利于代码的重用常见的模板引擎有smarty,在一些框架中也会自己的模板引擎,比如Laravel框架的blade模板引擎 十八、谈谈你对MVC的理解答:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件架构模式,用来将数据、界面、业务逻辑进行分离。好处是有利用开发分工以及代码重用,现在主流的面向对象的框架基本都是基于MVC设计的。工作原理:控制器接收用户请求并选择合适的模型进行数据处理,模型模型进行数据处理并将处理结果返回控制器,控制器将数据分配给视图并选择视图进行展示  十九、什么是设计模式,简要描述单例模式、工厂模式的特点及实现方法答:设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设 计经验的总结,简而言之,设计模式就是前人总结的特定场景下的特定解决方案,Java中有23种设计模式,而在php中设计模式用到的较少,比较常见的有单例和工厂1.单例模式(Singleton Pattern)属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创 建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的 对象。class single{private static $instance;private function  __construct(){}private function  __clone(){}public static function getInstance(){        //如果本类中的$instance还没有数据         if( !self::$instance ){           self::$instance = new self;          }         return self::$instance; } 工厂模式(Factory Pattern)属于创建型模式,它提供了一种创建对象的最佳方 式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一 个共同的接口来指向新创建的对象  class Factory{       public static function getInstance($className){           if(file_exists($className.”.class.php”)){  $object=new $className();                return $object;}} 二十、什么是算法,简要描述冒泡排序,插入排序,选择排序,快速排序算法的特点答:算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表 着用系统的方法描述解决问题的策略机制,简而言之,算法就是解决问题的步骤,比 较 常见的排序算法有冒泡排序,插入排序,选择排序,快速排序等冒泡排序(Bubble Sort)是一种简单的排序算法。它依次比较两个相邻元素,如果    发现大小顺序错误立即进行位置交换,这样最大(或最小)的元素会经由交换慢慢   “浮”出,冒泡之名由此而得?phpfunction bubbleSort(&$a) {    $n = count($a);    for ($i = 0; $i $n; $i++) {        for ($j = 0; $j $n – 1 – $i; $j++) {            if ($a[$j] $a[$j+1]) {                $tmp = $a[$j];                $a[$j] = $a[$j+1];                $a[$j+1] = $tmp;            }        }    }}function myShuffle(&$a) {    $m = count($a);    while ($m 0) {        $i = floor(rand(0, –$m));        $t = $a[$m];        $a[$m] = $a[$i];        $a[$i] = $t;    }}function arr2String($a) {    $n = count($a);    $s = “[” . $a[0];    for ($i = 1; $i $n; $i++) {        $s .= “,”.$a[$i];    }    $s  .= “]”;    return $s;}// $a = [0,1,2,3,4,5,6,7,8,9];// myShuffle($a);// echo arr2String($a).PHP_EOL;$a = [1,6,4,7,8,3,2,9,5,0];bubbleSort($a);echo arr2String($a).PHP_EOL; 选择排序(Selection sort)是一种简单直观的排序算法。它在要排序的一组数中,选 出最小的一个数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个 位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。相对于冒泡排 序大大减少了替换的次数function selectionSort(&$a) {    for ($i = 0, $n = count($a); $i $n-1; $i++) {        // 先假设最小的值位置为$m        $m = $i;        // $j 当前都需要和哪些元素比较, $i后面的        for ($j = $i+1; $j $n; $j++) {            // $a[$m]是当前已知的最小值            if ($a[$j] $a[$m]) {                // 比较更小的,记录下最小值。并且在下次比较时,采用一直的最小值进行比较                $m = $j;            }        }        // 已确定当前的最小值位置保存到$m中。        // 发现最小值的位置与当前假设的位置$i不同则位置互换        if ($m != $j) {            $t = $a[$m];            $a[$m] = $a[$i];            $a[$i] = $t;        }    }}  插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法,它从第一个 元素开始,认为该元素已经被排序取出下一个元素,在已经排序的元素数组中从后 向前比较,如果该元素(已排序)大于新元素,将新元素插入到该元素之前,如果 该元素(已排序)小于新元素,将新元素插入到该元素之后,是对于冒泡排序大大 减少了比较次数function insertionSort(&$a) {    $left = 0;    $right = count($a) -1;    for ($i = $left + 1; $i = $right; $i++) {        $tmp = $a[$i];        for ($j = $i; $j $left && $tmp $a[$j-1]; $j–) {            $a[$j] = $a[$j-1];        }        $a[$j] = $tmp;    }}  快速排序是由东尼·霍尔所发展的一种排序算法。其原理在于找到当前数组中的任 意一个元素(一般选择第一个元素),作为标准,新建两个空数组,遍历整个数组 元素,如果遍历到的元素比当前的元素要小,那么就放到左边的数组,否则放到右 面的数组,然后再对新数组进行同样的操作。是四种排序算法中速度最快的不想写了 参照js版本的 https://blog.csdn.net/fareast_mzh/article/details/84076129  二十一、简单介绍一下swoole答:Swoole是运行在PHP下的一个extesion扩展,该扩展不是为了提升网站的性能,是为了提升网站的开发效率,利用Swoole扩展,开发一个复杂的Web功能,可以在很短的时间内完成Swoole使PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、智能家居等领域  二十二、谈谈你对Memcache的理解答: Memcache是一个高性能的分布式的内存缓存系统,作用是用来减轻数据库访问压力,提高数据的访问速度。  工作原理:当用户查询数据时首先判断内存中有没有缓存,如果缓存中存在则直接获取,如果缓存中没有则从数据库中读取,并写入缓存中。并且当数据库中的数据发生变化时(比如增加、更新、删除)需要更新缓存 二十三、谈谈你对Redis的理解 答:Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库存储系统,提供有多种语言的APIRedis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。Redis支持数据的持久化,可以将内存中的数据保持在磁盘中Redis支持数据的备份,即master-slave主从同步      二十四、JS和jQuery的关系答:JS是一种在浏览器端执行的脚本语言,主要用于用户交互行为和实现动态效果jQuery是一个开源的轻量级JavaScript库jQuery对JS进行了封装,一定程度解决了JS的浏览器兼容性问题,使用起来也更简单 二十五、什么是Ajax?Ajax的作用?实现Ajax的方式有哪些答:AJAX并不是一种语言,而是一种创建交互式网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。作用:①减轻服务器的负担,AJAX一般只从服务器获取需要的数据。②无刷新页面更新,减少用户等待时间。③更好的客户体验,可以将一些服务器的工作转移到客户端完成,节约网络资源,提高用户体验④促进显示与数据相分离 常用的使用方式有以下三种:$.ajax({url:’服务器url地址’,data:”,type:’post|get’,dataType:’xml|html|text|json|script’,success:function(res){},error:function(xhr){       },               timeout:2000,  async:true ,  cache:false}) $.get(‘服务器url地址’,”json格式或字符串格式”,function(res){        //处理返回的数据}), “xml|html|json|text|script”) $.post(‘服务器url地址’,”json格式或字符串格式”,function(res){        //处理返回的数据}), “xml|html|json|text|script”)这些常用的,一般面试不会问,问的是不常用的jsonp jQuery jsonp用法 CORS PHP项目开发方向: 你做过哪些项目,简单描述一下这些项目关键词: 项目功能概述、项目人数、项目工期、自己所负责模块 二、什么是框架?你使用过哪些框架?分别简要介绍答:框架是开发者定制的应用程序规范,提供了架构模式、设计模式以及丰富的功能库,使用框架开发效率更高、更加稳定、更加规范、有更好的扩展性和重用性。用过的框架有Laravel、TP3.2、TP5等ThinkPhp3.2简单、快速,基于MVC和面向对象,易用性较高,是一款简洁实用的轻量级框架,国内相关的文档十分丰富ThinkPHP5和ThinkPHP3.2相比作了相当大程度的重构,比如废除了所有的单字母方法、增加了think命令行操作、中间件、请求对象和响应对象等,如此大的变化使得TP5相对于TP3功能性和安全性都得到了提升,但也导致了两个版本间的不兼容Laravel具有富有表达性且简洁的语法,提供了成熟的路由、中间件、artisan控制台等功能,对composer的支持也是最好的,有着十分完善的安全机制,适合于大中型网站的开发 三、谈一下你对Laravel框架的理解答: Laravel是一款简洁、优雅的、单入口的、基于面向对象和MVC软件设计模式的PHP Web开发框架优点:具有富有表达性且简洁的语法,代码比较明白易懂,跟英语句子差不多安全机制非常齐全,防SQL注入攻击、防CSRF攻击等方面表现优秀提供路由功能,提高了网站的安全性,更有利于url地址的优化通过中间件可以对网站进行访问控制及日志记录,过滤非法请求提供了大量的第三方开源库(composer收录的超过5500个包),可以快速方便 的实现常见功能借助于artisan命令行可以大大提高开发效率网上文档非常丰富,社区也是非常活跃,现在全球范围内占有率最高,基本上所有 的问题都可以找到答案缺点:源代码复杂,不太容易上手,对新手稍有难度提供强大的开放功能的同时也牺牲了部分执行效率 四、什么是composer?答:Composer是PHP用来管理依赖关系的软件。在项目中只需通过配置文件composer.json中声明你要安装的库文件,则Composer会自动帮你安装所有需要依赖的文件 五、你开发时使用过什么版本控制工具,简单介绍一下答:常见的版本控制工具有SVN、GitSVN是一款集中式版本控制工具,版本库是集中存放在中央服务器的,团队里每个成员从SVN服务器下载代码,个人编写后再提交给服务器。SVN的优点是好学易用,但是对服务依赖性强,必须要连接服务器。Git是一款分布式版本控制系统,每一个用户都可以作为服务器。因为每一次Clone就是从服务器上pull到了所有的内容,包括版本信息,相当于是有一个本地仓库。Git的优点是服务器压力和数据量都不会太大,别外Git支持离线工作,连接不到服务器,不会影响本地代码编写六、如何实现团购功能?答:

赞(0) 打赏
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 常见的PHP问题
分享到: 更多 (0)
E企盈小程序直播营销卖货系统
E企盈直播平台营销卖货系统

评论 抢沙发

E企盈小程序开发

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏