php环境集成-PHP扩展与发展初探

2023-08-21 0 1,623 百度已收录

PHP 扩展有哪些

简单来说,PHP扩展就是提高PHP语言功能的插件。 PHP提供了编程语言句型,比如分支、循环、函数、类等,这些都是PHP本身提供的。 在某些情况下,需要在PHP语言的基础上进行扩展,那么就需要通过PHP底层提供的数据结构和套接字来开发PHP扩展,从而对PHP语言进行补充或扩展,使得它更强大。 其实PHP本身已经集成了一些基础的、强大的、优秀的PHP扩展。

PHP 扩展的好处

从前面的理解来看,PHP扩展可以在原有PHP的基础上扩展PHP的功能,使其更加强大。 另一方面,PHP扩展可以以“插件”的形式管理和维护PHP功能。 如果所有的功能都集成到PHP语言中,PHP一定太臃肿php环境集成,不够灵活。 随着扩展,这个问题就解决了。

PHP 扩展是如何存在的

在 Linux 系统上,PHP 扩展以 .so 文件形式存在,在 Windows 上以 .dll 文件形式存在。

何时使用 PHP 扩展

单独使用PHP语言并不能满足所有的开发。 例如,在项目中使用Redis或MongoDB时,需要相应的PHP扩展来改进PHP语言,以便PHP可以操作Redis或MongoDB来实现更多、更强大的功能。 的项目。

何时开发自己的 PHP 扩展

是否有必要开发自己的 PHP 扩展? 虽然不是。 一般情况下,作为一名PHPer,你不需要自己开发PHP扩展,而在某些情况下,你可能需要开发PHP扩展。 例如,我就遇到了这个问题。 合作的第三方提供了Windows下的动态链接库文件(.dll文件、非COM DLL文件),而我还没有找到如何在PHP下加载和调用DLL文件,所以需要编写PHP扩展,通过PHP扩展来加载并调用第三方提供的DLL文件。

开发您自己的 PHP 扩展

我在上面已经提到了我遇到的问题。 我合作的第三方提供了Windows下的动态链接库文件,但是我没有找到PHP下加载和调用DLL文件的形式,所以我决定编译PHP扩展来加载和调用提供的DLL文件中的导入函数由第三方。 以下是我搭建开发PHP扩展环境以及编译PHP扩展源码的记录。

设计工具

首先说明一下,DLL文件只能在Windows系统上运行,在Linux系统上很难运行。 这样我们的扩展就不考虑Linux系统,只考虑Windows系统。 为此,预期的开发工具是VS2015。 本来在网上搜了一些资料,很多资料都提到Windows下开发PHP扩展需要安装CygWin。 通过我自己的研究,我可以告诉你“不需要”。 事实上,我们的扩展只能运行在Windows系统上。 如果需要在Linux系统上运行,不知道是否需要Cygwin。 其实VS的其他版本应该也是可以的,不过我只测试了VS2015。

下载PHP的源代码

不仅需要安装VS2015,还需要下载PHP的源码。 我下载的源码是PHP7.2的源码。

PHP源码下载地址为:

打开地址后,下载如右图所示的源码:

这里,下载PHP7.2的源码,注意源码下面有一个VC15x64的字样。

下载的文件是:php-7.2.20-src.zip

下载源码并解压后,解压后的目录为:php-7.2.20-src

下载源码并不是一件复杂的事情,而且页面上有多个版本的源码可供下载,选择哪一个有时是一个郁闷的问题,这里我下载的是php7.2的源码,因为我用的是php7 .2 当地环境。

创建扩展

进入php-7.2.20-srcext目录,该目录下有一个名为ext_skel_win32.php的文件,在命令行执行:

php ext_skel_win32.php --extname=loaddll

其中 loaddll 是要创建的扩展的名称。 要成功执行该命令,需要将PHP可执行程序添加到环境变量中。

实现如下:

λ php ext_skel_win32.php --extname=loaddll
Creating directory loaddll
FIND: Parameter format not correct
chmod: missing operand after ‘644’
Try 'chmod --help' for more information.
FIND: Parameter format not correct
chmod: missing operand after ‘755’
Try 'chmod --help' for more information.
Creating basic files: config.m4 config.w32 .gitignore loaddll.c php_loaddll.h CREDITS EXPERIMENTAL tests/001.phpt loaddll.php [done].
To use your new extension, you will have to execute the following steps:
1.  $ cd ..
2.  $ vi ext/loaddll/config.m4
3.  $ ./buildconf
4.  $ ./configure --[with|enable]-loaddll
5.  $ make
6.  $ ./sapi/cli/php -f ext/loaddll/loaddll.php
7.  $ vi ext/loaddll/loaddll.c
8.  $ make
Repeat steps 3-6 until you are satisfied with ext/loaddll/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.

看到上面的输出提示,说明我们创建的PHP扩展已经成功生成了。 上面的输出看起来像这样:

此时ext目录下会生成loaddll的目录,这是生成的PHP的扩展模板,可以在该模板的基础上进行开发。

使用VS2015创建扩展项目

打开VS2015,我这里使用的是VS2015,其他开发环境没有测试过。

在VS2015中选择“文件”->“新建”->“从现有代码创建项目”,创建PHP扩展解决方案,如右图:

选择“从现有代码创建项目”后,会出现创建项目的向导,如右图:

只需点击“下一步”即可进入右图:

这一步选择刚刚生成的扩展模板的目录,然后填写项目名称,这里是“loaddll”,点击“下一步”,到达右图:

这一步选择DLL工程,点击下一步,得到如右图:

点击“下一步”即可到达右图:

点击“完成”,等待VS2015开始创建项目。

配置编译选项并编译项目

VS2015生成项目后,将项目切换为“Release”和“x64”选项,如右图:

切换完成后,右键单击该项目,选择“属性”,如右图:

将配置类型更改为DLL,这样生成的目标文件的扩展名就手动更改为.dll,如右图所示:

选择“配置属性”->“C/C++”->“常规”,在“附加包含目录”中点击“编辑”添加相关目录,如右图:

这里需要包含的目录包括如右图所示的几个目录:

这里主要是添加了PHP源码的几个目录,因为编译PHP扩展源码时需要支持PHP底层内核数据结构,所以需要包含以上目录。

选择“配置属性”->“C/C++”->“预处理器”,在“预处理器定义”中点击“编辑”添加相关预处理指令,如右图:

在预处理中,HAVE_LOADDLL中的LOADDLL是扩展名,COMPILE_DL_LOADDLL中的LOADDLL也是扩展名。 该名称应与扩展模板最初生成时的名称一致。

编译源代码

将 php-7.2.20-srcwin32build 目录下的 config.w32.h.in 复制到 php-7.2.20-srcmain 目录下,并重命名为 config.w32.h,这个 . h 文件是编译时需要的,而 php-7.2.20-srcmain 下没有这个文件,所以需要自己自动复制。

减少config.w32.h中的以下代码

#define PHP_COMPILER_ID "VC15" 

注意这里的VC15,我们在下载源码的时候已经看到了这个标志。

接下来,将 php7ts.lib 文件从 PHP 安装目录复制到 loaddll 目录。 注意,它来自PHP安装目录,而不是PHP源代码目录。

php7ts.lib 位于 php7.2.10dev 目录中。 我在wamp64下使用php7.2.10。 您可以自行使用相应的.lib文件。 其实这个.lib文件也一定是php7.2的,因为我们下载的是php7.2的源码。

在项目的resourceFiles下添加php7ts.lib文件。 添加这个文件比较简单,右键添加也可以。

按F7生成解,如图:

看到“1成功”文件后,在php-7.2.20-srcextloaddllx64Release目录下会生成一个loaddll.dll文件php环境集成,这就是我们的PHP扩展文件。

PHP扩展的安装和测试

将VS2015生成的loaddll.dll重命名为php_loaddll.dll,并复制到PHP环境的扩展中。 我的路径是phpphp7.2.10ext。 熟悉 PHP 的人应该添加 PHP 扩展。 如右图所示:

减少php.ini文件中的配置,如右图:

使用php -m 查看是否有loaddll.dll模块,如右图:

phpinfo视图,如右图:

从上面可以看出,我们的PHP扩展已经正常安装了,需要测试一下我们的扩展连接后是否可以运行。

PHP源码目录下的php-7.2.20-srcextloaddll中有一个loaddll.php测试文件,在命令行执行此命令:

php loaddll.php

输出如下:

λ php loaddll.php
Functions available in the test extension:
confirm_loaddll_compiled
Congratulations! You have successfully modified ext/loaddll/config.m4. Module loaddll is now compiled into PHP.

如右图所示:

如果看到上面的输出,则说明扩展模板已成功编译,您可以继续开发实际的扩展模块。

总结

很多时候,学习编程的第一步就是搭建环境,而往往搭建环境的过程过于复杂,资料上也没有详细的傻瓜步骤,导致很多想要学习或者入门的程序员。 未能迈出一步。 开发 PHP 扩展也是如此。

如何通过PHP扩展让PHP程序可以直接调用DLL中的函数,不仅需要C语言的知识,还需要Windows编程的知识。 本文不再讨论,因为C语言和Windows程序的知识以及PHP扩展中设计、调用DLL和指出事物的知识。

希望这篇文章对您有帮助!

适合 Web 开发人员的 8 个最佳 PHP 框架

由于其简单性和易用性,PHP已成为最流行的Web脚本语言之一。它也是全球数百万开发人员使用的语言,因此找到适合您的开发需求的框架至关重要。

在这篇文章中,我们将讨论用于Web开发的最佳PHP框架。让我们来看看这些工具中的每一个都提供了什么,以及它们如何与竞争对手竞争。

摄影:Ben Griffithson Unsplash

为什么使用 PHP 框架

PHP 框架对开发人员特别有用,因为它们有助于将代码组织到模块中,从而更轻松地创建应用程序。它们还提供了一个标准库,可以轻松创建可在不同项目之间共享的可重用组件。除了这种有用性之外,框架还允许您编写更少的代码。由于大多数Web程序员在选择PHP

作为他们的主要选择之前都使用过某种类型的编程语言,因此PHP使开发Web应用程序看起来快速高效。大多数PHP框架共享许多共同的特性,例如易于安装,安全性和可扩展性。最重要的是,每个开发人员都确切地知道每个功能的作用及其工作原理。此外,所有PHP框架都相互兼容,这意味着您的网站在它们之间切换时不会变得奇怪。

PHP 框架最好的一点是,它们通过提供现成的类或模板来使应用程序创建看起来很简单,从而节省了自定义编码的时间和精力。WordPress主题是一个很好的反例。所有主要的PHP框架都包含一个模板引擎,允许设计人员自定义基本的HTML元素,而无需任何编码知识。这些工具为用户提供了完整的功能,而无需HTML,CSS,JavaScript等中间知识。

对于想要从头开始学习的开发人员来说,PHP 框架有几个优点。首先,学习一个框架比学习多个框架需要更长的时间。其次,构建完整应用程序所需的资源数量显著减少。第三,一旦项目完成,系统之间的数据传输非常方便。最后,大多数PHP框架都有内置的测试机制来保证产品的质量。

php环境集成-PHP扩展与发展初探

总之,PHP框架是快速有效地开发高质量软件的绝佳工具。一旦你有一个,你就不会回头

8 个最佳 PHP 平台。Laravel-最流行的WordPress开发框架

摄影:Mohammad Rahmanion Unsplash

Laravel创建于2009年,是一个开源项目,但直到2012年Twitter宣布将使用Laravel而不是Cakephp才流行起来。

从那以后,拉拉维尔

势头强劲,可口可乐、雅虎、耐克、Hulu等大公司都选择了拉维尔而不是其他选择。今天,成千上万的网站建立在Laravel上。

Symfony 2:一个强大的MVC框架

php环境集成-PHP扩展与发展初探

摄影:Fotis Fotopouloson Unsplash

Symfony 2是另一个流行的PHP框架,可以让你快速构建强大的应用程序。Symfony 2流行的主要触发因素之一是它的灵活性。

您可以从各种组件中进行选择,例如Doctrine ORM,HttpFoundation,Twig Templatelating Engine,甚至Zend Server。如您所知,许多项目从小开始php架构,但发展成为更大的项目。

这意味着,如果你要创建一些大项目,Symfony可能不适合你的需求。事实上,Symfony 2只是为大规模软件开发而设计的。

Codeigniter 3:Laravel的简单替代品

摄影:Walkatoron Unsplash

CodeIgniter 是另一个著名的 PHP 应用程序平台,它可以轻松创建功能强大的 Web 应用程序。其简单的设计和直观的结构使其非常适合想要开始构建网站的初学者,而无需花时间学习复杂的概念。

此外,CodeIgniter 还附带了大量第三方库,允许您扩展到默认提供的功能之外。这样,当您需要额外的东西时,您不必每次都重新发明轮子。

Fuel CMS - 基于 AngularJS 和 Bootstrap 4 的开源内容管理系统

php环境集成-PHP扩展与发展初探

摄影:Sigmundon Unsplash

Fuel CMS 是那些寻求在单个仪表板上提供所有必要功能的内容管理系统的人的完美选择。

Fuel将所有内容汇集在一起,包括博客平台,论坛php架构,画廊,活动,投资组合网站,电子商务解决方案,会员网站等。

Fuel 还支持 RESTful API,使您可以轻松地将燃料与任何外部系统集成。

Yii。另一个伟大的PHP应用程序平台的选择

摄影:Markus Spiskeon Unsplash

Yii与CodeIgnitor相似,两者都提供了广泛的仪表板,用户可以通过这些仪表板管理整个网站。然而,Yii 比 CodeIgnitor 容易得多,因为它的界面简单。

Yii 包括主动日志记录、网格视图、表单验证、安全功能、图像处理工具、缓存支持、数据访问层和数据库抽象层等功能。

Yii 也是高度可定制的,使得在后期添加新功能成为可能。

纤薄的框架。具有快速类型功能的轻量级快速 HTTP API

摄影:AltumCodeon Unsplash

比较

对于其他PHP框架,Slim框架相当轻巧。不仅如此,Slim Framework也很快。

它是如此之快,以至于没有任何在线基准测试,但我们早就听说性能改进比传统框架快 10 倍。如果速度对您很重要,那么绝对应该考虑苗条框架。

7)蛋糕。使用此免费软件构建自己的社交网站,如Facebook或Twitter。

php环境集成-PHP扩展与发展初探

摄影:Austin Distelon Unsplash

Cakephp是使用MVC框架开发的,可以免费下载和使用。由于 CakePHP 遵循模型-视图-控制器模式,它可以帮助您清晰地组织代码,同时快速减少功能。

CakePHP有两个版本;第一个版本于 2006 年发布,第二个版本于 2011 年发布。两个版本都支持 MySQL 数据库联接。因此,如果您已经拥有MySQL服务器,则安装CakePHP不会有问题。

法尔康。一个快速的PHP框架

它是轻量级的,并使用MVC架构。用户只能安装他们想要的模块和库。这有助于保持网站开发过程的混乱和轻松。

虽然Phalcon不是很受欢迎,但与其他流行的PHP框架(如Laravel)相比,它是有据可查的。

结束语

PHP 平台是在服务器上运行的基于 Web 的应用程序,因此它们可以帮助您为小型企业、教育机构和个人创建交互式网站或在线服务。

这些平台易于使用,不需要任何编程知识。您将获得一个包含完善网站所需的一切的应用程序。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php php环境集成-PHP扩展与发展初探 https://www.wkzy.net/game/138798.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务