Skip to content

Instantly share code, notes, and snippets.

View HavenShen's full-sized avatar
🚥
Programmer with a go out.

HavenShen HavenShen

🚥
Programmer with a go out.
View GitHub Profile
@HavenShen
HavenShen / uniqid.php
Last active May 27, 2016 05:05
Generating real unique identifiers with PHP
<?php
$storedIds = [
'abc',
'def',
// ... more stored Ids
];
do {
$id = uniqid('image',true);
@HavenShen
HavenShen / PasswordHash.php
Last active June 3, 2016 10:13
Password hashing helper.
<?php
class Hash
{
/**
* Cost for hashing.
*/
const COST = 10;
/**
@HavenShen
HavenShen / Preferences.sublime-settings
Last active January 2, 2017 08:53
Sublime Settings
{
"color_scheme": "Packages/Colorsublime - Themes/Facebook.tmTheme",
"highlight_line": true,
"save_on_focus_lost": true,
"always_show_minimap_viewport": true,
"trim_trailing_white_space_on_save": true,
"draw_white_space": "all",
"atomic_save": true,
"bold_folder_labels": false,
"show_full_path": true,
@HavenShen
HavenShen / Yii2ValetDriver.php
Last active September 3, 2020 14:40
Yii2 valet driver . `cp Yii2ValetDriver.php ~/.valet/Drivers/`
<?php
class Yii2ValetDriver extends ValetDriver
{
/**
* Determine if the driver serves the request.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
@HavenShen
HavenShen / tunnel-valet.sh
Created September 7, 2017 02:20 — forked from irazasyed/tunnel-valet.sh
Laravel Valet Share with Sub-Domain Support
# Tunnels to valet project with custom domain name.
# Uses ngrok.com with my personal github account and auth token
function tunnel_valet() {
HOST="${PWD##*/}"
DOMAIN=$(valet domain)
SUBDOMAIN="$HOST"
[[ "$1" ]] && SUBDOMAIN=$1;
for linkname in ~/.valet/Sites/*; do
if [[ "$(readlink $linkname)" = "$PWD" ]]
@HavenShen
HavenShen / FlattenMultidimensionalArray.php
Created May 17, 2018 02:56
Flattening a PHP multidimensional array.
<?php
$array = [
'personal' => [
'name' => 'Haven Shen',
'age' => 18,
],
'gift' => [
'name' => 'car',
'key' => [
@HavenShen
HavenShen / DependencyInversion.php
Last active May 17, 2018 08:30
Dependency Inversion Principle (DIP).
<?php
// Bad demo
$errorHandler = new ErrorHandler();
set_error_handler(function($errno, $errstr, $errfile, $errline) use ($errorHandler) {
return $errorHandler->error($errno, $errstr, $errfile, $errline);
});
set_exception_handler(function($exception) use ($errorHandler) {
@HavenShen
HavenShen / SingleResponsibility.php
Created May 17, 2018 08:28
Single Responsibility Principle (SRP).
<?php
// Bad demo
$user = new User();
$user->create([]);
class User
{
public function create(array $data)
@HavenShen
HavenShen / OpenClosedPrincipal.php
Created May 17, 2018 08:29
Open/Closed Principle (OCP).
<?php
// Bad demo
$paypal = new Paypal();
$paymentManager = new PaymentManager($paypal);
$paymentManager->process();
class PaymentManager
@HavenShen
HavenShen / LiskovSubstitution.php
Created May 17, 2018 08:30
Liskov Substitution Principle (LSP).
<?php
$car = new Car();
$driver = new Driver($car);
$driver->go();
class Driver
{