for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Sandbox\Demos;
use Redbox\Hooks\Filters;
require 'autoload.php';
class Worker
{
public function prependChars($text = '')
return '@@' . $text;
}
public function appendChars($text = '')
return $text . '@@';
public function execute()
Filters::addFilter('manipulate_string', [$this, 'prependChars']);
array($this, 'prependChars')
array<integer,this<Sandb...Worker>","1":"string"}>
string
It seems like the type of the argument is not accepted by the function/method which you are calling.
In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.
We suggest to add an explicit type cast like in the following example:
function acceptsInteger($int) { } $x = '123'; // string "123" // Instead of acceptsInteger($x); // we recommend to use acceptsInteger((integer) $x);
Filters::addFilter('manipulate_string', [$this, 'appendChars']);
array($this, 'appendChars')
return Filters::applyFilter('manipulate_string', 'This is a text');
$worker = new Worker;
$out = $worker->execute();
/**
* The result should be:
*
* Result: @@This is a text@@
*/
echo "Result: " . $out . "\n";
* This is not required in your code. I have to add this to reset my unit tests.
Filters::removeAllFilters('manipulate_string');
It seems like the type of the argument is not accepted by the function/method which you are calling.
In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.
We suggest to add an explicit type cast like in the following example: