Mudei o método filtra da classe FiltroMesmoMes para
public function filtra($contas) {
$filtrada = array();
foreach($contas as $c) {
$timestamp = strtotime($c->getDataAbertura());
/*
if($c->getDataAbertura()->get("month") == date("m") &&
$c->getDataAbertura()->get("year") == date("Y")) {
*/
if(date("m", $timestamp) == date("m") &&
date("Y", $timestamp) == date("Y")) {
$filtrada[] = $c;
}
}
e fiz um index dessa forma abaixo
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
require "Banco.php";
require "Conta.php";
require "Filtro.php";
require "FiltroMenorQue100Reais.php";
require "FiltroMaiorQue500MilReais.php";
require "FiltroMesmoMes.php";
$banco = new Banco("Banco Template", "23451234", "Primeiro endereço 123", "primeiro@email.com", "Simples");
//$conta1 = new Conta("001", "A1", "Primeiro", "CSV", date("d/m/Y", "01/01/2018"));
$conta1 = new Conta("001", "A1", "Primeiro", "CSV", DateTime::createFromFormat("m-d-Y", "01-01-2018")->format("Y-m-d"));
//$conta2 = new Conta("002", "A2", "Segundo", "CSV", date("d/m/Y", time()));
$conta2 = new Conta("002", "A2", "Segundo", "CSV", date("Y-m-d"));
$conta3 = new Conta("003", "A3", "Terceiro", "CSV", date("Y-m-d"));
$conta4 = new Conta("004", "A4", "Quarto", "CSV", date("Y-m-d"));
$conta1->deposita(90);
$conta2->deposita(200);
$conta3->deposita(300);
$conta4->deposita(510000);
$banco->addConta($conta1);
$banco->addConta($conta2);
$banco->addConta($conta3);
$banco->addConta($conta4);
$contas = $banco->getContas();
foreach ($contas as $conta){
echo "Conta: ".$conta->getNumero()." ".$conta->getNome()." Data: ".$conta->getDataAbertura()." Saldo: ".$conta->getSaldo()."<BR />";
//echo "Mes: ".$conta->getDataAbertura()->get("month")." Ano: ".$conta->getDataAbertura()->get("year")."<BR />";
$timestamp = strtotime($conta->getDataAbertura());
echo "Conta aberta no mes: ".date("F", $timestamp)." de ".date("Y", $timestamp)."<BR />";
}
echo "Aqui<BR />";
$filtro = new FiltroMenorQue100Reais();
$filtradas = $filtro->filtra($contas);
echo "Contas com menos de R$ 100,00<BR />";
echo "-----------------------------<BR />";
foreach ($filtradas as $conta){
echo "Conta: ".$conta->getNumero()." ".$conta->getNome()." Saldo: ".$conta->getSaldo()."<BR />";
}
$filtro = new FiltroMaiorQue500MilReais();
$filtradas = $filtro->filtra($contas);
echo "Contas com mais de R$ 500.000,00<BR />";
echo "-----------------------------<BR />";
foreach ($filtradas as $conta){
echo "Conta: ".$conta->getNumero()." ".$conta->getNome()." Saldo: ".$conta->getSaldo()."<BR />";
}
$filtro = new FiltroMesmoMes();
$filtradas = $filtro->filtra($contas);
echo "Contas abertas em ".date("F")."<BR />";
echo "-----------------------------<BR />";
foreach ($filtradas as $conta){
echo "Conta: ".$conta->getNumero()." ".$conta->getNome()." Data: ".$conta->getDataAbertura()."<BR />";
}
?>
Mas não fiz nenhuma chamada de um Filtro dentro de outro