2024 年 PHP Conference Japan
新增註釋

使用者貢獻的註釋 4 則註釋

匿名
13 年前
關鍵字 'use' 有兩種不同的應用,但保留字表格卻連結到這裡。

它可以應用於命名空間結構

檔案 1
<?php namespace foo;
class
Cat {
static function
says() {echo 'meoow';} } ?>

檔案 2
<?php namespace bar;
class
Dog {
static function
says() {echo 'ruff';} } ?>

檔案 3
<?php namespace animate;
class
Animal {
static function
breathes() {echo 'air';} } ?>

檔案 4
<?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"; ?>

請注意
felineCat::says()
應該改為
\feline\Cat::says()
(其他也是類似的情況)
但這個註釋表格會刪除反斜線(為什麼???)

關鍵字 'use' 也適用於閉包結構

<?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);
}
?>
匿名
8 年前
於 PHP 7.0.5, Windows 上測試
「use animate;」這一行等同於「use animate as animate;」
但「use other\animate;」等同於「use other\animate as animate;」

檔案 1
<?php namespace foo;
class
Cat {
static function
says() {echo 'meoow';} } ?>

檔案 2
<?php namespace bar;
class
Dog {
static function
says() {echo 'ruff';} } ?>

檔案 3
<?php namespace other\animate;
class
Animal {
static function
breathes() {echo 'air';} } ?>

檔案 4
<?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"; ?>
varuninorbit at yahoo dot co dot in
8 年前
這裡是一個使用命名空間的簡單範例

<?php

命名空間 app\a{
class
one{
public static function
_1(){
echo
'a one _1<br>';
}
}
}

命名空間
app\b{
class
one{
public static function
_2(){
echo
'b one _2<br>';
}
}
}

命名空間
app{

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

命名空間
app\a{
class
two{
public static function
_1(){
echo
'a two _1<br>';
}
}
}

印出
a one _1
b one _2
a two _1
davidkennedy85 at gmail dot com
9 年前
除了使用命名空間和閉包之外,use 關鍵字在 PHP 5.4 之後還有另一個新的含義 - 使用 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();
?>

更多資訊請參考:https://php.dev.org.tw/manual/en/language.oop5.traits.php
To Top