PHP的静态及类中声明的常量

静态的关键字是static,static是一个修饰符,用于修饰类的行为和类的对象,除了可以被对象调用外,还可以直接被类名调用。

** 常量
   // $this只能访问类中的变量和函数
        //在类的内部访问类中的常量只能使用self关键字
如果需要在类的外部来直接访问类中的常量,那么直接使用类名+::,也可以使用该类的实例化的对象来访问类中的常量
**静态变量
* 静态变量是只存在于函数作用域的变量
在类的内部访问类中的静态变量只能使用self关键字
静态变量比较特殊,它是被放置在计算机内存的静态区当中
静态变量只要调用了该类就会被创建;且对于一个类来说,每个静态变量只会在内存中保持一个
举例: 从PHP5.3.0开始才能使用下面的访问方式
echo $test::$num;
$test::$num = 200;
echo ‘改变后的静态变量:‘.$test::$num;
**静态方法
* 静态方法和非静态方法之间有一个重要的区别:在调用静态方法时,不再需要拥有类的实例。
非静态的函数可以直接调用静态函数方法
伪变量 $this 在静态方法中不可用
因为调用静态函数方法不需要创建类的实例化对象    如: $this->desc();
静态方法的外部访问:使用类名+范围解析操作符+静态函数方法名
举例:MyObject::desc2();

$a->desc2(); // 这样的方式来访问静态资源,不推荐

举个例:

时间: 2024-10-07 00:10:47

PHP的静态及类中声明的常量的相关文章

声明一个MyClass类,在类中声明一个常量,和一个成员方法

<?php class MyClass { //声明一个MyClass类,在类中声明一个常量,和一个成员方法 const CONSTANT = 'CONSTANT value'; //使用const声明一个常量,并直接赋上初使值 private $foo; private $sss; function __construct($foo,$sss){ $this->foo = $foo; $this->sss = $sss; } function showConstant() { //声明

条款十三: 初始化列表中成员列出的顺序和它们在类中声明的顺序相同

template<class t> class array { public: array(int lowbound, int highbound); ... private: vector<t> data; // 数组数据存储在vector对象中 // 关于vector模板参见条款49 size_t size; // 数组中元素的数量 int lbound, hbound; // 下限,上限 }; template<class t> array<t>::a

“CObject::operator =”: 无法访问 private 成员(在“CObject”类中声明)

c++工程编译报错: “CObject::operator =”: 无法访问 private 成员(在“CObject”类中声明) 错误无法直接定位源码位置,网上搜索了,也和我的代码不一样. 最后还是自己认真检查代码,发现了个问题 头文件定义了一个CEvent x, 源码文件中使用了 x = new CEvent(true,false); 原来是这里错误了,x是一个直接实例化了的对象,不能再指向另一个实例,只有指针才能这样用. 于是改为CEVent* x;就可以了.

error C2248: “CObject::operator =”: 无法访问 private 成员(在“CObject”类中声明)

MFC编码时报错: 显示:error C2248: "CObject::operator =": 无法访问 private 成员(在"CObject"类中声明) 这种问题是你刚开始声明的是指针类型变量,后来又改为了非指针型,最好直接使用指针型变量. 

php--在类中声明常量的关键字

Final.static.const.instanceod Final :final关键字可以加在类或者类中方法之前,但是不能使用final标识成员属性. 作用: 使用final标识的类,不能被继承. 在类中使用final标识的成员方法,在子类中不能覆盖. const:const关键字是在类中定义常量,而define()函数也是定义常量,但它是在类外定义常量. 调用方式和静态成员是一样的,都是通过类名或者在成员方法中使用self关键字进行访问,但是不建议使用对象引用进行访问. instanceo

静态工具类中使用注解注入service

转载:http://blog.csdn.net/p793049488/article/details/37819121 一般需要在一个工具类中使用@Autowired 注解注入一个service.但是由于工具类方法一般都写成static,所以直接注入就存在问题. 注:Spring工厂要有这个bean. 使用如下方式可以解决: /** * */ package cn.ffcs.drive.common.util; import javax.annotation.PostConstruct; imp

VC++ error C2248: &ldquo;CObject::CObject&rdquo;: 无法访问 private 成员(在&ldquo;CObject&rdquo;类中声明)

在使用诸如:CArray或是 CList等类时,经常会出现此错误 此错误的原因是由于自定义的类的数组项时 有一个操作如  Add()  在这个操作中,实际上需要一个 = 操作,但是这个 =操作在 自定义类中没有实现,于是,程序自动去它的parent 类 也就是 CObject 类去找,但是却找到个这个类的 = 是一个 private  于是就报了这个错误. 知道了原因解决方法自然就有了,那就是在自定义类中 重载操作符 =   重载后 这个错误就没有了. class COptRect : publ

静态工具类中使用注解注入service(静态方法调用有注解的非静态方法)

原文转载:http://blog.csdn.net/p793049488/article/details/37819121 解决方案如下: /** * */ package cn.common.util; import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired;

C++类中的常量

由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用 const 修饰数据成员来实现.const 数据成员的确是存在的,但其含义却不是我们所期望的.const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其 const 数据成员的值可以不同.   不能在类声明中初始化 const 数据成员.以下用法是错误的,因为类的对象未被创建时,编译器不知道 SIZE 的值是什么. class A {  const int SIZ