第一章小记

1.3.1-------- PHP标记
    1. XML风格:<?php   ?>  推荐使用这个风格,服务器管理员不能禁用这种风格的标记。
    2.简短风格:<?   ?>要使用这种风格必须在配置文件中启用short_open_tag选项,或者启用短标记选项编译php。在许多环境的默认设置中已经不支持。
    3.script风格:<script  language='php'></script>
    4.asp风格: <%   %>需要在配置设定中启用asp_tags选项,默认是禁用的。
1.3.4-------- 注释
    多行:/*  C风格注释  */  多行注释是无法嵌套的。
    单行://C++风格    #shell脚本注释     注释符号之后行结束之前,或者PHP结束标记之前的所有内容都是注释。
               例: //here is a comment ?>here is not    "here is not"将被当作是html输出 
1.5------ 访问表单变量
    1.简短风格:$tireqty     要使用这种风格需要将register_globals配置选项设置为on,这种风格的标记容易导致产生安全性问题的错误。
    2.中等风格:$_POST['tireqty']  $_GET['']   $_REQUEST[''] 如今所推荐。表单用POST方式提交就用$_POST[],用GET方式提交就用$_GET[],任何方式提交都可使用$_REQUEST[]。
    3.冗长风格:$HTTP_POST_VARS['tireqty']    已被弃用。这种风格过去曾是最容易移植的,但是如今可以通过register_long_arrays配置指令禁用它,这样可以改进性能。因此,
                        如果不需要将代码安装在旧版本的服务器上,就没有必要在新代码中使用这种风格。
    二、指定字符串
            '$tireqty tires'       "$tireqty tires"   例:$tireqty="hello";  echo "$tireqty tires" 输出hello tires       echo '$tireqty tires' 输出 $tireqty tires
            在双引号中,变量名称将被变量值所替代。而在单引号中变量名称将会不经修改输出,也就是被当字符串输出。
            heredoc语法<<< :       echo <<<theEnd
                                                    line 1
                                                    line 2
                                                    line 3
                                                theEnd
                            在<<<theEnd 和theEnd前面的内容都将被当作字符串输出。相当于双引号。
1.6--------- 理解标识符
    标识符是变量的名称。(函数和类的名称也是标识符)。
         1.标识符可以是任何长度,而且可以由任何字母、数字、下画线组成。
        2.标识符不能以数字开始。
        3.标识符是区分大小写的。$e和$E是不同的。函数名称是个例外----函数名称不区分大小写。
        4.一个变量的名称可以与一个函数的名称相同,但应该尽量避免。此外,不能创建一个具有与已有函数同名的函数。
 
 
1.7--------- 检查变量类型
    1.7.1---PHP的数据类型
        基本数据类型:Integer---整数 、Float----浮点数,也叫Double双精度值、String----字符串、Boolean----布尔值,用来表示true或false、array----数组、Object_----对象,用来保存类的实例。
      (特殊类型):  NULL----空,没有被赋值,已经被重置或被赋值为特殊值NULL的变量就是NULL类型的变量。
                                resource-------资源,特定的内置函数(例如数据库函数)将返回resource类型的变量,它们都代表外部资源,基本上不能直接操作一个resource变量,通常它们都将被函数返回,而且必须作为参数传给其他函数。
    1.7.2--------类型强度
        PHP是非常弱的类型语言。 变量的类型是由赋给变量的值确定的。PHP可以在任何时间根据保存在变量中的值来确定变量的类型。
                例:$a=0.00;  //$a为float型  $a="hello";   //这样$a就变成了字符串类型了
     1.7.3--------类型转换
           $a=0;  $a=(float)$a;   //意思是  取出保存在$a中的变量值,将其解释成一个float类型并将其保存在$a中。
    1.7.4--------- 可变变量
        用一个变量的值作为另一个变量的名称
        $a="hello";  $$a=5;  这个等价于$hello=5;
1.8-------- 声明和使用常量
    声明:define('a',100);
    1.常量值一旦被设定一,在脚本的其他地方就不能再改变。
     2.常量名称都是由大写字母组成的,但不是必须,便于容易区分变量与常量。
     3.常量只可以保存bool、int、float、string类型,这些类型都是标题数据。
1.9--------- 理解变量的作用域
作用域是指在一个脚本中某个变量可以使用或可见的范围。
1.内置超级全局变量可以在脚本的任何地方使用和可见。
2. 常量一旦被声明将可以在全局可见,也就是说,它们可以函数内外使用,但是这仅仅限于一个页面之中(包含我们通过include和include_once)包含进来的PHP脚本,但是在其他的页面之中就不能使用了。
3. 在一个脚本中声明的全局变量在整个脚本中是可见的,但不是在函数内部,在函数内部的变量如果与全局变量名称相同,以函数内部的变量为准。
4. 函数内部使用的变量声明为全局变量时,其名称要与全局变量的名称一致,在这样的情况下,我们就可以在函数中使用函数外部的全局变量了,这样就可以避免上一种因为函数内部的变量与外部的全局变量名称相同而覆盖了外部变量这样的情况。
5.在函数内部创建并声明为静态的变量无法在函数外部可见,但是可以在函数的多次执行过程中保持该值,最常见的情况就是在函数的递归执行的过程之中。
6.在函数内部创建的变量对函数来说是本地的,而当函数终止时,该变量也就不存在了。

超级全局变量的完整列表如下:
$GLOBALS、$_SERVER、$_GET、$_POST、$_COOKIE $_FILES $_ENV $_REQUEST $_SESSION

1.10------ 操作符
复合赋值操作符: += -= *= /= %= .=
1、 前置递增递减
++$a //首先将变量$a加1,再将加1后的结果赋值给原变量。若$a=4; echo ++$a; 输出5
后置递增递减
echo $a++ //先$a的值被返回,再加上1。就是执行完语句后$a的值才会变。
2.引用操作符
例:$a=4;$b=&$a;//$b为4 $a=5;//改变$a的值,$b的值也将改变
使用&引用操作符,$a,$b都指向了内存的相同地址。
可通过unset($a)重置它们来改变所指向的地址。
3. 比较操作符
=== 恒等 !==不恒等 ===只有操作符两边的操作数相等并具有相同的数据类型才会返回true
例:0==='0' 返回false 因为右边的为字符串
4.逻辑操作符
xor 异或 如果$a或$b为true,返回true。如果都是true或false,则返回false。
操作符and 和 or 比&&和 || 的优先级低。
5.其他操作符
三元操作符 condition ? value if true : value if false
($a>=50 ? 'passed' : 'failed') //如果$a大于或等于50,将返回passed,否则返回failed。
错误抑制操作符
@ 可以在任何表达式前使用。抑制一些警告。
如果已经启用了PHP配置文件的track_errors特性,错误信息将会被保存在全局变量$php_errormsg中。
6.执行操作任
`` 它是一对反向单引号 ,PHP试着将反向单引号之间的命令当作服务器端的命令行来执行。

1.13---------- 使用可变函数
1.13.1---测试和设置变量类型
string gettype(mixed var); //必须传递一个变量,它将确定变量类型并且返回一个包含类型名称的字符串:bool int double string array object resource 。 如果变量类型不是标准类型之一,该函数就会返回“unknown type”。
bool settype(mixed var , string type) //设置变量类型
is_array();检查变量是否是数组 。
is_double()、is_float()、is_real():检查变量是否是浮点数。
is_long()、is_int()、is_integer():检查变量是否是整数。
is_string() is_bool() is_object() is_resource() is_null()
is_scalar() :检查变量是否是标题(整数、布尔值、字符串、浮点数)
is_numberic():检查变量是否是任何类型的数字或数字字符串
is_callable():检查变量是否是有效的函数名称

1.13.2----测试变量状态
bool isset(mixed var);[;mixed var[...]] //若传递过去的变量存在返回true 否则返回false。也可以传递一个由逗号间隔的变量列表,都被设置了返回true。
void unset(mixed var);[;mixed var[...]] //销毁一个传递过来的变量
1.13.3----变量的重解释
int intval(mixed var) float floatval(mixed var) string strval(mixed var)
1.14 ---------根据条件进行决策
if( expression){...}else{...} if( expression){...}elseif( expression){....}else{.....}

switch(expression){
case label1:
code.....;
break;
case label2:
...
...
}
当switch语句中的特定case被匹配时,PHP将执行该case下的代码,直到遇到break语句。
若没有break语句,将执行接下去匹配的case下的代码,直到遇到break才退出switch。

1.15----------循环
1.while循环
while(condition) expression;
for foreach do...while

1.16-从控制结构或脚本中跳出
在循环中使用break语句,脚本就会从循环体后面的第一条语句处开始执行。
continue语句跳到下一次循环; exit语句结束整个PHP脚本的执行。(当执行错误检查时,这个语句非常有用。)
1.17---------使用可替换的控制结构语法
由:替换开始的{ 和endif 替换关闭的}
这个新的关键字可以是endswitch endwhile endfor endforeach endif
do....while没有可替换的语法
Protobuf是一种高效的序列化协议,可以用于数据交换和数据存储。它的主要优势是大小小,速度快,可扩展性强。下面是使用Protobuf的一些小记: 1. 定义消息格式 首先,需要定义消息格式,以便Protobuf可以将数据序列化和反序列化。消息格式定义在.proto文件中,使用protobuf语言编写。例如,下面是一个简单的消息格式定义: ``` syntax = "proto3"; message Person { string name = 1; int32 age = 2; } ``` 这个消息格式定义了一个名为Person的消息,包含两个字段:name和age。 2. 生成代码 一旦消息格式定义好,就可以使用Protobuf编译器生成代码。编译器将根据消息格式定义生成相应的代码,包括消息类、序列化和反序列化方法等。可以使用以下命令生成代码: ``` protoc --java_out=. message.proto ``` 这将生成一个名为message.pb.java的Java类,该类包含Person消息的定义以及相关方法。 3. 序列化和反序列化 一旦生成了代码,就可以使用Protobuf序列化和反序列化数据。例如,下面是一个示例代码,将一个Person对象序列化为字节数组,并将其反序列化为另一个Person对象: ``` Person person = Person.newBuilder() .setName("Alice") .setAge(25) .build(); byte[] bytes = person.toByteArray(); Person deserializedPerson = Person.parseFrom(bytes); ``` 这个示例代码创建了一个Person对象,将其序列化为字节数组,然后将其反序列化为另一个Person对象。在这个过程中,Protobuf使用生成的代码执行序列化和反序列化操作。 以上是使用Protobuf的一些基本步骤和注意事项,希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值