2017 © Pedro Peláez
 

library class-accessor

provide type consrtrained accessor/mutator generation trait

image

dooaki/class-accessor

provide type consrtrained accessor/mutator generation trait

  • Wednesday, August 10, 2016
  • by do-aki
  • Repository
  • 1 Watchers
  • 1 Stars
  • 15 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

dooaki\ClassAccessor

Build Status Coverage Status, (*1)

Requirements

  • PHP 5.5 or later

Installation

you can install run the command., (*2)

composer require dooaki/class-accessor

Synopsis

<?php
use dooaki\ClassAccessor\Accessor;

class Person
{

    private $first_name;
    private $age;

    use Accessor {
        _helperStringOrNullGetter as public getFirstName;
        _helperStringOrNullSetter as public setFirstName;
        _helperIntGetter as public getAge;
        _helperIntSetter as public setAge;
    }

    public function show()
    {
        echo "{$this->first_name} ({$this->age})";
    }
}

$p = new Person();
$p->setFirstName('john');
$p->setAge(23);

var_dump($p->getFirstName()); // string(4) "john"
var_dump($p->getAge()); // int(23)
$p->show(); // john (23)


$p->setFirstName(null); // ok name is nullable
$p->setAge("23"); // TypeError exception!

Description

\dooaki\ClassAccessor\Accessor trait generates type constrained getter/setter for your class., (*3)

you can use _helper(Int|Float|String|Bool|Array|Callable|Resource)(OrNull)?(Getter|Setter) method., (*4)

make_accessor command

you can create any typed accessor., (*5)

command example

vendor/bin/make_accessor -n My\DateAccessor -c DateTimeInterface -c DateInterval -f DateAccessor.php

options

  • -n name of making trait
  • -c class or interface for accessor method
  • -f output file

code example (using)

<?php

require __DIR__ . '/vendor/autoload.php';
require __DIR__ . '/DateAccessor.php';

use My\DateAccessor;
use dooaki\ClassAccessor\Accessor;

class DelayedDateTime {

    /** @var DateTimeInterface  */
    private $date_time;

    /** @var  DateInterval */
    private $delay;

    use Accessor, DateAccessor {
        _helperDateTimeInterfaceObjectGetter as public getDateTime;
        _helperDateTimeInterfaceObjectSetter as public setDateTime;
        _helperDateIntervalObjectOrNullGetter as public getDelay;
        _helperDateIntervalObjectOrNullSetter as public setDelay;
    }

    public function __construct(DateTime $date_time)
    {
        $this->date_time = $date_time;
    }

    public function get()
    {
        $retval = clone $this->date_time;
        if ($this->delay) {
            $retval->sub($this->delay);
        }
        return $retval;
    }
}

$m = new DelayedDateTime(new DateTime());
$m->setDelay(new DateInterval('P1D'));

echo $m->get()->format('Y-m-d H:i:s');

Thanks

this module is inspired by MagicSpice, (*6)

Author

do_aki, (*7)

License

MIT License, (*8)

The Versions

10/08 2016

dev-traversable

dev-traversable

provide type consrtrained accessor/mutator generation trait

  Sources   Download

MIT

The Requires

 

The Development Requires

by do_aki

accessor mutator

10/08 2016

dev-master

9999999-dev

provide type consrtrained accessor/mutator generation trait

  Sources   Download

MIT

The Requires

 

The Development Requires

by do_aki

accessor mutator

07/07 2016

1.1.0

1.1.0.0

provide type consrtrained accessor/mutator generation trait

  Sources   Download

MIT

The Requires

 

The Development Requires

by do_aki

accessor mutator

05/07 2016

1.0.1

1.0.1.0

provide type consrtrained accessor/mutator generation trait

  Sources   Download

MIT

The Requires

 

The Development Requires

by do_aki

accessor mutator