Skip to content

Instantly share code, notes, and snippets.

View amochohan's full-sized avatar

Amo Chohan amochohan

View GitHub Profile
<?php
class CalculatorTest extends TestCase
{
/** @test */
public function it_adds_two_numbers()
{
$calculator = new Calculator();
$total = $calculator->sum(1, 2);
$this->assertSame(3, $total);
@amochohan
amochohan / example.php
Created October 27, 2017 08:09
Generating a timeseries - Carbon vs native PHP
<?php
$timeSeries = [];
// Using Carbon
$start = \Carbon\Carbon::create(1983, 9, 1, 0, 0, 0);
$end = \Carbon\Carbon::create(2050, 1, 1, 0, 0,0);
while ($start->format('Y-m-d') < $end->format('Y-m-d')) {
$start->addDay();
@amochohan
amochohan / pick.php
Created April 25, 2017 10:39
Performing a partial update
<?php
MyController extends Controller
{
public function store(Request $request)
{
$interaction = Interaction::create($this->pick((new Interaction)->getFillable(), $request);
}
/**
@amochohan
amochohan / retry.php
Created April 11, 2017 13:18
Retrying a task
<?php
try($attempts = 1, $wait = 0) {
// Try $attempts times to do something, waiting $wait milliseconds between trys
// Within the try block scope, we have access to the $attempts and $wait arguments
$this->log('Doing something important attempt: ' . $attempt);
}
catch (Exception $e) {
// Do something
}
@amochohan
amochohan / ordering-eloquent-results.php
Created March 6, 2017 12:03
Ordering Eloquent results
<?php
// Instead of using the following code
$builder = User::with('somerelationship');
if ($request->has('order_by')) {
$builder->orderBy($request->input('order_by'));
}
$users = $builder->get();
@amochohan
amochohan / example.php
Created March 6, 2017 09:53
Model factories - making relationships
<?php
$factory->define(App\User::class, function (Faker\Generator $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
@amochohan
amochohan / .php_cs.dist.php
Created February 21, 2017 16:43
PHP code style rules
<?php
return PhpCsFixer\Config::create()
->setRiskyAllowed(true)
->setRules([
'@Symfony' => true,
'@Symfony:risky' => true,
'array_syntax' => ['syntax' => 'short'],
'combine_consecutive_unsets' => true,
@amochohan
amochohan / yahoo-finance-chart-options.md
Created February 3, 2017 15:50
Yahoo finance chart options
@amochohan
amochohan / convert-sqlite-to-mysql-dump.md
Created October 6, 2015 09:28
Convert an SQLite database to MySQL dump - fix malformed database error

Fix a malformed SQLite database

From time to time, when running integration tests you'll notice that tests that worked previously have stopped working. Trying to modify the schema of an SQLite database is throwing an error. The dreaded:

Error (11) malformed database

Fortunately, there's quite an easy fix. Simply head to the command line, and use the following commands:

sqlite3 yourdatabase.sqlite

@amochohan
amochohan / array_merge_sum.php
Created June 5, 2015 15:50
PHP merge two arrays and sum the total of a common indexes
<?php
$balanceA=array(
"USD" => 10000,
"GBP" => 20000
);
$balanceB=array(
"USD" => 10000,
"GBP" => 20000,
"JPY" => 100