提示:您需要登录才能建立主题与回复.

add a note?add a note

User Contributed Notes?5 notes

164

Anonymous??

The keyword 'use' has two different applications, but the reserved word table links to here.

It can apply to namespace constucts:

file1:
namespace?foo;
class?
Cat?{
static function?
says() {echo?'meoow';}? }??>

file2:
namespace?bar;
class?
Dog?{
static function?
says() {echo?'ruff';}? }??>

file3:
namespace?animate;
class?
Animal?{
static function?
breathes() {echo?'air';}? }??>

file4:
namespace?fub;
include?
'file1.php';
include?
'file2.php';
include?
'file3.php';
use?
foo?as?feline;
use?
bar?as?canine;
use?
animate;
echo \
feline\Cat::says(),?"
\n"
;
echo \
canine\Dog::says(),?"
\n"
;
echo \
animate\Animal::breathes(),?"
\n"
;???>

Note that
felineCat::says()
should be
\feline\Cat::says()
(and similar for the others)
but this comment form deletes the backslash (why???)

The 'use' keyword also applies to closure constructs:

function?getTotal($products_costs,?$tax)
{
$total?=?0.00;

$callback?=
function (
$pricePerItem) use ($tax, &$total)
{

$total?+=?$pricePerItem?* ($tax?+?1.0);
};

array_walk($products_costs,?$callback);
return?
round($total,?2);
}
?>

20

Anonymous??

Tested on PHP 7.0.5, Windows
The line "use animate;" equals the line "use animate as animate;"
but the "use other\animate;" equals "use other\animate as animate;"
file1:
namespace?foo;
class?
Cat?{
static function?
says() {echo?'meoow';}? }??>

file2:
namespace?bar;
class?
Dog?{
static function?
says() {echo?'ruff';}? }??>

file3:
namespace?other\animate;
class?
Animal?{
static function?
breathes() {echo?'air';}? }??>

file4:
namespace?fub;
include?
'file1.php';
include?
'file2.php';
include?
'file3.php';
use?
foo?as?feline;
use?
bar?as?canine;
use?
other\animate;? ? ???//use other\animate as animate;
echo?feline\Cat::says(),?"
\n"
;
echo?
canine\Dog::says(),?"
\n"
;
echo \
animate\Animal::breathes(),?"
\n"
;???>

8

varuninorbit at yahoo dot co dot in??

here is a simple example to use namespace

namespace?app\a{
class?
one{
public static function?
_1(){
echo?
'a one _1
'
;
}
}
}

namespace?app\b{
class?
one{
public static function?
_2(){
echo?
'b one _2
'
;
}
}
}

namespace?app{

echo?a\one::_1();
echo?
b\one::_2();
echo?
a\two::_1();
}

namespace?app\a{
class?
two{
public static function?
_1(){
echo?
'a two _1
'
;
}
}
}

prints
a one _1
b one _2
a two _1

4

davidkennedy85 at gmail dot com??

In addition to using namespaces and closures, the use keyword has another new meaning as of PHP 5.4 - using traits:

trait?Hello?{
public function?
sayHello() {
echo?
'Hello ';
}
}

trait?World?{
public function?
sayWorld() {
echo?
'World';
}
}

class?MyHelloWorld?{
use?
Hello,?World;
public function?
sayExclamationMark() {
echo?
'!';
}
}

$o?= new?MyHelloWorld();
$o->sayHello();
$o->sayWorld();
$o->sayExclamationMark();
?>

More info here:?http://php.net/manual/en/language.oop5.traits.php

-50

Ronald W??

// multiple namespaces in a single file: 

namespace?foo{
class?
Cat?{
static function?
says() {echo?'meoow';}? }
}
namespace

bar{
class?
Dog?{
static function?
says() {echo?'ruff';}? }
class?
Cat?{
static function?
says() {echo?'meowi';}? }
class?
Mouse?{? ???//nonstatic function
function?says() {echo?'Come and get me ;)';}? }
}
namespace

animate{
class?
Animal?{
static function?
breathes() {echo?'air';}? }
}
namespace{

// No Namespace: global code
use?foo?as?feline;
use?
bar?as?canine;
use?
bar\Mouse?as?MouseOnly;
use?
animate;
echo?
animate\Animal::breathes(),?"
\n"
;
echo?
feline\Cat::says(),?"
\n"
;?//not starting with a slash!
echo?canine\Cat::says(),?"
\n"
;
echo?
canine\Dog::says(),?"
\n"
;
//any of the three following lines work:
// $micky=new bar\Mouse();
// $micky=new canine\Mouse();
$micky=new?test();
echo?
$micky->says();
}
?>

签名档...
0个回复 201次浏览