Gå til innhold

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


Anbefalte innlegg

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
Lenke til kommentar
  • 5 måneder senere...
Videoannonse
Annonse

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.

Lenke til kommentar
  • 1 måned senere...

...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

Lenke til kommentar

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

Lenke til kommentar
[..]

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

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