Hướng dẫn generator in php - máy phát điện trong php

Traits là gì?

Nhiều developer nhầm lẫn "Traits", một khái niệm mới trong php 5.4.0. Traits hoạt động như các lớp nhưng lại giống như interface.Một đặc điểm của Traits là triển khai thực hiện 1 phần (vd: hằng số, thuộc tính, phương thức) có thể được dùng bởi một hay nhiều class php.

Nội dung chính

  • Traits là gì?
  • Cách sử dụng Trait
  • Tại sao chúng ta sử dụng traits?
  • Generator là gì?
  • Một số hàm trong generator
  • so sánh khi dùng generator
  • Associative arrays trong generator
  • Tại sao nên sử dụng generator
  • Tài liệu tham khảo

Nội dung chính

  • Traits là gì?
  • Cách sử dụng Trait
  • Tại sao chúng ta sử dụng traits?
  • Generator là gì?
  • Một số hàm trong generator
  • so sánh khi dùng generator
  • Associative arrays trong generator
  • Tại sao nên sử dụng generator
  • Tài liệu tham khảo

Nội dung chính

  • Traits là gì?
  • Cách sử dụng Trait
  • Tại sao chúng ta sử dụng traits?
  • Generator là gì?
  • Một số hàm trong generator
  • so sánh khi dùng generator
  • Associative arrays trong generator
  • Tại sao nên sử dụng generator
  • Tài liệu tham khảo

Nội dung chính

  • Traits là gì?
  • Cách sử dụng Trait
  • Tại sao chúng ta sử dụng traits?
  • Generator là gì?
  • Một số hàm trong generator
  • so sánh khi dùng generator
  • Associative arrays trong generator
  • Tại sao nên sử dụng generator
  • Tài liệu tham khảo

Bạn có thể quen thuộc với các đặc điểm của trait trong các ngôn ngữ khác. Php traits giống như là các modules composable của Ruby, or mixins (vue...).

Khái niệm Trait chúng ta hiểu đơn giản như sau: gom những đoạn code trùng lặp ra một nơi sử dụng ơ nhiều nơi và nếu cần thay đổi bạn chỉ cần sửa đổi ở một file duy nhất.

Nó là một bổ sung cho thừa kế truyền thống, áp dụng cho các lớp mà không yêu cầu thừa kế.

Cũng giống như Abstract Class chúng ta không thể khởi tạo một đối tượng mới từ Traits.

Cách sử dụng Trait

Tại sao chúng ta sử dụng traits?

Generator là gì?

Một số hàm trong generator

getPost();
    }
}

so sánh khi dùng generator

class Comment{
    use PostCommon;
    
    public function showPost()
    {
        return $this->getPost();
    }
}

Associative arrays trong generatoruse để import trait

Tại sao chúng ta sử dụng traits?

Generator là gì?

Một số hàm trong generator

so sánh khi dùng generator

class Comment{
    use PostCommon;
    use UserCommon;
    
    public function showPost()
    {
        return $this->getPost();
    }
}

Associative arrays trong generator

Tại sao nên sử dụng generator

Generator là gì?

Một số hàm trong generator

so sánh khi dùng generatoryield thay cho return thông thường

Associative arrays trong generator

  • Tại sao nên sử dụng generator
  • Tài liệu tham khảo

Một số hàm trong generator

Generator::current — Get the yielded value
Generator::getReturn — Get the return value of a generator
Generator::key — Get the yielded key
Generator::next — Resume execution of the generator
Generator::rewind — Rewind the iterator
Generator::send — Send a value to the generator
Generator::throw — Throw an exception into the generator
Generator::valid — Check if the iterator has been closed
Generator::__wakeup — Serialize callback

so sánh khi dùng generator

Associative arrays trong generator

Tại sao nên sử dụng generator

function myGenerator($max) {
    $array = [];
    for ($i=0; $i < $max; $i++) {
        $array[] = $i;
    }
    return $array;
}

$start_time = microtime(true);
$total = 0;
foreach (myGenerator(1000000) as $value) {
    $total += $value;
}
$end_time = microtime(true);
echo "Thời gian thực hiện: ", bcsub($end_time, $start_time, 4), PHP_EOL;
echo "Bộ nhớ sử dụng: ", memory_get_peak_usage(true), PHP_EOL;

Tài liệu tham khảo

Thời gian thực hiện: 0.2370
Bộ nhớ sử dụng: 31457280

Bạn có thể quen thuộc với các đặc điểm của trait trong các ngôn ngữ khác. Php traits giống như là các modules composable của Ruby, or mixins (vue...).

function myGenerator($max) {
    $array = [];
    for ($i=0; $i < $max; $i++) {
        yield $i;
    }
}

Khái niệm Trait chúng ta hiểu đơn giản như sau: gom những đoạn code trùng lặp ra một nơi sử dụng ơ nhiều nơi và nếu cần thay đổi bạn chỉ cần sửa đổi ở một file duy nhất.

Thời gian thực hiện: 0.2340
Bộ nhớ sử dụng: 2097152

Nó là một bổ sung cho thừa kế truyền thống, áp dụng cho các lớp mà không yêu cầu thừa kế.

Cũng giống như Abstract Class chúng ta không thể khởi tạo một đối tượng mới từ Traits.

getPost();
    }
}
0

Ví dụ ta có 1 bài Blog muốn get Post content, và Comment cũng muốn get bài Post thì ta viết như sau:

getPost();
    }
}
1

sử dụng từ khóa

getPost();
    }
}
4 để khai báo 1 trait

Associative arrays trong generator

Tại sao nên sử dụng generator

getPost();
    }
}
2

Khái niệm Trait chúng ta hiểu đơn giản như sau: gom những đoạn code trùng lặp ra một nơi sử dụng ơ nhiều nơi và nếu cần thay đổi bạn chỉ cần sửa đổi ở một file duy nhất.

getPost();
    }
}
3

Tại sao nên sử dụng generator

Tài liệu tham khảo

Tài liệu tham khảo

Bạn có thể quen thuộc với các đặc điểm của trait trong các ngôn ngữ khác. Php traits giống như là các modules composable của Ruby, or mixins (vue...).

https://secure.php.net/manual/en/language.generators.overview.php

http://php.net/manual/en/language.oop5.traits.php

Khái niệm Trait chúng ta hiểu đơn giản như sau: gom những đoạn code trùng lặp ra một nơi sử dụng ơ nhiều nơi và nếu cần thay đổi bạn chỉ cần sửa đổi ở một file duy nhất.