spørsmål funksjoner (function)

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009

Lurte på en kjapp sak.

Holder på å definere endel funksjoner. Fikk opp øynene da jeg forstod gjennomføringen og at jeg kunne definere en side med masse funksjoner og slippe 20 sepparate scripts-dokumenter.

Men, det jeg luerer på er om det kan oppstå problemer om man benytter seg av sammen variabelnavn i sepparate funskjoner?

Har ett dokument som heter functions.php. Og i det dokumentet definererer jeg samtligefunksjoner... eksempelvis:

function member_exists ($mem_id) { ... }

function valid_member_id ($mem_id) { ... }

function check_login ($mem_id, $mem_pw) { ... }

alle disse tar i bruk samme verdi, $mem_id, sant. Så blir litt håpløst å finne på nye $var-navn for hver gang...

Regner med at når en enkel funksjon settes i gang, eller call'es, så er det den funksjonens variabler som taes i bruk. Som du sa i videoen, ingen variabler utenfor funksjonen blir tatt med. Med mindre de ikke gjøres globale da...

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Kall dem hva du vil

Nettopp, i definisjonen av en funksjon spiller det ingen rolle hva du kaller variabler eller arrays som er inne i funksjonen eller sendes som argumenter til funksjonen.

I stedenfor $mem_id kunne du godt kalt den $var, men førstnevnte gjør selvfølgelig funksjonen mer leselig, samt. at den forteller hva slags data variabelen holder og dermed hvilket argument funksjonen tar.

En funksjon "lever sitt eget liv", og det spiller derfor ingen rolle hva du kaller agrument-variabler og -arrays.

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
en annen ting.PHP leser linje

en annen ting.

PHP leser linje for linje, sant?

Og i vanlig koding, så hvis en variabel blir definert etter en en action blir satt da. Så blir det feil.

Altså at en variabel med innhold må stå oppført før informasjonen skal taes i bruk.

Hvordan fungerer det med funksjoner, om jeg call'er en function-in-a-function?

eks.:

function aboid_exists ($aboid)

{

    if (!valid_aboid ($aboid)) { return false; }

    else { ... }

}

Må funksjonen inn i en funksjon være definert ovenfor? eller spiller ikke det noen rolle?

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Definere funksjoner

PHP leser først hele scriptet og så tolkes linje for linje. Du kan derfor definere funksjoner i bunn av dokumentet, men likevel bruke dem i toppen.

Hvis du definerer to funksjoner og den ene funksjonen caller den andre, så spiller det ingen rolle i hvilken rekkefølge de defineres.

Når det gjelder variabler o.l. så må en variabel defineres før den brukes.

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
stemmer. Var akkurat det jeg

stemmer. Var akkurat det jeg trudde... Men fant ikke noe konkret svar på det... mange takk

med hilsen
Thomas Kile

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
en ting til:I forbindelse med

en ting til:

I forbindelse med sjekking av brukernavn, passord og om brukeren eksisterer, så har jeg de i seperate funksjoner. Som igjen benyttes av en fjerde hoved funksjon. funksjon inni funksjon.

Det som er, er at nå returerer jeg feil ( { return false; } ) om noe ikke stemmer.

Men hvordan kan jeg sette en string i en variabel som jeg kan printe i hoveddokumentet?

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Funksjon

Det kommer helt ann på hva du mener, men her er et par funksjoner du kanskje kan ta utgangspunkt i.

<?php
function my_function(&$var) {
 
$integer = 1;

  if(
$integer == 1) {
   
$var = 'Hei!';
    return
true;
  } else {
    return
false;
  }
}
?>

Funksjonen ovenfor vil endre variabelen $var til Hei! dersom $integer er 1.

<?php
function my_function2() {
 
$integer = 1;

  if(
$integer == 1) {
    return
'Hei!';
  } else {
    return
false;
  }
}
?>

Denne funksjonen kan f.eks calles på denne måten;

<?php
$variabel
= my_function2();
print
$variabel;
# Hei!
?>

Svar på forumemnet

(If you're a human, don't change the following field)
Your first name.
Innholdet i dette feltet blir holdt privat og vil ikke bli vist offentlig.