考虑以下代码:
<?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”
将表达式的结果赋值给一个带注释的变量可以解决警告,但会引入一个“冗余”变量!
/** @var ?self $redundant */
$redundant = (new self())->newQuery()->firstWhere('color', '=', $color);
return $redundant;
Run Code Online (Sandbox Code Playgroud)
那么,在 PhpStorm 中是否有一种方法可以return明确地为语句表达式的值强制执行内联类型注释Car|null,而不引入冗余变量或指定所有预期的返回类型?
我的 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 和所有内容?有没有更好的解决方案?)
*如果您substitution在RewriteRulewith 中开始参数,https://它将导致重定向(就像使用[R]标志的外部重定向一样)。这将导致浏览器发出新请求,从而更改地址栏中显示的 URL。
另外,请考虑我的应用程序在共享主机上,因此我可能无法访问某些低级功能。
我有一个CustomScrollView和SliverAppBar一些条子。我想在上面覆盖一些图形,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)