-
Notifications
You must be signed in to change notification settings - Fork 4
Class name matching
In this case
<?php
namespace {
class Hoge {}
}
namespace Hoge {
class SomeClass1 {}
class SomeClass2 {}
}
namespace Hoge\Fuga {
class SomeClass3 {}
class SomeClass4 {}
}
['\Hoge']
will only match Hoge
.
['\Hoge\\']
will match Hoge\SomeClass1
, Hoge\SomeClass2
, Hoge\Fuga\SomeClass3
, Hoge\Fuga\SomeClass4
. (\\
is measure escape string)
['\Hoge', '\Hoge\\']
will match all classes.
['\Hoge\\', '!\Hoge\Fuga\SomeClass3']
will match Hoge\SomeClass1
, Hoge\SomeClass2
, Hoge\Fuga\SomeClass4
.
['\Hoge\\', '!\Hoge\Fuga\\']
will match Hoge\SomeClass1
, Hoge\SomeClass2
.
['\\']
will match all classes.
['\\', '!\Hoge\SomeClass1']
will match Hoge
, Hoge\SomeClass2
, Hoge\Fuga\SomeClass3
, Hoge\Fuga\SomeClass4
.
['!\Hoge\SomeClass1']
will match Hoge
, Hoge\SomeClass2
, Hoge\Fuga\SomeClass3
, Hoge\Fuga\SomeClass4
.
FQSEN(Fully Qualified Structural Element Name) is notation to identify class/interface/trait members.
It is introduced in PSR-5.
FQSEN must start with \
.
However, as a original extension in this library, the namespace ends with \
.
Because, it is impossible to distinguish the difference between namespace and class.
FQSEN has the following ABNF definition.
FQSEN = fqnn / fqcn / constant / method / property / function
fqnn = "\" [name] *("\" [name])
fqcn = fqnn "\" name
constant = (fqnn "\" / fqcn "::") name
method = fqcn "::" name "()"
property = fqcn "::$" name
function = fqnn "\" name "()"
name = (ALPHA / "_") *(ALPHA / DIGIT / "_")