Mhariri sahihi wa PHP. Mhariri sahihi wa katalogi ya hariri ya PHP Crimson php

Wakati mwingine kihariri kizuri cha PHP kinakosekana, haswa kutoka kwa mtazamo wa kufanya kazi vizuri na nambari, jambo zito zaidi kuliko kuangazia sintaksia rahisi. Wakati huo huo, wahariri wa kawaida ni dime dazeni, ambayo, kwa bahati mbaya, mwangaza sawa wa syntax haufanyi kazi kwa usahihi kila wakati.

Ningependa kuwa na utekelezaji wa kawaida wa IntelliSense, na sio mbishi wa "mbao" katika mfumo wa orodha iliyotanguliwa ya njia na viunga vya lugha ambavyo "huanguka" wakati wa kufanya kazi na au bila sababu katika mfumo wa orodha kamili. . IntelliSense lazima "ujue" juu ya madarasa yote unayotumia, juu ya njia na vigeu vyao, ambayo ni kwamba, umeunganisha faili na ufafanuzi wa darasa lako kupitia #include, na mhariri huichukua mara moja, na hivyo kusababisha habari kuhusu " wa ndani" wa vitu vya darasa hili.

Pia itakuwa nzuri kuwa na vidokezo wakati wa kuandika jina la kazi kwa namna ya maelezo mafupi ya kazi (vigezo vinavyokubalika, ikiwa kuna kazi zilizojaa, nk). Hii inakosekana haswa kwa vitendaji vya kujiandikia; katika baadhi ya wahariri wa kawaida niliona vidokezo kama hivyo, lakini tu kwa vitendaji asilia vya PHP. Ndio, pia ni rahisi sana kuhamia haraka kwa ufafanuzi wa kazi kutoka mahali inapoitwa. Kwa ujumla, ninataka mengi zaidi, na ninazingatia uwezekano huu wote kuwa sehemu tu ya vitu muhimu zaidi katika mchakato wa kuweka rekodi na sio ziada ...

Tunaweza kusema kwamba kwa maana hii, bora yangu ni mchanganyiko wa MS Visual Studio + Visual Assist, ambayo mimi hutumia ninapofanya kazi na C # na C++ (Msaada wa Kuonekana katika mchanganyiko huu ni kama kihifadhi maisha). Wakati huna haja ya kuingia kwenye faili nyingine tena ili kuangalia vigezo vya utendaji vilivyokubaliwa au majina ya washiriki fulani wa darasa, hii kwa hali yoyote inachangia tija na "uzuri" wa mchakato. Kutokuwepo kwa mhariri kama huyo kati ya zana zake kunasikitisha sana, kwa kuzingatia kuongezeka (kutoka toleo hadi toleo) asili ya kitu cha PHP.

Na hii hapa!

Bado, nilipata mhariri mzuri kwangu - . Ikiwa wewe, kama mimi, ulitumia wahariri wa kawaida ambao hubadilisha "notepad" ya kawaida na pia unatamani IntelliSense ya kibinadamu, nakushauri ujaribu kwa hakika. Kwa kuongeza, pia ni bure (kuhusu toleo la kulipwa hapa chini) na hufanya kazi kwa misingi ya mfumo wa Mozilov (XPFE), ambayo inafanya pia jukwaa nyingi.

Mhariri huyu sio mzuri, ana mambo mengi mazuri, lakini, bila shaka, bado ana nafasi ya kuboresha. Lakini, kwa ujumla, katika siku za kwanza za kukutana naye sikuwa na mipaka ya furaha :)

Inafaa pia kuzingatia msaada wa lugha zingine (Perl, Python, Ruby, Tcl), na JavaScript, CSS, HTML, XML na mengi zaidi (kwa kuzingatia orodha ya faili ambayo inaweza kufungua, inajua mengi zaidi. lugha na teknolojia, lakini sina uhakika juu ya IntelliSense kufanya kazi kwa wote). Nilishangazwa sana na msaada wa mifumo mingi maarufu ya JavaScript (hii ilikuwa muhimu kwa hili).

Labda sijapata wakati wa kusoma utendaji wote wa Hariri ya Komodo bado, lakini ningependa kuelezea vidokezo kadhaa.

Kwanza kabisa, nilibinafsisha mpango wa rangi wa kuangazia nambari kwa PHP ( Hariri -> Mapendeleo... -> Fonti na Rangi), kwa kuwa tayari nimezoea rangi kutoka.

Nyongeza nyingine muhimu ilikuwa programu-jalizi ambayo hupata TODO zote kwenye mradi au faili wazi na kuzionyesha katika orodha moja (sawa na jinsi inavyotekelezwa katika VS). Na programu-jalizi ambayo hukuruhusu kuona katika mfumo wa orodha moja madarasa na njia zote zilizofafanuliwa kwenye faili iliyo wazi () kwa urambazaji wa haraka kupitia kwao.

Kwa ujumla, kabla ya kutumia Komodo, ni mantiki kujifunza mipangilio yake, kubadilisha vigezo fulani ili kujifanyia mwenyewe. Kwa mfano, pia nilifafanua hotkey kwa kwenda kufanya kazi ufafanuzi (niliifanya F12, kama katika Visual Studio :)

Kwa ujumla, kila kitu kinafanya kazi vizuri, "dunia na anga" ikilinganishwa na kuandika katika mhariri wa kawaida.

Ni ngumu kidogo kwamba ili kuunga mkono kikamilifu IntelliSense, lazima uunda faili ya mradi (unahitaji tu kuihifadhi kwenye saraka ya mizizi ya tovuti). Hiyo ni, ukifungua faili moja nje ya mradi wa Komodo, faili zote zilizojumuishwa hazitashughulikiwa kwa njia yoyote, na, ipasavyo, Komodo haitajua chochote kuhusu kazi na madarasa yaliyoelezwa kwenye faili zilizojumuishwa. Lakini, kwa ujumla, usumbufu huu mdogo unaweza kushinda :)

Kwa upande mwingine, kuunda faili ya mradi inakuwezesha kufanya mipangilio ya kina zaidi ya mradi, ambayo imehifadhiwa na kila wakati unapofungua mradi huo, Komodo itawakumbuka. Kupitia hiyo, kwa mfano, unaweza kutaja saraka za ziada ili Komodo, wakati wa kufanya kazi na mradi wako, daima anakumbuka muundo wa madarasa na mbinu (kwa IntelliSense na zana mbalimbali za zana) zinazotekelezwa katika faili ambazo ziko kwenye saraka iliyounganishwa, hata. ikiwa faili hizi wala hazijaunganishwa (kupitia kujumuisha au kuhitaji) kwa faili inayohaririwa. Unaweza pia kutafuta au kubadilisha maandishi katika faili zote za mradi. Pia, Komodo anakumbuka alamisho unazotengeneza ndani ya nambari ( Ctrl+F2) kwa kila faili, hii ni rahisi sana.

Nilishangaa kidogo kuwa Hariri ya Komodo hajui chochote kuhusu madarasa yaliyojengwa ndani ya PHP (labda ninafanya kitu kibaya?). Kwa mfano, ikiwa unahitaji kutumia darasa la mysqli:

$mysqli = mysqli mpya(HOST, USER, PASS, MBASE); ikiwa (mysqli_connect_errno()) ( chapisha "Unganisha umeshindwa: ".mysqli_connect_error(); toka(); ) $mysqli->query("INSERT....."); $mysqli->funga();

Wakati, baada ya kuandika neno "$mysqli", ninaanza kupata mbinu za kitu hiki (ninaandika ishara "->"), Hariri ya Komodo haitaki kuuliza chochote kuhusu swala, funga, nk. mbinu, na katika upau wa hali inaapa kwamba, wanasema, sijaona hata ufafanuzi wa darasa hili ... Wakati huo huo, hakuna matatizo na kazi zilizojengwa katika PHP kwa mfano, Komodo anajua vizuri sana kuhusu mysqli_* familia ya kazi (kifuniko ambacho ni darasa la mysqli). Lakini natumai dosari hii itarekebishwa siku moja. Ikiwa, kwa mfano, unafanya kazi na hifadhidata kupitia darasa lako mwenyewe la karatasi (au kupitia kitu kama PEAR), basi haipaswi kuwa na shida na IntelliSense.

Mara moja ilinitokea kwamba wakati wa kuhariri faili ya js, Komodo hakuelewa ni mfumo gani wa Hati ya Java nilikuwa nikitumia. Lakini, kwa bahati nzuri, hii inaweza kusahihishwa kila wakati katika mipangilio yake ( Hariri -> Mapendeleo... -> Akili ya Kanuni).

Kuna toleo la kulipwa la Komodo linaloitwa Komodo IDE. Kama ninavyoielewa, tofauti kuu kutoka kwa Hariri ya Komodo iko kwenye kazi za kawaida kwa IDE nyingi. Komodo IDE ina zana za kudhibiti toleo zilizojumuishwa (SVN) na kitatuzi cha msimbo.

Kwa njia, Hariri ya Komodo bado ina kitatuzi cha awali ambacho hukufahamisha popote pale kuhusu makosa madogo kama vile nusu-koloni iliyosahaulika mwishoni mwa mstari, mabano ambayo hayajafungwa, n.k. Anaonyesha makosa kama hayo na mstari mwekundu wa wavy. Ili utatuzi kama huo ufanye kazi, unahitaji kutaja njia ya faili inayoweza kutekelezwa ya PHP na php.ini katika mipangilio ya programu ( Hariri -> Mapendeleo… -> Lugha -> PHP).

Kama unavyoona, mipangilio kama hiyo inaweza kufanywa kwa lugha zingine zote.

Baadaye

Hariri ya Komodo sasa ni zana yangu ya kila siku 🙂 Pamoja, kwa uhariri fupi wa vitu vidogo mara kwa mara, ninaendelea kutumia analog ya notepad ya hali ya juu - Notepad++, ambayo ni, ninaitumia kwa madhumuni yake halisi.

Kabla ya Kuhariri Komodo, nilijaribu pia programu-jalizi ya kuvutia ya Visual Studio inayoitwa VS.Php. Imejengwa ndani ya Visual Studio na hukuruhusu kufanya kazi na PHP kwa njia sawa na, kwa mfano, na C # (unaweza kurekebisha msimbo, IntelliSense inafanya kazi, nk). Lakini kwa namna fulani haikunivutia sana, hasa kwa kuzingatia kwamba inalipwa. Kwa kuongeza, kama ninavyoelewa, wakati wa kufanya kazi ndani yake unaweza kusahau kabisa juu ya usaidizi wa Hati ya Java, nk. Jambo lingine la kufurahisha ni kwamba, kama vile Komodo, IntelliSense haifanyi kazi kwa madarasa yaliyojengwa ndani ya PHP. VS.Php hii pia inakinzana na Visual Assist.

Kuna wahariri wengine wawili sawa ambao nilisikia kuwahusu, lakini kwa namna fulani haikutokea kuwajaribu (ifuatayo ni IMHO tu na nadhani kulingana na "uvumi"):

  • Zend Studio inalipwa, kwa mujibu wa kitaalam, hisia ni kwamba ni jambo gumu na linatumika hasa katika miradi mikubwa sana na ngumu, inafaa hasa, labda, ikiwa mradi unaundwa kulingana na Mfumo wa Zend.
  • Eclipse ni bure, lakini ilinitisha, uwezekano mkubwa, kwa sababu ilikuwa ngumu sana. Kama ninavyoielewa, bado unahitaji kuweza kujikusanyia kutoka kwa moduli mbalimbali. Kwa ujumla, kwa namna fulani hakukuwa na hamu ya kujua jinsi ya kusakinisha na kusanidi (lakini wakati mmoja bado nilijaribu kidogo 😉), ingawa, bila shaka, mtu anaweza kuipenda sana.

***

Ikiwa mtu yeyote anaweza kupendekeza wahariri wengine wowote akizingatia ladha yangu "ya kuchagua", nitashukuru sana. Pia itakuwa ya kuvutia kusikia kuhusu vipengele vingine vya kuvutia vya Komodo kutoka kwa wale ambao tayari wanaitumia.

Kwa ujumla, mbali na kuangazia nambari ya zamani na kubeba gari la vitendaji visivyo vya lazima! Hili ni jiwe "chungu" dhidi ya wahariri rahisi wa msimbo wanaoonekana kila mara, ambao huangazia miongoni mwa "faida" zao kichunguzi cha mfumo wa faili kilichojengewa ndani au kitu kama kihariri/kitazamaji cha hifadhidata ndogo (vizuri, kwa nini hii ni muhimu ikiwa mambo muhimu zaidi inakosekana kwa kile kihariri cha nambari kinapaswa kutumika), nk. nk.. Kwa sababu fulani, karibu kila anayeanza (ingawa labda sio mwanzilishi kila wakati) anataka "haraka" kuunda mhariri wake wa "mega", ambayo mara nyingi hubadilika kuwa "tena kitu kinachojulikana kwa uchungu"... ni wazi utamaduni huu kutoka kwa mfululizo "Hujambo Ulimwengu!" 😉

Sehemu inatumika kuhariri matokeo ya kujaza fomu za wavuti.

Inapotumiwa pamoja na sehemu Orodha ya matokeo thamani ya shamba RESULT_ID inaweza kuachwa kama chaguo-msingi. Ikiwa sehemu inatumiwa kwa kujitegemea, basi ni muhimu kuamua ambapo sehemu inapaswa kuchukua thamani ya parameter kutoka. RESULT_ID au kuiweka wazi. Sehemu ni ya kawaida na imejumuishwa kwenye kit cha usambazaji wa moduli.

Katika muundo wa mhariri wa kuona, sehemu iko kando ya njia Huduma > Fomu za Wavuti > Matokeo ya Kuhariri.

Sehemu hiyo ni ya moduli ya Fomu za Wavuti.

Mipangilio inayoamua haki za vikundi vya watumiaji kuhariri matokeo imewekwa katika mipangilio ya kila fomu ya wavuti, na katika hali ya kufanya kazi katika hali ya juu, pia katika mipangilio ya hali.

Mfano wa simu ya sehemu matokeo.ya.fomu.hariri

Sehemu za mipangilio ya sehemu:

Maelezo ya vigezo

Ikiwa umepata makala haya, basi wewe, kama mimi, hukuweza kutatua tatizo hili kwa kutumia matukio ya OnAfterIBlockElementUpdate :)

Jinsi ya kubatilisha bei iliyochukuliwa kutoka kwa mali katika Bitrix

Nakala moja inasema, "sababu kuu kwa nini washughulikiaji wa hafla za vipengee hawafanyi kazi ni kwa sababu washughulikiaji wa kizuizi cha habari hutekelezwa kwanza, na kisha kwa orodha."

Hii ina maana kwamba matukio yetu, wakati wa kuongeza au kusasisha vizuizi vya habari, itafanya kazi kwanza, na hata ikiwa tunaandika CPrice::Sasisha- basi itaandikwa juu ya thamani kutoka kwa kichupo cha "orodha ya biashara".

Jukumu letu ni kuchukua bei kutoka kwa mali (inapoongezwa kupitia fomu ya msimamizi, sehemu ya umma au ya msimamizi) na kubatilisha thamani ya bei katika katalogi yenyewe. Unaweza kutatua tatizo hili kwa hatua 2:

Hatua ya 1: nenda kwa mipangilio ya kizuizi cha habari na bidhaa (Catalog). Kwenye kichupo cha kwanza tunatafuta shamba "Faili ya kuhariri kipengele, kuruhusu sehemu kurekebishwa kabla ya kuhifadhi:". Tunaandika thamani:

/bitrix/php_interface/include/iblock_catalog_edit_after_save.php

Baada ya kuhifadhi, tengeneza faili kwenye seva kwenye njia hii.

Hatua ya 2: Ili faili iblock_catalog_edit_after_save.php- andika nambari ifuatayo:

$PRODUCT_ID, "CATALOG_GROUP_ID" => 1, "PRICE" => bei ya $, "CURRENCY" => "RUB"); $res = CPrice::GetList(safu(),safu("PRODUCT_ID" => $PRODUCT_ID, "CATALOG_GROUP_ID" => 1)); ikiwa ($arr = $res->Fetch()) ( CPrice::Sasisha($arr["ID"], $arField); ) vinginevyo ( CPrice::Add($arField); ) ) ?>

Sasa hebu tufikirie, kuna nuances kadhaa hapa:
1. BXIBlockAfterSave- ni tukio hili ambalo litatusaidia kukabiliana na kazi hiyo;
2. $price = array_shift($_POST['PROP']);- katika safu $arFields hakuna sehemu nyingi ambazo zinaweza kunaswa (ikiwa sitaichanganya, hakuna kitambulisho cha kizuizi cha habari 🙂), kwa hivyo tutafanya kazi na safu. $_POST. Unaweza kuonyesha yaliyomo kwenye safu hii kwa kutumia:

AddMessage2Log($_POST);

Usisahau kwamba unahitaji kuandika njia ya faili ya kumbukumbu katika /bitrix/php_interface/dbconn.php faili:

Bainisha("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/.log.txt");

Ikiwa ulifanya kila kitu kwa usahihi, unaweza kujaribu kuhifadhi kipengele chochote cha orodha (kwa kipengele katika muktadha huu ninamaanisha bidhaa, lakini katika infoblocks chombo hiki kinaitwa kipengele kwa default).
3. 55 -Hii ID mali yangu ya bei, ambayo ninabadilisha na kisha thamani ambayo tunaandika kwa kutofautisha kwa kutumia:

$price = array_shift($_POST["PROP"]); // chukua thamani ya kwanza $price = str_replace(",", ".", $price); // kuchukua nafasi ya kukosa fahamu

Unahitaji kubadilisha 55 hadi kitambulisho cha mali yako. Kweli, katika hatua ya pili tunabadilisha comma na kipindi ili kuzuia makosa yoyote.

Msomaji makini atauliza - kwa nini tunahitaji init.php? Lakini ukweli wa mambo ni kwamba njia pekee ya faili hii itatusaidia ni kuandika kazi hii hapo, swali ni - hii ina maana? Baada ya yote, kila kitu ambacho kimepakiwa kwenye init.php kinapatikana karibu sehemu yoyote ya tovuti.

Natumai kila kitu kilifanikiwa kwako, andika kwenye maoni juu ya mafanikio yako :)





Shamba Kigezo Maelezo
Chanzo cha data
Kitambulisho cha matokeo RESULT_ID Hubainisha kitambulisho cha matokeo ya kukamilisha fomu. Chaguo-msingi ni $_REQUEST["RESULT_ID"], lakini nambari ya php inayorudi RESULT_ID.
Mwonekano
Puuza kiolezo chako IGNORE_CUSTOM_TEMPLATE Chaguo hili likichaguliwa, kiolezo cha fomu chaguo-msingi kitatumika kuonyesha fomu ya wavuti, hata kama umeunda kiolezo chako mwenyewe.
Tumia pato la ujumbe wa hitilafu iliyoimarishwa USE_EXTENDED_ERRORS Ikiwa chaguo limechaguliwa, pato la ujumbe wa hitilafu uliopanuliwa litatumika.
Kusimamia anwani za ukurasa
Washa usaidizi wa CNC SEF_MODE Chaguo likiangaliwa, usaidizi wa CNC utawezeshwa.

Ikiwa hali ya usaidizi ya CNC pamoja, basi unahitaji kusanidi vigezo vifuatavyo: SEF_FOLDER, SEF_URL_TEMPLATES.

Vigezo vya vipengele
Onyesha sehemu za ziada za kuhariri EDIT_ADDITIONAL Ikiwa chaguo limechaguliwa, sehemu za fomu za ziada zitaonyeshwa kwa uhariri, ikiwa zinapatikana.
Onyesha fomu ya mabadiliko ya hali EDIT_STATUS Chaguo likiangaliwa, fomu ya kubadilisha hali ya matokeo ya sasa itaonyeshwa. Hadhi zitapatikana kwa mujibu wa haki za mtumiaji.
Ukurasa wa Orodha ya Matokeo LIST_URL Anwani ya ukurasa iliyo na orodha ya matokeo imeonyeshwa.
Ukurasa wa kutazama matokeo VIEW_URL Anwani ya ukurasa wa kutazama matokeo imeonyeshwa.
Jina la kipengee cha ziada kwenye mnyororo wa mkate CHAIN_ITEM_TEXT Jina la kipengee cha ziada katika msururu wa urambazaji limeonyeshwa. Ikiachwa wazi, kipengee hakiongezwe kwenye msururu wa urambazaji.
Unganisha kwenye kipengee cha ziada kwenye mnyororo wa mkate CHAIN_ITEM_LINK