2009-05-21 5 views
1

PHPとRubyが特定のテスト条件(すなわち:isempty、issetなど)と一致するさまざまなタイプの変数を処理する方法の違いを持つ記事を発見しました。彼らはどのように違いますか?RubyとPHPの評価エンジンの違いは?

答えて

2

PHP/emptyはかなりRubyの同等と同じであり、Railsの中の文字列の場合empty?は、blank?方法がempty?

# this is PHP 
$bob = array();   # empty($bob) => true 
$bob = array("cat"); # empty($bob) => false 

$bob = null;  # empty($bob) => true 
$bob = "boo"  # empty($bob) => false 
$bob = "";   # empty($bob) => true 

# this is Ruby 
[].empty?   # => true 
[ "cat" ].empty? # => false 

nil.empty?   # => NoMethodError 
"boo".empty?  # => false 
"".empty?   # => true 

に好まれているPHP/ISSETはhas_keyに置き換えることができますか? Hashオブジェクトの場合一般的なローカル変数の使用法では、Rubyは変数をコード内で参照するときに変数をインスタンス化しないので、チェックするのは簡単ですが、変数がnilであるかどうかです。

EDITは

また、ローカル変数のためにissetのPHPの使用量を複製するdefined?キーワードを使用することができます。

#PHP 

isset($bob);  # => false 
$bob = "foo"; 
isset($bob);  # => true 

$bob = array(); 
isset($bob['cat']); # => false 

$bob = array('cat' => 'bag'); 
isset($bob['cat']); # => true 
isset($bob['dog']); # => false 

#Ruby 
bob     # => nil 
defined?(bob)  # => false 
bob.nil?    # => true 
bob = "foo" 
bob     # => "foo" 
bob.nil?    # => "false" 
bob = {} 
bob.has_key? :cat # => false 
bob = { :cat => 'bag' } 
bob.has_key? :cat # => true 

ことの一つは、の注意する:PHP、空の文字列または数値0でif文でfalseに評価されます。 Rubyでは、if文でnilfalseのみがfalseと評価されます。これには、さらに2つのブール照会メソッドblank?zero?が追加されていなければなりません。これらのメソッドは、Railsアプリケーションの一部としてStringクラスに組み込まれています。独立したバージョンのファセットがファセットにあります。

-1

これは非常に散漫な質問です。 RubyとPHPの主な違いはRubyが(ほとんど)strongly typedであるのに対し、PHPは非常に弱く型付けされていることです。