फाल्कन 1.0.0 का पहला बीटा

आज, फाल्कन विकास टीम ने फाल्कन 1.0.0 ढांचे का पहला बीटा संस्करण जारी किया। जो लोग नहीं जानते हैं उनके लिए: फाल्कन सी में लिखा गया एक PHP ढांचा है और PHP के लिए एक विस्तार के रूप में काम कर रहा है, आप इसके बारे में Habr में पढ़ सकते हैं लेख फाल्कन - संकलित PHP MVC फ्रेमवर्क और फाल्कन में: आइए उदाहरण के लिए जानें
इस रिलीज का उद्देश्य समुदाय से प्रतिक्रिया प्राप्त करना और अधिकतम बग का पता लगाना है।



इस संस्करण के महत्वपूर्ण नवाचारों की संक्षिप्त घोषणा:
  1. तिवारी कैशिंग
  2. वोल्ट टेम्पलेट इंजन में सुधार
  3. क्षैतिज और ऊर्ध्वाधर शार्किंग
  4. स्नैपशॉट रिकॉर्ड करें
  5. गतिशील अद्यतन
  6. मान्यता



1. बहुस्तरीय कैशिंग


कैशिंग घटक की एक नई विशेषता डेवलपर को कैश को कई स्तरों में लागू करने की अनुमति देती है। अलग-अलग जीवन काल के साथ कई स्थानों (कैशिंग सिस्टम) में कैश को संग्रहीत करते समय, और बाद में उनसे पढ़ने, सबसे तेज़ (पंजीकरण के क्रम में) से शुरू होने और उन सभी में जीवनकाल समाप्त होने तक सबसे धीमे से समाप्त होने पर यह सुविधा उपयोगी होगी।
<?php $ultraFastFrontend = new Phalcon\Cache\Frontend\Data(array( "lifetime" => 3600 )); $fastFrontend = new Phalcon\Cache\Frontend\Data(array( "lifetime" => 86400 )); $slowFrontend = new Phalcon\Cache\Frontend\Data(array( "lifetime" => 604800 )); //Backends are registered from the fastest to the slower $cache = new \Phalcon\Cache\Multiple(array( new Phalcon\Cache\Backend\Apc($frontCache, array( "prefix" => 'cache', )), new Phalcon\Cache\Backend\Memcache($fastFrontCache, array( "prefix" => 'cache', "host" => "localhost", "port" => "11211" )), new Phalcon\Cache\Backend\File($slowestFrontCache, array( "prefix" => 'cache', "cacheDir" => "../app/cache/" )); )); // ,       $cache->save('my-key', $data); // ,          $data = $cache->get('my-key'); 



2. वोल्ट टेम्पलेट इंजन में सुधार


वोल्ट (सी में भी लिखा गया) को इस संस्करण में कई नई सुविधाएँ प्राप्त हुईं:
 {#   #} {{ total > 0 ? total|format('%0.2f') : '0.0' }} {#  For-Else #} {% for robot in robots %} {{ robot.name }} {% else %} There are no robots {% endfor %} {#    #} <table> {% for robot in robots %} {% if loop.first %} <thead> <tr> <th>Position</th> <th>Id</th> <th>Name</th> </tr> </thead>ae <tbody> {% endif %} <tr> <th>{{ loop.index }}</th> <th>{{ robot.id }}</th> <th>{{ robot.name }}</th> </tr> {% if loop.last %} <tbody> {% endif %} {% endfor %} </table> {#     (Space control delimiters) #} <ul> {%- for robot in robots -%} <li> {{- robot.name -}}</li> {%- endfor %} </ul> 



3. क्षैतिज और ऊर्ध्वाधर शार्किंग


अब आप डेटाबेस से लिखने और पढ़ने के लिए विभिन्न कनेक्शन का उपयोग कर सकते हैं। मास्टर / दास DBMS कॉन्फ़िगरेशन के साथ काम करते समय उपयोगिता दिखाई जाती है:
 class Robots extends Phalcon\Mvc\Model { public function initialize() { $this->setReadConnectionService('dbSlave'); $this->setWriteConnectionService('dbMaster'); } } 


जब अनुरोधित डेटा के आधार पर कनेक्शन का चयन किया जाता है तो क्षैतिज शार्पिंग भी संभव है:
 class Robots extends Phalcon\Mvc\Model { public function selectReadConnection($intermediate, $bindParams, $bindTypes) { // ,      'where' if (isset($intermediate['where'])) { $conditions = $intermediate['where']; //        if ($conditions['left']['name'] == 'id') { $id = $conditions['right']['value']; if ($id > 0 && $id < 10000) { return $this->getDI()->get('dbShard1'); } if ($id > 10000) { return $this->getDI()->get('dbShard2'); } } } //        return $this->getDI()->get('dbShard0'); } } 



4. रिकॉर्ड स्नैपशॉट


अब, मॉडल अनुरोध के समय फ़ील्ड मान संग्रहीत करने के लिए एक संपत्ति सेट कर सकते हैं। आप इस फ़ंक्शन का उपयोग प्रक्रिया में फ़ील्ड मानों में बदलावों के ऑडिट या सत्यापन के लिए कर सकते हैं:
 class Robots extends Phalcon\Mvc\Model { public function initalize() { $this->keepSnapshots(true); } } 


तो आप उन मानों की जाँच कर सकते हैं कि किन क्षेत्रों को बदला गया है:
 $robot = new Robots(); $robot->name = 'Other name'; var_dump($robot->getChangedFields()); // ['name'] var_dump($robot->hasChanged('name')); // true var_dump($robot->hasChanged('type')); // false 



5. गतिशील अद्यतन


ORM को केवल उन फ़ील्ड्स का उपयोग करने की अनुमति देता है जिनके मानों को एक अद्यतन SQL क्वेरी बनाते समय बदला गया है, और सभी फ़ील्ड और उनके सभी मानों को इकट्ठा करने के लिए नहीं। इससे एप्लिकेशन और डेटाबेस सर्वर के बीच ट्रैफ़िक कम हो जाता है, जो प्रदर्शन पर लाभकारी प्रभाव डाल सकता है:
 class Robots extends Phalcon\Mvc\Model { public function initalize() { $this->useDynamicUpdate(true); } } 



6. मान्यता


नया फाल्कन \ Validation घटक स्वतंत्र डेटा सत्यापन की अनुमति देता है। घटक ORM और ODM में पहले से लागू चेक पर आधारित है। इसके साथ, आप ऐसे डेटा की जांच कर सकते हैं जो किसी मॉडल या संग्रह से संबद्ध नहीं हैं:

 $validation = new Phalcon\Validation(); $validation ->add('name', new PresenceOf(array( 'message' => ' name   ' ))) ->add('name', new StringLength(array( 'min' => 5, 'minimumMessage' => '  name  ' ))) ->add('email', new PresenceOf(array( 'message' => ' email    ' ))) ->add('email', new Email(array( 'message' => 'Email   ' ))) ->add('login', new PresenceOf(array( 'message' => ' login   ' ))); $messages = $validation->validate($_POST); if (count($messages)) { foreach ($messages as $message) { echo $message; } } 


इस रिलीज़ में अन्य सुधार और सुधार भी हैं, आप उन सभी को परिवर्तनों की पूरी सूची या रूसी सहायता समूह फाल्कन vkontakte में रूसी पढ़कर पा सकते हैं।

परीक्षण में मदद करें


आप इस संस्करण को GitHub से 1.0.0 शाखा से प्राप्त कर सकते हैं:

 git clone http://github.com/phalcon/cphalcon cd build git checkout 1.0.0 sudo ./install 


Windows उपयोगकर्ता डाउनलोड किए गए पृष्ठ से समाप्त DLL डाउनलोड कर सकते हैं।

हमें फॉस्फोरम , स्टैक ओवरफ्लो या Google समूह पर आपकी टिप्पणी और सुझाव प्राप्त करने में खुशी हो रही है। यदि आपको कोई त्रुटि मिलती है और इसे दोहराने या इसे हल करने के लिए एक परीक्षण बना सकते हैं, तो हमें एक पुल अनुरोध भेजें या GitHub पर एक मुद्दा बनाएं।

अतिरिक्त परिवर्धन के साथ PS नि: शुल्क अनुवाद, मूल यहाँ है
फ्रेमवर्क का समर्थन करने के लिए, एक VKontakte समूह बनाया गया है, एक रूसी साइट और प्रलेखन स्थानीयकरण शुरू हो गया है!
फाल्कन PHP फ्रेमवर्क प्रलेखन और उदाहरणों का एक और अनुवाद भी है

मूल फोटो कॉपीराइट साइमन रॉय: 500px.com/photo/7924712

Source: https://habr.com/ru/post/In171915/


All Articles