美文网首页
0x02 - PHP 中的对象类型

0x02 - PHP 中的对象类型

作者: 游城十代2dai | 来源:发表于2017-09-04 00:31 被阅读32次

    PHP 中的数组字符串貌似并不是对象类型, 需要使用关键字 object 转化才能成为对象, 这点和 OC 有很大的区别

    0x01- 字符串

    字符串有四种使用的方式:

    单引号

      $str = ''; //  这种创建的字符串不可以引用其他变量
    eg:
      $str1 = '12';
      $str2 = '$str1';
     这时候使用 echo 的话, 打印的结果为:  $str1
    

    双引号

      $str = ""; //  这种创建的方式可以引用其他变量
    eg:
      $str1 = '12';
      $str2 = "{$str1}";
     此时打印的结果为: 12
    * 这种引用的方式要加 {} , 因为习惯😂
    

    heredoc 语法

    // 其实就是双引号的方式
    $heredoc = <<<"LIST"
    <ul>
      <li>你好</li>
      <li>Hello World</li>
      <li>no 不</li>
    </ul>
    LIST;
    echo $heredoc;
    

    nowdoc 语法

    // 和单引号一样的
    $nowDoc = <<<'List'
    <ul>
      <li>你好</li>
      <li>Hello World</li>
      <li>no 不</li>
    </ul>
    List;
    

    0x02 - 数组

    数组被分为了索引数组和关联数组, 经过学习, 发现就是 OC 中的字典, 并且不会出现越界的现象, 而且现在大多使用的是字面量的方式创建

    0x01 索引数组

    $arr1 = [1, 2, 34, 45];
    $arr2 = ['s', 'sd', 'aa', '是'];
    $arr3 = [0 => 'ss', 1 => 'ss', 2 => 'ss', 3 => 'ss',];
    

    这三个数组都是可以理解为角标从 0 --> 3 的数组,

    $arr3 = [0 => 'ss', 3 => 'ss', 4 => 'ss', 9 => 'ss',];
    

    这个数组就和我们的字典很像了, 是存在 key => value 的

    ps: 数组中的 key 若是有相同的, 后面的则会覆盖前面的值, 数组常用 print_r($arr) 来输出数组

    0x02 - 关联数组

    $arr = ['id' => 'peter', 'name' => 'jim', 'ii' => '11'];
    

    关联数组, 完全是靠 key 去寻找 value, 也等价于我们的 NSDictionary

    0x03 - 增删改查

    $arr = ['id' => 'peter', 'name' => 'jim', 'ii' => '11'];
    
    $arr[] = 'gender'; //  在最后面插入 key = 0 , value = 'gender' 的元素
    $arr[8] = 'gender'; //  在最后面插入一个 key = 8 , value = 'gender'  的元素
    $arr['gender'] = 1; //  在最后面插入一个 key = gender , value = 1  的元素
    
    unset($arr['id']); // 删除数组中的一个
     
    // 删除数组中所有的值
    foreach ($arr as $key => $value) {
      unset($arr[$key]); 
    }
    
    $arr['ii'] = 'gender'; //  修改 key = ii 的 vlaue 为 gender
    

    0x03 - 对象

    class Person
    {
      public $name = 'Peter';
      public $age = 29;
      public $gender = '男';
    
      public function description()
      {
        return '我是'.$this->name;
      }
    }
    
    $obj = new Person;
    
    echo "$obj->name";
    echo $obj->description();
    

    一定要注意箭头是使用, 还有 public 权限

    $objc = new stdClass();
    $objc->name = '你好';
    $objc->action = function ()
    {
      return 'action start';
    };
    
    echo $objc->name;
    echo call_user_func($objc->action);
    

    通用的创建对象, 此时的 aciton 是属性, 也是方法, 和我们OC 的 block 很像, 估计以后的 this 会出现指向问题

    相关文章

      网友评论

          本文标题:0x02 - PHP 中的对象类型

          本文链接:https://www.haomeiwen.com/subject/yjrsjxtx.html