#array_combine
Explore tagged Tumblr posts
Text
PHP Array combine() Function
The array_combine() function is an inbuilt function in PHP. This function is introduced in PHP 5. It is used to create an array by using one array for keys and another for its values.

0 notes
Text
PHP / array_combine
Esta funcion nos pemite combinar los valores de dos array distintos para generar uno nuevo, espero les resulte de utilidad!
Bienvenidos sean a este post, hoy veremos una funcion para los arrays. Esta funcion nos permite combinar dos arrays donde los valores de uno se usaran como clave para los valores del otro, veamos su sintaxis primero: array_combine(array_1, array_2) Donde el array_1 sera el que usaremos para crear las claves y el array_2 seran los valores que asociaremos a las claves anteriores, para entenderlo…
View On WordPress
0 notes
Photo

Difference between array_merge() and array_combine() function: https://www.troposal.com/array-merge-and-array-combine-function/ #Troposal #PHP #Function #Array #array_merge() #array_combine() #Difference https://www.instagram.com/p/CAVOLuJne3-/?igshid=9payuy4exmvh
0 notes
Text
#programming#website optimization#webdesign#blogger#wordpress#developerdiary#ecommerce#interview#jobs near me
0 notes
Text
15. PHP Array Functions-2 | array_combine, array_count_values, array_diff | ATIBlog
youtube
ATIBlog PHP tutorial in hindi . PHP ARRAY FUNCTIONS-2 array_combine() array_count_values() array_diff() 1.array_combine() Creates an array by combining … Nguồn:https://phprealestatescript.com/ Xem Thêm Bài Viết Khác:https://phprealestatescript.com/lap-trinh-php
Share Tweet Share
The post 15. PHP Array Functions-2 | array_combine, array_count_values, array_diff | ATIBlog appeared first on PHP Realestate Script.
from PHP Realestate Script https://ift.tt/382G4EC via IFTTT
0 notes
Text
15. PHP Array Functions-2 | array_combine, array_count_values, array_diff | ATIBlog
youtube
ATIBlog PHP tutorial in hindi . PHP ARRAY FUNCTIONS-2 array_combine() array_count_values() array_diff() 1.array_combine() Creates an array by combining … Nguồn:https://phprealestatescript.com/ Xem Thêm Bài Viết Khác:https://phprealestatescript.com/lap-trinh-php
Share Tweet Share
The post 15. PHP Array Functions-2 | array_combine, array_count_values, array_diff | ATIBlog appeared first on PHP Realestate Script.
from PHP Realestate Script https://ift.tt/382G4EC via IFTTT
0 notes
Text
Automate Tasks by Creating Custom Artisan command in Laravel
Out of the box, Laravel comes installed with a lot of helpful commands available to use in an application. But as your application grows, you might find it time wasting, performing some tasks like populating database with user's data or products.
At this point, automating those tasks will go a long way to help you get data into your database seamlessly and facilitate the rapid completion of your web application.
Some of the default Artisan commands for Laravel include php artisan serve, php artisan make:controller, php artisan make:model and so on.
In this article, we will be creating an artisan command to populate database with product's data. This tutorial will not only show you how to create a custom artisan command, but moreso to read data from a CSV file, parse and store it in our database using the command we are going to create.
Install Laravel
To get started with the custom artisan command, I want to assume that you already have Laravel installed, if not quickly do that with the following commands. As at the time of writing this tutorial, Laravel 5.5 is being used.
composer create-project --prefer-dist laravel/laravel command
The command above will create a Laravel project called command in your local directory. Feel free to change as preferred, if you wish too.
Generating Commands
Now that you have installed Laravel, let's proceed to build our own custom commands as stated earlier. To create a custom command, use the command below:
php artisan make:command productData
The intention is to create a custom command to populate the products table, hence the reason for the name productData. After successfully running this command, a new class will be created in the app/Console/Commands directory within your project.
Open app/Console/Commands/productData, you should have a similar content like the file below :
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class productData extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'command:name'; /** * The console command description. * * @var string */ protected $description = 'Command description'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { // } }
Command Structure
Now proceed to creating the actual command by editing the file we just created
<?php namespace App\Console\Commands; use App\Product; use Illuminate\Console\Command; class productData extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'add:product'; /** * The console command description. * * @var string */ protected $description = 'Add products data to the database'; public function __construct() { ... } public function handle() { // } }
Here, we have changed the name and signature of the command and also added the command description. This will be used when displaying the command on the list screen.
Register Command
We are close, but unfortunately our newly created command will have no effect yet; as it does not exist, as far as Laravel is concerned. To change this, we will need to register the command by navigating to app/Console/kernel.php file and place the Command class we just created in the protected $commands array.
<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { /** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ Commands\productData::class, ]; protected function schedule(Schedule $schedule) { ... } protected function commands() { ... } }
To check if the command has been registered, run the artisan command :
php artisan list
And that's it, our command signature and description have been successfully registered as indicated above.
Congratulations!!! You just created your first custom Artisan command!
Migrating and Creating Table
In order to give our command life, we are going to create a model and migration file for Product, and then complete a function that will execute the console command we created.
Generate a model and migration file with this command:
php artisan make:model Product -m
This will generate two separate files app/Product and database/migrations/create_products_table. Add the contents below respectively:
## app/Product.php ... class Product extends Model { protected $table = "products"; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'description', 'quantity' ]; }
and
<?php ... class CreateProductsTable extends Migration { public function up() { Schema::create('products', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('description'); $table->string('quantity'); $table->timestamps(); }); } public function down() { ... } }
Database Set up
Open the .env file and add your database details
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=Your-database-name DB_USERNAME=Your-database-username DB_PASSWORD=Your-database-password
Now run to create tables
php artisan migrate
Execute Command
Once you execute the newly created command, the handle method within productData class will be called. So let's edit that and place the required command logic in this method.
<?php ... class productData extends Command { protected $signature = 'add:product'; protected $description = 'Add products data to the database'; public function __construct() { ... } /** * Execute the console command. * * @return mixed */ public function handle() { $CSVFile = public_path('products.csv'); if(!file_exists($CSVFile) || !is_readable($CSVFile)) return false; $header = null; $data = array(); if (($handle = fopen($CSVFile,'r')) !== false){ while (($row = fgetcsv($handle, 1000, ',')) !==false){ if (!$header) $header = $row; else $data[] = array_combine($header, $row); } fclose($handle); } $dataCount = count($data); for ($i = 0; $i < $dataCount; $i ++){ Product::firstOrCreate($data[$i]); } echo "Products data added successfully"."\n"; } }
You can find the sample CSV file used above here.
Its time to see our custom command at work.
Run
php artisan add:product
You should get a response stating Product data added successfully after running that command.
A quick look at what we now have in the database.
Conclusion
There is a lot more you can effortlessly achieve by creating a custom Artisan command. You can build on this and create more awesome commands to make development very easy for you when using Laravel.
As shown in this tutorial, you can also read data from a CSV file and store into your database with just a single command line. I hope this tutorial has been very helpful. If you have any question or thoughts that require clarifications, kindly drop a comment.
via Scotch.io http://ift.tt/2na0hFm
0 notes
Text
Listado de Funciones y Métodos ¶ Lista todas las funciones y métodos del manual a b c d e f g h i j k l m n o p q r s t u v w x y z _ a abs - Valor absoluto acos - Arco coseno acosh - Arco coseno hiperbólico addcslashes - Escapa una cadena al estilo de C addslashes - Escapa un string con barras invertidas apache_child_terminate - Finaliza un proceso de Apache después de esta llamada apache_getenv - Obtiene una variable del entorno subprocess_env de Apache apache_get_modules - Obtiene una lista de los módulos cargados en el servidor Apache apache_get_version - Obtiene la versión del servidor Apache apache_lookup_uri - Realiza una petición parcial por la URI especificada y devuelve toda la información sobre ella apache_note - Obtiene y establece las notas de petición de apache apache_request_headers - Obtiene todas las cabeceras HTTP apache_reset_timeout - Restaura el temporizador de Apache apache_response_headers - Obtiene todas las cabeceras HTTP de respuesta apache_setenv - Establece una variable subprocess_env de Apache APCIterator::current - Obtener el elemento actual APCIterator::getTotalCount - Obtener la cuenta total APCIterator::getTotalHits - Obtener el total de éxitos de la caché APCIterator::getTotalSize - Obtener el tamaño total de la caché APCIterator::key - Obtener la clave del iterador APCIterator::next - Mover el puntero al siguiente elemento APCIterator::rewind - Rebobina el iterator APCIterator::valid - Comprueba si la posición acutal es válida APCIterator::__construct - Construye un objeto iterador APCIterator APCUIterator::current - Get current item APCUIterator::getTotalCount - Get total count APCUIterator::getTotalHits - Get total cache hits APCUIterator::getTotalSize - Get total cache size APCUIterator::key - Get iterator key APCUIterator::next - Move pointer to next item APCUIterator::rewind - Rewinds iterator APCUIterator::valid - Checks if current position is valid APCUIterator::__construct - Constructs an APCUIterator iterator object apcu_add - Cache a new variable in the data store apcu_cache_info - Retrieves cached information from APCu's data store apcu_cas - Updates an old value with a new value apcu_clear_cache - Clears the APCu cache apcu_dec - Decrease a stored number apcu_delete - Elimina una variable almacenada en caché apcu_entry - Atomically fetch or generate a cache entry apcu_exists - Checks if entry exists apcu_fetch - Fetch a stored variable from the cache apcu_inc - Increase a stored number apcu_sma_info - Retrieves APCu Shared Memory Allocation information apcu_store - Cache a variable in the data store apc_add - Poner una nueva variable en caché en el almacén de datos apc_bin_dump - Obtener una copia binaria de los ficheros y variables de usuario dados apc_bin_dumpfile - Imprimir a un fichero una copia binaria de los ficheros y variables de usuario almacenados en caché apc_bin_load - Cargar una copia binaria en la caché de archivo/usuario de APC apc_bin_loadfile - Cargar una copia binaria desde un fichero a la caché de fichero/usuario de APC apc_cache_info - Recupera información que hay en caché del almacén de datos de APC apc_cas - Actualiza un valor anterior por un nuevo valor apc_clear_cache - Limpia la caché de APC apc_compile_file - Almacena un archivo en la caché de código de byte, evitando todos los filtros apc_dec - Disminuye un número almacenado apc_define_constants - Define un conjunto de constantes para recuperación y definición en masa apc_delete - Elimina una variable almacenada de la caché apc_delete_file - Borra archivos de la caché del código de operación apc_exists - Comprobar si existe una clave de APC apc_fetch - Traer una variable almacenada desde la caché apc_inc - Aumentar un número almacenado apc_load_constants - Carga un conjunto de constantes de la caché apc_sma_info - Recupera la información de la Asignación de Memoria Compartida de APC apc_store - Guardar una variable en caché en el almacén de datos apd_breakpoint - Detiene el interpretador y espera en un CR desde el socket apd_callstack - Retorna la actual pila de llamado como una matriz apd_clunk - Lanza una advertencia y una pila de llamado apd_continue - Reinicia el interpretador apd_croak - Lanza un error, una pila de lamado y entonces sale apd_dump_function_table - Muestra la tabla de funciones actual apd_dump_persistent_resources - Retorna todos los recursos persistentes como una matriz apd_dump_regular_resources - Retorna todos los recursos regulares actuales como una matriz apd_echo - Echo hacia el socket de depurado apd_get_active_symbols - Obtener una matriz con los nombres de las variables actuales en el ámbito local apd_set_pprof_trace - Inicia la sesión de depurado apd_set_session - Cambia o configura el nivel actual de depurado apd_set_session_trace - Inicia la sesión de depurado apd_set_session_trace_socket - Inicia la sesión remota de depurado AppendIterator::append - Añade un iterador AppendIterator::current - Obtiene el valor actual AppendIterator::getArrayIterator - Obtiene el getArrayIterator AppendIterator::getInnerIterator - Obtiene el iterador interno AppendIterator::getIteratorIndex - Obtiene un índice de iteradores AppendIterator::key - Obtiene la clave actual AppendIterator::next - Desplazarse al siguiente elemento AppendIterator::rewind - Rebobina el iterador AppendIterator::valid - Comprueba la validación del elemento actual AppendIterator::__construct - Construye un AppendIterator array - Crea un array ArrayAccess::offsetExists - Comprobar si existe un índice ArrayAccess::offsetGet - Offset para recuperar ArrayAccess::offsetSet - Asignar un valor al índice esepecificado ArrayAccess::offsetUnset - Destruye un offset ArrayIterator::append - Añade un elemento ArrayIterator::asort - Ordena array por sus valores ArrayIterator::count - Cuenta elementos ArrayIterator::current - Devuelve la entrada actual del array ArrayIterator::getArrayCopy - Obtener copia de un array ArrayIterator::getFlags - Obtener opciones ArrayIterator::key - Devuelve la clave actual del array ArrayIterator::ksort - Ordena un array por sus claves ArrayIterator::natcasesort - Ordena un array de forma natural, sensible a mayúsculas ArrayIterator::natsort - Ordena un array de forma natural ArrayIterator::next - Desplaza a la siguiente entrada ArrayIterator::offsetExists - Compruebar si el índice existe ArrayIterator::offsetGet - Obtener el valor de un índice ArrayIterator::offsetSet - Establece el valor para un índice ArrayIterator::offsetUnset - Destruye el valor de un índice ArrayIterator::rewind - Rebobinar array al inicio ArrayIterator::seek - Buscar la posición ArrayIterator::serialize - Serializar ArrayIterator::setFlags - Definir opciones de comportamiento ArrayIterator::uasort - Ordenado definido por el usuario ArrayIterator::uksort - Ordenado definido por el usuario ArrayIterator::unserialize - Deserializar ArrayIterator::valid - Comprueba si un array contiene más entradas ArrayIterator::__construct - Construye un ArrayIterator ArrayObject::append - Añade un valor ArrayObject::asort - Ordena las entradas por valor ArrayObject::count - Obtener el número de propiedades públicas en la clase ArrayObject ArrayObject::exchangeArray - Intercambia el array por otro ArrayObject::getArrayCopy - Crea una copia de la clase ArrayObject ArrayObject::getFlags - Obtiene las flags de comportamiento ArrayObject::getIterator - Crear un nuevo iterador desde una instancia ArrayObject ArrayObject::getIteratorClass - Obtiene el nombre de clase iterador para ArrayObject ArrayObject::ksort - Ordena las entradas por clave ArrayObject::natcasesort - Ordena un array usando un algoritmo orden natural ArrayObject::natsort - Ordena entradas usando un algoritmo de orden natural ArrayObject::offsetExists - Devuelve si el índice solicitado existe ArrayObject::offsetGet - Devuelve el valor del índice especificado ArrayObject::offsetSet - Establece el valor en el índice especificado ArrayObject::offsetUnset - Destruye el valor para el índice especificado ArrayObject::serialize - Serializar un ArrayObject ArrayObject::setFlags - Establece las flags de comportamiento ArrayObject::setIteratorClass - Establece el nombre de clase iterador para ArrayObject ArrayObject::uasort - Ordena las entradas con una función de comparación definida por el usuario y mantiene asociación de claves ArrayObject::uksort - Ordena las entradas por clave usando una función de comparación definida por el usuario ArrayObject::unserialize - Deserializar el objeto ArrayObject ArrayObject::__construct - Construir un nuevo objeto Array array_change_key_case - Cambia a mayúsculas o minúsculas todas las claves en un array array_chunk - Divide un array en fragmentos array_column - Devuelve los valores de una sola columna del array de entrada array_combine - Crea un nuevo array, usando una matriz para las claves y otra para sus valores array_count_values - Cuenta todos los valores de un array array_diff - Calcula la diferencia entre arrays array_diff_assoc - Calcula la diferencia entre arrays con un chequeo adicional de índices array_diff_key - Calcula la diferencia entre arrays empleando las claves para la comparación array_diff_uassoc - Calcula la diferencia entre arrays con un chequeo adicional de índices que se realiza por una función de devolución de llamada suministrada por el usuario array_diff_ukey - Calcula la diferencia entre arrays usando una función de devolución de llamada en las keys para comparación array_fill - Llena un array con valores array_fill_keys - Llena un array con valores, especificando las keys array_filter - Filtra elementos de un array usando una función de devolución de llamada array_flip - Intercambia todas las claves de un array con sus valores asociados array_intersect - Calcula la intersección de arrays array_intersect_assoc - Calcula la intersección de arrays con un chequeo adicional de índices array_intersect_key - Calcula la intersección de arrays usando sus claves para la comparación array_intersect_uassoc - Calcula la intersección de arrays con una comprobación adicional de índices, los cuales se comparan con una función de retrollamada array_intersect_ukey - Calcula la intersección de arrays usando una función de devolución de llamada en las claves para la comparación array_keys - Devuelve todas las claves de un array o un subconjunto de claves de un array array_key_exists - Verifica si el índice o clave dada existe en el array array_map - Aplica la retrollamada a los elementos de los arrays dados array_merge - Combina dos o más arrays array_merge_recursive - Une dos o más arrays recursivamente array_multisort - Ordena varios arrays, o arrays multidimensionales array_pad - Rellena un array a la longitud especificada con un valor array_pop - Extrae el último elemento del final del array array_product - Calcula el producto de los valores de un array array_push - Inserta uno o más elementos al final de un array array_rand - Seleccionar una o más entradas aleatorias de un array array_reduce - Reduce iterativamente un array a un solo valor usando una función llamada de retorno array_replace - Reemplaza los elementos de los arrays pasados en el primer array array_replace_recursive - Reemplaza los elementos de los arrays pasados al primer array de forma recursiva array_reverse - Devuelve un array con los elementos en orden inverso array_search - Busca un valor determinado en un array y devuelve la primera clave correspondiente en caso de éxito array_shift - Quita un elemento del principio del array array_slice - Extraer una parte de un array array_splice - Elimina una porción del array y la reemplaza con otra cosa array_sum - Calcular la suma de los valores de un array array_udiff - Computa la diferencia entre arrays, usando una llamada de retorno para la comparación de datos array_udiff_assoc - Computa la diferencia entre arrays con una comprobación de indices adicional, compara la información mediante una función de llamada de retorno array_udiff_uassoc - Computa la diferencia entre arrays con una verificación de índices adicional, compara la información y los índices mediante una función de llamada de retorno array_uintersect - Computa una intersección de arrays, compara la información mediante una función de llamada de retorno array_uintersect_assoc - Calcula la intersección de arrays con una comprobación de índices adicional, compara la información mediante una función de retrollamada array_uintersect_uassoc - Calcula la intersección de arrays con una comprobación de índices adicional, compara la información y los índices mediante funciones de retrollamada por separado array_unique - Elimina valores duplicados de un array array_unshift - Añadir al inicio de un array uno a más elementos array_values - Devuelve todos los valores de un array array_walk - Aplicar una función proporcionada por el usuario a cada miembro de un array array_walk_recursive - Aplicar una función de usuario recursivamente a cada miembro de un array arsort - Ordena un array en orden inverso y mantiene la asociación de índices Aserción - Verifica si la aserción es FALSE asin - Arco seno asinh - Arco seno hiperbólico asort - Ordena un array y mantiene la asociación de índices assert_options - Establecer/obtener valores de las directivas relacionadas con las aserciones atan - Arco tangente atan2 - Arco tangente de dos variables atanh - Arco tangente hiperbólica b base64_decode - Decodifica datos codificados con MIME base64 base64_encode - Codifica datos con MIME base64 basename - Devuelve el último componente de nombre de una ruta base_convert - Convertir un número entre bases arbitrarias bbcode_add_element - Añade un elemento bbcode bbcode_add_smiley - Añade un smiley al analizador bbcode_create - Crea un resource de BBCode bbcode_destroy - Cierra un recurso BBCode_container bbcode_parse - Analiza un string siguiendo el set de reglas dado bbcode_set_arg_parser - Añade otro analizador para usar otro set de reglas para analizar argumentos bbcode_set_flags - Establece o cambia las opciones del analizador bcadd - Añade dos números de precisión arbitrária bccomp - Compara dos números de precisión arbitraria bcdiv - Divide dos números de precisión arbitraria bcmod - Obtiene el módulo de un número de precisión arbitraria bcmul - Multiplica dos números de precisión arbitraria bcompiler_load - Lee y crea clases desde un archivo comprimido con bz bcompiler_load_exe - Lee y crea clases desde un archivo exe de bcompiler bcompiler_parse_class - Lee el código de bytes de una clase y realiza una llamada de retorno a una función de usuario bcompiler_read - Lee y crea clases ded un gestor de archivo bcompiler_write_class - Escribe una clase definida como código de bytes bcompiler_write_constant - Escribe una constante definida como código de bytes bcompiler_write_exe_footer - Escribe la posición de inicio y la firma al final de un archivo de tipo exe bcompiler_write_file - Escribe un fichero fuente de php como código de bytes bcompiler_write_footer - Escribe el carácter \x00 para indicar el Final de los datos compilados bcompiler_write_function - Escribe una función definida como código de bytes bcompiler_write_functions_from_file - Escribe todas las funciones definidas en un archivo como código de bytes bcompiler_write_header - Escribe la cabecera de bcompiler bcompiler_write_included_filename - Escribe un archivo incluido como código de bytes bcpow - Elevar un número de precisión arbitraria a otro bcpowmod - Eleva un número de precisión arbitraria a otro, reducido por un módulo especificado bcscale - Establece los parametros de scale por defecto para todas las funciones matemáticas de bc bcsqrt - Obtiene la raiz cuadrada de un número de precisión arbitraria bcsub - Resta un número de precisión arbitraria de otro bin2hex - Convierte datos binarios en su representación hexadecimal bindec - Binario a decimal bindtextdomain - Establece la ruta del dominio bind_textdomain_codeset - Especifica el juego de caracteres en que los mensajes del catálogo del dominio serán devueltos blenc_encrypt - Encripta un script PHP con BLENC. boolval - Obtener el valor booleano de una variable bson_decode - Decodifica un objecto BSON a un array PHP bson_encode - Serializa una variable PHP a un string BSON bzclose - Cierra un fichero bzip2 bzcompress - Comprime una cadena en datos codificados en bzip2 bzdecompress - Descomprime datos codificados con bzip2 bzerrno - Devuelve el número de erro de bzip2 bzerror - Devuelve el número de error y la cadena del error de bzip2 en un array bzerrstr - Devuelve una cadena de error de bzip2 bzflush - Fuerza la escritura de todos los datos del búfer bzopen - Abre un fichero comprimido con bzip2 bzread - Lectura segura de ficheros bzip2 bzwrite - Escribe en un fichero bzip2 de forma segura binariamente c CachingIterator::count - El número de elementos en el iterador CachingIterator::current - Devuelve el elemento actual CachingIterator::getCache - Recuperar el contenido de la caché CachingIterator::getFlags - Obtener las banderas utilizadas CachingIterator::getInnerIterator - Devuelve el iterador interno CachingIterator::hasNext - Comprueba que el iterador interno tenga un elemento siguiente válido CachingIterator::key - Devuelve la clave del elemento actual CachingIterator::next - Desplaza el iterador adelante CachingIterator::offsetExists - Comprobar existencia de un índice CachingIterator::offsetGet - El propósito offsetGet CachingIterator::offsetSet - El propósito offsetSet CachingIterator::offsetUnset - El propósito offsetUnset CachingIterator::rewind - Rebobina el iterador CachingIterator::setFlags - El propósito de setFlags CachingIterator::valid - Comprueba que el elemento actual sea válido CachingIterator::__construct - Construir un nuevo objeto CachingIterator para el iterador CachingIterator::__toString - Devolver la representación en formato cadena del elemento actual Cairo::availableFonts - Recupera los tipos de fuente disponibles Cairo::availableSurfaces - Recupera todas las superficies disponibles Cairo::statusToString - Recupera el estado acutal como cadena Cairo::version - Recupera la versión de la biblioteca cairo Cairo::versionString - Recupera la versión de cairo como cadena CairoContext::appendPath - Añade un trazado al trazado actual CairoContext::arc - Añade un arco circular CairoContext::arcNegative - Añade un arco negativo CairoContext::clip - Establece una nueva región de recorte CairoContext::clipExtents - Computa el área dentro del recorte actual CairoContext::clipPreserve - Establce una nueva región de recorte desde el recorte actual CairoContext::clipRectangleList - Recupera el recorte actual como una lista de rectángulos CairoContext::closePath - Cierra el trazado actual CairoContext::copyPage - Emite la página actual CairoContext::copyPath - Crea una copia del trazado actual CairoContext::copyPathFlat - Obtiene una copia aplanada del trazado actual CairoContext::curveTo - Añade una curva CairoContext::deviceToUser - Transforma una coordenada CairoContext::deviceToUserDistance - Transformar una distancia CairoContext::fill - Rellena el trazado actual CairoContext::fillExtents - Cumputa el área rellenada CairoContext::fillPreserve - Rellena y conserva el trazado actual CairoContext::fontExtents - Obtener el alcance de una fuente CairoContext::getAntialias - Recupera el modo de antialias actual CairoContext::getCurrentPoint - El propósito de getCurrentPoint CairoContext::getDash - El propósito de getDash CairoContext::getDashCount - El propósito de getDashCount CairoContext::getFillRule - El propósito de getFillRule CairoContext::getFontFace - El propósito de getFontFace CairoContext::getFontMatrix - El propósito de getFontMatrix CairoContext::getFontOptions - El propósito de getFontOptions CairoContext::getGroupTarget - El propósito de getGroupTarget CairoContext::getLineCap - El propósito de getLineCap CairoContext::getLineJoin - El propósito de getLineJoin CairoContext::getLineWidth - El propósito de getLineWidth CairoContext::getMatrix - El propósito de getMatrix CairoContext::getMiterLimit - El propósito de getMiterLimit CairoContext::getOperator - El propósito de getOperator CairoContext::getScaledFont - El propósito de getScaledFont CairoContext::getSource - El propósito de getSource CairoContext::getTarget - El propósito de getTarget CairoContext::getTolerance - El propósito de getTolerance CairoContext::glyphPath - El propósito de glyphPath CairoContext::hasCurrentPoint - El propósito de hasCurrentPoint CairoContext::identityMatrix - El propósito de identityMatrix CairoContext::inFill - El propósito de inFill CairoContext::inStroke - El propósito de inStroke CairoContext::lineTo - El propósito de lineTo CairoContext::mask - El propósito de mask CairoContext::maskSurface - El propósito de maskSurface CairoContext::moveTo - El propósito de moveTo CairoContext::newPath - El propósito de newPath CairoContext::newSubPath - El propósito de newSubPath CairoContext::paint - El propósito de paint CairoContext::paintWithAlpha - El propósito de paintWithAlpha CairoContext::pathExtents - El propósito de pathExtents CairoContext::popGroup - El propósito de popGroup CairoContext::popGroupToSource - El propósito de popGroupToSource CairoContext::pushGroup - El propósito de pushGroup CairoContext::pushGroupWithContent - El propósito de pushGroupWithContent CairoContext::rectangle - El propósito de rectangle CairoContext::relCurveTo - El propósito de relCurveTo CairoContext::relLineTo - El propósito de relLineTo CairoContext::relMoveTo - El propósito de relMoveTo CairoContext::resetClip - El propósito de resetClip CairoContext::restore - El propósito de restore CairoContext::rotate - El propósito de rotate CairoContext::save - El propósito de save CairoContext::scale - El propósito de scale CairoContext::selectFontFace - El propósito de selectFontFace CairoContext::setAntialias - El propósito de setAntialias CairoContext::setDash - El propósito de setDash CairoContext::setFillRule - El propósito de setFillRule CairoContext::setFontFace - El propósito de setFontFace CairoContext::setFontMatrix - El propósito de setFontMatrix CairoContext::setFontOptions - El propósito de setFontOptions CairoContext::setFontSize - El propósito de setFontSize CairoContext::setLineCap - El propósito de setLineCap CairoContext::setLineJoin - El propósito de setLineJoin CairoContext::setLineWidth - El propósito de setLineWidth CairoContext::setMatrix - El propósito de setMatrix CairoContext::setMiterLimit - El propósito de setMiterLimit CairoContext::setOperator - El propósito de setOperator CairoContext::setScaledFont - El propósito de setScaledFont CairoContext::setSource - El propósito de setSource CairoContext::setSourceRGB - El propósito de setSourceRGB CairoContext::setSourceRGBA - El propósito de setSourceRGBA CairoContext::setSourceSurface - El propósito de setSourceSurface CairoContext::setTolerance - El propósito de setTolerance CairoContext::showPage - El propósito de showPage CairoContext::showText - El propósito de showText CairoContext::status - El propósito de status CairoContext::stroke - El propósito de stroke CairoContext::strokeExtents - El propósito de strokeExtents CairoContext::strokePreserve - El propósito de strokePreserve CairoContext::textExtents - El propósito de textExtents CairoContext::textPath - El propósito de textPath CairoContext::transform - El propósito de transform CairoContext::translate - El propósito de translate CairoContext::userToDevice - El propósito de userToDevice CairoContext::userToDeviceDistance - El propósito de userToDeviceDistance CairoContext::__construct - Crea un nuevo CairoContext CairoFontFace::getType - Recupera el tipo de familia de fuentes CairoFontFace::status - Compruba errores de CairoFontFace CairoFontFace::__construct - Crea un nuevo objeto CairoFontFace CairoFontOptions::equal - El propósito de equal CairoFontOptions::getAntialias - El propósito de getAntialias CairoFontOptions::getHintMetrics - El propósito de getHintMetrics CairoFontOptions::getHintStyle - El propósito de getHintStyle CairoFontOptions::getSubpixelOrder - El propósito de getSubpixelOrder CairoFontOptions::hash - El propósito de hash CairoFontOptions::merge - El propósito de merge CairoFontOptions::setAntialias - El propósito de setAntialias CairoFontOptions::setHintMetrics - El propósito de setHintMetrics CairoFontOptions::setHintStyle - El propósito de setHintStyle CairoFontOptions::setSubpixelOrder - El propósito de setSubpixelOrder CairoFontOptions::status - El propósito de status CairoFontOptions::__construct - El propósito de __construct CairoFormat::strideForWidth - Proporciona un intervalo de paso apropiado a usar CairoGradientPattern::addColorStopRgb - El propósito de addColorStopRgb CairoGradientPattern::addColorStopRgba - El propósito de addColorStopRgba CairoGradientPattern::getColorStopCount - El propósito de getColorStopCount CairoGradientPattern::getColorStopRgba - El propósito de getColorStopRgba CairoGradientPattern::getExtend - El propósito de getExtend CairoGradientPattern::setExtend - El propósito de setExtend CairoImageSurface::createForData - El propósito de createForData CairoImageSurface::createFromPng - Crea una nueva CairoImageSurface desde un archivo de imagen png CairoImageSurface::getData - Obtiene la información de la imagen como cadena CairoImageSurface::getFormat - Obtener el formato de imagen CairoImageSurface::getHeight - Recupera el alto del CairoImageSurface CairoImageSurface::getStride - El propósito de getStride CairoImageSurface::getWidth - Recupera el ancho del CairoImageSurface CairoImageSurface::__construct - Crea una nueva CairoImageSurface CairoLinearGradient::getPoints - El propósito de getPoints CairoLinearGradient::__construct - El propósito de __construct CairoMatrix::initIdentity - Crea una nueva matriz de identidad CairoMatrix::initRotate - Crea una nueva matriz rotada CairoMatrix::initScale - Crea una nueva matriz de escala CairoMatrix::initTranslate - Crea una nueva matriz de traducción CairoMatrix::invert - El propósito de invert CairoMatrix::multiply - El propósito de multiply CairoMatrix::rotate - El propósito de rotate CairoMatrix::scale - Aplica escala a una matriz CairoMatrix::transformDistance - El propósito de transformDistance CairoMatrix::transformPoint - El propósito de transformPoint CairoMatrix::translate - El propósito de translate CairoMatrix::__construct - Crea un nuevo objeto CairoMatrix CairoPattern::getMatrix - El propósito de getMatrix CairoPattern::getType - El propósito de getType CairoPattern::setMatrix - El propósito de setMatrix CairoPattern::status - El propósito de status CairoPattern::__construct - El propósito de __construct CairoPdfSurface::setSize - El propósito de setSize CairoPdfSurface::__construct - El propósito de __construct CairoPsSurface::dscBeginPageSetup - El propósito de dscBeginPageSetup CairoPsSurface::dscBeginSetup - El propósito de dscBeginSetup CairoPsSurface::dscComment - El propósito de dscComment CairoPsSurface::getEps - El propósito de getEps CairoPsSurface::getLevels - El propósito de getLevels CairoPsSurface::levelToString - El propósito de levelToString CairoPsSurface::restrictToLevel - El propósito de restrictToLevel CairoPsSurface::setEps - El propósito de setEps CairoPsSurface::setSize - El propósito de setSize CairoPsSurface::__construct - El propósito de __construct CairoRadialGradient::getCircles - El propósito de getCircles CairoRadialGradient::__construct - El propósito de __construct CairoScaledFont::extents - El propósito de extents CairoScaledFont::getCtm - El propósito de getCtm CairoScaledFont::getFontFace - El propósito de getFontFace CairoScaledFont::getFontMatrix - El propósito de getFontMatrix CairoScaledFont::getFontOptions - El propósito de getFontOptions CairoScaledFont::getScaleMatrix - El propósito de getScaleMatrix CairoScaledFont::getType - El propósito de getType CairoScaledFont::glyphExtents - El propósito de glyphExtents CairoScaledFont::status - El propósito de status CairoScaledFont::textExtents - El propósito de textExtents CairoScaledFont::__construct - El propósito de __construct CairoSolidPattern::getRgba - El propósito de getRgba CairoSolidPattern::__construct - El propósito de __construct CairoSurface::copyPage - El propósito de copyPage CairoSurface::createSimilar - El propósito de createSimilar CairoSurface::finish - El propósito de finish CairoSurface::flush - El propósito de flush CairoSurface::getContent - El propósito de getContent CairoSurface::getDeviceOffset - El propósito de getDeviceOffset CairoSurface::getFontOptions - El propósito de getFontOptions CairoSurface::getType - El propósito de getType CairoSurface::markDirty - El propósito de markDirty CairoSurface::markDirtyRectangle - El propósito de markDirtyRectangle CairoSurface::setDeviceOffset - El propósito de setDeviceOffset CairoSurface::setFallbackResolution - El propósito de setFallbackResolution CairoSurface::showPage - El propósito de showPage CairoSurface::status - El propósito de status CairoSurface::writeToPng - El propósito de writeToPng CairoSurface::__construct - El propósito de __construct CairoSurfacePattern::getExtend - El propósito de getExtend CairoSurfacePattern::getFilter - El propósito de getFilter CairoSurfacePattern::getSurface - El propósito de getSurface CairoSurfacePattern::setExtend - El propósito de setExtend CairoSurfacePattern::setFilter - El propósito de setFilter CairoSurfacePattern::__construct - El propósito de __construct CairoSvgSurface::getVersions - Usado para recuperar una lista de versiones de SVG soportadas DIFERENCIAS ENTRE JAVA Y JAVASCRIPT Como hemos visto, JavaScript es un lenguaje de programación para desarrollos web que normalmente usaremos del lado del cliente (es decir, que se ejecuta en el PC del usuario). Muchas veces nos han planteado la pregunta: ¿es JavaScript y Java lo mismo? ¿Por qué tienen nombres tan similares? logo javascript Java y JavaScript son dos lenguajes de programación con un nombre parecido y algunas similitudes en algunos aspectos, pero que en el fondo son dos lenguajes completamente independientes y completamente distintos. Una persona puede saber mucho de JavaScript y no tener “ni idea” de Java, y al revés. Si son distintos, ¿por qué tienen un nombre tan parecido? La causa de esta similitud en los nombres se debe a el origen de JavaScript. Inicialmente fue desarrollado por la empresa Netscape en 1995 con el nombre de LiveScript. Posteriormente pasó a llamarse JavaScript quizás tratando de aprovechar que Java era un lenguaje de programación de gran popularidad y que un nombre similar podía hacer que el nuevo lenguaje fuera atractivo. Pero salvando algunas similitudes, ambos lenguajes son bien distintos. Su principal parecido podemos decir que es el nombre y algunos aspectos de sintaxis, ya que su finalidad y filosofía son muy distintos. A continuación indicamos algunas similitudes y diferencias entre uno y otro lenguaje: Java JavaScript Es un lenguaje de programación de propósito general, utilizado tanto en aplicaciones tradicionales de computadores como en desarrollos web. Es un lenguaje de programación de propósito específico (desarrollos web) Es un lenguaje que requiere de compilación (traducción previa a código máquina antes de ser ejecutado). Es un lenguaje que no requiere de compilación al ser interpretado directamente por los navegadores. Es un lenguaje que se puede considerar pesado, potente y robusto en el sentido de que permite hacer de todo con un gran control. Es un lenguaje que se puede considerar ligero, ágil y poco robusto en el sentido de que no permite hacer todo lo que permiten otros lenguajes. Es un lenguaje bajo la filosofía o paradigma de orientación a objetos completamente. Es un lenguaje no clasificable bajo un paradigma concreto y admite algunas formas de programación no admitidas por Java. Se puede utilizar tanto del lado del servidor como del lado del cliente. Tiene su uso principal del lado del servidor. Se puede utilizar tanto del lado del servidor como del lado del cliente. Tiene su uso principal del lado del cliente. Su sintaxis está inspirada en la sintaxis del lenguaje de programación C Su sintaxis también está inspirada en la sintaxis del lenguaje de programación C Requiere de un kit de desarrollo y máquina virtual Java para poder programar en él. No requiere nada específico para poder programar en él (únicamente un navegador web para ver los resultados y un editor de texto para escribir el código). Es un lenguaje fuertemente tipado: las variables tienen un tipo declarado y no pueden cambiar el tipo de contenido que almacenan. Es un lenguaje débilmente tipado: las variables pueden no ser de un tipo específico y cambiar el tipo de contenido que almacenan. Es un lenguaje con más capacidades y más complejo que JavaScript. Es un lenguaje con menos capacidades y menos complejo que Java. Si estás dudando si te conviene estudiar Java o estudiar JavaScript te recomendamos lo siguiente: - Si quieres orientarte específicamente a los desarrollos web estudia JavaScript. - Si quieres formarte integralmente como programador y no conoces ningún lenguaje orientado a objetos, estudia primero Java y luego JavaScript. En este curso nos centramos en el estudio de JavaScript en el contexto de los desarrollos web. Si estás interesado en un curso de Java puedes acceder a él en esta dirección web: http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188 JAVASCRIPT Y HTML, CSS, PHP… A veces nos encontraremos que se puede lograr un mismo efecto usando HTML, usando CSS ó usando un lenguaje de programación. ¿Por qué tantas formas para hacer una misma cosa? ¿Dónde está la frontera entre cada lenguaje? Esta pregunta no es de fácil respuesta. Vamos a ver con un ejemplo lo que puede ocurrir para algo tan sencillo como aplicar algunos efectos a un texto. No obstante, ten en cuenta que este ejemplo relativo a texto podría aplicarse a otros conceptos como bordes, márgenes, animaciones, etc. El lenguaje HTML permite aplicar algunos efectos visuales al texto. Escribe o copia este código y guárdalo en un archivo de nombre ejemplo1.html. <!DOCTYPE html> <html> <head> <title>Ejemplo HTML aprenderaprogramar.com</title> <meta name="tipo_contenido" content="text/html;" http-equiv="content-type" charset="utf-8"> </head> <body> <p>Negrita: <strong>Quiero aprender a programar</strong></p> <p>Itálica: <i>Quiero aprender a programar</i></p> <p>Tachado: <strike>Quiero aprender a programar</strike></p> <p>Color fuente: <font color ="green">Quiero aprender a programar</font></p> </body> </html> Con Javascript podemos hacer algo parecido. Escribe o copia este código y guárdalo en un archivo de nombre ejemplo2.html: <!DOCTYPE html> <html> <head> <title>Ejemplo HTML aprenderaprogramar.com</title> <meta name="tipo_contenido" content="text/html;" http-equiv="content-type" charset="utf-8"> </head> <body> <script> var txt = "Quiero aprender a programar"; document.write("<p>Negrita: " + txt.bold() + "</p>"); document.write("<p>Itálica: " + txt.italics() + "</p>"); document.write("<p>Tachado: " + txt.strike() + "</p>"); document.write("<p>Color fuente: " + txt.fontcolor("green") + "</p>"); </script> </body> </html> Y por último en vez de aplicar Javascript o simple HTML, podemos usar CSS. Escribe o copia este código y guárdalo en un archivo de nombre ejemplo3.html: <!DOCTYPE html> <html> <head> <title>Ejemplo HTML aprenderaprogramar.com</title> <meta name="tipo_contenido" content="text/html;" http-equiv="content-type" charset="utf-8"> <style type="text/css"> #negrita{font-weight:bold;} #italica{font-style:italic;} #tachado{text-decoration: line-through;} #verde{color:green;} </style> </head> <body> <p>Negrita: <span id="negrita">Quiero aprender a programar</span></p> <p>Italica: <span id="italica">Quiero aprender a programar</span></p> <p>Tachado: <span id="tachado">Quiero aprender a programar</span></p> <p>Color fuente: <span id="verde">Quiero aprender a programar</span></p> </body> </html> Haz doble click sobre cada uno de los archivos para visualizar el resultado en un navegador. El resultado que obtenemos es algo similar a esto: efectos css El único código que debemos entender por el momento es el correspondiente al ejemplo 1 y al ejemplo 3, ya que debemos conocer HTML y CSS para seguir este curso. El código del ejemplo 2 no te preocupes si no lo entiendes ya que el objetivo ahora no es comprender ese código, sino simplemente ver cómo podemos alcanzar un mismo objetivo usando distintos lenguajes como HTML, Javascript ó CSS. Además si nos fijamos, el código Javascript y el código CSS está dentro de un documento HTML (aunque podrían estar en archivos separados). Todo esto nos puede llevar a preguntarnos: ¿Por qué se entremezclan unos lenguajes con otros? La respuesta sería histórica y técnica: HTML se convirtió en la forma de crear páginas web, pero tenía muchas limitaciones. En un momento dado, se consideró que entremezclar (embeber) lenguajes entre sí podía ser una buena opción técnica para resolver problemas o hacer cosas que no era posible o conveniente hacer con HTML. Así, podemos embeber Javascript en HTML ó embeber CSS en HTML, o embeber HTML en PHP, etc. Por ello a veces ocurre que no hay una frontera clara entre lenguajes de programación, HTML y CSS. Esto, que puede resultar un tanto confuso inicialmente, se va convirtiendo en “comprensible” a medida que se trabaja y se aprende más sobre estos lenguajes. Por otro lado, ¿por qué tantas vías distintas para hacer algo cuando quizás que solo hubiera una manera de poner el texto en negrita, o una sola manera de poner un color de fuente, sería más simple? Para esto podemos citar varios motivos: a) Motivos históricos: a veces las cosas se empezaron a hacer de una manera y luego se pensó que era mejor hacerlas de otra. Sin embargo, para evitar que las páginas web existentes dejaran de funcionar, se siguieron permitiendo formas de hacer las cosas “anticuadas”. Por ejemplo la etiqueta <strike> … </strike> en HTML se considera deprecated (obsoleta, de uso no recomendado) en HTML 4.01 y no está admitida en HTML 5. Sin embargo, se sigue usando. Muchas formas de hacer las cosas se admiten aunque no estén recomendadas. b) Motivos de independencia de tecnologías: HTML es una cosa y Javascript es otra, aunque en la práctica nos encontremos con que Javascript se puede “entremezclar” (embeber) en HTML. Podríamos hacer cosas en Javascript y no querer usar otro lenguaje, es decir, podríamos tratar de hacer cosas independientes sin “entremezclar” tecnologías. Por ello lenguajes como Javascript ó PHP incorporan posibilidades para hacer cosas que ya se pueden hacer de otra manera. De esta forma tienen la potencialidad de ser más independientes. c) Motivos de políticas de desarrollo y estándares: quizás no te lo hayas preguntado nunca, pero conviene tener al menos una orientación al respecto: ¿Quién define qué es un lenguaje como HTML, CSS, PHP, cómo se debe escribir, qué resultado debe generar cada etiqueta o instrucción, etc.? En general detrás de los lenguajes, aunque algunos fueron creados por personas individuales, hay empresas, comunidades de desarrollo, asociaciones, consorcios internacionales, comités, etc. En ocasiones un grupo de personas no está de acuerdo con la forma en que se está creando una especificación del lenguaje y forman grupos de trabajo alternativos que definen estándares alternativos. A veces triunfa un estándar y el otro se desecha, pero otras veces conviven distintos estándares que permiten hacer las cosas de distintas maneras. Para los creadores de páginas web esto resulta negativo, pero ¡así es la vida! d) Otros motivos: podríamos abundar en el por qué de que las cosas sean como son, pero con tener una idea general nos basta. Acostúmbrate a pensar que los desarrollos web no son matemáticas. Las cosas se pueden hacer de muchas maneras, y de hecho muchas veces se hacen “de mala manera” por desconocimiento, por prisas, o por ser más fácil. Acostúmbrate a pensar que los desarrollos web usan distintos lenguajes que muchas veces se entremezclan entre sí hasta el punto de ser difícil distinguir en qué corresponde a un lenguaje y qué corresponde a otro. Hay lenguajes comunes en los desarrollos web como HTML, pero por ejemplo en cuanto a lenguajes de programación no todos los programadores usan el mismo. Acostúmbrate a encontrarte con que a veces las cosas no funcionan como una esperaría que lo hicieran, no debido a que se haya escrito mal el código o usado mal una instrucción, sino debido a que en el mundo de internet existen distintos estándares y distintas versiones. A veces aunque nos esforcemos porque todo se vea como nosotros esperamos en todos los navegadores o dispositivos, es difícil conseguirlo. Es un poco caótico, pero es así. En este curso más que aprendernos todas las instrucciones, estándares, etc. vamos a tratar de ser capaces de razonar el por qué de las cosas, y a tratar de esforzarnos por saber cómo generar código JavaScript limpio, bien estructurado y de calidad.
0 notes