Fork me on GitHub

PHP语法基础

特性

  1. PHP是一种服务器端解释的脚本语言,它是目前最流行的Web编程脚本语言之一。
  2. PHP可以产生动态网页。
  3. PHP可以和HTML脚本融合在一起,并且对于许多数据库系统来说,PHP都具有针对它们的内置连接。
  4. PHP具有大量可供开发Web应用程序时使用的可扩展函数库。

竞争对手

Perl、Microsoft ASP.NET、Ruby(on Rails或其他)、JavaServer Pages(JSP)和ColdFusion。

服务器端脚本 VS 客户端脚本

通过PHP,我们可以生成能在任何浏览器中查看的纯HTML——换句话说,用户的浏览器并不需要理解PHP。PHP脚本在Web服务器上被解释和执行,这与在用户机器上的Web浏览器中解释并执行的JavaScript及其他客户端技术是不同的。
使用服务器端脚本语言的主要原因就是能够为站点用户提供动态内容。这是一个非常重要的应用,因为根据用户需求或随着时间的推进而变化的内容可以使得用户不断地访问这个站点。

PHP是如何与Web服务器协作的

通常,当用户向Web服务器请求一个Web页面的时候,服务器会读取一个简单的HTML文件(这可能包含也可能不包含JavaScript),并且将其内容发送回浏览器作为响应。如果请我的是一个PHP文件,或者是包含PHP代码的一个HTML文档,并且服务器支持PHP,那么服务器会查找文档中的PHP代码,执行它并且在页面中用这段PHP代码的输出来替代PHP代码。
当用户请求页面的时候,Web服务器会判断这是一个PHP页面而不是一个常规的HTML页面。如果Web服务器支持PHP,它通常把扩展名为.php的任何文件都当作PHP页面对待。假设这个页面的名称类似于index.php,当Web服务器接受到请求的时候,它扫描页面,查找PHP代码,然后运行所找到的任何代码。PHP代码通过PHP标签和页面剩下的部分区分开来。无论何时,当服务器找到这些标签的时侯,它将其中的任何内容都当作是PHP代码。

访问表单变量

简短风格

$tireqty 但是需要将register_globals配置选项设置为on。
表单中的特定域将在表单处理脚本(PHP)中创建同名变量。而且,这个同名变量会自动转换成PHP全局变量,因此在你所创建的变量与直接来自用户的不可信任的变量之间没有明显的区别。

中等风格

$_POST['tireqty']
$_GET['tireqty']
$_REQUEST['tireqty']
推荐使用,具体采用哪一个取决于提交表单时采用的方法。

冗长风格

$HTTP_POST_VARS['tireqty']
已弃用

PHP数据类型

PHP可以在任何时间根据保存在变量中的值来确定变量的类型。

  • Integer(整数)——用来表示整数

  • Float(浮点数,也叫Double,双精度值)——用来表示所有实数

  • String(字符串)—用来表示字符串
    两种字符串类型:
    单引号:当成真正的文本
    双引号:试着计算其中的变量

  • Boolean(布尔值)——用来表示true或者false

  • Array(数组)——用来保存具有相同类型的多个数据项
    PHP支持数字索引数组和关联数组。

  • Object(对象)——用来保存类的实例

  • 常量

    • 常量值一旦被设定后,在脚本的其他地方就不能再更改。
    define('TIREPRICE', 100);
    define('OILPRICE', 10);
    define('SPARKPRICE', 4);
    
    • 常量名称都是由大写字母组成的。这样就可以很容易区分变量和常量。
    • 常量和变量之间的一个重要不同点在于引用一个常量的时候,它前面并没有s符号。如果要使用一个常量的值,只需要使用其名称就可以了。

此外还有两个特殊的类型:NULL(空)和resource(资源)。没有被赋值、已经被重置或者被赋值为特殊值NULL的变量就是NULL类型的变量。特定的内置函数(例如数据库函数)将返回resource类型的变量。它们都代表外部资源(例如数据库连接)。
基本上不能直接操作一个resource变量、但是通常它们都将被函数返回,而且必须作为参数传递给其他函数。

作用域

作用域是指在一个脚本中某个变量可以使用或可见的范围。PHP具有6项基本的作用域规则。

  • 内置超级全局变量可以在脚本的任何地方使用和可见。
  • 常量,一旦被声明,将可以在全局可见;也就是说,它们可以在函数内外使用。
  • 在一个脚本中声明的全局变量在整个脚本中是可见的,但不是在函数内部。口函数内部使用的变量声明为全局变量时,其名称要与全局变量名称一致。
  • 在函数内部创建并被声明为静态的变量无法在函数外部可见,但是可以在函数的多次执行过程中保持该值。
  • 在函数内部创建的变量对函数来说是本地的,而当函数终止时,该变量也就不存在了。
    $_GET$_POST数组以及一些其他特殊变量都具有各自的作用域规则。这些被称作超级全局变量,它们可以在任何地方使用和可见,包括内部和外部函数。
    超级全局变量的完整列表如下所示:
    $GL0BALS,所有全局变量数组(就像global关键字,这将允许在一个函数内部访问全局变量——例如,以$GLOBALS[myvariable]的形式。)
    $_SERVER,服务器环境变量数组
    $_GET,通过GET方法传递给该脚本的变量数组
    $_POST,通过POST方法传递给该脚本的变量数组
    $_COOKIE,cookie变量数组
    $_FILES,与文件上传相关的变量数组
    $_ENV,环境变量数组
    $_REQUEST,所有用户输入的变量数组,包括$_GET$_POST$_COOKIE所包含的输入内容(但是,不包括PHP4.3.0版本以后的$_FILES
    $_SESSION,会话变量数组

操作符

  • 恒等操作符===,只有当恒等操作符两边的操作数相等并且具有相同的数据类型时,其返回值才为true。
  • 不恒等操作符!==
  • &&||与C/C++用法一样。andor&&||一样,但优先级较低。
  • 三元操作符?:
    condition ? value if true : value if false
  • 错误抑制操作符@
    错误抑制操作符可以在任何表达式前面使用,即任何有值的或者可以计算出值的表达式之前
    $a = @(57/0);如果没有@操作符,这一行代码将产生一个除0警告。使用这个操作符,这个警告就会被抑制住。
    如果通过这种方法抑制了一些警告,一旦遇到一个警告,你就要写一些错误处理代码。
@$fp = fopen("$document_root/../orders/orders.txt", 'ab');
if (!$fp){
echo "<p><strong> Your order could not be processed at this time. "
.Please try again later.</strong></p></body></html>";
exit;
}

如果fopen()函数调用失败,函数将返回false。可以以一种对于用户友好的方式来处理这个错误,可以通过抑制PHP的错误信息并且根据自己的方式给出错误信息:

  • 执行操作符` `
    执行操作符实际上是一对操作符,它是一对反向单引号(`),反向引号不是一个单引号。
  • 数组操作符[ ]
  • 类型操作符instanceof
    class MyClass
    {
    }

    class NotMyClass
    {
    }
    $a = new MyClass;

    var_dump($a instanceof MyClass);
    var_dump($a instanceof NotMyClass);

输出结果

    bool(true)
    bool(false)
posted @ 2019-02-20 22:35  克拉默与矩阵  阅读(...)  评论(...编辑  收藏