Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Phpplatzi
Phpplatzi
$lastname = 'Maciel';
$name = "Roberto $lastname";//Si usamos comillas dobles, no necesitamos el
punto, lo podemos meter
$name2 = 'Roberto ' . $lastname;//Con comillas simples si necesitamos el p
unto
Arrays php
https://www.php.net/manual/es/language.types.array.php
<?php
$array = array(
"curso1" => "php",
"curso2" => "js",
);
// a partir de PHP 5.4
$array = [
"curso1" => "php",
"curso2" => "js",
];
// índices numéricos
$array = [
"php",
"js",
];
?>
Object
<?php
class Car
{
function move()
{
echo "Going forward...";
}
}
$myCar = new Car();
$myCar->move();
?>
Callable
<?php
// Variable que guarda un callable
$firstOfArray = function(array $array) {
if (count($array) == 0) { return null; }
return $array[0];
};
// Este es nuestro arreglo
$values = [3, 2, 1];
// Usamos nuestro callable y se imprime el valor 3
echo $firstOfArray($values);
?>
Iterable
<?php
function foo(iterable $iterable) {
foreach ($iterable as $valor) {
// ...
}
}
?>
Arrays
/*$jobs = [
1 => 'PHP Dev',
0 => 'Python Dev',
2 => 'Devops'
];*/
$jobs = [//También podemos usar strings como llaves
0 => 'PHP Dev',
1 => 'Python Dev',
2 => 'Devops'
];
$jobs = [//Se accede con $jobs[0]['title']
[
'title' => 'PHP Developer',
'description' => 'This is an awesome job!!'
],
[
'title' => 'Python Dev'
],
[
'title' => 'Devops'
]
];
Notas for
Looping through letters is possible. I'm amazed at how few people kn
ow that.
for($col = 'R'; $col != 'AD'; $col++) {
echo $col.' ';
}
returns: R S T U V W X Y Z AA AB AC
Take note that you can't use $col < 'AD'. It only works with !=
Very convenient when working with excel columns.
Ejercicios
//Ejercico 1
$texto = "";
foreach($arreglo as $llave => $valor){
if($llave === array_key_first($arreglo))//Con array_key_first() obtenemo
s la primera llave del arreglo
$texto .= ucfirst($valor).', ';//Con ucfisrt() ponemos la primera letr
a de nuestro valor en Mayúscula
else
$texto .= "$valor, "; //El punto igual sirve para concatenar las cadenas
de texto en uno solo
//De esta forma evitamos estar haciendo echo a cada momento;
}
$texto .= '<br/>decirlo al revés lo dudo.<br/>';
$arrelo_reves = array_reverse($arreglo);//Array reves nos permite voltar n
uestro arreglo
foreach($arrelo_reves as $llave => $valor){
if($llave === array_key_first($arrelo_reves))
$texto .= ucfirst($valor).', ';
else
$texto .= "$valor, ";
}
$texto .= '<br/>¡Qué trabajo me ha costado!<br/>';
echo $texto;
//Ejercicio 2 //Forma uno
$paises = [
[
'Country' => 'México',
'City' => ['Monterrey', 'CDMX', 'Torreón']
],
[
'Country' => 'Colombia',
'City' => ['Bogotá', 'Cartagena', 'Medellín']
],
[
'Country' => 'España',
'City' => ['Madrid', 'Barcelona', 'Zaragoza']
]
];
foreach($paises as $pais){
echo '<strong>'.$pais['Country'].': </strong>';
foreach($pais['City'] as $city)
echo "$city ";
echo '<br/>';
}
//Ejercicio 2 //Forma dos
$paises = [
'México' => ['Monterrey', 'CDMX', 'Torreón'],
'Colombia' => ['Bogotá', 'Cartagena', 'Medellín'],
'España' => ['Madrid', 'Barcelona', 'Zaragoza']
];
foreach($paises as $pais => list($a, $b, $c)){
echo "<strong>$pais: </strong>";
echo "$a $b $c<br/>";
}
//Ejercicio 3
$valores = [23, 54, 32, 67, 34, 78, 98, 56, 21, 34, 57, 92, 12, 5, 61];
sort($valores);//Ordenamos los valores de menor a mayor
list($a,$b,$c) = $valores;//Obtenemos los 3 primeros valores del array
echo "<strong>Valores mayores: </strong>$a, $b, $c";
$valores = array_reverse($valores);//Ordenamos los valores de mayor a meno
r
list($a,$b,$c) = $valores;
echo "<strong>Valores menores: </strong>$a, $b, $c";
Uso de continue
for($idx = 0; $idx < count($jobs); $idx++){//counts($jobs) el length de nues
tro array
if($jobs[$idx]['visible'] == false){
continue;//Nos manda a de nuevo al inicio del for, a hacer
otra iteración
//De esta forma se salta los ecos y va directo al for si s
e cumple el if
}
echo '<li class="work-position">
<h5>'.$jobs[$idx]['title'].'</h5>
<p>'.$jobs[$idx]['description'].'</p>
<strong>Achievements:</strong>
<ul>
<li>Lorem ipsum dolor sit amet, 80% consectetuer adipisc
ing elit.</li>
<li>Lorem ipsum dolor sit amet, 80% consectetuer adipisc
ing elit.</li>
<li>Lorem ipsum dolor sit amet, 80% consectetuer adipisc
ing elit.</li>
</ul>
</li>';
}
Operadores dobles
$i=0;
echo ++$i; //Imprimirá 1, primero hace la operación y después el
echo o función.
echo $i++; //Imprimirá 0, primero hace el echo o función y despu
és la operación.
Elevar a Potencia
$a**$b eleve $a a la $b
Clases
class job{
private $title;
public $description;
public $visible = true;
public $months;
public function __construct($title, $description){
$this->setTitle($title);
$this->description = $description;
}
public function getTitle(){
return $this->title;
}
public function setTitle($title){
if($title == '')
$this->title = 'N/A';
else
$this->title = $title;
}
public function getDurationAsString(){
$years = floor($this->months / 12);
$extraMonths = $this->months % 12;
if($years == 0)
return "$extraMonths months";
else if($extraMonths == 0)
return "$years years";
else
return "$years years $extraMonths months";
}
}
$job1 = new job('PHP Developer', 'This is an awesome job!!');
$job1->months = 16;
$job2 = new job('Python Developer', 'This is an awesome job!!');
$job2->months = 24;
$job3 = new job('', 'This is an awesome job!!');
$job3->months = 28;
Herencia
<?php
require_once 'BaseElement.php';
class Job extends BaseElement{
public function __construct($title, $description){
$newTitle = "Job: $title";
$this->title = $newTitle;//Tenemos que declararla com protected
}
public function getDurationAsString(){
$years = floor($this->months / 12);
$extraMonths = $this->months % 12;
if($years == 0)
return "Job Duration: $extraMonths months";
else if($extraMonths == 0)
return "Job Duration: $years years";
else
return "Job Duration: $years years $extraMonths months";
}
}
interface Printable{
public function getDescription();
}
Los namespace y los use nos permite para solucionar el problema de que dos clases se llamen
igual, de esta forma cada una tiene su propio namespace y no colisionan, si tienes dudas, volver a
buscar al respecto
Declaración namespace
namespace App\Models;
use App\Models\{Job, Project, Printable};
https://www.php-fig.org/
Con composer autoload nos evitamos la parte de los requires y hacemos un único require
require_once 'vendor/autoload.php';
instalar composer:
lo descargas, copias el archivo a tu carpeta y en la consola de xampp o cualquiera con php escribes
{
"autoload":{
"psr-4": {
"App\\": "app/"
}
},
"require": {}
}
Como descargamos composer de la manera anterior, usamos php composer.phar como comando
en vez de composer
Investigar mas de eloquent y sistemas ORM, son intermedios entre la DB y el servidor y funcionan
en mas de una DB
$route = $_GET['route'] ?? '/'; //si no existe el get, route vale /
if($route == '/'){
require_once '../views/user.php';
}
elseif($route == 'hola'){
require_once '../views/login.php';
}
//Esto sirve para ver errores en pantalla al correr PHP, solo para desarroll
o.
//Eliminar al momento de subir
ini_set('display_errors', 1);
ini_set('display_starup_error', 1);
error_reporting(E_ALL);