0
在线手册:中文 英文
0
在线手册:中文 英文

5位用户评论

[#1] ▲25▼ anonymous [57%] (2016-05-10 08:15:07)

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: <?php namespace foo;
  class 
Cat 
    static function 
says() {echo 'meoow';}  } ?>
file2: <?php namespace bar;
  class 
Dog {
    static function 
says() {echo 'ruff';}  } ?>
file3: <?php namespace other\animate;
  class 
Animal {
    static function 
breathes() {echo 'air';}  } ?>
file4: <?php 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(), "<br />\n";
  echo 
canine\Dog::says(), "<br />\n";
  echo \
animate\Animal::breathes(), "<br />\n";  ?#=#>

[#2] ▲6▼ varuninorbit@yahoo.co.in [52%] (2015-12-27 18:43:12)

here is a simple example to use namespace <?php

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

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

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<br>';
       }
    }
}

prints 
a one _1
b one _2
a two _1

[#3] ▲10▼ davidkennedy85@gmail.com [53%] (2015-03-26 17:04:50)

In addition to using namespaces and closures, the use keyword has another new meaning as of PHP 5.4 - using traits: <?php
trait Hello {
    public function 
sayHello() {
        echo 
'Hello ';
    }
}

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

class 
MyHelloWorld {
    use 
HelloWorld;
    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

[#4] ▲-45▼ ronald w [42%] (2015-01-22 13:13:37)

<?php 
// 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(), "<br />\n";  
  echo 
feline\Cat::says(), "<br />\n"//not starting with a slash!
  
echo canine\Cat::says(), "<br />\n";
  echo 
canine\Dog::says(), "<br />\n";
  
//any of the three following lines work:
  // $micky=new bar\Mouse();
  // $micky=new canine\Mouse();
  
$micky=new test();
  echo 
$micky->says();
}
?>

[#5] ▲200▼ anonymous [61%] (2011-05-25 11:06:14)

The keyword 'use' has two different applications, but the reserved word table links to here. It can apply to namespace constucts: file1: <?php namespace foo;
  class 
Cat 
    static function 
says() {echo 'meoow';}  } ?>
file2: <?php namespace bar;
  class 
Dog {
    static function 
says() {echo 'ruff';}  } ?>
file3: <?php namespace animate;
  class 
Animal {
    static function 
breathes() {echo 'air';}  } ?>
file4: <?php 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(), "<br />\n";
  echo \
canine\Dog::says(), "<br />\n";
  echo \
animate\Animal::breathes(), "<br />\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:

<?
php 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($total2);
    }
?>