PHP 7是PHP 5.6的继承者,它于2015年12月3日发布。使用此标记用于与使用PHP 7开发相关的问题
无法使用 WHM/cPanel 在 Ubuntu 22.04 服务器上安装 PHP 7.x – 缺少软件包
我正在使用 Ubuntu 22.04 设置服务器并使用 WHM/cPanel 来管理多个帐户和配置。我的目标是在服务器上安装 PHP 7.4(或早期版本,如 PHP 7.3),因为有些...
PhpSpreadsheet 和 PHP 7 > ZipArchive::close 创建临时文件失败
在工作中,我们使用PhpSpreadsheet生成一些Excel文件(我们使用它来提供一些导出)。 这是我使用的简单代码(基于给出的一些示例,但 PhpSpreadsheet )来生成
我只是尝试将 Laravel 项目更改为在 Nginx 而不是 Apache 上运行,但无法获得正确的权限。真的不知道接下来要尝试什么。目前他们在这里: 我什至给了777
在 CodeIgniter 4.0.2 中设置动态基本 URL
我正在将我的项目从 CodeIgniter 3 迁移到 CodeIgniter 4。我对框架的新结构感到困惑。所以这是我的问题, 我将 App.php 中的基本 url 设置为: 保护...
最近,我安装了一个新的Ubuntu服务器,其中包含PHP7。以前,在 PHP5.3(或者可能是 PHP5 的更高版本)上,我可以使用 $_SERVER['HOME'] 返回主路径...
我正在尝试为文章创建动态可搜索关键字。 我用 + 替换空格并生成链接,就像 google 那样: 搜索?q=文本1+文本2+文本 我的代码生成第一个链接 sam...
这是什么? 这是包含有关 PHP 最新更新的问题集合。这也是一个社区 Wiki,因此热烈邀请大家添加问题列表。 这个问题
我有一个控制器,在名为“UserController”的控制器中具有“getUsers”功能,在其中我想调用“CarController”控制器的一个名为“getCars”的功能,这两个选项...
我需要使用 Magento REST API 来创建订单。哪些 API 我应该用它来实现这个或者要遵循什么步骤来创建一个 订单是否包含完整的账单、运输、付款详细信息?
我正在尝试从 PHP(版本 7)向 Microsoft 消息队列 (MSMQ) 发送消息。 任何人都可以为我提供代码示例或向我指出可用于的相关文档或库
使用没有 COM 包的 PHP 版本 7 向 MSMQ 发送消息时出错
我正在尝试从 PHP 版本 7 向 Microsoft 消息队列 (MSMQ) 发送消息。但是,PHP 版本 7 不再包含通常用于与 MSMQ 交互的 COM 包。 我...
我正在使用 PHP 7 测试返回类型。 我创建了一个简单的脚本来测试 PHP 7 的返回类型: 我正在使用 PHP 7 测试返回类型。 我创建了一个简单的脚本来测试 PHP 7 的返回类型: <?php Class Obj { public function __construct(){ } public function test(): string { //a string needs to be returned return "ok"; } } function foo(): Obj { //instance of Obj needs to be returned return new Obj(); } $o = foo(); echo $o->test(); // output: ok 现在在其他编程语言中,当您指定返回类型时void,这意味着您无法返回任何内容,否则会收到错误。所以我写了这个脚本: <?php function foo(): void { } foo(); 现在在上面的脚本中,预期的输出什么也没有。 相反,它给了我一个致命错误: 致命错误:foo()的返回值必须是void的实例,第2行没有返回 我的问题是(我找不到),在 PHP 7 中会有类似的 void 类型吗? 编辑: 针对 void 返回类型的新单独 RFC 已发布,已通过投票,并在 PHP 7.1 中实现。 PHP 中现在有一个 void 返回类型。 :) 原帖: 取自wiki.php.net: 未来的工作 超出本 RFC 范围的未来工作想法包括: 允许函数声明它们根本不返回任何内容(Java 和 C 中为 void) 所以目前没有办法声明您不退回任何东西。 我不知道在你的情况下什么是最好的,但我可能会暂时不声明返回类型。 回答你的问题 PHP 7 中是否会有 void 返回类型: 目前还没有 保证,但我认为 void 或同义词很可能会以某种方式实现。 php 7.1 接受 void返回类型。所以它会在未来出现。 有关其工作原理的一些示例: function should_return_nothing(): void { return 1; // Fatal error: A void function must not return a value } function returns_null(): void { return null; // Fatal error: A void function must not return a value } function lacks_return(): void { // valid } function returns_nothing(): void { return; // valid } 请参阅 Andrea Faulds 的 RFC 了解更多信息! 编辑:在 PHP 7.1 中,有一个 void 伪类型。它在Void Return Type RFC中定义。以下是 7.1 之前的答案。 返回类型 RFC 的作者在这里。在 PHP 7.0 中,不会有 void 返回类型,因为 RFC 没有添加它,任何其他针对 PHP 7.0 的 RFC 也没有添加它。 如果我们决定为次要版本添加新的关键字/保留字是可以的,即使它们会破坏代码,则类型 void 可以存在于 PHP 7 系列中。这有点不确定,但它是在 PHP 5.4 中使用 callable 关键字完成的。 就个人而言,我认为我们不需要void;我们已经有了 null。 来自手册: 特殊的NULL值表示没有值的变量。 NULL 是 null 类型唯一可能的值。 在 PHP 中,不返回任何内容的函数将隐式返回 null。这意味着您永远无法“实际上”返回任何内容*。走 null 路线意味着不会出现向后兼容性中断,因为 null 不会是从 PHP 7.0 开始的有效类/接口/特征名称,并且不会添加任何新键或保留字。 *熟悉 Zend 引擎的人会意识到你可以不返回任何内容,但如果你不返回任何内容,你正在分配的变量将被分配为 null,这使得它们在逻辑上是等效的。 php 中没有 void 的等效类型, 返回空值;可能符合您的要求,因为它没有任何类型,如 0 或任何其他值。注意:实际无效意味着没有返回。 @BeNice 我理解你的观点,无论如何我总结了以下考虑 Levi Morrison 作为可持续发展的一个实际问题:引入 void 作为可能的回报类型事实上,我们打破了 null 唯一可能类型是 null 的假设。 这样,应该返回void来进行null的类型检查,通过设计改变架构约束并导致向后兼容性混乱。 // your choice implies this comparison should be true: gettype(null) === void; 我认为在代码中不经常使用 null 的人将承担 void 类型实现。 虽然当你设置返回类型为void时你不能返回任何东西,但是你可以在函数中打印一些东西。 类似这样的事情。 <?php function foo(): void { print "OK"; return; } foo(); ?> 这将打印“OK”,但它不返回任何内容。 另外,需要注意的是,我们只能使用 void 作为返回类型。我们不能将它用作函数参数类型。 示例: function myfunction(void $param) { } 它将产生这个致命错误 // Fatal error: void cannot be used as a parameter type 此外,如果您使用OOP,则无法在继承期间更改void返回类型。 示例: class MyClass { public function myMethod(): void { } } class MyNewClass extends MyClass { public function myMethod(): array { } } 这将产生这个致命错误 Fatal error: Declaration of MyNewClass::myMethod(): array must be compatible with MyClass::myMethod()
Symfony:在 Doctrine 实体方法中使用返回类型提示的表单问题
我今天异常勤奋,决定返回类型提示我所有的 symfony 实体方法。所以: 我今天异常勤奋,决定返回类型提示我所有的 symfony 实体方法。所以: <?php Class User { private string $username; public method getUsername(): string {} } 一切都很好,直到我制作了一个表单来创建新用户: $user = new User(); $this->createForm(SignupType::class, $user); 当显示表单时,Symfony 会自动获取 User $user 这个新实例的属性。但由于它是一个新的实例化,它的 username 属性当然仍然是 null,这是一个不正确的返回类型,因为它需要是 string。 我应该: Symfony 实体中没有返回类型提示(meh); set $username = ''(但这有点违背了不允许空白的目的,我可以看到各种错误的演变);或 取消映射 symfony 表单上的字段 其他可能的解决方案... 如果实体属性不能是 null(并且您使用 PHP 7.1+),那么应用 可空返回类型声明听起来更像是一种肮脏而快速的解决方法,以维护实体和表单之间的直接数据绑定(使用 Symfony 表单组件)。 更好的全局方法(在我看来)是使用 DTO(数据传输对象)将表单数据绑定与 Doctrine 实体解耦,这是一个简单的 POPO(普通旧 PHP 对象)来包含您的形成数据。 使用 DTO 将允许您在 Doctrine 实体中维护严格的类型提示(不会丢失数据一致性),并将表单数据绑定(还有数据验证)与实体解耦。 DTO 允许重复使用并具有许多其他优点。 有关将 DTO 与 Symfony Forms 一起使用的一些有用参考: DEAD LINK 避免表单中的实体(作者:Iltar van der Berg) DEAD LINK 重新思考表单开发(作者 Iltar van der Berg) Symfony Forms 101(由 Form 组件的创建者 Bernhard Schussek) 不要在 Symfony 表单中使用实体。请改用自定义数据对象 实体应始终有效 如果您使用的是 PHP 7.0,它不支持可为 null 的返回类型声明,则第一个选项将是正确的(非 hacky)选择。如果您使用 PHP 7.1+,您可以定义一个 可空返回类型声明。 <?php class User { public function getUsername(): ?string {} }
PHP 7 支持资源的严格类型吗?如果是这样,怎么办? 例如: 声明(strict_types=1); $ch=curl_init(); 测试($ch); 功能测试(资源$ch) { } 该...
我可以检查 ReflectionType 是否是另一种类型的实例吗?
我想检查可调用对象的返回类型是否是另一种类型的实例。例如,假设我有: 扩展了 Animal 的 Pigeon 类。 函数 addSupplier() 接受一个可调用的 ar...
这个问题有点先发制人,因为 php 7 还没有发布。我很好奇在三元运算符的上下文中如何处理宇宙飞船运算符。 所以如果我有一个预宇宙飞船测试...
所以,我试图使用 strpos 来测试变量中是否存在字符串,但是在我使 if 语句起作用的所有尝试中,它都没有成功,所以我开始输出字符串并尝试...
说明: 我有一个二维数组: $array = InvApplication::model()->findall(array('order'=>'app_name')); 数组包含下一个元素:“app5”,如何避免它? 实际输出: 应用程序_n...
在 PHP7 中,在数组中创建子数组,其中两个键在两个元素中具有相同的值
我正在尝试采用这样的数组: 大批 ( [0] => 数组 ( [型号 ID] => 1 [会员 ID] => 25 [comment_text] => 我对此感觉良好 [创建...
我将网站从 php5.5 切换到 php7,现在有一个非常奇怪的错误:当我执行包含重定向的特定 ajax 请求时,服务器以 http 500 错误代码应答,同时返回...