ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

ModernPhp笔记(1)

2019-12-12 21:52:22  阅读:265  来源: 互联网

标签:function getColor work apale 笔记 ClassA new ModernPhp


  1.命名空间-namespace

   作用:区别不通文件中的相同类名。

     例子:有两个文件,ClassA.php,ClassB.php。两个文件中都有一叫做work的类。将两个文件引入之后想要实例化ClassA.php中的work

 1   //---------------ClassA.php---------------//
 2   <?php
 3   namespace ClassA;
 4   class work {
 5       public function __construct() {
 6           echo 'this is class A';
 7       }
 8   }
 9   
10  
11  //---------------ClassB.php---------------//
12  <?php
13  namespace ClassB;
14  class work {
15      public function __construct() {
16          echo 'this is class B';
17      }
18  }
19 
20  //---------------Run.php---------------//
21  <?php
22  require 'ClassA.php';
23  require 'ClassB.php';
24 
25  new \ClassA\work();

  

  2.命名空间-use

   作用:实例化的时候太长。

     例子:多次实例化work的时候,每次都要new \ClassA\work();如果命名空间还比较长的话每次都要打很长一串。

1 <?php
2 require 'ClassA.php';
3 require 'ClassB.php';
4 
5 use ClassA\work;
6 
7 new work();

  

  3.命名空间-use as

   作用:别名,实例化两个同名的类

1 <?php
2 require 'ClassA.php';
3 require 'ClassB.php';
4 
5 use ClassA\work as w1;
6 use ClassB\work as w2;
7 
8 new w1();
9 new w2();

 

  4.抽象类与接口类

    作用:接口类起到一个规范的作用;抽象类父类只是抽象一个功能,由子类具体实现。起到规范作用的同时还会执行。

 1 <?php
 2 abstract class fruit {
 3     public function say() {
 4         echo 'my color: ' . $this->getColor();
 5     }
 6     
 7     abstract function getColor();
 8 }
 9 
10 class banana extends fruit {
11     public function getColor() {
12         return 'yellow';
13     }
14 }
15 
16 class apale extends fruit {
17     public function getColor() {
18         return 'red';
19     }
20 }
21 
22 $apale = new apale();
23 $apale->say();

 

  5.性状

    作用:两个完全不相关的类(不适合使用继承),有一部分重合功能。use本质上就相当于把性状的类粘贴过来。

 1 <?php
 2 trait repeat {
 3     protected $v = 'v';
 4     protected function test() {
 5         echo 'this is test';
 6     }
 7 }
 8 
 9 class classA {
10     use repeat;
11     public function __construct() {
12         echo $this->v;
13         $this->test();
14     }
15 }
16 
17 $a = new ClassA();

  6.生成器

    作用:如例子1,foreach每迭代一次,for执行一次,返回一个值。对比例子2占用内存少很多。但是缺点是不能更改也不能存储。只能生成数据。

 1 <?php
 2 
 3 //例子1
 4 function generator() {
 5     for ($i=0; $i<10; $i++) {
 6         echo '-';
 7         yield $i;
 8     }
 9 }
10 
11 foreach (generator() as $v) {
12     echo $v;
13 }
14 
15 //例子2
16 
17 function test() {
18     for ($i=0; $i<10; $i++) {
19         echo '-';
20         $res[] = $i;
21     }
22     return $res;
23 }
24 
25 foreach (test() as $v) {
26     echo $v;
27 }

 

  7.闭包

 1 <?php
 2 
 3 //-------使用-------
 4 
 5 $add = 1;
 6 $arr = array_map(function($v) use ($add) {
 7     return $v + $add;
 8 }, [1, 2, 3]);
 9 
10 
11 //——-----判断是否是匿名函数——-----
12 
13 function check($param) {
14     if ($param instanceof \Closure) {
15         return true;
16     }
17 }
18 
19 //——-----bindTo——-----
20 
21 class App {
22     protected $routes = array();
23     protected $responseBody;
24     
25     public function addRoute($routePath, $routeCallBak) {
26         $this->routes[$routePath] = $routeCallBak->bindTo($this, __CLASS__);
27     }
28     
29     public function dispatch($currentPath) {
30         foreach ($this->routes as $routhPath => $callBak) {
31             if ($routhPath == $currentPath) {
32                 $callBak();
33                 break;
34             }
35         }
36         echo $this->responseBody;
37     }
38 }
39 
40 $app = new App();
41 $app->addRoute('user/add', function() {
42     $this->responseBody = json_encode(['name' => 'Alan']);
43 });
44 
45 $app->dispatch('user/add');

 

  

 

标签:function,getColor,work,apale,笔记,ClassA,new,ModernPhp
来源: https://www.cnblogs.com/wangjianheng/p/12030058.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有