]> granicus.if.org Git - php/commitdiff
T_IMPORT -> T_USE
authorDmitry Stogov <dmitry@php.net>
Wed, 7 Nov 2007 09:13:50 +0000 (09:13 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 7 Nov 2007 09:13:50 +0000 (09:13 +0000)
19 files changed:
README.namespaces
Zend/tests/bug42859.phpt
Zend/tests/ns_002.phpt
Zend/tests/ns_010.phpt
Zend/tests/ns_012.phpt
Zend/tests/ns_020.phpt
Zend/tests/ns_022.phpt
Zend/tests/ns_029.phpt
Zend/tests/ns_030.phpt
Zend/tests/ns_033.phpt
Zend/tests/ns_034.phpt
Zend/tests/ns_036.phpt
Zend/tests/ns_037.phpt
Zend/tests/ns_040.phpt
Zend/tests/ns_042.phpt
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_language_parser.y
Zend/zend_language_scanner.l

index 80321f2ce43262dcbf65709a4e30cf1277daa919..310adcc884cd29fb767644a1dd9dc6fde3d38ed9 100755 (executable)
@@ -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 
index 6464f9b4c751e41a120c754e1de07f00cebc037b..475c58346580e81dc52ca1a238b679ad423c6d88 100755 (executable)
@@ -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
index 4b17012a9461b518be7f1de059626223653cc048..7faca97cd3682484afaab0e15aa3de450bb18454 100755 (executable)
@@ -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();
index 7be99e49bf882275f2573baf97d99e0d63871331..95172e0ec3951b775ed21fde718fa9dbc6c0e481 100755 (executable)
@@ -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";
index aa50661e79eaa4912539f44c71aefb0afe71f4c0..ce16db1ab91e7895389a97b1f99d2f3075030893 100755 (executable)
@@ -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();
index 32325e09d234866463d183a4e846798bd67de86b..9d2e8a7ccb2c8cca5af2039cf481ca152ee48e9c 100755 (executable)
@@ -3,7 +3,7 @@
 --FILE--
 <?php
 namespace X;
-import X as Y;
+use X as Y;
 function foo() {
        echo __FUNCTION__,"\n";
 }
index f46a856d01ee870e3ba18a4535bd7056b6624b9e..6944ca403fcde065257039ea2c1d7dfd21713090 100755 (executable)
@@ -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";
 
index a76f4fa9cd56d3a4d2c3823ccd3484d765a61cca..1b82b052e5f75f86d5e427e239854052ab481ef2 100755 (executable)
@@ -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 {
 }
index c87b293bb6a69ce6e265dea13a06c25019540584..83a86b1fd1d875ce667c6424a3a649180bea416c 100755 (executable)
@@ -5,7 +5,7 @@
 class Foo {
 }
 
-import A::B as Foo;
+use A::B as Foo;
 
 new Foo();
 --EXPECTF--
index bd0bebd4bde385e36716f9d311aab78dbdd56898..dc431d82b9b324f20c461eb9468df482f47480dc 100755 (executable)
@@ -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
 
index a0424a9997aecd5c3334f303f92f846adfce8458..f8669cfb7490e3f5e69abf22203579557675d58f 100755 (executable)
@@ -3,7 +3,7 @@
 --FILE--
 <?php
 namespace A;
-import A as B;
+use A as B;
 class Foo {
        const C = "ok\n";
 }
index 9825c8fc1f7021d0c04e731e03746cda525e717d..6fee2cb006fb4441575826236521e5a1dff1403c 100755 (executable)
@@ -5,7 +5,7 @@
 --FILE--
 <?php
 namespace A;
-import A as B;
+use A as B;
 class ArrayObject {
        const STD_PROP_LIST = 2;
 }
index 4e6c248546226a12e6cc0afc7c85e3da042cd611..ed36e0bb57fe4b09c750dcdde9a13d789bf3365f 100755 (executable)
@@ -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";
index 11799f9a73df502250324462160f22726cddb3e4..f017aff0bd5fc47fa4b1b2bfd3018e2df3bf71a3 100644 (file)
@@ -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);
index bda697bff9b04a740fe1cf870586410723edaf04..eecd5f92561f65ac210288afba1916ff3056fa3c 100644 (file)
@@ -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;
index 64520cdba20191c15cb58e7e14fc3851ddd3e7fb..e4a38f304683f13b3a6220ff94c29a48504b31e4 100644 (file)
@@ -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);
index 95109b0a2eab3354480cd9b1d3580f24d1856b6b..022ac85aa713f7870edff3efcbbac841ca7760bd 100644 (file)
@@ -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);
index 7bab0f323d5e0bc75301e092175b47729434c6f0..d7a2d82e192ffe8b1eb663cf2e3a804aee447149 100644 (file)
 %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); }
 ;
index 6f4314581994e5a9474d58e22b43aa3c5ab33aa6..4f58c84315e37248857dc9edd2c94f04bdb6b95b 100644 (file)
@@ -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;
 }