调试遗留代码,我有一个奇怪的问题.遗留代码正在转移到PHP 7.2.我不知道它最初是为哪个版本的PHP编写的,但它确实可以在PHP 5.6中运行.
以下是我的问题示例......
$variable = '';
$variable['key'] = 'Hello World!';
echo $variable['key'] // H
Run Code Online (Sandbox Code Playgroud)
当我回显时$variable['key']
,它只从值中获取第一个字符.我现在知道它是因为$variable
最初声明为字符串.
但为什么这在PHP 5.6中有效?如果不拖曳数千行代码,我该怎么做才能在7.2中完成这项工作?
是否有strict_types
我可以使用的指令?
在我的网站上,用户可以在标准文本输入字段中输入 HTTP 状态代码。即,200、400、404、403 等...
有没有办法检查HTTP状态代码是否有效。例如,如果用户输入“123”,它将返回 false。除了做一个大的丑陋的 if 或 switch 语句之外,我目前想不出或找到其他方法。
在我的应用程序中,我有一个卖方页面,其中显示该卖方列出的产品。我正在使用asyncData获取页面所需的所有数据(对于SEO更好)
asyncData ({params, app, error }) {
return app.$axios.$get(`/seller/${params.username}`).then(async sellerRes => {
let [categoriesRes, reviewsRes, productsRes] = await Promise.all([
app.$axios.$get(`/categories`),
app.$axios.$get(`/seller/${params.username}/reviews`),
app.$axios.$get(`/seller/${params.username}/products`)
])
return {
seller: sellerRes.data,
metaTitle: sellerRes.data.name,
categories: categoriesRes.data,
reviewsSummary: reviewsRes.summary,
products: productsRes.data,
}
}).catch(e => {
error({ statusCode: 404, message: 'Seller not found' })
});
},
Run Code Online (Sandbox Code Playgroud)
尽管此方法可以完成预期的工作,但我还是忍不住认为自己做错了。
导航到页面时,nuxt进度栏显示两次(这很奇怪)。
我一直在搜索一段时间,以尝试在asyncData中查找多个请求的示例,但是那里并没有太多内容。
也许我不应该在asyncData中调用多个请求?
在我的Laravel 5.8应用程序中,我有许多API路由返回分页结果。如果我向我的API请求附加了以下查询字符串,则可以禁用分页。
http://api.test/users/?no_paginate=1
Run Code Online (Sandbox Code Playgroud)
我的问题是...如何禁止在某些路线上使用no_paginate?我希望在请求类中进行一些验证,但是我在文档中找不到任何内容。
我有以下......
$people = array(5, 2, 9, 6, 11);
$people_collection = People::find($people);
Run Code Online (Sandbox Code Playgroud)
但是当我转储并死掉$people_collection
IDC ASC订购的集合时,我如何按照与$people
数组相同的顺序保存集合?
我目前正在开发我的PHP SDK以与REST API进行交互.假设API可以创建一个"汽车"模型.要创造一辆车,我会写这样的东西......
$car = $api->create('car', array(
'wheels' => 6,
'color' => 'blue'
));
Run Code Online (Sandbox Code Playgroud)
如果其他开发人员下载我的SDK并尝试错误地创建汽车模型并忘记包含必需的参数.如何通过SDK抛出异常以通知开发人员缺少参数,除了他们看到PHP错误Warning: Missing argument 1 for BMW::create()
,其中不包含许多细节.
我有一个看起来像这样的查询字符串......
let badString = "dogs=c,b,a&cats=z,y,x";
使用vanilla javascript或lodash框架,我试图将键和值重新排列成字母顺序,所以它最终会像......
let goodString = "cats=x,y,z&dogs=a,b,c"
php ×5
laravel ×2
laravel-5 ×2
eloquent ×1
javascript ×1
laravel-5.2 ×1
laravel-5.8 ×1
legacy-code ×1
lodash ×1
nuxt ×1
nuxt.js ×1
php-5.6 ×1
php-7.2 ×1
vue.js ×1
vuejs2 ×1