A programação orientada a objetos é projetada para fornecer soluções para grandes projetos de software, especialmente projetos que envolvem várias pessoas. Quando o código-fonte cresce para 10.000 linhas ou mais, cada alteração pode causar efeitos colaterais indesejáveis. Isso acontece quando os módulos formam alianças secretas. Europa antes da Primeira Guerra Mundial.
//haohappy Nota: Isso significa que a correlação entre os módulos é muito alta e a interdependência é muito forte. Alterar um módulo fará com que outros módulos também sejam alterados de acordo.
Imagine se um módulo que lida com logins permite que um módulo de processamento de cartão de crédito compartilhe sua conexão com o banco de dados. É claro que a intenção é boa, economizando nas despesas de fazer outra conexão com o banco de dados. O nome da variável pode romper o acordo entre os dois, causando um erro no processamento do módulo de cartão de crédito, que por sua vez leva a um erro no módulo que processa faturas. Em breve, todos os módulos irrelevantes do sistema poderão cometer erros. devido a isso
, sinto-me um pouco dramático, a maioria dos programadores está grata pelo acoplamento e o encapsulamento é uma medida do grau de dependência entre dois módulos. de um projeto existente e usá-lo em outro Usado em um novo projeto
Também esperamos fazer alterações em grande escala dentro de um determinado módulo sem nos preocupar com o impacto em outros módulos. relativamente independente e comunicação de dados entre módulos Faça isso através de interfaces Os módulos não bisbilhotam os nomes das variáveis uns dos outros, eles enviam solicitações educadamente através de funções.
O encapsulamento é um princípio que você pode usar em qualquer linguagem de programação. linguagens É tentador ser preguiçoso. Nada impede você de construir uma WEB hipotética por meio de módulos. A programação orientada a objetos é uma maneira de os programadores não violarem o princípio do encapsulamento
. possuem métodos e propriedades. Do ponto de vista abstrato, os métodos são as ações de um objeto e as propriedades são as características do objeto. Do ponto de vista da programação, os métodos são funções e as propriedades são variáveis. sistema orientado, cada parte é um objeto. O sistema consiste em objetos e os relacionamentos entre objetos por meio de métodos.
Uma classe define as propriedades do objeto. As propriedades e métodos da classe são chamados de membros. Pode-se expressar isso dizendo membros de dados ou membros de método.
Cada linguagem fornece diferentes maneiras de acessar objetos. identificador. Quando o PHP foi originalmente projetado, e mesmo quando o PHP3 foi desenvolvido, o PHP não tinha a intenção de fornecer a capacidade de desenvolver projetos de grande escala excedendo 100.000 linhas de código. Com o desenvolvimento do PHP e do motor Zend, tornou-se possível desenvolver grandes projetos, mas não importa o tamanho do seu projeto, escrever seus scripts em classes permitirá a reutilização de código. Esta é uma boa ideia, especialmente se você estiver disposto a compartilhar seu código com outras pessoas.
A ideia de objetos é um dos conceitos mais interessantes da ciência da computação. É difícil dominá-lo no início, mas posso garantir que, depois de dominá-lo, pensar com a mente parecerá muito natural.
Modelo de objeto do PHP5
O PHP5 possui uma herança única, acesso restrito e modelo de objeto sobrecarregável "Herança", que será discutido em detalhes posteriormente neste capítulo, incluindo relacionamentos pai-filho entre classes. Além disso, o PHP suporta atributos e acesso restrito a classes. Você pode declarar membros como privados, impedindo o acesso de classes externas. Finalmente, o PHP permite que uma subclasse sobrecarregue membros de sua classe pai.
O modelo de objeto do PHP5 trata objetos de maneira diferente de qualquer outro tipo de dados, passado por referência. para passar e retornar objetos explicitamente por referência O modelo de objeto baseado em referência será explicado em detalhes no final deste capítulo. É o novo recurso mais importante do PHP5
. , menos uso de memória e maior flexibilidade
Nas versões anteriores do PHP, os scripts copiavam objetos por padrão. Agora o PHP5 apenas move os identificadores, exigindo menos tempo. traz complexidade, mas também traz benefícios na eficiência de execução. Ao mesmo tempo, reduzir a cópia significa ocupar menos memória, que pode ser reservada. Isso libera mais memória para outras operações, o que também melhora a eficiência
do Zand Engine 2. Um desenvolvimento feliz é permitir a execução de destruição de um método de classe antes que o objeto seja destruído. Isso também é bom para utilizar memória. É muito benéfico, permitindo que o PHP saiba claramente quando não há referência ao objeto e aloque a memória livre. para outros usos.
Transferência de objetos
de gerenciamento de memória do PHP5
O PHP5 usa o Zend Engine II, e os objetos são armazenados em uma estrutura separada Object Store. Ele não é armazenado em Zval como outras variáveis gerais (no PHP4, os objetos são armazenados em Zval como variáveis gerais. ). Apenas o ponteiro do objeto é armazenado em Zval, e não o conteúdo (valor). Quando copiamos um objeto ou passamos um objeto como parâmetro para uma função, não precisamos copiar os dados. Basta manter o mesmo ponteiro de objeto e notificar o Object Store de que esse objeto específico agora aponta por meio de outro zval. Como o objeto em si está localizado no Object Store, quaisquer alterações que fizermos nele afetarão todas as estruturas zval que contêm ponteiros para o objeto - manifestadas no programa, pois quaisquer alterações no objeto de destino afetarão o objeto de origem. .Isso faz com que os objetos PHP pareçam sempre passados por referência, então os objetos em PHP são passados por "referência" por padrão e você não precisa mais usar & para declará-los como no PHP4.
Os mecanismos de coleta de lixo
em algumas linguagens, geralmente C, exigem que você solicite explicitamente a alocação de memória ao criar uma estrutura de dados. Depois de alocar memória, você pode armazenar informações em variáveis. Ao mesmo tempo, você também precisa liberar memória quando terminar de usar a variável, para que a máquina possa liberar memória para outras variáveis e evitar ficar sem memória.
PHP pode gerenciar automaticamente a memória e limpar objetos que não são mais necessários. PHP usa um mecanismo simples de coleta de lixo chamado contagem de referência. Cada objeto contém um contador de referência e cada referência conectada ao objeto aumenta o contador em um. Quando a referência sai do espaço residencial ou é definida como NULL, o contador é decrementado em 1. Quando o contador de referência de um objeto chega a zero, o PHP sabe que não é mais necessário usar o objeto e libera o espaço de memória que ele ocupa.
Por exemplo:
<?php
classe Pessoa{}
função sendEmailTo(){}
$haohappy = new Person();
// Cria um novo objeto: Contagem de referências Contagem de referências = 1
$haohfeliz2 = $haohfeliz;
// Copiar por referência: Contagem de referências = 2
não definido($haohfeliz);
// Exclui uma referência: Contagem de referências = 1
sendEmailTo($haohappy2);
//Passa objeto por referência:
// Durante a execução da função:
// Contagem de referência = 2
//Após a execução:
// Contagem de referência = 1
unset($haohappy2);
// Excluir referência: Contagem de referências = 0 Liberar espaço de memória automaticamente
?>