PHP

PHP 最新统计数据公布:市场份额 77.2%,仍是网站的“首选编程语言”

IT之家 9 月 11 日消息,Wikimedia 基金会首席工程师 Timo Tijhof 日前发文,透露了 PHP 语言的使用数据,并强调了 PHP 语言对于互联网的作用,IT之家整理相关内容如下:

PHP 仍然是首选编程语言

Timo Tijhof 从 W3 Techs 发布的《全球前 1000 万个网站使用的编程语言分析(截至 2023.8)》中,摘录得出这一结果,其中:…

如何使用 PHP 的 Symfony 事件调度程序

今天,我们将学习如何使用 Symfony 事件调度程序组件,它允许您在 PHP 应用程序中创建事件和侦听器。因此,应用程序的不同组件可以通过松散耦合的代码相互通信。

什么是 Symfony 事件调度程序组件?

您可能熟悉事件观察者模式,它允许您为系统生成的事件定义侦听器,以便在触发事件时执行它们。类似地,Symfony EventDispatcher 组件允许您设置一个可以在其中创建自定义事件和侦听器的系统。通过这种方式,您可以允许应用程序中的组件在系统中发生某些情况时做出反应。

事实上,事件调度程序组件提供了三个元素,您可以围绕它们构建应用程序架构:事件、侦听器和调度程序。整个系统由调度程序类编排,它在应用程序中的适当点引发事件并调用与这些事件关联的侦听器。

假设您希望允许应用程序中的其他组件在缓存被清除时做出反应。在这种情况下,您需要首先定义清除缓存事件。清除缓存后,您可以使用调度程序引发清除缓存事件,并通知所有正在侦听此事件的侦听器。这使侦听器有机会清除特定于组件的缓存。

在本文中,我们将探讨事件调度程序组件的基础知识。我们将从安装和配置开始,我们还将创建一些实际示例来演示上述所有概念。

安装和配置事件调度程序

在本节中,我们将安装事件调度程序组件。我假设您已经在系统上安装了 Composer,因为我们需要它来安装 EventDispatcher 组件。

安装 Composer 后,请继续使用以下命令安装 EventDispatcher 组件。

1
$composer需要 symfony/事件调度程序

这应该已经创建了composer.json文件,该文件应如下所示:

1
{
2
    “要求” : {
    

ThinkPHPV8.0发布——AI助力开发体验

(本文部分内容采用ThinkChat生成)

ThinkPHPV8.0为基于PHP8的重构版本,升级了相关依赖,官方开启了AI助理提升开发体验,提升ThinkORM版本依赖为3.0,支持6.0/6.1的无缝升级。

ThinkPHPV8.0在核心功能上虽然并没有大的更新(事实上大部分用户也不需要太复杂的底层功能),作为一个全新的版本,更多的意义在于一种官方的姿态——我思故我在。ThinkPHP在寻求一种改变或者是新的探索,从新版LOGO、新版官网,以及一系列的官方生态服务的陆续推出,无一不是在告诉用户,我们希望为生态、为用户做更多的事情,更好打造官方对大道至简的开发理念和愿景,从而帮助开发者更好的开发。值此新版发布之际,官方也正式宣布推出了的私人开发AI助理服务ThinkChat

ThinkPHP8.0作为一个全新的版本,承载了官方对未来生态的全新期望。官方也将始终秉承大道至简及无缝升级的策略,努力打造简单易用的框架及服务,方便生态产品和服务的更新迭代。这一版本的发布,标志着ThinkPHP在持续创新和改进的道路上迈出了重要一步。新版不仅是对过去版本的升级,更是对国内PHP开发生态的一次推动和革新。相信通过这一全新版本及AI开发助理的引入,将为广大开发者带来更便捷、高效的开发体验,助力他们构建出更出色的Web应用。

在ThinkPHP6.0+发布以来的这些年,官方一直在致力于摸索和打造生态及商业模式,在企业知识管理ThinkAPISSL证书云市场及应用认证方面的不断尝试,让我们坚信只有构建可持续的生态及发展才能让框架走的更好更远。

在此也要感恩一直以来支持和赞助我们的用户和赞助商,我们唯有不负众望,做一个值得开发者信赖的框架,并砥砺前行!

主要更新

  • 基于PHP

    

PHP curl 携带cookie请求抓取源码,模拟登陆。

function request_url_data($data) #获取保存COOKIE
{
    $cookieSuccess = __DIR__."/cookie.txt";#cookie保存文件地址
    $data['user'] = '用户名';
    $data['pwd'] = '密码';
    $requesturl = 'http://GET登陆提交地址?'.http_build_query($data);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $requesturl);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieSuccess);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    $data=curl_exec($ch);
    curl_close($ch);
    return