定制 as-pro/object-access 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

as-pro/object-access

Composer 安装命令:

composer require as-pro/object-access

包简介

A library for accessing object properties via getters and setters

README 文档

README

Latest Stable Version Latest Stable Version Latest Stable Version License

This is a library for accessing object properties via getters and setters.

Features:

  • custom finders
  • any mode (public, protected, private, static)
  • serializable getters and setters for permanent storage

Installation

composer required as-pro/object-access

Usage

<?php

use ASPRO\ObjectAccess\Builder;
use ASPRO\ObjectAccess\Factory;
use ASPRO\ObjectAccess\Modifiers;
use ASPRO\ObjectAccess\ComplexGetterFinder;
use ASPRO\ObjectAccess\Finder\GetterByMethodFinder;
use ASPRO\ObjectAccess\Finder\GetterByPropertyFinder;
use ASPRO\ObjectAccess\Finder\GetterByProxyMethodFinder;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;

$accessor = Factory::newDefaultAccessor(true); // true to enable internal getters (protected and private)

// or using builder
$accessor = Builder::newBuilder()
    ->silence(true) // don't throw exception, default: false
    ->cachable(true) // default: true
    ->withCache(new FilesystemAdapter()) // default: null
    ->withClassResolver('\get_class') // callable, default: \get_class
    ->withGetterFinder(Factory::newDefaultGetterFinder()) // default getter finder
    ->withSetterFinder(Factory::newDefaultSetterFinder()) // default setter finder
    ->build();

// or with custom finders
$accessor = Builder::newBuilder()
    ->withGetterFinder(
        new ComplexGetterFinder([
            // first try to find public getters
            new GetterByMethodFinder('get', '', Modifiers::IS_PUBLIC),
            new GetterByMethodFinder('is', '', Modifiers::IS_PUBLIC),
            new GetterByMethodFinder('has', '', Modifiers::IS_PUBLIC),
            new GetterByMethodFinder('can', '', Modifiers::IS_PUBLIC),
            new GetterByPropertyFinder(Modifiers::IS_PUBLIC),
            // then try to find private or protected getters
            new GetterByMethodFinder('get', '', Modifiers::IS_PRIVATE | Modifiers::IS_PROTECTED),
            new GetterByMethodFinder('is', '', Modifiers::IS_PRIVATE | Modifiers::IS_PROTECTED),
            new GetterByMethodFinder('has', '', Modifiers::IS_PRIVATE | Modifiers::IS_PROTECTED),
            new GetterByMethodFinder('can', '', Modifiers::IS_PRIVATE | Modifiers::IS_PROTECTED),
            new GetterByPropertyFinder(Modifiers::IS_PRIVATE | Modifiers::IS_PROTECTED),
            // then try to find magic getter
            new GetterByProxyMethodFinder('__get', Modifiers::IS_PUBLIC),
        ])
    )
    ->build()
    ;

// example class
class Dummy {
    private $foo;
    private $bar;
    
    public function getFoo()
    {
        return $this->foo;
    }
    
    public function setFoo($foo): void 
    {
        $this->foo = $foo;
    }
    
    protected function getBar()
    {
        return $this->bar;
    }
        
    protected function setBar($bar): void
    {
        $this->bar = $bar;
    }
}

$dummy = new Dummy();

// set property or throw NotFoundGetterException
$accessor->setValue($dummy, 'foo', 'test');

// get property or throw NotFoundSetterException
$foo = $accessor->getValue($dummy, 'foo');
var_dump($foo);


// check writable before set property
if ($accessor->isWritable($dummy, 'bar')) {
    $accessor->setValue($dummy, 'bar', 'test');
}

// check readable before get property
if ($accessor->isReadable($dummy, 'bar')) {
    $bar = $accessor->getValue($dummy, 'bar');
    var_dump($bar);
}

统计信息

  • 总下载量: 5
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-06-30

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固