小编goo*_*ser的帖子

PhpStorm:有没有办法使用内联 PHPDoc 注释在 return 语句上强制执行类型?

考虑以下代码:

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Car extends Model
{
    public static function getTheFirstCar(string $color): ?self
    {
        /** @var ?self */ // <-- Doesn't apply! Is there any alternative?
        return (new self())->newQuery()->firstWhere('color', '=', $color);
    }
}
Run Code Online (Sandbox Code Playgroud)

代码工作正常;尽管如此 PhpStorm 抱怨:

返回值应为“ Car|null”,返回
\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model

PhpStorm PHPDoc 返回语句上的类型注释

将表达式的结果赋值给一个带注释的变量可以解决警告,但会引入一个“冗余”变量!

/** @var ?self $redundant */
$redundant = (new self())->newQuery()->firstWhere('color', '=', $color);
return $redundant;
Run Code Online (Sandbox Code Playgroud)

那么,在 PhpStorm 中是否有一种方法可以return明确地为语句表达式的值强制执行内联类型注释Car|null,而不引入冗余变量或指定所有预期的返回类型?

php phpdoc phpstorm laravel type-annotation

8
推荐指数
1
解决办法
349
查看次数

如何启用在子域中工作的 Laravel 应用程序来处理来自另一个子域的请求,而无需更改浏览器中的 URL?

我的 Laravel 应用程序在admin子域中工作:

admin.mysite.com
Run Code Online (Sandbox Code Playgroud)

我想让我的 Laravel 应用程序也能处理来自另一个子域的请求; client.mysite.com, 例如。我正在尝试为此利用Apache 重写功能;因此,我.htaccess“客户端”子域的主目录中创建了以下文件:

# file: /client/public/.htaccess
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^/?([a-zA-Z][a-zA-Z0-9]*)/?(.*)$  https://admin.mysite.com/bu/$1/$2 [L,NC]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

这有效,但我绝对不希望在浏览器中更改 URL。为此,我尝试了[P]标志但没有成功。最终,我删除了该https://部分以避免重定向*:

RewriteRule ^/?([a-zA-Z][a-zA-Z0-9]*)/?(.*)$  admin.mysite.com/bu/$1/$2 [L,NC]
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

由于可能的配置错误,请求超出了 10 个内部重定向的限制。如有必要,请使用“LimitInternalRecursion”来增加限制。使用“LogLevel debug”获取回溯。

如何修复错误并使其正常工作?而且,这是完成这样一项任务的正确方法吗?(它是否适用于 POST 和所有内容?有没有更好的解决方案?)


*如果您substitutionRewriteRulewith 中开始参数,https://它将导致重定向(就像使用[R]标志的外部重定向一样)。这将导致浏览器发出新请求,从而更改地址栏中显示的 URL。

另外,请考虑我的应用程序在共享主机上,因此我可能无法访问某些低级功能。

apache subdomain .htaccess laravel

5
推荐指数
1
解决办法
125
查看次数

如何在 Flutter 中的 SliverAppBar 上叠加可滚动的 Sliver?

我有一个CustomScrollViewSliverAppBar一些条子。我想在上面覆盖一些图形,SliverAppBar并让它们与列表的其余部分一起滚动。

这是我一直在使用的代码:

import 'package:flutter/material.dart';

void main() async {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: SliverTest(),
    );
  }
}

class SliverTest extends StatefulWidget {
  const SliverTest({super.key});

  @override
  State<SliverTest> createState() => _SliverTestState();
}

class _SliverTestState extends State<SliverTest> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: CustomScrollView(
          slivers: [
            SliverAppBar(
              expandedHeight: 350.0,
              floating: false,
              pinned: true,
              flexibleSpace: FlexibleSpaceBar(
                background: Container(
                  color: …
Run Code Online (Sandbox Code Playgroud)

scroll dart flutter flutter-sliver flutter-sliverappbar

5
推荐指数
2
解决办法
729
查看次数