在php中开启与关闭错误提示的方法有几种一种可以直接在程序中使用相关函数来开户,另一种我们可以使用php.ini中配置参数来控制,下面小编来给各位同学介绍一下。 windows系统开关php错误提示 如果不具备修改php.ini的权限,可以将如下代码加入php文件中:
1 2 |
ini_set("display_errors", "On"); error_reporting(E_ALL | E_STRICT); |
当然,如果能够修改php.ini的话,如下即可:
1 2 3 |
找到display_errors = On 修改为 display_errors = off 注意:如果你已经把PHP.ini文件复制到windows目录下,那么必须同时把c:windows/php.ini里的display_errors = On 修改为display_errors = off PHP .ini中display_errors = Off失效的解决 |
在linux系统中开启与关闭错误提示方法差不多,不过我还是具体给大家介绍一下 linux系统下 1. 打开php.ini文件。 以我的ubuntu为例,这个文件在: /etc/php5/apache2 目录下。 2. 搜索并修改上下行,把Off值改成On
1 |
display_errors = Off |
3. 搜索下行
1 2 3 4 5 |
error_reporting = E_ALL & ~E_NOTICE 或者搜索: error_reporting = E_ALL & ~E_DEPRECATED 修改为 error_reporting = E_ALL | E_STRICT |
4. 修改Apache的 httpd.conf, 以Ubuntu 为例, 这个文件在:/etc/apache2/ 目录下,这是一个空白文件。 添加以下两行:
1 2 |
php_flag display_errors on php_value error_reporting 2039 |
5. 重启Apache,就OK了。 重启命令: :
1 |
sudo /etc/init.d/apache2 restart |
在php中静态方法我们就直接在函数或变量前加一个static就可以了,使用的时候和静态变量差不多,不需要实例化,直接用::调用了,下面我来给大家举几个关于静态方法实例。 PHP也不例外!所谓静态方法(属性)就是以static关键词标注的属性或者方法(例如:静态属性public static username;) 静态方法和非静态方法最大的区别在于他们的生命周期不同,用一个实例来说明 静态方法定义 定义静态方法很简单,在声明关键词function之前加上static,例如:
1 2 3 4 5 6 7 |
class A { static function fun() { // do somathing } } |
静态方法使用 使用的时候和静态变量差不多,不需要实例化,直接用::调用,例如:
1 |
A::fun() |
对比普通方法 因为静态方法的调用不需要实例化,所以在静态方法中引用类自身的属性或者方法的时候会出错,也就是形如self和$this是错误的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
class MyClass { public $num = 5; function __construct() { $this->num = 10; } function fun_1() { echo "I am a public method named fun_1.n"; echo "The num of object is {$this->num}.n"; } static function fun_2() { echo "I am a static method named fun_2.n"; } function fun_3($n) { echo "The arg is {$n}n"; } } $m = new MyClass; $m->fun_1(); $m->fun_2(); $m->fun_3('test'); MyClass::fun_1(); MyClass::fun_2(); MyClass::fun_3('test'); 输出结果: lch@localhost:php $ php class_method.php I am a public method named fun_1. The num of object is 10. I am a static method named fun_2. The arg is test I am a public method named fun_1. PHP Fatal error: Using $this when not in object context in /Users/lch/program/php/class_method.php on line 14 |
再看一实例 用一个实例来说明。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
class user{ public static $username; //声明一个静态属性 public $password; //声明一个非静态属性 function __construct($pwd) { echo ‘Username:’,self::$username; //输出静态属性 self::$username = ‘admin’; //为静态属性赋值 $this->password = $pwd; //为非静态属性赋值 } public function show(){ //输出类属性 echo ‘ Username:’,self::$username; echo ‘ Password:’,$this->password; } public static function sshow(){ echo ‘ Username:’,self::$username; echo ‘ Password:’,$this->password; } } user::$username = ‘root’; //为赋值user类的静态属性赋值 $objUser = new user(’123456′); //实例化user类 $objUser->sshow(); unset($objUser); echo ‘ Username:’,user::$username; /* * 输出结果为: * Username:root * Username:admin * Password:123456 * Usern ame:admin * */ |
从这里实例中可以看出,静态属性在类实例化以前就起作用了,并且在对象被销毁时静态属性依然可以发挥作用! 也因为静态方法的这种属性,所以不能在静态方法中调用非静态属性或者方法 接着看 1、php类中,假设所有的属性与方法的可见性为public,那么在外部访问类的方法或属性时,都必须通过对象【类的实例化过程】来调用。 eg:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
class Log { public $root = DIRECTORY_SEPARATOR; public $logPath = '/data/app/www/test-realtime.monitoring.c.kunlun.com/log'; public $defaultDir = 'default'; public function writeLog($logName, $logType, $data, $newDir = FALSE) { $fileName = ''; if (!file_exists($this->logPath)) { mkdir($this->logPath, 0777); } if ($newDir !== FALSE) { @mkdir($this->logPath.$this->root.$newDir, 0777); $fileName = $this->logPath.$this->root.$newDir.$this->root.date('Y-m-d', time()).'_'.$logName.'_'.$logType.'.log'; } else { @mkdir($this->logPath.$this->root.$this->defaultDir, 0777); $fileName = $this->logPath.$this->root.$this->defaultDir.$this->root.date('Y-m-d', time()).'_'.$logName.'_'.$logType.'.log'; } file_put_contents($fileName, date('Y-m-d H:i:s').' '.$data."n", FILE_APPEND); } } |
类的实例化对象的过程:$logObj = new Log(); 访问类中的方法:$logObj->writeLog($param1, $param2, $param3, $param4); 访问类中的属性:echo $logObj->root; 2、如果类中的属性前被static关键字修饰时,就不能通过对象来访问被static修饰的属性,但如果是类中的方法被static修饰时则即可以通过对象也可以通过类名::方法名的方式来进行访问。 3、如果类中的方法被static修饰则,方法中不能用$this,$this指的是类的实例化对象,由于静态方法不用通过对象就可以调用,所以伪变量$this不可用。 魔术方法是在php5中以__开头的,它们有着魔术般的功能,可以给我开发带来很多好处,下面我来给大家介绍魔术方法一些用法与在php中有那些魔术方法吧。 魔术方法是以两个下划线"__"开头、具有特殊作用的一些方法,可以看做php的"语法糖"。 语法糖指那些没有给计算机语言添加新功能,而只是对人类来说更"甜蜜"的语法。语法糖往往给程序员提供了更实用的编程方式或者一些技巧的用法,有益于更好的编码风格,是代码更易读。不过其并没有给语言添加什么新东西。php里的引用、SPL等都属于语法糖。
1 2 |
$tom = new family($student,'peking'); $tom = people->say(); |
上面family类中的construct方法就是一个标准魔术方法。这个魔术方法又称构造方法。有构造方法就有对应的西沟方法,即destruct方法,西沟方法会在某个对象的所有引用都被删除,或者当对象被显式销毁时执行。这两个方法是常见也是最游泳的魔术方法。 1、__get、__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的。 ◆__get( […]
View Details各种集合类和它们的用法 下面是各种常用的 System.Collection 命名空间的类。点击下面的链接查看细节。 类 描述和用法 动态数组(ArrayList) 它代表了可被单独索引的对象的有序集合。它基本上可以替代一个数组。但是,与数组不同的是,您可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序各项。 哈希表(Hashtable) 它使用键来访问集合中的元素。当您使用键访问元素时,则使用哈希表,而且您可以识别一个有用的键值。哈希表中的每一项都有一个键/值对。键用于访问集合中的项目。 排序列表(SortedList) 它可以使用键和索引来访问列表中的项。排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(Hashtable)。集合中的各项总是按键值排序。 堆栈(Stack) 它代表了一个后进先出的对象集合。当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素。 队列(Queue) 它代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。 点阵列(BitArray) 它代表了一个使用值 1 和 0 来表示的二进制数组。当您需要存储位,但是事先不知道位数时,则使用点阵列。您可以使用整型索引从点阵列集合中访问各项,索引从零开始。 from:https://m.runoob.com/csharp/csharp-collection.html
View Details