PHPKonf Istanbul PHP Conference 2019 - Call for Papers
add a note add a note

User Contributed Notes 5 notes

up
164
Anonymous
7 years ago
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($total, 2);
    }
?>
up
20
Anonymous
2 years ago
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"?>
up
8
varuninorbit at yahoo dot co dot in
2 years ago
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
up
4
davidkennedy85 at gmail dot com
3 years ago
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
Hello, World;
    public function
sayExclamationMark() {
        echo
'!';
    }
}

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

More info here: //php.net/manual/en/language.oop5.traits.php
up
-50
Ronald W
3 years ago
<?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();
}
?>
To Top
  • 12306网站用户信息外泄?铁总深夜“辟谣” 2018-12-11
  • 第二届加强创新和社会管理案例理论论坛暨社会管理创新案例颁奖典礼 2018-12-10
  • 中国共产党第十九次全国代表大会 2018-12-10
  • 女性之声——全国妇联 2018-12-10
  • NBA总决赛4比0横扫骑士问鼎 4年夺3冠勇士王朝! 2018-12-09
  • 图解:关于中国梦,习近平总书记这十句话直抵人心 2018-12-09
  • 【十九大·理论新视野】动漫:“美丽中国”如何绘就 2018-12-09
  • 宁波制造分享俄罗斯世界杯经济蛋糕 2018-12-08
  • 为丰富百姓餐桌提供更多选择(打开对外开放新局面) 2018-12-08
  • 英媒:中国正引领无人智能设备革命 城市机器人或将崛起 2018-12-08
  • 强征钢铝税惹众怒,美国在G7财长会上被孤立 2018-12-07
  • 太原35397名考生参加中考体测 2018-12-07
  • 西藏昂仁县:保障群众健康生活 用健康扶贫助推精准扶贫 2018-12-07
  • 警惕打着“高科技”旗号的食品虚假宣传 2018-12-07
  • 不是“不尊重公投”,而是不尊重人类社会发展规律就是不尊重人类。 2018-12-06
  • 559| 182| 874| 973| 267| 691| 537| 696| 974| 800|