bhittani/php-parser 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

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

bhittani/php-parser

Composer 安装命令:

composer require bhittani/php-parser

包简介

Syntax parser with back porting down to previous versions.

README 文档

README

Syntax parser with back porting down to previous versions.

This library contains custom traversal visitors for use with nikic/PHP-Parser.

Table of contents

Install

This library may be consumed by using composer.

In your terminal, run:

$ composer require bhittani/php-parser

Usage

To utilize this library make sure you understand how nikic/PHP-Parser parses code.

This library contains a set of node visitors to manipulate php code.

Group import to individual imports

Back ports php 7+ syntax code.

use Bhittani\PhpParser\GroupToSingleImportsVisitor;

$traverser->addVisitor(new GroupToSingleImportsVisitor);

which will convert

use Grouped\Imports\{Acme, Foo\Bar}

into

use Grouped\Imports\Acme;
use Grouped\Imports\Foo\Bar;

Splat calls to call_user_func_array

Back ports php 5.6+ syntax code.

use Bhittani\PhpParser\SplatToCallUserFuncArrayVisitor;

$traverser->addVisitor(new SplatToCallUserFuncArrayVisitor);

which will convert

$val = my_func($a, 'b', ...$params);

into

$val = call_user_func_array('my_func', array_merge(array(
    $a, 'b'
), $params));

Class constants to strings

Back ports php 5.5+ syntax code.

use Bhittani\PhpParser\ClassConstToStrVisitor;

$traverser->addVisitor(new ClassConstToStrVisitor);

which will convert

use Acme\Foo\Bar;

$barClass = Bar::class;

into

use Acme\Foo\Bar;

$barClass = 'Acme\Foo\Bar';

Variadic to func_get_args

Back ports php 5.6+ syntax code.

use Bhittani\PhpParser\VariadicToFuncGetArgsVisitor;

$traverser->addVisitor(new VariadicToFuncGetArgsVisitor);

which will convert

function my_func($a, $b, ...$params)
{
    // my_func code
}

into

function my_func()
{
    $params = func_get_args();
    $a = array_shift($params);
    $b = array_shift($params);

    // my_func code
}

Remove imports

Removes all import statements.

use Bhittani\PhpParser\RemoveImportsVisitor;

$traverser->addVisitor(new RemoveImportsVisitor);

which will remove all use statements.

Append suffix

Appends a suffix to all imports, classes, traits, and interfaces.

use Bhittani\PhpParser\AppendSuffixVisitor;

$traverser->addVisitor(new AppendSuffixVisitor('_1'));

which will convert

<?php

namespace Company\Package;

use Acme\Foo;
use Acme\Bar\{Beep, Boop};

interface Contract {}

abstract class AnAbstract {}

trait OurTrait {}

class Person extends AnAbstract implements Contract, AnotherContract
{
    use OurTrait;

    use Their\Trait;

    public function handle(Beep $beep, Model\User $age)
    {
        $foo = new Foo();
        $bar = new Bar();
        if ($beep->boop()) {
            throw new Exception('Error thrown.');
        }
    }
}

into

<?php

namespace Company\Package;

use Acme\Foo_1 as Foo;
use Acme\Bar\{Beep_1 as Beep, Boop_1 as Boop};

interface Contract_1 {}

abstract class AnAbstract_1 {}

trait OurTrait_1 {}

class Person_1 extends AnAbstract_1 implements Contract_1, AnotherContract_1
{
    use OurTrait_1;

    use Their\Trait_1;

    public function handle(Beep $beep, Model\User_1 $age)
    {
        $foo = new Foo();
        $bar = new Bar_1();
        if ($beep->boop()) {
            throw new Exception('Error thrown.');
        }
    }
}

Notice that php's built-in entities won't be suffixed.

Test

Make sure you first CD into the library's root directory.

Do a composer install.

$ composer install

Run the tests.

$ vendor/bin/phpunit tests

or

$ composer test

Credits

This library would not be possible without making use of nikic/PHP-Parser.

License

This library is released under the MIT License.

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-12-09

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固