Rails yönlendirme vs PHP Yönlendirme

5 Cevap php

Ben son 1 yıl içinde PHP üzerinde çalışıyordu ve bugünlerde Raylar öğreniyorum.

In rails:-- Routing takes an incoming URL and decodes it into a set of parameters that are used by Rails to dispatch to the appropriate controller and action

Örneğin

 rs.recognize_path "/blog/show/123"
 {:controller=>"blog", :action=>"show", :id=>"123"}

Haklı mıyım?

Biz bu kod satırını kullanarak "/ blog/show/123" gibi isteği işlemek için nasıl raylar anlatmak için config dizinine altında routes.rb bu kod (yazılı) hat söz.

map.connect "blog/show/:id", :controller => "blog", :action => "show", :id => /\d+/

Şimdi PHP biz böyle bir şey yaptığınızda

www.xxx.com/profile.php?profile_id=2

How is the request sent to the requested page? Means I never wrote anything for routing in PHP, so how hss this request been handled? How is the routing done in PHP (anything I missed during my learning/working in PHP)?

Umarım ben soruyorum ne olsun. Belirsiz Herhangi bir parçası varsa bana bildirin lütfen.

5 Cevap

PHP örnek ile sayfa verilen yoldaki bakarak bulunan profile.php. Bu dosya sunucunuza tarafından aranır ve (bulursa) yürütülür.

In Rails the URLs are matched against routes to find the corresponding controller. In your Rails example blog is mapped against the BlogController. Now Rails knows that the file containing the controller can be found as apps/controllers/blog_controller.rb.
Each controller has actions so the show part is matched against the show action of the BlogController, which is represented by a show method in the controller.
For information about Rails routes, read the Routing Guide of Rails.

Yani kısa olması

  • PHP sizin URL'lerin gerçek dosyalara karşı eşleştirilir: gerekli çok basit hayır yolları.
  • Raylar içinde URL'ler (denetleyicisi / eylem olanakları) daha sofistike olabilir ama yolları gerektirebilir.

Gerçekten PHP Rails karşılaştırmak olamaz - hatta elmalarla armutları karşılaştırmak gibi değil; portakal ağacında bir elma karşılaştırma gibi. Genel olarak, dikkate alınması gereken üç şey vardır:

  1. Bir web sunucusu - Gelen bağlantıları (örn. Apache, nginx, Eebrick) kolları yazılım bir parça
  2. Tercüman - dinamik komut (örn. Ruby, PHP, Perl) yürütür uygulama
  3. Web çerçevesi - kütüphaneler ve web uygulamaları geliştirmeye yardımcı yardımcı sınıflar kümesi (örn. Raylar, CakePHP, Kod Ateşleyici, Django)

Basit durumda, Web sunucusu bir dosyanın o kullanıcı istekleri bir yolu olarak gelen URL kullanır:

http://example.com/example.php -> /var/www/example.php
http://example.com/other.rb -> /var/www/other.rb

Most static files (images, styles etc) are served this way. You can pass some parameters using query string (in form ?a=foo&b=bar). However, you can configure your webserver to route URLS using more sophisticated rules. In Apache, for example, you can use mod_rewrite to specify some rules using regular expressions that map URLs to other URLS. For example, in Apache:

RewriteRule /foo/(.*)$ /index.php?id=$1

/foo/ index.php dosya ve id parametre olarak URL kalan kısmını geçirmek ile başlayan her isteği eşler:

http://example.com/foo/bar       -> /var/www/index.php?id=bar
http://example.com/foo/other/bar -> /var/www/index.php?id=other/bar

Şimdi, ne istekleri ile yapmak için uygulama kalmış. Rails uygulamaları URL'ler denetleyicileri eylemlere doğrudan eşleştirilir. PHP, size aynı şekilde davranır çerçeveler kullanabilirsiniz. CakePHP Örneğin, / posts/show/2 isteği PostsController sınıfında (2) yöntemi gösterisi yürütmek olacaktır. Kontrolörleri istekleri gönderir Router sınıfı da mevcuttur.

Benim cevabım biraz yardımcı umuyoruz ;)

www.xxx.com/profile.php?profile_id=2

? URI query string ila kaynak / nesne ayırır. Tarayıcı www.xxx.com/profile.php arar ve profil GET -requested with profile_id=2 olduğu bilgileri aktarır sunucu, bütün URI gönderir. PHP bu bilgiyi ayrıştırır ve özellikle bu formda $_GET olarak adlandırılan bir dizi olarak kullanılabilir hale getirir:

array(
    'profile_id' => 2
)

profile.php komut artık $_GET['profile_id'] okuyarak bu bilgi okuyabilirsiniz.

Eğer alıntı 'Raylar-yönlendirilir URI' SEO için daha iyi olduğu, daha fazla bilgi, bu pasajı var: Eğer eşler için 'Raylar-a .htaccess dosya veya eşdeğerini kullanın eğer çok Rails gibi yönlendirme elde edebilirsiniz Yönlendirilmiş URI en kaynağa profile.php.

Ayrıca yardım için çerçeveler kullanabilirsiniz. Yakın eşdeğer Eğer Zend Framework Router kullanıldığı takdirde ben off-el olacağını biliyorum (buna bu geçiş nedeniyle kullanılan karşılaştırılabilir sözdizimlerinden doğal gelmelidir).

Web sunucusu bir isteği aldığında Rails, web sunucusu bir denetleyici bir eylem isteği "gönderir". Eğer söz olarak, dispatchting nasıl yapılır, routing tabloda tanımlanır.

Basit bir PHP projelerinde, gelen HTTP isteği denetleyicisi ve aynı dosyada karışık veritabanı mantığı ile bir görünüme eşleştirilir. MVC deseni kullanarak olmadan, büyük olasılıkla, benzer eylemler için çoğaltılamaz kod ile sona esnekliği (örneğin filtreleme öncesi ya da post-processing bir URL) kaybetmek veya kod hataları ve vulnabilities olan riskleri var.

R u ben soruyorum ne oluyor.

Değil oldukça iyi.

How the request is sent to the requested page.

Tarayıcı www.xxx.com host /profile.php?profile_id=2 isteği göndermek yok

Rounting php nasıl yapılır

Tam olarak aynı şekilde.

list($controller,$blog,$id)=explode("/","/blog/show/123");