我在将本地开发环境升级到 php8 后阅读了这篇文章。
并在我的班级中实现它,例如:
<<Attribute('foo')>>
public function index()
{
$posts = (new Post)->get()->withMany('image');
return $this->app()->view('index', compact('posts'));
}
Run Code Online (Sandbox Code Playgroud)
它返回错误。
语法错误,意外标记“<<”,需要“function”或“const”
在 php8 中这样做的真正正确之处是什么?我错过了什么吗?
我最近开始将我的项目从 PHP 7.4 升级到 8.0,我目前正在尝试将我所有的 Docker 镜像也重建到 PHP 8.0,以便我的镜像和我的环境保持一致。
在这次升级之前,我正在使用php:7.4, 在我的 Dockerfile 中,我有这一行用于扩展安装:
RUN docker-php-ext-install mysqli pdo pdo_mysql json
Run Code Online (Sandbox Code Playgroud)
今天,同样的命令工作EXCEPT为JSON,在那里我得到以下错误:
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20200930/
cp: cannot stat 'modules/*': No such file or directory
make: *** [Makefile:87: install-modules] Error 1
Run Code Online (Sandbox Code Playgroud)
我在 Stack Overflow 或一般的网络上找不到其他有此问题的人,所以...名称已更改,还是不再需要?或者它甚至是正常的?
<div class="form-group col-md-8" id="my" style="display: none;">
<label>Choose Vpn Server</label>
<div class="row">
<?php
$sqlUrl4 = "SELECT * FROM vpn_networks";
$result4 = myQuery($sqlUrl4);
while ($row4 = myFetchArray($result4)) {
?>
<div class="col-sm-4 text-center">
<label>
<input type="checkbox" name="vpn_network[]" value="<?php echo $row4['id'];?>" id="iptv" />
<?php echo $row4['title'];?>
</label>
</div>
<?php
}
?>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
$vpn1 =implode(',', $_POST['vpn_network']?? '');
Run Code Online (Sandbox Code Playgroud)
错误:
Fatal error: Uncaught TypeError: implode(): Argument #2 ($array) must
be of type ?array, string given in
C:\xampp\htdocs\ideology\partnerprocess.php:22 Stack trace: #0
C:\xampp\htdocs\ideology\partnerprocess.php(22): implode(',', '') #1
{main} thrown …Run Code Online (Sandbox Code Playgroud) 将 PHP 从 7.4 更新到 8.0 后,我composer update在现有项目上运行,出现如下错误:
- acme/some-package[1.0.0, ..., 1.4.0] 需要 php ^5.6.4 || ^7.0 -> 您的 php 版本 (8.0.3) 不满足该要求。
这是什么意思,我该如何解决?
(这是一个参考答案,旨在涵盖一个经常遇到的问题。场景只是一个例子。另见:“如何解释 Composer 的错误日志? ”)
我看到一些帖子让 Imagick 使用 Docker 镜像在 php 8 上工作,并从 Imagick 存储库提交。Imagick 尚未正式支持 php 8,因为它没有通过其他测试,但可以按原样在 php 8 上运行。
需要一个指针来让它在我的本地工作,然后到 Laravel Vapor。这应该在 Dockerfile 中起作用,但docker-php-ext-install在运行时找不到sail build
更新:这适用于 Vapor。staging.dockerfile 应该如下所示:
FROM laravelphp/vapor:php80
ARG IMAGICK_LAST_COMMIT='448c1cd0d58ba2838b9b6dff71c9b7e70a401b90'
RUN mkdir -p /usr/src/php/ext/imagick \
&& curl -fsSL https://github.com/Imagick/imagick/archive/${IMAGICK_LAST_COMMIT}.tar.gz | tar xvz -C /usr/src/php/ext/imagick --strip 1 \
&& sed -i s/'#define PHP_IMAGICK_VERSION "@PACKAGE_VERSION@"'/'#define PHP_IMAGICK_VERSION "3.4.5rc"'/ /usr/src/php/ext/imagick/php_imagick.h \
&& docker-php-ext-configure imagick \
&& docker-php-ext-install imagick
COPY . /var/task
Run Code Online (Sandbox Code Playgroud)
所以我仍然面临的问题是将其纳入我的本地。使用帆构建
我想预览 pdf,但更新到 php 8 和一些软件包更新后打不开。
这段代码来自 laravel
function konversi($x)
{
$x = abs($x);
$angka = array("", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam", "Tujuh", "Delapan", "Sembilan", "Sepuluh", "Sebelas");
$temp = "";
> if ($x < 12) {// Notif from laravel in this line
$temp = " " . $angka[$x];
} else if ($x < 20) {
$temp = konversi($x - 10) . " Belas";
} else if ($x < 100) {
$temp = konversi($x / 10) . " Puluh" . konversi($x …Run Code Online (Sandbox Code Playgroud) 我试图使用函数 handleContact 调用名为 ContactController 的类,但出现以下错误:call_user_func([ContactController::class, 'handleContact']);
致命错误:未捕获错误:无法静态调用非静态方法 app\controllers\ContactController::handleContact()
<?php
namespace app\controllers;
class ContactController {
public function handleContact() {
return 'Hello World';
}
}
Run Code Online (Sandbox Code Playgroud) 最近我们将应用程序升级到 PHP8。
由于PHP8引入了属性并doctrine/orm从版本开始支持它们,2.9因此利用此功能增量(即不是一次所有实体)将实体元数据更新为属性格式似乎是个好主意。
为此,我需要以某种方式注册两者Doctrine\ORM\Mapping\Driver\AnnotationDriver并Doctrine\ORM\Mapping\Driver\AttributeDriver解析元数据。
棘手的部分是为一组使用注释或属性修饰的实体注册两个解析器。从这一点来看,Doctrine\ORM\Configuration我所需要的似乎是不可能的。
我是否正确(假设这无法合理实现)或者可以通过某种不太黑客的方式来完成吗?
我知道这些error_reporting值的含义。我知道-1意思是“显示全部”,0意思是“不显示”。
但是当用户没有指定任何内容时,没有任何地方指定默认设置的值是什么。
尝试phpinfo()我看到
...
Configuration File (php.ini) Path => /usr/local/etc/php
Loaded Configuration File => (none)
...
Run Code Online (Sandbox Code Playgroud)
那么,鉴于没有php.ini加载,默认值/行为是什么error_reporting?
我有一个遗留项目正在迁移到 PHP 版本 8,但新的 PHP 版本不支持基于类名命名的类构造函数,这在旧版本中有效。
我希望这样的课程继续工作:
class Person {
private $fname;
private $lname;
// Constructor same class name here
public function Person($fname, $lname) {
$this->fname = $fname;
$this->lname = $lname;
}
// public method to show name
public function showName() {
echo "My name is: " . $this->fname . " " . $this->lname . "<br/>";
}
}
// creating class object
$john = new Person("John", "Wick");
$john->showName();
Run Code Online (Sandbox Code Playgroud)