POO: As propiedades dunha clase

PHP No Comments »

As propiedades dunha clase gardan o estado e as características do obxeto. En realidade son variables que gardan valores: e poden ser públicas, protexidas ou privadas, estáticas ou dinámicas e incluso constantes.

Para definir unha propiedade o primeiro que hai que indicar será a súa visibilidade (public, protected ou private), e no caso de que non se indique entenderase que é publica (public). Definir unha propiedade como pública significa que é visible dende fora da propia clase, é dicir, que cando instanciemos un obxeto, podemos acceder directamente a esa propiedade. Se se define como protexida (protected), esa propiedade é accesible só dende dentro da propia clase, e dende outras clases que herden, é dicir, non podemos acceder directamente a esa propiedade cando instanciemos un obxeto, pero si poden acceder métodos dese obxeto ou doutros obxetos que sexan de clases que herdaron da anterior.

Despois da visibilidade vai se a propiedade é estática ou non (que se define coa palabra reservada static no caso de que sexa estática e sen poñer nada noutro caso). Que sexa estática significa que comparte valor para todos os obxetos desa clase, é dicir, que se se modifica o seu valor nun obxeto instancia desa clase, modificase o seu valor nos outros obxetos instancia desa mesma clase.

Despois de se é estática ou non, vai o nome da propiedade, que se define coas mesmas regras que as de definición das variables.

E opcionalmente, por último, se ten asignado un valor inicial, asígnaselle, co operador de asignación igual seguido do valor. Recordar que só se poden asignar valores constantes (de tipos escalares ou arrays) á propiedades na súa definición. Non se poden asignar nin variables, nin métodos de clases, nin funcións.

class unhaClase {
    public $propiedade1 ;
    protected static $propiedade2;
    private $propiedade3 = 5;
    public $propiedade4 = "cadea";
    protected $propiedade5 = TRUE;
}

Coas propiedades non se pode empregar o modificar final (so se pode empregar con métodos e clases).

POO: Como empregar unha clase, instanciando obxetos

PHP No Comments »

Para empregar unha clase (para empregar ese molde) temos que instanciar un obxeto de dita clase (empregar o molde para facer un obxeto con ese molde). Para instanciar un obxeto emprégase a palabra reserva new seguida do nome da clase e os parámetros que se pasen ao constructor de dita clase (se os ten). new devolve unha referencia a un obxeto da clase instanciada, que poderemos gardar nunha variable.

  $obxeto = new unhaClase();

Recordar que en PHP5 os obxetos, a diferenza doutros tipos de datos, empréganse por referencia, o que quere decir, que si asignamos este obxeto a outra varibale, en troques de facerse unha copia do dato, e gardala na nova variable, a nova variable apuntará ao mesmo dato (neste caso un obxeto) que a máis antiga.

 $obxeto1 = new unhaClase();
 $obxeto2 = $obxeto1; //Os dous obxetos son o mesmo, e cambios nunha variable afectan á outra.

POO: Como se define unha clase

PHP No Comments »

Unha clase é como o molde co que se crearán posteriormente os obxetos a empregar no código do script. Ese molde consta dun nome, unha serie de propiedades, e dunha serie de métodos. A definición da clase faise empregadno a palabra reservas class seguida do nome da clase e entre chaves as propiedades e os métodos desa clase.

class unhaClase {
    public $propiedade1;
    protected $propiedade2 = 0;

    public function metodo1() {
      // Codigo do método
    }
    public function metodo2($parametro) {
      // Codigo do método
    }
}

As clases non levan modificadores de visibilidade nua súa definición, e dicir, non se pode poñer antes da palabra class nen public, nen protected, nen private, son todas públicas.

Máis información na axuda oficial: http://www.php.net/manual/es/language.oop5.basic.php

Os espazos nos datos enviados por GET

PHP No Comments »

As direcións web (URL) non aceptan espazos no seu interior, polo que se queremos enviar por GET , datos que teñan espazos no seu contido, temos que ter en conta este detalle.

Se é o formulario o que manda a información por GET sen a nosa intervención, xa se encarga de convertir os espazos nun símbolo axeitado para resolver este problema, pero se somos nos os que construimos a direción no código PHP, podemos empregar a función urlencode para codificar os espazos e outros símbolos que poidan dar problemas de xeito que se poidan enviar na direción web.

  $datos="Esta é unha cadea de proba";
  echo "http://www.servidorPHP.com/paxina.php?datos=" . urlencode($datos);

Como subir arquivos ao servidor en PHP

HTML, PHP No Comments »

Para poder enviar arquivos entre os datos que dende un formulario HTML se envían ao servidor web, compre facer algun cambio no formulario e ter en consideración varias cousas na parte PHP.

  • No formulario, temos que engadir un novo atributo á etiqueta form, que é enctype, que debe ter o valor «multipart/form-data» (enctype=»multipart/form-data») para que o formulario sexa quen de enviar os arquivos.
  • O método de envío do arquivo ten que ser POST
  • Podemos engadir antes do campo para seleccionar o arquivo (input de tipo file), un campo oculto de nome MAX_FILE_SIZE que conteña como valor un número indicando o tamaño máximo, en bytes, que o navegador debe admitir como tamaño do arquivo seleccionado. É importante que o nome esté escrito en maiúsuculas e antes do campo de selección do arquivo.
  • <form enctype="multipart/form-data" action="paxina2.php" method="post">
      <input type="hidden" name="MAX_FILE_SIZE" value="50000" />
      <input type="file" name="ficheiro" />
      <input type="submit" value="Enviar arquivo" />
    </form>
    

    Na páxina escrita en PHP, os datos do arquivo NON están na matriz superglobal $_POST, senon na matriz $_FILES, nun elemento con índice igual ao atributo name do campo do formulario HTML onde se seleccionou o arquivo. Ese elemento en $_FILES é de novo un array que contén os seguintes elementos:

  • $_FILES['ficheiro']['name']: O nome que tiña o arquivo subido no ordenador do usuario
  • $_FILES['ficheiro']['type']: O tipo MIME do arquivo subido
  • $_FILES['ficheiro']['size']: O tamaño en bytes do arquivo subido
  • $_FILES['ficheiro']['tmp_name']: O nome temporal que ten o arquivo no servidor web antes de movelo á súa ubicación definitiva (o nome mentras está gardado na carpeta temporal)
  • $_FILES['ficheiro']['error']: Un código de erro asociado o proceso de subida do arquivo, que indica o que pasou nese proceso.
  • Cando o arquivo esté subido á carpeta temporal do servidor, e se fixeran as comprobacións de tipo de arquivo, tamaño, …, que se consideren oportunas, pódese mover a ubicación definitiva coa instrucción move_uploaded_file que verifica antes de copiar o arquivo ao seu destino definitivo que é un arquivo que foi subido. Tamén se pode empregar is_uploaded_file() para comprobar se o arquivo xa está subido á ubicación temporal.

    move_uploaded_file($_FILES['ficheiro']['tmp_name'], "ruta_completa_destino_definitivo");
    

    Máis información na axuda oficial: http://es.php.net/manual/es/features.file-upload.php

    Recuperación de campos con valores múltiples

    HTML, PHP No Comments »

    Nas listas (select) pódense seleccionar varias das opcións (varios valores para un campo SELECT) se dito campo foi creado como de selección multiple (se ten o atributo multiple). Nese caso, os valores das opcións seleccionadas na lista recuperase dende PHP accedendo ao array de elementos do elemento de nome igual ao atributo name do campo SELECT do formulario HTML (e dicir, no elemento de nome igual ao campo do formulario HTML no array superglobal, en lugar de atopar un valor, atopamos un array cos distintos valores, máis de un, seleccionados).

    <form method="GET" action="paxina2.php">
    <select name="lista[]" multiple="multiple"  size="1">
    <option value="valor1">Opcion 1</option>
    <option value="valor2">Opcion 2</option>
    <option value="valor3">Opcion 3</option>
    </select>
    </form>
     foreach ($_GET['lista'] as $elemento)
                echo $elemento;
    

    Hai que ter en conta:

  • Que o nome do campo SELECT no formulario HTML debe rematar en [ ] como se ve no exemplo anterior, para indicar que se envía un array de valores
  • Para recuperar os valores en PHP, onde no caso dos valores simples tiñamos o valor enviado dende o campo ($_GET['nome_campo'] ou $_POST['nome_campo']), ahora temos un array con varios valores ($_GET['nome_campo'][0], $_GET['nome_campo'][1], … tantos como elementos se envíen dende o campo SELECT). E para recuperalos percorremos ese array cun foreach
  • Recuperación de campos segundo o seu tipo

    HTML, PHP No Comments »

    Imos ver que hai que ter en conta á hora de recuperar campos dun formulario dende PHP, segundo o tipo de campo:

  • Nos campos de texto (input text, password, hidden, e textarea) o valor introducido no campo de texto recuperase dende PHP accedendo ao elemento de nome igual ao atributo name do campo do formulario HTML. Se non se introduciu texto no campo, o valor do elemento da matriz superglobal é a cadea baleira. Como xa se dixo, accédese á matriz superglobal que contén os datos con $_GET ou $_POST (segundo o método empregado), ou con $_REQUEST
    <form method="GET" action="paxina2.php">
    <input type="text" name="nome_campo">
    </form>
     echo $_GET['nome_campo'];
  • Nos botóns de opción ou activación (input radio), o valor do botón seleccionado recupérase dende PHP accedendo ao elemento de nome igual ao atributo name do campo do formulario HTML. Só se envia un valor, que será o do elemento seleccionado. Hai que ter en contar que todos os botón do grupo teñen o mesmo nome (o mesmo atributo name), pero distinto valor (para diferencialos).
    <form method="GET" action="paxina2.php">
    <input type="radio" name="nome_campo" value="valor1">Opcion 1
    <input type="radio" name="nome_campo" value="valor2">Opcion 2
    <input type="radio" name="nome_campo" value="valor3">Opcion 3
    </form>
     echo $_GET['nome_campo'];
  • Nos botóns ou casillas de verificación (input checkbox), se o campo foi seleccionado o valor do campo recupérase dende PHP accedendo ao elemento de nome igual ao atributo name do campo do formulario HTML, e se non foi seleccionado non haberá dito elemento na matriz, polo que o que hai que facer e comprobar se dito elemento existe ou non na matriz superglobal para saber se o elementos checkbox foi ou non seleccionado.
    <form method="GET" action="paxina2.php">
    <input type="checkbox" name="nome_campo" value="valor"> SI/NON
    </form>
     if (is_set($_GET['nome_campo']))
               echo $_GET['nome_campo'];
  • Nas listas (select) o valor do elemento seleccionado na lista recuperase dende PHP accedendo ao elemento de nome igual ao atributo name do campo SELECT do formulario HTML.
    <form method="GET" action="paxina2.php">
    <select name="lista" size="1">
    <option value="valor1">Opcion 1</option>
    <option value="valor2">Opcion 2</option>
    <option value="valor3">Opcion 3</option>
    </select>
    </form>
     echo $_GET['lista'];
  • Recuperando os campos do formulario dende PHP

    HTML, PHP No Comments »

    En PHP dispoñemos de dúas matrices superglobales que son $_GET e $_POST, que conteñen os datos enviados dende un formulario segundo o método empregado fose GET ou POST. Polo tanto se o método foi GET os datos enviados dende o formulario estarán na matriz $_GET e se o método foi POST os datos estarán na matriz $_POST. Hai que ter en conta que hai unha terceira matriz que é $_REQUEST que contén os datos, foran estos enviados por GET ou por POST, pero o seu emprego non se recomenda por razóns de seguridade.

    Dado que son matrices, para acceder aos datos dun campo concreto do formulario, empregaremos $_GET['nome_campo'] ou $_POST['nome_campo'] onde nome_campo e o atributo name do campo en HTML.

    <form method="GET" action="paxina2.php">
    <input type="text" name="nome">
    </form>
    
    echo $_GET['nome']; //Imprime o valor que o usuario escribise no campo nome do formulario anterior
    

    E que podo enviar no formulario: campos dos formularios

    HTML No Comments »

    As etiquetas HTML para crear campos dentro dos formularios, que nos server para enviar distintos tipos de información, son as seguintes:

  • etiquetas input de tipo text: Crean unha caixa de texto, na que se pode introducir o texto desexado nunha liña de texto. Pódese indicar o seu nome (atributo name), o valor inicial (atributo value) que será o que se vexa inicialmente dentro do campo de texto, o seu tamaño (atributo size) que será o ancho da caixa de texto, o seu tamaño máximo (atributo maxlength) que será o número máximo de caracteres que se pode escribir nesa caixa de texto.
    <input type="text" name="nome" size="10" maxlength="7" value="valor inicial" />
    
  • etiquetas input de tipo password: Igual que o anterior, xera unha caixa de texto, pero neste o seu contido vese sustituído por * ou outro caracter que impide ver o contido. Empréganse para campos nos que non se quere que o usuario vexa o contido que se escribe como é o caso de campos nos que se introduce un contrasinal.
    <input type="password" name="nome" size="10" maxlength="7" value="valor inicial" />
    
  • etiquetas input de tipo hidden: Igual que as anteriores, pero a caixa de texto permanece oculta, co que o usuario non pode vela nin modificar o seu contido. Empréganse para enviar información no formulario de xeito oculto
    <input type="hidden" name="nome" value="valor inicial" />
    
  • etiquetas input de tipo radio: Crea un botón de opción (ou tamñen chamados de activación), que son aqueles nos que se pode elexir entre varias opciones, seleccionando un pequeno círculo sitado a súa esquerda. Emprégase para escoller unha entre varias opcións prefixadas. Como normalmente van en grupos de máis de un (para ter diversas opción para escoller), é importante saber, que todos os radio-button dun grupo teñen que ter o mesmo nome (atributo name) pero valores distintos (atributo value)
    <input type="radio" name="nome" value="valor 1" /> Opción 1
    <input type="radio" name="nome" value="valor 2" /> Opción 2
    <input type="radio" name="nome" value="valor 3" /> Opción 3
    
  • etiquetas input de tipo checkbox: Crean unha casilla de verificación, empregada cando hay que seleccionar si se cumpre ou non algo.
    <input type="checkbox" name="nome" value="valor" /> SI/NON
    
  • etiquetas input de tipo file: Crean unha caixa de texto e máis un botón para seleccionar un arquivo do noso equipo para enviar ao servidor. Hai que destacar que aínda que ten valor (atributo value), este non se pode establecer en código por cuestións de seguridade, é dicir, non se lle pode asignar a un campo file un valor de xeito estático na creación da páxina. Se fora posible, poderíase crear unha páxina cun campo file co seu valor establecido a un nome de arquivo determinado e sen intervención do usuario enviar dito arquivo ao servidor, todo isto sen que o usuario o soubese nin fixese nada, o que claramente constitúe un problema de seguridade. Para evitar isto, non está permitido darlle valor a este control na etiqueta HTML.
    <input type="file" name="nome" size="50" value="" />
    
  • etiquetas input de tipo submit: Crea un botón de tipo submit, que é un boton que cando se pulsa nel envía de xeito automático os datos dos campos do formulario ao servidor facendo unha petición á páxina indicada no atributo action da etiqueta form. Neste caso o valor indicado no atributo value é o texto que se verá enriba do botón (dentro del).
    <input type="submit" name="nome" size="50" value="Texto do botón" />
    
  • etiquetas input de tipo reset: Crea un botón de tipo reset, que é un botón que canso se pulsa nel baleira o contido de todos os campos do formulario (resetea os campos).
    <input type="reset" name="nome" size="50" value="Texto do botón" />
    
  • etiquetas textarea: Crea un cadro de texto de máis dunha liñá. Esta etiqueta ten etiqueta de peche, e entre a de apertura e peche vai o texto que é o contido que se pode ver no interior do cadro inicialmente. Ten varios atributos, para indicar o nome (atributo name), o número de filas (atributo rows) e o número de columnas (atributo cols)
    <textarea name="nome" cols="50" rows="5">Contido da area de texto</textarea>
    
  • etiquetas select: Permite escoller entre unha lista de opcións. Este etiqueta ten etiqueta de peche, e entre a de apertura e a de peche vai a lista de opcións. Cada unha das opcións crease coa etiqueta option que tamén ten etiqueta de peche. Entre a de apertura e a de peche vai o texto da opción, e no atributo value da opción o valor desa opción. Pódense indicar varios atributos da lista, como son o seu nome (atributo value), o número de opcións visibles na lista (atributo size), e se admite seleción multiple out non (atributo multiple).
    <select name="nome" size="1">
    <option value=""></option>
    <option value="valor1">Opcion 1</option>
    <option value="valor2">Opcion 2</option>
    <option value="valor3">Opcion 3</option>
    </select>
    
  • etiquetas button: Crea un botón sen función asignada, de forma que o pulsar nel non fai nada por defecto.
  • Enviar datos a un servidor web: os formularios

    HTML No Comments »

    Para poder enviar información ao servidor web, e necesario ter un formulario HTML dende onde se envía a información ao servidor. Para definir un formulario en HTML hai que empregar a etiqueta <form>que indica o comezo e final do formulario. Todo o contido no seu interior será enviado ao servidor web cando se envíe o formulario (cando se faga submit do formulario). A etiqueta <form> ten dous atributos necesarios:

  • action que indica a páxina web (normalmente escrita nunha linguaxe de servidor capaz de interpretar os datos enviados, por exemplo en linguaxe PHP) onde se van mandar os datos dos formulario.
  • method que indica o método para enviar esos datos, e que pode ser GET ou POST
  • <form method="POST" action="paxina2.php">
     ....
    </form>
    

    Temos que ter en conta a hora de empregar un método ou outro as características de cada un deles:

  • Co método GET os datos do formulario son enviados na dirección (na URL) da páxina solicitada, polo que os datos son visibles a calquera que vexa dita dirección
  • Co método POST os datos son enviados nas cabeceiras da petición, e polo tanto son menos visibles
  • O tamaño dos datos enviados por GET está limitado polo tamaño máximo das direccións URL de cada navegador, pero en toda caso é un tamaño bastante limitado. Esta limitación non existe na información enviada por POST
  • Se se quere enviar arquivos e obrigatorio empregar o método POST
  • Os datos enviados por GET seguen o formato nome_campo=valor separados uns dos outros polo símbolo & a continuación do nome da páxina e separados desta polo símbolo ? (por exemplo se enviamos os datos a paxina2.php e os nomes dos campos enviados son campo1 e campo2 e os seus valores valor1 e valor2, se facemos a petición e envío de datos por GET a dirección solicitada será paxina2.php?campo1=valor1&campo2=valor2)

  • Deseñado por Norick - WPMU Theme pack by WPMU-DEV.
    Entries RSS Comments RSS Iniciar sesión