Autorius Tema: Prestashop PHP skirtumai  (Skaityta 546 kartus)

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Prestashop PHP skirtumai
« Įrašytas: 2012-07-29 21:51:34 pm »
Gal kas galit paaiškinti, kodėl PRESTASHOPE kitokia struktūra?

Pvz.:
{if $cookie->isLogged()}
Hi user
{else}
Hi guest
{/if}

Kai paprastai būtų:
If ( $cookie->isLogged() ) {
echo "Hi user";
} else {
echo "Hi guest";
}

Čia gal net ne PHP jau yra ar kaip?

Dar kitas pavyzdys iš tų CONTROLLERS:

if (Tools::isSubmit('delete'))
{
if (self::$cart->id_address_invoice == $this->_address->id)
unset(self::$cart->id_address_invoice);
if (self::$cart->id_address_delivery == $this->_address->id)
unset(self::$cart->id_address_delivery);
if ($this->_address->delete())
Tools::redirect('addresses.php');
$this->errors[] = Tools::displayError('This address cannot be deleted.');
}
Čia jau struktūra IF panaši,bet kas per vienas tie self:: ? Neteko niekur daugiau matyti tų ::

Dėkui už info

Neprisijungęs Modestas Vaitkevičius

  • Dalyvis
  • **
  • Įrašai: 2005
  • Karma: +56/-16
    • Žiūrėti profilį
    • Apie mane
Ats: Prestashop PHP skirtumai
« Atsakymas #1 Įrašytas: 2012-07-29 22:00:49 pm »
Hmm, čia yra template engine :)

tiesiog esmė tame, kad ten apdoruoja tekstą ;) Taip, tai php, tačiau rašomas kitaip :)

Kam naudojami ::? Atsakymas

sukuri klasę tarkime testas ir nori ją iškviesti, o jos viduje yra funkcija rasom, tai bus testas::rasom(); ir viskas :)

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Prestashop PHP skirtumai
« Atsakymas #2 Įrašytas: 2012-07-29 22:27:19 pm »
Hmm, okey, kur būtų galima sintaksę to template engine pasimokyt?

Ir apie funkcijas, vis dar be jų išsiverčiu kažką kurdamas, bet norint redaguoti kitas TVS jau jaučiuosi kaip nieko nemokantis, kur būtų galima įgauti kokias pradines žinias apie tai? Reiktų pagrindinę info apie funkcijų kūrimo ir tada bandyti pačiam kažkokią sukurti. Būtų gerai kokios lietuviškos su komentarais.

Dėkui už info

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 895
  • Karma: +59/-2
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Ats: Prestashop PHP skirtumai
« Atsakymas #3 Įrašytas: 2012-07-29 23:34:18 pm »
Tas template engine'as yra Smarty (prestashop naudoja būtent jį). Ir, Modestai, eilinį kartą bandai suklaidinti žmogų :D tai nėra "php, tačiau rašomas kitaip". Čia tas pats, kas pasakyti, kad PHP yra tas pats kas C, tik rašomas kitaip :) Tai visiškai ne PHP. Su savo funkcijom, savo sintakse, savo ideologija ir pan. Gal labiau wrapper'iu galima pavadinti. PHP pagalba tiesiog išparsinamas template'as ir sugeneruojamas (surenderinamas) vaizdas. Ir :: naudojamas tik tada, kai metodas yra statinis ir kviečiamas nesukuriant klasės objekto. O self - nuoroda į klasę, kurios kontekste aprašytas statinis metodas.

Tautvydai, pasimokyti Smarty sintaksės gali iš jų oficialios dokumentacijos - http://www.smarty.net/ .
« Paskutinį kartą keitė: 2012-07-29 23:46:03 pm sukūrė vitalikaz »

Manualai.lt Forumas

Ats: Prestashop PHP skirtumai
« Atsakymas #3 Įrašytas: 2012-07-29 23:34:18 pm »

Neprisijungęs Modestas Vaitkevičius

  • Dalyvis
  • **
  • Įrašai: 2005
  • Karma: +56/-16
    • Žiūrėti profilį
    • Apie mane
Ats: Prestashop PHP skirtumai
« Atsakymas #4 Įrašytas: 2012-07-30 08:10:08 am »
Vitalikaz, gali būt :D man buvo taip paaiškinę, kad tas TPL engine yra php, kuris kitaip rašomas :) Na esmė tame, ką turėjau galvoj, kad pats engine parašytas su php, bet templeite, galima nebūtinai php rašyti :) Jis gali būti, kaip šiame pvz, bet ne tokiu pat stiliumi :)

Jei gali plačiau apie tą statinį objektą, nes ankščiau taip galėjai bet kokią klasę iškviesti be problemų, o nuo 5.4 nebegali :)

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 895
  • Karma: +59/-2
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Ats: Prestashop PHP skirtumai
« Atsakymas #5 Įrašytas: 2012-07-30 09:12:24 am »
Jei naudoji Smarty, tai turi su Smarty ir rašyt. Su PHP gali tiesiog išplėtimų prikurt, modifier'ių, funkcijų ir t.t.
Bijau suklysti, bet ar tikrai anksčiau galėjai su :: kviesti nestatic metodus? Taip neturėtų būti. Bet kadangi PHP tik palyginus neseniai pradėjo taip spausti dėl OOP, tai gali būt, kad buvo galima. PHP 5.3 jau tikrai negalima taip daryt.
Static funkcijos - tai tokie objekto metodai, kuriuos galima kviest nesukuriant klasės instance'o (nereikia daryti new KlasesObjektas(), neiškviečiamas konstruktorius ir t.t.). Tačiau tokio metodo viduje tu negali naudoti klasėje aprašytų nestatinių metodų ir kintamujų. Pvz.
<?php
class Pirmas {
  var 
$a;

  public function 
__construct($input) {
    
$this->$input;
  }
  public function 
do_something() {
    print 
$this->a
  }

  static function 
do_something_static() {
     print 
"Lablablu";
     print 
$this->a// taip negalima.
     
self :: print_hello(); // taip galima. Statinis kviecia statini
  
}

  static function 
print_hello() {
     print 
"Hello";
  }


}

$a = new Pirmas("Vitalikas");
$a->do_something(); // isves Vitalikas
$a->do_something_static(); // negalima. Statinis metodas

Pirmas :: do_something_static(); // butu viskas gerai, tik kad kreipiamasi i vidini kintamaji. Del to klaida.
Pirmas :: print_hello(); // isves Hello

?>

BlaST
Serveriai.lt paslaugos su 50% nuolaida!
Blast.lt blogas

Neprisijungęs Modestas Vaitkevičius

  • Dalyvis
  • **
  • Įrašai: 2005
  • Karma: +56/-16
    • Žiūrėti profilį
    • Apie mane
Ats: Prestashop PHP skirtumai
« Atsakymas #6 Įrašytas: 2012-07-30 09:37:29 am »
Buvo galima, nes savo icy būtent taip esu parašęs :) Todėl, kai atsinaujino ant php 5.4, meta daugybes klaidų :D

Ačiū už paaiškinimą ;)

Manualai.lt Forumas

Ats: Prestashop PHP skirtumai
« Atsakymas #6 Įrašytas: 2012-07-30 09:37:29 am »