diff options
author | Dmitry Stogov <dmitry@php.net> | 2007-11-07 09:13:50 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2007-11-07 09:13:50 +0000 |
commit | b7d87bebc93e9937ed46f6762eed4a20c4e5b8d6 (patch) | |
tree | 4d7d767471b2325316ed7247393ac87966ad43b9 | |
parent | 38e93fe401edd9c09fe6e4dd863ab1764e83b02a (diff) | |
download | php-git-b7d87bebc93e9937ed46f6762eed4a20c4e5b8d6.tar.gz |
T_IMPORT -> T_USE
-rwxr-xr-x | README.namespaces | 18 | ||||
-rwxr-xr-x | Zend/tests/bug42859.phpt | 4 | ||||
-rwxr-xr-x | Zend/tests/ns_002.phpt | 6 | ||||
-rwxr-xr-x | Zend/tests/ns_010.phpt | 2 | ||||
-rwxr-xr-x | Zend/tests/ns_012.phpt | 4 | ||||
-rwxr-xr-x | Zend/tests/ns_020.phpt | 2 | ||||
-rwxr-xr-x | Zend/tests/ns_022.phpt | 2 | ||||
-rwxr-xr-x | Zend/tests/ns_029.phpt | 2 | ||||
-rwxr-xr-x | Zend/tests/ns_030.phpt | 2 | ||||
-rwxr-xr-x | Zend/tests/ns_033.phpt | 4 | ||||
-rwxr-xr-x | Zend/tests/ns_034.phpt | 2 | ||||
-rwxr-xr-x | Zend/tests/ns_036.phpt | 2 | ||||
-rwxr-xr-x | Zend/tests/ns_037.phpt | 2 | ||||
-rw-r--r-- | Zend/tests/ns_040.phpt | 2 | ||||
-rw-r--r-- | Zend/tests/ns_042.phpt | 4 | ||||
-rw-r--r-- | Zend/zend_compile.c | 6 | ||||
-rw-r--r-- | Zend/zend_compile.h | 2 | ||||
-rw-r--r-- | Zend/zend_language_parser.y | 12 | ||||
-rw-r--r-- | Zend/zend_language_scanner.l | 4 |
19 files changed, 35 insertions, 47 deletions
diff --git a/README.namespaces b/README.namespaces index 80321f2ce4..310adcc884 100755 --- a/README.namespaces +++ b/README.namespaces @@ -39,8 +39,8 @@ Namespace or class name can be imported: <?php require 'Zend/Db/Connection.php'; -import Zend::DB; -import Zend::DB::Connection as DbConnection; +use Zend::DB; +use Zend::DB::Connection as DbConnection; $x = new Zend::DB::Connection(); $y = new DB::connection(); @@ -48,13 +48,13 @@ $z = new DbConnection(); DB::connect(); ?> -import statement only defines name aliasing. It may create name alias for -namespace or class. The simple form of statement "import A::B::C::D;" is -equivalent to "import A::B::C::D as D;". Import statement can be used at any +The use statement only defines name aliasing. It may create name alias for +namespace or class. The simple form of statement "use A::B::C::D;" is +equivalent to "use A::B::C::D as D;". The use statement can be used at any time in the global scope (not inside function/class) and takes effect from the point of definition down to the end of file. It is recommended however to -place imports at the beginning of the file. Import statements have effect -only on the file where they appear. +place the use statements at the beginning of the file. The use statements have +effect only on the file where they appear. The special "empty" namespace (:: prefix) is useful as explicit global namespace qualification. All class and function names started from :: @@ -83,10 +83,10 @@ In global namespace __NAMESPACE__ constant has the value of empty string. Names inside namespace are resolved according to the following rules: 1) all qualified names are translated during compilation according to -current import rules. So if we have "import A::B::C" and then "C::D::e()" +current import rules. So if we have "use A::B::C" and then "C::D::e()" it is translated to "A::B::C::D::e()". 2) unqualified class names translated during compilation according to -current import rules. So if we have "import A::B::C" and then "new C()" it +current import rules. So if we have "use A::B::C" and then "new C()" it is translated to "new A::B::C()". 3) inside namespace, calls to unqualified functions that are defined in current namespace (and are known at the time the call is parsed) are diff --git a/Zend/tests/bug42859.phpt b/Zend/tests/bug42859.phpt index 6464f9b4c7..475c583465 100755 --- a/Zend/tests/bug42859.phpt +++ b/Zend/tests/bug42859.phpt @@ -5,8 +5,8 @@ Bug #42859 import always conflicts with internal classes namespace Foo; class Ex {} -import Blah::Exception; -import Blah::Ex; +use Blah::Exception; +use Blah::Ex; ?> --EXPECTF-- Fatal error: Import name 'Ex' conflicts with defined class in %sbug42859.php on line 6
\ No newline at end of file diff --git a/Zend/tests/ns_002.phpt b/Zend/tests/ns_002.phpt index 4b17012a94..7faca97cd3 100755 --- a/Zend/tests/ns_002.phpt +++ b/Zend/tests/ns_002.phpt @@ -10,9 +10,9 @@ class Foo { } } -import test::ns1::Foo as Bar; -import test::ns1 as ns2; -import test::ns1; +use test::ns1::Foo as Bar; +use test::ns1 as ns2; +use test::ns1; Foo::bar(); test::ns1::Foo::bar(); diff --git a/Zend/tests/ns_010.phpt b/Zend/tests/ns_010.phpt index 7be99e49bf..95172e0ec3 100755 --- a/Zend/tests/ns_010.phpt +++ b/Zend/tests/ns_010.phpt @@ -3,7 +3,7 @@ --FILE-- <?php namespace X; -import X as Y; +use X as Y; class Foo { const C = "const ok\n"; static $var = "var ok\n"; diff --git a/Zend/tests/ns_012.phpt b/Zend/tests/ns_012.phpt index aa50661e79..ce16db1ab9 100755 --- a/Zend/tests/ns_012.phpt +++ b/Zend/tests/ns_012.phpt @@ -8,8 +8,8 @@ function foo() { echo __FUNCTION__,"\n"; } -import test::ns1 as ns2; -import test as ns3; +use test::ns1 as ns2; +use test as ns3; foo(); bar(); diff --git a/Zend/tests/ns_020.phpt b/Zend/tests/ns_020.phpt index 32325e09d2..9d2e8a7ccb 100755 --- a/Zend/tests/ns_020.phpt +++ b/Zend/tests/ns_020.phpt @@ -3,7 +3,7 @@ --FILE-- <?php namespace X; -import X as Y; +use X as Y; function foo() { echo __FUNCTION__,"\n"; } diff --git a/Zend/tests/ns_022.phpt b/Zend/tests/ns_022.phpt index f46a856d01..6944ca403f 100755 --- a/Zend/tests/ns_022.phpt +++ b/Zend/tests/ns_022.phpt @@ -4,7 +4,7 @@ <?php namespace a::b::c; -import a::b::c as test; +use a::b::c as test; require "ns_022.inc"; diff --git a/Zend/tests/ns_029.phpt b/Zend/tests/ns_029.phpt index a76f4fa9cd..1b82b052e5 100755 --- a/Zend/tests/ns_029.phpt +++ b/Zend/tests/ns_029.phpt @@ -2,7 +2,7 @@ 029: Name ambiguity (class name & import name) --FILE-- <?php -import A::B as Foo; +use A::B as Foo; class Foo { } diff --git a/Zend/tests/ns_030.phpt b/Zend/tests/ns_030.phpt index c87b293bb6..83a86b1fd1 100755 --- a/Zend/tests/ns_030.phpt +++ b/Zend/tests/ns_030.phpt @@ -5,7 +5,7 @@ class Foo { } -import A::B as Foo; +use A::B as Foo; new Foo(); --EXPECTF-- diff --git a/Zend/tests/ns_033.phpt b/Zend/tests/ns_033.phpt index bd0bebd4bd..dc431d82b9 100755 --- a/Zend/tests/ns_033.phpt +++ b/Zend/tests/ns_033.phpt @@ -2,7 +2,7 @@ 033: Import statement with non-compound name --FILE-- <?php -import A; +use A; --EXPECTF-- -Warning: The import statement with non-compound name 'A' has no effect in %sns_033.php on line 2 +Warning: The use statement with non-compound name 'A' has no effect in %sns_033.php on line 2 diff --git a/Zend/tests/ns_034.phpt b/Zend/tests/ns_034.phpt index a0424a9997..f8669cfb74 100755 --- a/Zend/tests/ns_034.phpt +++ b/Zend/tests/ns_034.phpt @@ -3,7 +3,7 @@ --FILE-- <?php namespace A; -import A as B; +use A as B; class Foo { const C = "ok\n"; } diff --git a/Zend/tests/ns_036.phpt b/Zend/tests/ns_036.phpt index 9825c8fc1f..6fee2cb006 100755 --- a/Zend/tests/ns_036.phpt +++ b/Zend/tests/ns_036.phpt @@ -5,7 +5,7 @@ --FILE-- <?php namespace A; -import A as B; +use A as B; class ArrayObject { const STD_PROP_LIST = 2; } diff --git a/Zend/tests/ns_037.phpt b/Zend/tests/ns_037.phpt index 4e6c248546..ed36e0bb57 100755 --- a/Zend/tests/ns_037.phpt +++ b/Zend/tests/ns_037.phpt @@ -3,7 +3,7 @@ --FILE-- <?php namespace X; -import X as Y; +use X as Y; class X { const C = "const ok\n"; static $var = "var ok\n"; diff --git a/Zend/tests/ns_040.phpt b/Zend/tests/ns_040.phpt index 11799f9a73..f017aff0bd 100644 --- a/Zend/tests/ns_040.phpt +++ b/Zend/tests/ns_040.phpt @@ -3,7 +3,7 @@ --FILE-- <?php namespace X; -import X as Y; +use X as Y; const A = "ok\n"; const B = A; const C = array(A); diff --git a/Zend/tests/ns_042.phpt b/Zend/tests/ns_042.phpt index bda697bff9..eecd5f9256 100644 --- a/Zend/tests/ns_042.phpt +++ b/Zend/tests/ns_042.phpt @@ -6,8 +6,8 @@ namespace test::ns1; const FOO = "ok\n"; -import test::ns1 as ns2; -import test as ns3; +use test::ns1 as ns2; +use test as ns3; echo FOO; echo test::ns1::FOO; diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 64520cdba2..e4a38f3046 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -4600,7 +4600,7 @@ void zend_do_namespace(znode *name TSRMLS_DC) /* {{{ */ } /* }}} */ -void zend_do_import(znode *ns_name, znode *new_name TSRMLS_DC) /* {{{ */ +void zend_do_use(znode *ns_name, znode *new_name TSRMLS_DC) /* {{{ */ { char *lcname; zval *name, *ns, tmp; @@ -4618,7 +4618,7 @@ void zend_do_import(znode *ns_name, znode *new_name TSRMLS_DC) /* {{{ */ } else { char *p; - /* The form "import A::B" is eqivalent to "import A::B as B". + /* The form "use A::B" is eqivalent to "use A::B as B". So we extract the last part of compound name ti use as a new_name */ name = &tmp; p = zend_memrchr(Z_STRVAL_P(ns), ':', Z_STRLEN_P(ns)); @@ -4660,7 +4660,7 @@ void zend_do_import(znode *ns_name, znode *new_name TSRMLS_DC) /* {{{ */ zend_error(E_COMPILE_ERROR, "Cannot reuse import name"); } if (warn) { - zend_error(E_WARNING, "The import statement with non-compound name '%s' has no effect", Z_STRVAL_P(name)); + zend_error(E_WARNING, "The use statement with non-compound name '%s' has no effect", Z_STRVAL_P(name)); } efree(lcname); zval_dtor(name); diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 95109b0a2e..022ac85aa7 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -506,7 +506,7 @@ void zend_do_abstract_method(znode *function_name, znode *modifiers, znode *body void zend_do_declare_constant(znode *name, znode *value TSRMLS_DC); void zend_do_build_namespace_name(znode *result, znode *prefix, znode *name TSRMLS_DC); void zend_do_namespace(znode *name TSRMLS_DC); -void zend_do_import(znode *name, znode *new_name TSRMLS_DC); +void zend_do_use(znode *name, znode *new_name TSRMLS_DC); void zend_do_end_compilation(TSRMLS_D); ZEND_API void function_add_ref(zend_function *function); diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 7bab0f323d..d7a2d82e19 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -144,7 +144,6 @@ %token T_CURLY_OPEN %token T_PAAMAYIM_NEKUDOTAYIM %token T_NAMESPACE -%token T_IMPORT %token T_NS_C %% /* Rules */ @@ -169,8 +168,8 @@ top_statement: | class_declaration_statement { zend_do_early_binding(TSRMLS_C); } | T_HALT_COMPILER '(' ')' ';' { zend_do_halt_compiler_register(TSRMLS_C); YYACCEPT; } | T_NAMESPACE namespace_name ';' { zend_do_namespace(&$2 TSRMLS_CC); } - | T_IMPORT namespace_name ';' { zend_do_import(&$2, NULL TSRMLS_CC); } - | T_IMPORT namespace_name T_AS T_STRING ';' { zend_do_import(&$2, &$4 TSRMLS_CC); } + | T_USE namespace_name ';' { zend_do_use(&$2, NULL TSRMLS_CC); } + | T_USE namespace_name T_AS T_STRING ';' { zend_do_use(&$2, &$4 TSRMLS_CC); } | constant_declaration ';' ; @@ -225,7 +224,6 @@ unticked_statement: | T_ECHO echo_expr_list ';' | T_INLINE_HTML { zend_do_echo(&$1 TSRMLS_CC); } | expr ';' { zend_do_free(&$1 TSRMLS_CC); } - | T_USE use_filename ';' { zend_error(E_COMPILE_ERROR,"use: Not yet supported. Please use include_once() or require_once()"); zval_dtor(&$2.u.constant); } | T_UNSET '(' unset_variables ')' ';' | T_FOREACH '(' variable T_AS { zend_do_foreach_begin(&$1, &$2, &$3, &$4, 1 TSRMLS_CC); } @@ -272,12 +270,6 @@ unset_variable: variable { zend_do_end_variable_parse(BP_VAR_UNSET, 0 TSRMLS_CC); zend_do_unset(&$1 TSRMLS_CC); } ; -use_filename: - T_CONSTANT_ENCAPSED_STRING { $$ = $1; } - | '(' T_CONSTANT_ENCAPSED_STRING ')' { $$ = $2; } -; - - function_declaration_statement: unticked_function_declaration_statement { zend_do_ticks(TSRMLS_C); } ; diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 6f43145819..4f58c84315 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1202,10 +1202,6 @@ HEREDOC_CHARS ("{"*([^$\n\r\\{]|("\\"[^\n\r]))|{HEREDOC_LITERAL_DOLLAR}|({ return T_NAMESPACE; } -<ST_IN_SCRIPTING>"import" { - return T_IMPORT; -} - <ST_IN_SCRIPTING>"use" { return T_USE; } |