Permalink
Browse files

T_IMPORT -> T_USE

  • Loading branch information...
1 parent 38e93fe commit b7d87bebc93e9937ed46f6762eed4a20c4e5b8d6 Dmitry Stogov committed Nov 7, 2007
View
@@ -39,22 +39,22 @@ 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();
$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
@@ -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
@@ -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();
@@ -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";
@@ -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();
@@ -3,7 +3,7 @@
--FILE--
<?php
namespace X;
-import X as Y;
+use X as Y;
function foo() {
echo __FUNCTION__,"\n";
}
@@ -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";
@@ -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 {
}
@@ -5,7 +5,7 @@
class Foo {
}
-import A::B as Foo;
+use A::B as Foo;
new Foo();
--EXPECTF--
@@ -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
@@ -3,7 +3,7 @@
--FILE--
<?php
namespace A;
-import A as B;
+use A as B;
class Foo {
const C = "ok\n";
}
@@ -5,7 +5,7 @@
--FILE--
<?php
namespace A;
-import A as B;
+use A as B;
class ArrayObject {
const STD_PROP_LIST = 2;
}
@@ -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";
@@ -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);
@@ -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;
View
@@ -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);
View
@@ -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);
@@ -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); }
;
@@ -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;
}

0 comments on commit b7d87be

Please sign in to comment.