Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Considerazione su Procedurale

    Da quando iniziai PHP, seguendo i vari consigli sul forum sono andato sulla OO, ho comprato qualche libro e confesso che oltre alle basi del Php, non ci ho capito un emerita mazza.

    Ho scaricato scripts OO pronti, ma analizzandoli, effettivamente (per chi è all'inizio) sembrano parecchio incasinati.

    Ho comprato poco dopo uno script che mi serviva per amministrare i miei progetti, scritto in procedurale.

    Analizzando il codice l'ho trovato na figata, tutto quello che ti serve é racchiuso in una sola pagina php.

    Ho capito in pochissimo tempo come funziona il PHP e considero la programmazione procedurale veramente veloce per scriverla. Ho creato nuove funzioni dello script in qualche ora.

    Si dice però che il procedurale sia poco amministrabile rispetto ai OO per i grandi progetti; quindo mi chiedo, se tutto é ben diviso in files: creaProgetto.php, editaProgetto.php, eliminaProgetto.php, ed ognuno fa il proprio dovere, dove sarebbe la difficoltà in mantenerlo?

    Degli amici mi hanno chiesto da dove devono iniziare con Php.
    Non gli ho ancora risposto per paura di dare un consiglio sbagliato.

    Sarei propenso a dire di seguire la mia stessa strada. Sbaglio?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Il problema non è PHP, ma la programmazione in generale. Per comprendere la metodologia OO bisogna prima conoscere a fondo la procedurale.

    Un'altra questione è la metodologia "operativa": se tu organizzi MOLTO bene i tuoi script stai in qualche modo applicando tecniche OO anche se non in maniera formale... la VERA programmazione OO non è così "banale" (in senso tecnico).

    Comunque: prima procedurale (che è la base: serve per scrivere comunque i singoli metodi ad esempio), poi OO.

  3. #3
    Sono d'accordo che il problema non è php ma la programmazione in generale, io intendo la LOGICA, e devi ragionare da programmatore.

    Io sempre uso questo banale esempio:

    La mamma dice a Pierino "vai al supermercato e compra un litro di latte litro di latte, se ci sono le uova portamene dodici".

    La maggior parte porterebbe a casa il litro di latte e una dozzina di uova; I programmatori invece si portano a casa 12 litri di latte.

    Stessa cosa per entrare a casa:
    1) tira fuori le chiavi, 2) seleziona quella giusta, 3) inserisci nella toppa, 4) gira la chiave, 5) spingi la porta, 6) entra, 7) chiudi la porta.

    Se non si hanno queste nozioni per me non si può programmare assolutamente.

    Diciamo che mantengo i miei script abbastanza organizzati e facili da mantenere, eccone un esempio:

    codice:
    <?php
    include("../functions/session_info.php");
    include("../config.php");
    include("../functions/security/staff.php");
    
    $user_name = $_SESSION['user_name'];
    $user_id = $_SESSION['user_id'];
    $project_id = $_REQUEST['ProjectId'];
    
    if($project_id > 0 && getUserProjectPermissions($user_id,$project_id) == 0){
       $error_message = $lang['notassigned'];
       include('error_tpl.php');
    }   
    
    $result = mysql_query("SELECT * FROM fs_staff WHERE user_id='$user_id'",$con);
    
    if(mysql_num_rows($result)>0)
    {
       $row = mysql_fetch_array($result, MYSQL_BOTH);
       $staff_fname = $row['staff_fname'];
       $staff_lname = $row['staff_lname'];
    }
    else
    {
       $msg = $lang['usernotfound'];
    }
    
    // Populate Project Data
    $result = mysql_query("SELECT * FROM fs_projects WHERE project_id='$project_id'",$con);
    $row = mysql_fetch_array($result, MYSQL_BOTH);
    $project_title = $row['project_title'];
    $project_client_id = $row['project_client_id'];
    
    // Delete Record Function
    if(isset($_REQUEST['DelTaskId']))
    {
       mysql_query("DELETE FROM fs_tasks WHERE task_id=".$_REQUEST["DelTaskId"],$con);
    }
    
    // Start Code for Table Display
    $initStartLimit = 0;
    $limitPerPage = 500;
    
    $startLimit = $_REQUEST['startLimit'];
    $numberOfRows = $_REQUEST['rows'];
    $sortBy = "task_id";
    $sortOrder = "";
    
    
    if ($startLimit=="")
    {
       $startLimit = $initStartLimit;
    }
    
    if ($numberOfRows=="")
    {
       $numberOfRows = $limitPerPage;
    }
    
    if ($sortOrder=="")
    {
       $sortOrder  = "DESC";
    }
    if ($sortOrder == "DESC") { $newSortOrder = "ASC"; } else  { $newSortOrder = "DESC"; }
    $limitQuery = " LIMIT ".$startLimit.",".$numberOfRows;
    $nextStartLimit = $startLimit + $limitPerPage;
    $previousStartLimit = $startLimit - $limitPerPage;
    
    if ($sortBy!="")
    {
       $orderByQuery = " ORDER BY ".$sortBy." ".$sortOrder;
    }
    
    
    $sql = "SELECT * FROM fs_tasks WHERE task_project_id='$project_id'".$orderByQuery.$limitQuery;
    $result = MYSQL_QUERY($sql);
    $numberOfRows = MYSQL_NUM_ROWS($result);
    
    ?>
    <? include("header.php"); ?>
    
    <script language="javascript" type="text/javascript" src="../functions/ajaxmailer.js"></script>
    
    <div id="darkbanner" class="banner350">
       [img]../images/myaccount.png[/img]
       <h2><? echo $lang['managetasks']; ?></h2>
    </div>
    <div id="darkbannerwrap">
    </div>
    
    <fieldset class="form">
       <legend><? echo $lang['itemdetails']; ?></legend>
       
    
    
          <label for="project_name"><? echo $lang['projectname']; ?>:</label>
          <input name="project_name" type="text" id="project" value="<?php echo $project_title; ?>" disabled>
    
       </p>
       
    
    
          <label for="client_name"><? echo $lang['options']; ?>:</label>
          [img]../images/pencilsmall.png[/img]<? echo $lang['modifyproject']; ?>
    
    
          <P style="padding-left:160px;">[img]../images/add.png[/img]<? echo $lang['taskaddnew']; ?>
    
    
             <P style="padding-left:160px;">[img]../images/add.png[/img]<? echo $lang['timebillrecord']; ?>
             </p>
          </fieldset>
    
          <? if ($numberOfRows==0) { ?>
    
          <P style="padding-left: 20px;"><? echo $lang['notasks']; ?></P>
    
          <?
          } else if ($numberOfRows>0) {
             $i=0;
             ?>
             <table>
                <tr>
                   <th class="number"><? echo $lang['#']; ?></th>
                   <th><? echo $lang['tasktitle']; ?></th>
                   <th><? echo $lang['assignedto']; ?></th>
                   <th><? echo $lang['progress']; ?></th>
                   <th><? echo $lang['status']; ?></th>
                   <th><? echo $lang['action']; ?></th>
                </tr>
                <?
    
                while ($i<$numberOfRows)
                {
    
                   $task_id = MYSQL_RESULT($result,$i,"task_id");
                   $task_assignedto_id = MYSQL_RESULT($result,$i,"task_assignedto_id");
                   $task_due_date = MYSQL_RESULT($result,$i,"task_due_date");
                   $task_status = MYSQL_RESULT($result,$i,"task_status");
                   $task_progress = MYSQL_RESULT($result,$i,"task_progress");
                   $task_title = MYSQL_RESULT($result,$i,"task_title");
    
                   $sql2 = mysql_query('SELECT * FROM fs_staff WHERE user_id='.$task_assignedto_id);
                   while($row = mysql_fetch_array($sql2))
                   {
                      $staff_fname = $row['staff_fname'];
                      $staff_lname = $row['staff_lname'];
                      $staff_name = "$staff_fname $staff_lname";
                   }
    
                   ?>
                   <tr>
                      <td class="number tdmidgreen greentext"><? echo $task_id; ?></td>
                      <td class="td340b"><? echo $task_title; ?><span><? echo $lang['view']; ?></span>
                         <td class="td150"><? echo $staff_name; ?></td>
                         <td class="td80"><? echo $task_progress; ?></td>
                         <td class="td120"><? echo $task_status; ?></td>
                         <td class="actions">
                            <a href="edittask.php?EditTaskId=<? echo $task_id; ?>">
                               [img]../images/pencil.png[/img]
                            </a>
                            <a href="viewtasks.php?ProjectId=<? echo $project_id; ?>&DelTaskId=<? echo $task_id; ?>">
                               [img]../images/delete.png[/img]
                            </a>
                         </td>
    
                         <?
                         $i++;
                      } // end while loop
                   } // end of if numberOfRows > 0
                   ?>
                </tr>
             </table>
             <? echo $SETTING_footer_staff; ?>
    Comunque grazie per l'utilie e interessante tuo parere.

  4. #4
    PHP è nato come procedurale, le versioni 3 e 4 di PHP introducono le classi, dal php5 si introducono gli oggetti. anche io programmo in procedurale anche se riesco a modificare del codice scritto oop (spesso ma non sempre )
    Un tardo hegeliano di Busalla / allevava un gorilla nella stalla
    citando Adorno nell notti chiare / finché il primate stanco di ascoltare
    lo strangolò con una sciarpa gialla Dillo Con Parole Sue

  5. #5
    Originariamente inviato da nivasio
    anche io programmo in procedurale anche se riesco a modificare del codice scritto oop (spesso ma non sempre )
    Si, effettivamente é abbastanza ostico OOP per chi non lo conosce bene,
    comunque in procedurale riesco tranquillamente a fare tutto quello che mi serve...

  6. #6
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    se parliamo di "metter mano" ad un listato in oop ovviamente è come agire ad occhi chiusi. Ci sono varie key che nel procedurale non esistono. Fin qui credo che sia una considerazione più che ovvia.
    Diverso è il discorso della difficoltà di programmazione. Secondo me non si può dire è più facile l'uno o l'altro, dipende sempre da cosa si vuol fare.
    Col procedurale la vedo dura implementare un framework (giusto per fare un esempio) ma è immediato il suo utilizzo per un sitarello (magari senza utenti)

    Se si vuol imparare a programmare in oop non serve conoscere questo o quel linguaggio occore solo studiare la filosofia oop ed il resto vien da se.
    P.s.: il java lo si studia direttamente in oop (anche se dervia dal c)
    If you think your users are idiots, only idiots will use it. DropBox

  7. #7
    [b]Col procedurale la vedo dura implementare un framework (giusto per fare un esempio) ma è immediato il suo utilizzo per un sitarello (magari senza utenti)
    Sitarello é limitativo. Sto lavorando su di un sistema per aggiungere un modulo di ordini on-line. É un erp con circa di 3mila utenti che avranno acesso a un modulo di vendite on-line. É tutto in procedurale.

  8. #8
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    non volevo apparir scortese era giusto per far un esempio e mi complimento per il tuo lavoro.
    Del resto anche i primi cms (vedi phpnuke) sono altamente personalizzabili e tutti in procedurale e di contro è più difficile metter mano su joomla, wp,drupal,typo ecc tutti sviluppati in oop.
    If you think your users are idiots, only idiots will use it. DropBox

  9. #9
    non preoccuparti homerbit

  10. #10
    Originariamente inviato da homerbit
    non volevo apparir scortese era giusto per far un esempio e mi complimento per il tuo lavoro.
    Del resto anche i primi cms (vedi phpnuke) sono altamente personalizzabili e tutti in procedurale e di contro è più difficile metter mano su joomla, wp,drupal,typo ecc tutti sviluppati in oop.
    ma wordpress non è in procedurale?
    Un tardo hegeliano di Busalla / allevava un gorilla nella stalla
    citando Adorno nell notti chiare / finché il primate stanco di ascoltare
    lo strangolò con una sciarpa gialla Dillo Con Parole Sue

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.