php入门级教程:PHP大小写问题

今天写代码的时候发现自己代码的一处错误:

$m_category->Insert($data);

   我调用了$m_category对象的insert方法,奇怪的是,我自己编写的框架里insert方法名是小写的,但是我这里调用的首字母大写了(公司的框架Model类的方法均为首字母大写,有时候习惯了回家写代码不容易写错)。
    但是很奇怪的是,这段代码在之前的测试是通过的,并没有报错或什么,数据也正常写入了,有些思不得解,于是尝试做了一个实验。
    就从控制器开始吧,我当前控制器中有一个方法是addWiki,那么我新增一个方法addwiki,然后等待了一下,IDE没有为我这个新的方法报错。松了一口气,看来PHP对大小写是敏感的。然后我尝试调用addwiki这个方法,这时候让我惊讶的事情发生了:PHP向我抛出了一个致命错误:addwiki无法被重定义。看样子PHP对方法名的大小写还是不敏感呀。
    还是不死心,也许是我PHP配置的问题,于是上网查找之,找到了不少资料,原来PHP对类名和方法名是大小写不敏感的。

下面抄一些别处的资料,区分PHP大小写敏感的地方。
   
    1. 变量名区分大小写
    2. 常量名默认区分大小写
    3. 函数名、方法名、类名不区分大小写
    4. 魔术常量不区分大小写,推荐大写
    5. NULL、TRUE、FALSE不区分大小写
   
    除了变量名和常量名区分大小写以外,其他统统不区分。不过在我们正常的使用中,都有常量名、魔术变量使用大写的习惯,而NULL、TRUE、FALSE在不少框架中也被推荐使用大写(虽然我自己喜欢用小写),因此问题也不大。据说常量名可以设置为大小写敏感,不过没去查找这方面资料,也不清楚了,当然还是按照约定来使用大写吧。
    重点就在于类、方法、函数名这一点上,好吧,我一直认为类和方法名是大小写敏感的,至今才知道:-(
    不过建议还是注意大小写的好,毕竟PHP不知哪天哪个版本就改掉了这条特性,不再支持大小写不敏感的函数、方法名了

为了让各位更深入了解php中大小写我们整理了一些例子

一、大小写敏感

1. 变量名区分大小写
所有变量均区分大小写,包括普通变量以以及$_GET, $_POST, $_REQUEST, $_COOKIE, $_SESSION, $GLOBALS, $_SERVER, $_FILES, $_ENV等;

<?php
$abc = 'abcd';
echo $abc; //输出 'abcd'
echo $aBc; //无输出
echo $ABC; //无输出

2. 常量名默认区分大小写,通常都写为大写
(但没找到能改变这个默认的配置项,求解)

1 <?php
define("ABC","Hello World");
echo ABC; //输出 Hello World
echo abc; //输出 abc

3. php.ini配置项指令区分大小写

如 file_uploads = 1 不能写成 File_uploads = 1

二、大小写不敏感

4. 函数名、方法名、类名 不区分大小写,但推荐使用与定义时相同的名字

<?php
function show(){
echo "Hello World";
}
show(); //输出 Hello World 推荐写法
SHOW(); //输出 Hello World

<?php
class cls{
static function func(){
echo "hello world";
}
}
Cls::FunC(); //输出hello world

5. 魔术常量不区分大小写,推荐大写

包括:__LINE__、__FILE__、__DIR__、__FUNCTION__、__CLASS__、__METHOD__、__NAMESPACE__。

<?php
echo __line__; //输出 2
echo __LINE__; //输出 3

6. NULL、TRUE、FALSE不区分大小写

<?php
$a = null;
$b = NULL;
$c = true;
$d = TRUE;
$e = false;
$f = FALSE;
var_dump($a == $b); //输出 boolean true
var_dump($c == $d); //输出 boolean true
var_dump($e == $f); //输出 boolean true

7.类型强制转换,不区分大小写,包括:

* (int),(integer) – 转换成整型
* (bool),(boolean) – 转换成布尔型
* (float),(double),(real) – 转换成浮点型
* (string) – 转换成字符串
* (array) – 转换成数组
* (object) – 转换成对象

<?php
$a=1;
var_dump($a); //输出 int 1
$b=(STRING)$a;
var_dump($b); //输出string '1' (length=1)
$c=(string)$a;
var_dump($c); //输出string '1' (length=1)

时间: 2024-09-19 04:41:13

php入门级教程:PHP大小写问题的相关文章

初级入门级教程 CSS的基本语法

css|教程|语法 1. CSS的语法: CSS的定义是由三个部分构成: 选择符(selector),属性(properties)和属性的取值(value). 语法: selector {property: value} (选择符 {属性:值}) 说明: ·选择符是可以是多种形式,一般是你要定义样式的HTML标记,例如BODY.P.TABLE--,你可以通过此方法定义它的属性和值,属性和值要用冒号隔开: 例子:body {color: black},此例的效果是使页面中的文字为黑色. ·如果属性

Oracle sequence序列的入门级教程

sequence含义  Oracle数据库提供了sequence对象,由系统提供自增长的序列号,通常用于数据库数据记录的自增长主键或序号的地方:南京OCM培训  创建语法格式及说明  Create  sequencemysequenc              --自定义序列名称   Increment by 1                                   --设定步长值,即每次增加或减少的等差序列   Start with 1                      

photoshop画斜线/直线/虚线的入门级教程

PS怎么画斜线 选择铅笔工具,或者画笔工具,在你想画的斜线的"起点"点一下(松开鼠标),然后按着shift键   在任何地方点一下就出现斜线了 (当然方法还有很多种,不过这是画直线最好的方法). 看起来像是记录了上一次作图的位置,下次用铅笔按shift点画的时候,就变成画直线了. PS怎么画直线 情况一:水平和垂直 按住shift键横向/总想拖动鼠标画出直线. 情况二:其它的直线 先画笔点击一点,在按住shift键,在另外的地方点击. PS怎么画虚线 1.打开photoshop-新建.

PySqlite简明教程

本文的主要目的是作为一个入门级教程,教你一些如何使用PySqlite来操作Sqite的一些基本的语句,更详细的还要去参考想应的文档以及编写相应的测试程序.希望本文对你有帮助. PySqlite的主页地址:http://pysqlite.sourceforge.net/ 上面有关于使用PySqlite的文档 一.安装 去PySqlite主页上下载安装包,有windows的版本,现支持Python 2.2和2.3版本. 二.创建数据库/打开数据库 Sqlite使用文件作为数据库,你可以指定数据库文件

【转】轻量级IOC框架:Ninject

原文地址:http://www.cnblogs.com/coolcode/archive/2009/11/10/Ninject.html   前言 前段时间看Mvc最佳实践时,认识了一个轻量级的IOC框架:Ninject.通过google搜索发现它是一个开源项目,最新源代码地址是:http://github.com/enkari/ninject/tree/master 用户向导:http://ninject.codeplex.com/wikipage?title=User%20Guide&ref

DW教程之CSS网页制作实例:固定宽度布局

本系列教程为入门级教程,适合初学者学习,由最简单的知识一点一点进阶.主要以实例为主,很少部分理论,这样更适应初学者快速掌握.因本人也正在学习,难免有一些错误或疏漏地方,望各位给予指正.本教程参考<CSS网站布局实录>一书,在此向作者表示感谢. 要想学好DIV+CSS,首先要有一定的HTML和CSS知识,如果这些你还不了解,建议你先去补习这一课,再来学习本教程.另外还要抛弃传统表格布局的思维模式,至于为什么,在你学习本教程中慢慢就会体会到.如果这些你都准备好了,那么开始吧! 一列固定宽度 一列固

FLASH与ASP通信原理入门

经常有人问我FLASH留言板的制作方法,无奈这东西一句两句没办法说清楚,于是就萌发了写教程的想法.可后来又一想,授人以鱼,不如授人以渔,还不如集中精力好好讲将FLASH与ASP的通讯原理,原理通了,具体项目就可以自由发挥了. 我这个教程面向初级群体,在开始教程之前,我假设你已经具备FLASH操作基础知识,了解IIS配置以及运行环境.尽管FLASH与ASP通信方式有很多,但这篇教程中我选择使用LoadVars类,一因为LoadVars类容易掌握,易于讲解:二是因为它不牵扯太多其他方面的知识.另外,

ATL的GUI程序设计(1)

第一章 不能免俗的"Hello, World!" 在这一章里,就像所有的入门级教程一样,我也将不能免俗地以一个"Hello, World!"程序开始我的教程.然后,我将逐步深入,向你介绍这个ATL版本程序中所有必要的信息.此外,我还将介绍一些Win32中你可能不知道的东西,包括WinMain的_t兼容以及如何在MessageBox中加入自己的图标等等. 接近,接近,再接近-- 可以说,所有"Hello, World!"程序的内容不外乎都是以十分有

为ASP.NET MVC框架添加AJAX支持

一.引言 本文中,我们将向你展示如何在基于ASP.NET MVC框架构建 的ASP.NET应用程序中添加一些基本的Ajax特征(例如局部更新及行为组件等概念 ). [说明]本文向你提供了有关于ASP.NET MVC框架的完整应用源码及 测试示例.在本文方案中,共有两个工程:一个是TaskList(Web应用程序), 另一个是AjaxMVC(一个提供了扩展的Ajax支持的类库).请注意,类库AjaxMVC 中提供的函数实现了一些基本的Ajax功能,例如不依赖于页面回寄的局部更新以 及关联到DOM元