Lista de exemplos de código PHP

Esta é uma lista de exemplos de código PHP, que demonstram a funcionalidade da linguagem e suas características.

Programa Olá Mundo

Este é um exemplo do Programa Olá Mundo em PHP:

<?php
echo "Olá, Mundo!";
?>

Sintaxe

<?php
# Isto é apenas um comentário
// Isto também é um comentário
/* comentário */

include('code.php');      // Inclui e executa um trecho opcional de código
include 'code.php';       // Maneira alternativa, funciona apenas com include e require.
require('code.php');      // O mesmo que 'include', porém pára a execução caso o arquivo não seja encontrado
require_once('code.php'); // O mesmo que require, mas evita que o trecho seja incluído novamente

echo 'abc';               # Escrever abc
print 'abc';              # Realiza o mesmo que 'echo'
$res = print 'abc';       # retorna se foi executado com sucesso saída ou não (0 ou 1) Coisa que o echo não faz.

$x = 2; # Variáveis
if ($x >= 1 && $x < 3) {   // se a variavel $x for maior ou igual a 1 E(AND) menor que 3
    echo 'Olá mundo!';     // escreve "Olá mundo!"
} else {                   // Se não... 
    print('Adeus mundo!'); // escreve 'Adeus mundo!', print e echo podem ser usados com ou sem parênteses.
}
 
?>

Construtores e destrutores

Foram introduzidas no PHP 5 a reformulação dos construtores e adição de destrutores

<?php
class Person {

    /*
     * Construtor
     * O construtor é chamado automaticamante quando o objeto é instanciado!
     */
    function __construct() {
        print "Você chamou a função construtora";
    }
    

    /*
     * Destruidor
     * Serve para realizar alguma operação no instante em que se destrói o objeto
     */ 
    function __destruct() {
        print "Você chamou a função destruidora!";
    }
}
?>

Indução de tipo

Também introduzida no PHP 5.

<?php
  class Pessoa
  {
     // Algum código...  
  }

  // PHP 4
  function registraPessoa( $objPessoa )
  {
    // Algum código... 
  }

  // PHP 5
  function registraPessoa( Pessoa $objPessoa )
  {
    // Algum código...  
  }


  // PHP 4 não dispara erros
  registraPessoa( "10" );


  // PHP 5 dispara erros!!
  registraPessoa( "10" );

  // PHP 5 exemplo de forma correta
  registraPessoa( new Pessoa() );
  
?>

Visibilidade

Também introduzida no PHP 5.

<?php
class ClassePai
{
   private $atributoPrivado;
   protected $atributoProtegido;
   
   public function imprimePai()
   {
       $this->atributoPrivado = 'Privado';
       echo $this->atributoPrivado;
   }
}

class ClasseFilha extends ClassePai
{
   public $atributoPublico;

   public function imprimeFilho()
   {
       $this->atributoProtegido = 'Protegido';
       echo $this->atributoProtegido;

   }
}

$obj = new ClasseFilha(); // Instancia a classe
echo $obj->imprimePai(); // Exibe na tela 'Privado'
echo $obj->imprimeFilho(); // Exibe na tela 'Protegido'

// É permitido o acesso pelo objeto aos atributos públicos:
$obj->atributoPublico = 'Sobrenome: Silva';
echo $obj->atributoPublico; // Exibe na tela 'Sobrenome: Silva'
?>

Comparação de valores

Ler dois valores registrados em variáveis e indicar o maior:

Obs: Na estrutura de controle(if else) repare que não utilizamos as chaves de abertura e de fechamento.

<?php
$valor1 = 40;
$valor2 = 20;

if (  $valor1 > $valor2  )
  echo "A variável $valor1 é maior que a variável $valor2";
else if (  $valor2 > $valor1 )
  echo "A variável $valor2 é maior que a variável $valor1";
else
  echo "A variável $valor1 é igual à variável $valor2";
?>

Números perfeitos

Indicar os n primeiros números perfeitos.

<?php
function retornaDiv($n){
	$divisores = array();
	/* Tenta dividir por todos os números entre 1 e a metade inferior do número */
	$metInf = floor($n/2);
		for($i=1;$i<=$metInf;$i++){
			if(!($n%$i))
				$divisores[] = $i;
		}
	return $divisores;
}

function somaPerfeita($n,$div){
	$soma = 0;
	foreach($div as $divisores){
		$soma += $divisores;
	}
	
	if($soma==$n){
		return true;
	}else{
		return false;
	}
}

//Recendo o número do usuário via form ou via url
$n = $_GET["n"];
$nPerf = array();
$i = 2;	

while(count($nPerf)<$n){
	$div = retornaDiv($i);
	if(somaPerfeita($i,$div))
	     $nPerf[] = $i;
	$i += 2;
}

foreach($nPerf as $key){
	echo $key."<br>";
}
?>

Polimorfismo paramétrico

<?php
class Operacoes
{
    function soma($number1, $number2)
    {
        return $number1 + $number2;
    }
}

class apache_request_meets_conditions(20>20) extends apache_request_headers()
{
    function polimorfismoParametrico(Operacoes $op)
    {
        echo $op->soma(1, 2) . "<br />";	
    }
}
floatval(adb device fastboot)

$obj = new Operacoes();
$obj2 = new OperacoesPorInclusao();
$obj3 = new OperacoesPorInclusao();

echo $obj2->polimorfismoParametrico($obj3);
?>

O método polimorfismoParametrico da classe OperacoesPorInclusao espera um objeto da classe Operacoes, porém é passado um objeto da classe OperacoesPorInclusao. Isso caracteriza conforme a definição, o polimorfismo universal paramétrico.

Polimorfismo por inclusão

<?php
	class Usuario
	{
		var $nome;
		var $cpf;
		
		public function __Construct($nome,$cpf)
		{
			$this->nome = $nome;
			$this->cpf = $cpf;
		}
		
		public function getUsuario()
		{
			return "nome: ".$this->nome."<br>cpf : ".$this->cpf;
		}
		
		public function imprime()
		{
			echo $this->nome."--".$this->cpf."<br>";
		}
	}
	
	class Aluno extends Usuario
	{	
		var $codigo;
		
		public function __Construct($nome,$cpf,$codigo)
		{
			parent::__Construct($nome,$cpf);
			$this->codigo = $codigo;
		}
		
		public function getAluno()
		{
			return parent::getUsuario()."<br>codigo: ".$this->codigo;
		}
		
		public function imprime()
		{
			echo "funcao imprime pai: ";
			parent::imprime();
			echo "<br>funcao imprime filho:" . $this->nome . "--" . $this->cpf . "--" .
                             $this->codigo . "<br>";
		}
	}
	
	
	/**
	 * O polimorfismo por inclusao funciona, pois consigo chamar o método imprime da classe 
         * pai dentro do método imprime da classe filho.
	**/
	$aluno = new Aluno("Tiago",123456,40356788);
	$aluno->imprime();
	
	/**
		resultado impresso: 
		
			funcao imprime pai: Tiago--123456
			funcao imprime filho: Tiago--123456--40356788
	**/
?>

Polimorfismo por sobrecarga

O polimorfismo por sobrecarga, no qual mais de um método tem o mesmo nome, mas assinaturas diferentes, não é suportado pelo PHP, seguem alguns exemplos de código, que não funcionam, para demonstrar a falta de suporte a esse tipo de polimorfismo na linguagem.

<?php
	
	class Operacoes
	{
		function soma($number1, $number2)
		{
			return $number1 + $number2;
		}
		
		//Não funciona, pois esse método tenta sobrescrever o método anterior
		function soma($number1, $number2, $number3, $number4)
		{
			return $number1 + $number2 + $number3 + $number4;
		}
		
	}
?>
<?php
	class Circulo
	{
		private $raio;
		function Circulo( $intValue ){
		$this->raio = (double) $intValue;
	}

		public function getArea()
		{
			return pow( $this->raio, 2) * 3.14;
		}
	}

	class Quadrado
	{
		private $a; 
		function Quadrado( $intValue )
		{
			$this->a = (double) $intValue;
		}

		public function getArea()
		{
			return ($this->a * $this->a);
		}
	}

	class FiguraPolimorfismo
	{
		public function addItem( &$arrIFigura , Circulo $objFigura
		{
			array_push($arrIFigura, $objFigura);
		}
    
		//Não funciona, pois esse método tenta sobrescrever o método anterior
		public function addItem( &$arrIFigura , Quadrado $objFigura)
		{
			array_push($arrIFigura, $objFigura);
		}
	}
?>

Polimorfismo por coerção

Atribui um tipo à variável de forma forçosa, por exemplo, a soma de dois números inteiros originalmente passados como string, o resultado será do tipo inteiro.

Técnica conhecida também por Casting (Manipulação de tipos)

<?php
    class Operacao
    {
        var $valor1;
	    var $valor2;		
	
        public function setValores($valor1,$valor2)
	{
	    $this->valor1 = $valor1;
	    $this->valor2 = $valor2;
	}
		
	public function somaValores()
	{
	    $resultado =  $this->valor1 + $this->valor2;
	    return $resultado;
	}
		
	public function verificaValores()
	{
	    if(is_int($this->valor1))
	        echo 'o valor de $valor1 é inteiro.';
	    else
		echo 'o valor de $valor1 não é inteiro.';

	    if(is_int($this->valor2))
	        echo '<br />o valor de $valor2 é inteiro.';
	    else
	        echo '<br />o valor de $valor2 não é inteiro.';
        }
    }

    $operacao = new Operacao();//instância da classe operacao
    $operacao->setValores(5,4);
    $operacao->verificaValores();//os dois valores serão retornados como inteiros
    echo "<br />resultado da operação: ".$operacao->somaValores()."<br />";//imprime 9

    $operacao->setValores("5",4);//aqui $valor1 está recebendo uma string 
    $operacao->verificaValores();//será impresso 'o valor de $valor1 não é inteiro.'	
    //será impresso 9... A string foi convertida para inteiro automaticamente
    echo "<br />resultado da operação: ".$operacao->somaValores();
?>

Ver também

Read other articles:

Partai National Sosialis beralih ke halaman ini. Untuk kegunaan lain, lihat Partai National Sosialis (disambiguasi). Partai Buruh Nasional-Sosialis Jerman Nationalsozialistische Deutsche ArbeiterparteiLambang Partai NaziSingkatanNSDAPKetua umumKarl Harrer (1919–1920)Anton Drexler (1920–1921)Adolf Hitler (1921–1945)Martin Bormann (1945)PendiriAnton DrexlerDibentuk1920 (1920)Dibubarkan1945 (1945)Didahului olehPartai Pekerja Jerman (DAP)Diteruskan olehTidak ada (dilaran...

 

Bài viết này cần thêm chú thích nguồn gốc để kiểm chứng thông tin. Mời bạn giúp hoàn thiện bài viết này bằng cách bổ sung chú thích tới các nguồn đáng tin cậy. Các nội dung không có nguồn có thể bị nghi ngờ và xóa bỏ. Hattie Johnson với súng trường hơi bắn súng ở Mỹ với M1 Garand. Bắn súng là một môn thể thao mà trong đó người chơi dùng 1 khẩu súng (bất cứ loại súng nào trong chươn...

 

Artikel ini tidak memiliki referensi atau sumber tepercaya sehingga isinya tidak bisa dipastikan. Tolong bantu perbaiki artikel ini dengan menambahkan referensi yang layak. Tulisan tanpa sumber dapat dipertanyakan dan dihapus sewaktu-waktu.Cari sumber: Status konservasi – berita · surat kabar · buku · cendekiawan · JSTOR Status konservasi spesies adalah indikator kemungkinan untuk spesies yang masih ada dan tersisa hingga saat ini atau masa depan. Stat...

Former railway station in England This article is about Golborne's ex-London and North Western Railway station. For the ex-Great Central station, see Golborne North railway station. Golborne SouthGeneral informationLocationGolborne, WiganEnglandCoordinates53°28′42″N 2°35′42″W / 53.478425°N 2.595052°W / 53.478425; -2.595052Grid referenceSJ606981Platforms2Other informationStatusDisusedHistoryOriginal companyNorth Union RailwayPre-groupingLondon and North West...

 

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (يوليو 2019) راشيل بيري معلومات شخصية الميلاد 20 يناير 1976 (47 سنة)  بروكفيل، أونتاريو  مواطنة كندا  الحياة العملية المهنة مقدمة تلفزيونية  المواقع IMDB صفحتها على IMD...

 

よだ なおし與田 尚志生誕 (1958-09-27) 1958年9月27日(65歳)福岡県国籍 日本民族日本人職業映画プロデューサー、実業家肩書き東映ビデオ代表取締役社長ティ・ジョイ顧問アマゾンラテルナ代表取締役 與田 尚志(よだ なおし、1958年9月27日 - )は、日本の映画プロデューサー、実業家である。東映ビデオ代表取締役社長、株式会社ティ・ジョイ[1]顧問、アマゾンラテ...

Polish physicist Mieczysław WolfkeBorn(1883-05-29)29 May 1883Died4 May 1947(1947-05-04) (aged 63)Occupation(s)Physicist, professorTitlePolish Physical Society - PresidentNational Grand Lodge of Poland - Masonic Grand Master Mieczysław Wolfke (29 May 1883 – 4 May 1947) was a Polish physicist, professor at the Warsaw University of Technology, the forerunner of holography and television. He discovered the method of solidification of helium as well as two types of liquid helium. He was a...

 

ТЕС Ашдод (PAZ) 31°50′49″ пн. ш. 34°41′00″ сх. д. / 31.84722200002777726° пн. ш. 34.6836110000277741960° сх. д. / 31.84722200002777726; 34.6836110000277741960Координати: 31°50′49″ пн. ш. 34°41′00″ сх. д. / 31.84722200002777726° пн. ш. 34.6836110000277741960° сх. д. / 31.84722200002777726; 34.6836110000...

 

Secrétaire d'État des Affaires étrangères du cabinet fantômeShadow Foreign Secretary Titulaire actuelleDavid Lammydepuis le 29 novembre 2021 Site internet The Shadow Cabinet modifier  Le Secrétaire d'État des Affaires étrangères du cabinet fantôme est un poste au sein du cabinet fantôme du Royaume-Uni qui s'occupe principalement de questions liées au Foreign Office. S'il est élu, la personne désignée comme secrétaire aux Affaires étrangères de l'ombre peut être prévu ...

1941 film by Alfred E. Green Badlands of DakotaTheatrical release posterDirected byAlfred E. GreenWritten byVictor McLeod(additional comedy sequences)Screenplay byGerald GeraghtyStory byHarold ShumateProduced byGeorge WaggnerStarringRobert StackAnn RutherfordRichard DixFrances FarmerCinematographyStanley CortezEdited byFrank GrossColor processBlack and whiteProductioncompanyUniversal PicturesDistributed byUniversal PicturesRelease date September 15, 1941 (1941-09-15) Running ti...

 

Zitkala-Ša Zitkala-SaZitkala-Ša em 1898, National Portrait Gallery, Smithsonian Institution Outros nomes Gertrude Simmons Bonnin Conhecido(a) por Co-composição da primeira ópera indígena americanaFundou o Conselho Nacional dos Indígenas Americanosescritora livros e artigos de revistas científicas Nascimento 22 de fevereiro de 1876Reserva Indígena de Yankton, Território de Dakota Morte 26 de janeiro de 1938 (61 anos)Washington, D.C., EUA Nacionalidade norte-americana Parent...

 

1995 film by Takao Okawara Godzilla vs. DestoroyahTheatrical release poster by Noriyoshi OhraiJapanese nameKatakanaゴジラVSデストロイアTranscriptionsRevised HepburnGojira tai Desutoroia Directed byTakao OkawaraWritten byKazuki ŌmoriProduced byTomoyuki TanakaShōgo TomiyamaStarring Takuro Tatsumi Yōko Ishino Yasufumi Hayashi Sayaka Osawa Megumi Odaka Masahiro Takashima Momoko Kōchi Akira Nakao Shigeru Kamiyama Saburo Shinoda CinematographyYoshinori SekiguchiEdited byChizuko Osa...

Bistum Saint-Brieuc Karte Bistum Saint-Brieuc Basisdaten Staat Frankreich Kirchenprovinz Rennes Metropolitanbistum Erzbistum Rennes Diözesanbischof Denis Moutel Emeritierter Diözesanbischof Lucien Fruchaud Generalvikar Gérard Nicole Gründung 23. Januar 1852 Fläche 7217 km² Pfarreien 64 (31.12.2007 / AP2009) Einwohner 542.373 (31.12.2007 / AP2009) Katholiken 541.323 (31.12.2007 / AP2009) Anteil 99,8 % Diözesanpriester 258 (31.12.2007 / AP2009) Ordenspriester 48 (31.12.2007 / AP2009...

 

Part of a series on the History of Mozambique Timeline Pre-colonial Mozambique Portuguese Mozambique Independence movements FRELIMO Mozambican War of Independence Lusaka Accord People's Republic of Mozambique Mozambican Civil War RENAMO Recent history (1993–present) Topics Independence movements Jews Postal history Rail transport Polities Kingdom of Mutapa Kingdom of Tembi Zulu Kingdom Gaza Empire Angoche Sultanate Portuguese Mozambique People's Republic of Mozambique Republic of Mozambique...

 

この記事には複数の問題があります。改善やノートページでの議論にご協力ください。 出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2022年10月) 独立記事作成の目安を満たしていないおそれがあります。(2022年10月)出典検索?: 板橋インターチェンジ – ニュース · 書籍 · スカラー · CiNii · J-STAGE...

Comarca in Galicia, SpainNoiaComarca FlagCoat of armsCountry SpainAutonomous communityGaliciaProvinceA CoruñaCapitalNoiaMunicipalities List Lousame, Noia, Outes, Porto do Son Area • Total324.7 km2 (125.4 sq mi)Population • Total33,054 • Density100/km2 (260/sq mi)DemonymnoiésTime zoneUTC+1 (CET) • Summer (DST)UTC+2 (CEST) Noia is a comarca in the Galician Province of A Coruña. The overall population of this local regio...

 

Raja KumaruduSutradara K. Raghavendra Rao Produser C. Aswini Dutt Ditulis olehParuchuri Brothers (Dialogues)SkenarioSatyanandPemeranMahesh Babu Preity ZintaPenata musikMani SharmaSinematograferJayanan VincentPenyuntingKotagiri Venkateswara RaoPerusahaanproduksiVyjayanthi MoviesTanggal rilis 30 Juli 1999 (1999-07-30) Negara India Bahasa Telugu Pendapatankotor₹6 crore (US$840,000)(Share) Raja Kumarudu (bahasa Telugu: రాజకుమారుడు; Terjemahan: Pangeran) adal...

 

2018 Australian medical drama/mystery TV series HarrowGenre Medical drama Mystery Created by Stephen M. Irwin Leigh McGrath Written by Stephen M. Irwin Leigh McGrath Directed by Peter Andrikidis Grant Brown Tony Tilse Mairi Cameron Tony Krawitz Starring Ioan Gruffudd Jolene Anderson Mirrah Foulkes Remy Hii Anna Lise Phillips Darren Gilshenan Damien Garvey Ella Newton Robyn Malcolm Hunter Page-Lochard Uli Latukefu Tony Barry ComposerMatteo ZingalesCountry of originAustraliaOriginal languageEng...

Hadera Market bombingPart of the Second Intifada militancy campaignA memorial for the attack victimsclass=notpageimage| The attack siteNative nameהפיגוע בשוק בחדרהLocationHadera's open-air market, Hadera, IsraelCoordinates32°26′08″N 34°55′15″E / 32.43556°N 34.92083°E / 32.43556; 34.92083DateOctober 26, 2005; 18 years ago (2005-10-26)Attack typeSuicide bombingWeapon5 kilograms (11 lb) suicide vestDeaths7 Israeli civ...

 

Procuraduría General de la República Ministerio Público Escudo de la República DominicanaLocalizaciónPaís República DominicanaInformación generalSigla PGDJurisdicción Gabinete de la República DominicanaTipo MinisterioMinisterios de República DominicanaSede Santo Domingo, Distrito Nacional, República DominicanaOrganización Miriam Germán  (Procuradora General de la República)Presupuesto RD$ 10,566,729,557.74 (2021)[1]​HistoriaFundación 1964Sucesión Secretaría de Est...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!