1. Go to this page and download the library: Download shrikeh/php-coding-bible library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
shrikeh / php-coding-bible example snippets
# Bad
class Refund
{
public function __construct(private float $amount)
{}
}
# Good
final class Refund
{
public function __construct(private float $amount)
{
if (0 >= $amount) {
// Refunds must be above zero.
throw RefundNotPositiveException::create($amount);
}
}
}
final class PdfPath
{
public static function fromString(string $path): self
{
return new self (new SplFileObject($path));
}
public static function fromFileInfo(SplFileInfo $fileInfo): self
{
return new self($fileInfo->openFile());
}
private function __construct(private SplFileObject $pdfPath)
{
if (!$this->pdfPath->isReadable()) {
// ...
}
}
}
namespace Shrikeh\Customer;
final class ContactDetails
{
public function __construct(
private Address $address,
private EmailAddress $emailAddress,
private TelephoneNumber $telephoneNumber,
) {
}
// ... getters
}
# Bad
$address = $customer->getProfile()->getHomeAddress();
# Good
$address = $customer->getHomeAddress();
final class DbalCustomerRegistryRepository
{
//...
public function registerCustomer(Customer $customer): void
{
try {
$this->client->save($customer->getName());
} catch (ClientException $exc) {
throw UnableToRegisterCustomerException::create($customer, $exc);
}
}
}
final class Foo
{
public function setBar(string $bar): self
{
return new self($bar);
}
}
final class Foo
{
public function __construct(
public readonly string $bar
) {
}
}
$foo = new Foo('sample string');
echo $foo->bar; // sample string
final class Foo
{
private string $bar;
public function __construct(
string $bar
) {
$this->bar = $bar;
}
public function getBar(): string
{
return $this->bar;
}
}
$foo = new Foo('sample string');
echo $foo->getBar(); // sample string
final readonly class Foo
{
public function __construct(
public string $bar
) {
}
}
interface CustomerDetailsRepository
{
public function fetchCustomerDetails(CustomerId $customerId): CustomerDetails;
}
final readonly class DBCustomerDetailsRepository implements CustomerDetailsRepository
{
public function __construct(private Client $client, private CustomerDetailsFactory $customerDetailsFactory)
{
}
public function fetchCustomerDetails(CustomerId $customerId): CustomerDetails
{
try {
$row = $this->queryCustomerDetails($customerId);
return $this->customerDetailsFactory->build($row);
} catch (SomeClientException $exc) {
// ... throw a Repository exception
}
}
private function queryCustomerDetails(): SomeDbRow
{
//...
}
}
final class AwesomeAlgorithm
{
public function calc(float $marketVolatility, float $weight): float
{
return (2.17 ** $marketVolatility) - (1 - $weight);
}
}
final class AwesomeAlgorithm
{
private const LONG_TERM_VOLATILITY_YIELD = 2.17;
public function calc(float $marketVolatility, float $weight): float
{
return (self::LONG_TERM_VOLATILITY_YIELD ** $marketVolatility) - (1 - $weight);
}
}
class HsSomeBankCashTx extends DumbActiveRecord
{
//...
public const TLA_CODE_TRANSFER = 'TFR';
public const TLA_CODE_DIRECT_DEBIT = 'DDR';
public const TLA_BILL_PAYMENT = 'BBP';
public const TLA_CODE_BANK_GIRO_CREDIT = 'BGC';
public const TLA_CODE_FASTER_PAYMENT_CREDIT = 'FPC';
public const TLA_CODE_FASTER_PAYMENT_DEBIT = 'FP';
public const TLA_CREDIT = 'CR';
public const TLA_CODE_FASTER_PAYMENT_TRANSFER = 'FT';
public const TLA_STANDING_ORDER = 'STO';
//...
enum SomeBankTlaCode: string
{
case Transfer = 'TFR';
case DirectDebit = 'DDR';
case BillPayment = 'BBP';
case BankGiroCredit = 'BGC';
case FasterPaymentCredit = 'FPC';
case FasterPaymentDebit = 'FP';
case Credit = 'CR';
case FasterPaymentTransfer = 'FT';
case StandingOrder = 'STO';
}
function myFunc(string $str): void
{
echo $str;
}
myFunc(123);
declare(strict_types=1);
function myFunc(string $str): void
{
echo $str;
}
myFunc(123);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.