Skip to content

Instantly share code, notes, and snippets.

@eddiesshop
eddiesshop / Dockerfile
Created August 25, 2020 01:23
Super simple Docker Compose and config files for a PHP-FPM, NGINX setup
FROM php:7.4-fpm
WORKDIR /var/www/html
RUN apt-get update \
&& apt-get install --quiet --yes --no-install-recommends \
libzip-dev \
unzip \
&& docker-php-ext-install zip pdo pdo_mysql \
&& pecl install -o -f xdebug \
@eddiesshop
eddiesshop / ParentImportScript.php
Last active July 7, 2020 22:19
The classes in this gist are meant to display some OOP principles and a use case for the __destruct method to handle saving an error file should any database issues arise.
<?php
namespace App\Classes;
use Exception;
use PDO;
use PDOException;
abstract class ParentImportScript
{
@eddiesshop
eddiesshop / ChildImportScript.php
Created July 7, 2020 22:15
The classes in this gist are meant to display some OOP principles and a use case for the __destruct method to handle saving an error file should any database issues arise.
<?php
namespace App\Classes;
class ChildImportScript extends ParentImportScript
{
/**
* @return string
*/
protected function getTable(): string
@eddiesshop
eddiesshop / CsvFileHelper.php
Created July 7, 2020 18:02
Illustrating use of __destruct method to ensure server environment tidiness by discarding downloaded files after they've been used by your application.
<?php
namespace App\Classes;
class CsvFileHelper
{
/**
* @var resource $file
*/
protected $file;
@eddiesshop
eddiesshop / EloquentTableTruncator.php
Last active April 19, 2020 05:08
This gist will allow you to easily and quickly enable any class to output text to a console screen.
<?php
namespace App\Classes;
use App\Classes\Contracts\FlexibleConsoleOutputStyleInterface;
use App\Classes\Traits\FlexibleConsoleOutputterTrait;
use DB;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Collection;
@eddiesshop
eddiesshop / TestCase.php
Created April 10, 2020 23:01
Modified base TestCase.php class that's aware of a custom Custom Refresh Trait.
<?php
abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
protected function setUpTraits()
{
$uses = array_flip(class_uses_recursive(static::class));
@eddiesshop
eddiesshop / CustomRefreshDatabase.php
Created April 10, 2020 22:58
Multiple Database aware Database Refresh Trait
<?php
trait CustomRefreshDatabase
{
protected function refreshTestDatabase()
{
if (!RefreshDatabaseState::$migrated) {
$this->artisan('custom-migrate', [
' — refresh' => true,
@eddiesshop
eddiesshop / CustomMigrateCommand.php
Created April 10, 2020 22:55
Custom migration command to help facilitate testing and legacy database refresh.
<?php
namespace App\Console\Commands;
use DB;
use Illuminate\Console\Command;
use Illuminate\Database\DatabaseManager;
class CustomMigrateCommand extends Command
{
@eddiesshop
eddiesshop / BulkEloquentInserter.php
Last active July 19, 2021 09:49
A Laravel class to help execute bulk inserts in an optimized fashion.
<?php
namespace App\Classes;
use Doctrine\DBAL\Types\Types;
use Illuminate\Console\OutputStyle;
use Illuminate\Database\Connection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Query\Grammars\Grammar;
use Illuminate\Support\Arr;