Correction status:qualified
Teacher's comments:namespace 现在几乎只用来声明命名空间了, 当成空间引用并不多
自写案例演示匿名函数的三个应用场景
<?php // ***匿名函数只能调用一次 // 匿名函数的应用场景 // 1、将匿名函数作为一个值赋给另一个变量 $sum = function($a,$b){ return $a*$b; }; // 按值调用 echo $sum(3,5); echo '<hr>'; // 2、将匿名函数作为另一个函数的变量进行调用(回调) $arry = [1,53,6,7,8]; usort($arry,function($a,$b){ return $a-$b; }); echo '<pre>' . print_r($arry,true); echo '<hr>'; // 3、获取父作用域中的变量(eg.在子函数中调用父函数中变量) function task(){ $email = 'Reid@php.cn'; return function()use($email){ return $email; }; } echo task()(); ?>
点击 "运行实例" 按钮查看在线实例
运行结果:
深刻理解全名空间的意义,并实例演示多个命名空间的场景
<?php namespace _0929task2 { function func($a,$b){ return $a*$b; } } namespace _0929test { function func($a,$b){ return $a + $b; } } namespace{ // include __DIR__ . '../tset.php'; echo _0929test\func(3,4); // echo '<hr>'; // echo \_0929\func(4,5); echo '<hr>'; echo _0929task2\func(2,5); }
点击 "运行实例" 按钮查看在线实例
运行结果:
实例演示类与对象的关系与使用方式
<?php namespace _0929task3; class db{ public $dsn='mysql:host:127.0.0.1;dbname:video'; public $user='root'; public $pwd='root'; public function connection(){ // ... } } $db=new db(); echo $db->dsn.'<br>'; echo $db->user.'<br>'; echo $db->pwd.'<br>';
点击 "运行实例" 按钮查看在线实例
类与对象之间的关系:类是对象的抽象模板,类中的属性和方法需要通过创建对象实例来访问。
总结命名空间的应用对象, 适用场景以及注意事项
命名控制的主要目的是为了减少在项目中命名的重复和名称的长度,应用对象主要包括:函数、常量、类和接口四种。
注意事项:在同一个脚本文件中尽量只有一个命名空间,如需多个可以外部引用;命名空间和全局空间同时使用时需
要讲命名空间的内容用花括号包起来,用namespace关键字来声明一个匿名空间(即全局空间),namespace关键字
既能用来声明命名空间也能表示当前命名空间。