Nasıl JavaScript ve PHP tarafından anlaşılır bir şekilde bir formül temsil edebilir?

5 Cevap php

PHP bir alışveriş sepeti yazıyorum ve onun işlevinin bir parçası ürünlerin verilen bir grubu için nakliye hesaplamak etmektir. Etkinleştirilmiş JavaScript ile kullanıcılar için, ben sepeti değişiklikler sayfa reloads gerekmez veya AJAX çağırır böylece istemci tarafında yapılan doğru bir nakliye hesaplama alarak mümkün akıcı deneyimi sağlamak istiyoruz.

Şu anda kargo ücreti ve işlevselliğini yansıtan Javascript başka işlevi hesaplar PHP bir işlevi var. Ben formülü sık sık değişebilir endişeleniyorum, ve iki farklı dilde, iki ayrı işlevleri yeniden (ve onların çıkışları maç emin olun) idame sorunları yaratabilir zorunda.

PHP ve JavaScript hem de yorumlanabilir, böylece ne ben arıyorum, bazı dil agnostik şekilde nakliye ücretleri hesaplama formülünü temsil eden bir yoludur. Ben çok fazla tekrar yazılmasını olmadan daha fazla eklemek için yeteneği istiyorum rağmen şu anda nakliye formül sadece tek bir değişken (öğe sayısı) bir fonksiyonudur.

PHP ve JavaScript hem de yorumlanabilir bir şekilde oldukça basit bir matematiksel formül temsil etmek için kabul edilen bir yolu var mı? Tercihen kendi yorumlayıcısı yazmadan?

Düzenleme: Ben bütün işlevi, "4 + 1.5 N" çizgisinde sadece bir oldukça basit bir matematiksel formül gerekmez. Şey tür tipik bir tablo hücresine bulur.

5 Cevap

Genellikle, sadece iki kod sürümleri korumak için en iyi kapalı. En zarif çözüm, tabii ki, JavaScript kendisi sunucu mantığı (bkz: cappuccino.org) yazmak için; Zaten PHP kod bir ton yazdım gibi geliyor çünkü bu sizin için kötü bir seçim olacaktır.

Ancak, gerçekten bu kazımak ihtiyacı hissediyorum, sunucuya AJAX geri arama düşünün. Biraz daha yavaş olsa da, çoğu kullanıcı fark etmez.

Ben sunucu tarafında bunu söyleyebilirim, ve kullanıcı AJAX, Bu kullanıcı için yapmak kadar fark olmaz, ancak siparişi gönderdikten sonra kullanıcı farklı hesaplama gördüğünde iki sürümünü koruyarak bir fark yaratabilir.

Anyway if you due to some reason do not want AJAX at all, best way would be to have single javascript library which is executed both at client and server side. You may execute javascript from php on server side. e.g. you may use following from linuxto execute javascript

http://www.mozilla.org/js/spidermonkey/ http://www.mozilla.org/rhino/ http://www.wxjavascript.net/

http://en.wikipedia.org/wiki/Server-side%5FJavaScript daha fazla seçenek için bakın

Bu kötü bir fikir olduğunu ve hesaplama hale daha karmaşık bir kötü bir fikir haline gelecektir.

Söyleniyor, JavaScript değişken isimleri yasal olarak dolar işaretini desteklemiyor. Kolayca sürece sadece basit matematik ile uğraşıyoruz gibi, her aynı ayrıştırır ve çalışan kod yazabilirsiniz iki dil arasında ortak bir yazım var. Diziler biraz tricker olabilir. Kitaplık bir set JavaScript PHP yerleşik fonksiyonlarını taklit eden, PHP.JS göz atın.

(Edit:.. Ben başkası ona benim düzenleme Kredi / dehşet sırasında aynı şeyi yayınlamak için gittiğini bilmeden php.js için link düzenlenebilir ;))

Belki. php.js bir göz atın. Size ancak JavaScript tüm php fonksiyonlarını verir.

Ayrıca php bütün doğrulama yazmak ve istemci tarafında sorgulamak için Ajax kullanabilirsiniz.

Bir bu uygulama için bazı otomatik test eklemek için zamanı olduğunu söylüyorlar, ve en azından sizin üretim sunucusuna uygulama dağıtmak için istediğiniz her zaman onları çalıştırmak istiyorum - ve bu, bazı başarısız olursa, dağıtım iptal.

Sen hem PHP ve JS kodu testleri olurdu, ve bu testlerin bazı bazı toplam miktar / ücretler / nakliye maliyetlerini hesaplamak istiyorum; bir şey çünkü bazı kod değişikliği yanlış giderse ve size uygulama üretime bozmadan, otomatik olarak sorunu tespit etmek mümkün olurdu.

Tabii ki, biraz daha fazla iş (both to write the tests, configure the building platform, and maintain the test data) gerektirir; ama bu büyük bir güvenlik olurdu ...


Another possible solution would be to write your calculation code only in Javascript, and run it both on the client side (this is not the hard part, obviously), and on the server side.

PHP itibaren, Spidermonkey PECL extension (Note it's still in beta, though ; and you'll need to be able to install PHP extensions, which will probably be possible only if you are admin of your server -- and not sure about stability) kullanarak JS kod yürütebilir.

İşte bu konuda bir makale: Using JavaScript in PHP with PECL and SpiderMonkey.

Bu çözüm ile, sadece istemci üzerinde çalışır kodu JS kullanabilirsiniz; Sadece her iki tarafta çalışan kod sunucu üzerinde çalışan ... Ve JS kodu PHP.