タグ

traitに関するk-holyのブックマーク (11)

  • PHP のトレイトに気をつける - tototoshi の日記

    普段 Scala でトレイトを使いまくってるけれども PHP にも 5.4 からトレイトが入った。 trait の良いところは多重継承のできない言語で多重継承っぽいことができることだ。 use, use とつけていけば、いくらでも追加できる。DRY に書けてよいことだ。 対して悪いところはいとも簡単に複雑で暗黙的な依存関係が生まれることだ。 例えばこんなの <?php trait Greeting { public function say() { if ($this->location == 'ja') { echo 'こんにちは' . PHP_EOL; } else { echo 'Hello' . PHP_EOL; } } } class Location { } class US extends Location { use Greeting; private $location

    PHP のトレイトに気をつける - tototoshi の日記
    k-holy
    k-holy 2015/01/16
    あるインタフェースを実装するにあたり、継承は避けたいけど委譲も大げさと感じた時に使ってます。単にコピペの代わり程度の感覚で。
  • Scalaのトレイトは実はトレイトじゃなくただのミクスイン - Smalltalkのtは小文字です

    タイトルは釣りです。 まずおおざっぱに用語の整理をさせていただくと、ここで「トレイト」は、シェルリ(Nathanael Schärli)らが2002年頃に発表したTraitsやそれ用のエンティティ(trait)を指し、「ミクスイン(Mixin, mixin)」は従来からある実装の多重継承方法のひとつ、具体的には継承機構を使ってメソッドを定義したクラス様エンティティ(クラスでも構わない)を継承パスに差し込むことで対象となるクラスにメソッドを追加する機構(特別な機構を要しないときは単なるクラスの運用方法)、そのときに用いるクラスあるいはクラス様エンティティ(例えばRubyならモジュールとか)を指すことにします。 トレイトやその機構について説明すべきことはいろいろありそうですが、詳しくはシェルリらの論文(Traits: Composable Units of Behaviour など)を読んでい

    Scalaのトレイトは実はトレイトじゃなくただのミクスイン - Smalltalkのtは小文字です
    k-holy
    k-holy 2013/03/07
  • PHP traits, treat or threat?

    This document discusses PHP traits and their use and advantages. It begins by showing PHP's large market share for web programming compared to other languages. It then demonstrates how traits allow eliminating duplicated code by defining common functionality in traits that can be used by multiple classes. The document provides an example of using a "Options" trait to DRY up option handling code ac

    PHP traits, treat or threat?
    k-holy
    k-holy 2012/02/02
    18枚目以降、ZendFrameworkを題材にtraitのサンプルが多数。じっくり読もう…
  • trait時代のライブラリ設計を予想してみる #php5_4

    この記事はPHP5.4 Advent Calendar 2011の23日分です。 trait自体はすでに10日目の@tpyamamotoさんによるTRAITでデザインパターン再考でも取り上げられていますが、目玉機能なのでもう一回ネタにしちゃいます>< おさらい:traitとは 相変わらず公式マニュアルが充実しまくっているのでそちらを見た方がいいのですが、抜粋するとこんな感じ。 PHP5.4の目玉機能 多重継承を安全に行えるよう導入された概念 traitはプロパティ・メソッドを持てる traitは定数を持てない trait自体はインスタンス化できない classを継承してtraitを作ることはできない interfaceを実装してtraitを作ることはできない traitを継承してtraitを作ることが可能 classは複数のtraitを継承して実装を再利用できる traitはclassでは

    trait時代のライブラリ設計を予想してみる #php5_4
    k-holy
    k-holy 2011/12/26
    interfaceで型の継承、traitで実装の継承ということかな。確かにAbstractクラスはなくなりそう。traitの命名はどんな感じになるのかな
  • 関西PHP勉強会 php5.4つまみぐい

    This document summarizes some new features in PHP 5.4: - Array syntax can now be written more concisely using square brackets instead of array functions. - PHP 5.4 includes a built-in web server for development purposes, allowing PHP scripts to be run without Apache. - Traits allow sharing of methods across classes to reduce code duplication, similar to mixins in Ruby. - Closures now support acces

    関西PHP勉強会 php5.4つまみぐい
    k-holy
    k-holy 2011/11/25
    ArrayShortSyntaxで配列引数と関数が判別しやすくなるのは納得。72ページ目「より言語っぽくなった」…(´・ω・`)
  • PHP 5.4 - Begin your love affair with traits

    This document discusses PHP 5.4 and introduces new features such as traits, array dereferencing, binary notation, and upload progress tracking. It provides examples of using traits to reuse code across classes without complicated inheritance. Traits allow for small reusable code sections that can be included in any class while maintaining a precedence order. The document encourages early adoption

    PHP 5.4 - Begin your love affair with traits
  • PHP 5.4から利用できるtraitの利用例

    (Last Updated On: 2018年8月13日)PHP5.4からtraitが利用できるようになる事をご存知の方も多いと思います。 traitはコードの水平再利用を可能にする仕様拡張です。Rubyのmixinのような機能と言えば分り易いかも知れません。 誰でもtraitを利用したくなるようなコードをinternals@php.netのMLで見かけたので紹介しよう、と思って書いたのですがコピペしたコードをしっかり読んでなくておかしな所があった事を @sotarok さんに教えてもらいました。 元のコードは色々問題があるので書き直しました。こうやればアクセサーを沢山書く必要が無くなります。 https://gist.github.com/1379592 (読みやすいコードはこちらをどうぞ) <?php trait Accessors{ public function __get($na

    PHP 5.4から利用できるtraitの利用例
  • PHP 5.4.0 Alpha3 でこういうコードが書けるようになる - なんたらノート第三期ベータ

    何も言いません、これ見て驚いたらいいですよ。PHP5.4.0 Aplpha3 で実際に実行できたプログラムです。もう大興奮ですよ。 Pythonだともっといろいろ書けるよ、とか、Rubyはmixin最初からあるよとか、その変数スコープJSだと当たり前すぎるとか、そういうツッコミはノーサンキューで、PHPでこれが動くということが重要なんですってば。

    PHP 5.4.0 Alpha3 でこういうコードが書けるようになる - なんたらノート第三期ベータ
  • PHP5.4のtraitを使ったシングルトンパターン実装によるtrait入門 - id:anatooのブログ

    PHP5.4 alpha1がリリースされた。このリリースでは、PHPのオブジェクト指向言語の新たな機能としてtraitと呼ばれる機能が追加された。PHP5.4におけるtraitとは、型に影響を与えずにクラスに適用できるメソッドとプロパティの集合である。 早速PHP5.4 alpha1をインストールし、traitを使ってシングルトンパターンを実装した。このコードでは、クラスの継承関係に影響を与えずにシングルトンパターンをモジュール化している。 <?php trait Singleton { protected function __construct() { } static function getInstance() { static $obj = null; return $obj ?: $obj = new static; } function __clone() { throw n

    PHP5.4のtraitを使ったシングルトンパターン実装によるtrait入門 - id:anatooのブログ
  • PHP5.4 alpha1リリース! PHP5.3からの新機能を見わたす

    こんにちは、久保田です。 先月6月28日、PHP5.4 alpha1がリリースされました。PHP5.3では、名前空間や無名関数の追加など、言語機能に大きな追加が行われました。PHP5.4 alpha1 ではtraitが実装され、オブジェクト指向言語としてのPHPに大きな機能追加が行われました。他にも、<?=記法のデフォルト有効化、array dereferenceの追加、無名関数内の$thisの扱いの変化、JsonSerializableインターフェイスの追加など筆記すべき様々な機能追加、改善が見られます。この記事ではPHP5.4 alpha1で見えてきた新機能をサンプルコードを交えながら概観します。 とりあえずNEWSを訳す PHP5.4 alpha1の変更点を記述した NEWS ファイルを翻訳してみたのが以下です。 PHP                                

    PHP5.4 alpha1リリース! PHP5.3からの新機能を見わたす
  • PHP5.4とScalaのトレイト比較 - なんたらノート第三期ベータ

    PHP5.4にはトレイトという文法が導入されて、多重継承の便利さが享受できるようになるそうです。 いろいろ試してみることにしました。 トレイトといえば代表選手はScalaですね。Scalaでいうトレイトは、インターフェースの定義とメソッドの実装を同時にやってくれる便利な概念でした。単一継承のOOP言語では「〜は〜の一種」という制約が強すぎて、「ペンギンは鳥の飛行メソッドによって飛行できてしまう」という問題があります。でもちゃんと「ペンギンは飛べないが泳げる鳥」を綺麗に解決する必要はあって、その解答として、トレイトのあるScalaではこんな解が導けます。 abstract class Animal abstract class Bird extends Animal { def hasBeak = true // 鳥にはかならずクチバシがある def hasWings = true // 翼

    PHP5.4とScalaのトレイト比較 - なんたらノート第三期ベータ
  • 1