<?php
/*
function contiene($neeedle, $haystack) {
	$r = preg_match("~$needle~", $haystack, $match);
	if($r===
}
*/
Class Cursor_DB {
			public $cursores_tablas; /* Un solo gran contenedor de cursores, 
										en lugar de cursores individuales con nombres difíciles de recordar. Cada cursor es un array de dos componentes:
											-el objeto cursor
											-el orden (string de: "columna asc/desc", o un callback)
										*/
			static public function convertir_a_clase($registro) {
				die("sitio1504083030");
			}
										
			/* Debe dar lugar a un objeto único global. */
			static public function select_default($tabla) {
				$order_default = Tabla::default_order($tabla);
				$order_by = "ORDER BY {$order_default}";
				$SELECT = "SELECT * from $tabla $order_by ";
				return $SELECT;
			} //Fin de select_default			
			
			static public function get_cursor($tabla) {
				$se_han_inicializado_los_cursores                      = empty($this->$cursores_tablas);
				$se_ha_inicializado_el_cursor_de_esta_tabla_especifica = empty($this->$cursores_tablas[$tabla]);
				if(se_han_inicializado_los_cursores) {
					$cursor = self::inicializar_cursor($tabla);	//first, primer registro				
				} else if ($se_ha_inicializado_el_cursor_de_esta_tabla_especifica) {
					$cursor = self::inicializar_cursor($tabla);	//first, primer registro
				} else {
					$cursor = $this->$cursores_tablas[$tabla]; //siguiente
				}
				return $cursor;
			} //Fin de get_cursor

			static public function inicializar_cursor($tabla) {
				//Realiza la consulta en el orden
				$sql = self::select_default($tabla);
				//conectarse y generar query 
			}	

			public function first($tabla) {   //##wrapper: la distinción entre "el primero" y "un siguiente",
				return siguiente($tabla);     //           se hace en get_cursor
			}
			
			public function siguiente($tabla) {
				$cursor       = get_cursor($tabla);
				$registro     = $cursor->mover("siguiente"); //mover en db
				$registro_obj = self::convertir_a_clase($registro); //Traer todas las propiedades y trucos de la clase
				switch($tabla) {
					case "articulo":

var_dump($Articulo);


						die("sitio20260326075726-3032dav");
						break;
				}
				die("sitio9");
			}
			
}

		$GLOBALS["Cursor_DB"] = new Cursor_DB();
		
Class Registro_DB {
	static public function siguiente($tabla) {
		return $GLOBALS["Cursor_DB"]->siguiente($tabla);
	}
	
}