Gå til innhold

Lageret - Tråden hvor forslag til gjenbrukbar PHP-kode legges


Anbefalte innlegg

Skrevet (endret)

Da bruker jeg heller GD2 - Det er uansett ikke det som er poenget, poenget mitt er og kunne gjøre enkle modifiseringer til et bilde uten å måtte gå gjennom hele GD2 eller Imagemagick dokuementasjonen. - Enkle ting som og redigere kontraster, farger osv..

 

<?php 
changeColor('sti/til/bilde.jpg', 255, 126, 83);
?>

Endret av Wackamole
  • 5 måneder senere...
Videoannonse
Annonse
Skrevet

Lagde et lite includesystem

 

index.php:

<?php

require('php/class/include.php');
load::fil();

?>

 

config.php:

<?php

session_start();

ini_set('display_errors', 1);
error_reporting(E_ALL);

$stiroot = realpath(dirname('../')) . '/';
$stisider = $stiroot . 'php/public/sider/'; /** sti hvor dine sider ligger **/
$stihtml = $stiroot . 'html/'; /** sti til hvor dine html/ topp/bunn filer ligger **/

define('__STI_SIDER', $stisider);
define('__STI_HTML', $stihtml);
define('__STI_ROOT', $stiroot);
define('__FILENDELSE', '.php'); /** filendelsen vår **/
define('__DEFAULTINDEX', 'index'); /** default side **/

/** txt-filer **/
define('TXT__OM', __STI_HTML . 'sider/om.txt');

/** her legger du inn dine sider, f.eks har du hei.php legger du til hei i arrayen **/
$arr = array('index', 'om', 'galleri', 'portfolie', 'gjestebok', 'annet', 'admincp');

if(isset($_GET['var']))
	$side = $_GET['var'];
else
	$side = '';

new load($arr, $side);

?>

 

include.php:

<?php

require('config.php');

class load {

	static protected $sti;
	static protected $filer = array();

	public function __construct($var, $sti) {
		self::$filer = array_merge(self::$filer, $var);
		self::$sti = trim($sti);
		self::$sti = str_replace('\\', '/', $sti);
	}

	static private function filter() {
		try {
			if(!strpos(self::$sti, '.') && !strpos(self::$sti, '/')) {
				if(in_array(self::$sti, self::$filer)) {
					return true;
				}
				else {
					throw new Exception('Siden finne ikke!');
				}
			}
			else {
				throw new Exception('Ugyldig side! (passerte ikke filteret)');
			}
		}
		catch(Exception $e) {
			die('ERROR: ' . $e->getMessage());
		}
	}

	static function fil() {
		try {
			include_once __STI_HTML . 'topp' . __FILENDELSE;
			if(self::$sti == '') {
				include_once __STI_SIDER . __DEFAULTINDEX . __FILENDELSE;
			}
			else {
				if(self::filter() && file_exists(__STI_SIDER . self::$sti . __FILENDELSE))
					include_once __STI_SIDER . self::$sti . __FILENDELSE;
				else 
					throw new Exception('Kunne ikke inkludere filen! (ikke riktig sti: (' . __STI_SIDER . self::$sti . __FILENDELSE . '))');
			}
			include_once __STI_HTML . 'bunn' . __FILENDELSE;
		}
		catch(Exception $e) {
			die('ERROR: ' . $e->getMessage());
		}
	}

}

?>

 

Bah, koden ser jo ikke ut når du poster her.

  • 1 måned senere...
Skrevet

...snip
	public function __construct($var, $sti) {
		self::$filer = array_merge(self::$filer, $var);
		self::$sti = trim($sti);
		self::$sti = str_replace('\\', '/', $sti);
	}
snip...

 

Hva er grunnen til at du bruker self::$sti kontra $this->sti ?

Kan noen gi meg et lynkurs i hvorfor det ikke lønner seg å instansiere klassen for deretter å hente de respektive variablene?

 

Jeg har alltid pleid å instansiere klassene jeg jobber med.. har jeg gått glipp av fundamentale aspekter rundt dette?? :ohmy:

 

 

beklager OFF TOPIC

Skrevet

Er fordi det er statiske variabler

Ja jeg skjønner at det er statiske variabler, det er ikke det jeg spør om.. hvorfor bruker han public static $var når han kan bruke vanlig public $var? Hvorfor vil han ikke på død å liv sette opp klassen slik at den kan nås gjennom å instansiere et objekt av klassen. Det er DET jeg spør om. :p

Skrevet (endret)
[..]

Nei, du har ikke missforstått det fundamentale rundt OOP - det er det Thomas som har gjort. :tease:

 

..og kan du fortelle meg hva?

Du har bygget opp hele klassen din med statiske metoder, men velger likevel og ha en konstruktør = fail. Konstruktører er for å initialisere OBJEKTER, noe du ikke gjør her. Man kan også si et eller annet om din bruk av exceptions, som er noe beundringsverdig. Å drepe scriptet inne i klassen er generelt en meget dårlig idé. Gir heller ingen mening at du skal kaste exceptions, fange dem og drepe scriptet i samme metoden.

Endret av Josh Homme
Skrevet

I tillegg lurer jeg sterkt på hvorfor du starter en session. Det har vel ingenting med formålet å gjøre.

 

Bruker det i et brukersystem :)

Glemte å fjerne, beklager.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...