pinekta/geta-setta

此库 'geta-setta' 提供获取方法和设置方法。

0.9.0 2018-08-27 00:24 UTC

This package is auto-updated.

Last update: 2024-09-29 05:42:08 UTC


README

Build status Coverage Status License PHP Version Packagist Version

此库 'geta-setta' 提供获取方法和设置方法。

当调用不可访问的方法时,使用魔法方法 __call,如果方法名的前缀是 set,则将参数值设置到属性中。如果方法名的前缀是 get,则返回属性的值。

如果没有前缀,如果有参数,则将参数值设置到与方法名相同的属性中。如果没有参数,则返回与方法名相同的属性的值。

geta-setta 需要 PHP >= 5.4.0。

安装

$ composer require pinekta/geta-setta

用法

<?php

namespace Foo\bar;

use Pinekta\GetaSetta\AccessorAvailable;

class AudioPlayer
{
    use AccessorAvailable;
    private $disc;
    private $tune;
}

$audioPlayer = new AudioPlayer();
$audioPlayer->setDisc('Editors [The Back Room]')
            ->setTune('Bullets');
echo $audioPlayer->getDisc();            // "Editors [The Back Room]" outputs
echo $audioPlayer->getTune();            // "Bullets" outputs

$audioPlayer->disc('Can [Monster Movie]');
            ->tune('You Doo Right');
echo $audioPlayer->disc();               // "Can [Monster Movie]" outputs
echo $audioPlayer->tune();               // "You Doo Right" outputs

高级用法

集体设置值

class AudioPlayer
{
    use AccessorAvailable;
    private $disc;
    private $tune;
}

$audioPlayer = new AudioPlayer();
// Case array
$audioPlayer->fill([
    'disc' => 'Number Girl [SAPPUKEI]',
    'tune' => 'ZEGEN VS UNDERCOVER',
]);

// Case object
$set = new \stdClass();
$set->disc = 'Joy Division [Unknown Pleasures]';
$set->tune = 'New Dawn Fades';
$audioPlayer->fill($set);

不可写属性

如果您想排除某些属性(如 'id')的写入,请在调用类中添加 $gsUnwritableProps 属性。

class Disc
{
    use AccessorAvailable;
    protected static $gsUnwritableProps = ['id'];
    private $id;
    private $name;
    private $size;
}

$disc = new Disc();
$disc->setId(100);                // BadMethodCallException occurs

如果存在一些属性在写入时很麻烦,请使用它。

不可访问属性

如果您想排除某些属性,请在调用类中添加 $gsInaccessibleProps 属性。

class AudioPlayer
{
    use AccessorAvailable;
    protected static $gsInaccessibleProps = ['tune'];
    private $disc;
    private $tune;
}

$audioPlayer = new AudioPlayer();
$audioPlayer->setDisc('Captain Beefheart [Trout Mask Replica]');
echo $audioPlayer->getDisc();            // "Captain Beefheart [Trout Mask Replica]" outputs

$audioPlayer->setTune('Ella Guru');      // BadMethodCallException occurs
$audioPlayer->getTune();                 // BadMethodCallException occurs
$audioPlayer->tune('Well');              // BadMethodCallException occurs
$audioPlayer->tune();                    // BadMethodCallException occurs

如果存在一些属性在访问时很麻烦,请使用它。另外,如果代码中同时存在 gsUnwritablePropsgsInaccessibleProps,则 gsInaccessibleProps 优先。

贡献

欢迎贡献!此项目遵循 贡献者行为准则。通过参与此项目和其社区,您应遵守此准则。请阅读 CONTRIBUTING 获取详细信息。

版权

pinekta/geta-setta 版权 © @pinekta

许可

pinekta/getta-setta 在 MIT 许可下发布。有关更多信息,请参阅 LICENSE