首页
学习
活动
专区
圈层
工具
发布

PHP类的静态(static)方法和静态(static)变量使用介绍

在php中,访问类的方法/变量有两种方法: 1. 创建对象object = new Class(),然后使用”->”调用: 2....直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件: A. 如果是变量,需要该变量可访问。 B....如果是方法,除了该方法可访问外,还需要满足: b1) 如果是静态方法,没有特殊条件; b2) 如果是非静态方法,需要该方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题...静态变量 静态成员只保留一个变量值,而这个变量值对所有的实例都是有效,也就是说,所有的实例共享这个成员。 2....静态方法 静态方法可以直接使用class::… 来调用,而非静态方法需要满足一定限制条件才能使用class::.. 的方法调用,如之前所述

4.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    php学习之类与对象的类的静态属性

    静态变量定义 静态变量是当前类的所有对象共享的变量,任何一个该类的对象去访问它时,取得的都是相同的值,同样任何一个该类的对象去修改它时,也时同样被修改 定义静态变量 访问修饰符 static 静态属性名...; static 访问修饰符 静态属性名; 两种方式都可以 访问静态变量 在类的内部访问:有两种方式 self::静态属性名; 类名::$静态属性名; ?...在类的外部访问 如果是在类的外部访问今天属性,静态属性需要是public,否则也不能直接访问,访问的形式是   类名::$属性名 $thishe self 的区别 使用方式不同 self:: $this...-> self是类的范畴指向类,$this是对象实例,指向对象实例 静态变量的使用注意事项 如果在类的内部去使用静态变量,有两种形式,self::$静态变量,   类名::$静态变量, 静态属性可以是public...、protected、private 在类的外部访问静态属性时 只能是类名::$静态属性名,要求是public 静态变量可以在定义时,直接初始化,普通的成员属性也可以 需求: 玩游戏时,当有人加入游戏时加一

    80400

    PHP 面向对象篇:类与对象、访问控制

    关键字进行类的实例化: $car = new Car(); 然后就可以操作类属性或者调用类方法了,类常量值不可更改,只能访问,在类外面访问类常量,需要通过类名 + :: + 常量名的方式: var_dump...(Car::WHEELS); 由于常量是类级别的,无需实例化即可访问。...(类级别用 self:: 访问,后面讲静态属性和方法时会介绍),除了构造函数之外,普通类方法中也可以使用 this: /** * 开车 */ public function drive() {...-w517 6、访问控制 最后,我们来看看 PHP 中类属性和方法的访问控制,在 PHP 中,类属性和方法的访问控制作用域是当前类与继承类中,关于类的继承,学院君会在下篇教程中介绍。...这个时候,在 PhpStorm 中,可以看到之前在类外部直接访问类属性的代码会报错: ?

    2.6K10

    php学习之类与对象的类的静态方法

    基本介绍 当程序员需要对静态属性进行操作时,就需要定义静态方法处理,静态方法是专门操作静态属性的 基本语法 class 类名{ 访问修饰符 static function 函数名 (){ //函数体 }...,通过$this也可以 静态方法中只能访问静态属性, 不能访问非静态属性 普通成员方法,既可以访问非静态属性也可以访问静态属性 如果静态方法被protected或private修饰,也不能在类的外部使用...静态方法中只能访问静态属性,不能访问非静态属性 //echo $this->name.'...php //编写一个操作数据库的工具类,要求只能创建一个对象 class DaoMysql{ //定义需要的属性 //连接数据库 private $mysql_link; //定义一个静态属性,用来类的对象实例...php //编写一个操作数据库的工具类,要求只能创建一个对象 class DaoMysql{ //定义需要的属性 //连接数据库 private $mysql_link; //定义一个静态属性,用来类的对象实例

    71400

    Nginx 静态资源访问

    # Nginx 静态资源访问 引言 如何访问 Nginx 的静态资源?这其中涉及到了 Nginx 的核心功能 Rewrite 重写技术,本内容将讲解处理访问静态资源的相关知识。...Nginx的跨域问题 同源策略 跨域问题 跨域案例 解决方案 静态资源防盗链 什么是资源盗链 防盗链实现原理 防盗链实现实例 针对目录防盗链 Rewrite功能配置 地址重写与地址转发 set指令 Rewrite...default_type application/json; # return 的格式是 json return 200 '{"id":1,"name":"TOM","age":18}'; } # 静态资源防盗链...# 多级域名 当你配置了多级域名,如二级域名 xxx.frxcat.fun,并且静态资源目录恰好和二级域名的 xxx 可以匹配,则可以使用正则表达式进行匹配,日后,如果又多个 xxx,则再创建对应的该目录即可...listen 80; server_name localhost; location / { root /usr/local/nginx/html; # 静态文件根目录

    8.2K20

    PHP 静态属性和静态方法

    1、基本使用 前面介绍的 PHP 类属性和方法都要在类实例化后才能调用(常量属性除外),除此之外,PHP 还提供了静态属性和静态方法,所谓「静态」指的是无需对类进行实例化,就可以直接调用这些属性和方法,...PHP_EOL; 如果是在类内部方法中,需要通过 self:: 引用当前类的静态属性和方法,就像常量一样,因为静态属性和方法无需实例化类即可使用,而没有实例化的情况下,$this 指针指向的是空对象,...调用另一个类的静态属性/方法 如果在一个类中调用其他类的静态属性和方法,需要通过 完整类名:: 进行引用: 类而不是调用时的,为了解决这个问题,从 PHP 5.3 开始,新增了一个叫做后期静态绑定的特性。...关于 PHP 静态属性和方法的使用就简单介绍到这里,明天,学院君将给大家介绍下 PHP 类中常见的魔术方法。 (全文完)

    4.6K10

    php静态延迟方法,phpstatic延迟静态绑定_PHP教程

    function create(){ return new u2(); } } 这段代码正常工作是没问题,但大量重复的代码会很烦人 我不想在每个子类中添加create方法,如果把create方法放在超类U...on line 21 因此self被解析为定义create的U,而不是解析为调用self的u1类。...php5.3之前,在这方面都有严格的限制,产生过很多笨拙的解决方案,php5.3引入了延迟静态绑定 及使用 关键字 static static类似self,但它指的是被调用的类而不是包含类。...} class u1 extends U{ } class u2 extends U{ } u1::create(); static不仅可以用于实例化,和self,parent一样还可以作为静态方法的调用标识符...,甚至是从非静态上下文中调用 abstract class U{ private $group; public function __construct(){ $this->group=static

    1.3K10

    PHP类中访问控制的一些Tips

    PHP类中访问控制的一些Tips 包括PHP在内的大部分面向对象的编程语言,都提供了对类的变量或方法的访问控制。这是实现面向对象封装能力的基础。...这时,就需要使用private私有的变量和方法,私有的变量或方法只有这个类自己可以访问。而有些变量和方法自己的子类需要使用,但又不能暴露给外部,那么我们就会使用protected,也就是受保护的。...最后就是公开不管类内部、外部还是继承的子类都可以使用的public公共变量或方法了。 我们通过变量的访问控制先来复习一下这三种访问控制符的作用。...B类继承了A类,所以它可以访问到A类的$public和$protected变量,但是,请注意,$private变量是无法访问到的。...父类的setPrivate()方法当然也不能访问子类的private变量,因此,子类也要重写一个setPrivate()方法来为自己的$private变量赋值。

    1K20

    【C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )

    : 使用 类名 和 域操作符 访问 : // 通过 类名:: 调用 静态成员函数 Student::fun(); 使用 对象 访问 : // 通过 对象...., 普通的 成员变量 和 成员函数 , 需要 通过 类 的 实例对象 来访问 , 需要 依托于 对象才能存在 , 而 静态成员函数 可以在 不创建 实例对象的前提下被调用 , 因此 静态成员函数中 不能访问...进行的 ; 在 Student 类中定义静态成员函数 , 使用 static 关键字修饰函数 ; 注意 : 不要在 静态函数中 访问 非静态成员 , 否则会报错 " 对非静态成员“Student::m_age...//m_age = 10; cout 静态成员函数被调用 : number = " << number << endl; } 访问 类的 静态成员函数 时 , 可以使用 类名:: 调用...静态成员变量 // 使用 域操作符 访问 类静态成员变量 // 类名::静态成员变量名 cout << "Student::number = " << Student::number << endl

    3K20

    CDN加速静态文件访问

    CDN加速静态文件访问 全局调度 缓存技术 内容分发 带宽优化 CDN是Content Delivery Network的缩写,意思是内容分发网络。...我们一般把一些相对静态的文件(例如图片、视频、JS脚本、一些页面框架)放在CDN中。 图1-1 ? 我们通过浏览器访问一个网站的过程大致如图1-2所示。 图1-2 ?...而在有了CDN以后,用户通过浏览器访问网站的过程会产生一些变化。如图1-3 图1-3 ? (1)用户向浏览器提交要访问的域名。...CDN地址,才能做到就近访问,从而提升速度。...内容分发 这里提到的内容分发主要是对内容全部在CDN上不用回源的数据的管理和分发,例如一些静态页面等。具体做法是在内容管理系统中进行编辑 修改后,通过分发系统分发到各个CDN的节点上。

    5.8K10

    访问日志不记录静态文件,访问日志切割,静态元素过期时间

    笔记内容: 11.22 访问日志不记录静态文件 11.23 访问日志切割 11.24 静态元素过期时间 笔记日期:2017.10.10 11.22 访问日志不记录静态文件 ?...使用浏览器打开一个网站时,我们可以按F12打开控制台,在Network中可以看到许多在访问时下载的静态文件,这些对静态文件的请求都会记录到访问日志里面的: ?...因为静态的图片太多了,如果每一个请求全都要记录在访问日志里的话,就会导致访问日志一天下来可能得记录几个G甚至十几个G的内容,但是这种静态图片的请求是没必要去记录在访问日志里的,所以我们要让访问日志不记录指定类型的文件...11.24 静态元素过期时间 ? 当我们使用浏览器打开一个网站的时候,浏览器会将页面上的静态元素:图片、样式、动画等,缓存到一个目录里存放着,下次访问时就不需要再次请求服务器进行下载了。...但是这些缓存是有一个规定的过期时间的,这个时间是在服务器上定义的,到了过期时间后这些缓存的静态元素都会被清空,这时再访问那个网站的时候就得重新下载了。 这个细节可以在浏览器的控制台上观察到: ?

    1.5K20

    访问日志不记录静态文件,访问日志切割,静态元素过期时间

    访问日志不记录静态文件: 配置文件:(红色img后缀的拷贝到服务器里面)     DocumentRoot "/data/wwwroot/www.123.com"...wwwroot/www.123.com/images //创建目录,并在这目录下上传一个图片  curl -x127.0.0.1:80 -I 123.com/images/123.jpg      = 访问端口... tail /usr/local/apache2.4/logs/123.com-access_log    =查看日志 访问日志切割: 修改完配置文件后,需要重新访问下网址才能生动生成日志文件,以后每到...local/apache2.4/conf/extra/httpd-vhosts.conf 修改完后重新加载配置文件后,浏览器重新登陆网址 就自动生成以日期命名的日志文件了 可以查看下它的内容记录 11.24 静态元素过期时间...这时候的状态码是200,还有一项过期时间是86400秒Cache-Control:max-age=86400 然后再按f5刷新,这时候状态码就变304了,因为这个图片已下载了,在缓存里有了 用curl访问测试查看到的开始时间与结束时间刚好是

    1.2K60

    PHP后期静态绑定

    在看到后期静态绑定这个词的时候,感觉挺官方的,不太好理解,这里为我权当做个笔记了 即在类的继承过程中,使用的类不再是继承的类.而是调用的类,通过static关键字来实现,"static"不在被解析定义为当前方法所在的类...,而是在实际运行时计算得到的,即为运行时最初调用的类,虽然称为后期静态绑定 但是并不局限于静态方法的调用 class A { public static function call()...::test(); // 输出 class A class B 在上面的实例中,在调用test() 函数的时候,"self::"是直接调用的本类中的方法,而static是根据调用test()函数的类来决定..."static::"的值,因此static的值只有在调用时才能确定下来.这里需要注意的是,static并不限于静态方法的调用,它同样适用于非静态方法,调用的方式如上一致,是在调用时动态确定的,下面给出例子

    1.1K10

    PHP面向对象-子类对父类成员的访问(一)

    在PHP面向对象编程中,子类可以继承父类的属性和方法,并且可以访问和修改它们。子类可以通过继承和覆盖父类的方法来实现自己的行为,也可以通过调用父类的方法来扩展父类的行为。...访问继承的属性子类可以继承父类的属性,并且可以使用它们来实现自己的行为。子类可以访问继承的属性,包括公共、保护和私有属性。...然后我们定义了一个Dog类,它继承自Animal类,并添加了一个bark()方法。我们创建了一个Dog对象,并使用继承的getInfo()方法访问了父类的属性。...在子类中,我们使用parent::__construct()方法调用父类的构造函数来设置继承的属性。在子类中,可以访问继承的公共和保护属性,但不能直接访问继承的私有属性。...如果需要访问继承的私有属性,可以在父类中添加一个公共的访问器方法。

    1.6K20

    PHP面向对象-子类对父类成员的访问(二)

    访问继承的方法子类可以继承父类的方法,并且可以覆盖它们以实现自己的行为。子类可以调用继承的方法,包括公共、保护和私有方法。...然后我们定义了一个Dog类,它继承自Animal类,并添加了一个公共的bark()方法、一个公共的walkAndBark()方法和一个公共的eat()方法。...在Dog类中,我们调用了继承的walk()方法,并且使用$this->语法调用了自己的bark()方法。我们还覆盖了继承的eat()方法,以实现自己的行为。...如果需要调用继承的私有方法,可以在父类中添加一个公共的调用器方法。在子类中,还可以覆盖继承的方法以实现自己的行为。在覆盖方法时,可以使用parent::语法调用父类的方法。...在上面的示例中,Dog类覆盖了继承的eat()方法,并使用echo语句输出了自己的行为。

    1.2K50
    领券