标签: php-7

安装PHP 7 MongoDB客户端/驱动程序?

我非常渴望开始使用PHP 7但是有一个问题正在阻碍...我主要使用MongoDB作为数据库,问题是我不知道如何为PHP 7安装MongoDB驱动程序/客户端.

我目前的安装是PHP 5.6和我的Mac brew install php56-mongo上的诀窍.

任何人都可以推荐我如何在我的Mac或Ubuntu安装上工作?

在此先感谢,非常感谢!

php mongodb php-7 php-mongodb

33
推荐指数
4
解决办法
9万
查看次数

正确处理PHP 7返回类型的方法

我正忙着创建一个应用程序,我想使用PHP 7返回类型.现在我在php.net上读到,这是一个设计决定,null在定义返回类型时不允许返回.

处理这个问题的正确方法是什么?

一个选项是try ... catch块:

public function getMyObject() : MyObject
{ 
     return null;
}

try
{
    getMyObject();
}
catch(Exception $e)
{
    //Catch the exception
}
Run Code Online (Sandbox Code Playgroud)

我对此没有很好的感觉,因为我的代码将是一个巨大的尝试... catch块因为我需要为每个返回对象的方法编写一个try ... catch块.

空对象模式是一个很好的解决办法,但我不喜欢这个主意,以创建一个NullObject在我的应用程序的每个对象.有没有正确的方法来做到这一点?

php oop php-7

28
推荐指数
3
解决办法
1万
查看次数

PHP7的MongoDB扩展的状态是什么?

PHP7最近引起了很多关注,承诺出色的性能和更成熟的语言.版本7.0.0-alpha已经发布.我们刚刚开始重做我们的核心应用程序,它使用MongoDB作为数据源.

我想知道是否有任何开发正在进行兼容PHP7的MongoDB扩展?这有多远啊?还有其他选择吗?

mongodb php-7

27
推荐指数
2
解决办法
2万
查看次数

如何在系统中安装几个php版本时使用pecl安装特定的php版本的php扩展?

我根据本手册在Ubuntu上安装了PPA的php5.6和php7.0

http://lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu

但我没有得到如何使用peclphp5.6或php7.0 安装扩展.

例如,我已经安装的版本,libeventamqp在php5.6.

现在当我输入pecl install libevent和我的活动php版本是php7.0(使用update-alternatives --set php /usr/bin/php7.0),pecl returns message thatlibevent`已经安装.

但它只安装了php5.6(这个版本是活动的),现在我想为php7.0做.

哪些命令对我有帮助?

UPD

我发现这个命令用于将pecl切换到php7.0并将它们分发给可执行的bash脚本:

#!/bin/bash

sudo update-alternatives --set php /usr/bin/php7.0

sudo pecl config-set php_ini /etc/php/7.0/cli/php.ini
sudo pecl config-set ext_dir /usr/lib/php/20151012/
sudo pecl config-set bin_dir /usr/bin/
sudo pecl config-set php_bin /usr/bin/php7.0
sudo pecl config-set php_suffix 7.0
Run Code Online (Sandbox Code Playgroud)

并为php5.6

#!/bin/bash

sudo update-alternatives --set php /usr/bin/php5.6

sudo pecl config-set php_ini /etc/php/5.6/cli/php.ini
sudo pecl config-set ext_dir /usr/lib/php/20131226/
sudo pecl config-set …
Run Code Online (Sandbox Code Playgroud)

php ubuntu pecl php-extension php-7

27
推荐指数
3
解决办法
2万
查看次数

PHP 7更改为foreach:我是否仍然可以删除我正在迭代的数组中的项目?

PHP 7向后兼容的改变文件说,有关的foreach如下:

在默认的按值模式下使用时,foreach现在将对正在迭代的数组的副本进行操作,而不是对数组本身进行操作.这意味着在迭代期间对数组所做的更改不会影响迭代的值.

我试图理解这意味着什么,我的主要问题是这个代码在PHP 7中是否与PHP 5.6中的相同?

foreach($array as $elementKey => $element) {
    if ($element == 'x') {
        unset($array[$elementKey]);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的两个问题是:

  1. 这段代码还能用吗?

  2. 如果是这样,你能解释一下(可能通过例子)PHP 7中的这一新变化意味着什么吗?

编辑

我一直在重读这份文件声明.我认为这意味着,如果您更改数组中较低项的值,那么当您在迭代中找到这些项时,这些更改将不会存在.例:

$array = ['x', 'y', 'z'];

$new = [];

foreach($array as $element) {
    if ($element == 'x') {
        $array[2] = 'a';
    }

    $new[] = $element;
}

print_r($new);
Run Code Online (Sandbox Code Playgroud)

但是,当我运行这个例子时,它似乎没有显示PHP版本的任何差异(虽然我以前从未使用过这个工具,所以我不确定它是如何工作的).

我意识到,如果我通过参考来做,我会得到一个a新的.否则我不会.但这两个版本似乎都是这种情况.

我真正需要知道的是什么是不兼容性(例如)?

编辑2

@NikiC 建议答案链接提供了我正在寻找的故事的其余部分:

在大多数情况下,这种变化是透明的,除了更好的性能外没有其他影响.但是有一种情况会导致不同的行为,即数组事先是参考的情况:

$array = [1, 2, 3, 4, 5]; …
Run Code Online (Sandbox Code Playgroud)

php php-7

26
推荐指数
1
解决办法
1万
查看次数

PHP 7和严格的"资源"类型

PHP 7是否支持严格的资源类型?如果是这样,怎么样?

例如:

    declare (strict_types=1);

    $ch = curl_init ();
    test ($ch);

    function test (resource $ch)
    {

    }
Run Code Online (Sandbox Code Playgroud)

以上将给出错误:

致命错误:未捕获的TypeError:传递给test()的参数1必须是资源的实例,给定资源

var_dump on $ch显示它是资源(4,curl),手册说curl_init ()返回资源.

是否可以严格键入test()功能来支持$ch variable

php php-7

26
推荐指数
2
解决办法
8500
查看次数

找不到PHP可执行文件.安装PHP 7并将其添加到PATH或设置php.executablePath设置

我正在运行Windows 10新副本,我刚刚安装了visual studio代码.我正在尝试使用VS Code开发一个PHP项目.但我在设置环境方面遇到了麻烦.

我看到一篇博文,我下载了PHP 7的二进制文件并将其放在"C"驱动器中.然后我也设置路径变量.

但是,我仍然遇到这个问题.

在此输入图像描述

php-7 visual-studio-code

26
推荐指数
4
解决办法
6万
查看次数

使用分块编码对PHP7的POST请求无法正确返回结果

我正在从客户端发送POST请求(使用curl和自定义nodejs脚本测试)并且没有正确地返回响应.整个过程适用于PHP 5.6.

环境

整个事情尽可能减少:

我正在使用的最小nginx站点配置:

server {
  listen 80;
  server_name localhost;
  location / {
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_pass  unix:/var/run/php/php7.0-fpm-api.sock;
    fastcgi_param SCRIPT_FILENAME /vagrant/index.php;
  }
}
Run Code Online (Sandbox Code Playgroud)

示例PHP脚本来自/vagrant/index.php:

<?php
echo str_repeat('.', 512);
flush(); // not necessary, only due testing
Run Code Online (Sandbox Code Playgroud)

我正在使用的卷曲电话: curl -XPOST http://localhost/ -H "Transfer-Encoding: chunked" -d ''

我正在使用的NodeJS脚本:

'use strict';

var http = require('http');
var url = require('url');

var uri = url.parse(process.env.URL);
var options = …
Run Code Online (Sandbox Code Playgroud)

php chunked-encoding php-7

25
推荐指数
1
解决办法
1862
查看次数

Windows上的PHP7 Memcache?

有没有人知道在Windows上支持PHP7的Memcache版本?

Memcache非常适合PHP 5.6(在Windows上),但我找不到PHP7的版本.

windows memcached php-7

25
推荐指数
3
解决办法
3万
查看次数

PHP 7中的匿名类

我在哪里可以使用,我应该使用PHP 7中提供的匿名类?我找不到他们的用例.

$message = (new class() implements Message {
public function getText() { return "Message"; }});
Run Code Online (Sandbox Code Playgroud)

php anonymous-class php-7

23
推荐指数
3
解决办法
1万
查看次数