
批改狀態(tài):合格
老師批語:
class Teacher{
// 類常量
public const CATES = ['前端','后端','全棧'];
// 靜態(tài)屬性和類常量,屬于類本身,不需要實例化就可以訪問
public static string $uname;
private static int $salary;
public static string $siteName= '中文網(wǎng)';
static int $count = 0;
public function __construct($uname,$salary){
self::$salary=$salary;
self::$uname=$uname;
self::$count++;
}
static function getName(){
return self::$uname.'是老師。';
}
}
$user = new Teacher('mj', 2000);
echo Teacher::$uname;//帶$
print_r(Teacher::CATES);//不帶$
echo Teacher::getName();
echo Teacher::$count;
interface Demo
{
//所有成員必須公開
public const CITY = 'JinHua';
// 所有方法都是抽象方法,只聲明不實現(xiàn)
public function sum($arr);
public function sub($a, $b);
public function mul($arr);
public function div($a,$b);
}
interface test {
public const T =100;
}
abstract class Demo1 implements Demo, test
{
//未實現(xiàn)全部方法則用抽象類,抽象類中可包含抽象方法和實例方法,不能被實例化
//抽象類可以對應(yīng)多個接口,用“,”隔開
//同名方法優(yōu)先級 類同名方法>trait>繼承成員方法
public function sum($arr)
{
return array_sum($arr);
}
public function sub($a, $b)
{
}
public function mul($arr){}
public function div($a,$b){}
}
class Work extends Demo1
{
use t1, t2;
public function sum($arr)
{
return array_sum($arr)+100;
}
public function sub($a, $b)
{
return $a - $b;
}
}
$obj = new Work;
echo $obj->sum([2, 34, 5]);
$obj->dd('hello');
trait 功能組合實現(xiàn)多繼承,給予類的語法,對類功能擴展,不能實例化
trait t1{
public function dd($data){
var_dump($data);
die;
}
}
class Car
{
private static function getName()
{
return 'car';
}
public static function run()
{
//self取決于定義類,不能動態(tài)綁定;如需動態(tài)綁定改用static,static被綁定調(diào)用的類,用于靜態(tài)繼承
// return self::getName();
return static::getName();
}
}
class Benz extends Car{
public static function getName()
{
return 'E300';
}
}
echo Car::run();
echo Benz::run();
// $my = new Benz;
// echo $my::run();
用final標識類在子類中不能被修改,self與static效果同
4.命名空間及USE的使用
全局成員有常量 命名函數(shù) 類(接口),會有命名沖突的問題
namespace name1;
class test{
public static function show(){
return __METHOD__;
}
}
namespace name2;
class test{
public static function show(){
return __METHOD__;
}
}
echo test::show();
//訪問其他命名空間需加空間名,‘\’返回到根空間
echo \name1\test::show();
echo call_user_func(['name2\test', 'show']);
//命名空間的函數(shù)>系統(tǒng)函數(shù)的同名函數(shù)
在框架入口文件中,可用as給use的文件夾起別名,不起別名默認最后一段
const DS= DIRECTORYSEPARATOR;
require _DIR.DS.’autoload.php’;
use app\controller as ac;
use app\controller;
echo ac\Index::index();
echo controller\Login::index();
在自動加載時,要注意文件目錄的設(shè)置,
spl_autoload_register(function($className){
// echo $className.'<hr>';
$file = __DIR__.DS.'class'.DS.$className.'.php';
$file = str_replace("\\",DIRECTORY_SEPARATOR,$className).'.php';
if(is_file($file)&&file_exists($file)) require $file;
// echo $file.'<hr>';
// echo __DIR__;
});
這段老師講的比較亂,還是去自學(xué)消化吧!
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號