私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレPHPで作られた有名サイトってあるの?
php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : △
レスフィルター : (試験中)
Perlにはクラスがないので、自分でクラスを作る必要がある。
perl - 万能なnewの書き方
http://blog.livedoor.jp/dankogai/archives/50816007.html
Perl 5のOOは、慣れてしまうと簡単だ。
↓
package Klass;
sub new {
my $thing = shift;
my $class = ref $thing || $thing;
my $self = bless { @_ } => $class;
$self->init() if $self->can('init');
$self;
}
our %default = (name => 'anonymous');
sub init {
my $self = shift;
$self->{$_} = $default{$_} for keys %default;
$self->SUPER::init() if $self->can('SUPER::init');
$self;
}
package Klass::Sub;
our @ISA = qw/Klass/;
our %default = ('名前' => 'ななし');
*init = \&Klass::init;
perl - 万能なnewの書き方
http://blog.livedoor.jp/dankogai/archives/50816007.html
Perl 5のOOは、慣れてしまうと簡単だ。
↓
package Klass;
sub new {
my $thing = shift;
my $class = ref $thing || $thing;
my $self = bless { @_ } => $class;
$self->init() if $self->can('init');
$self;
}
our %default = (name => 'anonymous');
sub init {
my $self = shift;
$self->{$_} = $default{$_} for keys %default;
$self->SUPER::init() if $self->can('SUPER::init');
$self;
}
package Klass::Sub;
our @ISA = qw/Klass/;
our %default = ('名前' => 'ななし');
*init = \&Klass::init;
Perlはやっぱり仕様が素晴らしいよな
ちょっとshiftしたりblessしたりして、毎回同じようなnewを書くだけで
簡単にクラスを実装できちゃうんだもんな
継承もour @ISAを使うだけでいいし
OOやるならPerlだな、やっぱり
ちょっとshiftしたりblessしたりして、毎回同じようなnewを書くだけで
簡単にクラスを実装できちゃうんだもんな
継承もour @ISAを使うだけでいいし
OOやるならPerlだな、やっぱり
>>552-553
めんどくさいだけだろwww
めんどくさいだけだろwww
グローバルスコープ君はさぁ、新規で中小規模のWeb案件があったら
やっぱりPerlを選ぶんだよね?
やっぱりPerlを選ぶんだよね?
>>556
グローバルスコープ君というのが誰か知らんが、中小規模なら前から
言っているように、投げっぱなしで保守がいらないならPHP一択、
β版のまま公開して運用しながら開発するような場合や、保守込みの
契約の場合はPerlなりRubyなり。PHPはありえん。
Pythonは使いたいんだが人出がまだ足りないのと、他の案件に使い回し
できない可能性が高い。
Perlのクラスに関しては、Perl4にblessを加えただけという超簡単実装なので、
見る人によっては汚く見えるだろう。しかしクラス名とファイル名が一致せず
オートロードで階層が深いような場合は「工夫する」かgrepするしか探し出す
しか手段がないPHPよりはかなりマシ。
Perlでもファイル名とクラス名を違えることはできるが、クラス名がファイル
階層を表現できるため、現実問題そういう実装は考えにくい。つまりPHPの
ような汚い実装はなかなか見かけない。
PHPのプロジェクトであるmagentoには私は敬意を払っているが、このファイル名
とクラス名の不一致問題には不満の意を禁じざるを得ない。
グローバルスコープ君というのが誰か知らんが、中小規模なら前から
言っているように、投げっぱなしで保守がいらないならPHP一択、
β版のまま公開して運用しながら開発するような場合や、保守込みの
契約の場合はPerlなりRubyなり。PHPはありえん。
Pythonは使いたいんだが人出がまだ足りないのと、他の案件に使い回し
できない可能性が高い。
Perlのクラスに関しては、Perl4にblessを加えただけという超簡単実装なので、
見る人によっては汚く見えるだろう。しかしクラス名とファイル名が一致せず
オートロードで階層が深いような場合は「工夫する」かgrepするしか探し出す
しか手段がないPHPよりはかなりマシ。
Perlでもファイル名とクラス名を違えることはできるが、クラス名がファイル
階層を表現できるため、現実問題そういう実装は考えにくい。つまりPHPの
ような汚い実装はなかなか見かけない。
PHPのプロジェクトであるmagentoには私は敬意を払っているが、このファイル名
とクラス名の不一致問題には不満の意を禁じざるを得ない。
ちなみにPerl厨は一人とか言っているが、俺はそんなにPerlには思い入れはない。
PHPより歴史が長いため、使ってる期間が長いってくらいだ。現在メインで
使っている言語はC++。
> 継承もour @ISAを使うだけでいいし
これはむしろPerlの汚いところだと思う。PerlのOOの素晴らしいところは、
ほとんどPerl4の仕様を変えずにOOを実装した点にある。そこは勘違いしては
いけない。PHPはOOを比較的きっちり実装しつつ、PHP4への互換を維持しよう
とした結果、ワケワカメな状況に陥り、strictのような構文に対する縛りが
存在しないため、PHP4脳の土方プログラマの暴走を止められずにいる。
PHPより歴史が長いため、使ってる期間が長いってくらいだ。現在メインで
使っている言語はC++。
> 継承もour @ISAを使うだけでいいし
これはむしろPerlの汚いところだと思う。PerlのOOの素晴らしいところは、
ほとんどPerl4の仕様を変えずにOOを実装した点にある。そこは勘違いしては
いけない。PHPはOOを比較的きっちり実装しつつ、PHP4への互換を維持しよう
とした結果、ワケワカメな状況に陥り、strictのような構文に対する縛りが
存在しないため、PHP4脳の土方プログラマの暴走を止められずにいる。
>>557
> Perlでもファイル名とクラス名を違えることはできるが、クラス名がファイル
> 階層を表現できるため、現実問題そういう実装は考えにくい。つまりPHPの
意味がわからん。
Perlはファイル名とクラス名は
全く関係ないよ。
use Hoge::Hoge; # ← クラス名ではなくただのファイルパス相当
とやっておきながら、
my $hage = Hage->new()
ということもできる。
> Perlでもファイル名とクラス名を違えることはできるが、クラス名がファイル
> 階層を表現できるため、現実問題そういう実装は考えにくい。つまりPHPの
意味がわからん。
Perlはファイル名とクラス名は
全く関係ないよ。
use Hoge::Hoge; # ← クラス名ではなくただのファイルパス相当
とやっておきながら、
my $hage = Hage->new()
ということもできる。
>>561
慣習は言語の設計側が推奨している。だから一意に解釈できるし、
階層も綺麗に表現できる。
PHPは設計側がほったらかしだから、実装側が「階層はキャメルケースで」
とか「アンスコ区切りで」とか「オートロードするからこのルールで」とか
無法地帯。
慣習は言語の設計側が推奨している。だから一意に解釈できるし、
階層も綺麗に表現できる。
PHPは設計側がほったらかしだから、実装側が「階層はキャメルケースで」
とか「アンスコ区切りで」とか「オートロードするからこのルールで」とか
無法地帯。
Perlはいろんなやり方があって
人それぞれ書き方が違うからだめだろう。
人それぞれ書き方が違うからだめだろう。
>>563
具体的に何かダメか言ったら?言えないんだろうけどw
お前がPHP知らないようだから書いておくわ。
PHPのオブジェクト指向機能
・classキーワードで簡単にクラスが定義できる
・もちろんクラスを定義するだけで、newでインスタンスが作れる
・interfaceキーワードでインターフェースも作れる
・public、private、protectedスコープがある(カプセル化)
・コンストラクタ、デストラクタがある
・オーバーロードもある
・finalキーワードもある
・extendsで継承ができる
・implementsでインターフェースも継承できる
・abstructで抽象クラス、抽象メソッドが作れる
・traitでトレイトが使える
・クラス定数、インターフェース定数が作れる
・クラスメソッドが作れる
・イテレーターも作れる
・タイプヒンティングがある
・名前空間がある
・無名関数(クロージャー)がある
具体的に何かダメか言ったら?言えないんだろうけどw
お前がPHP知らないようだから書いておくわ。
PHPのオブジェクト指向機能
・classキーワードで簡単にクラスが定義できる
・もちろんクラスを定義するだけで、newでインスタンスが作れる
・interfaceキーワードでインターフェースも作れる
・public、private、protectedスコープがある(カプセル化)
・コンストラクタ、デストラクタがある
・オーバーロードもある
・finalキーワードもある
・extendsで継承ができる
・implementsでインターフェースも継承できる
・abstructで抽象クラス、抽象メソッドが作れる
・traitでトレイトが使える
・クラス定数、インターフェース定数が作れる
・クラスメソッドが作れる
・イテレーターも作れる
・タイプヒンティングがある
・名前空間がある
・無名関数(クロージャー)がある
ネーミング規約ならある
http://framework.zend.com/manual/ja/coding-standard.naming-conventions.html
Zend Framework では、クラスの名前が保存先ディレクトリに直接対応するような
命名規約を採用しています。Zend Framework 標準ライブラリの最上位レベルの
ディレクトリは "Zend/" ディレクトリです。一方、Zend Framework 追加ライブラリの
最上位レベルのディレクトリは "ZendX/" ディレクトリです。この配下に、すべてのクラスが階層構造で保存されます。
クラス名には英数字のみが使用できます。クラス名に数字を使用することは可能ですが、
ほとんどの場合はお勧めしません。アンダースコアはパス区切り文字としてのみ使用可能です。
ファイル名が "Zend/Db/Table.php" の場合、クラス名を "Zend_Db_Table" としなければなりません。
http://framework.zend.com/manual/ja/coding-standard.naming-conventions.html
Zend Framework では、クラスの名前が保存先ディレクトリに直接対応するような
命名規約を採用しています。Zend Framework 標準ライブラリの最上位レベルの
ディレクトリは "Zend/" ディレクトリです。一方、Zend Framework 追加ライブラリの
最上位レベルのディレクトリは "ZendX/" ディレクトリです。この配下に、すべてのクラスが階層構造で保存されます。
クラス名には英数字のみが使用できます。クラス名に数字を使用することは可能ですが、
ほとんどの場合はお勧めしません。アンダースコアはパス区切り文字としてのみ使用可能です。
ファイル名が "Zend/Db/Table.php" の場合、クラス名を "Zend_Db_Table" としなければなりません。
>>569
だからさー、requireする時とクラス名呼び出す時で名前が違って
その規約ってのが実装で異なるってのがおかしーだろって話だよ。
そもそもrequireが実行ファイルからの相対パスおよび絶対パスとか、
他にそんな言語あんのか?
だからさー、requireする時とクラス名呼び出す時で名前が違って
その規約ってのが実装で異なるってのがおかしーだろって話だよ。
そもそもrequireが実行ファイルからの相対パスおよび絶対パスとか、
他にそんな言語あんのか?
Perlもuse MyClassとやって、
そのMyClass.pmの中に、HogeHogeって
クラス名を付けられるけど。
そもそも、一ファイル一クラスなんて
ありえない仕様なわけで、
ファイル名とクラス名は一致しないことも多い。
そのMyClass.pmの中に、HogeHogeって
クラス名を付けられるけど。
そもそも、一ファイル一クラスなんて
ありえない仕様なわけで、
ファイル名とクラス名は一致しないことも多い。
おもしれー想像以上にPHPとPHPerが糞でワロタ
5でマトモになったんだとばかり思ってた
5でマトモになったんだとばかり思ってた
Perl厨って、反論するとなんでも
「出た、工夫すればなんとかなる」
いや、同じ事ばっか言ってんのはお前ですからwww
「出た、工夫すればなんとかなる」
いや、同じ事ばっか言ってんのはお前ですからwww
>>578
新規のPerl厨さんですか?
新規のPerl厨さんですか?
あ~、日本語が苦手な方なんですねw
Perl厨って日本語が苦手なやつばっかですねwww
Perl厨って日本語が苦手なやつばっかですねwww
>>557
グローバルスコープ君は、
・保守がいらないならPHP
・保守がいるならPerl、Ruby
ということだな
つまり
・PHPは保守性が低い
・保守契約がないクライアントには、
保守性が低いものを納品してもいいと思っている
ということだろうな
PHPで保守性を高めることもできるんだが、
それ以上に、品質が低いものを納品してもいいと思ってる奴に
依頼したくねーなwww最悪w
グローバルスコープ君は、
・保守がいらないならPHP
・保守がいるならPerl、Ruby
ということだな
つまり
・PHPは保守性が低い
・保守契約がないクライアントには、
保守性が低いものを納品してもいいと思っている
ということだろうな
PHPで保守性を高めることもできるんだが、
それ以上に、品質が低いものを納品してもいいと思ってる奴に
依頼したくねーなwww最悪w
>>582
保守性ね。工夫すれば出来るね。
保守性ね。工夫すれば出来るね。
>>583
論点をずらそうとしてるのか、日本語が苦手なのか分からんなw
論点をずらそうとしてるのか、日本語が苦手なのか分からんなw
PHPの仕様が糞レベルって話に反論できないから人格攻撃に転じてるのは
お前の方じゃん。
まるでグローバルスコープ以外に欠点がないようなミスリードもしてるし、
なぜかPHPをDisる奴は全員Perl厨だって設定になってるし。
お前の方じゃん。
まるでグローバルスコープ以外に欠点がないようなミスリードもしてるし、
なぜかPHPをDisる奴は全員Perl厨だって設定になってるし。
>>585
・反論できている
・人格攻撃に転じるのは、「PHPerはPHPしか書けない」とか決めつけて
PHPをDisる奴のほうが多いだろ
・欠点がないとは言ってない、PHPが腐ってる具体例をあげろと言ったら
グローバルスコープを持ち出したからだろ
・Perl厨か聞いたら返答がなかったから、そう判断した
・反論できている
・人格攻撃に転じるのは、「PHPerはPHPしか書けない」とか決めつけて
PHPをDisる奴のほうが多いだろ
・欠点がないとは言ってない、PHPが腐ってる具体例をあげろと言ったら
グローバルスコープを持ち出したからだろ
・Perl厨か聞いたら返答がなかったから、そう判断した
>>587
「クラス名とかrequireのパスとか」ってもっと具体的に書けよw
んで反論すると「「工夫すれば大丈夫」で逃げる」って
逃げてるのはどっちだよwww
いいよな、反論されたら「出た、「工夫すれば大丈夫」」って言えばいいんだからw
「クラス名とかrequireのパスとか」ってもっと具体的に書けよw
んで反論すると「「工夫すれば大丈夫」で逃げる」って
逃げてるのはどっちだよwww
いいよな、反論されたら「出た、「工夫すれば大丈夫」」って言えばいいんだからw
その言葉そんなに嫌いなら、
フレームワーク使えば大丈夫。に変えてやろうか?
フレームワーク使えば大丈夫。に変えてやろうか?
キーワードで逃げるなっつってんだよ
それより「クラス名とかrequireのパスとか」を具体的に書けよ
それより「クラス名とかrequireのパスとか」を具体的に書けよ
連投すまんが、PerlのOOこそ「工夫すれば大丈夫」の例だよなw
>>551
>>551
>>592
なげーよw
とりあえずrequireのパスについては、
別に __FILE__ . 'lib/....
がデフォってわけではない
include_pathを適切に設定して
require_once 'Zend/Controller/Front.php';
とでもすればいい話
相対パスが嫌なら、include_pathで相対パスを含めなければいい
で、どの辺が糞なんだ?
なげーよw
とりあえずrequireのパスについては、
別に __FILE__ . 'lib/....
がデフォってわけではない
include_pathを適切に設定して
require_once 'Zend/Controller/Front.php';
とでもすればいい話
相対パスが嫌なら、include_pathで相対パスを含めなければいい
で、どの辺が糞なんだ?
そんなことより同じ関数なのにバージョンによって挙動が違ったり、
バグを放置する開発陣の怠惰とか、セキュリティホール頻発とか、
それがいつまで経ってもFIXされないとか、セキュリティホールを
埋め込むのを推奨してるとしか思えない関数(サニタイズ系とか)とか、
オープンソースのソースコードが全然「工夫できてない」とか、
1レスじゃ収まんないくらい欠点あるぞ。
バグを放置する開発陣の怠惰とか、セキュリティホール頻発とか、
それがいつまで経ってもFIXされないとか、セキュリティホールを
埋め込むのを推奨してるとしか思えない関数(サニタイズ系とか)とか、
オープンソースのソースコードが全然「工夫できてない」とか、
1レスじゃ収まんないくらい欠点あるぞ。
>>593
>include_pathを適切に設定して
>require_once 'Zend/Controller/Front.php';
>とでもすればいい話
だからそれが「工夫すれば大丈夫」なんじゃん。
自覚ないから怖い。
>include_pathを適切に設定して
>require_once 'Zend/Controller/Front.php';
>とでもすればいい話
だからそれが「工夫すれば大丈夫」なんじゃん。
自覚ないから怖い。
>>592
> クラス名の問題
>
> パスから一意の文字列を生成するしかないしお約束がフレームワークの実装に
> よって違う。どちらも他の言語には見られない。
これはよく分からんかったが、命名規約がフレームワークによって違う、
ってことか?
もう少し詳しく説明し、「他の言語には見られない」ではなく
それによってどういった問題が発生するか説明してくれ
> クラス名の問題
>
> パスから一意の文字列を生成するしかないしお約束がフレームワークの実装に
> よって違う。どちらも他の言語には見られない。
これはよく分からんかったが、命名規約がフレームワークによって違う、
ってことか?
もう少し詳しく説明し、「他の言語には見られない」ではなく
それによってどういった問題が発生するか説明してくれ
>>596
そう。CakePHPはキャメル、Zendはアンスコ区切り。
文字列だし公式な仕様が存在しないかあシンタックスハイライトしなくて読みにくい。
公式な仕様がないってことは何とでも書けるわけで、あとは分かるな。
そう。CakePHPはキャメル、Zendはアンスコ区切り。
文字列だし公式な仕様が存在しないかあシンタックスハイライトしなくて読みにくい。
公式な仕様がないってことは何とでも書けるわけで、あとは分かるな。
類似してるかもしれないスレッド
- PHPでオークションサイトを作ろう! (294) - [49%] - 2019/5/9 7:45 ○
- PHPエディタって、どうよ? (816) - [33%] - 2022/10/19 16:30 ○
- 【PHP】下らねぇ質問はここに書き込みやがれ 68 (990) - [33%] - 2008/5/27 2:33
- PHPで2chを真似てこんなモン作ってみますた。 (134) - [33%] - 2018/6/27 23:16
トップメニューへ / →のくす牧場書庫について