1. 做php网站一定要用框架吗
不一定要用,根据需求,用不用,是你自己的选择;
用框架开发的好处:
1.公共代码、类库:这样不用你再去写一个具体的功能,可以直接拿来用,提高开发效率;
2.代码安全:框架一般都会输入、输出进行基本的过滤,提高了代码攻击的安全性;
3.用更少的代码实现更强大的功能;
。。。好处多多
如果你只是想打实自己的基础,完全可以不用框架开发
如果在公司工作,我想你的领导会要求效率的
2. PHP 程序无法做到常驻内存运行,那么它适合做 Web Services 吗
我不知道Web Services与PHP能否常驻内存运行有什么关系,Web Services需要常驻运行的是WEB服务,也就是Apache、Nginx或者IIS等,而不是PHP的进程。
但要让PHP进程常驻也不是不可能,可以在CLI模式下运行,可以用swoole框架。你还可以用Redis或Memcached等工具,让PHP不同的进程共享内存数据。
3. php是什么意思
php通常指超文本预处理器,用于面向对象、命令式编程,是一种通用开源脚本语言。
主要特点:
为开源性和免费性、快捷性、数据库连接的广泛性、面向过程和面向对象并用。优点是利于学习,使用广泛。此外,php还可以指菲律宾比索的标准货币代码符号,MPLS网络中的倒数第二跳弹出功能。是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种HTML 内嵌式的语言,是一种在服务器端执行嵌入HTML文档的脚本语言,语言风格有些类似于C语言,被广泛的运用。
简介:
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
特性包括:
1、PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法
2、PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;PHP具有非常强大的功能,所有的CGI的功能PHP都能实现
3、 PHP支持几乎所有流行的数据库以及操作系统。
4、最重要的是PHP可以用C、C++进行程序的扩展!
语言特点:
开源免费
PHP是一个受众大并且拥有众多开发者的开源软件项目,linux + Nginx + Mysql + PHP是它的经典安装部署方式,相关的软件全部都是开源免费的,所以使用PHP可以节约大量的正版授权费用。不过PHP作为一个开源软件,它缺乏大型科技公司的支持背景,网络上对它的唱衰也是经久不衰,不过它的持续迭代和性能持续增强的现实却是鼓舞人心的,PHP社区用实际行动给予各种质疑强有力的回击。
快捷高效
PHP的内核是C语言编写的基础好效率高,可以用C语言开发高性能的扩展组件;PHP的核心包含了数量超过1000的内置函数,功能应有尽有很全面,开箱即用程序代码简洁; PHP数组支持动态扩容,支持以数字、字符串或者混合键名的关联数组,能大幅提高开发效率; PHP是一门弱类型语言,程序编译通过率高,相对其他强类型语言开发效率快;PHP天然热部署,在php-fpm运行模式下代码文件覆盖即完成热部署;PHP经过20多年的发展,在互联网上可以搜到海量的参考资料供参考学习。
性能提升
PHP版本越高它的整体性能越高,根据官方介绍,PHP7.0.0 对比PHP5.6性能就提升了2倍,PHP7.4已经比PHP7.0快了约30%,PHP8.0在性能上又相对PHP7.4大约改进了10%。PHP 8.0 引入了 JIT编译器特性,同时加入多种新的语言功能,例如命名参数、联合类型、注解、Constructor Property Promotion、match 表达式、nullsafe 运算符以及对类型系统、错误处理和一致性的改进。PHP拥有自己的核心开发团队,保持5年发布一个大版本、1个月发布2个小版本的频率,最新的版本是PHP8.08 。
跨平台
每个平台都有对应的php解释器版本,指针对不同平台均编译出目标平台的二进制码(PHP解释器),php开发的程序可以不经修改运行在windows、linux、unix等多个操作系统上。
常驻内存
php-cli模式下可以实现程序常驻内存,各种变量和数据库连接都能长久保存在内存实现资源复用,比较常用的做法是结合swoole 组件编写cli框架。
页面生命周期
在php-fpm模式下,所有的变量都是页面级的,无论是全局变量还是类的静态成员,都会在页面执行完毕后被清空,对程序员水平要求低,占用内存非常少,特别适合中小型系统的开发。
运行机制:
PHP常见的运行模式有2种,分别是php-fpm 和php-cli 。当PHP 选择运行在php-fpm模式下,所有的变量都是页面级的,无论是全局变量还是类的静态成员,都会在页面执行完毕后被清空。运行在php-cli模式下可以实现程序常驻内存,各种变量和数据库连接都能长久保存在内存 实现资源复用,性能可以得到很大的提升,php-cli开发比较复杂能但是能够获取更高的性能,对开发者的要求比较高需要比较高的开发水平,比较常用的模式是结合swoole 组件编写cli框架,各种变量能保存在跨进程的高性能共享内存 Table ,可以开发出支持热启动的php-cli可靠各类应用系统。
php-fpm在PHP 5.3.3 版本成为了官方正式组件(2010-07-22),它提供了稳定可靠的进程管理服务,进程不足时候可以智能扩充数量,闲置时候可以自动回收销毁多余的进程,同时它对程序的容错能力很强大运行非常稳定,可以应付企业级的开发需求。php-fpm友好的完成了使用HTTP/HTTPS等TCP/IP互联网协议下进行的用户的输入输出,页面级生命周期各种资源用完即释放,不存在内存泄漏的问题。php-fpm也提供有一些常驻内存的技术支持,例如PHP 7.4引入的opcache.preload也能实现局部的PHP类和函数的常驻内存,不过这个方法不够灵活,和服务器配置捆绑的太死了。
php-cli因为能实现各类资源的常驻内存,所以可以资源复用,更高效完成多进程编程和异步编程,可以开发出负载能力更高的应用系统。但是相对php-fpm的简单编程开发,开发者要注意很多的事项和需要做很多附加的控制器开发,否则就无法实现期待中的高性能。
首先开发者需要去实现可靠的进程管理服务,保证系统进程遇到各类错误退出运行后能够自动创建新的进程,只有这样才能保证后续的服务请求有足够空闲进程可分配。每个业务代码段都要做异常处理,让进程遇到非致命错误时候不会退出,因为进程重启意味程序和各类资源需要再次加载,这个过程性能消耗不小,所以只有进程稳定运行了常驻内存才有意义。
其次因为常驻内存,编写的新的程序必须重启服务才能生效,这一点习惯了fpm模式的开发者会感到比较陌生。另外开发者需要手工释放内存,否则系统长时间运行后会出现内存泄露。同时在cli模式下,我们不能像fpm里直接用 $_SERVER、$_POST、$_GET、$_COOKI和$_FILES 进行编程工作,需要自己去解析各种互联网通讯协议完成用户的输入输出。要实现多进程编程利用多核CPU计算,还有学习使用pcntl和posix编程,这里涉及到了异步编程逻辑,这块难度还是比较大的。比较常用的模式是结合swoole 组件编写cli框架。
PHP是一个活跃的社区开发语言,有专业的核心开发团队在持续不断的迭代,最近一个版本就是PHP 8.0.8 引入了很多的新特性。
语言参考:
内置函数
PHP 有很多标准的函数和结构。还有一些函数需要和特定的扩展模块一起编译,否则在使用它们的时候就会得到一个致命的“未定义函数”错误。例如,要使用 image 函数中的 imagecreatetrue,需要在编译 PHP 的时候加上 GD 的支持。或者要使用 mysqli_connect函数,就需要在编译 PHP 的时候加上 MySQLi 支持。有很多核心函数已包含在每个版本的 PHP 中如字符串和变量函数。调用 phpinfo或者 get_loaded_extensions可以得知 PHP 加载了那些扩展库。同时还应该注意,很多扩展库默认就是有效的。
静态网站与动态网站的区别
静态网站:web1.0 时代
动态网站:web2.0 时代
静态网站特点:
1、网页内容一经发布到网站服务器,无论是否有用户访问,每个静态页面的内容都是保存在网站服务器上的。也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件。
2、静态网页的内容相对稳定,因此容易被搜索引擎检索。
3、 静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难。
4、静态网页的交互性较差,在功能方面有较大的限制。
4. 为什么学PHP需要框架PHP框架是做什么用的
1.对于PHP初学者从框架开始学习是个很好的方法。
很多功能与其东拼西凑找开源库不如直接用现成的框架来解决,而且用框架还能保证可靠性和安全性,毕竟那是经过长时间应用检验的。
而且,用框架的更重要的原因是保证设计的合理性和可扩展性。如果不用框架难免会有结构设计方面的bug,做出来的产品难以维护,更难以扩展。
如果要从头开始写个项目,最简单快捷的方法就是用框架,而且框架选择也是很多样的,可以用Zend这样的大型框架,也可以选择一些codeigniter这样的开源轻量框架(CodeIgniter / EllisLab)。
2.对于PHP熟练者不一定非得用框架,很多优秀的PHP产品都没有用框架。
框架的好处是规范代码,统一架构,方便团队开发和维护管理,代码封装了很多常用功能,开发的时候直接使用,并且不用考虑底层架构,提升开发效率。
所以框架适合开发大多数普通项目。项目太小,没必要用框架。项目太大,需按具体业务设计架构,框架不一定好用。
3.所以,要根据自身情况而定,不一定非要使用框架。
5. PHP中的ZEND框架是做什么用的
首先Zend是目前为php提供技术和服务支持的公司,该公司专注于php项目的各种解决方案,其中之一是zend framework。
然后ZF(Zend Framework)的优势:
ZF使用MVC三层架构,完全面向对象编码。
组件非常丰富,且组件之间耦合很松散。简单说就是,各组件之间的依赖性非常低,基本上每个组件都可以单独拿出来使用。
ZF是Zend对php面向对象编码的最佳参考之一。非常灵活,非常强大,非常易于扩展,然而,也非常难入门难上手。
ZF的中文资料相对来说,并不充足,国内使用ZF做框架的网站也不是很多。
对于大型php项目,有一定规模的团队,有明确项目需求,有明确项目进度规划的,可以考虑使用ZF,另外,对于非常想学习php 面向对象思想的,ZF是相当推荐的。
相比之下ThinkPHP在国内更受欢迎,另外还有CI框架(CodeIgniter )等
6. 使用过哪些php框架.试描述其优劣点
1、BroPHP框架:
优点:轻量级学习型框架,配置简单,操作简单,容易上手,提供了比较全面的文档。 缺点:
2、ThinkPHP框架:
优点:功能比较全面,配置相对比较简单,操作相对比较简单,容易上手。
缺点:麻烦的URL路由,不支持模板的部分缓存,提供的操作方法太多,新手不知如何选择,文档不够全面。
3.CodeIgniter框架:
优点:
1. 配置简单,全部的配置使用PHP脚本来配置,执行效率高;具有基本的路由功能,能够进行一定程度的路由;具有初步的Layout功能,能够制作一定程度的界面外观;数据库层封装的不错,具有基本的MVC功能
2. 快速简洁,代码不多,执行性能高,PHP框架简单,容易上手,学习成本低,文档详细;自带了很多简单好用的library,框架适合小型应用
缺点:
1. 把Model层简单的理解为数据库操作
2. PHP框架略显简单,只能够满足小型应用,略微不太能够满足中型应用需要
7. 基础知识回顾:为什么要使用PHP框架
为什么要使用PHP框架?
开发人员使用PHP框架的好处很多,其中之一是加快开发进程。在类似项目中重用代码将为开发者节省大量的时间和精力。框架为执行繁琐的代码任务提供预建模块,因此,开发人员可以把时间花在实际应用的开发上,而不是每一个项目都重新构建基础功能。
稳定是开发者使用框架的另一个重要原因。虽然简单是PHP最大的优点,很多人也因为这一点喜欢使用这个脚本语言,但它同时也是PHP最大的缺点。一些开发者尤其是初学者很容易写出低劣的代码,而自己却没有意识到。使用PHP,应用往往会将静态工作加倍,不知不觉中您可能已经在编码时打开了一个大的安全漏洞,因此可能会受到攻击。重要的是要记住,PHP是一个非常宽容的语言,因此,更重要的是在编程时确保封闭任何漏洞,即便应用看起来可以正常工作。
最后,PHP框架的使用是非常广泛的,而且有许多不同的框架可供选择。许多开发者会选择知名的框架,是因为它的知名度、其开发团队的巨大支持,而且他们可以通过论坛/社区来与其他使用相同框架的开发者交流,当然你也可以开发自己的框架。这里提醒一下,首先应该检查你的项目来决定是否应该使用一个框架。你应该问自己:它会节省你和其他使用者的时间和精力么?应用程序的性能会更好么?是否会提高稳定性?如果这些问题你的回答都是是,那么你就该为你的项目选择一个合适的框架了。
何时使用PHP框架?
这是一个无论有经验的开发者还是初级开发者都共有的问题,而且这个问题也确实没有直接的回答。对于许多初学者来说,一个框架将提供很多简便和稳定,因此应该尽可能地使用PHP框架。这将有助于减少或消除不良编码,加快开发进程。
另一方面,许多有经验的PHP程序员将框架视为不知道如何写出好的、干净的代码的低级程序员的工具。姑且不论这一点的真假,起码毋庸置疑的是PHP框架是一个可以用来节省时间并强化自己编码的工具。
当工作的项目时间紧迫时,使用PHP框架就有很多好处,可以大大加快编码进程,因此所以如果你时间紧迫,使用PHP框架就是很好的选择。另一个例子是,当你所做的项目有大量代码时,也应当考虑使用PHP框架,因为这将有助于减少工作的繁琐度。
寻找一个什么样的PHP框架?
有许多可供开发者选择的PHP框架,甚至还可以创建自己的框架,尽管只建议PHP专家级这样做。当寻找你最需要的PHP框架时,重要的是要搞清楚谁将自始至终使用或修改你的应用,如果是有很多人做这件事情,那么最好使用流行的PHP框架,这样大部分开发者都不会陌生。另一方面,如果你想构建Web应用程序为你个人使用,那就最好选择令你满意的PHP框架,而不在乎它在开发者社区中是否流行。
选择PHP框架的参考因素有很多,包括:容易使用、快速开发、性能、开发者中的流行程度、强大的功能,技术支持、论坛等。当你第一次选择PHP框架时,为了找到一个适合你需求的最佳选择,建议多尝试几个。每个框架都有所不同,并有不同的长处和短处。例如Zend框架由于V3和多样的功能、并且有一个广泛的支持系统,因而它流行了这么久。相反, CakePHP是另一个晚于Zend框架的PHP框架,相应的支持系统也比较少,但更方便和易于使用。
正如你所看到的,每种类型的PHP框架都有自己的优点,因此,最好反复试验以找出其中哪个最适合你的需要。另一个选择PHP框架的有效方式是咨询你的同事,看看开发社区里选择哪个。那些真正使用过具体框架的能够明确地告诉你它的易用性、功能、支持可用性、社区内的情况,当然可能还有不足。
使用PHP框架最常见的错误
任何类型的编程中都可能有错误,但是PHP框架有助于显着限制这些错误。重复编码似乎加剧了这种错误,而框架则解决了这一问题。尽管如此,在使用任何PHP框架时仍要注意。例如,除非你是一位PHP编程的专家,否则你应该总是选择使用流行的框架,有大量的支持和积极的用户群。很多框架的支持很少甚至没有,它们可能是被PHP知识有限的个别开发者所创建的。这些类型的框架,可能会使你的应用程序无法正常运行,更糟糕的是,可能会给你的网站带来灾难性的安全问题。
另一些常见的错误是,不能确保你的数据库和Web服务器符合特定框架。例如,Seagull PHP Framework建议如下配置:
◆PHP :最低是PHP 4.3.0,PHP 5.1.1或者更高版本更佳,避免任何5.0.x版本中的东西;
◆MySQL的:支持MySQL的4.0.x,4.1.x和5.0.x,也可以使用3.23.x;
◆Apache:Seagull支持1.3.x以及Apache的2.x系列。
如果你没有满足这些要求,您将无法在你所选的框架中看到最好的性能。即使你是PHP的专家,你也应该经常复习框架的说明文档,确认兼容性后再尝试。
类似于前面提到的常见的错误,不遵循建议的安装进程的话,你的PHP框架也可以给你带来一些令人头疼的问题。以Seagull 为例,在Seagull的wiki有一个详细的框架安装过程,其中有几个关键步骤,很容易被不小心或不知情的开发者忽视。因此你要花费时间来安装框架并遵循安装说明。
最好的PHP框架有哪些?
过去的几年中,因为PHP已发展成为大多数开发者选择的脚本语言,因而也产生了大量的PHP框架。什么是最好的PHP框架,仁者见仁智者见智,因为并非每一个框架都能够适合每一个人。以下是5个最佳和最流行的PHP框架选择:
◆The Zend Framework
Zend Framework在开发者社区中很有人气,其重点是Web 2.0风格的应用程序。由于其大量的党羽、广泛的支持和积极的用户群,Zend被称为PHP Company。Zend即使不是当今最流行的PHP框架,也绝对是之一。它强大的功能能够满足企业级的需求,当然它的使用也需要具备广泛的PHP知识。
◆CakePHP
从初学者到高级PHP开发者,CakePHP都是一个很棒的选择。它与 Ruby on Rails设计的原则基本相同,主要集中在快速开发方面使其成为一个快速应用开发的优良框架。其迅速增长的支持系统、简单和可扩展性使CakePHP成为当今最热门的PHP框架。
◆Symfony
Symfony针对的更多的是高级开发者,也即创建企业级应用的开发者,尤其是Askeet和Yahoo! Bookmarks。这个开源的PHP框架功能全面,但它的主要缺点是速度慢于其他框架。
◆CodeIgniter
CodeIgniter以其易用性、性能和速度而闻名。不同于Symfony,CodeIgniter主要针对的是与人共享主机的开发者,或者为小型设备寻找PHP框架的开发者。它提供简单的解决办法,而且有一个扩展库包括视频教程、论坛、用户指南和wiki。初学者应该考虑使用CodeIgniter 。
◆Seagull
Seagull是一个稳定的用于构建web、命令行和GUI应用的PHP框架。这是一个非常易于使用的框架,非常适合初学者到高级程序员。对于初学者,Seagull有一个范例应用库,可以自己设定后满足自身需求;对于高级开发者,Seagull提供了众多选择包括最佳实践、标准、模块化的代码基,这些都可以帮助快速简单地构建Web应用程序。Seagull有一个活跃的开发者社区,内有大量的支持性文档和说明。