Skip to content
Snippets Groups Projects
Commit beee2d24 authored by Sean Madsen's avatar Sean Madsen Committed by GitHub
Browse files

Merge branch 'master' into wiki-before-you-start

parents 4ba9fc6c 0c6ce37b
Branches
No related tags found
No related merge requests found
......@@ -91,19 +91,21 @@ before using the API. See the examples in [Bootstrap Reference].
## PHP (class.api.php)
CiviCRM v3.4 introduced an object-oriented API client, `class.api.php`.
This class be used locally or remotely to invoke APIs, as in:
This class can be used locally or remotely to invoke APIs, as in:
```php
require_once 'your/civicrm/folder/api/class.api.php';
$api = new civicrm_api3();
$api = new civicrm_api3(array(
// Specify location of "civicrm.settings.php".
'conf_path' => 'your/sites/default',
));
$apiParams = array(
'first_name' => 'Alice',
'last_name' => 'Roberts'
'last_name' => 'Roberts',
);
if ($api->Contact->Get($apiParams)) {
//each key of the result array is an attribute of the api
echo "\n contacts found ".$api->count;
'contact_type'=>'Individual','return'=>'sort_name,current_employer')) {
}
else {
echo $api->errorMsg();
......@@ -111,8 +113,11 @@ else {
```
If you call the API in the object oriented fashion, you do not have to
specify 'version' as a parameter
specify 'version' as a parameter.
The object-oriented client can connect to a local or remote CiviCRM
instance. For details about connection parameters, see the docblock in
[class.api.php](https://github.com/civicrm/civicrm-core/blob/master/api/class.api.php).
## REST
......
# Prerequisite skills
## Learn how to *use* CiviCRM
Before diving into CiviCRM development, it's worth mentioning that a solid
understanding of CiviCRM from the *user's* perspective can really help. You
pick up the standard user interface patterns that you can re-use in your work,
and you might even realise that the UI already provides the functionality you
wish to develop. To that end, please see the
[User Guide](https://docs.civicrm.org/user/en/stable/).
## Learn these developer skills
Below we've outlined the major technologies that CiviCRM is built with.
You don't need to be a pro at everything listed here to get started, but it's
useful to understand at least of couple of them well, and have a basic
understanding of how they fit together to create CiviCRM.
Technologies which are contained within the CiviCRM project
(e.g. civix, buildkit) are covered in detail within this guide, but
other technologies (such as PHP and Git, which are not CiviCRM-specific) are
outside its scope. As such, this guide assumes that readers
arrive with a baseline understanding of these developer skills. This page lists
these prerequisite skills, along with pointers to usher the reader towards
appropriate resources for closing skills gaps, wherever necessary.
Items listed towards the top of this list are, generally-speaking, more
important skills for CiviCRM development, but the specific skills needed to
accomplishing a particular development goal, certainly vary.
- **PHP** - the main programming language in which CiviCRM is written
- [Language reference](http://php.net/manual/en/langref.php)
- **Git** - a version control system for tracking changes to source code
- [Official documentation](https://git-scm.com/documentation)
- [15 minute interactive tutorial](https://try.github.io/levels/1/challenges/1)
- **Command line / bash** - in general, "the command line" refers to using a
text-only interface to run programs such as `civix`, `git`, and many more.
Bash is the most common "shell" program used to execute these commands on
Unix computers (i.e. Linux and OS X).
- [Unix command line tutorial](http://www.ee.surrey.ac.uk/Teaching/Unix/)
- *Microsoft Windows has a command line shell which functions very
differently from bash. While developing CiviCRM on Windows is possible,
it will be a slightly more uphill battle, for this reason and others.*
- **Javascript** - another programing language used in CiviCRM, especially
for any logic that happens within the web browser. *(Note that "javascript"
and "java" are entirely different technologies and should not be confused.)*
- [Javascript tutorial](http://www.w3schools.com/js/default.asp)
- **jQuery** - a javascript library that makes manipulating elements on a web
page easy
- [jQuery documentation](http://api.jquery.com/)
- **HTML** - the markup used so transmit page content to a web browser.
- [HTML tutorial](http://www.w3schools.com/html/default.asp)
- **Smarty** - a "template engine" which allows developers to write an HTML
file for one web page, while easily including content dynamically generated
from PHP
- [Smarty documentation](http://www.smarty.net/docs/en/)
- **CSS** - a programming language used to specify consistent visual style to
be applied to many different elements within a web page. Different web
browsers interpret the CSS code in slightly different ways.
- [CSS tutorial](http://www.w3schools.com/css/default.asp)
- [Can I use](http://caniuse.com/) - good for seeing which web browsers
have implemented certain CSS features
- [Comparison of layout engines](https://en.wikipedia.org/wiki/Comparison_of_layout_engines_\(Cascading_Style_Sheets\))
another helpful comparison of the differences between web browsers
- **Drupal / Wordpress / Joomla!** - CiviCRM must be installed within one of
these content management systems, and learning more about the underlying
CMS will aid CiviCRM development. Drupal is favored by most CiviCRM
developers and CiviCRM actually borrows many development practices from
the project, so learning Drupal is a good place to start if you are unsure.
- [Drupal documentation](https://www.drupal.org/docs/)
- [Wordpress documentation]()
- [Joomla documentation]()
- **SQL / MySQL** - "SQL" is a standardized language used by many different
kinds of databases to manipulate data in the database. "MySQL" is one kind
of database which CiviCRM uses to store all its data. The query syntax
that MySQL uses conforms [almost](http://troels.arvin.dk/db/rdbms/)
entirely to the SQL standard, so learning SQL is basically synonymous to
learning MySQL.
- [SQL tutorial](http://www.w3schools.com/sql/default.asp)
- [MySQL statement syntax](http://dev.mysql.com/doc/refman/en/sql-syntax.html)
- [MySQL Workbench](http://www.mysql.com/products/workbench/) -
an intuitively designed GUI tool for inspecting and interacting with a
MySQL database (great for learning more about the CiviCRM data model).
......@@ -11,6 +11,7 @@ pages:
- Home: index.md
- Basics:
- Developer Community: basics/community.md
- Prerequisite skills: basics/skills.md
- Requirements: requirements.md
- Planning your project: basics/planning.md
- Build: build.md
......
Documentation+Infrastructure+Canary develop
......@@ -3,5 +3,4 @@ The+developer+community basics/community
Create+an+Extension extensions/basics
Before+you+start basics/planning
Recommendations basics/planning
The+codebase core/architecture.md
The+codebase core/architecture
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment