Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: <?php vai <?

Sivun loppuun

B_R_H [25.02.2009 14:39:07]

#

Tervehdys,

Kertokaa mulle miksi php:tä koodataan sekä <?php että <?
Kysymys koskee oikeastaan ongelmaa combon kanssa:

Kun option rivi on koodattu:
<option value="<?=$koodi?>"><?=$selite?></option>
Toimii esikääntäjä ok ja tulos on toivottu

Mutta jos rivi on koodattu
<option value="<?php=$koodi?>"><?php=$selite?></option>
Esikääntäjä valittaa unexpected '='. välilyönneillä ei ole vaikutusta.

Tuossa ei muuttujien arvoja ole echotettu, vaan halutaan kirjoittaa puhdasta xhtmllää

GimPeltzi [25.02.2009 14:42:57]

#

Elikkä mikä tuon = merkin tarkoitus tuossa on? Mitä sen kuuluisi tehdä? Ei ole tuttu syntaksi mulle.
Eniveis, <?php on suotavampi, mutta laiskoille myös <? on mahdollinen. Se kuitenkin muistaakseni voi mennä jotenkin sekaisin xml -syntaksin kanssa.

Antti Laaksonen [25.02.2009 14:49:22]

#

PHP:n voi erottaa HTML:stä monella eri tavalla:

https://www.php.net/manual/en/language.basic-syntax.phpmode.php

Merkintä <?php on yleisin ja toimii kaikkialla. Merkintä <? toimii vain, jos se on sallittu PHP:n asetuksissa.

Merkintä <?= $koodi ?> tarkoittaa samaa kuin <? echo $koodi ?> eli samaa kuin <?php echo $koodi ?>.

Kaikki kolme tapaa yllä tuottavat saman tuloksen, eli XHTML on yhtä puhdasta.

jmp [25.02.2009 14:52:07]

#

B_R_H kirjoitti:

Mutta jos rivi on koodattu
<option value="<?php=$koodi?>"><?php=$selite?></option>
Esikääntäjä valittaa unexpected '='. välilyönneillä ei ole vaikutusta.

Tuollaista syntaksia ei ole olemassa. On pelkästään <?=$testi?>, ja sekin toimii vain jos short_open_tag on päällä.

B_R_H [25.02.2009 15:08:45]

#

Kiitti kaikille!

Antti Laaksonen kirjoitti:

Merkintä <?= $koodi ?> tarkoittaa samaa kuin <? echo $koodi ?> eli samaa kuin <?php echo $koodi ?>.

Jos tästä oikein ymmärsin, niin = ja echo ovat synonyymejä - ainakin tässä tapauksessa?
Nuo kolme mainittua toimivat näköjään ihan ok, mutta miksi <?php = $koodi ?>
ei? Koetin hakea tähän selitystä, joten jos viitsitte vielä vääntää rautalangasta?

Grez [25.02.2009 15:14:10]

#

B_R_H kirjoitti:

Jos tästä oikein ymmärsin, niin = ja echo ovat synonyymejä - ainakin tässä tapauksessa?

Ymmärsit väärin. <?=X?> on synonyymi seuraavalle: <? echo(X); ?>

Siis X voi olla mitä tahansa, jonka voit sijoittaa X:n tilale tuohon jälkimmäiseen.

Tuo on siis <?= ei pelkkä =

Antti Laaksonen [25.02.2009 15:15:10]

#

B_R_H kirjoitti:

Nuo kolme mainittua toimivat näköjään ihan ok, mutta miksi <?php = $koodi ?> ei?

Ainoa selitys on, että PHP:n kehittäjät ovat päättäneet niin.

Metabolix [25.02.2009 15:41:47]

#

Antti Laaksonen kirjoitti:

B_R_H kirjoitti:

Nuo kolme mainittua toimivat näköjään ihan ok, mutta miksi <?php = $koodi ?> ei?

Ainoa selitys on, että PHP:n kehittäjät ovat päättäneet niin.

Ennemmin minusta kannattaisi ajatella asia näin päin: Kaikki echo-vaihtoehdot toimivat, koska se on täysin normaalia koodia — toimiihan echo muuallakin kuin tuossa tilanteessa. Kuitenkin yksittäisiä muuttujia tulostellaan HTML:n sekaan niin usein, tähän on kiva olla jokin lyhyempi tapa. Siksi PHP:n kehittäjät ovat lisänneet merkinnän <?=$x?>. Näin voi lukea myös Grezin viestistä rivien välistä.

XML:n kannalta ei ole mitään merkitystä, millaista PHP:tä seassa on. XML-parseri ei näe alkuperäistä PHP:tä vaan vain sen, mitä PHP-tulkki tulostaa.

reca [25.02.2009 17:03:05]

#

Mielenkiintoinen lyhennelmämuoto, mutta en itse lähtisi käyttämään. Taitaa vähän turhaan sekoittaa koodia ja koodaajaa yön hämärinä tunteina :D

Blaze [25.02.2009 17:56:42]

#

Metabolix kirjoitti:

XML:n kannalta ei ole mitään merkitystä, millaista PHP:tä seassa on. XML-parseri ei näe alkuperäistä PHP:tä vaan vain sen, mitä PHP-tulkki tulostaa.

XML prologi ja processing instructionit alkavat merkkiparilla <? ja menevät sekaisin tuon lyhyen PHP-alotustagin kans. Tämä on siis ongelma, jos upottaa PHP:tä XML:n (XHTML:n) sekaan.

Metabolix [25.02.2009 18:43:02]

#

Blaze kirjoitti:

XML prologi ja processing instructionit alkavat merkkiparilla <? ja menevät sekaisin tuon lyhyen PHP-alotustagin kans.

Toki, mutta se ei ole XML:n vaan PHP:n ongelma. ;) Viittasin vain tuohon aloitusviestin loppuosaan, josta sai sen käsityksen, että kysyjä luulisi echolla ja <?=:lla olevan jotain eroa XML:n kannalta:

B_R_H kirjoitti:

Tuossa ei muuttujien arvoja ole echotettu, vaan halutaan kirjoittaa puhdasta xhtmllää

Näinhän ei siis ole, vaan <?= on aivan yhtä lailla "echottamista" kuin normaali echo, print, printf tai muu tulostus.

B_R_H [26.02.2009 09:43:47]

#

Yeps hoksasin missä mennään. Törmäsinkin jossakin välissä tuohon <? sekoittamiseen xml-dokujen kanssa, mun phpdocin tuottama koodi ei toiminut.

Kiitos selventäjille!

walkout_ [27.02.2009 18:35:11]

#

<?= function(); ?>

niin tuollaista yleensä käytetään vain Templatti-tiedostoissa ainakin joidekin koodaustyylin mukaan.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta