
staticpublic与publicstatic是等价的,这两者只是两个修饰符的顺序不同。根据oraclecom教材中第八章的描述,如果两个或两个以上的(不同的)字段修饰符出现在字段声明,它们出现的顺序需与FieldModifier一致,这只是习惯,但不是必需的。部分修饰符说明:public是访问权限修饰符,用于控制外界对类内部成员的访问,声明为public的对象成员是完全共有的,外界可以随意访问,除此之外还有private,protected和默认。static控制类成员变化的修饰符。static是静态成员修饰符,其修饰的静态变量脱离具体对象独立存在,在内存中之后一份拷贝,所有的对象都公用这一个存储空间,所以对static修饰的静态变量进行的修改对该类的所有对象都起作用。static修饰的静态函数代表所有对象的统一 *** 作,只能调用静态变量。static是针对面向对象中的“多态”而提出来的,static修饰的静态成员不存在多态性。附:FieldModifier顺序
1 public:权限是最大的,可以内部调用,实例调用
2 protected: 受保护类型,用于本类和继承类调用
常用场景在权限设置
有需要用到权限的Class,只要继承Base这个Class即可用到登录验证。执行Login的时候会先运行Base里面的方法
3 private: 私有类型,只有在本类中使用。
4 static: 一般是在传值的时候使用,表示值不会被修改,默认为public,可用::访问
private 是完全私有的,只有当前类中的成员能访问到 protected 是受保护的,只有当前类的成员与继承该类的类才能访问 这两个是访问类中成员权限的限制符在类外如果想使用类中的成员,只能直接使用public类型的,protected和private都是不能访问的
/
获取一个函数的依赖
@param string|callable $func
@param array $param 调用方法时所需参数 形参名就是key值
@return array 返回方法调用所需依赖
/
function getFucntionParameter($func,$param=[]) {
if(!is_array($param)) {
$param = [$param];
}
$ReflectionFunc = new \ReflectionFunction($func);
$depend = array();
foreach($ReflectionFunc->getParameters() as $value) {
if(isset($param[$value->name])) {
$depend[] = $param[$value->name];
}elseif($value->isDefaultValueAvailable()){
$depend[] = $value->getDefaultValue();
}else{
$tmp = $value->getClass();
if(is_null($tmp)) {
throw new \Exception("Function parameters can not be getClass {$class}");
}
$depend[] = $this->get($tmp->getName());
}
}
return $depend;
}
function test($a,$b=20) {
echo $a,',',$b;
}
$depend = getFucntionParameter('test',['a'=>30,'b'=>40]);
call_user_func_array('test',$depend); // 30,40
上面的函数是我开发的框架的容器的方法。
php提供了很完整的反射机制。不但可以反射函数,还可以反射方法,反射类构造函数。
private 关键字声名 一个私有的方法或属性;定义了private的方法或属性在类的外部不能访问,只能在本类中使用。
类中使用私有方法:
$this->属性 或 方法()
static 关键字 是创建一个静态方法或静态属性;定义了static 的方法或属性不需要实例化就可以使用。
访问静态变量 类名::$变量名;
访问静态方法 类名::方法名();
访问本类静态变量 self::$变量名;
访问本类静态方法 self::方法名();
访问父类静态变量 parent::$变量名;
访问父类静态方法 parent::方法名();
class Test{
public $var1;
public $var2;
public function __construct(){
//构造函数
}
private function mypriAction(){
//私有方法,只能在类里面访问
}
protected function mypriteAction(){
//私有方法,只能在类里面和了类里面访问
}
public function pre($obj){
//公共方法,实例化以后可以调
echo "<pre>";
print_r($obj);
echo "</pre>";
}
}
$test = new Test();
$arr = array(1,2,3,4,5);
$test->pre($arr);
以上就是关于说说php面向对象编程时static,public,private,protected 各有什么意义全部的内容,包括:说说php面向对象编程时static,public,private,protected 各有什么意义、php class中public,private,protected,static、php protected private什么时候该用什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)