Browse Source
Added __TRAIT__ magic constant [TRAITS] [DOC]
Added __TRAIT__ magic constant [TRAITS] [DOC]
# __TRAIT__ behaves like __CLASS__ more or less but is constraint to traits. # Since traits are not types, there are not many valid use cases, and trying # to use __TRAIT__ to make traits more like classes is discouraged.pull/7/head
7 changed files with 1878 additions and 1694 deletions
-
36Zend/tests/traits/trait_constant_001.phpt
-
27Zend/tests/traits/trait_constant_002.phpt
-
2Zend/zend_language_parser.y
-
3374Zend/zend_language_scanner.c
-
20Zend/zend_language_scanner.l
-
2Zend/zend_language_scanner_defs.h
-
111ext/tokenizer/tests/token_get_all_variation12.phpt
@ -0,0 +1,36 @@ |
|||
--TEST-- |
|||
__TRAIT__: Basics, a constant denoiting the trait of definition. |
|||
--FILE-- |
|||
<?php |
|||
|
|||
trait TestTrait { |
|||
public static function test() { |
|||
return __TRAIT__; |
|||
} |
|||
} |
|||
|
|||
class Direct { |
|||
use TestTrait; |
|||
} |
|||
|
|||
class IndirectInheritance extends Direct { |
|||
|
|||
} |
|||
|
|||
trait TestTraitIndirect { |
|||
use TestTrait; |
|||
} |
|||
|
|||
class Indirect { |
|||
use TestTraitIndirect; |
|||
} |
|||
|
|||
echo Direct::test()."\n"; |
|||
echo IndirectInheritance::test()."\n"; |
|||
echo Indirect::test()."\n"; |
|||
|
|||
?> |
|||
--EXPECT-- |
|||
TestTrait |
|||
TestTrait |
|||
TestTrait |
|||
@ -0,0 +1,27 @@ |
|||
--TEST-- |
|||
__TRAIT__: Use outside of traits. |
|||
--FILE-- |
|||
<?php |
|||
|
|||
class MyClass { |
|||
static function test() { |
|||
return __TRAIT__; |
|||
} |
|||
} |
|||
|
|||
function someFun() { |
|||
return __TRAIT__; |
|||
} |
|||
|
|||
|
|||
$t = __TRAIT__; |
|||
var_dump($t); |
|||
$t = MyClass::test(); |
|||
var_dump($t); |
|||
$t = someFun(); |
|||
var_dump($t); |
|||
?> |
|||
--EXPECT-- |
|||
string(0) "" |
|||
string(0) "" |
|||
string(0) "" |
|||
3374
Zend/zend_language_scanner.c
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Write
Preview
Loading…
Cancel
Save
Reference in new issue