Gå til innhold

PHP·pub - Programming With Attitude - and beer


Anbefalte innlegg

Videoannonse
Annonse
Det er ille nok med alle alternative if/else/elseif-strukturene en kan bruke.

7159800[/snapback]

Jaha? Er det virkelig så mange da?

if (bool)
{
  //kode
}
else
{
  //mer kode
}

if (bool)
  //kode
else
  //mer kode

(bool) ? true:false; 

Finnes det noen flere?

 

Oppdaga dette lenge siden, men det er ganske rart at dette ikke er lov:

PHP
class brain {

 function pr0n() {

 };

};

Alstå, å ha med en ';' etter den lukkende curly-bracketen ved definering av funksjon. (Linje 3).

7159478[/snapback]

Rart? På hvilken måte skal det være rart at det ikke er lov? :huh:

Lenke til kommentar
Det er ille nok med alle alternative if/else/elseif-strukturene en kan bruke.

7159800[/snapback]

Jaha? Er det virkelig så mange da?

if (bool)
{
  //kode
}
else
{
  //mer kode
}

if (bool)
  //kode
else
  //mer kode

(bool) ? true:false; 

Finnes det noen flere?

 

7160017[/snapback]

 

Jepp, dette er f.eks. den varianten som ble mekket for å gjøre det lettere når en putter ting direkte inn i HTML-kode:

if ($i == 5):
 //kode
elseif ($i == 2):
 //kode
endif;

 

fordi det tillater slik bruk:

<?php if ($i == 5): ?>
<p>i er lik 5</p>
<?php elseif ($i == 2): ?>
<p>i er lik 2, men ikke 5</p>
<?php endif; ?>

 

endwhile; endforeach; endswitch; osv. er også tillatt.

 

I tillegg har en jo en del forskjellige måter å representere strenger på (heredoc er jo et gyslig eksempel).

 

Greit nok med valgfrihet, men alternative syntakser har en lei tendens til å føre til at folk skriver dårligere kode, eller skriver kode slik de er vant med i et annet programmeringsspråk, noe som er en uting.

Endret av jorgis
Lenke til kommentar

Du har jo denne da :p

<?php
$python = array(/*kode for ifblokk*/,/*kode for elseblokk*/);

echo $python[ $eggs != $spam];
?>

Kanskje ikke så fint, men funker alldeles strålende i python iallefall Som oftest er arrayinnholdet simple stringer, så du kan skrive:

print ['noe','noeannet'][eggs != spam]

 

Ikke akkurat noe vi bruker ofte dog, spesielt nå når vi har fått short-if :)

Endret av dabear
Lenke til kommentar
Rart? På hvilken måte skal det være rart at det ikke er lov? :huh:

7160017[/snapback]

Vel, man jeg legger i alle fall til en ';' når jeg lukker ifs, whiles, for(eachs), functions, etc. for at det er lettere å se i koden hvor de er lukket.

Feks. hvis jeg skriver

if(noe) {
// yabble
}

uten en else statement, så kan jeg seinere tro at jeg har glemt å skrive ferdig... men hvis man legger til en ';' på slutten så har man liksom sagt at statementen er ferdig. Kort sagt, det er enklere synes jeg.

Lenke til kommentar

Okey, av og til har noen sprø ideer og påfunn. Her har vi mitt siste (dog etter litt inspirasjon). En progressbar i ren PHP + HTML. Den skal fungere i de fleste nettlesere, men dessverre er den svært avhengig av at nettleseren viser innholdet den har mottatt selv om siden ikke er ferdig nedlastet. Samtidig virker det som om den også i visse tilfeller har litt problemer med kombinasjonen server og nettleser. Uannsett, det funker der med Opera (WinXP og Mac), FF (WinXP, Linux og Mac), Konqueror (Linux), IE (WinXP) og Safari (Mac).

Endret av Ernie
Lenke til kommentar

Funket i Opera 9.02 på ubuntu edgy også.

Skal du gi ut koden?

Folk som er allergisk mot div-suppe burde kanskje holde seg unna.

Jeg tenkte på noe lignende, men istendenfor å skrive ut mange divs, så heller skrive ut et kall til en javascript-funksjon som endret størrelsen på baren.

På en måte kanskje mer portabelt, på en annen måte ikke.

Rimelig ufint på begge måter, men det er ikke så lett å åpne på andre måter.

Lenke til kommentar

Hvorfor må den være i ren PHP + HTML, da? Det fører bare med seg en MYE lengre sidelastingstid for brukere med trege linjer, samt at båndbredden blir enorm. Mye bedre å gi brukere med JS en skikkelig AJAX-basert progressbar, og andre brukere får pent vente til scriptet kjører ferdig. Ren PHP+HTML har bare for mange ulemper til at jeg ville giddet å bruke det. :)

Lenke til kommentar
Funket i Opera 9.02 på ubuntu edgy også.

Skal du gi ut koden?

Folk som er allergisk mot div-suppe burde kanskje holde seg unna.

Jeg tenkte på noe lignende, men istendenfor å skrive ut mange divs, så heller skrive ut et kall til en javascript-funksjon som endret størrelsen på baren.

På en måte kanskje mer portabelt, på en annen måte ikke.

Rimelig ufint på begge måter, men det er ikke så lett å åpne på andre måter.

7186266[/snapback]

Nei, hvor pent det er kan jo diskuteres. Derimot er det kjekt hvis man skal kjøre krevende operasjoner. I stedet for å vise en blank skjerm kan man vise fremgang noe som gjør at brukeren er mer tolmodig.

 

Kode:

 

PHP

<?php

ob_implicit_flush(true);

function Update($p) {

echo '<div class="per">',$p,"%</div>\n";

echo '<div class="bar" style="width: ',($p 3), 'px"></div>'."\n";

ob_flush();

}

ob_start();

echo '<html><body>

<style>

#text {

position: absolute;

top: 100px;

left: 50%;

margin: 0px 0px 0px -150px;

font-size: 18px;

text-align: center;

width: 300px;

}

#barbox {

position: absolute;

top: 130px;

left: 50%;

margin: 0px 0px 0px -160px;

width: 304px;

height: 24px;

background-color: black;

}

.per {

position: absolute;

top: 130px;

font-size: 18px;

left: 50%;

margin: 1px 0px 0px 150px;

background-color: #FFFFFF;

}

 

.bar {

position: absolute;

top: 132px;

left: 50%;

margin: 0px 0px 0px -158px;

width: 0px;

height: 20px;

background-color: #0099FF;

}

 

.blank {

background-color: white;

width: 300px;

}

</style>

<div id="text">Script Progress</div>

<div id="barbox"></div>

<div class="blank"></div>

<div class="per">0%</div>';

$buffer ob_get_clean();

$buffer str_pad($buffer1024);

echo $buffer;

ob_flush();

 

$i 0;

while ($i 100)

{

if (($i rand($i$i+10)) > 100)

$i 100;

Update($i);

usleep(rand(11000)*1000);

}

echo '</html></body>';

?>

 

Lenke til kommentar
Funket i Opera 9.02 på ubuntu edgy også.

Skal du gi ut koden?

Folk som er allergisk mot div-suppe burde kanskje holde seg unna.

Jeg tenkte på noe lignende, men istendenfor å skrive ut mange divs, så heller skrive ut et kall til en javascript-funksjon som endret størrelsen på baren.

På en måte kanskje mer portabelt, på en annen måte ikke.

Rimelig ufint på begge måter, men det er ikke så lett å åpne på andre måter.

7186266[/snapback]

Nei, hvor pent det er kan jo diskuteres. Derimot er det kjekt hvis man skal kjøre krevende operasjoner. I stedet for å vise en blank skjerm kan man vise fremgang noe som gjør at brukeren er mer tolmodig.

 

7186356[/snapback]

 

Bedre å vise grafikk som sier "loading ... ... ..." enn å gjøre operasjonen enda tregere fordi serveren driver med konstant output til en progressbar. :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...