Kesinlikle. Template engine olarak araştırmalısın. Twigi neririm standalone olarak. MVC yapısını ğrenmekte fayda var. Frameworkleri kurcalamakta fayda var. Hatta MVC hakkında birkaç makale okumak elzem. Framework konusuna yabancısın belli ki Laravel iyi bir başlangıç olabilir. Hatta bunlar sana sıkıcı gelirse JavaScript'te de template engineler var onlar ile belki daha iyi kavrayabilirsin. En azından kolay gelebilir. Edit: ayrıca ajax ile de işlem yapıyormuşsun template engineler değerlerin push edilmesi ile çalıştığından sınıfı ya da bir diziyi ajax olarak basması da çok kolay ve zevkli. PcK0 tarafından 31/Mar/16 23:26 tarihinde düzenlenmiştir Sadece bi imza..

Merak ediyorum, php kodunu tamamen html içinden soyutlanmalı mı yoksa soyutlanmamalı mı ? Mesela yazdığım web uygulamasını phonegap gibi mecralara taşıyabilmek için php' nin içinde olmaması gerekiyor ? Normal html ile php içiçe olan kodu, biraz nce page startup da ajax call' lar kullanarak tamamen soyutladım. Şimdi bunu direk phonegap' e port edebilir miyim? Tüm php kodları tamamen kalktı içinden ama x2 js kodu geldi. ozgunlu tarafından 31/Mar/16 18:48 tarihinde düzenlenmiştir Hello, i am nothing. I come from Neverland.

bakınız. mvc, restful metot değil hocam, fayda ve faydasızlıklarını merakımdan açtım konuyu, çünkü php diğer dillere nazaran farklı bi amaçla çıkmış ve konumu farklı. daha yeni yeni oop yapısı kazandırılıp tam bir server side tarafında geçiriliyor :d @PcK0 bekliyorum hocam ozgunlu tarafından 01/Nis/16 13:57 tarihinde düzenlenmiştir Hello, i am nothing. I come from Neverland.

bakınız. mvc, restful Cehennemin dibine kadar yolum var daha.. || Nasılsa her yalnız kendine sürgündür Asmera unutma.

Sistemin tüm yerde sync olmasını istiyorsan ve performanslı olmasını istiyorsan restful api ya oluşturarak yazmak mantıklı hocam yani php yi html den soyutlayacaksın ve bunun performansla bir alakası yok oyle olsaydı facebook google boyle birşey yapmazdı. sistemi php yle bir api oluşturduktan sonra bir javascript framework uyle basacaksın yani grünür kısım php yerine js ile render edilmiş olacak bunada single page app denir. n tarafa basmak için kullanacağın javascript bir framework olması şart jquery le uraşırsan çorba olur. php ile oluşturduğun api performanslı olmasını istiyorsan microframework kullanmalısın (silex, slim, flask olabilir çünkü laravel gibi büyük frameworklar orm yapısını kullandığındığından dolayı yavaş kalır ama performans nemli değil ğrenme amaçlı diyorsan laravel kullanabilirsin. Hocam simdi gordum de ben one page tasarim yapmiyorum ve yeri geliyor yazdigim metodu farkli yerlerde kullaniyorum, jqueryde. Ama sanirim bu angular da yok. Bildiğim kadariyla angulari html kodum o an gerektigi yerde cagiriliyor. Gerci bu da dil dosyalarinda durmadan id verip iclerine yazdırmaktan cok daha kolay yapacaktir ama. Reactin isleyisini biliyorum da hic kod yapısına bakmadim. Ona bakiyim biraz da. Framework ogrenmeyi düşünmüyorum, bana vakit kaybi geliyor su an icin. Zaten nodejs e ihtiyacım olacak, o tarafa kayicam biraz daha. Ama su reacti incelemeye alacagim. Herkese tesekkur ederim guzel yazilar icin Hello, i am nothing. I come from Neverland.

Hocam bence spagetti kodlamadan uzak durmakta fayda var. Kaş yapayım derken gz de çıkarmamak lazım.

ncelikle kafamdakileri yazayım daha sonra phonegap ile birleştirme konusuna değiniriz. Ve baştan alayım. PHP ile HTML kodunu tümleşik yazmak her ne kadar büyük performans sağlayacak gibi dursada uygulamanın geliştirilebilirliğine büyük darbe vuruyor. Proje tamamlandıktan sonra elimizde değişimlere karşı direnç gsteren ve yeni zellik eklenmesi bahsedeceğim sisteme gre çok uzun süren bir kod kalıyor. İlgili sistem farklı platfromlara kaydırılınca çok acı verici bir süreç başlıyor ve kod bahsedeceğim mimariye otomatikman dnüşmek zorunda kalıyor. rnek üzerinden gidersek daha kolay olur diye düşünüyorum. İstek: abc.com/kullanici/pck0 olsun. İlk olarak isteği PHP tarafında yorumluyoruz. Kullanıcılardan pck0 rumuzlu kullanıcının profil sayfası istenmiş. yleyse bize pck0 kullanıcısının verileri lazım. Bunu sql ile çekiyoruz. Normalde sınıf olarakta kullanıyor olabiliriz ama karışmasın diye bu verileri $kullanici adında bir dizide tuttuğumuzu varsayalım. Ve işte bu noktada benim sylemek istediğim sistem devreye giriyor. Normalde elimizdeki verileri ekrana şeklinde basarız. Bunun yerine buraya bir karar mekanizması ekleyip bu isteğin bir ajax mı yoksa normal bir istek mi olduğuna dair karar mekanizması ekleriz. Eğer bir ajax isteği ise bunu basitçe json_encode ile gndeririz. Eğer normal bir istek ise burada verilerimizi template engine'e ilgili sayfa adıyla gndeririz. Şyle ki: Kodumuz: Eğer istek ajax ise: Eğer istek normal ise: şeklinde basacak. Ve bunun byle olmasını sağlayan twig template'miz ise: Velhasıl kelam PHP kodumuz o ilk blümde gsterdiğim gibi HTML kodlarından soyutlanmış olacak. Ve bylece istersek HTML olarak, istersek JSON olarak hatta bahsetmedim ama XML formatında ekrana basabileceğiz. Ve bu konuda sınır olmayacak. Multiplatfroma destek veren bir yapı olacak. PhoneGap olayına bunu tanımlamak istersek sadece ve sadece dış çağrımlar için ajax kullanmak gerekecek. Ve bizim kodumuz üstteki yapı ile çok kolay JSON formatında veri aktarımı yapabiliyor. O yüzden isterse native bir mobil uygulama olsun gayet başarılı olarak çalışacaktır. Yani bütün olay aslında bundan ibaret. Ekrana basılacak değişkenleri hemen basmıyor bir karar mekanizması ile tekrar şekillendiriyoruz. Bahsedilen MVC mimarisinin view kısmı byle. Birçok atlaya atlaya HTML ile ayırmanın neden güzel olduğuna değinmek istedim. Resimler her ne kadar güzel çıkmasada kafada byle şekillendirmesi bile kolay olacaktır. Şimdi geldik multilanguage olayına. Klasik PHP ile cevap vermek istersem PHP:gettext ve PoEdit derim. çıktılarımızı echo _ ; şeklinde yazıyoruz. Sonra PoEdit ile bütün projeyi tarıyor ve çeviri yapacağımız dili seçiyoruz. Bizim karşımıza bir tablo çıkartıyor solda orjinal halleri sağda bizim çeviri yapacağımız alan oluyor. Kullanılan printf %s gibi ifadesiyle çevirilerde değişkenlerin yerinin farklı olamamasınında nüne geçiyor. Biraz internetten araştırırsanız daha detaylı bilgi bulabilirsiniz. MVC mimarisi altında destek vermek gerekirse, PHP:gettext + Twig + i18n + Twig gettext extractor + PoEdit gibi devasa grup ile multilanguage olayını ancak çzebiliyoruz. Twig bu sefer gettext sistemini i18n eklentisinde trans ile birleştiriyor. Twig gettext extractor ile de PoEdit'e çıktıları verebiliyoruz. :) Herşeyin akabinde umarım biraz olsun seni spagetti koddan uzaklaştırırım da en azından programların benim bu yazımdan daha fazla verimli olur :) Şimdi kafam rahat hocam, 3-4 güne sistemi bu hale getiricem. Yazdıklarını araştırdım, güzel şeyler. Eline sağlık ve teşekkür ederim yardımcı olduğun için :) Server side' da da Slim Framework üzerinden Rest API' ye çeviriyim diyorum. Slim zaten lightweight miş, hem de twig ile çalışabiliyormuş. Yani kısaca slim + twig + gettext + i18n + poedit yapıcam. şimdi socket.io falan kullanmak istiyorum nodejs ile real time bazı şeylere ihtiyacım var. bu yukardaki arkadaşlar sıkıntı oluşturur mu? ek : tek endişem, template engine kullanınca hızdan kaybım olacak mı? ozgunlu tarafından 14/Nis/16 16:56 tarihinde düzenlenmiştir Hello, i am nothing. I come from Neverland.

ncelikle kafamdakileri yazayım daha sonra phonegap ile birleştirme konusuna değiniriz. Ve baştan alayım. PHP ile HTML kodunu tümleşik yazmak her ne kadar büyük performans sağlayacak gibi dursada uygulamanın geliştirilebilirliğine büyük darbe vuruyor. Proje tamamlandıktan sonra elimizde değişimlere karşı direnç gsteren ve yeni zellik eklenmesi bahsedeceğim sisteme gre çok uzun süren bir kod kalıyor. İlgili sistem farklı platfromlara kaydırılınca çok acı verici bir süreç başlıyor ve kod bahsedeceğim mimariye otomatikman dnüşmek zorunda kalıyor. rnek üzerinden gidersek daha kolay olur diye düşünüyorum. İstek: abc.com/kullanici/pck0 olsun. İlk olarak isteği PHP tarafında yorumluyoruz. Kullanıcılardan pck0 rumuzlu kullanıcının profil sayfası istenmiş. yleyse bize pck0 kullanıcısının verileri lazım. Bunu sql ile çekiyoruz. Normalde sınıf olarakta kullanıyor olabiliriz ama karışmasın diye bu verileri $kullanici adında bir dizide tuttuğumuzu varsayalım. Ve işte bu noktada benim sylemek istediğim sistem devreye giriyor. Normalde elimizdeki verileri ekrana şeklinde basarız. Bunun yerine buraya bir karar mekanizması ekleyip bu isteğin bir ajax mı yoksa normal bir istek mi olduğuna dair karar mekanizması ekleriz. Eğer bir ajax isteği ise bunu basitçe json_encode ile gndeririz. Eğer normal bir istek ise burada verilerimizi template engine'e ilgili sayfa adıyla gndeririz. Şyle ki: Kodumuz: Eğer istek ajax ise: Eğer istek normal ise: şeklinde basacak. Ve bunun byle olmasını sağlayan twig template'miz ise: Velhasıl kelam PHP kodumuz o ilk blümde gsterdiğim gibi HTML kodlarından soyutlanmış olacak. Ve bylece istersek HTML olarak, istersek JSON olarak hatta bahsetmedim ama XML formatında ekrana basabileceğiz. Ve bu konuda sınır olmayacak. Multiplatfroma destek veren bir yapı olacak. PhoneGap olayına bunu tanımlamak istersek sadece ve sadece dış çağrımlar için ajax kullanmak gerekecek. Ve bizim kodumuz üstteki yapı ile çok kolay JSON formatında veri aktarımı yapabiliyor. O yüzden isterse native bir mobil uygulama olsun gayet başarılı olarak çalışacaktır. Yani bütün olay aslında bundan ibaret. Ekrana basılacak değişkenleri hemen basmıyor bir karar mekanizması ile tekrar şekillendiriyoruz. Bahsedilen MVC mimarisinin view kısmı byle. Birçok atlaya atlaya HTML ile ayırmanın neden güzel olduğuna değinmek istedim. Resimler her ne kadar güzel çıkmasada kafada byle şekillendirmesi bile kolay olacaktır. Şimdi geldik multilanguage olayına. Klasik PHP ile cevap vermek istersem PHP:gettext ve PoEdit derim. çıktılarımızı echo _ ; şeklinde yazıyoruz. Sonra PoEdit ile bütün projeyi tarıyor ve çeviri yapacağımız dili seçiyoruz. Bizim karşımıza bir tablo çıkartıyor solda orjinal halleri sağda bizim çeviri yapacağımız alan oluyor. Kullanılan printf %s gibi ifadesiyle çevirilerde değişkenlerin yerinin farklı olamamasınında nüne geçiyor. Biraz internetten araştırırsanız daha detaylı bilgi bulabilirsiniz. MVC mimarisi altında destek vermek gerekirse, PHP:gettext + Twig + i18n + Twig gettext extractor + PoEdit gibi devasa grup ile multilanguage olayını ancak çzebiliyoruz. Twig bu sefer gettext sistemini i18n eklentisinde trans ile birleştiriyor. Twig gettext extractor ile de PoEdit'e çıktıları verebiliyoruz. :) Herşeyin akabinde umarım biraz olsun seni spagetti koddan uzaklaştırırım da en azından programların benim bu yazımdan daha fazla verimli olur :) PcK0 tarafından 01/Nis/16 22:39 tarihinde düzenlenmiştir Sadece bi imza..

Mobildeyim şuan yazamıyorum detaylı inşAllah yarın yazarım anlatmak istediğim yapıyı ve dil sistemini. Sadece bi imza..

@ozgunlu Hızdan kaybım olacak mı diye sormuşsun. Cache kullanmazsan hızdan fena halde kayıp yaşanır. Template'lerin render'lama süresi biraz kaynak harcıyor. nüne geçmek için cache kullanıyoruz. Gene bir nceki gibi Twig'i ele alarak konuşacağım. Twig ilk template dosyasını ekrana basmak istediğimizde ilk olarak render'layıp klasik php dosyasına çeviriyor. Sonra bunu ekrana basıyor. Tabi normal olarak Twig'i byle kullanırsak her seferinde dosya render'lanıp çok fazla kaynak harcanacak. Fakat bir cache dizini gsteriyoruz. Eğer cache dizini gsterirsek Twig dosya isminden kafasına gre olduğunu düşündüğüm bir hash değeri üretiyor. Template dosyasını ilk olarak bu hash ile dizinde arıyor. Eğer bulamazsa template dosyasını render'layıp cache dizinine kaydediyor. Bylece bir sonraki istekte render'lama zahmetinden kurtuluyoruz. Fakat Twig'in burada bir eksiği var. Template dosyasını değiştirdiğimizde Twig bunu umursamayıp sadece cache dizininde var mı yok mu diye baktığı için biz ne kadar değiştirsekte gene eski çıktıyı alıyoruz. Bu yüzden bir cache sistemi kullanmak lazım geliyor. Twig'in bu sorununu production'a hazırladığımızda cache sistemini açmak ile ya da her bir istekte template dosyası ile cache dosyasının son değişiklik tarihlerini karşılaştırarak cache dosyası template dosyasının render'ı olduğundan dolayı daha yeni tarihe sahip olması gerektiği şartından yola çıkarak cache dosyası daha eski ise cache dosyasını basitçe silmek ilede nüne geçebiliyoruz. Her ne kadar ikinci seçenek tam bir çzüm olmasada development sırasında uzun render zamanı olan dosyalarda pratiklik sağlayabilir. Benim nerim elbetteki productiona sürmeden hemen nce cache sistemini açmaktır. Sadece bi imza..

Sistemin tüm yerde sync olmasını istiyorsan ve performanslı olmasını istiyorsan restful api ya oluşturarak yazmak mantıklı hocam yani php yi html den soyutlayacaksın ve bunun performansla bir alakası yok oyle olsaydı facebook google boyle birşey yapmazdı. sistemi php yle bir api oluşturduktan sonra bir javascript framework uyle basacaksın yani grünür kısım php yerine js ile render edilmiş olacak bunada single page app denir. n tarafa basmak için kullanacağın javascript bir framework olması şart jquery le uraşırsan çorba olur. php ile oluşturduğun api performanslı olmasını istiyorsan microframework kullanmalısın (silex, slim, flask olabilir çünkü laravel gibi büyük frameworklar orm yapısını kullandığındığından dolayı yavaş kalır ama performans nemli değil ğrenme amaçlı diyorsan laravel kullanabilirsin.

Ben Restfull api kullanarak yapmıştım. Javascript kütüphanesi olarak da angular. js kullanırsan bence işin biraz daha kolay olur. Bunun dışında bir yndem var mı bilmiyorum

bence soyutlamak mantıksız. her bir şeyi ajax ile çağırmak anlamına geliyor. boşuna bir sürü sorgu olucak. phonegap da ayrı olmasının olayı phonegapın kendi içinde php derleyicisi tarzı birşeyi olmadığından yle. androidde uzaktaki sayfayı browse edip açabiliyorsun ama apple buna izin vermiyor. Bittik biz bittik

Kesinlikle. Theme engine olarak araştırmalısın. Twigi neririm standalone olarak. MVC yapısını ğrenmekte fayda var. Frameworkleri kurcalamakta fayda var. Hatta MVC hakkında birkaç makale okumak elzem. Framework konusuna yabancısın belli ki Laravel iyi bir başlangıç olabilir. Hatta bunlar sana sıkıcı gelirse JavaScript'te de template engineler var onlar ile belki daha iyi kavrayabilirsin. En azından kolay gelebilir. Edit: ayrıca ajax ile de işlem yapıyormuşsun template engineler değerlerin push edilmesi ile çalıştığından sınıfı ya da bir diziyi ajax olarak basması da çok kolay ve zevkli. Framework ogrenmek niyetinde olmadim hicbir zaman ama yazdığım kod zaten oop, siniflarimda fonksiyonlarim var. Ajaxlardan gelen istekleri farkli handlerlar ile alip siniflarima yonlendiriyorum. Sadece data alirken ajax kullanmak yerine direk html icinden cagirip php olarak kullanıyordum. Cunku daha kolay ve daha az is yuku vardi. Ama bu uygulamayi phonegap e tasimak durumunda kalinca biraz kurcalamak istedim. Acikcasi simdi daha da anlasilir ve kolay bir kodum var ama ajax call isin basinda datayi async olarak getirdiginden page load olduktan sonra datalar beliriyor. Yine de server side i phonegap de kullanamayacagim icin iyi oldu. Kafami kurcalayan diger mesele, multilanguage olayi. Ben tr ve en adinda 2 php dosyasında statik datalarimi, geri kalanları ise db de tutuyordum. Ve session ile duruma gore dil dosyalarini yukluyordum. Simdi ajax a gecince hepsini. append ya da.html ile o divlere id verip iclerine push etmek durumunda kaldi. Bu durum hatali midir? Jquery kullaniyorum verdigim metotlar onlar için. ozgunlu tarafından 31/Mar/16 23:23 tarihinde düzenlenmiştir Hello, i am nothing. I come from Neverland.

Çizik. Php ile ugrasicam bi süre sonra tekrar okuyayim yazilanları.