C + + kodu PHP dönüştürmek

6 Cevap php

Ben C + + PHP kodu dönüştürmek için bir yol arıyorum. Ben bunu yapmak istiyorum bir kaç nedeni vardır:

Main reason: There are bunch of great PHP tools/software that I'd love to use and incorporate into C++ GUI or non-GUI applications

  1. Performansını artırmak için
  2. PHP kitaplıkları bağımlılığı önlemek için
  3. Paylaşılan barındırma ortamlarında kaynak kodunu açıklamadan kaçınmak
  4. C + + dili özellikleri ile güçlenmiş ve Qt C + + ve Poco gibi çerçeveler yararlanmak üzere

Bugüne kadar ben buldum:

http://sourceforge.net/projects/binaryphp

http://www.mibsoftware.com/php2cpp/

Fikirlerinizi ve bildiğiniz araçları paylaşın lütfen. Şimdiden teşekkürler!

EDIT: I also need cross-platform operability and good match for $$, syntactic sugar functions and Interface.

EDIT: Please note that 2 aforementioned tools use 2 different approaches. The former has built-in libraries to convert PHP procedural code and make it run. The latter translates (word by word) from PHP to C++.

6 Cevap

Bu da kısa bir süre içinde ilginç alabilirsiniz:

https://developers.facebook.com/blog/post/2010/02/02/hiphop-for-php--move-fast/

It's what keeps facebook alive ;) A technology that translates & compiles php to C++ and is going to go open-source. I expect it to be really well tested.

Belki de tam olarak bunu yapmak gerekir düşünüyorum neden bağlamını grok yok, ama deftere nedenleri özellikle zorlayıcı olduğunu sanmıyorum.

  1. Değil pek çok web uygulamaları CPU-bağlı, bu yüzden performans artışı etkilendim olacak sanmıyorum. Yerel kod aşağı derleme sizin I / O yapmak için gidiyoruz veya DB herhangi bir kısa bekler değildir. C + + hareketli daha bir web uygulaması ölçekli ve çoğu script DB veya (örneğin DB Sharding veya bir RAM önbellek veri taşıma gibi) diskten veri bekliyor süresini azaltarak dahil etmek için daha iyi yollar vardır.

  2. Kütüphane bağımlılıklarını bir sorun gerçekten bu kadar mı? En popüler kütüphanelerin çoğu şimdi PHP çekirdeği ile birlikte, artı herhangi bir ek olanları genellikle yüklemek için bir çocuk oyuncağı vardır. Eğer var sonra em 'em, sen dokunmayın', bu yüzden C + + taşımak için özellikle zorlayıcı nedeni olduğunu ben emin değilim.

  3. Bu aslında C + + taşımak için çok kötü bir nedendir. En çok paylaşılan barındırma ortamlarında bir PHP ortamında komut dosyalarını çalıştırmak izin verecek, ancak bir C + + uygulaması ile olacak gibi (bir VPS bakıyoruz sürece) hiçbiri çok az bir rasgele çalıştırmanız izin verir. Doğru dosya izinlerini kullanarak gibi, paylaşılan ortamlarda kaynak okunabilirliği kontrol etmek için daha iyi yollar vardır. Eğer istemciler PHP kodu çalmak konusunda endişeli iseniz, iyi, çok kötü. Bunu istediğiniz tüm karartmak için deneyebilirsiniz, ancak günün sonunda genellikle anlamsız.

  4. Ne özgü C + + özellikleri bu kadar umutsuzca PHP sunmuyor gerekiyor? Dürüst olmak gerekirse, ortalama PHP kodlayıcı işaretçiler ve bellek tahsisi ile ilgili mucking fikri beni sh * t korkutuyor. Orada PHP için mevcut çok iyi çerçeveler vardır, ve ben sadece size özellikle çerçevede gibi bazı özellikler için tüm kod tabanı dilini değişen açmadan önce tamamen bu seçeneklerin her tüketebileceği öneririm.

  5. Siz Yorumlarınız çapraz platform uyumluluğu sözü ... PHP dürüstçe bu C + + olduğundan daha kolay yapacak. Eğer büyük olasılıkla farklı bir derleyici ve C sistem çağrıları + + kullanarak olacak oysa PHP uygulama nispeten (birkaç alt düzey fonksiyonlar hariç) platformlarda standardize edilir.

Çok araştırma sonra, http://www.phpcompiler.org/doc/maketea.pdf ve http://rosecompiler.org/ROSE_Tutorial/ROSE-0.9.4a-Tutorial.pdf buldum. PHP kaynak kodu ayrıştırılır ve sonra XSLT meselesi olduğunu C + + dönüştürerek, XML traslated olabilir beri. Ayrıca, PHPCompiler ayrıca eklentileri ve (AST dönüşümlere göre) kaynak kodun çeşitli dönüşümlerini destekler. Ben o an için yeterli olması gerektiğini düşünüyorum.

Bazı ekstra referanslar:

  1. http://www.phpcompiler.org
  2. http://www.phpcompiler.org/doc/latest/devintro.html
  3. http://rosecompiler.org
  4. http://rosecompiler.org/ROSE_UserManual/ROSE-UserManual.pdf

Teşekkürler tartışmaya katılan herkes için!

1-3 Zend derleyici tarafından yapılabilir

http://www.zend.com/en/

Qt C + + bir masaüstü UI çerçeve olmadığı için 4, biraz garip?

Bunun için iyi bir çözüm yoktur. Kaynak kodunu Facebook yaptığı şekilde yazarsanız hiphop tamam. Sınırlamalar bir yeri ve eksiklikleri bir yeri vardır. Beni yanlış anlamayın, daha iyi kazanılmış. Bu çok daha iyi kazanılmış, ama her şey için kullanabileceğiniz türden bir şey değil bulunuyor. Eğer herhangi bir yerde PDO veya Eval kullanıyorsanız Örneğin, HipHop sizin için yararlı olma unutun. Son Ben Wordpress derlemek değil, kontrol. Ben bu olsa değişti duydum. Ben bunu haline dönüştürme konum dil geniş bilgiye sahip olmadıkça diğer herhangi dile php dönüştüren şey hakkında sinir olurdu.

Ben c + + bilmem, ama phc c koduna çapraz derleme php oldukça yetkin bir iş yok. Sadece düz derleme yapmak için sorarsanız daha iyi çalışır. O kaynağı olarak kendi üzerinde oluşturduğu malzeme tüm derlemek görünmüyor. Ama her yerinde, çok şimdiye kadar onunla etkiledi. http://www.phpcompiler.org/doc/latest/runningphc.html#runningphc