MANUAL DE PHP

(y algo mas)windsurf pozo izquierdo
Google
search for in the  
ELMARRAJO.COM mysql bulma desarrollo web linux fedora html ayuda

windsurf mercedes camper

Las Bases

clase

Cada definición de clase empieza con la palabra "class", seguida por un nombre de clase, el cual puede ser cualquier nombre que no esté en la lista de palabras reserved en PHP. Seguida por un par de llaves curvas, las cuales contienen la definición de los miembros de la clase y los métodos. Una seudo variable $this está disponible cuando un método es llamado dentro del contexto de un objeto. $this es una referencia al objeto que se está usando (usualmente el objeto al que el método pertenece, pero puede ser otro objeto, si un método es llamado estáticamente desde el contexto de un objeto secundario). Este es ilustrado en el siguiente ejemplo:

<?php
class A
{
   function
foo()
   {
       if (isset(
$this)) {
           echo
'$this is defined (';
           echo
get_class($this);
           echo
")\n";
       } else {
           echo
"\$this is not defined.\n";
       }
   }
}

class
B
{
   function
bar()
   {
      
A::foo();
   }
}

$a = new A();
$a->foo();
A::foo();
$b = new B();
$b->bar();
B::bar();
?>

El resultado del ejemplo seria:

$this is defined (a)
$this is not defined.
$this is defined (b)
$this is not defined.

Ejemplo 19-1. Definición simple de una clase

<?php
class SimpleClass
{
  
// member declaration
  
public $var = 'a default value';

  
// method declaration
  
public function displayVar() {
       echo
$this->var;
   }
}
?>

Nuevo objeto

Para crear una instancia de un objeto, un nuevo objeto debe ser creado y asignado a una variable. Un objeto siempre será asignado cuando se crea un objeto nuevo a menos que el objeto tenga un constructor definido que arroje una excepción en caso de error.

Ejemplo 19-2. Creando una instancia

<?php
$instance
= new SimpleClass()
?>

Cuando se asigna una instancia de un objeto previamente creado a una nueva variable, la nueva variable accesará la misma instancia que la del objeto a la que fue asignada. Este comportamiento es el mismo cuando se pasan instancias a una función. Una nueva instancia de un objeto previamente creado puede ser hecho clonandolo.

Ejemplo 19-3. Asignamiento de Objeto

<?php
$assigned 
$instance;
$reference  =& $instance;

$instance->var = '$assigned will have this value';

$instance = null; // $instance and $reference become null

var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>

El resultado del ejemplo seria:

NULL
NULL
object(SimpleClass)#1 (1) {
   ["var"]=>
     string(30) "$assigned will have this value"
}

Extendiendo objetos

Una clase puede heredar métodos y miembros de otra clase usando la palabra 'extends' en la declaración. No es posible extender de múltiples clases, una clase puede heredar solo de una clase base.

Los métodos de herencia y sus miembros pueden ser evitados, redeclarandolos con el mismo nombre con el que los definió la clase padre, a menos que la clase padre haya definido un método como final. Es posible accesar a los métodos o miembros redeclarados haciendo referencia a ellos con parent::

Ejemplo 19-4. Herencia de SimpleClass

<?php
class ExtendClass extends SimpleClass
{
  
// Redefine the parent method
  
function displayVar()
   {
       echo
"Extending class\n";
      
parent::displayVar();
   }
}

$extended = new ExtendClass();
$extended->displayVar();
?>

El resultado del ejemplo seria:

Extending class
a default value


add a note add a note User Contributed Notes
Las Bases
phpprogrammer at artspad dot net
12-Aug-2006 04:29
"Once again, I reiterate, there's no need to overwrite variables and open this can of worms: just make a new variable and be done with it. As long as you don't overwrite variables, it doesn't matter whether or not you use references or assignments (unless you're planning for PHP4 compatibility). "

Always suspect advice that disregards nuanced functionality available to you.

The difference between getting a reference versus a copy is subtle but powerful. It really only became highly relevant to me when I was working in Flash with XML. The nodes from the xml structure were returned as references. So getting a node and changing its value didn't just change the node variable I had, it updated the node within the xml document. Had I only gotten a copy I would have had to have routines for removing and inserting the node in the overall structure.
 
The moral of this story is that there are times when overwriting variables in a reference is actually very practical and a sign of evovled coding.

Also, there's the old trick of passing an object reference to a function as a parameter so that you can change its properties and not have to return anything. This is particularly useful if you pass more than one object reference to the function, since a function can only ever return one value.

There is a caveat in using references in that so long as one variable within scope is holding a copy of the reference the object will remain in memory.

Please take the time to really learn virtue of references versus copies and decide for yourself whether its a tool that can help you.
edwardzyang at thewritingpot dot com
13-Apr-2006 12:47
I read the first few comments about references versus assignment on objects, and I still couldn't get it. I'm going to talk about it in terms of practical usage, not the tomfoolery occuring behind the scenes. No talk of memory pointers and the like.

<?php

// prepend this to all examples

class Mushroom
{
   public
$size;
   public function
__construct($size) {
      
$this->size = $size;
   }
}

$mushroom = new Mushroom(1);
$assigned_shroom = $mushroom;
$reference_shroom =& $mushroom;

?>

Assignments and references, when it comes down to calling functions and modifying member variables, don't make ANY difference at all.

<?php

$mushroom
->size = 5;

// all shrooms are size 5

?>

The only deviation of behavior is when you assign totally new contents to a variable. Usually, this never happens unless you're doing some strange reflection or injection.

<?php

$mushroom
= 5;

// mushroom and reference_shroom are the integer 5, assigned_shroom is still a mushroom

?>

<?php

$reference_shroom
= 5;

// same effect as example above

?>

<?php

$assigned_shroom
= 5;

// only assigned_shroom is an integer

?>

The same would apply for any object type.

Once again, I reiterate, there's no need to overwrite variables and open this can of worms: just make a new variable and be done with it. As long as you don't overwrite variables, it doesn't matter whether or not you use references or assignments (unless you're planning for PHP4 compatibility).
ben AT chemica.co.uk
01-Feb-2006 05:40
PHP classes helpfully allow you to define member variables on the fly. On top of that, dynamic variables mean you can create them by name from strings.

This means you can ape the 'Ruby On Rails' view system - or replace heavyweight templating systems like Smarty - with very little code:

view.class.php:

<?

class View
{
   public function
AddVariables($aVariables){
       foreach(
$aVariables as $name => $value){
          
$this->AddVariable($name, $value);
       }
   }
  
   public function
AddVariable($name, $value){
      
$this->$name = $value; // <--- Note the extra $
  
}
  
   public function
Render($template){
       include(
$template . ".php"); 
// You could put validation in here, so it exits cleanly if the template is missing.
  
}
  
   protected function
AddParagraph($strText){
       echo(
"<p>" . $strText . "</p>");
   }
  
   protected function
AddOptions($aOptions, $strSelected){
       foreach(
$aOptions as $value => $text){
           echo
"<option value='" . $value . "'";
           if(
$value==$strSelected){echo " selected";}
               echo
">" . $text . "</option>\n";
       }
   }
}

// The code below would normally be in a calling page/class.

$v = new View();
$v->AddVariables(array("peach"=>"fruit", "carrot"=>"vegetable"));
$v->AddVariables(array("options" => array("1"=>"Jan", "2"=>"Feb", "3"=>"March")));
$v->AddVariable("bodytext", "Some content goes here");

$v->Render("test");

?>

test.php:

<html>
<body>
<p>A peach is a <? echo $this->peach; ?>.</p>
<p>A carrot is a <? echo $this->carrot; ?>.<p>

<form action="#" method="GET">
<select id="test">
<? $this->AddOptions($this->options, 2); ?>
</select>
</form>
<? $this->AddParagraph($this->bodytext); ?>
</body>
</html>

This means you can unleash the awesome power of PHP on your templates, allowing all kinds of cool tricks, while ensuring you're not mixing up your display and business code. You only have access to the variables you pass in there yourself. Oh, and the library of markup rendering member functions you'll create. In PHP.

You can re-use templates - just use the same variables with a different page.

You can swap in different mark-up languages programatically, so you could make versions that spit out HTML, XHTML, WML, and XML for SOAP interfaces.

It's entirely extensible. Either write in more PHP member functions to automate view-based tasks, or derive new classes and extend the functionality that way. (Perfect for your proprietary XML language helper functions - they really don't belong in the same class that's generating XHTML.)

The best part is that it's all PHP, so you don't have to learn a new language (as you would do with Smarty - or if you wanted to switch over to Ruby on Rails.)

Hope someone finds it useful. If anyone makes any improvements, corrections etc. I'd love to see them. :)

You'll need a recent version of PHP5 to run it - some earlier versions gave strange scoping errors with the use of $this. I know that build date 'Jan 11 2006 16:35:21' works.
mrich at runbox dot removethis dot com
06-Dec-2005 01:45
PHP 4.3.10:

<?php

class foo {

   var
$what;

   function
foo($newWhat = 'foo') {
      
$this->what = $newWhat;
   }

   function
bar() {
       print
"<p>I'm a ".$this->what."</p>\n";
   }

}

$var = 'foo';

$obj = new $var;
// prints "I'm a foo"
$obj->bar();

$obj = new $var();
// prints "I'm a foo"
$obj->bar();

$obj = new $var('bar');
// prints "I'm a bar"
$obj->bar();

?>
npugh at tacc dot utah dot edu
29-Nov-2005 02:10
Note that a function defined in the parent class may not access a private member of a child class.

<?php
  
class A
  
{
       public function
foo() { echo $this->x; }
   }
  
   class
B extends A
  
{
       protected
$x = "class B's member";
   }
  
   class
C extends A
  
{
       private
$x = "class C's member";
   }
  
  
$b = new B();
  
$b->foo();
  
$c = new C();
  
$c->foo();
  
  
// Output:
   // class B's member
   // Fatal error: Cannot access private property C::$x
?>

In the above example, if you don't want to duplicate function foo() in all of the child classes you would have to make each member foo() operates on protected or public.  Effectively breaking encapsulation to in order to implement polymorphism.
PHP at Rulez dot com
10-Oct-2005 10:35
Check this!!!

<?php
class foo{
  function
bar() {
   return
$this;
  }
  function
hello() {
   echo
"Hello";
  }
}
$foo = new foo();
$foo->bar()->bar()->bar()->bar()->hello();
?>

Haaa! Rulezzz!
chris dot good at NOSPAM dot geac dot com
12-Sep-2005 09:32
Note that Class names seem to be case-insensitive in php 5.
eg
class abc
{
..
{
class def extends ABC
{
..
}

works fine.
jerry
12-Jun-2005 02:30
Note the little correction on graced's notes below:

Your explanation looks correct about how instances created and destroyed, just wanted to correct some errors in your code below. But Thank you greatly for explaining that I appreciate it.

<?php
  $obj1
= new stdclass();
 
var_dump($obj1);  // object #1
 
$obj1 = new stdclass();
 
var_dump($obj1);  // object #2
  // no more references to object #1, so it is destroyed.
 
$obj1 = new stdclass();  // object #1 (object #2 destroyed right after this expression)
 
var_dump($obj1);
 
$obj2 = $obj1// two variables now reference object #1
 
$obj1 = new stdclass();  // becomes object #2
 
var_dump($obj1);
 
$obj1 = new stdclass(); // object #3
 
var_dump($obj1);
?>

Output:

object(stdClass)#1 (0) {
}
object(stdClass)#2 (0) {
}
object(stdClass)#1 (0) {
}
object(stdClass)#2 (0) {
}
object(stdClass)#3 (0) {
}
rasmus at nospaam dot flajm dot com
05-Apr-2005 03:22
A very good (in my opinion) change in PHP5 is that objects are always passed by reference. In PHP4 they where passed by value, which cased a copy to be made for every call. (as long as you didn't use "&" of cause)

This example illustrates pass-by-reference, as the name changes in the same object, passed around two different ways:

<?php

class Mother {
  private
$obj = null;
  public function
setChild($o) {
  
$this->obj = $o;
  }
  public function
getChild() {
   return
$this->obj;
  }
}

class
Child {
  private
$name = 'noname';
  public function
setName($string) {
  
$this->name = $string;
  }
  public function
getName() {
   return
$this->name;
  }
}

$mom = new Mother();
$frasse = new Child();
$frasse->setName('Johan');

$mom->setChild($frasse);
$frasse->setName('Frans');

print
$frasse->getName() . "\n";
print
$mom->getChild()->getName() . "\n";

?>

This will print:

Frans
Frans

In PHP4, this would print:

Frans
Johan
graced at monroe dot NOSPAM dot wednet dot edu
29-Mar-2005 10:46
In reponse to jerry's comment: "If you instantiate a class and assign it to a variable over and over again, php will start saving instances #1 and #2 in memory but will stop at these"...

This is because after assigning the new object to the variable, there is no longer anything referencing the old object so it is destroyed.  If there WAS another reference, say you assigned another variable to the first variable before setting the first to a new class, it'd be preserved.

In reality, this really makes no difference to the programmer, just thought an explanation was in order.

<?php
  $obj1
= new stdclass();
 
var_dump($obj1);  // object #1
 
$obj1 = new stdclass();
 
var_dump($obj1);  // object #2
  // no more references to object #1, so it is destroyed.
 
$obj1 = new stdclass();  // object #1
 
var_dump($obj1);
 
$obj2 = $obj1// two variables now reference object #1
 
$obj1 = new stdclass();  // becomes object #3
  // no more references to object #2, so it is destroyed
 
var_dump($obj1);
 
$obj1 = new stdclass(); // object #2
  //etc.
?>
tigr at mail15 dot com
01-Mar-2005 04:08
Objects are not being passed by reference as varables do. Let me try to explain:

Variable passing by reference means that two variables are being binded together, so that changing one variable leads to changes in the other. In fact, there is only one variable.

Object passing by reference is a bit different. It means that not the object itself is being passed (that would lead to copying it and all evil), but only reference to the object is being passed. Now, both VARIABLES point to the same object, BUT they DO NOT point to each other. There are TWO DIFFERENT variables. This means that if you change one VARIABLE, second one would still point to the same object.

So, adding reference operator still has some sense. Here is an example:

<?php

class sampleClass {
   public
$id;
   public function
__construct($id) { $this->id=$id; }
}
$object1 = new sampleClass(1);
$object2 = $object1;
echo
$object1->id; // 1
echo $object2->id; // 1

$object2 = new sampleClass(2);
echo
$object1->id; // 1 So, $object1 was not changed. It still links
                   // to the same object
echo $object2->id; // 2

$object3 = &$object1; // note the reference operator
$object3 = new sampleClass(3);

echo
$object1->id; // 3 This time $object one was changed since it
                   // was bound with $object3
echo $object2->id; // 2
echo $object3->id; // 3

?>
jerry
12-Jan-2005 10:41
If you instantiate a class and assign it to a variable over and over again, php will start saving instances #1 and #2 in memory but will stop at these, and will not save more than those instances(ie. #3, #4, #5, #6...). Instead it will toggle between #1 and #2.

<?php
  $obj1
= new stdclass();
 
var_dump($obj1);
 
$obj1 = new stdclass();
 
var_dump($obj1);
 
$obj1 = new stdclass();
 
var_dump($obj1);
 
$obj1 = new stdclass();
 
var_dump($obj1);
 
$obj1 = new stdclass();
 
var_dump($obj1);
 
$obj1 = new stdclass();
 
var_dump($obj1);
 
$obj1 = new stdclass();
 
var_dump($obj1);
?>
Richard (php at tsg1985 dot com)
12-Dec-2004 08:36
"Actually, the new variable will access a COPY of the instance and not the SAME instance. This is shown by the example: var_dump($assigned) was not NULLified because a COPY of the instance was assigned to $assigned..."

This is actually incorrect. However, it is explained really poorly in the article.

$instance = new SimpleClass();
This creates the new SimpleClass Object location in the memory. (This spot in memory stores all of the variable and the code to execute.)Then, it points the variable $instance to that location in the memory.

$assigned =$instance;
This takes the location that $instance is pointed to and points the variable $assigned to it as well.

$reference  =& $instance;
This line of code points $refrence to the memory spot which contains the location of the SimpleClass object, not the object!

$instance->var = '$assigned will have this value';
This changes the values stored in SimpleClass Object's memory. Since $assigned points to this location as well, $assinged>var is the same value.

$instance = null;
This tells instance to point at nothing. So, it breaks its link to the SimpleClass object. $refrence points to $instance still, but since $instance points to nothing $refrence will also point to nothing.

I know this is kind of tough to understand, so I made an animated gif showing the steps.
http://www.prism.gatech.edu/~gtg624r/Code_Explenation.gif

Citas célebres

La belleza es verdad, la verdad es belleza, eso es todo lo que en la tierra sabéis, y todo lo que necesitáis saber.

John Keats
Citas en tu mail
©Contenidos Gratis

Ilusiones Opticas
ilusion_optica_075.jpg
Contenidos Web

Chiste de... Parecidos razonables
En la boda

En pleno bodorrio, un infiltrado gorrón se acerca a uno de los invitados y le dice:

- ¿Te has fijado en lo fea que es la novia? Pobre muchacho, lo que tendrá que aguantar...

- Pero bueno, ¿cómo dices eso? ¡¡Es mi hija!!

- ¡Uy! Perdona..., no creí que fueras su padre...

- Es que no soy su padre, soy su madre.
Chistes en tu mail
©ContenidosGratis

Humor Gráfico
humor_grafico_043.jpg
Contenidos Web

Inicio | Acción | Estrategia | Palabras | Puzzles | Solitarios | Foro Trucos
Cake ManiaCake Mania
Jugadores: 6835
Categoría del juego: Acción
Objetivo del juego: Ayuda a Jill a recuperar la pastelería de su abuela llevando su propia pastelería; consigue clientes y gana dinero.
Rainbow WebRainbow Web
Jugadores: 2199
Categoría del juego: Puzzles
Objetivo del juego: Rompe un pegajoso hechizo y salva un reino de fantasía en Rainbow Web. Tendrás toneladas de diversión mientras juegas a este mágico desafío para la mente.
Mahjongg FortunaMahjongg Fortuna
Jugadores: 12462
Categoría del juego: Solitarios
Objetivo del juego: Velocidad y habilidad mental son las armas más importantes en esta versión de un antiguo juego asiático. Despeja el tablero lo antes posible haciendo clic en las fichas iguales y gánate la fama eterna de la puntuación más alta.
Chainz 2Chainz 2
Jugadores: 6955
Categoría del juego: Puzzles
Objetivo del juego: Entra en el mundo de las combinaciones con Chainz 2: Relinked, emocionante secuela del exitazo del año pasado, Chainz. Gira eslabones y crea combinaciones de 3 ó más.
DeliciousDelicious
Jugadores: 4405
Categoría del juego: Acción
Objetivo del juego: ¿Eres un as de la multitarea? ¿Quieres que tus clientes estén contentos? ¡Pues Delicious es tu juego! Sacia el apetito de los clientes y tenlos contentos; ¡no te arriesgues!
BookwormBookworm
Jugadores: 4568
Categoría del juego: Palabras
Objetivo del juego: Junta las letras para formar palabras. ¡Las palabras más largas valen más puntos!
ZumaZuma
Jugadores: 4976
Categoría del juego: Acción
Objetivo del juego: Controla el ídolo de la rana de piedra de los antiguos Zuma en este intrigante enigma de acción. ¡Dispara bolas para formar conjuntos de tres, pero si dejas que lleguen a la calavera dorada morirás!
Jewel of AtlantisJewel of Atlantis
Jugadores: 3798
Categoría del juego: Puzzles
Objetivo del juego: Descubre la ciudad hundida de la Atlántida y busca valiosos tesoros. Viaja más allá de las profundidades del mar y vive trepidantes aventuras en Jewel of Atlantis.
Jewel QuestJewel Quest
Jugadores: 3727
Categoría del juego: Puzzles
Objetivo del juego: Convierte la arena de la antigua selva en oro tan rápido como puedas juntando grupos de 3 elementos. ¡Los grupos más grandes valen más puntos!
Bejeweled 2Bejeweled 2
Jugadores: 3659
Categoría del juego: Puzzles
Objetivo del juego: Con cuatro modos de juego únicos y fascinantes, nuevas piezas de juego explosivas e imponentes fondos planetarios, Bejeweled 2 es mucho más adictivo que nunca.
Contenidos gratis en tu webSiguiente >>

Fotos divertidas
fotos_increibles_0133.jpg
Contenidos Web
microrobots avion deportes riesgo recetas cocina canaria juegos online gratis moto motociclismo horoscopos naranjas valencianas surf canarias montañismo ciudades turismo postales gratis library Horoscopos Diarios Windsurf Canarias
fregadero microondas placa electrica bañopreparar camper pantalla plananevera compresor electricacamper fiat ducato camper baño quimicomampara enrollable bañocamper aire climatizadofurgoneta surf windsurffurgoneta surf windsurftelevisor furgonetas camperfurgonetas camper cama

Sudoku del día
Nivel de dificultad: Fácil



Cómo jugar:
El juego consiste en colocar los números del 1 al nueve de tal forma que no se repita el mismo número en la columna, fila y caja (bloques 3x3 enmarcados).

©Contenidos Gratis | Sudoku en tu mail

Warning: array_rand(): First argument has to be an array in /var/www/html/contenidos/efemerides.php on line 14
Sucedió el...

31 de agosto de

Efemérides en tu mail
©Contenidos Gratis
windsurf canarias youtube porno canarias baleares valencia madrid