mysql - PHP में हाइबरनेट के समान कुछ भी?



hibernate database-design (5)

मैं एक जावा प्रोग्रामर हूं और कुछ समय के लिए हाइबरनेट और स्ट्रूट्स का उपयोग करके एक परियोजना पर काम कर रहा था।

अब मेरी नई परियोजना के लिए, मैं PHP और MySQL (PHP सीखना) पर काम कर रहा हूं। क्या कोई तकनीक है जो PHP के लिए हाइबरनेट के समान है? यदि हां, तो क्या कोई मुझे वह लिंक दे सकता है जहां मैं समझ सकता हूं और इसका उपयोग कर सकता हूं?

PHP में एक POJO अवधारणा है?


Answers

एक सिद्धांत विकल्प के रूप में डीएमजे भी है: http://datamapper.wanwizard.eu/ जो कोडनिर्देशक के साथ काम करने और काम करने के लिए बहुत आसान है।


यदि आपको ओआरएम की आवश्यकता है, तो आप Doctrine प्रयास कर सकते हैं


यदि आप PHP पर फंस नहीं गए हैं (उदाहरण के लिए आप किसी भी स्क्रिप्टिंग भाषा का उपयोग कर सकते हैं), पर्ल में पीओजेओ अवधारणा (पर्ल ऑब्जेक्ट्स) और हाइबरनेट विकल्प ( हाइबरनेट पर्ल पोर्ट सहित कई ऑब्जेक्ट-रिलेशनल मैपिंग क्लासेस ) शामिल हैं।

यदि आपको PHP में मजबूर होना पड़ता है, तो आप here PHP के लिए OR / M की सूची देख सकते हैं


मेरी राय में PHP के लिए सबसे अच्छा ORM Doctrine

आप Propel जांच भी कर सकते Propel और देख सकते हैं कि आपकी शैली बेहतर कौन सा है।

PHP ओआरएम: सिद्धांत बनाम प्रोपल दो हाल की तुलना में हाल ही में एक सवाल है। सिम्फनी जैसे सामान्य PHP ढांचे आपको जहां तक ​​याद करते हैं, ओआरएम का उपयोग करने देते हैं।

जहां तक ​​पीओजेओ, जहां तक ​​मुझे पता है कि आप PHP में उस के लिए stdClass का उपयोग करेंगे। हालांकि मैं जावा के साथ ज्यादा नहीं हूं, इसलिए मैं निश्चित रूप से नहीं कह सकता। इसके बारे में एक SO प्रश्न यहां है ... PHP में stdClass क्या है?


HTML / XML DOM को संसाधित करने के कई तरीके हैं जिनमें से अधिकांश का पहले ही उल्लेख किया जा चुका है। इसलिए, मैं खुद को सूचीबद्ध करने का कोई प्रयास नहीं करूंगा।

मैं केवल यह जोड़ना चाहता हूं कि मैं व्यक्तिगत रूप से डीओएम एक्सटेंशन का उपयोग करना पसंद करता हूं और क्यों:

  • iit अंतर्निहित सी कोड के प्रदर्शन लाभ का इष्टतम उपयोग करता है
  • यह ओओ PHP है (और मुझे इसे उपclass करने की अनुमति देता है)
  • यह अपेक्षाकृत कम स्तर है (जो मुझे इसे अधिक उन्नत व्यवहार के लिए गैर-ब्लोटेड नींव के रूप में उपयोग करने की अनुमति देता है)
  • यह डीओएम के हर हिस्से तक पहुंच प्रदान करता है (उदाहरण के विपरीत। SimpleXml, जो कम ज्ञात एक्सएमएल सुविधाओं में से कुछ को अनदेखा करता है)
  • इसमें डीओएम क्रॉलिंग के लिए इस्तेमाल किया गया एक वाक्यविन्यास है जो मूल जावास्क्रिप्ट में उपयोग किए गए वाक्यविन्यास के समान है।

और जब मैं DOMDocument लिए सीएसएस चयनकर्ताओं का उपयोग करने की क्षमता को याद करता हूं, तो इस सुविधा को जोड़ने का एक आसान और सुविधाजनक तरीका है: DOMDocument उप querySelectorAll और JS-like querySelectorAll और querySelector आपके उप querySelector विधियां querySelector

चयनकर्ताओं को पार्स करने के लिए, मैं सिम्फनी ढांचे से बहुत कम से कम CssSelector घटक का उपयोग करने की सलाह देता हूं। यह घटक सिर्फ सीएसएस चयनकर्ताओं को XPath चयनकर्ताओं में अनुवाद करता है, जिन्हें संबंधित नोडेलिस्ट को पुनः प्राप्त करने के लिए किसी DOMXpath में खिलाया जा सकता है।

इसके बाद आप इस (अभी भी बहुत कम स्तर) उपclass का उपयोग उच्च स्तर के वर्गों के लिए आधार के रूप में कर सकते हैं, उदाहरण के लिए। एक्सएमएल के बहुत विशिष्ट प्रकारों को पार्स करें या अधिक jQuery जैसी व्यवहार जोड़ें।

नीचे दिया गया कोड सीधे मेरी PHPPowertools/DOM-Query बाहर आता है और मैंने वर्णित तकनीक का उपयोग किया है।

एचटीएमएल पार्सिंग के लिए:

namespace PowerTools;

use \Symfony\Component\CssSelector\CssSelector as CssSelector;

class DOM_Document extends \DOMDocument {
    public function __construct($data = false, $doctype = 'html', $encoding = 'UTF-8', $version = '1.0') {
        parent::__construct($version, $encoding);
        if ($doctype && $doctype === 'html') {
            @$this->loadHTML($data);
        } else {
            @$this->loadXML($data);
        }
    }

    public function querySelectorAll($selector, $contextnode = null) {
        if (isset($this->doctype->name) && $this->doctype->name == 'html') {
            CssSelector::enableHtmlExtension();
        } else {
            CssSelector::disableHtmlExtension();
        }
        $xpath = new \DOMXpath($this);
        return $xpath->query(CssSelector::toXPath($selector, 'descendant::'), $contextnode);
    }

    [...]

    public function loadHTMLFile($filename, $options = 0) {
        $this->loadHTML(file_get_contents($filename), $options);
    }

    public function loadHTML($source, $options = 0) {
        if ($source && $source != '') {
            $data = trim($source);
            $html5 = new HTML5(array('targetDocument' => $this, 'disableHtmlNsInDom' => true));
            $data_start = mb_substr($data, 0, 10);
            if (strpos($data_start, '<!DOCTYPE ') === 0 || strpos($data_start, '<html>') === 0) {
                $html5->loadHTML($data);
            } else {
                @$this->loadHTML('<!DOCTYPE html><html><head><meta charset="' . $encoding . '" /></head><body></body></html>');
                $t = $html5->loadHTMLFragment($data);
                $docbody = $this->getElementsByTagName('body')->item(0);
                while ($t->hasChildNodes()) {
                    $docbody->appendChild($t->firstChild);
                }
            }
        }
    }

    [...]
}

Symfony के निर्माता C FabSelector घटक को सिम्फनी के लिए CssSelector घटक बनाने और इसका उपयोग करने के निर्णय पर सीएसएस चयनकर्ताओं के साथ सीएसएस चयनकर्ताओं के साथ पार्सिंग एक्सएमएल दस्तावेज भी देखें।





php mysql hibernate database-design