Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Zend Registry e autoloader

    sto lavorando su una piccola applicazione e sto usando alcune cose dello ZF.

    Non uso il loro MVC anche perchè non ho delle vere view, l'applicazione crea script che saranno lanciati via cron, quindi non mi interessa una struttura con quel tipo di pattern.

    - in un file bootstrap.php che includo negli altri file ho messo questa roba:


    Codice PHP:

    require_once 'Zend/Loader/Autoloader.php';
    $autoloader Zend_Loader_Autoloader::getInstance();

    #require_once 'Zend/Db.php';
    // Opzioni di connessione
    $options = array (******');


    $db = Zend_Db::factory('
    Pdo_Mysql', $options);
    $db->setFetchMode(Zend_Db::FETCH_OBJ); 
    - Autoloader:
    Le classi di Zend le posso istanziare senza fare il require dei file, vorrei che fosse così anche quando instanzio le mie.
    Esempio classe nella cartella pippo/Pippo.php
    Classe Pippo che sostanzialmente gestisce il model di un tipo di dato

    Nello script che genericamente chiamo pippoController.php
    chiamo:
    $pippo = new Pippo();

    Ora devo fare require 'pippo/Pippo.php'

    come faccio a fare in modo dio non dovere mettere il require, ma che il file venga caricato grazie all'instanziazione della classe, come succede per gli oggetti Zend?


    - REgistry
    Come vedete istanzio Zend db Factory.
    Come faccio a rendere $db disponivbile alle classi?
    1) variabile Globale?
    2) passo alla classe $db ==> $pippo= new Pippo($db)
    3) ho letto che si può usare il componente Zend Registry
    codice:
    A registry is a container for storing objects and values in the application space. By storing the value in a registry, the same object is always available throughout your application. This mechanism is an alternative to using global storage.
    Cosa mi suggerite?
    $db mi serve perchè per esmpio ho il metodo $pippo->save()
    in cui salvo l'oggetto nel db.

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    143

    Re: Zend Registry e autoloader

    Originariamente inviato da bonzox

    - Autoloader:
    http://php.net/manual/es/language.oop5.autoload.php

    devi crearti una finzione autoload tipo questa
    Codice PHP:
    function __autoload($class_name) {
        require_once 
    'classes/'.$class_name '.class.php';

    ogni volta che farai new Miaclasse(), andrá a cercare dentro la directory classes/ il file Miaclasse.class.php
    Ovviamente é un esempio basico, se le classi sono in piú directories dovresti fare qualcosa di leggermente piú complesso, ma questa é la logica.

    - REgistry
    Stiamo parlando del design pattern registry.
    Si tratta basicamente di rendere disponibili a tutta la applicazione dati e oggetti, senza utilizzare variabili globali, molto poco OOP, o mandare tropoi parametri tra classi.

  3. #3
    Ciao,
    poi provare con

    Codice PHP:
    $autoloader->registerNamespace('My_'

    Le tue classi saranno in
    library/My e avranno nomi
    tipo My_MyClass
    Pe passare $db usa Register.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  4. #4
    Originariamente inviato da whisher
    Ciao,
    poi provare con

    Codice PHP:
    $autoloader->registerNamespace('My_'
    Le tue classi saranno in
    library/My e avranno nomi
    tipo My_MyClass
    Ok, mi funziona così:
    Codice PHP:
    $autoloader->registerNamespace('My_'); 
    cartella library/My
    file library/My/Pippo.php
    Codice PHP:
    $pippo = new My_Pippo(); 
    Quindi My_ lo metto quando chiamo la classe.

    ma se volessi che l'albero fosse diverso:
    -bootstrap
    -- pippo/miaclassepippo.php
    -- pluto/miaclassepluto.php
    --ZendFramework/library/Zend/*

    Ok, forse posso registrare un namepsace per ogni cartella pippo, pluto..
    ma per metterli in un livello diverso da library?


    Pe passare $db usa Register.
    Mi puoi fare un esempio? Grazie mille

  5. #5
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  6. #6
    Grazie mille, sono riuscito a capire

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.