我过去经常使用PHPUnit的方法设置来为我的测试方法创建一个实例。但在拉勒维尔5.8我做不到
我尝试过这两种方法,它的工作为每个方法提供了一个实例,如下所示。
这样做是可行的:
<?php
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
use App\Service\MyService;
class MyServiceTest extends TestC
我正在使用PHP 7及更高版本中的新特性编写PHP类。所以,
我可以同时使用标量和返回类型声明吗?
如果是,那么同时使用它们是一种好的做法,还是应该避免使用?你能用例子解释一下吗?
下面是我的类的一个简单的示例结构:
declare(strict_types=1);
class ExampleClass {
public function exampleMethod(int $a, int $b): int {
return $a + $b;
}
}
我想用抽象方法创建一个抽象类,它允许返回类型中的抽象类型。在我的最后一个类中,我希望覆盖类型返回,类型实现最初声明的抽象类型。
<?php
abstract class A {
abstract public function test(A $foo): self;
}
class B extends A {
public function test(B $foo): self
{
return $this;
}
}
引发此编译错误:
Fatal error: Declaration of B::test(B $foo): B must
根据PHP文档对严格键入找到的
默认情况下,PHP会在可能的情况下将错误类型的值强制转换为预期的标量类型。例如,为期望字符串的参数提供整数的函数将得到一个类型为string的变量。
我很好奇是否有一种方法可以覆盖这个功能来定制强制的方式。
例如
function getResponse() : \Namespace\Response {
return []; // Ideally, this would be coerced into a Response object.
}
. . .
namespace Namespace;
class Response {
如果我声明我的函数返回类型,我必须在php 7中创建docblock吗?
例如,这样做是否足够:
public function findByLogin(string $login): User
{
return User::where(User::COL_LOGIN, $login)->first();
}
或者我应该这样做:
/**
* Find a user by its login.
*
* @param string $login
* @return User
*/
public function findByLogin(string $login): Use
Java中有一个功能,允许我将空值传递给参数中的方法,还可以返回空值:
class Test {
public List<String> method (String string) {
return null;
}
public void otherMethod () {
this.method(null);
}
}
但是,在PHP中,以下内容不起作用:
<?php
class SomeClass {
}
class Test {
public function method (): SomeC
我知道我不能在PHP中重载方法。而且,据我所知,类中的private方法对于扩展基类的类是不可见的。那为什么这不管用呢?
class Base {
private function foo($arg) {
print "Base $arg";
}
}
class Child extends Base {
public function foo() {
print "Child";
}
}
$c = new Child;
print $c->foo();
错误:
PHP Strict Standards: Decla
我猜“.必须符合.”来执行Liskov替代原则。但我不确定LSP是不是这么说的?
我有这样的密码:
class General
{
public static function create(): General
{
return new static;
}
public function doSomething()
{
echo get_class($this) . ' speaking!' . PHP_EOL;
}
}
class Specific extends General
{
当您在java和php的接口中创建相同的方法时,我注意到它们在接口上有很大的不同。
PHP:
interface Visitor
{
public function visit(Visitable $Visitable);
public function visit(Visitable2 $Visitable2); // this is wrong in php.
}
爪哇:
interface Visitor
{
public double visit(Visitable Visitable);
public double visit(Visitable2
我使用一个简单的if / and来检查一个值是否大于另一个值,并显示一条适当的消息。
看起来是这样的:
$.post('api/getHeaderBudgetvsTarget.php', {headercriteria:headercriteria}, function(data) {
let obj = JSON.parse(data);
let totalbudget = obj[0].budget; // set to 1600
let totaltarget = obj[0].target; // set to 300
if(
这是代码,它是一个简单的容器。
class Application
{
private $recipes;
private $instances;
public function configureCache(XXXXXXXX $closure) {
$recipes['cache'] = $closure;
}
public function getCache(): Cache {
if (empty($instances['cache'])) {
$instances['cache'] =